oregano-0.84.41/0000755000175000017500000000000013424071216012332 5ustar rubenrubenoregano-0.84.41/macports/0000755000175000017500000000000013413640652014166 5ustar rubenrubenoregano-0.84.41/macports/Portfile0000644000175000017500000000427113413640652015701 0ustar rubenruben# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 # $Id$ PortSystem 1.0 PortGroup github 1.0 PortGroup active_variants 1.1 PortGroup waf 1.0 github.setup drahnr oregano 0.83.2.1 v categories gnome science maintainers ahoi.io:bernhard openmaintainer license GPL-2+ description A graphical software application for schematic capture and simulation of electrical circuits. long_description ${description} It uses Gtk+ 3.x for the frontend and ngspice or gnucap as backend for crunching numbers. \ File bugs for this port at https://github.com/drahnr/oregano platforms darwin checksums rmd160 7a5c06c6d7f260143ea0bbd9f92759beacde920d \ sha256 d22ab0dc9f3717759983966ea3f7a8cd266e343fab47236ec4d841660bd72fa1 # be careful not to overwrite build dependencies # declared by the waf port group depends_build-append \ port:intltool \ port:libtool \ port:pkgconfig depends_lib port:desktop-file-utils \ port:rarian \ port:shared-mime-info \ port:gtk3 \ port:gtksourceview3 \ port:goocanvas2 depends_run port:gnome-themes-standard \ port:ngspice # shipped waf does not recognize --nocache configure.args-delete \ --nocache # shipped waf requires target debug or release not build build.target debug # allow port to build with either gtk3 +x11 or +quartz backend variant quartz {} if {[variant_isset quartz]} { require_active_variants gtk3 quartz } else { require_active_variants gtk3 x11 depends_run-append port:yelp \ port:docbook-xml } post-activate { system "${prefix}/bin/scrollkeeper-update" system "${prefix}/bin/update-desktop-database ${prefix}/share/applications" system "${prefix}/bin/update-mime-database ${prefix}/share/mime" system "${prefix}/bin/glib-compile-schemas ${prefix}/share/glib-2.0/schemas" } oregano-0.84.41/.concourse/0000755000175000017500000000000013413640652014414 5ustar rubenrubenoregano-0.84.41/.concourse/ubuntu/0000755000175000017500000000000013413640652015736 5ustar rubenrubenoregano-0.84.41/.concourse/ubuntu/pkg.lst0000644000175000017500000000023413413640652017242 0ustar rubenrubengit gnucap ngspice python libglib2.0-dev intltool libgtk-3-dev libxml2-dev libgoocanvas-2.0-dev libgtksourceview-3.0-dev gcc clang devscripts quilt libtool oregano-0.84.41/.concourse/ubuntu/Dockerfile0000644000175000017500000000015713413640652017733 0ustar rubenrubenFROM ubuntu:latest COPY pkg.lst /tmp/pkg.lst RUN apt-get update -y RUN apt-get install -y $(cat /tmp/pkg.lst) oregano-0.84.41/.concourse/fedora/0000755000175000017500000000000013413640652015654 5ustar rubenrubenoregano-0.84.41/.concourse/fedora/buildrpm.sh0000755000175000017500000000142513413640652020033 0ustar rubenruben#!/usr/bin/env bash set -x set -e pwd 2>&1 RPMBUILD_DIR="$(pwd)/${1}/rpmbuild" mkdir -p ${RPMBUILD_DIR}/{SOURCES,BUILD,RPMS,SRPMS,SPECS} ./waf configure rpmspec cp -v build/rpmspec/oregano.spec ${RPMBUILD_DIR}/SPECS/ ./waf dist cp -v oregano*.tar.xz ${RPMBUILD_DIR}/SOURCES/ cd ${RPMBUILD_DIR} rpmbuild \ --define "_topdir %(pwd)" \ --define "_builddir %{_topdir}/BUILD" \ --define "_rpmdir %{_topdir}/RPMS" \ --define "_srcrpmdir %{_topdir}/SRPMS" \ --define "_specdir %{_topdir}/SPECS" \ --define "_sourcedir %{_topdir}/SOURCES" \ -ba SPECS/oregano.spec || exit 1 mkdir -p $(pwd)/${1}/{,s}rpm/ rm -vf ${RPMBUILD_DIR}/RPMS/x86_64/oregano-*debug*.rpm cp -vf ${RPMBUILD_DIR}/RPMS/x86_64/oregano-*.rpm $(pwd)/${1}/rpm/ cp -vf ${RPMBUILD_DIR}/SRPMS/oregano-*.src.rpm $(pwd)/${1}/srpm/ oregano-0.84.41/.concourse/fedora/pkg.lst0000644000175000017500000000030613413640652017160 0ustar rubenrubenmake git gnucap ngspice python gtk3-devel libxml2-devel gtksourceview3-devel intltool glib2-devel goocanvas2-devel desktop-file-utils clang gcc rpmdevtools xorg-x11-server-Xvfb xorg-x11-xauth which oregano-0.84.41/.concourse/fedora/Dockerfile0000644000175000017500000000014713413640652017650 0ustar rubenrubenFROM fedora:latest COPY pkg.lst /tmp/pkg.lst RUN dnf update -y RUN dnf install -y $(cat /tmp/pkg.lst) oregano-0.84.41/ARCHITECTURE.md0000644000175000017500000000351413413640652014545 0ustar rubenruben## ARCHITECTURE This document is targeted at oregano developers, giving a brief overview how all pieces connect together. ### Overview The central elements are the `schematic`, `sheet`, `schemtic-view`, `node-store`, `engine`. The `schematic-view` displays a schematic. The `schematic-view` is one oregano window including all its UI elements. The most important child element is the `sheet`, a canvas drawing all `*-item`s. The `schematic` is an abstract object saving a set of strings for simulation, `node-store`, authorship and a bunch of others. The `node-store` saves all `node`s, `wire`s, `part`s (they are all derived from `item-data`). This is the *store* part of one `schematic-view`. For actual simulation an `engine` object is used to transform the data contained in `schematic` and `node-store` to a string being piped to the actual backend engine. The `sheet` handles mouse interaction, triggers the creation of new `sheet-item`s (like `wire-item`,`textbox-item`, etc.). These hold a pointer of type `item-data` to the actual object data, dependant of the subclass this is a `wire`, `node` or `part` (derived classes from `item-data`). The `*-item` objects exclusive task is to handle input events, creating context menus for that item, handling events when clicking these items, handling selection as well as moving of objects. This is the *view* part of one `schematic-view`. Note that all these objects are local to the `schematic-view`. This is required to keep it reentrant and thus run multiple windows within one process. ### Issues The above layout is quite complex and currently there are some issues which require new `item-data` derived classes be added _first_ to the schematic and _afterwards_ being set to the proper position. Also there is a total lack of documentation within the sourcecode which is currently being addressed. oregano-0.84.41/.clang-format0000644000175000017500000000332613413640652014715 0ustar rubenruben--- Language: Cpp AccessModifierOffset: -4 ConstructorInitializerIndentWidth: 4 AlignEscapedNewlinesLeft: false AlignTrailingComments: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: false AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false AllowShortFunctionsOnASingleLine: All AlwaysBreakTemplateDeclarations: true AlwaysBreakBeforeMultilineStrings: false #AlwaysBreakAfterDefinitionReturnType: true BreakBeforeBinaryOperators: false BreakBeforeTernaryOperators: true BreakConstructorInitializersBeforeComma: false BinPackParameters: true ColumnLimit: 100 ConstructorInitializerAllOnOneLineOrOnePerLine: false DerivePointerAlignment: false ExperimentalAutoDetectBinPacking: false IndentCaseLabels: false IndentWrappedFunctionNames: false IndentFunctionDeclarationAfterType: false MaxEmptyLinesToKeep: 4 KeepEmptyLinesAtTheStartOfBlocks: true NamespaceIndentation: None ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: true PenaltyBreakBeforeFirstCallParameter: 19 PenaltyBreakComment: 300 PenaltyBreakString: 1000 PenaltyBreakFirstLessLess: 120 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 60 PointerAlignment: Right SpacesBeforeTrailingComments: 1 Cpp11BracedListStyle: true Standard: Cpp11 IndentWidth: 4 TabWidth: 4 UseTab: ForIndentation BreakBeforeBraces: Linux SpacesInParentheses: false SpacesInAngles: false SpaceInEmptyParentheses: false SpacesInCStyleCastParentheses: false SpacesInContainerLiterals: true SpaceBeforeAssignmentOperators: true ContinuationIndentWidth: 4 CommentPragmas: '^ IWYU pragma:' ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] SpaceBeforeParens: Always DisableFormat: false oregano-0.84.41/tools/0000755000175000017500000000000013413640652013476 5ustar rubenrubenoregano-0.84.41/tools/spice2to3.awk0000644000175000017500000001636513413640652016030 0ustar rubenruben #==================================================== -*- 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; } oregano-0.84.41/tools/oregano-convert0000755000175000017500000000055413413640652016540 0ustar rubenruben#!/usr/bin/perl # Fix the namespace. while (<>) { if (// xmlns:ogo="http:\/\/www.dtek.chalmers.se\/~d4hult\/oregano\/v1">/; print; last; } if (/) { if (/<[a-zA-Z]/) { s/ * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __LOAD_COMMON_H #define __LOAD_COMMON_H #include #include "coords.h" // Note: this must be synced with Pin in part.h for now. typedef struct { Coords pos; } Connection; typedef struct { gchar *name; gchar *value; } Property; typedef struct { gchar *name; gchar *author; gchar *version; 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 oregano-0.84.41/src/netlist-editor.c0000644000175000017500000002276613413640652016254 0ustar rubenruben/* * netlist-editor.c * * * Authors: * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 2004-2008 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include "netlist-editor.h" #include "netlist-helper.h" #include "simulation.h" #include "file.h" #include "dialogs.h" #include "oregano.h" #include "debug.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; GtkTextView *view; GtkSourceBuffer *buffer; GtkWindow *toplevel; GtkButton *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_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; const gchar *const *temp; GPtrArray *dirs; int i, lang_files_count; char **new_langs; dirs = g_ptr_array_new (); // Stolen from gtranslator for (temp = gtk_source_language_manager_get_search_path (lm); temp != NULL && *temp != NULL; ++temp) g_ptr_array_add (dirs, g_strdup (*temp)); g_ptr_array_add (dirs, NULL); lang_files = (gchar **)g_ptr_array_free (dirs, FALSE); 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] = g_strdup (lang_files[i]); new_langs[lang_files_count] = g_strdup (OREGANO_LANGDIR); new_langs[lang_files_count + 1] = NULL; g_strfreev (lang_files); gtk_source_language_manager_set_search_path (lm, new_langs); } NetlistEditor *netlist_editor_new (GtkSourceBuffer *textbuffer) { NetlistEditor *nle; GtkBuilder *gui; GError *perror = NULL; GtkWidget *toplevel; GtkScrolledWindow *scroll; GtkSourceView *source_view; GtkSourceLanguageManager *lm; GtkButton *save, *close; GtkSourceLanguage *lang = NULL; if (!textbuffer) return NULL; if ((gui = gtk_builder_new ()) == NULL) { oregano_error (_ ("Could not create the netlist dialog")); return NULL; } gtk_builder_set_translation_domain (gui, NULL); nle = NETLIST_EDITOR (g_object_new (netlist_editor_get_type (), NULL)); if (gtk_builder_add_from_file (gui, OREGANO_UIDIR "/view-netlist.ui", &perror) <= 0) { gchar *msg; msg = perror->message; oregano_error_with_title (_ ("Could not create the netlist dialog"), msg); g_error_free (perror); return NULL; } toplevel = GTK_WIDGET (gtk_builder_get_object (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 (gtk_builder_get_object (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) { const gchar *name = gtk_source_language_get_name (lang); g_message ("Loading syntax highlighting %s from %s", name, OREGANO_LANGDIR "/netlist.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 (gtk_builder_get_object (gui, "btn_close")); g_signal_connect_swapped (G_OBJECT (close), "clicked", G_CALLBACK (g_object_unref), G_OBJECT (nle)); save = GTK_BUTTON (gtk_builder_get_object (gui, "btn_save")); g_signal_connect (G_OBJECT (save), "clicked", G_CALLBACK (netlist_editor_save), nle); // Set tab, fonts, wrap mode, colors, etc. according // to preferences nle->priv->view = GTK_TEXT_VIEW (source_view); nle->priv->toplevel = GTK_WINDOW (toplevel); 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; } NetlistEditor *netlist_editor_new_from_schematic_view (SchematicView *sv) { NetlistEditor *editor; gchar *name = "/tmp/oregano.netlist"; GError *e = NULL; Schematic *sm; OreganoEngine *engine; sm = schematic_view_get_schematic (sv); engine = oregano_engine_factory_create_engine (oregano.engine, sm); oregano_engine_generate_netlist (engine, name, &e); g_object_unref (engine); if (e) { if (g_error_matches (e, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_CLAMP) || g_error_matches (e, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_GND) || g_error_matches (e, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_IO_ERROR)) { log_append_error (schematic_get_log_store (sm), "Netlist", _ ("Could not create a netlist"), e); } else { log_append_error (schematic_get_log_store (sm), "Netlist", _ ("Unexpected error occured"), e); } g_clear_error (&e); return NULL; } editor = netlist_editor_new_from_file (name); if (editor) { editor->priv->sv = sv; } return editor; } oregano-0.84.41/src/oregano.h0000644000175000017500000000465113413640652014736 0ustar rubenruben/* * oregano.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __MAIN_H #define __MAIN_H #undef GTK_ENABLE_BROKEN #include G_BEGIN_DECLS #define OREGANO_TYPE_APPLICATION (oregano_get_type ()) #define OREGANO_APPLICATION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), OREGANO_TYPE_APPLICATION, Oregano)) #define OREGANO_APPLICATION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), OREGANO_TYPE_APPLICATION, OreganoClass)) #define OREGANO_IS_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), OREGANO_TYPE_APPLICATION)) #define OREGANO_IS_APPLICATION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), OREGANO_TYPE_APPLICATION)) #define OREGANO_APPLICATION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), OREGANO_TYPE_APPLICATION, OreganoClass)) typedef struct { GtkApplication parent_instance; } Oregano; typedef struct { GtkApplicationClass parent_class; } OreganoClass; typedef struct { GList *libraries; GSList *clipboard; GSettings *settings; gint engine; gboolean compress_files; gboolean show_log; gboolean show_splash; } OreganoApp; extern OreganoApp oregano; extern int oregano_debugging; Oregano *oregano_new (void); G_END_DECLS #endif oregano-0.84.41/src/dialogs.c0000644000175000017500000002007713413640652014721 0ustar rubenruben/* * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include "dialogs.h" #include "oregano.h" #include "pixmaps/logo.xpm" /* * Schedule a call to the oregano_error() function so that it is * called whenever there are no higher priority events pending. * * The caller should schedule this function call using the GLib * function g_idle_add_full(). */ gboolean oregano_schedule_error (gchar *msg) { oregano_error_with_title (msg, NULL); return G_SOURCE_REMOVE; } /* * Schedule a call to the oregano_error_with_title() function * so that it is called whenever there are no higher priority * events pending. * * The caller should schedule this function call using the GLib * function g_idle_add_full(). */ gboolean oregano_schedule_error_with_title (OreganoTitleMsg *tm) { oregano_error_with_title (tm->title, tm->msg); g_free (tm->title); g_free (tm->msg); g_free (tm); return G_SOURCE_REMOVE; } void oregano_error (gchar *msg) { oregano_error_with_title (msg, NULL); } void oregano_error_with_title (gchar *title, gchar *msg) { GtkWidget *dialog; GString *span_msg; pid_t tid = 0; #ifdef SYS_gettid tid = syscall(SYS_gettid); #endif // make sure that this is running in the main thread if (tid && (getpid() != tid)) { OreganoTitleMsg *tm = g_malloc (sizeof (OreganoTitleMsg)); g_assert (tm != NULL); tm->title = g_strdup (title); tm->msg = g_strdup (msg); g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, (GSourceFunc) oregano_schedule_error_with_title, tm, NULL); return; } span_msg = g_string_new (""); span_msg = g_string_append (span_msg, title); span_msg = g_string_append (span_msg, ""); if (msg && msg[0] != '\0') { span_msg = g_string_append (span_msg, "\n\n"); span_msg = g_string_append (span_msg, msg); } dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, NULL); gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), span_msg->str); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE); gtk_dialog_run (GTK_DIALOG (dialog)); g_string_free (span_msg, TRUE); gtk_widget_destroy (dialog); } /* * Schedule a call to the oregano_warning() function so that it is * called whenever there are no higher priority events pending. * * The caller should schedule this function call using the GLib * function g_idle_add_full(). */ gboolean oregano_schedule_warning (gchar *msg) { oregano_warning_with_title (msg, NULL); return G_SOURCE_REMOVE; } /* * Schedule a call to the oregano_warning_with_title() function * so that it is called whenever there are no higher priority * events pending. * * The caller should schedule this function call using the GLib * function g_idle_add_full(). */ gboolean oregano_schedule_warning_with_title (OreganoTitleMsg *tm) { oregano_warning_with_title (tm->title, tm->msg); g_free (tm->title); g_free (tm->msg); g_free (tm); return G_SOURCE_REMOVE; } void oregano_warning (gchar *msg) { oregano_warning_with_title (msg, NULL); } void oregano_warning_with_title (gchar *title, gchar *msg) { GtkWidget *dialog; GString *span_msg; pid_t tid = 0; #ifdef SYS_gettid tid = syscall(SYS_gettid); #endif // make sure that this is running in the main thread if (tid && (getpid() != tid)) { OreganoTitleMsg *tm = g_malloc (sizeof (OreganoTitleMsg)); g_assert (tm != NULL); tm->title = g_strdup (title); tm->msg = g_strdup (msg); g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, (GSourceFunc) oregano_schedule_warning_with_title, tm, NULL); return; } span_msg = g_string_new (""); span_msg = g_string_append (span_msg, title); span_msg = g_string_append (span_msg, ""); if (msg && msg[0] != '\0') { span_msg = g_string_append (span_msg, "\n\n"); span_msg = g_string_append (span_msg, msg); } dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, NULL); gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), span_msg->str); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE); gtk_dialog_run (GTK_DIALOG (dialog)); g_string_free (span_msg, TRUE); gtk_widget_destroy (dialog); } /* * Schedule a call to the oregano_question() function so that it is * called whenever there are no higher priority events pending. * * The caller should schedule this function call using the GLib * function g_idle_add_full(). */ gboolean oregano_schedule_question (OreganoQuestionAnswer *qa) { qa->ans = oregano_question (qa->msg); g_free (qa->msg); return G_SOURCE_REMOVE; } gint oregano_question (gchar *msg) { GtkWidget *dialog; gint ans; dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, NULL); gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), msg); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL); ans = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); return (ans == GTK_RESPONSE_YES); } void dialog_about (void) { static GtkWidget *about = NULL; GdkPixbuf *logo; const gchar *authors[] = {"Richard Hult", "Margarita Manterola", "Andres de Barbara", "Gustavo M. Pereyra", "Maximiliano Curia", "Ricardo Markiewicz", "Marc Lorber", "Bernhard Schuster", "Guido Trentalancia", NULL}; const char *docs[] = {"Ricardo Markiewicz (es)", "Jordi Mallach (ca)", "Marc Lorber (en)", "Bernhard Schuster (de)", NULL}; const gchar *copy = _ ("(c) 2017-2018 Guido Trentalancia\n" "(c) 2012-2017 Bernhard Schuster\n" "(c) 2009-2012 Marc Lorber\n" "(c) 2003-2006 LUGFi\n" "(c) 1999-2001 Richard Hult"); logo = gdk_pixbuf_new_from_xpm_data ((const char **)logo_xpm); about = gtk_about_dialog_new (); gtk_about_dialog_set_program_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), "https://ahoi.io/project/oregano"); 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); about = NULL; } oregano-0.84.41/src/settings.c0000644000175000017500000001662613413640652015144 0ustar rubenruben/* * settings.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2008-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include "oregano.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" 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[OREGANO_ENGINE_COUNT]; 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)); if (s->w_show_log) oregano.show_log = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s->w_show_log)); else oregano.show_log = FALSE; 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 void 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; gchar *engine_name; s->w_engine = w; engine_id = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (s->w_engine), "id")); engine_name = oregano_engine_get_engine_name_by_index (engine_id); if (g_find_program_in_path (engine_name) == NULL) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button[engine_id]))) { GString *msg = g_string_new (_ ("Engine ")); msg = g_string_append (msg, engine_name); msg = g_string_append (msg, _ (" 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) % OREGANO_ENGINE_COUNT; 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); } g_free (engine_name); } 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; gboolean engine_available = FALSE; gchar *engine_name; GtkWidget *engine_group = NULL; GtkWidget *w, *pbox, *toplevel; GtkBuilder *gui; GError *perror = NULL; gchar *msg; Settings *s; Schematic *sm; g_return_if_fail (sv != NULL); for (i = 0; i < OREGANO_ENGINE_COUNT; i++) { engine_name = oregano_engine_get_engine_name_by_index (i); if (g_find_program_in_path(engine_name) != NULL) { engine_available = TRUE; } g_free (engine_name); } if (!engine_available) { gchar *msg; msg = g_strdup_printf (_ ("No engine allowing analysis is available.\n" "You need to install at least one engine ! \n" "spice3, ngspice or gnucap.")); oregano_error_with_title (_ ("Could not create engine settings dialog"), msg); g_free (msg); } if ((gui = gtk_builder_new ()) == NULL) { oregano_error (_ ("Could not create settings dialog")); return; } gtk_builder_set_translation_domain (gui, 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_get_window (GTK_WIDGET (SETTINGS (s)->pbox))); return; } if (gtk_builder_add_from_file (gui, OREGANO_UIDIR "/settings.ui", &perror) <= 0) { msg = perror->message; oregano_error_with_title (_ ("Could not create settings dialog"), msg); g_error_free (perror); return; } w = toplevel = GTK_WIDGET (gtk_builder_get_object (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 = GTK_WIDGET (gtk_builder_get_object (gui, "close_bt")); g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (apply_callback), s); w = GTK_WIDGET (gtk_builder_get_object (gui, "splash-enable")); s->w_show_splash = w; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), oregano.show_splash); w = GTK_WIDGET (gtk_builder_get_object (gui, "compress-enable")); s->w_compress_files = w; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), oregano.compress_files); if (engine_available) { w = GTK_WIDGET (gtk_builder_get_object (gui, "log-enable")); s->w_show_log = w; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), oregano.show_log); } else { w = GTK_WIDGET (gtk_builder_get_object (gui, "log-enable")); s->w_show_log = NULL; gtk_widget_destroy (w); } w = GTK_WIDGET (gtk_builder_get_object (gui, "realtime-enable")); gtk_widget_set_sensitive (w, FALSE); if (engine_available) { w = GTK_WIDGET (gtk_builder_get_object (gui, "engine_table")); for (i = 0; i < OREGANO_ENGINE_COUNT; i++) { engine_name = oregano_engine_get_engine_name_by_index (i); if (engine_group) button[i] = gtk_radio_button_new_with_label_from_widget ( GTK_RADIO_BUTTON (engine_group), engine_name); else button[i] = engine_group = gtk_radio_button_new_with_label_from_widget (NULL, engine_name); g_free (engine_name); g_object_set_data (G_OBJECT (button[i]), "id", GUINT_TO_POINTER (i)); gtk_grid_attach (GTK_GRID (w), button[i], 0, i, 1, 1); g_signal_connect (G_OBJECT (button[i]), "clicked", G_CALLBACK (set_engine_name), s); } } else { w = GTK_WIDGET (gtk_builder_get_object (gui, "label50")); gtk_widget_destroy (w); } // Is the engine available? // In that case the button is active engine_name = oregano_engine_get_engine_name_by_index (oregano.engine); if (g_find_program_in_path (engine_name) != NULL) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button[oregano.engine]), TRUE); // Otherwise the button is inactive else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button[oregano.engine]), FALSE); g_free (engine_name); gtk_widget_show_all (toplevel); } oregano-0.84.41/src/clipboard.h0000644000175000017500000000307713413640652015244 0ustar rubenruben/* * clipboard.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, 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 oregano-0.84.41/src/load-schematic.c0000644000175000017500000010465013413640652016154 0ustar rubenruben/* * load-schematic.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "xml-compat.h" #include "oregano.h" #include "xml-helper.h" #include "load-common.h" #include "load-schematic.h" #include "coords.h" #include "part-label.h" #include "schematic.h" #include "sim-settings.h" #include "textbox.h" #include "errors.h" #include "engines/netlist-helper.h" #include "debug.h" typedef enum { PARSE_START, PARSE_SCHEMATIC, PARSE_TITLE, PARSE_AUTHOR, PARSE_VERSION, 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_TRANSIENT_ANALYZE_ALL, PARSE_AC_SETTINGS, PARSE_AC_ENABLED, PARSE_AC_VOUT, PARSE_AC_TYPE, PARSE_AC_NPOINTS, PARSE_AC_START, PARSE_AC_STOP, PARSE_DC_SETTINGS, PARSE_DC_ENABLED, PARSE_DC_VSRC, PARSE_DC_VOUT, PARSE_DC_START, PARSE_DC_STOP, PARSE_DC_STEP, PARSE_FOURIER_SETTINGS, PARSE_FOURIER_ENABLED, PARSE_FOURIER_FREQ, PARSE_FOURIER_VOUT, PARSE_NOISE_SETTINGS, PARSE_NOISE_ENABLED, PARSE_NOISE_VSRC, PARSE_NOISE_VOUT, PARSE_NOISE_TYPE, PARSE_NOISE_NPOINTS, PARSE_NOISE_START, PARSE_NOISE_STOP, 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 *author; char *title; char *oregano_version; char *comments; char *textbox_text; // Temporary place holder for a wire Coords wire_start; Coords wire_end; // Temporary place holder for a part LibraryPart *part; PartLabel *label; Property *property; Coords 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); textbox_set_text (textbox, state->textbox_text); item_data_set_pos (ITEM_DATA (textbox), &state->pos); schematic_add_item (state->schematic, ITEM_DATA (textbox)); } static void create_wire (ParseState *state) { Coords 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 (); wire_set_length (wire, &length); item_data_set_pos (ITEM_DATA (wire), &state->wire_start); 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) { g_warning ("Failed to create Part from LibraryPart"); 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), ID_FLIP_HORIZ, NULL); if (state->flip & ID_FLIP_VERT) item_data_flip (ITEM_DATA (part), ID_FLIP_VERT, 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.author = NULL; state.title = NULL; state.oregano_version = NULL; state.comments = NULL; if (!oreganoXmlSAXParseFile (&oreganoSAXParser, &state, filename)) { 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_filename(sm, filename); schematic_set_author (sm, state.author); schematic_set_title (sm, state.title); schematic_set_version(sm, state.oregano_version); schematic_set_comments (sm, state.comments); g_free(state.author); g_free(state.title); g_free(state.oregano_version); g_free(state.comments); update_schematic(sm); 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:version")) { state->state = PARSE_VERSION; 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:fourier")) { state->state = PARSE_FOURIER_SETTINGS; } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:noise")) { state->state = PARSE_NOISE_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 if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:analyze-all")) { state->state = PARSE_TRANSIENT_ANALYZE_ALL; 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:vout1")) { state->state = PARSE_AC_VOUT; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:type")) { state->state = PARSE_AC_TYPE; 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_VSRC; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:vout1")) { state->state = PARSE_DC_VOUT; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:start1")) { state->state = PARSE_DC_START; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:stop1")) { state->state = PARSE_DC_STOP; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:step1")) { state->state = PARSE_DC_STEP; g_string_truncate (state->content, 0); } else { state->prev_state = state->state; state->state = PARSE_UNKNOWN; state->unknown_depth++; } break; case PARSE_FOURIER_SETTINGS: if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:enabled")) { state->state = PARSE_FOURIER_ENABLED; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:freq")) { state->state = PARSE_FOURIER_FREQ; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:vout")) { state->state = PARSE_FOURIER_VOUT; g_string_truncate (state->content, 0); } else { state->prev_state = state->state; state->state = PARSE_UNKNOWN; state->unknown_depth++; } break; case PARSE_NOISE_SETTINGS: if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:enabled")) { state->state = PARSE_NOISE_ENABLED; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:vsrc1")) { state->state = PARSE_NOISE_VSRC; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:vout1")) { state->state = PARSE_NOISE_VOUT; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:type")) { state->state = PARSE_NOISE_TYPE; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:npoints")) { state->state = PARSE_NOISE_NPOINTS; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:start")) { state->state = PARSE_NOISE_START; g_string_truncate (state->content, 0); } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:stop")) { state->state = PARSE_NOISE_STOP; 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_VOUT: case PARSE_AC_TYPE: case PARSE_AC_NPOINTS: case PARSE_AC_START: case PARSE_AC_STOP: case PARSE_DC_ENABLED: case PARSE_DC_VSRC: case PARSE_DC_VOUT: case PARSE_DC_START: case PARSE_DC_STOP: case PARSE_DC_STEP: case PARSE_FOURIER_ENABLED: case PARSE_FOURIER_FREQ: case PARSE_FOURIER_VOUT: case PARSE_NOISE_ENABLED: case PARSE_NOISE_VSRC: case PARSE_NOISE_VOUT: case PARSE_NOISE_TYPE: case PARSE_NOISE_NPOINTS: case PARSE_NOISE_START: case PARSE_NOISE_STOP: 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_VERSION: case PARSE_COMMENTS: case PARSE_TRANSIENT_INIT_COND: case PARSE_TRANSIENT_ANALYZE_ALL: // 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) { GList *libs; Schematic *schematic = state->schematic; 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_VERSION: state->oregano_version = 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_ascii_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_ascii_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_ascii_strcasecmp (state->content->str, "true")); state->state = PARSE_TRANSIENT_SETTINGS; break; case PARSE_TRANSIENT_ANALYZE_ALL: sim_settings_set_trans_analyze_all(state->sim_settings, !g_ascii_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_ascii_strcasecmp (state->content->str, "true")); state->state = PARSE_AC_SETTINGS; break; case PARSE_AC_VOUT: sim_settings_set_ac_vout (state->sim_settings, state->content->str); state->state = PARSE_AC_SETTINGS; break; case PARSE_AC_TYPE: sim_settings_set_ac_type (state->sim_settings, state->content->str); state->state = PARSE_AC_SETTINGS; break; case PARSE_AC_NPOINTS: sim_settings_set_ac_npoints (state->sim_settings, state->content->str); state->state = PARSE_AC_SETTINGS; break; 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_ascii_strcasecmp (state->content->str, "true")); state->state = PARSE_DC_SETTINGS; break; case PARSE_DC_VSRC: sim_settings_set_dc_vsrc (state->sim_settings, state->content->str); state->state = PARSE_DC_SETTINGS; break; case PARSE_DC_VOUT: sim_settings_set_dc_vout (state->sim_settings, state->content->str); state->state = PARSE_DC_SETTINGS; break; case PARSE_DC_START: sim_settings_set_dc_start (state->sim_settings, state->content->str); state->state = PARSE_DC_SETTINGS; break; case PARSE_DC_STOP: sim_settings_set_dc_stop (state->sim_settings, state->content->str); state->state = PARSE_DC_SETTINGS; break; case PARSE_DC_STEP: sim_settings_set_dc_step (state->sim_settings, state->content->str); state->state = PARSE_DC_SETTINGS; break; case PARSE_FOURIER_SETTINGS: state->state = PARSE_SIMULATION_SETTINGS; break; case PARSE_FOURIER_ENABLED: sim_settings_set_fourier (state->sim_settings, !g_ascii_strcasecmp (state->content->str, "true")); state->state = PARSE_FOURIER_SETTINGS; break; case PARSE_FOURIER_FREQ: sim_settings_set_fourier_frequency (state->sim_settings, state->content->str); state->state = PARSE_FOURIER_SETTINGS; break; case PARSE_FOURIER_VOUT: sim_settings_set_fourier_vout (state->sim_settings, state->content->str); state->state = PARSE_FOURIER_SETTINGS; break; case PARSE_NOISE_SETTINGS: state->state = PARSE_SIMULATION_SETTINGS; break; case PARSE_NOISE_ENABLED: sim_settings_set_noise (state->sim_settings, !g_ascii_strcasecmp (state->content->str, "true")); state->state = PARSE_NOISE_SETTINGS; break; case PARSE_NOISE_VSRC: sim_settings_set_noise_vsrc (state->sim_settings, state->content->str); state->state = PARSE_NOISE_SETTINGS; break; case PARSE_NOISE_VOUT: sim_settings_set_noise_vout (state->sim_settings, state->content->str); state->state = PARSE_NOISE_SETTINGS; break; case PARSE_NOISE_TYPE: sim_settings_set_noise_type (state->sim_settings, state->content->str); state->state = PARSE_NOISE_SETTINGS; break; case PARSE_NOISE_NPOINTS: sim_settings_set_noise_npoints (state->sim_settings, state->content->str); state->state = PARSE_NOISE_SETTINGS; break; case PARSE_NOISE_START: sim_settings_set_noise_start (state->sim_settings, state->content->str); state->state = PARSE_NOISE_SETTINGS; break; case PARSE_NOISE_STOP: sim_settings_set_noise_stop (state->sim_settings, state->content->str); state->state = PARSE_NOISE_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: state->state = PARSE_PART; state->part->library = NULL; libs = oregano.libraries; while (libs) { Library *lib = (Library *)libs->data; if (g_ascii_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); // Try to fix invalid positions if (state->pos.x < 0) state->pos.x = -state->pos.x; if (state->pos.y < 0) state->pos.y = -state->pos.y; // Determine the maximum parts' coordinates to be used during sheet creation if (state->pos.x > schematic_get_width(schematic)) schematic_set_width(schematic, (guint) state->pos.x); if (state->pos.y > schematic_get_height(schematic)) schematic_set_height(schematic, (guint) 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_ascii_strcasecmp (state->content->str, "horizontal") == 0) state->flip = state->flip | ID_FLIP_HORIZ; else if (g_ascii_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: 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); create_wire (state); 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; } } 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); } // FIXME this should not be critical but forward to the oregano log buffer 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); } oregano-0.84.41/src/simulation.c0000644000175000017500000001755313413640652015470 0ustar rubenruben/* * simulation.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include "oregano.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" #include "log.h" //NULL terminated const char *SimulationFunctionTypeString[] = { "Subtraction", "Division", NULL }; typedef struct { Schematic *sm; SchematicView *sv; GtkDialog *dialog; OreganoEngine *engine; GtkProgressBar *progress_solver; GtkLabel *progress_label_solver; GtkProgressBar *progress_reader; GtkLabel *progress_label_reader; int progress_timeout_id; Log *logstore; } 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; } gpointer simulation_new (Schematic *sm, Log *logstore) { Simulation *s; s = g_new0 (Simulation, 1); s->sm = sm; s->sv = NULL; s->logstore = logstore; return s; } void simulation_show_progress_bar (GtkWidget *widget, SchematicView *sv) { GtkWidget *w; GtkBuilder *gui; GError *e = NULL; Simulation *s; Schematic *sm; g_return_if_fail (sv != NULL); if (oregano.engine < 0 || oregano.engine >= OREGANO_ENGINE_COUNT) return; sm = schematic_view_get_schematic (sv); s = schematic_get_simulation (sm); if ((gui = gtk_builder_new ()) == NULL) { log_append (s->logstore, _ ("Simulation"), _ ("Could not create simulation dialog - Builder creation failed.")); return; } gtk_builder_set_translation_domain (gui, NULL); // Only allow one instance of the dialog box per schematic. if (s->dialog) { gdk_window_raise (gtk_widget_get_window (GTK_WIDGET (s->dialog))); return; } if (gtk_builder_add_from_file (gui, OREGANO_UIDIR "/simulation.ui", &e) <= 0) { log_append_error (s->logstore, _ ("Simulation"), _ ("Could not create simulation dialog"), e); g_clear_error (&e); return; } w = GTK_WIDGET (gtk_builder_get_object (gui, "toplevel")); if (!w) { log_append (s->logstore, _ ("Simulation"), _ ("Could not create simulation dialog - .ui file lacks widget " "called \"toplevel\".")); return; } s->dialog = GTK_DIALOG (w); g_signal_connect (G_OBJECT (w), "delete_event", G_CALLBACK (delete_event_cb), s); /** * progress bars and progress labels */ w = GTK_WIDGET (gtk_builder_get_object (gui, "progressbar_solver")); s->progress_solver = GTK_PROGRESS_BAR (w); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (s->progress_solver), 0.0); w = GTK_WIDGET (gtk_builder_get_object (gui, "progress_label_solver")); s->progress_label_solver = GTK_LABEL (w); w = GTK_WIDGET (gtk_builder_get_object (gui, "progressbar_reader")); s->progress_reader = GTK_PROGRESS_BAR (w); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (s->progress_reader), 0.0); w = GTK_WIDGET (gtk_builder_get_object (gui, "progress_label_reader")); s->progress_label_reader = 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) { g_return_val_if_fail (s != NULL, FALSE); double p = 0; oregano_engine_get_progress_solver (s->engine, &p); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (s->progress_solver), p); gchar *current_operation = oregano_engine_get_current_operation_solver(s->engine); gchar *str = g_strdup_printf (_ ("Progress: %s"), current_operation); g_free(current_operation); gtk_label_set_markup (s->progress_label_solver, str); g_free (str); p = 0; oregano_engine_get_progress_reader (s->engine, &p); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (s->progress_reader), p); str = g_strdup_printf (_ ("Progress: %s"), oregano_engine_get_current_operation_reader (s->engine)); gtk_label_set_markup (s->progress_label_reader, 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_solver), 1.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (s->progress_reader), 1.0); } gtk_widget_destroy (GTK_WIDGET (s->dialog)); s->dialog = NULL; plot_show (s->engine); if (oregano_engine_has_warnings (s->engine)) { log_append (s->logstore, _ ("Simulation"), _ ("Finished with warnings:")); // FIXME add actual warnings } else { log_append (s->logstore, _ ("Simulation"), _ ("Finished.")); } // show log window if this is enabled in preferences schematic_view_log_show (s->sv, FALSE); sheet_clear_op_values (schematic_view_get_sheet (s->sv)); // I don't need the engine anymore. The plot window owns its reference to // the engine g_object_unref (s->engine); s->engine = NULL; } static void engine_aborted_cb (OreganoEngine *engine, Simulation *s) { if (s->progress_timeout_id != 0) { g_source_remove (s->progress_timeout_id); s->progress_timeout_id = 0; } // g_clear_object (&(s->dialog)); if (s->dialog != NULL) { gtk_widget_destroy (GTK_WIDGET (s->dialog)); s->dialog = NULL; } log_append (s->logstore, _ ("Simulation"), _ ("Aborted. See lines below for details.")); if (s->sv != NULL) schematic_view_log_show (s->sv, TRUE); g_object_unref (s->engine); s->engine = NULL; } 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; log_append (s->logstore, _ ("Simulation"), _ ("Canceled.")); } static gboolean simulate_cmd (Simulation *s) { OreganoEngine *engine; if (s->engine != NULL) { g_clear_object (&(s->engine)); } engine = oregano_engine_factory_create_engine (oregano.engine, s->sm); if (!engine) return FALSE; s->engine = engine; s->progress_timeout_id = g_timeout_add (250, (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); oregano_engine_start (engine); return TRUE; } oregano-0.84.41/src/sim-settings-gui.c0000644000175000017500000011207713413640652016511 0ustar rubenruben/* * sim-settings-gui.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2017-2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "engines/netlist-helper.h" #include "schematic-view.h" #include "sim-settings-gui.h" #include #include static char *scale_types_list[] = {"DEC", "LIN", "OCT", NULL}; 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}}; SimSettingsGui *sim_settings_gui_new() { SimSettingsGui *sim_settings_gui = g_new0(SimSettingsGui, 1); sim_settings_gui->sim_settings = sim_settings_new(); return sim_settings_gui; } void sim_settings_gui_finalize(SimSettingsGui *gui) { sim_settings_finalize(gui->sim_settings); g_free(gui); } 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 (SimSettingsGui *s_gui) { int i; gchar *name, *value; SimOption *so; GtkTreeModel *model; GtkTreeIter iter; GtkTreeView *cl = s_gui->w_opt_list; SimSettings *s = s_gui->sim_settings; // Empty the list while (s->options) { so = s->options->data; if (so) { g_free (so->name); g_free (so->value); s->options = g_list_remove (s->options, so); g_free (so); } if (s->options) s->options = s->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->options = g_list_append (s->options, so); i++; } } static gboolean select_opt_callback (GtkWidget *widget, GdkEventButton *event, SimSettingsGui *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->w_opt_list); model = gtk_tree_view_get_model (sim->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->w_opt_value, value); else gtk_entry_set_text (sim->w_opt_value, ""); return FALSE; } static void option_setvalue (GtkWidget *w, SimSettingsGui *s) { const gchar *value; GtkTreeModel *model; GtkTreeIter iter; GtkTreeSelection *selection; value = gtk_entry_get_text (s->w_opt_value); if (!value) return; // Get the current selected row selection = gtk_tree_view_get_selection (s->w_opt_list); model = gtk_tree_view_get_model (s->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); } static void add_option (GtkWidget *w, SimSettingsGui *s) { GtkEntry *entry; GtkWidget *dialog = gtk_dialog_new_with_buttons ( _ ("Add new option"), NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, "_Cancel", GTK_RESPONSE_REJECT, "_OK", GTK_RESPONSE_OK, NULL); entry = GTK_ENTRY (gtk_entry_new ()); gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), 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->sim_settings, opt); gtk_list_store_append (GTK_LIST_STORE (gtk_tree_view_get_model (s->w_opt_list)), &iter); gtk_list_store_set (GTK_LIST_STORE (gtk_tree_view_get_model (s->w_opt_list)), &iter, 0, opt->name, -1); } gtk_widget_destroy (dialog); } static void option_remove (GtkWidget *w, SimSettingsGui *s) { GtkTreeModel *model; GtkTreeIter iter; GtkTreeSelection *selection; // Get the current selected row selection = gtk_tree_view_get_selection (s->w_opt_list); model = gtk_tree_view_get_model (s->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 entry_changed_cb (GtkWidget *widget, SimSettingsGui *s) { // FIXME? } static int delete_event_cb (GtkWidget *widget, GdkEvent *event, SimSettingsGui *s) { s->pbox = NULL; return FALSE; } static void trans_enable_cb (GtkWidget *widget, SimSettingsGui *s) { gboolean enable; enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); gtk_widget_set_sensitive (s->w_trans_frame, enable); } static void trans_step_enable_cb (GtkWidget *widget, SimSettingsGui *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->w_trans_enable)); gtk_widget_set_sensitive (s->w_trans_step, step_enable & enable); } static void ac_enable_cb (GtkWidget *widget, SimSettingsGui *s) { gboolean enable; enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); gtk_widget_set_sensitive (s->w_ac_frame, enable); } static void dc_enable_cb (GtkWidget *widget, SimSettingsGui *s) { gboolean enable; enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); gtk_widget_set_sensitive (s->w_dcsweep_frame, enable); } static void fourier_enable_cb (GtkWidget *widget, SimSettingsGui *s) { gboolean enable; enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); gtk_widget_set_sensitive (s->w_fourier_frame, enable); } static void fourier_add_vout_cb (GtkButton *w, SimSettingsGui *sim) { GtkComboBoxText *node_box; guint i; gboolean result = FALSE; gchar *text; node_box = GTK_COMBO_BOX_TEXT (sim->w_four_combobox); // Get the node identifier for (i = 0; (i < 1000 && result == FALSE); ++i) { text = g_strdup_printf ("V(%d)", i); if (!g_strcmp0 (text, gtk_combo_box_text_get_active_text (node_box))) result = TRUE; g_free (text); } text = NULL; if (result == TRUE) text = fourier_add_vout(sim->sim_settings, i); if (text) gtk_entry_set_text (GTK_ENTRY (sim->w_four_vout), text); else gtk_entry_set_text (GTK_ENTRY (sim->w_four_vout), ""); } static void fourier_remove_vout_cb (GtkButton *w, SimSettingsGui *sim) { GtkComboBoxText *node_box; gint result = FALSE; gint i; SimSettings *s = sim->sim_settings; node_box = GTK_COMBO_BOX_TEXT (sim->w_four_combobox); // Get the node identifier for (i = 0; (i < 1000 && result == FALSE); i++) { if (g_strcmp0 (g_strdup_printf ("V(%d)", i), gtk_combo_box_text_get_active_text (node_box)) == 0) result = TRUE; } if (result) { GSList *node_slist; gchar *text = NULL; // Remove current data in the g_slist { GSList *tmp, *prev = NULL; tmp = s->fourier_vout; while (tmp) { if (atoi (tmp->data) == i - 1) { if (prev) prev->next = tmp->next; else s->fourier_vout = tmp->next; g_slist_free_1 (tmp); break; } prev = tmp; tmp = prev->next; } } // Update the fourier_vout widget node_slist = g_slist_copy (s->fourier_vout); if (node_slist) { if (node_slist->data && atoi (node_slist->data) > 0) text = g_strdup_printf ("V(%d)", atoi (node_slist->data)); node_slist = node_slist->next; } while (node_slist) { if (node_slist->data && atoi (node_slist->data) > 0) { if (text) text = g_strdup_printf ("%s V(%d)", text, atoi (node_slist->data)); else text = g_strdup_printf ("V(%d)", atoi (node_slist->data)); } node_slist = node_slist->next; } if (text) gtk_entry_set_text (GTK_ENTRY (sim->w_four_vout), text); else gtk_entry_set_text (GTK_ENTRY (sim->w_four_vout), ""); g_slist_free_full (node_slist, g_free); } } static void noise_enable_cb (GtkWidget *widget, SimSettingsGui *s) { gboolean enable; enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); gtk_widget_set_sensitive (s->w_noise_frame, enable); } static void response_callback (GtkButton *button, SchematicView *sv) { g_return_if_fail (sv != NULL); g_return_if_fail (IS_SCHEMATIC_VIEW (sv)); g_return_if_fail (button != NULL); g_return_if_fail (GTK_IS_BUTTON (button)); gint page; gchar *tmp = NULL; gchar **node_ids = NULL; Schematic *sm = schematic_view_get_schematic (sv); SimSettingsGui *s_gui = schematic_get_sim_settings_gui(sm); SimSettings *s = s_gui->sim_settings; g_object_get (s_gui->notebook, "page", &page, NULL); // Transient analysis s->trans_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s_gui->w_trans_enable)); g_free (s->trans_start); s->trans_start = gtk_editable_get_chars (GTK_EDITABLE (s_gui->w_trans_start), 0, -1); g_free (s->trans_stop); s->trans_stop = gtk_editable_get_chars (GTK_EDITABLE (s_gui->w_trans_stop), 0, -1); g_free (s->trans_step); s->trans_step = gtk_editable_get_chars (GTK_EDITABLE (s_gui->w_trans_step), 0, -1); s->trans_step_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s_gui->w_trans_step_enable)); s->trans_init_cond = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s_gui->w_trans_init_cond)); s->trans_analyze_all = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s_gui->w_trans_analyze_all)); // DC s->dc_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s_gui->w_dc_enable)); g_free (s->dc_vin); s->dc_vin = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (s_gui->w_dc_vin)); g_free (s->dc_vout); s->dc_vout = NULL; tmp = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (s_gui->w_dc_vout)); if (tmp) { node_ids = g_strsplit (tmp, "V(", 0); tmp = g_strdup (node_ids[1]); g_strfreev (node_ids); if (tmp) { node_ids = g_strsplit (tmp, ")", 0); g_free (tmp); if (node_ids[0]) s->dc_vout = g_strdup (node_ids[0]); else s->dc_vout = g_strdup(""); g_strfreev (node_ids); } } if (s->dc_vout == NULL) s->dc_vout = g_strdup(""); g_free (s->dc_start); s->dc_start = g_strdup (gtk_entry_get_text (GTK_ENTRY (s_gui->w_dc_start))); g_free (s->dc_stop); s->dc_stop = g_strdup (gtk_entry_get_text (GTK_ENTRY (s_gui->w_dc_stop))); g_free (s->dc_step); s->dc_step = g_strdup (gtk_entry_get_text (GTK_ENTRY (s_gui->w_dc_step))); // AC s->ac_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s_gui->w_ac_enable)); g_free (s->ac_vout); s->ac_vout = NULL; tmp = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (s_gui->w_ac_vout)); if (tmp) { node_ids = g_strsplit (tmp, "V(", 0); tmp = g_strdup (node_ids[1]); g_strfreev (node_ids); if (tmp) { node_ids = g_strsplit (tmp, ")", 0); g_free (tmp); if (node_ids[0]) s->ac_vout = g_strdup (node_ids[0]); else s->ac_vout = g_strdup(""); g_strfreev (node_ids); } } if (s->ac_vout == NULL) s->ac_vout = g_strdup(""); g_free (s->ac_type); s->ac_type = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (s_gui->w_ac_type)); g_free (s->ac_npoints); s->ac_npoints = g_strdup (gtk_entry_get_text (GTK_ENTRY (s_gui->w_ac_npoints))); g_free (s->ac_start); s->ac_start = g_strdup (gtk_entry_get_text (GTK_ENTRY (s_gui->w_ac_start))); g_free (s->ac_stop); s->ac_stop = g_strdup (gtk_entry_get_text (GTK_ENTRY (s_gui->w_ac_stop))); // Fourier analysis s->fourier_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s_gui->w_four_enable)); g_free (s->fourier_frequency); s->fourier_frequency = g_strdup (gtk_entry_get_text (GTK_ENTRY (s_gui->w_four_freq))); // Noise s->noise_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s_gui->w_noise_enable)); g_free (s->noise_vin); s->noise_vin = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (s_gui->w_noise_vin)); g_free (s->noise_vout); s->noise_vout = NULL; tmp = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (s_gui->w_noise_vout)); if (tmp) { node_ids = g_strsplit (tmp, "V(", 0); tmp = g_strdup (node_ids[1]); g_strfreev (node_ids); if (tmp) { node_ids = g_strsplit (tmp, ")", 0); g_free (tmp); if (node_ids[0]) s->noise_vout = g_strdup (node_ids[0]); else s->noise_vout = g_strdup(""); g_strfreev (node_ids); } } if (s->noise_vout == NULL) s->noise_vout = g_strdup(""); g_free (s->noise_type); s->noise_type = g_strdup (gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (s_gui->w_noise_type))); g_free (s->noise_npoints); s->noise_npoints = g_strdup (gtk_entry_get_text (GTK_ENTRY (s_gui->w_noise_npoints))); g_free (s->noise_start); s->noise_start = g_strdup (gtk_entry_get_text (GTK_ENTRY (s_gui->w_noise_start))); g_free (s->noise_stop); s->noise_stop = g_strdup (gtk_entry_get_text (GTK_ENTRY (s_gui->w_noise_stop))); // Options get_options_from_list (s_gui); gtk_widget_hide (GTK_WIDGET (s_gui->pbox)); s_gui->pbox = NULL; s_gui->notebook = NULL; // Schematic is dirty now ;-) schematic_set_dirty (sm, TRUE); s->configured = TRUE; // The simulation settings configuration has // been triggered by an attempt to lauch the // simulation for the first time without // configuring it first. if (s->simulation_requested) { s->simulation_requested = FALSE; schematic_view_simulate_cmd (NULL, sv); } } /** * Get the list of voltmeters (test clamps). * * In normal mode, this does not include the * the type of measurement (normal, magnitude, * phase, real, imaginary or dB) and it is used * in DC and Fourier analysis. * * In AC mode, each element includes the type * of measurement (normal, magnitude, phase, * real, imaginary or dB) and it is used in * AC analysis. */ gint get_voltmeters_list(GList **voltmeters, Schematic *sm, GError *e, gboolean with_type) { GSList *siter, *node_list = NULL; if (with_type) node_list = netlist_helper_get_voltmeters_list (sm, &e, TRUE); else node_list = netlist_helper_get_voltmeters_list (sm, &e, FALSE); if (e) { log_append_error (schematic_get_log_store (sm), _ ("SimulationSettings"), _ ("Failed to create netlist"), e); g_clear_error (&e); return -1; } if (node_list == NULL) { log_append (schematic_get_log_store (sm), _ ("SimulationSettings"), _ ("No node in the schematic!")); return -2; } *voltmeters = NULL; for (siter = node_list; siter; siter = siter->next) { gchar *tmp; if (with_type) tmp = g_strdup (siter->data); else tmp = g_strdup_printf ("V(%d)", atoi (siter->data)); *voltmeters = g_list_prepend (*voltmeters, tmp); } return 0; } /** * Get the list of sources (indipendent voltage) */ gint get_voltage_sources_list(GList **sources, Schematic *sm, GError *e, gboolean ac_only) { GSList *siter, *node_list = NULL; node_list = netlist_helper_get_voltage_sources_list (sm, &e, ac_only); if (e) { log_append_error (schematic_get_log_store (sm), _ ("SimulationSettings"), _ ("Failed to create netlist"), e); g_clear_error (&e); return -1; } if (node_list == NULL) { log_append (schematic_get_log_store (sm), _ ("SimulationSettings"), _ ("No node in the schematic!")); return -2; } *sources = NULL; for (siter = node_list; siter; siter = siter->next) { gchar *tmp; tmp = g_strdup_printf ("V%d", atoi (siter->data)); *sources = g_list_prepend (*sources, tmp); } return 0; } /** * FIXME this code is an ugly piece of shit, fix it! */ void sim_settings_show (GtkWidget *widget, SchematicView *sv) { int i; gboolean found; gint rc, active, index; GtkWidget *toplevel, *w, *w1, *pbox, *combo_box; GtkTreeView *opt_list; GtkCellRenderer *cell_option, *cell_value; GtkTreeViewColumn *column_option, *column_value; GtkListStore *opt_model; GtkTreeIter treeiter; GtkBuilder *builder; GError *e = NULL; SimSettings *s; GList *iter; GList *voltmeters = NULL; GList *voltmeters_with_type = NULL; GList *sources = NULL; GList *sources_ac = NULL; GtkComboBox *node_box; GtkListStore *node_list_store; gchar *text, *text2; gchar **node_ids; GSList *slist = NULL; g_return_if_fail (sv != NULL); Schematic *sm = schematic_view_get_schematic (sv); SimSettingsGui *s_gui = schematic_get_sim_settings_gui (sm); s = s_gui->sim_settings; // Only allow one instance of the property box per schematic. if (s_gui->pbox != NULL) { if (gtk_widget_get_visible (s_gui->pbox) == FALSE) { gtk_widget_set_visible (s_gui->pbox, TRUE); } GdkWindow *window = gtk_widget_get_window (s_gui->pbox); g_assert (window != NULL); gdk_window_raise (window); return; } if ((builder = gtk_builder_new ()) == NULL) { log_append (schematic_get_log_store (sm), _ ("SimulationSettings"), _ ("Could not create simulation settings dialog")); return; } gtk_builder_set_translation_domain (builder, NULL); gtk_builder_add_from_file (builder, OREGANO_UIDIR "/sim-settings.ui", &e); if (e) { log_append_error (schematic_get_log_store (sm), _ ("SimulationSettings"), _ ("Could not create simulation settings dialog due to " "missing " OREGANO_UIDIR "/sim-settings.ui file"), e); g_clear_error (&e); return; } toplevel = GTK_WIDGET (gtk_builder_get_object (builder, "toplevel")); if (toplevel == NULL) { log_append (schematic_get_log_store (sm), _ ("SimulationSettings"), _ ("Could not create simulation settings dialog due to missing " "\"toplevel\" widget in " OREGANO_UIDIR "/sim-settings.ui file")); return; } pbox = toplevel; s_gui->pbox = pbox; s_gui->notebook = GTK_NOTEBOOK (gtk_builder_get_object (builder, "notebook")); g_signal_connect (G_OBJECT (pbox), "delete_event", G_CALLBACK (delete_event_cb), s_gui); // Prepare options list s_gui->w_opt_value = GTK_ENTRY (gtk_builder_get_object (builder, "opt_value")); opt_list = GTK_TREE_VIEW (gtk_builder_get_object (builder, "option_list")); s_gui->w_opt_list = opt_list; // Grab the frames s_gui->w_trans_frame = GTK_WIDGET (gtk_builder_get_object (builder, "trans_frame")); s_gui->w_ac_frame = GTK_WIDGET (gtk_builder_get_object (builder, "ac_frame")); s_gui->w_dcsweep_frame = GTK_WIDGET (gtk_builder_get_object (builder, "dcsweep_frame")); s_gui->w_fourier_frame = GTK_WIDGET (gtk_builder_get_object (builder, "fourier_frame")); s_gui->w_noise_frame = GTK_WIDGET (gtk_builder_get_object (builder, "noise_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->options == NULL) { // Load defaults for (i = 0; default_options[i].name; i++) { gtk_list_store_append (opt_model, &treeiter); gtk_list_store_set (opt_model, &treeiter, 0, default_options[i].name, -1); } } else { // Load schematic options for (iter = s->options; iter; iter = iter->next) { SimOption *so = iter->data; if (so) { gtk_list_store_append (opt_model, &treeiter); gtk_list_store_set (opt_model, &treeiter, 0, so->name, -1); } } } // Set the options already stored for (iter = s->options; iter; iter = iter->next) { SimOption *so = iter->data; if (so) set_options_in_list (so->name, so->value, opt_list); } g_signal_connect (G_OBJECT (opt_list), "button_release_event", G_CALLBACK (select_opt_callback), s); w = GTK_WIDGET (gtk_builder_get_object (builder, "opt_accept")); g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (option_setvalue), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "opt_remove")); w = GTK_WIDGET (gtk_builder_get_object (builder, "add_option")); g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (option_remove), s_gui); g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (add_option), s_gui); // Creation of Close Button w = GTK_WIDGET (gtk_builder_get_object (builder, "button1")); g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (response_callback), sv); // Get the list of voltmeters (normal mode) rc = get_voltmeters_list(&voltmeters, sm, e, FALSE); if (rc) { sim_settings_set_dc(s, FALSE); sim_settings_set_fourier(s, FALSE); } // Get the list of voltmeters (AC mode, i.e. with measurement type) rc = get_voltmeters_list(&voltmeters_with_type, sm, e, TRUE); if (rc) { sim_settings_set_ac(s, FALSE); } // Get the list of sources (all types) rc = get_voltage_sources_list(&sources, sm, e, FALSE); if (rc) { sim_settings_set_dc(s, FALSE); } // Get the list of AC sources rc = get_voltage_sources_list(&sources_ac, sm, e, TRUE); if (rc) { sim_settings_set_noise(s, FALSE); } // Transient // // ********* // w = GTK_WIDGET (gtk_builder_get_object (builder, "trans_start")); s_gui->w_trans_start = w; if (s->trans_start) gtk_entry_set_text (GTK_ENTRY (w), s->trans_start); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "trans_stop")); s_gui->w_trans_stop = w; if (s->trans_stop) gtk_entry_set_text (GTK_ENTRY (w), s->trans_stop); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "trans_step")); s_gui->w_trans_step = w; if (s->trans_step) gtk_entry_set_text (GTK_ENTRY (w), s->trans_step); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "trans_enable")); s_gui->w_trans_enable = w; g_signal_connect (G_OBJECT (w), "toggled", G_CALLBACK (trans_enable_cb), s_gui); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->trans_enable); w = GTK_WIDGET (gtk_builder_get_object (builder, "trans_step_enable")); s_gui->w_trans_step_enable = w; g_signal_connect (G_OBJECT (w), "toggled", G_CALLBACK (trans_step_enable_cb), s_gui); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->trans_step_enable); // get the gui element w = GTK_WIDGET (gtk_builder_get_object (builder, "trans_init_cond")); // save the gui element to struct s_gui->w_trans_init_cond = w; // Set checkbox enabled, if trans_init_cond equal true. // trans_init_cond could be set to true because // - user opened the settings dialog some seconds ago and has set the checkbox // - user opened old file in which there was set the checkbox state to true gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->trans_init_cond); // get the gui element w = GTK_WIDGET (gtk_builder_get_object (builder, "trans_analyze_all")); // save the gui element to struct s_gui->w_trans_analyze_all = w; // Set checkbox enabled, if trans_analyze_all equal true. // trans_init_cond could be set to true because // - user opened the settings dialog some seconds ago and has set the checkbox // - user opened old file in which there was set the checkbox state to true gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->trans_analyze_all); // AC // // *** // w = GTK_WIDGET (gtk_builder_get_object (builder, "ac_enable")); s_gui->w_ac_enable = w; g_signal_connect (G_OBJECT (w), "toggled", G_CALLBACK (ac_enable_cb), s_gui); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->ac_enable); w1 = GTK_WIDGET (gtk_builder_get_object (builder, "grid14")); // FIXME: Should enable more than just one output as in the Fourier analysis w = GTK_WIDGET (gtk_builder_get_object (builder, "ac_vout")); gtk_widget_destroy (w); // FIXME wtf?? combo_box = gtk_combo_box_text_new (); gtk_grid_attach (GTK_GRID (w1), combo_box, 1, 0, 1, 1); s_gui->w_ac_vout = combo_box; if (voltmeters_with_type) { index = 0; active = 0; for (iter = voltmeters_with_type; iter; iter = iter->next) { if (g_strcmp0 (iter->data, "VM(0)")) gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), iter->data); if (!g_strcmp0(s->ac_vout, iter->data)) active = index; index++; } gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), active); } g_signal_connect (G_OBJECT (combo_box), "changed", G_CALLBACK (entry_changed_cb), s); // Initialisation of the various scale types w = GTK_WIDGET (gtk_builder_get_object (builder, "ac_type")); gtk_widget_destroy (w); // FIXME wtf?? combo_box = gtk_combo_box_text_new (); gtk_grid_attach (GTK_GRID (w1), combo_box, 1, 1, 1, 1); s_gui->w_ac_type = combo_box; { index = 0; active = 0; for (; scale_types_list[index] != NULL; index++) { gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), scale_types_list[index]); if (!g_strcmp0(s->ac_type, scale_types_list[index])) active = index; } gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), active); } g_assert (GTK_IS_COMBO_BOX (combo_box)); g_signal_connect (G_OBJECT (combo_box), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "ac_npoints")); s_gui->w_ac_npoints = w; gtk_entry_set_text (GTK_ENTRY (w), s->ac_npoints); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "ac_start")); s_gui->w_ac_start = w; gtk_entry_set_text (GTK_ENTRY (w), s->ac_start); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "ac_stop")); s_gui->w_ac_stop = w; gtk_entry_set_text (GTK_ENTRY (w), s->ac_stop); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); // DC // // ***** // w = GTK_WIDGET (gtk_builder_get_object (builder, "dc_enable")); s_gui->w_dc_enable = w; g_signal_connect (G_OBJECT (w), "toggled", G_CALLBACK (dc_enable_cb), s_gui); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->dc_enable); w1 = GTK_WIDGET (gtk_builder_get_object (builder, "grid13")); w = GTK_WIDGET (gtk_builder_get_object (builder, "dc_vin")); gtk_widget_destroy (w); // FIXME wtf?? combo_box = gtk_combo_box_text_new (); gtk_grid_attach (GTK_GRID (w1), combo_box, 1, 0, 1, 1); s_gui->w_dc_vin = combo_box; if (sources) { index = 0; active = 0; for (iter = sources; iter; iter = iter->next) { gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), iter->data); if (!g_strcmp0(s->dc_vin, iter->data)) active = index; index++; } gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), active); } g_signal_connect (G_OBJECT (combo_box), "changed", G_CALLBACK (entry_changed_cb), s); // FIXME: Should enable more than just one output as in the Fourier analysis // FIXME: Should also allow to print currents through voltage sources w = GTK_WIDGET (gtk_builder_get_object (builder, "dc_vout")); gtk_widget_destroy (w); // FIXME wtf?? combo_box = gtk_combo_box_text_new (); gtk_grid_attach (GTK_GRID (w1), combo_box, 1, 1, 1, 1); s_gui->w_dc_vout = combo_box; if (voltmeters) { index = 0; active = 0; text = g_strdup_printf("V(%s)", s->dc_vout); for (iter = voltmeters; iter; iter = iter->next) { if (g_strcmp0 (iter->data, "V(0)")) gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), iter->data); if (!g_strcmp0(text, iter->data)) active = index; index++; } g_free (text); gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), active); } g_signal_connect (G_OBJECT (combo_box), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "dc_start")); s_gui->w_dc_start = w; gtk_entry_set_text (GTK_ENTRY (w), s->dc_start); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "dc_stop")); s_gui->w_dc_stop = w; gtk_entry_set_text (GTK_ENTRY (w), s->dc_stop); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "dc_step")); s_gui->w_dc_step = w; gtk_entry_set_text (GTK_ENTRY (w), s->dc_step); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); // Fourier // // ******* // g_print ("XXXXXXXXXXXXXXXX\n"); w = GTK_WIDGET (gtk_builder_get_object (builder, "fourier_enable")); s_gui->w_four_enable = w; g_print ("XXXXXXXXXXXXXXXX %p %s\n", w, s->fourier_enable ? "TRUE" : "FALSE"); g_signal_connect (G_OBJECT (w), "toggled", G_CALLBACK (fourier_enable_cb), s_gui); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->fourier_enable); w = GTK_WIDGET (gtk_builder_get_object (builder, "fourier_freq")); s_gui->w_four_freq = w; g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); gtk_entry_set_text (GTK_ENTRY (w), s->fourier_frequency); w = GTK_WIDGET (gtk_builder_get_object (builder, "fourier_vout")); s_gui->w_four_vout = w; g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); // Get rid of inexistent output vectors text2 = NULL; if (voltmeters) { text = sim_settings_get_fourier_vout (s); node_ids = g_strsplit (text, " ", 0); g_free (text); for (i = 0; node_ids[i] != NULL; i++) { text = g_strdup_printf ("V(%s)", node_ids[i]); found = FALSE; for (iter = voltmeters; iter; iter = iter->next) { if (!g_strcmp0 (text, iter->data)) found = TRUE; } g_free (text); if (found) { if (text2) { text = text2; text2 = g_strdup_printf ("%s %s", text2, node_ids[i]); g_free (text); } else { text2 = g_strdup_printf ("%s", node_ids[i]); } } } if (!text2) text2 = g_strdup (""); sim_settings_set_fourier_vout (s, text2); g_free (text2); g_strfreev (node_ids); } text = NULL; slist = g_slist_copy (s->fourier_vout); if (slist) { if (slist->data && atoi (slist->data) > 0) text = g_strdup_printf ("V(%d)", atoi (slist->data)); slist = slist->next; } while (slist) { if (slist->data && atoi (slist->data) > 0) { if (text) { text2 = text; text = g_strdup_printf ("%s V(%d)", text, atoi (slist->data)); g_free (text2); } else { text = g_strdup_printf ("V(%d)", atoi (slist->data)); } } slist = slist->next; } if (text) gtk_entry_set_text (GTK_ENTRY (w), text); else gtk_entry_set_text (GTK_ENTRY (w), ""); g_slist_free_full (slist, g_free); // Present in the combo box the nodes of the schematic w = GTK_WIDGET (gtk_builder_get_object (builder, "fourier_select_out")); gtk_widget_destroy (w); // FIXME wtf??? w = GTK_WIDGET (gtk_builder_get_object (builder, "grid12")); combo_box = gtk_combo_box_text_new (); gtk_grid_attach (GTK_GRID (w), combo_box, 2, 2, 1, 1); s_gui->w_four_combobox = combo_box; node_box = GTK_COMBO_BOX (combo_box); node_list_store = GTK_LIST_STORE (gtk_combo_box_get_model (node_box)); gtk_list_store_clear (node_list_store); if (voltmeters) { for (iter = voltmeters; iter; iter = iter->next) { if (g_strcmp0 (iter->data, "V(0)")) gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (node_box), iter->data); } gtk_combo_box_set_active (GTK_COMBO_BOX (node_box), 0); } g_signal_connect (G_OBJECT (node_box), "changed", G_CALLBACK (entry_changed_cb), s); w = GTK_WIDGET (gtk_builder_get_object (builder, "fourier_add")); s_gui->w_four_add = w; g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (fourier_add_vout_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "fourier_rem")); s_gui->w_four_rem = w; g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (fourier_remove_vout_cb), s_gui); // Noise // // *** // w = GTK_WIDGET (gtk_builder_get_object (builder, "noise_enable")); s_gui->w_noise_enable = w; g_signal_connect (G_OBJECT (w), "toggled", G_CALLBACK (noise_enable_cb), s_gui); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->noise_enable); w1 = GTK_WIDGET (gtk_builder_get_object (builder, "grid1")); w = GTK_WIDGET (gtk_builder_get_object (builder, "noise_vin")); gtk_widget_destroy (w); // FIXME wtf?? combo_box = gtk_combo_box_text_new (); gtk_grid_attach (GTK_GRID (w1), combo_box, 1, 0, 1, 1); s_gui->w_noise_vin = combo_box; if (sources_ac) { index = 0; active = 0; for (iter = sources_ac; iter; iter = iter->next) { gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), iter->data); if (!g_strcmp0(s->noise_vin, iter->data)) active = index; index++; } gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), active); } g_signal_connect (G_OBJECT (combo_box), "changed", G_CALLBACK (entry_changed_cb), s); // FIXME: Should enable more than just one output as in the Fourier analysis w = GTK_WIDGET (gtk_builder_get_object (builder, "noise_vout")); gtk_widget_destroy (w); // FIXME wtf?? combo_box = gtk_combo_box_text_new (); gtk_grid_attach (GTK_GRID (w1), combo_box, 1, 1, 1, 1); s_gui->w_noise_vout = combo_box; if (voltmeters) { index = 0; active = 0; text = g_strdup_printf ("V(%s)", s->noise_vout); for (iter = voltmeters; iter; iter = iter->next) { if (g_strcmp0 (iter->data, "V(0)")) gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), iter->data); if (!g_strcmp0(text, iter->data)) active = index; index++; } g_free (text); gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), active); } g_signal_connect (G_OBJECT (combo_box), "changed", G_CALLBACK (entry_changed_cb), s); // Initialisation of the various scale types w = GTK_WIDGET (gtk_builder_get_object (builder, "noise_type")); gtk_widget_destroy (w); // FIXME wtf?? combo_box = gtk_combo_box_text_new (); gtk_grid_attach (GTK_GRID (w1), combo_box, 1, 2, 1, 1); s_gui->w_noise_type = combo_box; { index = 0; active = 0; for (; scale_types_list[index] != NULL; index++) { gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), scale_types_list[index]); if (!g_strcmp0(s->noise_type, scale_types_list[index])) active = index; } gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), active); } g_assert (GTK_IS_COMBO_BOX (combo_box)); g_signal_connect (G_OBJECT (combo_box), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "noise_npoints")); s_gui->w_noise_npoints = w; gtk_entry_set_text (GTK_ENTRY (w), s->noise_npoints); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "noise_start")); s_gui->w_noise_start = w; gtk_entry_set_text (GTK_ENTRY (w), s->noise_start); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); w = GTK_WIDGET (gtk_builder_get_object (builder, "noise_stop")); s_gui->w_noise_stop = w; gtk_entry_set_text (GTK_ENTRY (w), s->noise_stop); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (entry_changed_cb), s_gui); gtk_widget_show_all (toplevel); trans_enable_cb (s_gui->w_trans_enable, s_gui); trans_step_enable_cb (s_gui->w_trans_step_enable, s_gui); ac_enable_cb (s_gui->w_ac_enable, s_gui); dc_enable_cb (s_gui->w_dc_enable, s_gui); fourier_enable_cb (s_gui->w_four_enable, s_gui); noise_enable_cb (s_gui->w_noise_enable, s_gui); g_list_free(sources); g_list_free(voltmeters); g_list_free(voltmeters_with_type); } oregano-0.84.41/src/oregano.c0000644000175000017500000001402713413640652014727 0ustar rubenruben/* * oregano.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Oregano, a tool for schematic capture and simulation of electronic * circuits. * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #define ENABLE_NLS 1 #define HAVE_BIND_TEXTDOMAIN_CODESET 1 #define HAVE_GETTEXT 1 #define HAVE_LC_MESSAGES 1 #include #include #include #include #include #include "dialogs.h" #include "engine.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 "oregano.h" #include "splash.h" #include G_DEFINE_TYPE (Oregano, oregano, GTK_TYPE_APPLICATION); OreganoApp oregano; Oregano *app; int oregano_debugging; static void oregano_application (GApplication *app, GFile *file); static void oregano_activate (GApplication *application); static void oregano_open (GApplication *application, GFile **files, gint n_files, const gchar *hint); static void oregano_finalize (GObject *object) { GList *iter; Library *l; cursors_shutdown (); g_object_unref (oregano.settings); // Free the memory used by the parts libraries for (iter = oregano.libraries; iter; iter = iter->next) { l = (Library *) iter->data; g_free (l->name); g_free (l->author); g_free (l->version); } g_list_free_full (oregano.libraries, g_free); clipboard_empty (); G_OBJECT_CLASS (oregano_parent_class)->finalize (object); } static void oregano_class_init (OreganoClass *klass) { G_APPLICATION_CLASS (klass)->activate = oregano_activate; G_APPLICATION_CLASS (klass)->open = oregano_open; G_OBJECT_CLASS (klass)->finalize = oregano_finalize; } static void oregano_init (Oregano *object) { guint i; gchar *engine_name; cursors_init (); stock_init (); oregano_config_load (); // check if the engine loaded from the configuration exists... // otherwise pick up the next one ! engine_name = oregano_engine_get_engine_name_by_index (oregano.engine); if (g_find_program_in_path (engine_name) == NULL) { oregano.engine = OREGANO_ENGINE_COUNT; for (i = 0; i < OREGANO_ENGINE_COUNT; i++) { g_free (engine_name); engine_name = oregano_engine_get_engine_name_by_index (i); if (g_find_program_in_path (engine_name) != NULL) { oregano.engine = i; } } } g_free (engine_name); // simulation cannot run, disable log if (oregano.engine < 0 || oregano.engine >= OREGANO_ENGINE_COUNT) oregano.show_log = FALSE; } Oregano *oregano_new (void) { return g_object_new (oregano_get_type (), "application-id", "org.gnome.oregano", "flags", G_APPLICATION_HANDLES_OPEN, NULL); } // GApplication implementation static void oregano_activate (GApplication *application) { oregano_application (application, NULL); } static void oregano_open (GApplication *application, GFile **files, gint n_files, const gchar *hint) { gint i; for (i = 0; i < n_files; i++) oregano_application (application, files[i]); } static gboolean quit_hook (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer data) { return FALSE; } static void oregano_application (GApplication *app, GFile *file) { Schematic *schematic = NULL; SchematicView *schematic_view = NULL; gchar *msg; Splash *splash = NULL; GError *error = NULL; // Keep non localized input for ngspice setlocale (LC_NUMERIC, "C"); if (oregano.show_splash) { splash = oregano_splash_new (&error); if (error) { msg = g_strdup_printf (_ ("Failed to spawn splash-screen \'%s\''. Code %i - %s"), OREGANO_UIDIR "splash.ui", error->code, error->message); oregano_error (msg); g_free (msg); g_clear_error (&error); // non fatal issue } } // 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" "Supposed to be in " OREGANO_LIBRARYDIR)); return; } oregano.clipboard = NULL; schematic = NULL; if (file) { GError *error = NULL; char *fname = g_file_get_parse_name (file); schematic = schematic_read (fname, &error); if (schematic) { schematic_view = schematic_view_new (schematic); gtk_widget_show_all (schematic_view_get_toplevel (schematic_view)); schematic_set_filename (schematic, fname); schematic_set_title (schematic, g_path_get_basename (fname)); } } else { schematic = schematic_new (); schematic_view = schematic_view_new (schematic); gtk_widget_show_all (schematic_view_get_toplevel (schematic_view)); } g_signal_add_emission_hook (g_signal_lookup ("last_schematic_destroyed", TYPE_SCHEMATIC), 0, quit_hook, NULL, NULL); if (oregano.show_splash && splash) oregano_splash_done (splash, _ ("Welcome to Oregano")); }oregano-0.84.41/src/load-library.h0000644000175000017500000000367613413640652015673 0ustar rubenruben/* * load-library.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __LOAD_LIBRARY_H #define __LOAD_LIBRARY_H #include #include 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; GooCanvasPoints *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 oregano-0.84.41/src/spice2to3.awk0000644000175000017500000001636413413640652015456 0ustar rubenruben#==================================================== -*- 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; } oregano-0.84.41/src/errors.c0000644000175000017500000000217113413640652014606 0ustar rubenruben/* * errors.c * * * Author: * Ricardo Markiewicz * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 2003-2008 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, 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; } oregano-0.84.41/src/save-schematic.h0000644000175000017500000000240513413640652016173 0ustar rubenruben/* * save-schematic.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef _SAVE_SCHEMATIC_H #define _SAVE_SCHEMATIC_H #include #include "schematic.h" gboolean schematic_write_xml (Schematic *sm, GError **error); #endif oregano-0.84.41/src/file-manager.c0000644000175000017500000000322613413640652015623 0ustar rubenruben/* * file-manager.c * * * Authors: * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, 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; } oregano-0.84.41/src/tools/0000755000175000017500000000000013413640652014265 5ustar rubenrubenoregano-0.84.41/src/tools/cancel-info.c0000644000175000017500000000362113413640652016611 0ustar rubenruben/* * cancel-info.c * * * Authors: * Michi * * Web page: https://ahoi.io/project/oregano * * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include "cancel-info.h" struct _CancelInfo { guint ref_count; GMutex mutex; gboolean is_cancel; }; static void cancel_info_finalize(CancelInfo *info); CancelInfo *cancel_info_new() { CancelInfo *info = g_new0(CancelInfo, 1); info->ref_count = 1; g_mutex_init(&info->mutex); return info; } void cancel_info_subscribe(CancelInfo *info) { g_mutex_lock(&info->mutex); info->ref_count++; g_mutex_unlock(&info->mutex); } void cancel_info_unsubscribe(CancelInfo *info) { g_mutex_lock(&info->mutex); info->ref_count--; guint ref_count = info->ref_count; g_mutex_unlock(&info->mutex); if (ref_count == 0) cancel_info_finalize(info); } gboolean cancel_info_is_cancel(CancelInfo *info) { g_mutex_lock(&info->mutex); gboolean is_cancel = info->is_cancel; g_mutex_unlock(&info->mutex); return is_cancel; } void cancel_info_set_cancel(CancelInfo *info) { g_mutex_lock(&info->mutex); info->is_cancel = TRUE; g_mutex_unlock(&info->mutex); } static void cancel_info_finalize(CancelInfo *info) { g_mutex_clear(&info->mutex); g_free(info); } oregano-0.84.41/src/tools/cancel-info.h0000644000175000017500000000227513413640652016622 0ustar rubenruben/* * cancel-info.h * * * Authors: * Michi * * Web page: https://ahoi.io/project/oregano * * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef TOOLS_CANCEL_INFO_H_ #define TOOLS_CANCEL_INFO_H_ typedef struct _CancelInfo CancelInfo; CancelInfo *cancel_info_new(); void cancel_info_subscribe(CancelInfo *info); void cancel_info_unsubscribe(CancelInfo *info); gboolean cancel_info_is_cancel(CancelInfo *info); void cancel_info_set_cancel(CancelInfo *info); #endif /* TOOLS_CANCEL_INFO_H_ */ oregano-0.84.41/src/tools/thread-pipe.c0000644000175000017500000004425613413640652016646 0ustar rubenruben/** * thread-pipe.c * * * Authors: * Michi * * Web page: https://ahoi.io/project/oregano * * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ /* * * BASICS * ------ * ThreadPipe can be used to efficiently communicate large * or small data between 2 threads, whereas the data pops up * bit by bit (or at once). * It consists of a chain of data blocks. New * data is appended at the one end of the chain, old data * can be read at the other end of the pipe. * * If there is data (chain has more than 1 chain link), the * reader gets to know this by locking a mutex and asking * the state of a shared variable. * * If all data is read and the reader needs more data, he * will wait until new data is available by locking a mutex * and waiting for a conditional signal of the writer. * * * Locking, unlocking and signaling can slow down the * communication process very hard, if the data blocks are * small. To solve this problem, an additional buffer is * introduced. * * BUFFERED VERSION * ---------------- * The problem of unbuffered ThreadPipe is that locking * and unlocking is a very heavy work that should not * be done too frequently. Now if the data blocks pushed * to ThreadPipe are too small, the lock operation is * done very often. However the positive side of small blocks * is the real time ability. * * If you need only weak real time or no real time but an * efficient use of time and money, you should use the * buffered version of thread pipe with large (but not too * large) buffer numbers (you can use a buffer by setting * the buffer numbers in the constructor unequal 1). * * There are some approaches how to realize a buffer in the * case of thread pipe: * - melting incoming blocks together with realloc, * counting the number of bytes or melting operations, * release the block for popping when number is large enough, * - appending incoming blocks together, * counting the number of bytes or/and number of blocks not released, * release the block queue if number is large enough, * - counting time instead of space, * - other shit * * Because blocks are structure elements that can be used to * make the code more efficient AND melting operations * can be heavy work, I think that simply appending some * blocks and not locking/releasing every single block is * a good way to go. Counting time instead of space may be * a good approach for real time applications that want to * be also efficient. But because real time is not demanded * in a non real time simulation like ngspice or gnucap, we don't * need to bother. But you can set the buffer numbers to 1 * and then you can use thread pipe in real time applications, * that have far too much nop-time and really small amounts of * data workload. * * Furthermore I have decided to count the number of blocks * and the total size of not released blocks. When one of * the counting numbers are larger than their corresponding * buffer constants, the whole pipe queue is released for * popping (what needs a small locking access). * * You have some possibilities to define the buffer constants: * - define statements in thread-pipe.h * - telling the constructor function what are your wishes * * THE FUTURE * ---------- * An enhanced version of this could be an adaptive buffer size * decision maker that detects the frequency of collisions * and uses this information to adapt the optimal buffer size * as a function of time, by extrapolating the behavior of * the program like branch prediction technology that is used in * processors. A good version of this could be real time capable * in low workload times and would be optimal for time, space * and money saving in times of high workload. * */ #include #include #include #include #include "thread-pipe.h" typedef struct _ThreadPipeData ThreadPipeData; /** * chain link/chain element */ struct _ThreadPipeData { // introduced for efficient string support gpointer malloc_address; // data block gpointer data; // size of data block gsize size; // link to next chain element ThreadPipeData *next; }; /** * structuring structure */ typedef struct { // closing/freeing information gboolean write_eof; gboolean read_eof; // buffer state information gsize size_total; gsize block_counter; } ThreadPipeBufferData; struct _ThreadPipe { /** * variables of reading thread */ ThreadPipeData *read_data; ThreadPipeBufferData read_buffer_data; /** * variables of writing thread */ ThreadPipeData *write_data; ThreadPipeBufferData write_buffer_data; /** * shared variables */ ThreadPipeBufferData ready_buffer_data; /** * synchronizing variables */ GMutex mutex; GCond cond; /** * read-only variables */ guint max_block_counter; gsize max_size_total; }; static ThreadPipeData *thread_pipe_data_new(gpointer data, gsize size); static ThreadPipeData *thread_pipe_data_destroy(ThreadPipe *pipe); static void thread_pipe_destroy(ThreadPipe *pipe); /** * Creates a new ThreadPipe structure. * * I recommend using ThreadPipes like normal FIFO pipes, whereas one thread * uses only read functions and another thread uses only write functions. * The reading thread should make sure that read_eof will be set, * the writing thread should make sure that write_eof will be set, * because: * * ThreadPipes have 3 possibilities to close: * 1. call thread_pipe_set_write_eof and after that read the pipe to the end * 2. call thread_pipe_set_write_eof and after that call thread_pipe_set_read_eof * 3. call thread_pipe_set_read_eof and after that call thread_pipe_set_write_eof * * Now if the creating thread of the ThreadPipe wants to close the ThreadPipe, * and he did not touch any reading or writing functions, he does not know * whether the pipe has been closed already automatically and will cause a * segmentation fault eventually if he tries. * * @max_buffer_block_counter: 1 is the lowest number (you can't push no data). * If 0, the default value from thread-pipe.h will be used. * @max_buffer_block_counter: 1 is the lowest value (ThreadPipe does not allow * to push blocks of size 0). If 0, the default value from thread-pipe.h * will be used. * * returns a new ThreadPipe structure */ ThreadPipe *thread_pipe_new( guint max_buffer_block_counter, gsize max_buffer_size_total) { ThreadPipe *thread_pipe = g_new0(ThreadPipe, 1); g_mutex_init(&thread_pipe->mutex); g_cond_init(&thread_pipe->cond); ThreadPipeData *pipe_data = thread_pipe_data_new(NULL, 0); thread_pipe->read_data = pipe_data; thread_pipe->write_data = pipe_data; thread_pipe->max_block_counter = max_buffer_block_counter != 0 ? max_buffer_block_counter : THREAD_PIPE_MAX_BUFFER_BLOCK_COUNTER_DEFAULT; thread_pipe->max_size_total = max_buffer_size_total != 0 ? max_buffer_size_total : THREAD_PIPE_MAX_BUFFER_SIZE_TOTAL_DEFAULT; return thread_pipe; } /** * Pushes a block of size size to the end of the pipe. The data is copied * to heap. * * Don't push, if you set write_eof already. * * return value will be NULL, if * - read_eof has been set by thread_pipe_set_read_eof or * - write_eof has been set by thread_pipe_set_write_eof (with fail message) or * - pipe is NULL (with fail message). * * If read_eof has been set by thread_pipe_set_read_eof before, you can close * the pipe by setting write_eof and you will save much time and money, * so be sure to check return value every call. But you can also call this * function if it makes no sense. The function recognizes then that * pushing makes no sense and returns fast. The function is not closing the * pipe automatically in this case because it is safer for example if the * programmer does not check the return value. * * returns TRUE or FALSE * - FALSE, if the pipe has been closed by read_eof or other events that * indicate that you can close the pipe by setting write_eof * - TRUE, if the pipe is living further on and it makes sense that it * will live further on */ gboolean thread_pipe_push(ThreadPipe *pipe, gpointer data, gsize size) { // Give me an object. g_return_val_if_fail(pipe != NULL, FALSE); // Don't push, if you set write_eof already. g_return_val_if_fail(pipe->write_buffer_data.write_eof != TRUE, FALSE); // Don't push no data to pipe. g_return_val_if_fail(data != NULL, !pipe->write_buffer_data.read_eof); g_return_val_if_fail(size != 0, !pipe->write_buffer_data.read_eof); // pipe not active any more because no reader has interest. if (pipe->write_buffer_data.read_eof) return FALSE; pipe->write_data->next = thread_pipe_data_new(data, size); pipe->write_data = pipe->write_data->next; pipe->write_buffer_data.block_counter++; pipe->write_buffer_data.size_total += size; if (pipe->write_buffer_data.block_counter < pipe->max_block_counter && pipe->write_buffer_data.size_total < pipe->max_size_total) return TRUE; g_mutex_lock(&pipe->mutex); pipe->ready_buffer_data.block_counter += pipe->write_buffer_data.block_counter; pipe->write_buffer_data.block_counter = 0; pipe->ready_buffer_data.size_total += pipe->write_buffer_data.size_total; pipe->write_buffer_data.size_total = 0; pipe->write_buffer_data.read_eof = pipe->ready_buffer_data.read_eof; g_cond_signal(&pipe->cond); g_mutex_unlock(&pipe->mutex); return !pipe->write_buffer_data.read_eof; } /** * Reads a block of memory that has been pushed earlier by thread_pipe_push. * If there is no block that has been pushed earlier, this function will * wait until a block will be pushed or write_eof will be set. * * pipe will be destroyed automatically if write_eof has been set && pipe is * empty, so be sure to check return value always! * * The data, stored to data_out, will be freed in the next thread_pipe_pop call, * so be sure to copy the data, if you need it longer than one thread_pipe_pop * cycle. * * Don't pop, if you set read_eof already. * * returns pipe or NULL * - NULL, if the pipe has been destroyed * - pipe, if the pipe is living further on */ ThreadPipe *thread_pipe_pop(ThreadPipe *pipe, gpointer *data_out, gsize *size) { g_return_val_if_fail(pipe != NULL, pipe); g_return_val_if_fail(data_out != NULL, pipe); g_return_val_if_fail(size != NULL, pipe); //Don't pop, if you set read_eof already. g_return_val_if_fail(pipe->read_buffer_data.read_eof != TRUE, NULL); *data_out = NULL; *size = 0; if (pipe->read_buffer_data.block_counter <= 0) { g_mutex_lock(&pipe->mutex); while (pipe->ready_buffer_data.block_counter <= 0 && !pipe->ready_buffer_data.write_eof) g_cond_wait(&pipe->cond, &pipe->mutex); pipe->read_buffer_data.block_counter = pipe->ready_buffer_data.block_counter; pipe->ready_buffer_data.block_counter = 0; pipe->read_buffer_data.size_total = pipe->ready_buffer_data.size_total; pipe->ready_buffer_data.size_total = 0; pipe->read_buffer_data.write_eof = pipe->ready_buffer_data.write_eof; g_mutex_unlock(&pipe->mutex); } if (!thread_pipe_data_destroy(pipe)) { thread_pipe_destroy(pipe); return NULL; } *data_out = pipe->read_data->data; *size = pipe->read_data->size; return pipe; } /** * Reads to the end of a line like fgets and pops it, or reads to the end of pipe. * * size_out will be the length + 1 of the string like strlen. * * Pushed data blocks should be 0 terminated, but don't have to. * * possible independent cases: * - newline at position of block, where position in Po := {nowhere, beginning/middle, end} * - newline at is_first block, where is_first in If := {first, not first} * - newline at is_last block, where is_last in Il := {last, not last} * In total there are 12 pairwise unequal cases by forming the Cartesian product of Po, If and Il * and adding the case where there is no newline at all. * * returns pipe or NULL like thread_pipe_pop */ ThreadPipe *thread_pipe_pop_line(ThreadPipe *pipe_in, gchar **string_out, gsize *size_out) { g_return_val_if_fail(pipe_in != NULL, pipe_in); g_return_val_if_fail(string_out != NULL, pipe_in); g_return_val_if_fail(size_out != NULL, pipe_in); //Don't pop, if you set read_eof already. g_return_val_if_fail(pipe_in->read_buffer_data.read_eof != TRUE, NULL); *string_out = NULL; *size_out = 0; size_t line_size; gchar *line; FILE *line_file = open_memstream(&line, &line_size); ThreadPipeData *current = NULL; gchar *ptr = NULL; while (TRUE) { ptr = NULL; if (pipe_in->read_buffer_data.block_counter <= 0) { g_mutex_lock(&pipe_in->mutex); while (pipe_in->ready_buffer_data.block_counter <= 0 && !pipe_in->ready_buffer_data.write_eof) g_cond_wait(&pipe_in->cond, &pipe_in->mutex); pipe_in->read_buffer_data.block_counter = pipe_in->ready_buffer_data.block_counter; pipe_in->ready_buffer_data.block_counter = 0; pipe_in->read_buffer_data.size_total = pipe_in->ready_buffer_data.size_total; pipe_in->ready_buffer_data.size_total = 0; pipe_in->read_buffer_data.write_eof = pipe_in->ready_buffer_data.write_eof; g_mutex_unlock(&pipe_in->mutex); } current = pipe_in->read_data->next; if (current == NULL) break; ptr = current->data; while (*ptr != '\n' && *ptr != 0 && ptr - (gchar *)current->data < current->size //somebody forgot to close the string with 0? ) { fputc(*ptr, line_file); ptr++; } if (ptr - (gchar *)current->data < current->size && *ptr == '\n') { fputc(*ptr, line_file); ptr++; break; } thread_pipe_data_destroy(pipe_in); } fputc(0, line_file); fclose(line_file); if (current == NULL) { if (line_size == 1) { g_free(line); thread_pipe_destroy(pipe_in); return NULL; } } else { gchar **current_data = (gchar **)¤t->data; gsize *current_size = ¤t->size; *current_size -= (ptr - *current_data); pipe_in->read_buffer_data.size_total -= (ptr - *current_data); *current_data = ptr; if (*current_size == 0 || (*current_size == 1 && *ptr == 0)) thread_pipe_data_destroy(pipe_in); } /** * current == NULL && line_size != 1 * || * current != NULL */ gchar **old_data = (gchar **)&pipe_in->read_data->malloc_address; gsize *old_size = &pipe_in->read_data->size; g_free(*old_data); *old_data = line; *old_size = line_size; *string_out = *old_data; *size_out = *old_size; return pipe_in; } /** * If you are finished with writing, you have to set write_eof so that the * memory of pipe can be freed. You can set write_eof independent of * - read_eof * - emptiness of pipe * - other shit * * Don't push, after you called thread_pipe_set_write_eof. * * The memory of data and pipe will be freed, if read_eof && write_eof == TRUE. */ void thread_pipe_set_write_eof(ThreadPipe *pipe) { g_return_if_fail(pipe != NULL); g_return_if_fail(pipe->write_buffer_data.write_eof != TRUE); g_mutex_lock(&pipe->mutex); gboolean destroy = pipe->ready_buffer_data.read_eof; pipe->ready_buffer_data.write_eof = TRUE; // pipe->read_buffer_data.write_eof = TRUE; pipe->write_buffer_data.write_eof = TRUE; pipe->ready_buffer_data.block_counter += pipe->write_buffer_data.block_counter; pipe->write_buffer_data.block_counter = 0; pipe->ready_buffer_data.size_total += pipe->write_buffer_data.size_total; pipe->write_buffer_data.size_total = 0; g_cond_signal(&pipe->cond); g_mutex_unlock(&pipe->mutex); if (destroy) thread_pipe_destroy(pipe); } /** * If you are finished with reading, you have to set read_eof so that the * memory of pipe can be freed. You can set read_eof independent of * - write_eof * - emptiness of pipe * - other shit * * Don't pop, after you called thread_pipe_set_read_eof. * * The memory of data waiting in pipe to be popped, will all be freed. * * The memory of pipe will be freed also, if write_eof && write_eof == TRUE. */ void thread_pipe_set_read_eof(ThreadPipe *pipe) { g_return_if_fail(pipe != NULL); g_return_if_fail(pipe->read_buffer_data.read_eof != TRUE); g_mutex_lock(&pipe->mutex); gboolean destroy = pipe->ready_buffer_data.write_eof; pipe->ready_buffer_data.read_eof = TRUE; pipe->read_buffer_data.read_eof = TRUE; // pipe->write_buffer_data.read_eof = TRUE; pipe->read_buffer_data.write_eof = pipe->ready_buffer_data.write_eof; pipe->read_buffer_data.block_counter += pipe->ready_buffer_data.block_counter; pipe->ready_buffer_data.block_counter = 0; pipe->read_buffer_data.size_total += pipe->ready_buffer_data.size_total; pipe->ready_buffer_data.size_total = 0; while (pipe->read_buffer_data.block_counter) thread_pipe_data_destroy(pipe); g_mutex_unlock(&pipe->mutex); if (destroy) thread_pipe_destroy(pipe); } /** * copy data to a new ThreadPipeData structure */ static ThreadPipeData *thread_pipe_data_new(gpointer data, gsize size) { ThreadPipeData *pipe_data = g_new0(ThreadPipeData, 1); if (data != NULL && size != 0) { pipe_data->malloc_address = g_malloc(size); memcpy(pipe_data->malloc_address, data, size); pipe_data->data = pipe_data->malloc_address; pipe_data->size = size; } return pipe_data; } /** * free all memory of a ThreadPipeData structure * * returns * - the next block of the linked list, if there is one * - else NULL */ static ThreadPipeData *thread_pipe_data_destroy(ThreadPipe *pipe) { ThreadPipeData *pipe_data = pipe->read_data; ThreadPipeData *next = pipe_data->next; g_free(pipe_data->malloc_address); g_free(pipe_data); if (next != NULL) { pipe->read_buffer_data.block_counter--; pipe->read_buffer_data.size_total -= next->size; } pipe->read_data = next; return next; } /** * free all memory of a ThreadPipe structure */ static void thread_pipe_destroy(ThreadPipe *pipe) { g_return_if_fail(pipe != NULL); while (pipe->read_data) thread_pipe_data_destroy(pipe); g_mutex_clear(&pipe->mutex); g_cond_clear(&pipe->cond); g_free(pipe); } oregano-0.84.41/src/tools/thread-pipe.h0000644000175000017500000000315713413640652016646 0ustar rubenruben/* * thread-pipe.h * * * Authors: * Michi * * Web page: https://ahoi.io/project/oregano * * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef THREAD_PIPE_H_ #define THREAD_PIPE_H_ #define THREAD_PIPE_MAX_BUFFER_BLOCK_COUNTER_DEFAULT 20 #define THREAD_PIPE_MAX_BUFFER_SIZE_TOTAL_DEFAULT 2048 typedef struct _ThreadPipe ThreadPipe; /** * Constructor */ ThreadPipe *thread_pipe_new( guint max_buffer_block_counter, gsize max_buffer_size_total); /** * functions for writing thread */ gboolean thread_pipe_push(ThreadPipe *pipe, gpointer data, gsize size); // Destructor void thread_pipe_set_write_eof(ThreadPipe *pipe); /** * functions for reading thread */ ThreadPipe *thread_pipe_pop(ThreadPipe *pipe, gpointer *data_out, gsize *size); ThreadPipe *thread_pipe_pop_line(ThreadPipe *pipe, gchar **data_out, gsize *size); // Destructor void thread_pipe_set_read_eof(ThreadPipe *pipe); #endif /* THREAD_PIPE_H_ */ oregano-0.84.41/src/schematic-view.h0000644000175000017500000000671213413640652016214 0ustar rubenruben/* * schematic-view.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __SCHEMATIC_VIEW_H #define __SCHEMATIC_VIEW_H // typedefing before including makes circular dependencies possible typedef struct _SchematicView SchematicView; #include #include "schematic.h" #include "sheet.h" /* * When stretching a schematic to resize * it, increase its width or height of * this percentage (the recommended factor * is 0.15 for a 15% increase). */ #define SCHEMATIC_STRETCH_FACTOR 0.15 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 _SchematicViewClass SchematicViewClass; typedef struct _SchematicViewPriv SchematicViewPriv; GType schematic_view_get_type (void); void schematic_view_simulate_cmd (GtkWidget *widget, SchematicView *sv); SchematicView *schematic_view_new (Schematic *schematic); Sheet *schematic_view_get_sheet (SchematicView *sv); void schematic_view_set_sheet (SchematicView *sv, Sheet *sheet); Schematic *schematic_view_get_schematic (SchematicView *sv); Schematic *schematic_view_get_schematic_from_sheet (Sheet *sheet); SchematicView *schematic_view_get_schematicview_from_sheet (Sheet *sheet); void run_context_menu (SchematicView *sv, GdkEventButton *event); // Signal emission wrappers. void schematic_view_reset_tool (SchematicView *sv); // Misc. void schematic_view_set_browser (SchematicView *sv, gpointer p); gpointer schematic_view_get_browser (SchematicView *sv); void schematic_view_set_parent (SchematicView *sv, GtkDialog *dialog); // Logging. void schematic_view_log_show (SchematicView *sv, gboolean explicit); gboolean schematic_view_get_log_window_exists (SchematicView *sv); // Windows services. GtkWidget *schematic_view_get_toplevel (SchematicView *sv); #endif /* __SCHEMATIC_VIEW_H */ oregano-0.84.41/src/netlist-editor.h0000644000175000017500000000446013413640652016250 0ustar rubenruben/* * netlist-editor.h * * * Author: * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 2004-2008 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __NETLIST_EDIT_H #define __NETLIST_EDIT_H #include #include #include #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 oregano-0.84.41/src/pixmaps/0000755000175000017500000000000013413640652014606 5ustar rubenrubenoregano-0.84.41/src/pixmaps/mini_icon_plot.xcf0000644000175000017500000000270013413640652020311 0ustar rubenrubengimp xcf fileBBc New Layer     %5Eh h іhhhhhhh'Eh h KEKKEKKKhKKKKKhKKKhEhhKKhKh'Eh h 7[[7[[[h[[[h[[h7hh[[h[[h'U  3Color     I]m!Є PММММММММММММММММММММММММММММММММММММММММ󜐜 !dd4d4 TԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬԬ󬘬 !XX$X$ HĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤĤ󤔤               oregano-0.84.41/src/pixmaps/logo.xpm0000644000175000017500000026154513413640652016311 0ustar rubenruben/* 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 #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 #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-:!$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$'/)/.;.;.;.;.;.;.;!/~/{/]/^///(/_/:/%,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 .<,<'<)<^:s&!,-,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>:-^,n,s&$,S'O#M$s&J$H$/-e%b%Q$t&Z#u&**u&n%v=/-u&(_{1*_&h f 8+w#eq<@&.&H$C$G$d%c%-$.$c% $Q# $+$T#N$t&+&S's&e%y$N$y$r$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$+&#$ub'%,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$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-p6[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@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@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}`} 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, @n ~@{@~ E@|@3.~@'+;@_&b L+k#.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|c2d2e2f2g2h2i2ktEXtCommentCreated with The GIMPd%n IDATxi][;y};UU<mJ0I qwQ+Iɗ&RK(iV-E:nh7 xrUݺ;g>{~ǵVxz}+VHTSuyy<^v(9!hTU|># #}TOJ)("˲9EvJp{rwww3+/;햍v$"0 ˲ yvCT@K)BPYrF @y!(YtJ MSs8pYp y}s9k1U$TeQVJJeQBAX,n;G~ppY՞huOH5+Kf't$Gq0 ɲ !Z+@ت*J((J,KI]߹BZK묐RBJsc UU !`rd= b,OVUIc*Y, 8eYLYQV%QQeR*8YKtPV%RH8kqcZkXk ,ɘNCH%Z+eQ1Q @Is!UUaWi4ψKcB`qDa RJ(~P=^5eYJ9s4A9'DQTI7GQ^9;t4]?wF9\i)JGȋ"ωtRa:RH,4ibEkg-R)k-8AREeYX c,Y3͐RbE Av3N4E+ 69#nVY,sFkkt; I @C<' G i:A8E-t 6a6<5ӛq}y&T-bq| Rr|S!tD!`PaPRKK'X ,t%%YNMf)4acLq<]m<(w25_2xk<^1((kkZ3Q"r$N*s*q D;[1;SiTjJDHt1F1 $E^3Z^Ik ca TâD)!D WѼگ|HJKWPb6ŵ[U)AqYÎ$J4eURaqα\9H!$ qB)A*ֆ} y$Z^*pgϞB)EiOx;SX +yLlmm>$M3ZIRa0 t4b1]ISQ5ūlEIJYy0ܻW TL3e1RU]>l3 z"¢Z|e$!Z,)Qn82d8'㍍38:/,E?{bcdb߾}s9j].;B8SUCsxJ)Q }Yk%@A!zrt\4KkUZ1XVU"uT5kb6/i\xa;"$ijBZ,3pp8s,B^K"#tlnEVu}wvbf>)IX,a<Ϲ{.H))˒hDUU }4EZ hɲcΟw [[8tH)f,K.RJ{}~c G$gNS%W.O9>qpW5oԩEg>#X.z]Bi7ŠU,:2k  E$er 8QC礙^_*{}Gkݻɍ'?c)$:v:L_{}< F*,o:ƏW_ ,RH)1=@[k+sl+%8ϩQh`,0PX'K ,ӌ$Np8,'N"t;GG ]L+]a]]Y.H!iBbID'Du;\t)AiQZK֌Fk!Ð Rh(s6)q73@$!h۫Ҹ[-(jJV{\>}nr(o. <ϛy5okkr -(Nrd2C]UbQ +Cr7m;=! qW*{-m{5j{M5,)a0CQ"YYam0ju9sX'4%]HQudy0Lr;s)Xf8$a#vM)nO<cIN7ao,G߸yþv*B)mQ믏'Z"wN^|: r J+a:wUٳ8Ny]$~S$h((K @*AWL!eZDKJ DIu)$Z P`*KNg$,c!8:k1Z[[BX/TS$f4U)o6ayspx#Q׆NӰVE!FAt:e2$ LSΝ;`0 U`>u ZGGGLS(4PZO k?f\K C8n~h咇r677ݼc=OaxZ_Oy%y1VXrLLEVBAkh Pdg 咽=>v\-k Ajđ3 +66 EQaJ-%,Eq2V8lY;oR_XnZB^2ͥTZ7u7,K.N{os :/_;B Me(cB:{ZNG_ʲ*ˢOXRPu5C$NCȲj![$`2_#K*# 8'h׺5 !Z,Ì[EnKQFf3SENNNhZHYK$I4qcmd_V<[w)s PjΜ=.eGG4$U5z>< t5^p"ܹOmH"MiRܿǙPҒĂ 6oV}!~HY NH먌ak[hA[c㒵"R*WעʈoMoZsز:5>}u}t|̑B,зNj廅 VR+D=2N!4Myӛr$˲$0$Ic$p8d>sM.\YIJ>|CQ2 Ð7n :5Q9_ӰR{=Rx#W, ʲl=2c9;;;Xk A"ի1QDI_ﳽu`<(1L3$\ss:t=+f9u>&:6wKTdhI%X9LE+%¡[3UY]Q+A8\T8xUJRQV( tt?ձOA祗Icp=kN;*z|԰L+sH%!(9B!PJh2^'B wV!'h4ԩ<_6~rΝ;mΟ?l@ާBpT]MrαAQ S  K)lM=LZn!888 MSΜ9@-'s˽Y %4ԩS$IBUUE15s(˒/6׶64h4b5LkEi_}9eկ3llJ9xM%Qb9{F2J%a7^\(E4$qv1{5 0%Fg&4UUqppR4%28&c{fB)E!M[%EQs$/^HZKc0(KC \Q|K)@BbxzD8W" "@ c5Zh?P?>,? aLeN_v8Rϴ"g:/|("eY d; /ƱRd!U1,wJKtQX/ư P T8@lEDN4[ZGGGaH2t:e9u(HӔ\۳F<\˯-zjP'g{IfyC~:0 nLݲPug3<}5TtO'''hE.]"FrU1c 6i @EAQAd2j5Ν;={$I8>>nuv#'uNOu-N:)+n'pJE)%B:f|Ů C8$JۢHVZLu՝'oRb/S_9@OGve`v.+VfTHa`8N`tLn%pΰ58 FgYEcznzƜmΫ4il׿ۧ9<~nWrtdWDJJ)>O+_doy[穧:+&RIYorIk6$IڪRZ>|HUUlll4sww!ŢNa0D,j0M2-$vo/+ޟj,K(+W0H)%y_w45Q+rv<#h c|rV{JRf}ꞯmO32τ/HqQևI% #4͈@kKUFKJD S i0VL U0BdY=|f}qkssi~Ii'޼;a}⟎:ONNƳA%4+( ?xɼ e5&:RAKW$VVIS49t:( 677Wa%I)'''ETԩSZ.ik:s\0C忼է/E5*KÃ_~b!E _ʕ>g>؀;3})C&$vVEE 9ǃ72EidY|>odMV?4^\ٟ1 ~n Nn!tuH,FF{W<8x69vww14>b fm^? yYb~,]FRG ut8CQvJ,sPSU [v n+biJ-MT/ea ~{8JěUDAPLA$0d J,k-QX5Ueuh-AKݼ'''ܽ˭7snÇs)a6~åK8</^ԩSie,-X~x)MbAf:24/kxM׮u89i9ݭX[a)W3cs}֭/|pZ^޽8ՂOיL)%q%}T|^GnJ#,7eso{"j5,^&%yl4/\0{-~ȘΐMz~/{SOa7O IDATeoou(booa3GGG<|VnϦ( & 9޽KԩSh](hft<(qRn۰8o{O_wOWUDAU嫃F U@-I`$EW 2mS [ ]zӯ;B7?܀fB!|K-Vv2˓ɲdE+CVq݋%BpE8?Wxm߃ϱqڵ7Y~?Tn^OYkߴm섛7?7sce t:{Z#)zj loիO<땜= 9|Gܺew^Ƚ{{lniZ/29,kkZba89Y\+*Rʦ)ME,& UUUrZ$|k\䄓677aS)eYr|\opa^I) .]jր}k-är 7ԃ9h| `ss|~Q{xPt:Μ9ӘޏϿGF#sczY)IԞ劁yUJR*!n+{)+A(/ hØz",! ưz,.))/u;"!WbB etnYSU2˲A~qޗ$JDi(tuD(2~[,|SSgϞ''9w#%ϸٌ2 ]7{xsGrbN|3 i ZɼVpX٬rYM%ׯ,<4b"I~|w|cv[pz()a6SF]Z{vvTPFݿW)yZ z)C/3O{׭[W_uPJpp*\t:˗a4r$#%i!e0&I4  Ff39::ܹslhZ5y}}J|u͗ΧiSL;s nM Ro;;/}Y0lL{aÛf>яr ~j/?WnhL$c|]ɹ(ʊjLڴ h98(8sŋt^wm_Ѫ>SS0oy˒p=[1|Sn̹lv;,qM˳xdY@ΐ(>R%Zшu$eȣŢI {3C"3HwkNcևP목VypfodU9/7'Iu{Ν;J1pBsxOpҥEyCdՙ? `ۡms]N>ݔU)O>,=2yTvww _A:)y6>߻|,_J^7n/ܸq>Mx ŋveV(?{l/ahN:ZP3 3^װ \ϠbXp=&_fsr xѰê ZӤi|>otxoᐪ묵f{{5{{{qKcmm4M988hdj$Mkϳb=pg) xM˽~|mk]# ɵ\B4>RU$햦B!7weʿ|`rq@ů*`q/Oonw,8N:sJsֆ=@Ot|Fw,He!'8uMʗXO8= If3w-=8ɂNO)HDΝkR>=͘f 7?%777kNCA# &e9l< % tx؍FZs__S {>\8o^c}ҥWc}GWc>h6ߌuNOJ)옃}f.Ž$=ܽ@`-ƈ~E*>eY?88 s{AFYh`pXpxx|roR/Y*UE(H ^Mի2Yi`|EʣAb|͟$ O>$GGG8f, FQFLai2 ߏȏKKud?91) M9$|ˣPgoV !5=XQ)G- V<:^z~`0zw^ir:g[~{_ =`{\ Aj%Q'S2DWV'R/R[ۂ_W87Pʽ5 ʟy8[>SW FGY&I( 0DڻPkm57z|Cj6GYֶ6m fŋ/6èIuҥ12w~[_u~1|Vwuqm񸙰A! X`tP`)och_}Ulmm5f u?r5},&pܹI/#gT^~e._^={:Ywi9[[ AIėÇ<7'1o۝5AӝuԒu*gQZW 5 =.?J^:{xtfe86?<+Mn^_Tw{{tH<[s6Onq;;;{g~v:7яzVv""VU'\yoZ#g!Zs|dY/ sRei:Hb~?8;$MvyWטMl`Y1 q[[[c\ss7HE<:Q.F _QO?˿򵋢hf O4;w՜(⥣}n߾Md$O_|*ϼ^xΩSQ<2j5KoA@& З>P}Ct^yַEQ˵^nM&ΗH__"g~so{|r3{,~Cʲld_ ><6}4Mg86RJ1J4=aZs /rf:gϞի3D"4)xg7A,-MNNTJSǏc<8yصkn*`V\ltd,Kl -r_~wgU,qPoy[0::*U$r̉AIeXFs=򗿼/K(?]2w~cb aÆ BEl8 ;v֭CTc=o~;,L"H`vv?{1Ae_;v9#DZ rYdlu ˨~}>(U%BR xرz|g2,,,P(`ppP|wj,# Z B*811 #'Q/70xORVo#ϗcEuUFSE?6?PP/'I8'g9v`tt1U\30^~ 6`cJ̪Agz:' JS[bq.a1dZ~:_~9|U?eQSbbb{/|^?>,hN#1_"hoo'xD0>&''199[-oy=]J}|ӟ~qw0 |E__7<ꪫZ N͇z"|Y[1|Cb̪b{cTpmCSzZcSQۋBz 7,"&%?~P}{EAXNY,طo>^O=z)޽W_}8 ɞmcccbZ Fegz>G̶[97}UdYSRuϒ$AN8%h*7!0S uH"Z 2hooG\FXD?ZElֺ mm5:ZP(8y zzRضBoXMt)F݄Wk(\Egg'ۇ?K/,p؉:tDM mmmğۇ??_/|IIF>GGEa?'/_j6²׶mo˖- EfQ,( lق|>;=X~rbE㘝E\~i?`/~k>?Oᕯ|%ZҦ|`|Cc0 /yu]۷ GRq<ɿ}LȁA IDATx _ ! ع%_(H` p\# }rPh8= 8z_ÖP4-LhLCy]**cf 7(!DyJ9'JEjD@^٬MaY1x^xLNNI$"W2F_T N<~ЏqʝHƑ#G0<<,/9U$gyYsr\wn*=p=0\6M7݄7Fv.mػw^?CDr,(n1zzzS9f%a@8nuQnjW>\dʇ@I!LC׍sbHZ GlݱJwT؍WB!#l+l6 JؼАnlgՅND[5P*8pBD>lwU?eKD/eՓWVJXdaӦM0 _p,mYQ(DP*Pׇiя.8Y=r8y_^>/5l 梭 ̌hDuzP/~qU.:ɬlQ.q팍.dFeY<fH'&'(CӖ-[+rNL)<\I$;ÏxdF7ފklhbZmgffVIA@.8sW^4O8P(p%CguCE{WWE#hoq\~K=!f砆aR!#A ϳi,Jժ*|]twttDxd*śW}nY_rhȜĚ4LBAtBzzzDb=NE 4Mibm"YhK#Te(k܋\!u2s#YO 0}o{u@GL'ɈJ ?Xz-wcNX{{ ̩8df/"m[2KaIF ˀK輐xjPU vњAطÖ:^U,fulܸ}5QVm63 c8 de _6]N+]i]Dm:ǒFY )q[ qP67hx<T6< p=VmOV \ ~Pyi5 .G"kkɕ|ȦiӔJWVÕlOGh3@֩͘ڳ8N a̚J4Uu/,=) .]W]uՒŵzkͦ،>qhR<-Z>%m!@I/h0#RY[tZ$m27boˍd8~<$ه$9&2'DnAd UP,"j% q#Il 0`( / .3D 9|0 Mz20mneR IX l*t:]7Fqlz@蠭--Xss yf\ <;:: #].|lذ_s^Llt:-ڧS“wǎba/T‚x|l7Jj>4Y BVdqbSqN CV~w~gLHJA=ztt u[T+]ׯ  wM;L&ŸaZ0Pկ$3g@4r4`F=294*5$d nG"XL%6MV^.!W&sЃ 8; rąr+:C*:lXv:E1LLLÞ={D\bQpŨoe)*zzLds5SoظCgr9D k4G^bKNMMR$AGKծjŐQ~>,טiݻ6l@&YNuH A;\q0lYE(?!4R)IjK]21ʲD2gqJ/ftܶm۲Rr u~z rشip}6o,2ؽkdٳqFAY~pEadd]]]bîսr6M7 > 8dBQmn ]] \tQ(^?ю.C ke{wm$ FyYA~/I'9qHf6[~d]7l4m@.fg&63<Yu Th* +*twqWUU9R^s39rdԑv XEJ%[NdԋAn-g)qbkb4xKiyeL5N FR^,OUV73=2k%fQ~%&En&ɟɲ}݇K/rV~uӦM8ob,߾l&z .,1N"M|2fӧt$lA*Cmv ط?rE_>щ|ٰX\e\./9 *^)3>]b!LZ^ >} B 'AZS:ԣaj9˔_tCE}QhEhk\ԫ](i\|7|3OtM@H ,M%ZL&#ǎ[s#DWdg zl&acKx&<=*UW(P*='Z0Y%۶t:ġ0:xއO'B k(yt Y @\}{߲畯|%LOOZ"<,,,{`fU rJkkS!˒ jsqYݧt52IӢ X50!MK-ft]X+&$?jشf_<ܘ'@PAAUu MRIjzǃvx<a Xdlh#HY"K'4 C4Hpӟ_~RV/:#ݨs$VVcgϞU_y睇r,'"|_,Mۃath.gk槻;|_:2 LH&%8FY[2Os΢^]zתEXS.lZM|H\˲$ۿ]cnnSe љIkZ,2ZtZA`z\'q [ Uв(rT!E Df,w܉믿O>VT ===Xn8&''EY[Vpgvo:s9;(dj*0-SFYXzJ!Owq@"@рmۘ? , y5)"d`fBŽr3Q.WP,(mY-2wE0iO,,4?mFY] N! S nY2 M'Do_+7$CQ$RiȲ$ U*EúRQtww^ |5^ߏn RIt[x1 KV-Ocǎ4Ml޼YzEUW]uMILAQtvv.ᙜJM<ꡃTab(Rq ]j|[_\GXBoo>v0!;wHزEE,¨(~@BYtd21A۷oǖ-[077'A ZҙLGGhM-y'W Fxbvv\p)?'q pIlڴi{{3!A̧ҁL& = =鰲`g "5q~զ Cyхx'7^rmJB0 6**IklzA@9(JQkZg5fOLUkp]s} u G"w<$QIܴ|9? QCe/G>`ebذaf^=zwڱc`Y"Q1 b12HJ U0[Vp晻=.z%d)̄0 yE!G8zIRE===K_=ۋYo_23' q @x ltH$ZAY\^wQ@(.~k:EL&~!^ MO%! =yKD =K$.L W'ךi/awpKOv`k"* P$ jBb!C,hXLgu>iZ8eբ{L|$) 2\_B;(PQ. 3ёݬ/i>EѣGpw@=.u,,`)4kUy3H2TGђ=d2hKee GM=:Zm[qľ߅|#@ SSvjúu\Wǝw13[׋Z~X ,@u]ַ,E]b` .=c\&e M&''c tuua``}}}p]w>ϮHYfoxx{޳}?z߾ X `hHqbI'3ݚ@8ti[oef{ 8wW]uzzza*,إ"eW&͛yyetvv Vd{ィkH$PT7qJ n\A#ÞlR@78JgKh0K8WtĄhEB? IDATz3W\!fSSz]oLB*YV#}FSzG.yZUhOyWܴp^t`]?P Cc}4u@ie ;,3p!{%<77'2,lق뮻V|IO?4ߏ=]"-CGg>87o~.x\ۅRp{{M_/>w^'O.awttj%ZwR,)(KH2}jLe2dŃ$yqjבڿخzvx MYB֫w7H($K :lǁa(!HC58NsltJGEQp뭷bϞ=+l'> HK.;wD__'C=ֆWUb5 LLL {Tj jLFOZfggC) Xh"]e"SJ84TB/Ǐ~5#<5 ,XضVg>a o@.[bm۶}ϝ;wbǎkZ7ܹׯs¢T*%M$镛%^#+ʲ^D'|333>a+8}IJ5y!YЭR7\1$ CmTU *#7WKˉs_p5 D.*)] 5|W `!\Y,QoT!KdDJe NT*urJI033r,2={-p饗 CkSPVvrgbKg~_߿;묳7 V2e~ gKܣlVHlU LLL9TX}kiӦ%RU{ ׶mۄ2gAqկ~qUW X 7|3.U+0D]]]F_th x\LRZ}m'O*پLf+g\C=ؕ6(׼f2qRax%Iwȱ4E@C:TneY#Ce[y Nۘ;k^\{3oK&5'ch\r7LC8 TM /HZ۶qhY)>S$[]k."`nnNqŢ`fYp.:EL9KSO<x%w 5>ۚE;:LGGGw {]kh]A\.c8W%g};v<$6mu]Y:oo EEo5'Jur9ڵK6Vf7p,¾} `.>liix1# Y*g}66n܈|Ϟ\tEFŘͬTUtjχeAVBH0 (*RIX,UPpXUa@⃐Nu)mg0H! ,|(N^S:p0EXb-+BUU0==,TE umuPJe( yd2B.CGG&0u&eDT]jdYFWW$ `||wqNJ ȫ]r :::D E9l6+: ZM >Pën[N]I37s?9 <_|1v)t{䛔eyСCFVC.Ö-[fa۶(OW;Uz՚k]7x#:::3>LCln鋯-bj-3^ZI9O>GP@^ 1??/fӶ7!b``@|>u CG@pa2 C/N6Q2T*4|v{t`&IHٹg>& VTP.199)fe8qBL6% ɑ$SD<~VI]]]8sI xx<.|j_uSW_}`0?͡R&Ofx`~Bݻ]ѭr]Wtdr2 c:^8??/=Z0uSUcVT- q%N!<==- L.~-SJEG\.h@ AvQo4i:6f iAQ=%!I@ZT{[ !j~AbGԗtl΅,Ue_=sCDBFH2 K@A%HRi* C %,#BK~к`!;9XLTND5Wؐi\*D{(a-c'E j0 100f)g Wy,$2m"Zհyf$ :tЇ5::3<jUj*&r3R*:_WfffP Y )QSeٝ!3طuK×&ߕJ|leaffF<(Zf &f< 2sF{snA!2{EQD>R$JEx^7ϖZdb{p="[TMC,iib4-Uh4Y*F3xXREIˉ#$ܲ|uM+*<;W~X >;k fd/AUZ vaY*J2,ӀjB nBCaw@%xA&Hklq24 qӓLV!ѮOt!'X, Kk8"̍RjӋ[;1(qFQY\D"4122 /|w[m&:)ҕ.J$>8߅'’,"ZMpI:|0~~tM0+x 9npڋ⽨!dGt.D"!gы6#<̨#%x=-,,= `Z1` f+ hE m15*#`ϪUZ{}8/.<eY./TL n3U↢]ߗj` i1aס$I,+Ԣȓ }}.ƥai}3 E$,lnfLtk}c0Xy06&FŔs("9>E Yt;9~/1De{^f{{{jZt:-$Lr&Nʒ!l6 nf#E DB|7nڨ7ʝạK_;}Eu!aiغu"saif2S8CUcfh$N:Yiu$G0ٺİN~DDQGyd)4H# 3[U-3u of5muvvàUUayv؁gCm`Y;-,h((9XӰR48y!zXEl>hs0 OfQ_8 lAj9dAA-HD2@AH8@T@TE.I,$ôtSq4*?gqI y_7uċ_Kyj eXZ\6~)7zx nLC㺐$ix b[z H@@5 Ӳ`1j)3"z&g89FH*"3 bd5'T*$a<̞ @[[\LI WrYF@`8R;2 cE1l>7壪.bS£%7%ilZ0D.M]k /S0#3cqrY6dŤ@&0Cxt$$Li;PUz n08dYAp!tEUa*&x ],PTCQ$hTWUW3swG]*? '&Ƽ} 0MR!ᄍ(E9j-7 ퟸӕmn[[\UwVj6LJ0a*l;PU ߄*PB[Hˊ2"LAS؎rT*8ҥ51L0t&)#\3󽽽lb̐dlIp \ حkaP>bDDHìqTUR(000 0/v:;;)kYHgAО=e`fy֭[&c;=`#ޜi~܆".jʌe ȱX JEQ?e6hAJ"DIu x|p셙# 8 Ma\kCC,Bp]UO"Zd'AeYQ >B?$ "eҳRW>w;tR-'ɛ9?/_[^oph%(RTn~JeYוa]nJ%]n;!A2CX!Pn Ae4 $H/uÇKH$08b1''J mm1" ufl6kZ'-y* Itt(m)!إR ۷o|O,Wx%~fLͦлMMM R4MѱYɦZ ~~G)arrrnܸqSY!; θyZ *2JJs&rb8,hFQT TJmQeIu]`MMM [ bI-JiOUQBAހ{h4lJ^!̀pEef+7tEtEmxOT H$PIa2Xibx-) n٬c~~ ssb\0e 4tbr!…FŅ:]_C׵%th{T$r9REf,L4Mͺaa! ,4& ޲e ~闼3:Pgg-Y:rbiB:Ɲw޹Z83%Z߇ g')!tsϩh qbW|(}===( KľpՑiσkÆ Zˏ-H3P5R j}hnhzZ(0i&p$(+@--"C$fac|c3ӥW/x@F5NsLdv0u/ 0/pKN=xm@al쨼axSQ!Ber,-T%@2M/ q0}Z_>z.981Qlvp|?=}A%Z>/ 2ob5>y/+V\ B=O~tj躪$ʕ._)ʖ0Fb Y!+nn!\O -nZ TM(J TQ8p<^֯iz ZS1-ҧܖVkitNc.N [,W*ONJXUJ`B43vah.3nԮ.1mo{۲v_җp7c׮]򑏼D޴i uu]cv,iJaGGǢg}Ѿjfff ) Zɠ/)CحJB\\iU HP5a3'ׇ UA /id(,VjKT4ȱj*>A Bt _^BR r#Wʒ~0l׳,Kؽ{7Ǘm?^MoYg%|Xj5<쳸뮻#s饗Kf0TXf13M\N^5 LNNbhhcbbi HXPMii`sVypW`:Bq,> `;. cqvT* ?\/X`yq%۱u4>BH5]myOh:T_CRB%hUU]7 ɀa&aI*Wʎ-+Z׃TilT,~pW(Y+ 3ˠsFһ9_Y5Cr&BlJ$eUe{e7bp*wjuA+},$&zϓhu/a ˋ+iTXj@\c1Mt'ONDQB2X~d3- h P5Z~f)K($IgHP 8IDAT]q011!|8~^{-rj5|_w­t Uz:::mV"Hveɂz}DqPlPݥx%Ja||b#BInmnU3yIr+#q[J E)/D:;;Ѝ$l'Dauv\Ȳ!d?DZH P5c-gE6e: ai.{ DAf%I*t:~/,_}?,Eym\{与3ֹwϥgfErI,*2,Pq? 0@ J,[fLZ%mr/3;}9|8# N rY`-vOU[_'?{y6Ĉ=ڎ._K0+Z捐{1?W}(?q<9Pfjj@H92]`+t1I~^)~X.BB: e2 Gj6 D _ۉ>"jlp<uzSYqrrrhvNG}7oo%CDq]ܸq0zIT73 EsD$LD-A&gx=s4 ]0-j13x2 SkĔE4cУ1-NzH: 1TR ) V0Ѷe T9ӓv3o]r.Kc|;l2c,yw8xrΌsFD }?; K59qAO҇1T {\8R3A@WŴ,~&T /~Ub@頹1" FICe"g$C)5rzcn0}|1G O>f0B~Nv N,Z717^ÿx2pB 9 WW5F"#mRh- cBG )$>8J7o" *e' c$B!gBoBpë>slgHh[nz"10**ovJIv-RhV+EX.3Rzscjl6GK %%u r  ˜ZW8: 4+Tu )bh(z88GX.;V /~e*=+%l}rR`HJ?/]R95K)r8<Et)S'V)gB|g78}R*imv)-C,^ ߡ7?. D]!#ys0Wm3 C3e?Z#{j\.+ }@Fp!n HO bȞGFGL|r!Zʃx }V~PR{Цuazwvc5B;)Xbuo/ga:ﻆ1R1!d(k}[p]qV(Zk(|Xb2}BAؠ#Xyv߂v/i7 ֺY[(1*xg|BR.@l܇ *m H1#&󒰔2JBZSIjx-be -Z0>C+.؋qj{!x9ӿ1&/R~;`99m a K !Hu߉>|E9&xbJ B1%yA+NVFVڮٻw#%Y5k䴱fucQNobULƈp΀ȯKj~Cá)'QS(3FH1KIΏĤ,tB*HQp5ppuqvF3SO,{~7nG<|ݶWg:uuqy}&Tauն^JiWURJsit?m`D(m_|3\0= !@(1q\S\nѶ{cZ+8^.(\ бuhS2\fDr{iVMSN:b : ^U]Ikv\gUUrHI)Dg]gmz"8)u ;g6zz!V)j%~~X<~4f]O䕑 b6D!$NdD;4rlMuſ#>IENDB`oregano-0.84.41/src/pixmaps/tool_text.xpm0000644000175000017500000000115613413640652017360 0ustar rubenruben/* 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.........", "....................", "....................", "...................." }; oregano-0.84.41/src/pixmaps/log.xpm0000644000175000017500000000122113413640652016111 0ustar rubenruben/* XPM */ static char * log_xpm[] = { "16 16 2 2", " c None", ". c #000000", " ", " . . . . . . . . . . . ", " ", " . . . . . . . . . . . ", " ", " . . . . . . . . . . . ", " ", " . . . . . . . . . ", " ", " . . . . . . . . . . . . . ", " ", " . . . . . . . . . . . . ", " ", " . . . . . . . . . ", " ", " "}; oregano-0.84.41/src/pixmaps/menu_zoom.xcf0000644000175000017500000000215113413640652017317 0ustar rubenrubengimp xcf fileBBG_ Pasted Layer     $4 06/J&>' 2 4'%  06/J&>' 2 4'%  06/J&>' 2 4'%  #+#  ,5, z(1'NQW=$)!6ywp` ',"SYhr}yi-1&l31F_wzy'+!-CWh 5%9? 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 ", " c #964537", ", c #EF825B", " ", " .............. ", " .+@@@@@@@#+@#. ", " .$$$$$$$$$$$$. ", " .%&%&%&%&%&%&. ", " .&*&*=*&*&*&-. ", " .%&*;>,*&*&;&. ", " .&*;,>;,*&*;-. ", " .%;,&=&;&*;,&. ", " .&;&*=*;,&;,-. ", " .%======>>>=&. ", " .&*&*=*&;&;&-. ", " .%&*&=&*,;&*&. ", " .&-&-&-&-&-&-. ", " .............. ", " "}; oregano-0.84.41/src/pixmaps/tool_arrow.xpm0000644000175000017500000000076513413640652017533 0ustar rubenruben/* XPM */ static char * tool_arrow_xpm[] = { "16 20 3 1", " c None", ". c #000000", "+ c #FFFFFF", " ", " . ", " .. ", " ... ", " .... ", " ..... ", " ...... ", " ....... ", " ........ ", " ..... ", " .. .. ", " . .. ", " .. ", " .. ", " .. ", " ", " ", " ", " ", " "}; oregano-0.84.41/src/pixmaps/plot.xpm0000644000175000017500000000221613413640652016313 0ustar rubenruben/* 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 ", " . "}; oregano-0.84.41/src/engines/0000755000175000017500000000000013413640652014555 5ustar rubenrubenoregano-0.84.41/src/engines/ngspice.c0000644000175000017500000003651713413640652016365 0ustar rubenruben/* * ngspice.c * * Authors: * Ricardo Markiewicz * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include "ngspice.h" #include "netlist-helper.h" #include "dialogs.h" #include "engine-internal.h" #include "ngspice-analysis.h" #include "errors.h" #include "ngspice-watcher.h" static void ngspice_class_init (OreganoNgSpiceClass *klass); static void ngspice_finalize (GObject *object); static void ngspice_dispose (GObject *object); static void ngspice_instance_init (GTypeInstance *instance, gpointer g_class); static void ngspice_interface_init (gpointer g_iface, gpointer iface_data); static GObjectClass *parent_class = NULL; 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 (GClassInitFunc)ngspice_class_init, // class_init NULL, // class_finalize NULL, // class_data sizeof(OreganoNgSpice), 0, // n_preallocs (GInstanceInitFunc)ngspice_instance_init, // instance_init NULL}; 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 void ngspice_class_init (OreganoNgSpiceClass *klass) { GObjectClass *object_class; parent_class = g_type_class_peek_parent (klass); object_class = G_OBJECT_CLASS (klass); object_class->dispose = ngspice_dispose; object_class->finalize = ngspice_finalize; } static void ngspice_finalize (GObject *object) { OreganoNgSpice *ngspice; GList *iter; int i; ngspice = OREGANO_NGSPICE (object); iter = ngspice->priv->analysis; for (; iter; iter = iter->next) { SimulationData *data = SIM_DATA (iter->data); for (i = 0; i < data->n_variables; i++) { g_free(data->var_names[i]); g_free(data->var_units[i]); g_array_free (data->data[i], TRUE); } g_free (data->var_names); g_free (data->var_units); g_free (data->data); g_free (data->min_data); g_free (data->max_data); g_free (data); } g_list_free (ngspice->priv->analysis); g_mutex_clear(&ngspice->priv->progress_ngspice.progress_mutex); g_mutex_clear(&ngspice->priv->progress_reader.progress_mutex); g_mutex_clear(&ngspice->priv->current.mutex); cancel_info_unsubscribe(ngspice->priv->cancel_info); g_free(ngspice->priv); parent_class->finalize (object); } static void ngspice_dispose (GObject *object) { parent_class->dispose (object); } static gboolean ngspice_has_warnings (OreganoEngine *self) { return FALSE; } static gboolean ngspice_is_available (OreganoEngine *self) { gboolean is_vanilla; gchar *exe; OreganoNgSpice *ngspice = OREGANO_NGSPICE (self); is_vanilla = ngspice->priv->is_vanilla; if (is_vanilla) exe = g_find_program_in_path (SPICE_EXE); else exe = g_find_program_in_path (NGSPICE_EXE); if (!exe) return FALSE; // ngspice not found g_free (exe); return TRUE; } /** * \brief create a netlist buffer from the engine inernals * * @engine * @error [allow-none] */ static GString *ngspice_generate_netlist_buffer (OreganoEngine *engine, GError **error) { OreganoNgSpice *ngspice; Netlist output; GList *iter; GError *e = NULL; GString *buffer = NULL; ngspice = OREGANO_NGSPICE (engine); netlist_helper_create (ngspice->priv->schematic, &output, &e); if (e) { g_propagate_error (error, e); return NULL; } buffer = g_string_sized_new (500); if (!buffer) { g_set_error_literal (&e, OREGANO_ERROR, OREGANO_OOM, "Failed to allocate intermediate buffer."); g_propagate_error (error, e); return NULL; } // Prints title g_string_append (buffer, "* "); g_string_append (buffer, output.title ? output.title : "Title: "); g_string_append (buffer, "\n" "*----------------------------------------------" "\n" "*\tngspice - NETLIST" "\n"); // Prints Options g_string_append (buffer, ".options OUT=120 "); iter = sim_settings_get_options (output.settings); for (; iter; iter = iter->next) { const SimOption *so = iter->data; // Prevent send NULL text if (so->value) { if (strlen (so->value) > 0) { g_string_append_printf (buffer, "%s=%s ", so->name, so->value); } } } g_string_append_c (buffer, '\n'); // Include of subckt models g_string_append (buffer, "*------------- Models -------------------------\n"); for (iter = output.models; iter; iter = iter->next) { const gchar *model = iter->data; gchar *model_with_ext = g_strdup_printf ("%s.model", model); gchar *model_path = g_build_filename (OREGANO_MODELDIR, model_with_ext, NULL); g_string_append_printf (buffer, ".include %s\n", model_path); g_free (model_path); g_free (model_with_ext); } // Prints template parts g_string_append (buffer, "*------------- Circuit Description-------------\n"); g_string_append (buffer, output.template->str); g_string_append (buffer, "\n*----------------------------------------------\n"); // Prints Transient Analysis if (sim_settings_get_trans (output.settings)) { gdouble st = 0; gdouble start = sim_settings_get_trans_start (output.settings); gdouble stop = sim_settings_get_trans_stop (output.settings); if (sim_settings_get_trans_step_enable (output.settings)) st = sim_settings_get_trans_step (output.settings); else st = (stop - start) / 50; if ((stop - start) <= 0) { // FIXME ask for swapping or cancel simulation oregano_error (_ ("Transient: Start time is after Stop time - fix this." "stop figure\n")); g_string_free (buffer, TRUE); return NULL; } g_string_append_printf (buffer, ".tran %e %e %e", st, stop, start); if (sim_settings_get_trans_init_cond (output.settings)) { g_string_append_printf (buffer, " uic"); } g_string_append_printf (buffer, "\n"); if (sim_settings_get_trans_analyze_all(output.settings)) { g_string_append_printf (buffer, ".print tran all\n"); } else { gchar *tmp_str = netlist_helper_create_analysis_string (output.store, FALSE); g_string_append_printf (buffer, ".print tran %s\n", tmp_str); g_free (tmp_str); } g_string_append_c (buffer, '\n'); } // Prints DC Analysis if (sim_settings_get_dc (output.settings)) { g_string_append (buffer, ".dc "); if (sim_settings_get_dc_vsrc (output.settings)) { g_string_append_printf (buffer, "V_%s %g %g %g\n", sim_settings_get_dc_vsrc (output.settings), sim_settings_get_dc_start (output.settings), sim_settings_get_dc_stop (output.settings), sim_settings_get_dc_step (output.settings)); g_string_append_printf (buffer, ".print dc V(%s)\n", sim_settings_get_dc_vout (output.settings)); } } // Prints AC Analysis if (sim_settings_get_ac (output.settings)) { if (sim_settings_get_ac_vout (output.settings)) { g_string_append_printf (buffer, ".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)); g_string_append_printf (buffer, ".print ac %s\n", sim_settings_get_ac_vout (output.settings)); } } // Prints analysis using a Fourier transform if (sim_settings_get_fourier (output.settings)) { if (sim_settings_get_fourier_frequency (output.settings) && sim_settings_get_fourier_nodes (output.settings)) { g_string_append_printf (buffer, ".four %.3f %s\n", sim_settings_get_fourier_frequency (output.settings), sim_settings_get_fourier_nodes (output.settings)); } } // Prints Noise Analysis if (sim_settings_get_noise (output.settings)) { if (sim_settings_get_noise_vout (output.settings)) { g_string_append_printf (buffer, ".noise V(%s) V_%s %s %d %g %g\n", sim_settings_get_noise_vout (output.settings), sim_settings_get_noise_vsrc (output.settings), sim_settings_get_noise_type (output.settings), sim_settings_get_noise_npoints (output.settings), sim_settings_get_noise_start (output.settings), sim_settings_get_noise_stop (output.settings)); g_string_append (buffer, ".print noise inoise_spectrum onoise_spectrum\n"); } } g_string_append (buffer, ".op\n\n.END\n"); return buffer; } /** * \brief generate a netlist and write to file * * @engine engine to extract schematic and settings from * @filename target netlist file, user selected * @error [allow-none] */ static gboolean ngspice_generate_netlist (OreganoEngine *engine, const gchar *filename, GError **error) { GError *e = NULL; GString *buffer; gboolean success = FALSE; buffer = ngspice_generate_netlist_buffer (engine, &e); if (!buffer) { oregano_error (g_strdup_printf ("Failed generate netlist buffer\n")); g_propagate_error (error, e); return FALSE; } success = g_file_set_contents (filename, buffer->str, buffer->len, &e); g_string_free (buffer, TRUE); if (!success) { g_propagate_error (error, e); oregano_error (g_strdup_printf ("Failed to open file \"%s\" in 'w' mode.\n", filename)); return FALSE; } return TRUE; } static void ngspice_progress (OreganoEngine *self, double *d) { OreganoNgSpice *ngspice = OREGANO_NGSPICE (self); g_mutex_lock(&ngspice->priv->progress_ngspice.progress_mutex); *d = ngspice->priv->progress_ngspice.progress; g_mutex_unlock(&ngspice->priv->progress_ngspice.progress_mutex); } static void reader_progress (OreganoEngine *self, double *d) { OreganoNgSpice *ngspice = OREGANO_NGSPICE (self); g_mutex_lock(&ngspice->priv->progress_reader.progress_mutex); *d = ngspice->priv->progress_reader.progress; g_mutex_unlock(&ngspice->priv->progress_reader.progress_mutex); } static void ngspice_stop (OreganoEngine *self) { OreganoNgSpice *ngspice = OREGANO_NGSPICE (self); cancel_info_set_cancel(ngspice->priv->cancel_info); GPid child_pid = ngspice->priv->child_pid; if (child_pid != 0) { // CTRL+C (Terminal quit signal.) kill(child_pid, SIGINT); ngspice->priv->child_pid = 0; } } static void ngspice_start (OreganoEngine *self) { OreganoNgSpice *ngspice = OREGANO_NGSPICE (self); OreganoNgSpicePriv *priv = ngspice->priv; GError *e = NULL; if (!oregano_engine_generate_netlist (self, "/tmp/netlist.tmp", &e)) { priv->aborted = TRUE; if (e) schematic_log_append_error (priv->schematic, e->message); else schematic_log_append_error(priv->schematic, "Error at netlist generation."); g_signal_emit_by_name (G_OBJECT (ngspice), "aborted"); g_clear_error (&e); return; } NgspiceWatcherBuildAndLaunchResources *resources = ngspice_watcher_build_and_launch_resources_new(ngspice); ngspice_watcher_build_and_launch(resources); ngspice_watcher_build_and_launch_resources_finalize(resources); } static GList *ngspice_get_results (OreganoEngine *self) { if (OREGANO_NGSPICE (self)->priv->analysis == NULL) printf ("pas d'analyse\n"); return OREGANO_NGSPICE (self)->priv->analysis; } static gchar *ngspice_get_operation_ngspice (OreganoEngine *self) { OreganoNgSpicePriv *priv = OREGANO_NGSPICE (self)->priv; g_mutex_lock(&priv->progress_ngspice.progress_mutex); gint64 old_time = priv->progress_ngspice.time; g_mutex_unlock(&priv->progress_ngspice.progress_mutex); gint64 new_time = g_get_monotonic_time(); if (new_time - old_time >= 1000000) return g_strdup("ngspice not responding"); return g_strdup(_("ngspice solving")); } static gchar *ngspice_get_operation_reader (OreganoEngine *self) { OreganoNgSpicePriv *priv = OREGANO_NGSPICE (self)->priv; g_mutex_lock(&priv->current.mutex); AnalysisType type = priv->current.type; g_mutex_unlock(&priv->current.mutex); return oregano_engine_get_analysis_name_by_type(type); } 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_solver = ngspice_progress; klass->progress_reader = reader_progress; klass->get_netlist = ngspice_generate_netlist; klass->has_warnings = ngspice_has_warnings; klass->get_results = ngspice_get_results; klass->get_operation_solver = ngspice_get_operation_ngspice; klass->get_operation_reader = ngspice_get_operation_reader; 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); self->priv->progress_ngspice.progress = 0.0; self->priv->progress_ngspice.time = g_get_monotonic_time(); g_mutex_init(&self->priv->progress_ngspice.progress_mutex); self->priv->progress_reader.progress = 0.0; self->priv->progress_reader.time = g_get_monotonic_time(); g_mutex_init(&self->priv->progress_reader.progress_mutex); self->priv->current.type = ANALYSIS_TYPE_NONE; g_mutex_init(&self->priv->current.mutex); self->priv->num_analysis = 0; self->priv->analysis = NULL; self->priv->aborted = FALSE; self->priv->cancel_info = cancel_info_new(); } /* * Set "is_vanilla" to TRUE if using the original spice3 from * UC Berkeley. */ OreganoEngine *oregano_spice_new (Schematic *sc, gboolean is_vanilla) { OreganoNgSpice *ngspice; ngspice = OREGANO_NGSPICE (g_object_new (OREGANO_TYPE_NGSPICE, NULL)); ngspice->priv->schematic = sc; ngspice->priv->is_vanilla = is_vanilla; return OREGANO_ENGINE (ngspice); } oregano-0.84.41/src/engines/engine-internal.h0000644000175000017500000000466613413640652020021 0ustar rubenruben/* * engine-internal.h * * Authors: * Ricardo Markiewicz * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __ENGINE_INTERNAL_H #define __ENGINE_INTERNAL_H 1 #include #include "sim-settings.h" #include "schematic.h" #include "simulation.h" #define OREGANO_TYPE_ENGINE (oregano_engine_get_type ()) #define OREGANO_ENGINE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), OREGANO_TYPE_ENGINE, OreganoEngineClass)) #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 _OreganoEngineClass OreganoEngineClass; struct _OreganoEngineClass { GTypeInterface parent; void (*start)(OreganoEngine *engine); void (*stop)(OreganoEngine *engine); void (*progress_solver)(OreganoEngine *engine, double *p); void (*progress_reader)(OreganoEngine *engine, double *p); gboolean (*get_netlist)(OreganoEngine *engine, const gchar *sm, GError **error); GList *(*get_results)(OreganoEngine *engine); gchar *(*get_operation_solver)(OreganoEngine *engine); gchar *(*get_operation_reader)(OreganoEngine *engine); gboolean (*has_warnings)(OreganoEngine *engine); gboolean (*is_available)(OreganoEngine *engine); // Signals void (*done)(); void (*abort)(); }; #endif oregano-0.84.41/src/engines/gnucap.h0000644000175000017500000000422613413640652016207 0ustar rubenruben/* * engine.c * * Authors: * Ricardo Markiewicz * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __GNUCAP_ENGINE #define __GNUCAP_ENGINE #include #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 oregano-0.84.41/src/engines/ngspice-analysis.h0000644000175000017500000000564113413640652020205 0ustar rubenruben/* * ngspice-analysis.h * * Authors: * Ricardo Markiewicz * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __NGSPICE_ANALYSIS_H #define __NGSPICE_ANALYSIS_H #include #include #include #include #include #include "../tools/thread-pipe.h" #include "../tools/cancel-info.h" #include "ngspice.h" #include "netlist-helper.h" #include "dialogs.h" #include "engine-internal.h" #include "ngspice.h" /* * The file buffer size (recommended value * is 512 bytes). */ #define BSIZE_SP 512 /** * Progress is a shared variable between GUI thread * that displays the progress bar and working thread * which executes the heavy work. */ typedef struct { gdouble progress; // time (from g_get_monotonic_time) of the last writing access gint64 time; GMutex progress_mutex; } ProgressResources; /** * AnalysisType is a shared variable between progress * bar displaying GUI thread and the working thread. */ typedef struct { AnalysisType type; GMutex mutex; } AnalysisTypeShared; typedef struct { ThreadPipe *pipe; gchar *buf; gboolean is_vanilla; const SimSettings* sim_settings; AnalysisTypeShared *current; GList **analysis; guint *num_analysis; ProgressResources *progress_reader; guint64 no_of_data_rows_ac; guint64 no_of_data_rows_dc; guint64 no_of_data_rows_op; guint64 no_of_data_rows_transient; guint64 no_of_data_rows_noise; guint no_of_variables; CancelInfo *cancel_info; } NgspiceAnalysisResources; // Parser STATUS struct _OreganoNgSpicePriv { gboolean is_vanilla; GPid child_pid; Schematic *schematic; gboolean aborted; CancelInfo *cancel_info; GList *analysis; guint num_analysis; AnalysisTypeShared current; ProgressResources progress_ngspice; ProgressResources progress_reader; }; void ngspice_analysis (NgspiceAnalysisResources *resources); void ngspice_save (const gchar *path_to_file, ThreadPipe *pipe, CancelInfo *cancel_info); #endif oregano-0.84.41/src/engines/netlist-helper.c0000644000175000017500000004637113413640652017673 0ustar rubenruben/* * netlist-helper.c * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include "oregano.h" #include "schematic.h" #include "node-store.h" #include "node.h" #include "wire.h" #include "part-private.h" #include "part-property.h" #include "netlist-helper.h" #include "errors.h" #include "dialogs.h" #include "debug.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 netlist_helper_foreach_model_free (gpointer key, gpointer model, gpointer user_data); static gboolean netlist_helper_foreach_model_save (gpointer key, gpointer model, gpointer user_data); static char *netlist_helper_linebreak (char *str); static void netlist_helper_nl_node_traverse (Node *node, GSList **lst); static void netlist_helper_nl_wire_traverse (Wire *wire, GSList **lst) { GSList *iter; GSList *iter2; 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 (iter = wire_get_nodes (wire); iter; iter = iter->next) { Node *node = iter->data; for (iter2 = node->pins; iter2; iter2 = iter2->next) { Pin *pin = iter2->data; Part *part = PART (pin->part); char *template, *tmp; char **template_split; tmp = part_get_property (part, "template"); if (!tmp) continue; template = part_property_expand_macros (part, tmp); template_split = g_strsplit (template, " ", 0); if (template_split[0] != NULL) (*lst) = g_slist_prepend (*lst, g_strdup (template_split[0])); g_strfreev (template_split); g_free (tmp); g_free (template); } netlist_helper_nl_node_traverse (node, lst); } } static void netlist_helper_nl_node_traverse (Node *node, GSList **lst) { GSList *iter; 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 (iter = node->wires; iter; iter = iter->next) { Wire *wire = iter->data; netlist_helper_nl_wire_traverse (wire, lst); } } /** * traverses the netlist and picks up all clamp type parts * * TODO this is part of the "logic" that determines which "nodes" (or V levels) * TODO will be plotted (or: not discarded) * * @returns a list of parts whose type is clamp */ static GSList *netlist_helper_get_clamp_parts (NodeStore *store, Node *node) { GList *iter; GSList *iter2; Wire *wire; GSList *ret = NULL; if (!node) return NULL; node_store_node_foreach (store, (GHFunc *)netlist_helper_node_foreach_reset, NULL); for (iter = store->wires; iter; iter = iter->next) { wire = iter->data; wire_set_visited (wire, FALSE); } for (iter2 = node->wires; iter2; iter2 = iter2->next) { wire = iter2->data; netlist_helper_nl_wire_traverse (wire, &ret); } 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 *iter; 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 (iter = wire_get_nodes (wire); iter; iter = iter->next) { Node *node = iter->data; netlist_helper_node_traverse (node, data); } } void netlist_helper_node_traverse (Node *node, NetlistData *data) { GSList *iter; gchar *prop; NodeAndNumber *nan; g_return_if_fail (node != NULL); g_return_if_fail (IS_NODE (node)); g_return_if_fail (data != NULL); 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 (iter = node->pins; iter; iter = iter->next) { Pin *pin = iter->data; // First see if the pin belongs to an "internal", special part. prop = part_get_property (pin->part, "internal"); if (prop) { if (!g_ascii_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_ascii_strcasecmp (prop, "ground") == 0) { data->gnd_list = g_slist_prepend (data->gnd_list, GINT_TO_POINTER (data->node_nr)); } else if (g_ascii_strcasecmp (prop, "clamp") == 0) { data->clamp_list = g_slist_prepend (data->clamp_list, GINT_TO_POINTER (data->node_nr)); } 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 (iter = node->wires; iter; iter = iter->next) { Wire *wire = iter->data; netlist_helper_wire_traverse (wire, data); } } void netlist_helper_node_foreach_traverse (gpointer key, gpointer value, NetlistData *data) { Node *node = value; g_return_if_fail (data != NULL); // 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 netlist_helper_foreach_model_save (gpointer key, gpointer model, gpointer user_data) { GList **l = user_data; (*l) = g_list_prepend (*l, g_strdup ((gchar *)key)); return TRUE; } gboolean netlist_helper_foreach_model_free (gpointer key, gpointer model, gpointer user_data) { g_free (key); return FALSE; } char *netlist_helper_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 update_schematic(Schematic *sm) { char *version = schematic_get_version(sm); if (version == NULL) { NodeStore *store = schematic_get_store(sm); for (GList *iter = store->parts; iter; iter = iter->next) { int node_ctr = 1; Part *part = iter->data; update_connection_designators(part, part_get_property_ref(part, "template"), &node_ctr); } } schematic_set_version(sm, VERSION); return; } // FIXME this one piece of ugly+bad code void netlist_helper_create (Schematic *sm, Netlist *out, GError **error) { NetlistData data; GList *iter; Part *part; gint pin_nr, num_nodes, num_gnd_nodes, i, j, num_clamps; Pin *pins; gchar *template, **template_split; NodeStore *store; gchar **node2real; 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 (iter = store->wires; iter; iter = iter->next) { Wire *wire = iter->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) { g_set_error (error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_GND, _ ("At least one GND is required. Add at least one and try again.")); } else if (num_clamps == 0) { // FIXME put a V/I clamp on each and every subtree // FIXME and let the user toggle visibility in the plot window // FIXME see also TODO/FIXME above g_set_error (error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_CLAMP, _ ("No test clamps found. Add at least one and try again.")); } else { 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 + 1); node2real[num_nodes + 1] = NULL; // so we can use g_strfreev 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 (iter = data.node_and_number_list; iter; iter = iter->next) { NodeAndNumber *nan = iter->data; if (nan->node_nr > 0) { g_free (nan->node->netlist_node_name); nan->node->netlist_node_name = g_strdup (node2real[nan->node_nr]); } } // Initialize out->template out->template = g_string_new (""); for (iter = store->parts; iter; iter = iter->next) { part = iter->data; gchar *tmp, *internal; GString *str; internal = part_get_property (part, "internal"); if (internal != NULL) { gint node_nr; Pin *pins; if (g_ascii_strcasecmp (internal, "clamp") != 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 ("Couldn't find part, pin_nr %d.", 0); } else { // 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); NG_DEBUG ("Template: '%s'\n" "macro : '%s'\n", tmp, template); g_free (tmp); tmp = netlist_helper_linebreak (template); g_free (template); template = tmp; pins = part_get_pins (part); GRegex *regex; GMatchInfo *match_info; GError *error = NULL; regex = g_regex_new("%\\d*", 0, 0, NULL); g_regex_match_full(regex, template, -1, 0, 0, &match_info, &error); template_split = g_regex_split(regex, template, 0); str = g_string_new (""); NG_DEBUG ("Reading pins.\n)"); int i; for (i = 0; g_match_info_matches(match_info); i++) { g_string_append (str, template_split[i]); gchar *word = g_match_info_fetch(match_info, 0); pin_nr = g_ascii_strtoll(word + 1, NULL, 10) - 1; gint node_nr = 0; node_nr = GPOINTER_TO_INT (g_hash_table_lookup (data.pins, &pins[pin_nr])); if (!node_nr) { g_set_error (&error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_SUCH_PART, _ ("Could not find part in library, pin #%d."), pin_nr); return; // FIXME wtf?? this leaks like hell and did for ages! } 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); NG_DEBUG ("str: %s\n", str->str); } g_free(word); g_match_info_next(match_info, NULL); } g_match_info_free(match_info); g_free (template); template = NULL; g_regex_unref(regex); if (template_split[i] != NULL) { g_string_append (str, template_split[i]); } g_strfreev (template_split); if (error != NULL) { g_printerr("Error while matching: %s\n", error->message); g_error_free(error); } NG_DEBUG ("Done with pins, i = %d\n", i); NG_DEBUG ("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); } g_strfreev (node2real); g_hash_table_foreach (data.models, (GHFunc)netlist_helper_foreach_model_save, &out->models); return; } g_hash_table_foreach (data.models, (GHFunc)netlist_helper_foreach_model_free, NULL); g_hash_table_destroy (data.models); g_hash_table_destroy (data.pins); g_list_free_full (data.node_and_number_list, (GDestroyNotify)g_free); } char *netlist_helper_create_analysis_string (NodeStore *store, gboolean do_ac) { GList *iter; Part *part; gchar *prop; GString *out; gchar *ret; out = g_string_new (""); for (iter = node_store_get_parts (store); iter; iter = iter->next) { part = iter->data; prop = part_get_property (part, "internal"); if (prop) { if (!g_ascii_strcasecmp (prop, "clamp")) { Pin *pins = part_get_pins (part); prop = part_get_property (part, "type"); if (!g_ascii_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 (part, "ac_type"); ac_db = part_get_property (part, "ac_db"); if (!g_ascii_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; Coords lookup_key; Coords part_pos; item_data_get_pos (ITEM_DATA (part), &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, *iter; iter = lst = netlist_helper_get_clamp_parts (store, node); for (; iter; iter = iter->next) { g_string_append_printf (out, " i(%s)", (char *)iter->data); } g_slist_free_full (lst, g_free); // need to free this, we are owning it! } } } g_free (prop); } } ret = out->str; g_string_free (out, FALSE); return ret; } GSList *netlist_helper_get_voltmeters_list (Schematic *sm, GError **error, gboolean with_type) { Netlist netlist_data; GError *e = NULL; GSList *clamp_list = NULL; NodeStore *node_store; GList *iter; gchar *prop; Part *part; Pin *pins; gint i; gchar *ac_type, *ac_db, *tmp; netlist_helper_create (sm, &netlist_data, &e); if (e) { g_propagate_error (error, e); return NULL; } node_store = netlist_data.store; for (iter = node_store_get_parts (node_store); iter; iter = iter->next) { part = iter->data; prop = part_get_property (part, "internal"); if (prop) { if (!g_ascii_strcasecmp (prop, "clamp")) { g_free (prop); prop = part_get_property (part, "type"); if (!g_ascii_strcasecmp (prop, "v")) { pins = part_get_pins (part); if (with_type) { ac_type = part_get_property(part, "ac_type"); ac_db = part_get_property(part, "ac_db"); i = 0; while (ac_type[i]) { ac_type[i] = g_ascii_toupper(ac_type[i]); i++; } if (!g_strcmp0(ac_db, "true")) tmp = g_strdup_printf ("VDB(%d)", pins[0].node_nr); else tmp = g_strdup_printf ("V%s(%d)", ac_type, pins[0].node_nr); g_free(ac_type); g_free(ac_db); } else { tmp = g_strdup_printf ("%d", pins[0].node_nr); } clamp_list = g_slist_prepend (clamp_list, tmp); if (0) printf ("clamp_list = %s\n", tmp); } } g_free(prop); } } if (0) { clamp_list = g_slist_prepend (clamp_list, "3"); clamp_list = g_slist_prepend (clamp_list, "2"); clamp_list = g_slist_prepend (clamp_list, "1"); } if (0) { GSList *slist = NULL; gchar *text = NULL; slist = g_slist_copy (clamp_list); text = g_strdup_printf ("V(%d)", atoi (slist->data)); slist = slist->next; while (slist) { text = g_strdup_printf ("%s V(%d)", text, atoi (slist->data)); slist = slist->next; } if (0) printf ("clamp_list = %s\n", text); } return clamp_list; } GSList *netlist_helper_get_voltage_sources_list (Schematic *sm, GError **error, gboolean ac_only) { Netlist netlist_data; GError *e = NULL; GSList *sources_list = NULL; NodeStore *node_store; GList *iter; gchar *prop; Part *part; netlist_helper_create (sm, &netlist_data, &e); if (e) { g_propagate_error (error, e); return NULL; } node_store = netlist_data.store; for (iter = node_store_get_parts (node_store); iter; iter = iter->next) { part = iter->data; prop = part_get_property (part, "Refdes"); if (prop) { if (prop[0] == 'V' && (prop[1] >= '0' && prop[1] <= '9')) { gchar *tmp; tmp = g_strdup (&prop[1]); if (ac_only) { g_free(prop); prop = part_get_property (part, "Frequency"); if (prop) sources_list = g_slist_append (sources_list, tmp); } else { sources_list = g_slist_append (sources_list, tmp); } if (0) printf ("sources_list = %s\n", tmp); } g_free(prop); } } return sources_list; } oregano-0.84.41/src/engines/netlist-helper.h0000644000175000017500000000442313413640652017670 0ustar rubenruben/* * netlist-helper.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2010 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __NETLIST_HELPER_H #define __NETLIST_HELPER_H #include #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 update_schematic(Schematic *sm); void netlist_helper_init_data (NetlistData *data); void netlist_helper_create (Schematic *sm, Netlist *out, GError **error); char *netlist_helper_create_analysis_string (NodeStore *store, gboolean do_ac); GSList *netlist_helper_get_voltmeters_list (Schematic *sm, GError **error, gboolean with_type); GSList *netlist_helper_get_voltage_sources_list (Schematic *sm, GError **error, gboolean ac_only); #endif oregano-0.84.41/src/engines/ngspice.h0000644000175000017500000000517313413640652016364 0ustar rubenruben/* * ngspice.h * * Authors: * Ricardo Markiewicz * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __NGSPICE_H #define __NGSPICE_H /* * The name of the vanilla spice3 executable. */ #define SPICE_EXE "spice3" /* * The name of the ngspice executable. */ #define NGSPICE_EXE "ngspice" /* * The filename used for the temporary noise * analysis file. */ #define NOISE_ANALYSIS_FILENAME "oregano-noise.txt" #include #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_spice_new (Schematic *sm, gboolean is_vanilla); #endif oregano-0.84.41/src/engines/ngspice-watcher.c0000644000175000017500000006347213413640652020020 0ustar rubenruben/* * ngspice-watcher.c * * * Authors: * Michi * * Web page: https://ahoi.io/project/oregano * * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include "../tools/thread-pipe.h" #include "ngspice.h" #include "ngspice-analysis.h" #include "../log-interface.h" #include "ngspice-watcher.h" enum ERROR_STATE { ERROR_STATE_NO_ERROR, ERROR_STATE_NO_SUCH_FILE_OR_DIRECTORY, ERROR_STATE_ERROR_IN_NETLIST }; //data wrapper typedef struct { GMutex mutex; GCond cond; gboolean boolean; } IsNgspiceStderrDestroyed; //data wrapper typedef struct { gchar *path_to_file; ThreadPipe *pipe; CancelInfo *cancel_info; } NgSpiceSaverResources; //data wrapper typedef struct { ThreadPipe *thread_pipe_worker; ThreadPipe *thread_pipe_saver; } NgSpiceWatchForkResources; //data wrapper typedef struct { NgSpiceWatchForkResources ngspice_watch_fork_resources; guint cancel_info_count; CancelInfo *cancel_info; } NgSpiceWatchSTDOUTResources; //data wrapper typedef struct { ProgressResources *progress_ngspice; LogInterface log; const SimSettings *sim_settings; enum ERROR_STATE *error_state; IsNgspiceStderrDestroyed *is_ngspice_stderr_destroyed; } NgSpiceWatchSTDERRResources; //data wrapper typedef struct { GThread *worker; GThread *saver; LogInterface log; const void* emit_instance; GPid *child_pid; gboolean *aborted; guint *num_analysis; GMainLoop *main_loop; gchar *netlist_file; gchar *ngspice_result_file; enum ERROR_STATE *error_state; IsNgspiceStderrDestroyed *is_ngspice_stderr_destroyed; CancelInfo *cancel_info; } NgSpiceWatcherWatchNgSpiceResources; /** * Wraps the heavy work of a function into a thread. */ static gpointer ngspice_worker (NgspiceAnalysisResources *resources) { ngspice_analysis(resources); cancel_info_unsubscribe(resources->cancel_info); g_free(resources); return NULL; } /** * Wraps the heavy work of a function into a thread. */ static gpointer ngspice_saver (NgSpiceSaverResources *resources) { ngspice_save(resources->path_to_file, resources->pipe, resources->cancel_info); cancel_info_unsubscribe(resources->cancel_info); g_free(resources->path_to_file); g_free(resources); return NULL; } /** * returns the number of strings in a NULL terminated array of strings */ static int get_count(gchar** array) { int i = 0; while (array[i] != NULL) i++; return i; } /** * adds the line number followed by a colon and a space at the beginning of each line */ static void add_line_numbers(gchar **string) { gchar **splitted = g_regex_split_simple("\\n", *string, 0, 0); GString *new_string = g_string_new(""); //why -1? Because g_regex_split_simple adds one empty string too much at the end //of the array. int count = get_count(splitted) - 1; int max_length = floor(log10((double) count)) + 1; //splitted[i+1] != NULL (why not only i but i+1?) because g_regex_split_simple //adds one empty string too much at the end of the array for (int i = 0; splitted[i+1] != NULL; i++) g_string_append_printf(new_string, "%0*d: %s\n", max_length, i+1, splitted[i]); //remove the last newline, which was added additionally new_string = g_string_truncate(new_string, new_string->len - 1); g_free(*string); *string = new_string->str; g_string_free(new_string, FALSE); } //data wrapper typedef struct { const void* emit_instance; gchar *signal_name; } NgspiceEmitData; /** * Use this function to return the program main control flow to the * main thread (which is the gui thread). */ static gboolean g_signal_emit_by_name_main_thread(NgspiceEmitData *data) { const void* emit_instance = data->emit_instance; gchar *signal_name = data->signal_name; g_free(data); g_signal_emit_by_name (G_OBJECT (emit_instance), signal_name); g_free(signal_name); return G_SOURCE_REMOVE; } /** * main function of the ngspice watcher */ static gpointer ngspice_watcher_main(GMainLoop *main_loop) { g_main_loop_run(main_loop); // unrefs its GMainContext by 1 g_main_loop_unref(main_loop); return NULL; } /** * forks data to file and heap */ static void ngspice_watcher_fork_data(NgSpiceWatchForkResources *resources, gpointer data, gsize size) { thread_pipe_push(resources->thread_pipe_worker, data, size); /** * size_in = size - 1, because the trailing 0 of the string should not * be written to file. */ thread_pipe_push(resources->thread_pipe_saver, data, size - 1); } /** * forks eof to file-pipe and heap-pipe */ static void ngspice_watcher_fork_eof(NgSpiceWatchForkResources *resources) { thread_pipe_set_write_eof(resources->thread_pipe_worker); thread_pipe_set_write_eof(resources->thread_pipe_saver); } /** * Does not handle input resources. */ static gboolean ngspice_watcher_watch_stdout_resources(GIOChannel *channel, GIOCondition condition, NgSpiceWatchSTDOUTResources *resources) { gchar *str_return = NULL; gsize length; gsize terminator_pos; GError *error = NULL; resources->cancel_info_count++; if (resources->cancel_info_count % 50 == 0 && cancel_info_is_cancel(resources->cancel_info)) { return G_SOURCE_REMOVE; } GIOStatus status = g_io_channel_read_line(channel, &str_return, &length, &terminator_pos, &error); if (error) { gchar *message = g_strdup_printf ("spice pipe stdout: %s - %i", error->message, error->code); g_printf("%s", message); g_free(message); g_clear_error (&error); } else if (status == G_IO_STATUS_NORMAL && length > 0) { ngspice_watcher_fork_data(&resources->ngspice_watch_fork_resources, str_return, length + 1); } else if (status == G_IO_STATUS_EOF) { return G_SOURCE_REMOVE; } if (str_return) g_free(str_return); return G_SOURCE_CONTINUE; } /** * ngspice reading source function * * reads the pipe (stdout) of ngspice */ static gboolean ngspice_watcher_watch_stdout(GIOChannel *channel, GIOCondition condition, NgSpiceWatchSTDOUTResources *resources) { gboolean g_source_continue = ngspice_watcher_watch_stdout_resources(channel, condition, resources); if (g_source_continue == G_SOURCE_CONTINUE) return G_SOURCE_CONTINUE; ngspice_watcher_fork_eof(&resources->ngspice_watch_fork_resources); g_source_destroy(g_main_current_source()); cancel_info_unsubscribe(resources->cancel_info); g_free(resources); return G_SOURCE_REMOVE; } static void ngspice_watch_ngspice_resources_finalize(NgSpiceWatcherWatchNgSpiceResources *resources) { g_source_destroy(g_main_current_source()); g_main_loop_quit(resources->main_loop); g_spawn_close_pid (*resources->child_pid); *resources->child_pid = 0; g_free(resources->ngspice_result_file); g_free(resources->netlist_file); g_free(resources->error_state); g_mutex_clear(&resources->is_ngspice_stderr_destroyed->mutex); g_cond_clear(&resources->is_ngspice_stderr_destroyed->cond); g_free(resources); } static void print_additional_info(LogInterface log, const gchar *ngspice_result_file, const gchar *netlist_file) { log.log_append_error(log.log, "\n### spice output: ###\n\n"); gchar *ngspice_error_contents = NULL; gsize ngspice_error_length; GError *ngspice_error_read_error = NULL; g_file_get_contents(ngspice_result_file, &ngspice_error_contents, &ngspice_error_length, &ngspice_error_read_error); add_line_numbers(&ngspice_error_contents); log.log_append_error(log.log, ngspice_error_contents); g_free(ngspice_error_contents); if (ngspice_error_read_error != NULL) g_error_free(ngspice_error_read_error); gchar *netlist_contents = NULL; gsize netlist_lentgh; GError *netlist_read_error = NULL; g_file_get_contents(netlist_file, &netlist_contents, &netlist_lentgh, &netlist_read_error); add_line_numbers(&netlist_contents); log.log_append_error(log.log, "\n\n### netlist: ###\n\n"); log.log_append_error(log.log, netlist_contents); g_free(netlist_contents); if (netlist_read_error != NULL) g_error_free(netlist_read_error); } enum NGSPICE_WATCHER_RETURN_VALUE { NGSPICE_WATCHER_RETURN_VALUE_DONE, NGSPICE_WATCHER_RETURN_VALUE_ABORTED, NGSPICE_WATCHER_RETURN_VALUE_CANCELED }; /** * Does not care about input resource handling. */ static enum NGSPICE_WATCHER_RETURN_VALUE ngspice_watcher_watch_ngspice_resources (GPid pid, gint status, NgSpiceWatcherWatchNgSpiceResources *resources) { GThread *worker = resources->worker; GThread *saver = resources->saver; LogInterface log = resources->log; guint *num_analysis = resources->num_analysis; enum ERROR_STATE *error_state = resources->error_state; IsNgspiceStderrDestroyed *is_ngspice_stderr_destroyed = resources->is_ngspice_stderr_destroyed; // wait for stderr to finish reading g_mutex_lock(&is_ngspice_stderr_destroyed->mutex); while (!is_ngspice_stderr_destroyed->boolean) g_cond_wait(&is_ngspice_stderr_destroyed->cond, &is_ngspice_stderr_destroyed->mutex); g_mutex_unlock(&is_ngspice_stderr_destroyed->mutex); GError *exit_error = NULL; gboolean exited_normal = g_spawn_check_exit_status(status, &exit_error); if (exit_error != NULL) g_error_free(exit_error); g_thread_join(worker); if (cancel_info_is_cancel(resources->cancel_info)) return NGSPICE_WATCHER_RETURN_VALUE_CANCELED; if (!exited_normal) { // check for exit via return in main, exit() or _exit() of the child, see man // waitpid(2) // WIFEXITED(wstatus) // returns true if the child terminated normally, that is, by call‐ // ing exit(3) or _exit(2), or by returning from main(). if (!(WIFEXITED (status))) log.log_append_error(log.log, "### spice exited with exception ###\n"); else log.log_append_error(log.log, "### spice exited abnormally ###\n"); g_thread_join(saver); switch (*error_state) { case ERROR_STATE_NO_ERROR: log.log_append_error(log.log, "### unknown error detected ###\n"); log.log_append_error(log.log, "The following information might help you to analyze the error.\n"); print_additional_info(log, resources->ngspice_result_file, resources->netlist_file); break; case ERROR_STATE_NO_SUCH_FILE_OR_DIRECTORY: log.log_append_error(log.log, "spice could not simulate because netlist generation failed.\n"); break; case ERROR_STATE_ERROR_IN_NETLIST: log.log_append_error(log.log, "### netlist error detected ###\n"); log.log_append_error(log.log, "You made a mistake in the simulation settings or part properties.\n"); log.log_append_error(log.log, "The following information will help you to analyze the error.\n"); print_additional_info(log, resources->ngspice_result_file, resources->netlist_file); break; } return NGSPICE_WATCHER_RETURN_VALUE_ABORTED; } // saver not needed any more. It could have been needed by error handling. g_thread_unref(saver); if (*num_analysis == 0) { log.log_append_error(log.log, _("### Too few or none analysis found ###\n")); return NGSPICE_WATCHER_RETURN_VALUE_ABORTED; } return NGSPICE_WATCHER_RETURN_VALUE_DONE; } /** * function is called after ngspice process has died and the ngspice reading * source function is finished with reading to * - clean up, * - check if all went good or fail, * - wait for data conversion thread, * - return the main program flow to the gui thread. */ static void ngspice_watcher_watch_ngspice (GPid pid, gint status, NgSpiceWatcherWatchNgSpiceResources *resources) { enum NGSPICE_WATCHER_RETURN_VALUE ret_val = ngspice_watcher_watch_ngspice_resources (pid, status, resources); NgspiceEmitData *emitData = g_malloc(sizeof(NgspiceEmitData)); emitData->emit_instance = resources->emit_instance; switch(ret_val) { case NGSPICE_WATCHER_RETURN_VALUE_ABORTED: case NGSPICE_WATCHER_RETURN_VALUE_CANCELED: emitData->signal_name = g_strdup("aborted"); *resources->aborted = TRUE; break; case NGSPICE_WATCHER_RETURN_VALUE_DONE: emitData->signal_name = g_strdup("done"); break; } cancel_info_unsubscribe(resources->cancel_info); ngspice_watch_ngspice_resources_finalize(resources); /* * return to main thread * * Don't return too early, because if you do, the ngspice * object could be finalized but some resources depend on it. */ g_main_context_invoke(NULL, (GSourceFunc)g_signal_emit_by_name_main_thread, emitData); } /** * Extracts a progress number (time of transient analysis) * out of a string (if existing) and saves it to the thread-shared * progress variable. */ static void read_progress_ngspice(ProgressResources *progress_ngspice, gdouble progress_end, const gchar *line) { if (!g_regex_match_simple("Reference value.*\\r", line, 0, 0)) return; gchar **splitted = g_regex_split_simple(".* (.+)\\r", line, 0, 0); gchar **ptr; for (ptr = splitted; *ptr != NULL; ptr++) if (**ptr != 0) break; if (*ptr != NULL) { gdouble progress_absolute = g_ascii_strtod(*ptr, NULL); g_mutex_lock(&progress_ngspice->progress_mutex); progress_ngspice->progress = progress_absolute / progress_end; if (g_str_has_suffix(line, "\r\n")) progress_ngspice->progress = 1; progress_ngspice->time = g_get_monotonic_time(); g_mutex_unlock(&progress_ngspice->progress_mutex); } g_strfreev(splitted); } /** * Reads stderr of ngspice. * * stderr of ngspice might contain progress information. */ static gboolean ngspice_child_stderr_cb (GIOChannel *channel, GIOCondition condition, NgSpiceWatchSTDERRResources *resources) { LogInterface log = resources->log; const SimSettings* const sim_settings = resources->sim_settings; ProgressResources *progress_ngspice = resources->progress_ngspice; enum ERROR_STATE *error_state = resources->error_state; IsNgspiceStderrDestroyed *is_ngspice_stderr_destroyed = resources->is_ngspice_stderr_destroyed; gchar *line = NULL; gsize len, terminator; GError *e = NULL; GIOStatus status = g_io_channel_read_line (channel, &line, &len, &terminator, &e); if (e) { gchar *message = g_strdup_printf("spice pipe stderr: %s - %i", e->message, e->code); log.log_append_error(log.log, message); g_free(message); g_clear_error (&e); } else if (status == G_IO_STATUS_NORMAL && len > 0) { log.log_append_error(log.log, line); if (g_str_has_suffix(line, ": No such file or directory\n")) *error_state = ERROR_STATE_NO_SUCH_FILE_OR_DIRECTORY; if (g_str_equal(line, "spice stopped due to error, no simulation run!\n")) *error_state = ERROR_STATE_ERROR_IN_NETLIST; gdouble progress_end = sim_settings_get_trans_stop(sim_settings); read_progress_ngspice(progress_ngspice, progress_end, line); } else if (status == G_IO_STATUS_EOF) { g_source_destroy(g_main_current_source()); g_free(resources); // emit signal, that stderr reading has finished g_mutex_lock(&is_ngspice_stderr_destroyed->mutex); is_ngspice_stderr_destroyed->boolean = TRUE; g_cond_signal(&is_ngspice_stderr_destroyed->cond); g_mutex_unlock(&is_ngspice_stderr_destroyed->mutex); return G_SOURCE_REMOVE; } if (line) g_free (line); return G_SOURCE_CONTINUE; } /** * @resources: caller frees * * Prepares data structures to launch some threads and finally launches them. * * The launched threads are: * - process ngspice * - thread watcher * - thread saver * - thread worker * * As you should know ngspice is the program that actually simulates the simulation. * * The watcher thread handles stdout- and death-events of the ngspice process. * stdout data is forked to the threads "saver" and "worker". * As response to the death-event of ngspice, the watcher * - cleans the field of war, * - checks if all went good and creates error messages if not all went good, * - waits for the worker to finish work, * - finally returns the main program flow to the gui thread. * * The stderr-events are handled by the main (gui) thread, because it is not heavy work. * Furthermore additionally shared variables can be avoided. * * The saver saves the data to SSD/HDD (temporary folder). It is needed to create * good error messages in case of failure. Besides of that the user can analyze * the data with external/other programs. * * The worker parses the stream of data, interprets and converts it to structured data * so it can be plotted by gui. */ void ngspice_watcher_build_and_launch(const NgspiceWatcherBuildAndLaunchResources *resources) { LogInterface log = resources->log; const SimSettings* const sim_settings = resources->sim_settings; gboolean is_vanilla = resources->is_vanilla; GPid *child_pid = resources->child_pid; gboolean *aborted = resources->aborted; const void* emit_instance = resources->emit_instance; guint *num_analysis = resources->num_analysis; ProgressResources *progress_ngspice = resources->progress_ngspice; ProgressResources *progress_reader = resources->progress_reader; GList **analysis = resources->analysis; AnalysisTypeShared *current = resources->current; GError *e = NULL; char *argv[] = {NULL, "-b", resources->netlist_file, NULL}; if (is_vanilla) argv[0] = SPICE_EXE; else argv[0] = NGSPICE_EXE; gint ngspice_stdout_fd; gint ngspice_stderr_fd; // Launch ngspice if (!g_spawn_async_with_pipes (NULL, // Working directory argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, NULL, child_pid, NULL, // STDIN &ngspice_stdout_fd, // STDOUT &ngspice_stderr_fd, // STDERR &e)) { *aborted = TRUE; log.log_append_error(log.log, _("Unable to execute NgSpice.")); g_signal_emit_by_name (G_OBJECT (emit_instance), "aborted"); g_clear_error (&e); return; } // synchronizes stderr listener with is_ngspice_finished listener (needed for error handling) IsNgspiceStderrDestroyed *is_ngspice_stderr_destroyed = g_new0(IsNgspiceStderrDestroyed, 1); g_mutex_init(&is_ngspice_stderr_destroyed->mutex); g_cond_init(&is_ngspice_stderr_destroyed->cond); is_ngspice_stderr_destroyed->boolean = FALSE; // variable needed for error handling enum ERROR_STATE *error_state = g_new0(enum ERROR_STATE, 1); GMainContext *forker_context = g_main_context_new(); GMainLoop *forker_main_loop = g_main_loop_new(forker_context, FALSE); g_main_context_unref(forker_context); // Create pipes to fork the stdout data of ngspice ThreadPipe *thread_pipe_worker = thread_pipe_new(20, 2048); ThreadPipe *thread_pipe_saver = thread_pipe_new(20, 2048); /** * Launch analyzer */ NgspiceAnalysisResources *ngspice_worker_resources = g_new0(NgspiceAnalysisResources, 1); ngspice_worker_resources->analysis = analysis; ngspice_worker_resources->buf = NULL; ngspice_worker_resources->is_vanilla = is_vanilla; ngspice_worker_resources->current = current; ngspice_worker_resources->no_of_data_rows_ac = 0; ngspice_worker_resources->no_of_data_rows_dc = 0; ngspice_worker_resources->no_of_data_rows_op = 0; ngspice_worker_resources->no_of_data_rows_transient = 0; ngspice_worker_resources->no_of_data_rows_noise = 0; ngspice_worker_resources->no_of_variables = 0; ngspice_worker_resources->num_analysis = num_analysis; ngspice_worker_resources->pipe = thread_pipe_worker; ngspice_worker_resources->progress_reader = progress_reader; ngspice_worker_resources->sim_settings = sim_settings; ngspice_worker_resources->cancel_info = resources->cancel_info; cancel_info_subscribe(ngspice_worker_resources->cancel_info); GThread *worker = g_thread_new("spice worker", (GThreadFunc)ngspice_worker, ngspice_worker_resources); /** * Launch output saver */ NgSpiceSaverResources *ngspice_saver_resources = g_new0(NgSpiceSaverResources, 1); ngspice_saver_resources->path_to_file = g_strdup(resources->ngspice_result_file); ngspice_saver_resources->pipe = thread_pipe_saver; ngspice_saver_resources->cancel_info = resources->cancel_info; cancel_info_subscribe(ngspice_saver_resources->cancel_info); GThread *saver = g_thread_new("spice saver", (GThreadFunc)ngspice_saver, ngspice_saver_resources); /** * Add an ngspice-is-finished watcher */ NgSpiceWatcherWatchNgSpiceResources *ngspice_watcher_watch_ngspice_resources = g_new0(NgSpiceWatcherWatchNgSpiceResources, 1); ngspice_watcher_watch_ngspice_resources->emit_instance = emit_instance; ngspice_watcher_watch_ngspice_resources->aborted = aborted; ngspice_watcher_watch_ngspice_resources->child_pid = child_pid; ngspice_watcher_watch_ngspice_resources->log = log; ngspice_watcher_watch_ngspice_resources->num_analysis = num_analysis; ngspice_watcher_watch_ngspice_resources->worker = worker; ngspice_watcher_watch_ngspice_resources->saver = saver; ngspice_watcher_watch_ngspice_resources->main_loop = forker_main_loop; ngspice_watcher_watch_ngspice_resources->ngspice_result_file = g_strdup(resources->ngspice_result_file); ngspice_watcher_watch_ngspice_resources->netlist_file = g_strdup(resources->netlist_file); ngspice_watcher_watch_ngspice_resources->error_state = error_state; ngspice_watcher_watch_ngspice_resources->is_ngspice_stderr_destroyed = is_ngspice_stderr_destroyed; ngspice_watcher_watch_ngspice_resources->cancel_info = resources->cancel_info; cancel_info_subscribe(ngspice_watcher_watch_ngspice_resources->cancel_info); GSource *child_watch_source = g_child_watch_source_new (*child_pid); g_source_set_priority (child_watch_source, G_PRIORITY_LOW); g_source_set_callback (child_watch_source, (GSourceFunc)ngspice_watcher_watch_ngspice, ngspice_watcher_watch_ngspice_resources, NULL); g_source_attach (child_watch_source, forker_context); g_source_unref (child_watch_source); /** * Add a GIOChannel to read from process stdout */ NgSpiceWatchSTDOUTResources *ngspice_watch_stdout_resources = g_new0(NgSpiceWatchSTDOUTResources, 1); ngspice_watch_stdout_resources->ngspice_watch_fork_resources.thread_pipe_worker = thread_pipe_worker; ngspice_watch_stdout_resources->ngspice_watch_fork_resources.thread_pipe_saver = thread_pipe_saver; ngspice_watch_stdout_resources->cancel_info = resources->cancel_info; cancel_info_subscribe(ngspice_watch_stdout_resources->cancel_info); GIOChannel *ngspice_stdout_channel = g_io_channel_unix_new(ngspice_stdout_fd); g_io_channel_set_close_on_unref(ngspice_stdout_channel, TRUE); GSource *ngspice_stdout_source = g_io_create_watch (ngspice_stdout_channel, G_IO_IN | G_IO_PRI | G_IO_HUP | G_IO_NVAL); g_io_channel_unref(ngspice_stdout_channel); g_source_set_priority (ngspice_stdout_source, G_PRIORITY_HIGH); g_source_set_callback (ngspice_stdout_source, (GSourceFunc)ngspice_watcher_watch_stdout, ngspice_watch_stdout_resources, NULL); g_source_attach (ngspice_stdout_source, forker_context); g_source_unref (ngspice_stdout_source); /** * Add a GIOChannel to read from process stderr (attach to gui thread because it prints to log). * I hope that ngspice does not print too much errors so that it is a minor work * that does not hold the gui back from paint and user events */ NgSpiceWatchSTDERRResources *ngspice_watch_stderr_resources = g_new0(NgSpiceWatchSTDERRResources, 1); ngspice_watch_stderr_resources->log = log; ngspice_watch_stderr_resources->sim_settings = sim_settings; ngspice_watch_stderr_resources->progress_ngspice = progress_ngspice; ngspice_watch_stderr_resources->error_state = error_state; ngspice_watch_stderr_resources->is_ngspice_stderr_destroyed = is_ngspice_stderr_destroyed; GIOChannel *ngspice_stderr_channel = g_io_channel_unix_new (ngspice_stderr_fd); g_io_channel_set_close_on_unref(ngspice_stderr_channel, TRUE); // sometimes there is no data and then the GUI will hang up if NONBLOCK not set g_io_channel_set_flags(ngspice_stderr_channel, g_io_channel_get_flags(ngspice_stderr_channel) | G_IO_FLAG_NONBLOCK, NULL); GSource *channel_stderr_watch_source = g_io_create_watch(ngspice_stderr_channel, G_IO_IN | G_IO_PRI | G_IO_HUP | G_IO_NVAL); g_io_channel_unref(ngspice_stderr_channel); g_source_set_priority (channel_stderr_watch_source, G_PRIORITY_LOW); g_source_set_callback (channel_stderr_watch_source, (GSourceFunc)ngspice_child_stderr_cb, ngspice_watch_stderr_resources, NULL); g_source_attach (channel_stderr_watch_source, NULL); g_source_unref (channel_stderr_watch_source); // Launch watcher g_thread_unref(g_thread_new("spice forker", (GThreadFunc)ngspice_watcher_main, forker_main_loop)); } NgspiceWatcherBuildAndLaunchResources *ngspice_watcher_build_and_launch_resources_new(OreganoNgSpice *ngspice) { NgspiceWatcherBuildAndLaunchResources *resources = g_new0(NgspiceWatcherBuildAndLaunchResources, 1); resources->is_vanilla = ngspice->priv->is_vanilla; resources->aborted = &ngspice->priv->aborted; resources->analysis = &ngspice->priv->analysis; resources->child_pid = &ngspice->priv->child_pid; resources->current = &ngspice->priv->current; resources->emit_instance = ngspice; resources->log.log = ngspice->priv->schematic; resources->log.log_append = (LogFunction)schematic_log_append; resources->log.log_append_error = (LogFunction)schematic_log_append_error; resources->num_analysis = &ngspice->priv->num_analysis; resources->progress_ngspice = &ngspice->priv->progress_ngspice; resources->progress_reader = &ngspice->priv->progress_reader; resources->sim_settings = schematic_get_sim_settings(ngspice->priv->schematic); resources->netlist_file = g_strdup("/tmp/netlist.tmp"); resources->ngspice_result_file = g_strdup("/tmp/netlist.lst"); resources->cancel_info = ngspice->priv->cancel_info; cancel_info_subscribe(resources->cancel_info); return resources; } void ngspice_watcher_build_and_launch_resources_finalize(NgspiceWatcherBuildAndLaunchResources *resources) { cancel_info_unsubscribe(resources->cancel_info); g_free(resources->netlist_file); g_free(resources->ngspice_result_file); g_free(resources); } oregano-0.84.41/src/engines/ngspice-analysis.c0000644000175000017500000010671713413640652020206 0ustar rubenruben/* * ngspice-analysis.c * * Authors: * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include "ngspice.h" #include "netlist-helper.h" #include "dialogs.h" #include "engine-internal.h" #include "ngspice-analysis.h" #include "../tools/thread-pipe.h" #include "../tools/cancel-info.h" #define SP_TITLE "oregano\n" #define CPU_TIME "CPU time since last call:" #define TAGS_COUNT (sizeof(analysis_tags) / sizeof(struct analysis_tag)) #include "debug.h" #define IS_THIS_ITEM(str, item) (!strncmp (str, item, strlen (item))) #ifdef DEBUG_THIS #undef DEBUG_THIS #endif #define DEBUG_THIS 1 /** * \brief extract the resulting variables from ngspice output * * In ngspice a number can terminate only with a space, * while in spice3 a number can also terminate with a * comma. * * In the Fourier analysis the name of the output ends * with a colon. * * Tested function. * * @returns a GArray filled up doubles */ gchar **get_variables (const gchar *str, gint *count) { g_return_val_if_fail (str, NULL); gchar **out; static gchar *tmp[100]; const gchar *start, *end; gint i = 0; start = str; while (isspace (*start)) start++; end = start; while (*end != '\0') { if (isspace (*end) || *end == ',' || *end == ':') { // number ended, designate as such and replace the string tmp[i] = g_strndup (start, (gsize)(end - start)); i++; start = end; while (isspace (*start) || *start == ',' || *start == ':') start++; end = start; } else { end++; } } if (end > start) { tmp[i] = g_strndup (start, (gsize)(end - start)); i++; } if (i == 0) { g_warning ("NO COLUMNS FOUND\n"); return NULL; } // append an extra NUL slot to allow using g_strfreev out = g_new0 (gchar *, i + 1); (*count) = i; memcpy (out, tmp, sizeof(gchar *) * i); out[i] = NULL; return out; } /** * @resources: caller frees */ static ThreadPipe *parse_dc_analysis (NgspiceAnalysisResources *resources) { ThreadPipe *pipe = resources->pipe; gchar **buf = &resources->buf; const SimSettings* const sim_settings = resources->sim_settings; GList **analysis = resources->analysis; guint *num_analysis = resources->num_analysis; static SimulationData *sdata; static Analysis *data; gsize size; gboolean found = FALSE; gchar **variables; gint i, n = 0, index = 0; gdouble val[10]; gdouble np1; NG_DEBUG ("DC: result str\n>>>\n%s\n<<<", *buf); data = g_new0 (Analysis, 1); sdata = SIM_DATA (data); sdata->type = ANALYSIS_TYPE_DC_TRANSFER; sdata->functions = NULL; np1 = 1.; ANALYSIS (sdata)->dc.start = sim_settings_get_dc_start (sim_settings); ANALYSIS (sdata)->dc.stop = sim_settings_get_dc_stop (sim_settings); ANALYSIS (sdata)->dc.step = sim_settings_get_dc_step (sim_settings); np1 = (ANALYSIS (sdata)->dc.stop - ANALYSIS (sdata)->dc.start) / ANALYSIS (sdata)->dc.step; ANALYSIS (sdata)->dc.sim_length = np1; pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); // Calculates the number of variables variables = get_variables (*buf, &n); if (!variables) return pipe; n = n - 1; sdata->var_names = (char **)g_new0 (gpointer, n); sdata->var_units = (char **)g_new0 (gpointer, n); sdata->var_names[0] = g_strdup ("Voltage sweep"); sdata->var_units[0] = g_strdup (_ ("voltage")); sdata->var_names[1] = g_strdup (variables[2]); sdata->var_units[1] = g_strdup (_ ("voltage")); sdata->n_variables = 2; sdata->got_points = 0; sdata->got_var = 0; sdata->data = (GArray **)g_new0 (gpointer, 2); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); for (i = 0; i < 2; 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); // Read the data for (i = 0; i < 2; i++) { sdata->min_data[i] = G_MAXDOUBLE; sdata->max_data[i] = -G_MAXDOUBLE; } found = FALSE; while (((pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size)) != 0) && !found) { if (strlen (*buf) <= 2) { pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); } variables = get_variables (*buf, &i); if (!variables) return pipe; index = atoi (variables[0]); for (i = 0; i < n; i++) { val[i] = g_ascii_strtod (variables[i + 1], NULL); sdata->data[i] = g_array_append_val (sdata->data[i], val[i]); if (val[i] < sdata->min_data[i]) sdata->min_data[i] = val[i]; if (val[i] > sdata->max_data[i]) sdata->max_data[i] = val[i]; } sdata->got_points++; sdata->got_var = 2; if (index >= ANALYSIS (sdata)->dc.sim_length) found = TRUE; } *analysis = g_list_append (*analysis, sdata); (*num_analysis)++; return pipe; } /** * @resources: caller frees */ static ThreadPipe *parse_ac_analysis (NgspiceAnalysisResources *resources) { ThreadPipe *pipe = resources->pipe; gboolean is_vanilla = resources->is_vanilla; gchar *scale, **variables, **buf = &resources->buf; const SimSettings* const sim_settings = resources->sim_settings; GList **analysis = resources->analysis; guint *num_analysis = resources->num_analysis; static SimulationData *sdata; static Analysis *data; gsize size; gboolean found = FALSE; gint i, n = 0, index = 0; gdouble fstart, fstop, val[10]; NG_DEBUG ("AC: result str\n>>>\n%s\n<<<", *buf); data = g_new0 (Analysis, 1); sdata = SIM_DATA (data); sdata->type = ANALYSIS_TYPE_AC; sdata->functions = NULL; ANALYSIS (sdata)->ac.sim_length = 1.; ANALYSIS (sdata)->ac.start = fstart = sim_settings_get_ac_start (sim_settings); ANALYSIS (sdata)->ac.stop = fstop = sim_settings_get_ac_stop (sim_settings); scale = sim_settings_get_ac_type (sim_settings); if (!g_ascii_strcasecmp (scale, "LIN")) { ANALYSIS (sdata)->ac.sim_length = (double) sim_settings_get_ac_npoints (sim_settings); } else if (!g_ascii_strcasecmp (scale, "DEC")) { ANALYSIS (sdata)->ac.sim_length = (double) sim_settings_get_ac_npoints (sim_settings) * log10 (fstop / fstart); } else if (!g_ascii_strcasecmp (scale, "OCT")) { ANALYSIS (sdata)->ac.sim_length = (double) sim_settings_get_ac_npoints (sim_settings) * log10 (fstop / fstart) / log10 (2); } pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); // Calculates the number of variables variables = get_variables (*buf, &n); if (!variables) return pipe; n = n - 1; sdata->var_names = (char **)g_new0 (gpointer, n); sdata->var_units = (char **)g_new0 (gpointer, n); sdata->var_names[0] = g_strdup ("Frequency"); sdata->var_units[0] = g_strdup (_ ("frequency")); sdata->var_names[1] = g_strdup (variables[2]); sdata->var_units[1] = g_strdup (_ ("voltage")); sdata->n_variables = 2; sdata->got_points = 0; sdata->got_var = 0; sdata->data = (GArray **)g_new0 (gpointer, 2); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); for (i = 0; i < 2; 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); // Read the data for (i = 0; i < 2; i++) { sdata->min_data[i] = G_MAXDOUBLE; sdata->max_data[i] = -G_MAXDOUBLE; } found = FALSE; while (((pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size)) != 0) && !found) { if (strlen (*buf) <= 2) { pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); } variables = get_variables (*buf, &i); if (!variables) return pipe; index = atoi (variables[0]); for (i = 0; i < n; i++) { if (i == 0) val[i] = g_ascii_strtod (variables[i + 1], NULL); if (is_vanilla && i > 0) val[i] = g_ascii_strtod (variables[i + 2], NULL); else val[i] = g_ascii_strtod (variables[i + 1], NULL); sdata->data[i] = g_array_append_val (sdata->data[i], val[i]); if (val[i] < sdata->min_data[i]) sdata->min_data[i] = val[i]; if (val[i] > sdata->max_data[i]) sdata->max_data[i] = val[i]; } sdata->got_points++; sdata->got_var = 2; if (index >= ANALYSIS (sdata)->ac.sim_length - 1) found = TRUE; } *analysis = g_list_append (*analysis, sdata); (*num_analysis)++; return pipe; } /** * Structure that helps parsing the output of ngspice. * * @name: The name (handled like an ID) of the column. * @unit: The physical unit. it can have one of the following values: * "none", "time", "voltage", "current", "unknown" * @data: The data. * @min: The min value of the data. * @max: The max value of the data. */ typedef struct { GString *name; GString *unit; GArray *data; gdouble min; gdouble max; } NgspiceColumn; /** * Structure that helps parsing the output of ngspice. * * @ngspice_columns: The columns. * @current_variables: New columns are appended to the end * of the columns array. Because the index- and time-column * are displayed repeatedly with every 3 new columns, there * is needed an information how to interpret the incoming * data to append it to the right columns. The current_variables * array maps the position of the input data in the file * to the position of the related column position in the table. */ typedef struct { GPtrArray *ngspice_columns; GArray *current_variables; } NgspiceTable; /** * Allocates memory. * * @name: The name (ID) of the new column * @predicted_size: The predicted end size of the new column. */ static NgspiceColumn *ngspice_column_new(const gchar *name, guint predicted_size) { NgspiceColumn *ret_val = malloc(sizeof(NgspiceColumn)); ret_val->name = g_string_new(name); if (g_str_has_prefix(name, "Index")) ret_val->unit = g_string_new("none"); else if (g_str_has_prefix(name, "time")) ret_val->unit = g_string_new("time"); else if (g_str_has_prefix(name, "V") || g_str_has_prefix(name, "v")) ret_val->unit = g_string_new("voltage"); else if (g_str_has_suffix(name, "#branch")) ret_val->unit = g_string_new("current"); else ret_val->unit = g_string_new("unknown"); ret_val->data = g_array_sized_new(TRUE, TRUE, sizeof(gdouble), predicted_size); ret_val->min = G_MAXDOUBLE; ret_val->max = -G_MAXDOUBLE; return ret_val; } /** * Frees memory. */ static void ngspice_column_destroy(gpointer ptr) { NgspiceColumn *column = (NgspiceColumn *)ptr; if (column == NULL) return; if (column->name != NULL) g_string_free(column->name, TRUE); if (column->unit != NULL) g_string_free(column->unit, TRUE); g_free(column); } /** * Allocates memory. */ static NgspiceTable *ngspice_table_new() { NgspiceTable *ret_val = malloc(sizeof(NgspiceTable)); ret_val->ngspice_columns = g_ptr_array_new_with_free_func(ngspice_column_destroy); ret_val->current_variables = g_array_new(TRUE, TRUE, sizeof(guint)); return ret_val; } /** * Frees the memory. */ static void ngspice_table_destroy(NgspiceTable *ngspice_table) { if (ngspice_table->ngspice_columns != NULL) { guint len = ngspice_table->ngspice_columns->len; for (int i = 0; i < len; i++) { NgspiceColumn *column = ngspice_table->ngspice_columns->pdata[i]; if (column != NULL) g_array_free(column->data, TRUE); } g_ptr_array_free(ngspice_table->ngspice_columns, TRUE); } if (ngspice_table->current_variables != NULL) g_array_free(ngspice_table->current_variables, TRUE); g_free(ngspice_table); } /** * Converts "x...x#branch" to "I(x...x)". * * Let "x...x" be the name of a part in the ngspice netlist, * then the current variable (current, that flows through * that part) of that part is named * "x...x#branch" in ngspice. To shorten the name and make * it prettier, the name will be displayed as "I(x...x)" * in Oregano (analogous to V(node_nr)). */ static void convert_variable_name(gchar **variable) { gchar **splitted = g_regex_split_simple("\\#branch", *variable, 0, 0); g_free(*variable); *variable = g_strdup_printf("I(%s)", *splitted); g_strfreev(splitted); } /** * Creates and appends new columns to the table, if there are new variables. * The referenced columns are now the newly added columns. * * @predicted_size: The predicted end size of the new columns. It is assumed * that the new columns will have the same size. */ static void ngspice_table_new_columns(NgspiceTable *ngspice_table, gchar **variables, guint predicted_size) { if (ngspice_table->ngspice_columns->len > 0) { NgspiceColumn *column = (NgspiceColumn *)ngspice_table->ngspice_columns->pdata[0]; predicted_size = column->data->len; } g_array_free(ngspice_table->current_variables, TRUE); ngspice_table->current_variables = g_array_new(TRUE, TRUE, sizeof(guint)); for (gchar **variable = variables; *variable != NULL && **variable != '\n' && **variable != 0; variable++) { if (g_str_has_suffix(*variable, "#branch")) convert_variable_name(variable); int i; for (i = 0; i < ngspice_table->ngspice_columns->len; i++) { if (!strcmp(*variable, ((NgspiceColumn *)ngspice_table->ngspice_columns->pdata[i])->name->str)) break; } if (i == ngspice_table->ngspice_columns->len) { NgspiceColumn *new_column = ngspice_column_new(*variable, predicted_size); g_ptr_array_add(ngspice_table->ngspice_columns, new_column); } g_array_append_val(ngspice_table->current_variables, i); } } /** * Appends a split line to the end of the current referenced columns. */ static void ngspice_table_add_data(NgspiceTable *ngspice_table, gchar **data) { g_return_if_fail(data != NULL); g_return_if_fail(*data != NULL); if (**data == 0) return; g_return_if_fail(ngspice_table != NULL); guint64 index = g_ascii_strtoull(*data, NULL, 10); for (int i = 0; data[i] != NULL && data[i][0] != 0 && data[i][0] != '\n' && i < ngspice_table->current_variables->len; i++) { guint column_index = g_array_index(ngspice_table->current_variables, guint, i); NgspiceColumn *column = (NgspiceColumn*)(ngspice_table->ngspice_columns->pdata[column_index]); if (column->data->len > index) { continue;//assert equal } gdouble new_content = g_ascii_strtod(data[i], NULL); g_array_append_val(column->data, new_content); if (new_content < column->min) column->min = new_content; if (new_content > column->max) column->max = new_content; } } /** * Counts the number of different guints. If a certain * guint occurs more than once, it is counted as one. */ static guint get_real_len(GArray *array_guint) { guint ret_val = 0; for (guint i = 0; i < array_guint->len; i++) { ret_val++; for (guint j = 0; j < i; j++) { if (g_array_index(array_guint, guint, i) == g_array_index(array_guint, guint, j)) { ret_val--; break; } } } return ret_val; } /** * Returns the index that is currently parsed. * * The first referenced column is the string-index column, * the second referenced column is the time. The index and * the time column can already be filled up by earlier * iterations, so the length of the third referenced column * represents the index that is currently parsed. */ static guint get_current_index(NgspiceTable *ngspice_table) { guint column_nr = g_array_index(ngspice_table->current_variables, guint, 2); NgspiceColumn *column = g_ptr_array_index(ngspice_table->ngspice_columns, column_nr); return column->data->len; } typedef struct { NgspiceTable *table; ThreadPipe *pipe; gboolean is_cancel; } ParseTransientAnalysisReturnResources; /** * @resources: caller frees */ static ParseTransientAnalysisReturnResources parse_transient_analysis_resources (NgspiceAnalysisResources *resources) { gchar **buf = &resources->buf; const SimSettings *sim_settings = resources->sim_settings; guint *num_analysis = resources->num_analysis; ProgressResources *progress_reader = resources->progress_reader; guint64 no_of_data_rows = resources->no_of_data_rows_transient; guint no_of_variables = resources->no_of_variables; enum STATE { NGSPICE_ANALYSIS_STATE_READ_DATA, NGSPICE_ANALYSIS_STATE_DATA_SMALL_BLOCK_END, NGSPICE_ANALYSIS_STATE_DATA_LARGE_BLOCK_END, NGSPICE_ANALYSIS_STATE_DATA_END, NGSPICE_ANALYSIS_STATE_READ_VARIABLES_NEW, NGSPICE_ANALYSIS_STATE_READ_VARIABLES_OLD }; g_mutex_lock(&progress_reader->progress_mutex); progress_reader->progress = 0; progress_reader->time = g_get_monotonic_time(); g_mutex_unlock(&progress_reader->progress_mutex); gsize size; NgspiceTable *ngspice_table = ngspice_table_new(); ParseTransientAnalysisReturnResources ret_val; ret_val.table = ngspice_table; ret_val.pipe = resources->pipe; ret_val.is_cancel = TRUE; enum STATE state = NGSPICE_ANALYSIS_STATE_DATA_LARGE_BLOCK_END; guint i = 0; do { if (i % 50 == 0 && cancel_info_is_cancel(resources->cancel_info)) return ret_val; switch (state) { case NGSPICE_ANALYSIS_STATE_READ_VARIABLES_NEW: { gchar **splitted_line = g_regex_split_simple(" +", *buf, 0, 0); ngspice_table_new_columns(ngspice_table, splitted_line, no_of_data_rows); g_strfreev(splitted_line); state = NGSPICE_ANALYSIS_STATE_READ_VARIABLES_OLD; break; } case NGSPICE_ANALYSIS_STATE_READ_DATA: { gchar **splitted_line = g_regex_split_simple("\\t+|-{2,}", *buf, 0, 0); ngspice_table_add_data(ngspice_table, splitted_line); g_strfreev(splitted_line); if ((ret_val.pipe = thread_pipe_pop(ret_val.pipe, (gpointer *)buf, &size)) == NULL) return ret_val; switch (*buf[0]) { case '\f':{ // estimate progress begin guint len_of_current_variables = get_real_len(ngspice_table->current_variables) - 2; guint len_of_current_columns = ngspice_table->ngspice_columns->len - 2; guint count_of_variables_already_finished = len_of_current_columns - len_of_current_variables; g_mutex_lock(&progress_reader->progress_mutex); progress_reader->progress = (double)count_of_variables_already_finished / (double)no_of_variables + (double)len_of_current_variables / (double)no_of_variables * (double)get_current_index(ngspice_table) / (double)no_of_data_rows; progress_reader->time = g_get_monotonic_time(); g_mutex_unlock(&progress_reader->progress_mutex); // estimate progress end state = NGSPICE_ANALYSIS_STATE_DATA_SMALL_BLOCK_END; break;} case '\n': state = NGSPICE_ANALYSIS_STATE_DATA_END; break; } break; } case NGSPICE_ANALYSIS_STATE_READ_VARIABLES_OLD: { if ((ret_val.pipe = thread_pipe_pop(ret_val.pipe, (gpointer *)buf, &size)) == NULL) return ret_val; if (*buf[0] != '-') state = NGSPICE_ANALYSIS_STATE_READ_DATA; break; } case NGSPICE_ANALYSIS_STATE_DATA_SMALL_BLOCK_END: { if ((ret_val.pipe = thread_pipe_pop(ret_val.pipe, (gpointer *)buf, &size)) == NULL) return ret_val; switch (*buf[0]) { case 'I': state = NGSPICE_ANALYSIS_STATE_READ_VARIABLES_OLD; break; case ' ': state = NGSPICE_ANALYSIS_STATE_DATA_LARGE_BLOCK_END; break; } break; } case NGSPICE_ANALYSIS_STATE_DATA_LARGE_BLOCK_END: { if ((ret_val.pipe = thread_pipe_pop(ret_val.pipe, (gpointer *)buf, &size)) == NULL) return ret_val; if (*buf[0] == 'I') state = NGSPICE_ANALYSIS_STATE_READ_VARIABLES_NEW; break; } case NGSPICE_ANALYSIS_STATE_DATA_END: break; } } while (state != NGSPICE_ANALYSIS_STATE_DATA_END); ret_val.is_cancel = FALSE; SimulationData *sdata = SIM_DATA (g_new0 (Analysis, 1)); sdata->type = ANALYSIS_TYPE_TRANSIENT; sdata->functions = NULL; gint nodes_nb = ngspice_table->ngspice_columns->len - 2; 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); sdata->var_names = g_new0 (gchar *, nodes_nb + 1); sdata->var_units = g_new0 (gchar *, nodes_nb + 1); sdata->data = g_new0 (GArray *, nodes_nb + 1); sdata->min_data = g_new (gdouble, nodes_nb + 1); sdata->max_data = g_new (gdouble, nodes_nb + 1); for (int i = 0; i < nodes_nb + 1; i++) { NgspiceColumn *column = ngspice_table->ngspice_columns->pdata[i+1]; sdata->var_names[i] = g_strdup(column->name->str); sdata->var_units[i] = g_strdup(column->unit->str); sdata->data[i] = column->data; sdata->min_data[i] = column->min; sdata->max_data[i] = column->max; ngspice_table->ngspice_columns->pdata[i+1] = NULL; } sdata->n_variables = nodes_nb + 1; NgspiceColumn *column = ngspice_table->ngspice_columns->pdata[0]; sdata->got_points = column->data->len; sdata->got_var = nodes_nb + 1; (*num_analysis)++; *resources->analysis = g_list_append (*resources->analysis, sdata); return ret_val; } static ThreadPipe *parse_transient_analysis (NgspiceAnalysisResources *resources) { ParseTransientAnalysisReturnResources ret_res = parse_transient_analysis_resources(resources); ngspice_table_destroy(ret_res.table); if (ret_res.is_cancel && ret_res.pipe) { thread_pipe_set_read_eof(ret_res.pipe); ret_res.pipe = NULL; } return ret_res.pipe; } /** * @resources: caller frees */ static ThreadPipe *parse_fourier_analysis (NgspiceAnalysisResources *resources) { ThreadPipe *pipe = resources->pipe; gchar **buf = &resources->buf; const SimSettings *sim_settings = resources->sim_settings; GList **analysis = resources->analysis; guint *num_analysis = resources->num_analysis; static SimulationData *sdata; static Analysis *data; gsize size; gchar **variables; gint i, n = 0, j, k; gdouble val[3]; gchar **node_ids; gchar *vout; NG_DEBUG ("FOURIER: result str\n>>>\n%s\n<<<", *buf); data = g_new0 (Analysis, 1); sdata = SIM_DATA (data); sdata->type = ANALYSIS_TYPE_FOURIER; sdata->functions = NULL; g_strchug (*buf); ANALYSIS (sdata)->fourier.freq = sim_settings_get_fourier_frequency (sim_settings); vout = sim_settings_get_fourier_vout (sim_settings); node_ids = g_strsplit (vout, " ", 0); for (i = 0; node_ids[i] != NULL; i++) { } g_strfreev (node_ids); g_free (vout); ANALYSIS (sdata)->fourier.nb_var = i + 1; n = ANALYSIS (sdata)->fourier.nb_var; sdata->n_variables = n; sdata->var_names = (char **)g_new0 (gpointer, n); sdata->var_units = (char **)g_new0 (gpointer, n); sdata->var_names[0] = g_strdup ("Frequency"); sdata->var_units[0] = g_strdup (_ ("frequency")); sdata->got_points = 0; sdata->got_var = 0; 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 each output voltage (plus the frequency for the x-axis), // scan its data set for (k = 1; k < n; k++) { variables = get_variables (*buf, &i); if (!variables) return pipe; // Skip data set header (4 lines) for (i = 0; i < 4; i++) pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); sdata->var_names[k] = g_strdup_printf ("mag(%s)", variables[3]); sdata->var_units[k] = g_strdup (_ ("voltage")); // Scan data set for 10 harmonics for (j = 0; j < 10; j++) { pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); if (!pipe) return pipe; sscanf (*buf, "\t%d\t%lf\t%lf\t%lf", &i, &val[0], &val[1], &val[2]); if (k == 1) { sdata->data[0] = g_array_append_val (sdata->data[0], val[0]); if (val[0] < sdata->min_data[0]) sdata->min_data[0] = val[0]; if (val[0] > sdata->max_data[0]) sdata->max_data[0] = val[0]; sdata->data[1] = g_array_append_val (sdata->data[1], val[1]); if (val[1] < sdata->min_data[1]) sdata->min_data[1] = val[1]; if (val[1] > sdata->max_data[1]) sdata->max_data[1] = val[1]; sdata->got_points = sdata->got_points + 2; } else { sdata->data[k] = g_array_append_val (sdata->data[k], val[1]); if (val[1] < sdata->min_data[k]) sdata->min_data[k] = val[1]; if (val[1] > sdata->max_data[k]) sdata->max_data[k] = val[1]; sdata->got_points++; } } pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); if (!pipe) return pipe; pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); if (!pipe) return pipe; } sdata->got_var = n; *analysis = g_list_append (*analysis, sdata); (*num_analysis)++; return pipe; } /** * @resources: caller frees */ static ThreadPipe *parse_noise_analysis (NgspiceAnalysisResources *resources) { ThreadPipe *pipe = resources->pipe; gboolean is_vanilla = resources->is_vanilla; gchar *scale, **variables, **buf = &resources->buf; const SimSettings* const sim_settings = resources->sim_settings; GList **analysis = resources->analysis; guint *num_analysis = resources->num_analysis; static SimulationData *sdata; static Analysis *data; gsize size; gboolean found = FALSE; gint i, n = 0, index = 0; gdouble fstart, fstop, val[10]; NG_DEBUG ("NOISE: result str\n>>>\n%s\n<<<", *buf); data = g_new0 (Analysis, 1); sdata = SIM_DATA (data); sdata->type = ANALYSIS_TYPE_NOISE; sdata->functions = NULL; ANALYSIS (sdata)->noise.sim_length = 1.; ANALYSIS (sdata)->noise.start = fstart = sim_settings_get_noise_start (sim_settings); ANALYSIS (sdata)->noise.stop = fstop = sim_settings_get_noise_stop (sim_settings); scale = sim_settings_get_noise_type (sim_settings); if (!g_ascii_strcasecmp (scale, "LIN")) { ANALYSIS (sdata)->noise.sim_length = (double) sim_settings_get_noise_npoints (sim_settings); } else if (!g_ascii_strcasecmp (scale, "DEC")) { ANALYSIS (sdata)->noise.sim_length = (double) sim_settings_get_noise_npoints (sim_settings) * log10 (fstop / fstart); } else if (!g_ascii_strcasecmp (scale, "OCT")) { ANALYSIS (sdata)->noise.sim_length = (double) sim_settings_get_noise_npoints (sim_settings) * log10 (fstop / fstart) / log10 (2); } pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); // Calculates the number of variables variables = get_variables (*buf, &n); if (!variables) return pipe; n = n - 1; sdata->var_names = (char **)g_new0 (gpointer, 3); sdata->var_units = (char **)g_new0 (gpointer, 3); sdata->var_names[0] = g_strdup ("Frequency"); sdata->var_units[0] = g_strdup (_ ("frequency")); sdata->var_names[1] = g_strdup ("Input Noise Spectrum"); sdata->var_units[1] = g_strdup (_ ("psd")); sdata->var_names[2] = g_strdup ("Output Noise Spectrum"); sdata->var_units[2] = g_strdup (_ ("psd")); sdata->n_variables = 3; sdata->got_points = 0; sdata->got_var = 0; sdata->data = (GArray **)g_new0 (gpointer, 3); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); for (i = 0; i < 3; i++) sdata->data[i] = g_array_new (TRUE, TRUE, sizeof(double)); sdata->min_data = g_new (double, 3); sdata->max_data = g_new (double, 3); // Read the data for (i = 0; i < 3; i++) { sdata->min_data[i] = G_MAXDOUBLE; sdata->max_data[i] = -G_MAXDOUBLE; } found = FALSE; while (!found && ((pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size)) != 0)) { if (strlen (*buf) <= 2) { pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); } variables = get_variables (*buf, &i); if (!variables) return pipe; index = atoi (variables[0]); for (i = 0; i < 3; i++) { val[i] = g_ascii_strtod (variables[i + 1], NULL); sdata->data[i] = g_array_append_val (sdata->data[i], val[i]); if (val[i] < sdata->min_data[i]) sdata->min_data[i] = val[i]; if (val[i] > sdata->max_data[i]) sdata->max_data[i] = val[i]; } sdata->got_points++; if (index >= ANALYSIS (sdata)->noise.sim_length - 1) found = TRUE; } // Spice 3f5 is affected by a sort of bug and prints extra data if (is_vanilla) { while (((pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size)) != 0)) { if (strlen (*buf) < 2) break; } } sdata->got_var = 3; *analysis = g_list_append (*analysis, sdata); (*num_analysis)++; return pipe; } /** * Stores all the data coming through the given pipe to the given file. * This is needed because in case of failure, ngspice prints additional * error information to stdout. * * Maybe the user wants to analyze the ngspice output by external software. */ void ngspice_save (const gchar *path_to_file, ThreadPipe *pipe, CancelInfo *cancel_info) { FILE *file = fopen(path_to_file, "w"); gpointer buf = NULL; gsize size; for (int i = 0; (pipe = thread_pipe_pop(pipe, &buf, &size)) != NULL; i++) { if (size != 0) fwrite(buf, 1, size, file); /** * cancel_info uses mutex operations, so it shouldn't be * called to often. */ if (i % 50 == 0 && cancel_info_is_cancel(cancel_info)) break; } fclose(file); if (pipe != NULL) thread_pipe_set_read_eof(pipe); } static gboolean get_analysis_type(gchar *buf_in, AnalysisType *type_out) { int i = 0; gchar *analysis_name = oregano_engine_get_analysis_name_by_type(i); while (analysis_name) { if (g_str_has_prefix (buf_in, analysis_name)) { *type_out = i; g_free(analysis_name); return TRUE; } g_free(analysis_name); i++; analysis_name = oregano_engine_get_analysis_name_by_type(i); } return FALSE; } static guint64 parse_no_of_data_rows(gchar *line) { gchar **splitted = g_regex_split_simple("No\\. of Data Rows \\: \\D*(\\d+)\\n", line, 0, 0); guint64 no_of_data_rows = g_ascii_strtoull(splitted[1], NULL, 10); g_strfreev(splitted); return no_of_data_rows; } static guint parse_no_of_variables(ThreadPipe *pipe, gchar **buf) { gsize size; for (int i = 0; i < 5; i++) pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); guint no_of_variables = 0; while (**buf != '\n') { no_of_variables++; pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); } return no_of_variables; } /** * @resources: caller frees */ void ngspice_analysis (NgspiceAnalysisResources *resources) { ThreadPipe *pipe = resources->pipe; const SimSettings *sim_settings = resources->sim_settings; AnalysisTypeShared *current = resources->current; gboolean is_vanilla = resources->is_vanilla; gchar **buf = &resources->buf; gsize size; gboolean end_of_output; gboolean transient_enabled = sim_settings_get_trans (sim_settings); gboolean fourier_enabled = sim_settings_get_fourier (sim_settings); gboolean dc_enabled = sim_settings_get_dc (sim_settings); gboolean ac_enabled = sim_settings_get_ac (sim_settings); gboolean noise_enabled = sim_settings_get_noise (sim_settings); if (thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; if (!is_vanilla) { // Get the number of AC Analysis data rows while (ac_enabled && !g_str_has_prefix (*buf, "No. of Data Rows : ")) { if (thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; } if (ac_enabled && g_str_has_prefix(*buf, "No. of Data Rows : ")) resources->no_of_data_rows_ac = parse_no_of_data_rows(*buf); if (ac_enabled && thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; // Get the number of DC Analysis data rows while (dc_enabled && !g_str_has_prefix (*buf, "No. of Data Rows : ")) { if (thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; } if (dc_enabled && g_str_has_prefix(*buf, "No. of Data Rows : ")) resources->no_of_data_rows_dc = parse_no_of_data_rows(*buf); if (dc_enabled && thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; // Get the number of Operating Point Analysis data rows while (!g_str_has_prefix (*buf, "No. of Data Rows : ")) { if (thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; } if (g_str_has_prefix(*buf, "No. of Data Rows : ")) resources->no_of_data_rows_op = parse_no_of_data_rows(*buf); if (thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; // Get the number of Transient Analysis variables while (transient_enabled && !g_str_has_prefix (*buf, "Initial Transient Solution")) { if (thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; } if (transient_enabled && g_str_has_prefix(*buf, "Initial Transient Solution")) resources->no_of_variables = parse_no_of_variables(pipe, buf); if (transient_enabled && thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; // Get the number of Transient Analysis data rows while (transient_enabled && !g_str_has_prefix (*buf, "No. of Data Rows : ")) { if (thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; } if (transient_enabled && g_str_has_prefix(*buf, "No. of Data Rows : ")) resources->no_of_data_rows_transient = parse_no_of_data_rows(*buf); if (transient_enabled && thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; // Get the number of Noise Analysis data rows while (noise_enabled && !g_str_has_prefix (*buf, "No. of Data Rows : ")) { if (thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; } if (noise_enabled && g_str_has_prefix(*buf, "No. of Data Rows : ")) resources->no_of_data_rows_noise = parse_no_of_data_rows(*buf); } else { while (!g_str_has_prefix (*buf, "Operating point information:")) { if (thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; } } while (!g_str_has_suffix (*buf, SP_TITLE)) { if (thread_pipe_pop(pipe, (gpointer *)buf, &size) == NULL) return; } end_of_output = FALSE; for (int i = 0; transient_enabled || fourier_enabled || dc_enabled || ac_enabled || noise_enabled; i++) { AnalysisType analysis_type = ANALYSIS_TYPE_NONE; do { pipe = thread_pipe_pop(pipe, (gpointer *)buf, &size); g_strstrip (*buf); if (!g_ascii_strncasecmp (*buf, "CPU time", 8)) end_of_output = TRUE; NG_DEBUG ("%d buf = %s", i, *buf); } while (pipe != NULL && !end_of_output && (*buf[0] == '*' || *buf[0] == '\0')); // The simulation has finished: no more analysis to parse if (end_of_output) break; if (!get_analysis_type(*buf, &analysis_type) && i == 0) { oregano_warning ("No analysis found"); break; } gboolean unexpected_analysis_found = FALSE; g_mutex_lock(¤t->mutex); current->type = analysis_type; g_mutex_unlock(¤t->mutex); switch (analysis_type) { case ANALYSIS_TYPE_TRANSIENT: pipe = parse_transient_analysis (resources); transient_enabled = FALSE; break; case ANALYSIS_TYPE_FOURIER: pipe = parse_fourier_analysis (resources); fourier_enabled = FALSE; break; case ANALYSIS_TYPE_DC_TRANSFER: pipe = parse_dc_analysis (resources); dc_enabled = FALSE; break; case ANALYSIS_TYPE_AC: pipe = parse_ac_analysis (resources); ac_enabled = FALSE; break; case ANALYSIS_TYPE_NOISE: pipe = parse_noise_analysis (resources); noise_enabled = FALSE; break; default: oregano_warning ("Unexpected analysis found"); unexpected_analysis_found = TRUE; break; } g_mutex_lock(¤t->mutex); current->type = ANALYSIS_TYPE_NONE; g_mutex_unlock(¤t->mutex); if (unexpected_analysis_found || pipe == NULL) break; } if (pipe != NULL) thread_pipe_set_read_eof(pipe); resources->pipe = NULL; } oregano-0.84.41/src/engines/ngspice-watcher.h0000644000175000017500000000376713413640652020026 0ustar rubenruben/* * ngspice-watcher.h * * * Authors: * Michi * * Web page: https://ahoi.io/project/oregano * * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef ENGINES_NGSPICE_WATCHER_H_ #define ENGINES_NGSPICE_WATCHER_H_ #include "../log-interface.h" #include "../sim-settings.h" #include "ngspice-analysis.h" typedef struct _NgspiceWatcherBuildAndLaunchResources NgspiceWatcherBuildAndLaunchResources; /** * This struct has to be public for testing purposes. */ struct _NgspiceWatcherBuildAndLaunchResources { LogInterface log;//in const SimSettings* sim_settings;//in gboolean is_vanilla;//in GPid* child_pid;//out gboolean* aborted;//out //OreganoNgSpice object const void* emit_instance;//in guint* num_analysis;//out ProgressResources* progress_ngspice;//out ProgressResources* progress_reader;//out GList** analysis;//out AnalysisTypeShared* current;//out gchar* ngspice_result_file;//in gchar* netlist_file;//in CancelInfo *cancel_info;//in }; NgspiceWatcherBuildAndLaunchResources *ngspice_watcher_build_and_launch_resources_new(OreganoNgSpice *ngspice); void ngspice_watcher_build_and_launch_resources_finalize(NgspiceWatcherBuildAndLaunchResources *resources); void ngspice_watcher_build_and_launch(const NgspiceWatcherBuildAndLaunchResources *resources); #endif /* ENGINES_NGSPICE_WATCHER_H_ */ oregano-0.84.41/src/engines/engine.h0000644000175000017500000000472013413640652016176 0ustar rubenruben/* * engine.h * * Authors: * Ricardo Markiewicz * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2010 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __ENGINE_H #define __ENGINE_H 1 #include #include "sim-settings.h" #include "schematic.h" #include "simulation.h" #define OREGANO_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), OREGANO_TYPE_ENGINE, OreganoEngine)) #define OREGANO_IS_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), OREGANO_TYPE_ENGINE)) typedef struct _OreganoEngine OreganoEngine; // Engines IDs enum { OREGANO_ENGINE_GNUCAP = 0, OREGANO_ENGINE_SPICE3, OREGANO_ENGINE_NGSPICE, OREGANO_ENGINE_COUNT }; 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_solver (OreganoEngine *engine, double *p); void oregano_engine_get_progress_reader (OreganoEngine *engine, double *p); gboolean oregano_engine_generate_netlist (OreganoEngine *engine, const gchar *file, GError **error); GList *oregano_engine_get_results (OreganoEngine *engine); gchar *oregano_engine_get_current_operation_solver (OreganoEngine *); gchar *oregano_engine_get_current_operation_reader (OreganoEngine *); gboolean oregano_engine_is_available (OreganoEngine *); gchar *oregano_engine_get_analysis_name_by_type(AnalysisType type); gchar *oregano_engine_get_engine_name_by_index (const guint index); gchar *oregano_engine_get_analysis_name (SimulationData *id); #endif oregano-0.84.41/src/engines/engine.c0000644000175000017500000001401313413640652016165 0ustar rubenruben/* * engine.c * * Authors: * Ricardo Markiewicz * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include "engine.h" #include "engine-internal.h" #include "gnucap.h" #include "ngspice.h" static gchar *analysis_names[] = { [ANALYSIS_TYPE_NONE] = N_ ("None"), [ANALYSIS_TYPE_OP_POINT] = N_ ("Operating Point"), [ANALYSIS_TYPE_TRANSIENT] = N_ ("Transient Analysis"), [ANALYSIS_TYPE_DC_TRANSFER] = N_ ("DC transfer characteristic"), [ANALYSIS_TYPE_AC] = N_ ("AC Analysis"), [ANALYSIS_TYPE_TRANSFER] = N_ ("Transfer Function"), [ANALYSIS_TYPE_DISTORTION] = N_ ("Distortion Analysis"), [ANALYSIS_TYPE_NOISE] = N_ ("Noise Spectral Density Curves"), [ANALYSIS_TYPE_POLE_ZERO] = N_ ("Pole-Zero Analysis"), [ANALYSIS_TYPE_SENSITIVITY] = N_ ("Sensitivity Analysis"), [ANALYSIS_TYPE_FOURIER] = N_ ("Fourier analysis"), [ANALYSIS_TYPE_UNKNOWN] = N_ ("Unknown Analysis"), NULL}; // Engines Types static gchar *engine_names[] = { [OREGANO_ENGINE_GNUCAP] = N_ ("gnucap"), [OREGANO_ENGINE_SPICE3] = N_ ("spice3"), [OREGANO_ENGINE_NGSPICE] = N_ ("ngspice"), NULL}; // Signals enum { DONE, ABORTED, LAST_SIGNAL }; static guint engine_signals[LAST_SIGNAL] = {0}; static void oregano_engine_base_init (gpointer g_class); 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; } 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; } } 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_solver (OreganoEngine *self, double *p) { g_return_if_fail(OREGANO_ENGINE_GET_CLASS (self)->progress_solver != NULL); OREGANO_ENGINE_GET_CLASS (self)->progress_solver (self, p); } void oregano_engine_get_progress_reader (OreganoEngine *self, double *p) { g_return_if_fail(OREGANO_ENGINE_GET_CLASS(self)->progress_reader != NULL); OREGANO_ENGINE_GET_CLASS (self)->progress_reader (self, p); } gboolean oregano_engine_generate_netlist (OreganoEngine *self, const gchar *file, GError **error) { return 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_solver (OreganoEngine *self) { g_return_val_if_fail(OREGANO_ENGINE_GET_CLASS (self)->get_operation_solver != NULL, NULL); return OREGANO_ENGINE_GET_CLASS (self)->get_operation_solver (self); } gchar *oregano_engine_get_current_operation_reader (OreganoEngine *self) { g_return_val_if_fail(OREGANO_ENGINE_GET_CLASS (self)->get_operation_reader != NULL, NULL); return OREGANO_ENGINE_GET_CLASS (self)->get_operation_reader (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_SPICE3: engine = oregano_spice_new (sm, TRUE); break; case OREGANO_ENGINE_NGSPICE: engine = oregano_spice_new (sm, FALSE); break; default: engine = NULL; } return engine; } gchar *oregano_engine_get_analysis_name_by_type(AnalysisType type) { return g_strdup(_(analysis_names[type])); } gchar *oregano_engine_get_engine_name_by_index (const guint index) { return g_strdup (_(engine_names[index])); } /** * @sdat: nullable */ gchar *oregano_engine_get_analysis_name (SimulationData *sdat) { if (sdat == NULL) { return g_strdup (_ (analysis_names[ANALYSIS_TYPE_UNKNOWN])); } return g_strdup (_ (analysis_names[sdat->type])); } oregano-0.84.41/src/engines/gnucap.c0000644000175000017500000005025213413640652016202 0ustar rubenruben/* * gnucap.c * * Authors: * Ricardo Markiewicz * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include "gnucap.h" #include "netlist-helper.h" #include "dialogs.h" #include "engine-internal.h" // TODO Move analysis data and result to another file #include "simulation.h" struct analysis_tag { gchar *name; guint len; }; static struct analysis_tag analysis_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(analysis_tags) / sizeof(struct analysis_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; }; #include "debug.h" 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 gdouble strtofloat (char *s); 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 *iter; int i; gnucap = OREGANO_GNUCAP (object); iter = gnucap->priv->analysis; for (; iter; iter = iter->next) { data = SIM_DATA (iter->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_variables; i++) g_array_free (data->data[i], TRUE); g_free (data->min_data); g_free (data->max_data); g_free (iter->data); } 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 gboolean gnucap_generate_netlist (OreganoEngine *engine, const gchar *filename, GError **error) { OreganoGnuCap *gnucap; Netlist output; SimOption *so; GList *iter; 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 FALSE; } file = fopen (filename, "w"); if (!file) { oregano_error (g_strdup_printf ("Creation of file %s not possible\n", filename)); return FALSE; } // Prints title fputs (output.title ? output.title : "Title: ", file); fputs ("\n" "*----------------------------------------------" "\n" "*\tGNUCAP - NETLIST" "\n", file); // Prints Options fputs (".options OUT=120 ", file); iter = sim_settings_get_options (output.settings); for (; iter; iter = iter->next) { so = iter->data; // Prevent send NULL text if (so->value) { if (strlen (so->value) > 0) { g_fprintf (file, "%s=%s ", so->name, so->value); } } } fputc ('\n', file); // Include of subckt models fputs ("*------------- Models -------------------------\n", file); for (iter = output.models; iter; iter = iter->next) { gchar *model; model = (gchar *)iter->data; g_fprintf (file, ".include %s/%s.model\n", OREGANO_MODELDIR, model); } // Prints template parts fputs ("*------------- Circuit Description-------------\n", file); fputs (output.template->str, file); fputs ("\n*----------------------------------------------\n", file); // Prints Transient Analysis if (sim_settings_get_trans (output.settings)) { gchar *tmp_str = netlist_helper_create_analysis_string (output.store, FALSE); g_fprintf (file, ".print tran %s\n", tmp_str); g_free (tmp_str); g_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)) g_fprintf (file, "%g", (sim_settings_get_trans_stop (output.settings) - sim_settings_get_trans_start (output.settings)) / 100); else g_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)) { g_fprintf (file, ".print dc %s\n", netlist_helper_create_analysis_string (output.store, FALSE)); fputs (".dc ", file); // GNUCAP don't support nesting so the first or the second // Maybe an error message must be show if both are on g_fprintf (file, "%s %g %g %g", sim_settings_get_dc_vsrc (output.settings), sim_settings_get_dc_start (output.settings), sim_settings_get_dc_stop (output.settings), sim_settings_get_dc_step (output.settings)); 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 an error message // must be shown if the netlist 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); g_fprintf (file, ".print ac %s\n", netlist_helper_create_analysis_string (output.store, TRUE)); // AC format : ac start stop step_size g_fprintf (file, ".ac %g %g %g\n", ac_start, ac_stop, ac_step); } // Prints analysis using a Fourier transform /* if (sim_settings_get_fourier (output.settings)) { gchar *tmp_str = netlist_helper_create_analysis_string (output.store, FALSE); g_fprintf (file, ".four %d %s\n", sim_settings_get_fourier_frequency (output.settings), tmp_str); g_free (tmp_str); }*/ // Debug op analysis. fputs (".print op v(nodes)\n", file); fputs (".op\n", file); fputs (".end\n", file); fclose (file); return TRUE; } 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); g_spawn_close_pid (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; 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); g_spawn_close_pid (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; } static gchar *gnucap_get_operation (OreganoEngine *self) { OreganoGnuCapPriv *priv = OREGANO_GNUCAP (self)->priv; if (priv->current == NULL) return g_strdup(_("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_solver = gnucap_progress; klass->get_netlist = gnucap_generate_netlist; klass->has_warnings = gnucap_has_warnings; klass->get_results = gnucap_get_results; klass->get_operation_solver = 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; } GCap_Variable; static GCap_Variable *_get_variables (gchar *str, gint *count) { GCap_Variable *out; gchar *tmp[100]; gchar *ini, *fin; gint i = 0; i = 0; ini = str; // Put blank in advance 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; } static 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 (gchar *s) { gdouble val; gchar *error; val = g_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; static char buf[1024]; 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') { buf[priv->buf_count++] = raw[j]; continue; } buf[priv->buf_count] = '\0'; // Got a complete line s = buf; NG_DEBUG ("%s", s); if (s[0] == GNUCAP_TITLE) { SimSettings *sim_settings; gdouble np1; sim_settings = 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->type = ANALYSIS_TYPE_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, analysis_tags[i])) sdata->type = i + 1; 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 ANALYSIS_TYPE_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 ANALYSIS_TYPE_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 ANALYSIS_TYPE_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 ANALYSIS_TYPE_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 ANALYSIS_TYPE_OP_POINT: break; case ANALYSIS_TYPE_DC_TRANSFER: np1 = 1.; data->dc.start = sim_settings_get_dc_start (sim_settings); data->dc.stop = sim_settings_get_dc_stop (sim_settings); data->dc.step = sim_settings_get_dc_step (sim_settings); np1 = (data->dc.stop - data->dc.start) / data->dc.step; data->dc.sim_length = np1; break; case ANALYSIS_TYPE_TRANSFER: case ANALYSIS_TYPE_DISTORTION: case ANALYSIS_TYPE_NOISE: case ANALYSIS_TYPE_POLE_ZERO: case ANALYSIS_TYPE_SENSITIVITY: case ANALYSIS_TYPE_FOURIER: break; case ANALYSIS_TYPE_NONE: g_error (_ ("No analysis")); break; case ANALYSIS_TYPE_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; } val = strtofloat (s); switch (sdata->type) { case ANALYSIS_TYPE_TRANSIENT: priv->progress = val / data->transient.sim_length; break; case ANALYSIS_TYPE_AC: priv->progress = (val - data->ac.start) / data->ac.sim_length; break; case ANALYSIS_TYPE_DC_TRANSFER: priv->progress = val / data->ac.sim_length; break; default: break; } 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 minimum and maximum 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; } priv->buf_count = 0; } } oregano-0.84.41/src/log-interface.h0000644000175000017500000000241113413640652016013 0ustar rubenruben/* * log-interface.h * * * Authors: * Michi * * Web page: https://ahoi.io/project/oregano * * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ /* * Use this interface to get rid of GUI dependencies. For example * if you want to write a unit test in which the test function * needs a log to not throw an exception. */ #ifndef LOG_INTERFACE_H_ #define LOG_INTERFACE_H_ typedef void (*LogFunction)(gpointer log, const char *message); typedef struct { LogFunction log_append; LogFunction log_append_error; gpointer log; } LogInterface; #endif /* LOG_INTERFACE_H_ */ oregano-0.84.41/src/sim-settings.c0000644000175000017500000004021313413640652015717 0ustar rubenruben/* * sim-settings.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include "oregano-utils.h" #include "sim-settings.h" SimSettings *sim_settings_new () { SimSettings *sim_settings; sim_settings = g_new0 (SimSettings, 1); sim_settings->configured = FALSE; sim_settings->simulation_requested = FALSE; // Set some default settings. // transient sim_settings->trans_enable = TRUE; sim_settings->trans_start = g_strdup ("0 s"); sim_settings->trans_stop = g_strdup ("5 ms"); sim_settings->trans_step = g_strdup ("0.1 ms"); sim_settings->trans_step_enable = FALSE; // AC sim_settings->ac_enable = FALSE; sim_settings->ac_vout = g_strdup (""); sim_settings->ac_type = g_strdup ("DEC"); sim_settings->ac_npoints = g_strdup ("50"); sim_settings->ac_start = g_strdup ("1 Hz"); sim_settings->ac_stop = g_strdup ("1 MHz"); // DC sim_settings->dc_enable = FALSE; sim_settings->dc_vin = g_strdup (""); sim_settings->dc_vout = g_strdup (""); sim_settings->dc_start = g_strdup (""); sim_settings->dc_stop = g_strdup (""); sim_settings->dc_step = g_strdup (""); // Fourier sim_settings->fourier_enable = FALSE; sim_settings->fourier_frequency = g_strdup ("1 MHz"); sim_settings->fourier_vout = NULL; // Noise sim_settings->noise_enable = FALSE; sim_settings->noise_vin = g_strdup (""); sim_settings->noise_vout = g_strdup (""); sim_settings->noise_type = g_strdup ("DEC"); sim_settings->noise_npoints = g_strdup ("50"); sim_settings->noise_start = g_strdup ("1 Hz"); sim_settings->noise_stop = g_strdup ("1 MHz"); sim_settings->options = NULL; return sim_settings; } static void sim_option_finalize(SimOption *option) { g_free(option->name); g_free(option->value); g_free(option); } void sim_settings_finalize(SimSettings *sim_settings) { // Set some default settings. // transient g_free(sim_settings->trans_start); g_free(sim_settings->trans_stop); g_free(sim_settings->trans_step); // AC g_free(sim_settings->ac_vout); g_free(sim_settings->ac_type); g_free(sim_settings->ac_npoints); g_free(sim_settings->ac_start); g_free(sim_settings->ac_stop); // DC g_free(sim_settings->dc_vin); g_free(sim_settings->dc_vout); g_free(sim_settings->dc_start); g_free(sim_settings->dc_stop); g_free(sim_settings->dc_step); // Fourier sim_settings->fourier_enable = FALSE; g_free(sim_settings->fourier_frequency); if (sim_settings->fourier_vout != NULL) g_slist_free_full(sim_settings->fourier_vout, g_free); // Noise g_free(sim_settings->noise_vin); g_free(sim_settings->noise_vout); g_free(sim_settings->noise_type); g_free(sim_settings->noise_npoints); g_free(sim_settings->noise_start); g_free(sim_settings->noise_stop); if (sim_settings->options != NULL) g_list_free_full(sim_settings->options, (GDestroyNotify)sim_option_finalize); g_free(sim_settings); } gchar *fourier_add_vout(SimSettings *sim_settings, guint node_index) { gboolean result; guint i; gchar *ret_val = NULL; gchar *text; gchar **node_ids; GSList *node_slist; // Is the node identifier for the output vector already // stored in the fourier_vout list ? node_slist = g_slist_copy (sim_settings->fourier_vout); result = FALSE; while (node_slist) { if ((node_index - 1) == atoi (node_slist->data)) { result = TRUE; } node_slist = node_slist->next; } g_slist_free_full (node_slist, g_free); // If the output vector is not already in the fourier_vout list // then add it to the list and return the updated list. // Otherwise, simply return the existing list of output vectors. if (!result) { // Add Node (node_index-1) at the end of fourier_vout text = g_strdup_printf ("%d", node_index - 1); sim_settings->fourier_vout = g_slist_append (sim_settings->fourier_vout, text); // Update the fourier_vout widget node_slist = g_slist_copy (sim_settings->fourier_vout); if (node_slist) { if (node_slist->data && atoi (node_slist->data) > 0) ret_val = g_strdup_printf ("V(%d)", atoi (node_slist->data)); node_slist = node_slist->next; } while (node_slist) { if (node_slist->data && atoi (node_slist->data) > 0) { if (ret_val) { text = ret_val; ret_val = g_strdup_printf ("%s V(%d)", ret_val, atoi (node_slist->data)); g_free (text); } else { ret_val = g_strdup_printf ("V(%d)", atoi (node_slist->data)); } } node_slist = node_slist->next; } g_slist_free_full (node_slist, g_free); } else { text = sim_settings_get_fourier_vout (sim_settings); node_ids = g_strsplit (text, " ", 0); for (i = 0; node_ids[i] != NULL; i++) { if (node_ids[i] && atoi (node_ids[i]) > 0) { if (ret_val) { text = ret_val; ret_val = g_strdup_printf ("%s V(%d)", ret_val, atoi (node_ids[i])); g_free (text); } else { ret_val = g_strdup_printf ("V(%d)", atoi (node_ids[i])); } } } g_strfreev (node_ids); } if (!ret_val) ret_val = g_strdup (""); return ret_val; } gboolean sim_settings_get_trans (const SimSettings *sim_settings) { return sim_settings->trans_enable; } gboolean sim_settings_get_trans_init_cond (const SimSettings *sim_settings) { return sim_settings->trans_init_cond; } gboolean sim_settings_get_trans_analyze_all (const SimSettings *sim_settings) { return sim_settings->trans_analyze_all; } gdouble sim_settings_get_trans_start (const SimSettings *sim_settings) { gchar *text = sim_settings->trans_start; return oregano_strtod (text, "s"); } gdouble sim_settings_get_trans_stop (const SimSettings *sim_settings) { gchar *text = sim_settings->trans_stop; return oregano_strtod (text, "s"); } gdouble sim_settings_get_trans_step (const SimSettings *sim_settings) { gchar *text = sim_settings->trans_step; return oregano_strtod (text, "s"); } gdouble sim_settings_get_trans_step_enable (const SimSettings *sim_settings) { return sim_settings->trans_step_enable; } void sim_settings_set_trans (SimSettings *sim_settings, gboolean enable) { sim_settings->trans_enable = enable; } void sim_settings_set_trans_start (SimSettings *sim_settings, gchar *str) { if (sim_settings->trans_start) g_strdup (sim_settings->trans_start); sim_settings->trans_start = g_strdup (str); } void sim_settings_set_trans_init_cond (SimSettings *sim_settings, gboolean enable) { sim_settings->trans_init_cond = enable; } void sim_settings_set_trans_analyze_all (SimSettings *sim_settings, gboolean enable) { sim_settings->trans_analyze_all = enable; } void sim_settings_set_trans_stop (SimSettings *sim_settings, gchar *str) { if (sim_settings->trans_stop) g_strdup (sim_settings->trans_stop); sim_settings->trans_stop = g_strdup (str); } void sim_settings_set_trans_step (SimSettings *sim_settings, gchar *str) { if (sim_settings->trans_step) g_strdup (sim_settings->trans_step); sim_settings->trans_step = g_strdup (str); } void sim_settings_set_trans_step_enable (SimSettings *sim_settings, gboolean enable) { sim_settings->trans_step_enable = enable; } gboolean sim_settings_get_ac (const SimSettings *sim_settings) { return sim_settings->ac_enable; } gchar *sim_settings_get_ac_vout (const SimSettings *sim_settings) { return sim_settings->ac_vout; } gchar *sim_settings_get_ac_type (const SimSettings *sim_settings) { return sim_settings->ac_type; } gint sim_settings_get_ac_npoints (const SimSettings *sim_settings) { return atoi (sim_settings->ac_npoints); } gdouble sim_settings_get_ac_start (const SimSettings *sim_settings) { return oregano_strtod (sim_settings->ac_start, "Hz"); } gdouble sim_settings_get_ac_stop (const SimSettings *sim_settings) { return oregano_strtod (sim_settings->ac_stop, "Hz"); } void sim_settings_set_ac (SimSettings *sim_settings, gboolean enable) { sim_settings->ac_enable = enable; } void sim_settings_set_ac_vout (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->ac_vout); sim_settings->ac_vout = g_strdup (str); } void sim_settings_set_ac_type (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->ac_type); sim_settings->ac_type = g_strdup (str); } void sim_settings_set_ac_npoints (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->ac_npoints); sim_settings->ac_npoints = g_strdup (str); } void sim_settings_set_ac_start (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->ac_start); sim_settings->ac_start = g_strdup (str); } void sim_settings_set_ac_stop (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->ac_stop); sim_settings->ac_stop = g_strdup (str); } gboolean sim_settings_get_dc (const SimSettings *sim_settings) { return sim_settings->dc_enable; } gchar *sim_settings_get_dc_vsrc (const SimSettings *sim_settings) { return sim_settings->dc_vin; } gchar *sim_settings_get_dc_vout (const SimSettings *sim_settings) { return sim_settings->dc_vout; } gdouble sim_settings_get_dc_start (const SimSettings *sim_settings) { return oregano_strtod (sim_settings->dc_start, "V"); } gdouble sim_settings_get_dc_stop (const SimSettings *sim_settings) { return oregano_strtod (sim_settings->dc_stop, "V"); } gdouble sim_settings_get_dc_step (const SimSettings *sim_settings) { return oregano_strtod (sim_settings->dc_step, "V"); } void sim_settings_set_dc (SimSettings *sim_settings, gboolean enable) { sim_settings->dc_enable = enable; } void sim_settings_set_dc_vsrc (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->dc_vin); sim_settings->dc_vin = g_strdup (str); } void sim_settings_set_dc_vout (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->dc_vout); sim_settings->dc_vout = g_strdup (str); } void sim_settings_set_dc_start (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->dc_start); sim_settings->dc_start = g_strdup (str); } void sim_settings_set_dc_stop (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->dc_stop); sim_settings->dc_stop = g_strdup (str); } void sim_settings_set_dc_step (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->dc_step); sim_settings->dc_step = g_strdup (str); } void sim_settings_set_fourier (SimSettings *sim_settings, gboolean enable) { sim_settings->fourier_enable = enable; } void sim_settings_set_fourier_frequency (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->fourier_frequency); sim_settings->fourier_frequency = g_strdup (str); } void sim_settings_set_fourier_vout (SimSettings *sim_settings, gchar *str) { gchar **node_ids = NULL; gint i; if (!str) return; g_slist_free_full (sim_settings->fourier_vout, g_free); sim_settings->fourier_vout = NULL; node_ids = g_strsplit (str, " ", 0); for (i = 0; node_ids[i] != NULL; i++) { if (node_ids[i]) sim_settings->fourier_vout = g_slist_append (sim_settings->fourier_vout, g_strdup (node_ids[i])); } g_strfreev (node_ids); } gboolean sim_settings_get_fourier (const SimSettings *sim_settings) { return sim_settings->fourier_enable; } gdouble sim_settings_get_fourier_frequency (const SimSettings *sim_settings) { return oregano_strtod (sim_settings->fourier_frequency, "Hz"); } gchar *sim_settings_get_fourier_vout (const SimSettings *sim_settings) { GSList *node_slist; gchar *text, *text2; gchar *ret_val = NULL; text = NULL; node_slist = g_slist_copy (sim_settings->fourier_vout); if (node_slist) { if (node_slist->data && atoi (node_slist->data) > 0) text = g_strdup_printf ("%d", atoi (node_slist->data)); node_slist = node_slist->next; } while (node_slist) { if (node_slist->data && atoi (node_slist->data) > 0) { if (text) { text2 = text; text = g_strdup_printf ("%s %d", text, atoi (node_slist->data)); g_free (text2); } else { text = g_strdup_printf ("%d", atoi (node_slist->data)); } } node_slist = node_slist->next; } g_slist_free_full (node_slist, g_free); if (text) ret_val = text; else ret_val = g_strdup (""); return ret_val; } gchar *sim_settings_get_fourier_nodes (const SimSettings *sim_settings) { GSList *node_slist; gchar *ret_val = NULL; gchar *text, *text2; text = NULL; node_slist = g_slist_copy (sim_settings->fourier_vout); if (node_slist) { if (node_slist->data && atoi (node_slist->data) > 0) text = g_strdup_printf ("V(%d)", atoi (node_slist->data)); node_slist = node_slist->next; } while (node_slist) { if (node_slist->data && atoi (node_slist->data) > 0) { if (text) { text2 = text; text = g_strdup_printf ("%s V(%d)", text, atoi (node_slist->data)); g_free (text2); } else { text = g_strdup_printf ("V(%d)", atoi (node_slist->data)); } } node_slist = node_slist->next; } if (text) ret_val = text; else ret_val = g_strdup (""); g_slist_free_full (node_slist, g_free); return ret_val; } gboolean sim_settings_get_noise (const SimSettings *sim_settings) { return sim_settings->noise_enable; } gchar *sim_settings_get_noise_vsrc (const SimSettings *sim_settings) { return sim_settings->noise_vin; } gchar *sim_settings_get_noise_vout (const SimSettings *sim_settings) { return sim_settings->noise_vout; } gchar *sim_settings_get_noise_type (const SimSettings *sim_settings) { return sim_settings->noise_type; } gint sim_settings_get_noise_npoints (const SimSettings *sim_settings) { return atoi (sim_settings->noise_npoints); } gdouble sim_settings_get_noise_start (const SimSettings *sim_settings) { return oregano_strtod (sim_settings->noise_start, "Hz"); } gdouble sim_settings_get_noise_stop (const SimSettings *sim_settings) { return oregano_strtod (sim_settings->noise_stop, "Hz"); } void sim_settings_set_noise (SimSettings *sim_settings, gboolean enable) { sim_settings->noise_enable = enable; } void sim_settings_set_noise_vsrc (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->noise_vin); sim_settings->noise_vin = g_strdup (str); } void sim_settings_set_noise_vout (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->noise_vout); sim_settings->noise_vout = g_strdup (str); } void sim_settings_set_noise_type (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->noise_type); sim_settings->noise_type = g_strdup (str); } void sim_settings_set_noise_npoints (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->noise_npoints); sim_settings->noise_npoints = g_strdup (str); } void sim_settings_set_noise_start (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->noise_start); sim_settings->noise_start = g_strdup (str); } void sim_settings_set_noise_stop (SimSettings *sim_settings, gchar *str) { g_free (sim_settings->noise_stop); sim_settings->noise_stop = g_strdup (str); } GList *sim_settings_get_options (const SimSettings *sim_settings) { g_return_val_if_fail (sim_settings != NULL, NULL); return sim_settings->options; } void sim_settings_add_option (SimSettings *sim_settings, SimOption *opt) { GList *iter; // Remove the option if already in the list. for (iter = sim_settings->options; iter; iter = iter->next) { SimOption *so = iter->data; if (so && !strcmp (opt->name, so->name)) { g_free (so->name); g_free (so->value); sim_settings->options = g_list_remove (sim_settings->options, so); sim_option_finalize(so); } } sim_settings->options = g_list_append (sim_settings->options, opt); } oregano-0.84.41/src/xml-compat.h0000644000175000017500000000242513413640652015362 0ustar rubenruben/* * xml-compat.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __XML_COMPAT_H #define __XML_COMPAT_H #include #include #define root children #define childs children #endif /* __XML_COMPAT_H */ oregano-0.84.41/src/settings.h0000644000175000017500000000251713413640652015143 0ustar rubenruben/* * settings.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __SETTINGS_H #define __SETTINGS_H #include #include "schematic.h" #include "schematic-view.h" #include "engine.h" void settings_show (GtkWidget *widget, SchematicView *sv); gpointer settings_new (Schematic *sm); #endif oregano-0.84.41/src/load-schematic.h0000644000175000017500000000243113413640652016153 0ustar rubenruben/* * load-schematic.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __LOAD_SCHEMATIC_H #define __LOAD_SCHEMATIC_H #include #include "schematic.h" gint schematic_parse_xml_file (Schematic *sm, const gchar *filename, GError **); #endif oregano-0.84.41/src/oregano-convert0000755000175000017500000000055413413640652016167 0ustar rubenruben#!/usr/bin/perl # Fix the namespace. while (<>) { if (// xmlns:ogo="http:\/\/www.dtek.chalmers.se\/~d4hult\/oregano\/v1">/; print; last; } if (/) { if (/<[a-zA-Z]/) { s/ * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __WIRE_H #define __WIRE_H #include #include "coords.h" #include "clipboard.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" #include "grid.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 (); 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, Coords *pos); void wire_get_end_pos (Wire *wire, Coords *pos); void wire_get_start_and_end_pos (Wire *wire, Coords *start, Coords *end); void wire_get_pos_and_length (Wire *wire, Coords *pos, Coords *length); void wire_set_pos (Wire *wire, Coords *pos); void wire_set_length (Wire *wire, Coords *length); gint wire_is_visited (Wire *wire); void wire_set_visited (Wire *wire, gboolean is_visited); void wire_delete (Wire *wire); void wire_update_bbox (Wire *wire); void wire_dbg_print (Wire *w); #endif oregano-0.84.41/src/model/schematic.c0000644000175000017500000007241113413640652016336 0ustar rubenruben/* * schematic.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include "schematic.h" #include "node-store.h" #include "file-manager.h" #include "settings.h" #include "../sim-settings-gui.h" #include "simulation.h" #include "errors.h" #include "schematic-print-context.h" #include "log.h" #include "debug.h" typedef struct _SchematicsPrintOptions { GtkColorButton *components; GtkColorButton *labels; GtkColorButton *wires; GtkColorButton *text; GtkColorButton *background; } SchematicPrintOptions; struct _SchematicPriv { char *oregano_version; char *title; char *filename; char *author; char *comments; char *netlist_filename; SchematicColors colors; SchematicPrintOptions *printoptions; // Data for various dialogs. gpointer settings; SimSettingsGui *sim_settings; gpointer simulation; GList *current_items; NodeStore *store; GHashTable *symbols; GHashTable *refdes_values; guint width; guint height; double zoom; gboolean dirty; Log *logstore; GtkTextBuffer *log; GtkTextTag *tag_error; }; enum { TITLE_CHANGED, ITEM_DATA_ADDED, LOG_UPDATED, NODE_DOT_ADDED, NODE_DOT_REMOVED, LAST_SCHEMATIC_DESTROYED, LAST_SIGNAL }; G_DEFINE_TYPE (Schematic, schematic, G_TYPE_OBJECT); 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 item_moved_callback (ItemData *data, Coords *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; 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[NODE_DOT_ADDED] = g_signal_new ("node_dot_added", TYPE_SCHEMATIC, G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (SchematicClass, node_dot_added), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); schematic_signals[NODE_DOT_REMOVED] = g_signal_new ("node_dot_removed", TYPE_SCHEMATIC, G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (SchematicClass, node_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 node_dot_added_callback (NodeStore *store, Coords *pos, Schematic *schematic) { g_return_if_fail (schematic != NULL); g_return_if_fail (IS_SCHEMATIC (schematic)); g_signal_emit_by_name (schematic, "node_dot_added", pos); } static void node_dot_removed_callback (NodeStore *store, Coords *pos, Schematic *schematic) { g_return_if_fail (schematic != NULL); g_return_if_fail (IS_SCHEMATIC (schematic)); g_signal_emit_by_name (schematic, "node_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 = 1.0; priv->colors.components.green = 0; priv->colors.components.blue = 0; priv->colors.components.alpha = 1.0; priv->colors.labels.red = 0; priv->colors.labels.green = 0.5451; priv->colors.labels.blue = 0.5451; priv->colors.labels.alpha = 1.0; priv->colors.wires.red = 0; priv->colors.wires.green = 0; priv->colors.wires.blue = 1.0; priv->colors.wires.alpha = 1.0; priv->colors.text.red = 1.0; priv->colors.text.green = 1.0; priv->colors.text.blue = 1.0; priv->colors.text.alpha = 1.0; priv->symbols = g_hash_table_new (g_str_hash, g_str_equal); priv->refdes_values = g_hash_table_new (g_str_hash, g_str_equal); priv->store = node_store_new (); priv->width = 0; priv->height = 0; priv->dirty = FALSE; priv->logstore = log_new (); priv->log = gtk_text_buffer_new (NULL); // LEGACY priv->tag_error = gtk_text_buffer_create_tag (priv->log, "error", "foreground", "red", "weight", PANGO_WEIGHT_BOLD, NULL); g_signal_connect_object (priv->store, "node_dot_added", G_CALLBACK (node_dot_added_callback), G_OBJECT (schematic), G_CONNECT_AFTER); g_signal_connect_object (priv->store, "node_dot_removed", G_CALLBACK (node_dot_removed_callback), G_OBJECT (schematic), G_CONNECT_AFTER); priv->sim_settings = sim_settings_gui_new (schematic); priv->settings = settings_new (schematic); priv->simulation = simulation_new (schematic, priv->logstore); priv->filename = NULL; priv->netlist_filename = NULL; priv->author = g_strdup (g_get_user_name ()); 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->current_items; list; list = list->next) g_object_weak_unref (G_OBJECT (list->data), item_data_destroy_callback, G_OBJECT (schematic)); g_clear_object (&schematic->priv->log); schematic_count_--; schematic_list = g_list_remove (schematic_list, schematic); if (schematic_count_ == 0) { g_signal_emit_by_name (schematic, "last_schematic_destroyed", NULL); } g_list_free_full (list, g_object_unref); G_OBJECT_CLASS (parent_class)->dispose (G_OBJECT (schematic)); } static void schematic_finalize (GObject *object) { Schematic *sm = SCHEMATIC (object); SchematicPriv *priv = sm->priv; if (priv) { g_free (priv->simulation); g_hash_table_destroy (priv->symbols); g_hash_table_destroy (priv->refdes_values); g_clear_object (&priv->store); g_clear_object (&priv->logstore); g_free (priv->netlist_filename); g_free (priv->comments); g_free (priv->author); g_free (priv->filename); g_free (priv->settings); sim_settings_gui_finalize(priv->sim_settings); g_free (priv); } G_OBJECT_CLASS (parent_class)->finalize (G_OBJECT (sm)); } 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_version (Schematic *schematic) { g_return_val_if_fail (schematic != NULL, NULL); g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL); return schematic->priv->oregano_version; } 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; g_free (schematic->priv->title); schematic->priv->title = g_strdup (title); g_signal_emit_by_name (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; g_free (schematic->priv->author); schematic->priv->author = g_strdup (author); } void schematic_set_version (Schematic *schematic, const gchar *oregano_version) { g_return_if_fail (schematic != NULL); g_return_if_fail (IS_SCHEMATIC (schematic)); if (!oregano_version) return; g_free (schematic->priv->oregano_version); schematic->priv->oregano_version = g_strdup (oregano_version); } void schematic_set_comments (Schematic *schematic, const gchar *comments) { g_return_if_fail (schematic != NULL); g_return_if_fail (IS_SCHEMATIC (schematic)); 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)); g_free (schematic->priv->netlist_filename); schematic->priv->netlist_filename = g_strdup (filename); } guint schematic_get_width (const Schematic *schematic) { g_return_val_if_fail (schematic != NULL, 0.); g_return_val_if_fail (IS_SCHEMATIC (schematic), 0.); return schematic->priv->width; } void schematic_set_width (Schematic *schematic, const guint width) { g_return_if_fail (schematic != NULL); g_return_if_fail (IS_SCHEMATIC (schematic)); schematic->priv->width = width; } guint schematic_get_height (const Schematic *schematic) { g_return_val_if_fail (schematic != NULL, 0.); g_return_val_if_fail (IS_SCHEMATIC (schematic), 0.); return schematic->priv->height; } void schematic_set_height (Schematic *schematic, const guint height) { g_return_if_fail (schematic != NULL); g_return_if_fail (IS_SCHEMATIC (schematic)); schematic->priv->height = height; } 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; } 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; } SimSettings *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->sim_settings; } SimSettingsGui *schematic_get_sim_settings_gui (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; } Log *schematic_get_log_store (Schematic *schematic) { g_return_val_if_fail (schematic != NULL, NULL); g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL); return schematic->priv->logstore; } void schematic_log_append (Schematic *schematic, const char *message) { g_return_if_fail (schematic != NULL); g_return_if_fail (IS_SCHEMATIC (schematic)); log_append (schematic->priv->logstore, "Schematic Info", message); // LEGACY 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; log_append (schematic->priv->logstore, "simulation engine Error", message); // LEGACY 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 (schematic, "log_updated", schematic->priv->log); } void schematic_log_clear (Schematic *schematic) { 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 (const char *name, GError **error) { Schematic *new_sm; const char *fname; GError *e = NULL; FileType *ft; g_return_val_if_fail (name != NULL, NULL); fname = g_filename_from_uri (name, NULL, &e); if (!fname) { fname = name; g_clear_error (&e); } if (!g_file_test (fname, G_FILE_TEST_EXISTS)) { g_set_error (error, OREGANO_ERROR, OREGANO_SCHEMATIC_FILE_NOT_FOUND, _ ("File %s does not exist."), fname); return NULL; } // Get File Handler ft = file_manager_get_handler (fname); if (ft == NULL) { g_set_error (error, OREGANO_ERROR, OREGANO_SCHEMATIC_FILE_NOT_FOUND, _ ("Unknown file format for %s."), fname); return NULL; } new_sm = schematic_new (); ft->load_func (new_sm, fname, &e); if (e) { g_propagate_error (error, e); g_clear_object (&new_sm); return NULL; } schematic_set_dirty (new_sm, FALSE); return new_sm; } gint schematic_save_file (Schematic *sm, GError **error) { FileType *ft; GError *e = 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, &e)) { schematic_set_title (sm, g_path_get_basename (sm->priv->filename)); schematic_set_dirty (sm, FALSE); return TRUE; } g_propagate_error (error, e); return FALSE; // Save fails! } /** * \brief add an ItemData object to a Schematic * * @param sm the schematic the item will be added to * @param data fully initilalized ItemData object */ void schematic_add_item (Schematic *sm, ItemData *data) { NodeStore *store; char *prefix = NULL, *refdes = NULL; int num; g_return_if_fail (sm); g_return_if_fail (IS_SCHEMATIC (sm)); g_return_if_fail (data); g_return_if_fail (IS_ITEM_DATA (data)); store = sm->priv->store; g_assert (store); g_assert (IS_NODE_STORE (store)); g_object_set (G_OBJECT (data), "store", store, NULL); // item data will call the child register function // for parts e.g. this ends up in // which requires a valid position to add the node dots if (item_data_register (data) == -1) { return; } // Some items need a reference designator, so get 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->current_items = g_list_prepend (sm->priv->current_items, data); g_object_weak_ref (G_OBJECT (data), item_data_destroy_callback, G_OBJECT (sm)); sm->priv->dirty = TRUE; // if the item gets moved mark the schematic as dirty g_signal_connect_object (data, "moved", G_CALLBACK (item_moved_callback), sm, 0); // causes a canvas item (view) to be generated g_signal_emit_by_name (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->current_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->current_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->current_items = g_list_remove (sm->priv->current_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 item_moved_callback (ItemData *data, Coords *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); } GdkRGBA convert_to_grayscale (GdkRGBA *source) { GdkRGBA color; gdouble factor; factor = source->red * 0.299 + source->green * 0.587 + source->blue * 0.114; color.red = factor; color.green = factor; color.blue = factor; color.alpha = source->alpha; return color; } void schematic_export (Schematic *sm, const gchar *filename, gint img_w, gint img_h, int bg, int color, int format) { NodeRect bbox; NodeStore *store; cairo_surface_t *surface; cairo_t *cr; 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); 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) { NodeStore *store; NodeRect bbox; gdouble page_w, page_h; page_w = gtk_print_context_get_width (context); page_h = gtk_print_context_get_height (context); 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) { GtkBuilder *gui; GError *perror = NULL; if ((gui = gtk_builder_new ()) == NULL) { return G_OBJECT (gtk_label_new (_ ("Error loading print-options.ui"))); } if (gtk_builder_add_from_file (gui, OREGANO_UIDIR "/print-options.ui", &perror) <= 0) { g_error_free (perror); return G_OBJECT (gtk_label_new (_ ("Error loading print-options.ui"))); } g_free (sm->priv->printoptions); sm->priv->printoptions = g_new0 (SchematicPrintOptions, 1); sm->priv->printoptions->components = GTK_COLOR_BUTTON (gtk_builder_get_object (gui, "color_components")); sm->priv->printoptions->labels = GTK_COLOR_BUTTON (gtk_builder_get_object (gui, "color_labels")); sm->priv->printoptions->wires = GTK_COLOR_BUTTON (gtk_builder_get_object (gui, "color_wires")); sm->priv->printoptions->text = GTK_COLOR_BUTTON (gtk_builder_get_object (gui, "color_text")); sm->priv->printoptions->background = GTK_COLOR_BUTTON (gtk_builder_get_object (gui, "color_background")); // Set default colors gtk_color_chooser_set_rgba ( GTK_COLOR_CHOOSER (gtk_builder_get_object (gui, "color_components")), &sm->priv->colors.components); gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (gtk_builder_get_object (gui, "color_labels")), &sm->priv->colors.labels); gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (gtk_builder_get_object (gui, "color_wires")), &sm->priv->colors.wires); gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (gtk_builder_get_object (gui, "color_text")), &sm->priv->colors.text); gtk_color_chooser_set_rgba ( GTK_COLOR_CHOOSER (gtk_builder_get_object (gui, "color_background")), &sm->priv->colors.background); return gtk_builder_get_object (gui, "widget"); } static void read_print_options (GtkPrintOperation *operation, GtkWidget *widget, Schematic *sm) { SchematicPrintOptions *colors = sm->priv->printoptions; gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (colors->components), &sm->priv->colors.components); gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (colors->labels), &sm->priv->colors.labels); gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (colors->wires), &sm->priv->colors.wires); gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (colors->text), &sm->priv->colors.text); gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (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 (); if (settings != NULL) 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) { } else if (res == GTK_PRINT_OPERATION_RESULT_APPLY) { if (settings != NULL) g_object_unref (settings); settings = g_object_ref (gtk_print_operation_get_print_settings (op)); } g_object_unref (op); } oregano-0.84.41/src/model/schematic-print-context.h0000644000175000017500000000266513413640652021163 0ustar rubenruben/* * schematic-print-context.h * * * Authors: * Ricardo Markiewicz * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef _SCHEMATIC_PRINT_CONTEXT_ #define _SCHEMATIC_PRINT_CONTEXT_ #include typedef struct _SchematicColors { GdkRGBA components; GdkRGBA labels; GdkRGBA wires; GdkRGBA text; GdkRGBA background; } SchematicColors; typedef struct _SchematicPrintContext { SchematicColors colors; } SchematicPrintContext; #endif oregano-0.84.41/src/model/item-data.c0000644000175000017500000003273013413640652016243 0ustar rubenruben/* * item-data.c * * ItemData object: part and wire model superclass. * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "item-data.h" #include "node-store.h" #include "debug.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); enum { ARG_0, ARG_STORE, ARG_POS }; enum { MOVED, ROTATED, FLIPPED, CHANGED, // used to notify the view to reset and recalc the transformation HIGHLIGHT, LAST_SIGNAL }; struct _ItemDataPriv { NodeStore *store; // modificator matrices cairo_matrix_t translate; cairo_matrix_t rotate; cairo_matrix_t flip; // Bounding box GooCanvasBounds bounds; }; G_DEFINE_TYPE (ItemData, item_data, G_TYPE_OBJECT); static guint item_data_signals[LAST_SIGNAL] = {0}; static void item_data_init (ItemData *item_data) { ItemDataPriv *priv; priv = g_slice_new0 (ItemDataPriv); priv->bounds.x1 = priv->bounds.x2 = priv->bounds.y1 = priv->bounds.y2 = 0; cairo_matrix_init_identity (&(priv->translate)); cairo_matrix_init_identity (&(priv->rotate)); cairo_matrix_init_identity (&(priv->flip)); item_data->priv = priv; } static void item_data_dispose (GObject *object) { ItemDataPriv *priv = ITEM_DATA (object)->priv; // Remove the item from the sheet node store if there. if (priv->store) { item_data_unregister (ITEM_DATA (object)); } g_slice_free (ItemDataPriv, priv); G_OBJECT_CLASS (item_data_parent_class)->dispose (object); } static void item_data_finalize (GObject *object) { g_return_if_fail (object != NULL); G_OBJECT_CLASS (item_data_parent_class)->finalize (object); } static void item_data_class_init (ItemDataClass *klass) { GObjectClass *object_class; item_data_parent_class = g_type_class_peek_parent (klass); object_class = G_OBJECT_CLASS (klass); // This assignment must be performed before the call // to 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[CHANGED] = g_signal_new ("changed", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); 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; klass->changed = NULL; // Signals. klass->moved = NULL; } //////////////////////////////////////////////////////////////////////////////// // END BOILER PLATE //////////////////////////////////////////////////////////////////////////////// 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: G_OBJECT_WARN_INVALID_PROPERTY_ID (item_data, prop_id, spec); } } 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); } } /** * returns the top left corner of the item */ void item_data_get_pos (ItemData *item_data, Coords *pos) { g_return_if_fail (item_data != NULL); g_return_if_fail (IS_ITEM_DATA (item_data)); g_return_if_fail (pos != NULL); ItemDataPriv *priv; priv = item_data->priv; pos->x = priv->translate.x0; pos->y = priv->translate.y0; } void item_data_set_pos (ItemData *item_data, Coords *pos) { ItemDataPriv *priv; gboolean handler_connected; g_return_if_fail (pos); g_return_if_fail (item_data); g_return_if_fail (IS_ITEM_DATA (item_data)); priv = item_data->priv; cairo_matrix_init_translate (&(priv->translate), pos->x, pos->y); handler_connected = g_signal_handler_is_connected (G_OBJECT (item_data), item_data->moved_handler_id); if (handler_connected) { g_signal_emit_by_name (G_OBJECT (item_data), "moved", pos); } handler_connected = g_signal_handler_is_connected (G_OBJECT (item_data), item_data->changed_handler_id); if (handler_connected) { g_signal_emit_by_name (G_OBJECT (item_data), "changed"); } } void item_data_move (ItemData *item_data, const Coords *delta) { ItemDataPriv *priv; g_return_if_fail (item_data != NULL); g_return_if_fail (IS_ITEM_DATA (item_data)); if (delta == NULL) return; if (fabs (delta->x) < 1e-2 && fabs (delta->y) < 1e-2) return; priv = item_data->priv; cairo_matrix_translate (&(priv->translate), delta->x, delta->y); g_signal_emit_by_name (G_OBJECT (item_data), "changed"); } // NodeStore * gpointer 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->translate = src->priv->translate; dest->priv->rotate = src->priv->rotate; dest->priv->flip = src->priv->flip; dest->priv->store = NULL; } void item_data_get_relative_bbox (ItemData *data, Coords *p1, Coords *p2) { g_return_if_fail (data != NULL); g_return_if_fail (IS_ITEM_DATA (data)); if (p1) { p1->x = data->priv->bounds.x1; p1->y = data->priv->bounds.y1; } if (p2) { p2->x = data->priv->bounds.x2; p2->y = data->priv->bounds.y2; } } void item_data_get_absolute_bbox (ItemData *data, Coords *p1, Coords *p2) { g_return_if_fail (data != NULL); g_return_if_fail (IS_ITEM_DATA (data)); ItemDataPriv *priv; item_data_get_relative_bbox (data, p1, p2); priv = data->priv; if (p1) { p1->x += priv->translate.x0; p1->y += priv->translate.y0; } if (p2) { p2->x += priv->translate.x0; p2->y += priv->translate.y0; } } void item_data_set_relative_bbox (ItemData *data, Coords *p1, Coords *p2) { g_return_if_fail (data != NULL); g_return_if_fail (IS_ITEM_DATA (data)); if (p1) { data->priv->bounds.x1 = p1->x; data->priv->bounds.y1 = p1->y; } if (p2) { data->priv->bounds.x2 = p2->x; data->priv->bounds.y2 = p2->y; } } void item_data_list_get_absolute_bbox (GList *item_data_list, Coords *p1, Coords *p2) { GList *iter; Coords b1, b2; if (item_data_list == NULL) return; item_data_get_absolute_bbox (item_data_list->data, p1, p2); for (iter = item_data_list; iter; iter = iter->next) { if (G_UNLIKELY (iter->data == NULL)) continue; item_data_get_absolute_bbox (iter->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, Coords *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, IDFlip direction, Coords *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, direction, 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); } } gboolean item_data_register (ItemData *data) { ItemDataClass *id_class; g_return_val_if_fail (data != NULL, FALSE); g_return_val_if_fail (IS_ITEM_DATA (data), FALSE); id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (data)); if (id_class->reg) { return id_class->reg (data); } return FALSE; } 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_val_if_fail (data != NULL, FALSE); g_return_val_if_fail (IS_ITEM_DATA (data), FALSE); 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); } } /** * \brief changed, forcefully emits a changed signal to recalculate the morph *matrix * * @param data determines which item to refresh * * \note this function does _not_ request a redraw */ void item_data_changed (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->changed == NULL) return; return id_class->changed (data); } /** * @param data * @returns [transfer-none] pointer to cairo matrix which only includes the * translation */ cairo_matrix_t *item_data_get_translate (ItemData *data) { g_return_val_if_fail (data != NULL, NULL); g_return_val_if_fail (IS_ITEM_DATA (data), NULL); return &(data->priv->translate); } /** * @param data * @returns [transfer-none] pointer to cairo matrix which only includes the * rotation */ cairo_matrix_t *item_data_get_rotate (ItemData *data) { g_return_val_if_fail (data != NULL, NULL); g_return_val_if_fail (IS_ITEM_DATA (data), NULL); return &(data->priv->rotate); } oregano-0.84.41/src/model/item-data.h0000644000175000017500000001240613413640652016246 0ustar rubenruben/* * item-data.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __ITEM_DATA_H #define __ITEM_DATA_H // Base class for schematic model. #include #include "coords.h" #include "grid.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, ID_FLIP_MASK = 3 } IDFlip; struct _ItemData { GObject parent; gulong moved_handler_id; gulong rotated_handler_id; gulong flipped_handler_id; gulong changed_handler_id; ItemDataPriv *priv; }; struct _ItemDataClass { GObjectClass parent_class; // Signals. void (*moved)(ItemData *data, Coords *delta); // Methods. ItemData *(*clone)(ItemData *src); void (*copy)(ItemData *dest, ItemData *src); void (*rotate)(ItemData *data, int angle, Coords *center); void (*flip)(ItemData *data, IDFlip direction, Coords *center); void (*unreg)(ItemData *data); int (*reg)(ItemData *data); void (*changed)(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, Coords *pos); // Set Item position void item_data_set_pos (ItemData *item_data, Coords *pos); // Move an ItemData // \param delta offset to move the item void item_data_move (ItemData *item_data, const Coords *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, Coords *p1, Coords *p2); // Set the relative bounding box void item_data_set_relative_bbox (ItemData *data, Coords *p1, Coords *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, Coords *p1, Coords *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, Coords *p1, Coords *p2); // Rotate an item void item_data_rotate (ItemData *data, int angle, Coords *center); // Flip an item void item_data_flip (ItemData *data, IDFlip direction, Coords *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 its Store void item_data_unregister (ItemData *data); // Register item in its Store int item_data_register (ItemData *data); // Get the prefix of a part reference 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); // Refresh the canvas representation of the item based on the itemdata's // properties (or its subclasses) void item_data_changed (ItemData *data); // cairo_matrix_t *item_data_get_translate (ItemData *data); cairo_matrix_t *item_data_get_rotate (ItemData *data); #endif oregano-0.84.41/src/model/wire.c0000644000175000017500000002543213413640652015345 0ustar rubenruben/* * wire.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "node-store.h" #include "node.h" #include "wire.h" #include "wire-private.h" #include "clipboard.h" #include "schematic-print-context.h" #include "oregano-utils.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, Coords *center); static void wire_flip (ItemData *data, IDFlip direction, Coords *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); static void wire_changed (ItemData *data); #include "debug.h" enum { ARG_0, ARG_DELETE, ARG_LAST_SIGNAL }; G_DEFINE_TYPE (Wire, wire, TYPE_ITEM_DATA) static guint wire_signals[ARG_LAST_SIGNAL] = {0}; static ItemDataClass *parent_class = NULL; 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[ARG_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; item_data_class->changed = wire_changed; } 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; } void wire_dbg_print (Wire *w) { Coords pos; item_data_get_pos (ITEM_DATA (w), &pos); NG_DEBUG ("Wire %p is defined by (%lf,%lf) + lambda * (%lf,%lf)\n", w, pos.x, pos.y, w->priv->length.x, w->priv->length.y); } Wire *wire_new () { 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, Coords *pos) { g_return_if_fail (wire != NULL); g_return_if_fail (IS_WIRE (wire)); g_return_if_fail (pos != NULL); item_data_get_pos (ITEM_DATA (wire), pos); } void wire_get_end_pos (Wire *wire, Coords *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_start_and_end_pos (Wire *wire, Coords *start, Coords *end) { WirePriv *priv; g_return_if_fail (wire != NULL); g_return_if_fail (IS_WIRE (wire)); g_return_if_fail (start != NULL); g_return_if_fail (end != NULL); priv = wire->priv; item_data_get_pos (ITEM_DATA (wire), start); *end = coords_sum (start, &(priv->length)); } void wire_get_pos_and_length (Wire *wire, Coords *pos, Coords *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_pos (Wire *wire, Coords *pos) { g_return_if_fail (wire != NULL); g_return_if_fail (IS_WIRE (wire)); g_return_if_fail (pos != NULL); item_data_set_pos (ITEM_DATA (wire), pos); } void wire_set_length (Wire *wire, Coords *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"); } gboolean 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 *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; 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_rotate (ItemData *data, int angle, Coords *center_pos) { cairo_matrix_t affine; Coords start_pos; Wire *wire; WirePriv *priv; g_return_if_fail (data != NULL); g_return_if_fail (IS_WIRE (data)); g_return_if_fail (center_pos != NULL); if (angle == 0) return; wire = WIRE (data); wire_get_start_pos (wire, &start_pos); 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; } cairo_matrix_init_identity(&affine); cairo_matrix_translate(&affine, center_pos->x, center_pos->y); cairo_matrix_rotate(&affine, (double)angle * M_PI / 180.0); cairo_matrix_translate(&affine, -center_pos->x, -center_pos->y); cairo_matrix_transform_distance (&affine, &priv->length.x, &priv->length.y); cairo_matrix_transform_point (&affine, &start_pos.x, &start_pos.y); wire_set_pos (wire, &start_pos); // Update bounding box. wire_update_bbox (wire); // Let the views (canvas items) know about the rotation. g_signal_emit_by_name (G_OBJECT (wire), "rotated", angle); // legacy g_signal_emit_by_name (G_OBJECT (wire), "changed"); } // FIXME if we have a center pos, this actually needs to do some transform magic static void wire_flip (ItemData *data, IDFlip direction, Coords *center) { return; } void wire_update_bbox (Wire *wire) { Coords b1, b2, pos, length; 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 gboolean wire_register (ItemData *data) { NodeStore *store; g_return_val_if_fail (IS_WIRE (data), FALSE); store = item_data_get_store (data); return node_store_add_wire (store, WIRE (data)); } static void wire_changed (ItemData *data) { Coords loc; g_return_if_fail (IS_WIRE (data)); item_data_get_pos (data, &loc); g_signal_emit_by_name ((GObject *)data, "moved", &loc); g_signal_emit_by_name ((GObject *)data, "changed"); } static void wire_print (ItemData *data, cairo_t *cr, SchematicPrintContext *ctx) { Coords 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_rgba (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"); } oregano-0.84.41/src/model/node.c0000644000175000017500000001743713413640652015332 0ustar rubenruben/* * node.c * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include "node.h" #include "part.h" #include "debug.h" static void node_class_init (NodeClass *klass); static void node_init (Node *node); enum { NODE_DOT_ADDED, NODE_DOT_REMOVED, VOLTAGE_CHANGED, LAST_SIGNAL }; G_DEFINE_TYPE (Node, node, G_TYPE_OBJECT) static guint node_signals[LAST_SIGNAL] = {0}; static void node_dispose (GObject *object) { G_OBJECT_CLASS (node_parent_class)->dispose (object); } static void node_finalize (GObject *object) { g_return_if_fail (object != NULL); // Remove the pins and wires encountered by the node. if (NODE (object)->pins) { g_slist_free (NODE (object)->pins); } if (NODE (object)->wires) { g_slist_free (NODE (object)->wires); } G_OBJECT_CLASS (node_parent_class)->finalize (object); } static void node_class_init (NodeClass *klass) { GObjectClass *object_class; object_class = (GObjectClass *)klass; object_class->dispose = node_dispose; object_class->finalize = node_finalize; node_parent_class = g_type_class_peek_parent (klass); node_signals[NODE_DOT_ADDED] = g_signal_new ("node_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[NODE_DOT_REMOVED] = g_signal_new ("node_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 (Coords pos) { Node *node; node = NODE (g_object_new (node_get_type (), NULL)); node->key = pos; return node; } #define SEP(p1, p2) ((fabs (p1.x - p2.x) < 1e-3) && (fabs (p1.y - p2.y) < 1e-3)) #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; Coords start_pos1, length1, end_pos1; Coords start_pos2, length2, end_pos2; NG_DEBUG ("node: %p --- pins: %i --- wires: %i", node, node->pin_count, node->wire_count); // always display a black dot if a part hits a wire if (node->pin_count > 0 && node->wire_count > 0) { NG_DEBUG (" TRUE (pins>0 && wires>0)"); return TRUE; } else if (node->pin_count > 1 || node->wire_count > 2) { NG_DEBUG (" TRUE (pins>1 || wires>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))) { return TRUE; } return FALSE; } NG_DEBUG (" FALSE (else)"); return FALSE; } gboolean 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)) { NG_DEBUG ("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), "node_dot_added", &node->key); return TRUE; } gboolean 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), "node_dot_removed", &node->key); return TRUE; } gboolean 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)) { NG_DEBUG ("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), "node_dot_added", &node->key); return TRUE; } gboolean 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)) { NG_DEBUG ("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), "node_dot_removed", &node->key); return TRUE; } gboolean 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; } gboolean 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; } #define HASH_EPSILON 1e-3 /** * Hash function to be used with a GHashTable (and others) */ guint node_hash (gconstpointer key) { Coords *sp = (Coords *)key; register int x, y; const int shift = sizeof(int) * 8 / 2; // Hash on any other node? x = (int)rint (sp->x) % 1 << shift; y = (int)rint (sp->y) % 1 << shift; return (y << shift) | x; } /** * Comparsion function to be used with a GHashTable (and others) */ gboolean node_equal (gconstpointer a, gconstpointer b) { const Coords *ca = a; const Coords *cb = b; if (fabs (ca->y - cb->y) > HASH_EPSILON) return 0; if (fabs (ca->x - cb->x) > HASH_EPSILON) return 0; return 1; } oregano-0.84.41/src/model/part.c0000644000175000017500000006663413413640652015356 0ustar rubenruben/* * part.c * * Part object: represents a schematic part * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://beerbach.me/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include "part.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" #include "dialogs.h" #include "debug.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, Coords *center); static void part_flip (ItemData *data, IDFlip direction, Coords *center); static void part_update_bbox (Part *part); static void part_unregister (ItemData *data); static int part_register (ItemData *data); static void part_changed (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, }; G_DEFINE_TYPE (Part, part, TYPE_ITEM_DATA); static ItemDataClass *parent_class = NULL; static void part_init (Part *part) { part->priv = g_slice_new0 (PartPriv); } static void part_dispose (GObject *object) { G_OBJECT_CLASS (parent_class)->dispose (object); } static void part_finalize (GObject *object) { PartPriv *priv; GSList *list; priv = PART (object)->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->pins_orig); g_free (priv->symbol_name); g_slice_free (PartPriv, priv); } G_OBJECT_CLASS (parent_class)->finalize (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->changed = part_changed; 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; } //////////////////////////////////////////////////////////////////////////////// // END BOILER PLATE //////////////////////////////////////////////////////////////////////////////// Part *part_new () { 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) { oregano_warning (g_strdup_printf (_ ("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); 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); } } gint 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; } /** * @returns the rotation in degrees * @attention steps of 90 degrees only! */ gint part_get_rotation (Part *part) { ItemData *item; gdouble register a, b, c, d; cairo_matrix_t *t; g_return_val_if_fail (part != NULL, 0); g_return_val_if_fail (IS_PART (part), 0); item = ITEM_DATA (part); t = item_data_get_rotate (item); a = t->xx; b = t->xy; c = t->yx; d = t->yy; //check whether matrix is rotation matrix //Let Q be the matrix. Q is a rotation matrix if and only if Q^T Q = I and det Q = 1. //Then it is existing a real value alpha so that // ( a b ) ( cos(alpha) -sin(alpha) ) //Q = ( ) = ( ) // ( c d ) ( sin(alpha) cos(alpha) ) if (G_UNLIKELY (fabs (1 - (a * a + c * c)) > 1e-10 || fabs (1 - (b * b + d * d)) > 1e-10 || fabs (a*b + c*d) > 1e-10 || fabs (1 - (a*d - b*c)) > 1e-10)) { g_warning ("Unabled to calculate rotation from matrix. Assuming 0°."); return 0; } //Now we want to extract alpha. //this case differentiation is only for numerical stability at the edges of the domains of definition of acos and atan if (-0.5 <= a && a <= 0.5) { return 180. / M_PI * (acos(a) + (c < 0 ? M_PI : 0)); } else { return 180. / M_PI * (atan(c/a) + (a < 0 ? M_PI : 0)); } } 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 gboolean 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; } /** * @return no free() pls */ char **part_get_property_ref (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_ascii_strcasecmp (prop->name, name) == 0) { return &(prop->value); } } return ((char **)0); } /** * @returns [transfer-full] */ char *part_get_property (Part *part, char *name) { char **prop = part_get_property_ref(part, name); if (prop != NULL && *prop != NULL) { return g_strdup(*prop); } return NULL; } static gboolean 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; } /** * overwrite the pins with those given in the list */ gboolean 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); g_free (priv->pins); g_free (priv->pins_orig); priv->pins = g_new0 (Pin, num_pins); priv->pins_orig = 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 Coords field. Pin *pin = list->data; priv->pins_orig[i].pin_nr = i; priv->pins_orig[i].node_nr = 0; priv->pins_orig[i].offset.x = pin->offset.x; priv->pins_orig[i].offset.y = pin->offset.y; priv->pins_orig[i].part = part; memcpy (priv->pins, priv->pins_orig, sizeof(Pin) * num_pins); } 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; } /** * \brief rotate an item by an @angle increment (may be negative) * * @angle the increment the item will be rotated (usually 90° steps) * @center_pos if rotated as part of a group, this is the center to rotate *around */ static void part_rotate (ItemData *data, int angle, Coords *center_pos) { g_return_if_fail (data); g_return_if_fail (IS_PART (data)); cairo_matrix_t morph, morph_rot, local_rot; gint i; gdouble x, y; Part *part; PartPriv *priv; gboolean handler_connected; part = PART (data); priv = part->priv; // FIXME store vanilla coords, apply the morph // FIXME to these and store the result in the // FIXME instance then everything will be fine // XXX also prevents rounding yiggle up downs angle /= 90; angle *= 90; // normalize it angle = angle % 360; if (angle == 0) return; cairo_matrix_init_rotate (&local_rot, (double)angle * M_PI / 180.); cairo_matrix_multiply (item_data_get_rotate (data), item_data_get_rotate (data), &local_rot); morph_rot = *(item_data_get_rotate (data)); cairo_matrix_multiply (&morph, &morph_rot, item_data_get_translate (data)); Coords delta_to_center, delta_to_center_transformed; Coords delta_to_apply; Coords item_pos; item_data_get_pos (ITEM_DATA (part), &item_pos); Coords rotation_center; if (center_pos == NULL) { rotation_center = item_pos; } else { rotation_center = *center_pos; } delta_to_center_transformed = delta_to_center = coords_sub (&rotation_center, &item_pos); cairo_matrix_transform_point (&local_rot, &(delta_to_center_transformed.x), &(delta_to_center_transformed.y)); delta_to_apply = coords_sub (&delta_to_center, &delta_to_center_transformed); #define DEBUG_THIS 0 // use the cairo matrix funcs to transform the pin // positions relative to the item center // this is only indirectly related to displayin // HINT: we need to modify the actual pins to make the // pin tests work being used to detect connections // Rotate the pins. for (i = 0; i < priv->num_pins; i++) { if (priv->pins_orig && priv->pins) { x = priv->pins_orig[i].offset.x; y = priv->pins_orig[i].offset.y; cairo_matrix_transform_point (&morph_rot, &x, &y); if (fabs (x) < 1e-2) x = 0.0; if (fabs (y) < 1e-2) y = 0.0; priv->pins[i].offset.x = x; priv->pins[i].offset.y = y; } } item_data_move (data, &delta_to_apply); handler_connected = g_signal_handler_is_connected (G_OBJECT (data), data->changed_handler_id); if (handler_connected) { g_signal_emit_by_name (G_OBJECT (data), "changed"); } else { NG_DEBUG ("handler not yet registerd."); } NG_DEBUG ("\n\n"); } /** * flip a part in a given direction * @direction gives the direction the item will be flipped, end users pov! * @center the center to flip over - currently ignored FIXME */ static void part_flip (ItemData *data, IDFlip direction, Coords *center) { #if 0 Part *part; PartPriv *priv; int i; cairo_matrix_t affine; double x, y; double scale_v, scale_h; gboolean handler_connected; Coords delta; Coords pos, trans; Coords b1, b2; Coords pos_new, pos_old; //FIXME properly recenter after flipping //Coords part_center_before, part_center_after, delta; g_return_if_fail (data); g_return_if_fail (IS_PART (data)); part = PART (data); priv = part->priv; item_data_get_pos (data, &trans); // mask, just for the sake of cleanness direction &= ID_FLIP_MASK; // TODO evaluate if we really want to be able to do double flips (180* rots via flipping) g_assert (direction != ID_FLIP_MASK); // create a transformation _relativ_ to the current _state_ // reverse axis and fix the created offset by adding 2*pos.x or .y // convert the flip direction to binary, used in the matrix setup // keep in mind that we do relativ manipulations within the model // which in turn makes this valid for all rotations! scale_h = ((direction & ID_FLIP_HORIZ) != 0) ? -1. : 1.; scale_v = ((direction & ID_FLIP_VERT) != 0) ? -1. : 1.; // magic, if we are in either 270 or 90 state, we need to rotate the flip state by 90° to draw it properly // TODO maybe better put this into the rotation function if ((priv->rotation / 90) % 2 == 1) { priv->flip ^= ID_FLIP_MASK; } // toggle the direction priv->flip ^= direction; if ((priv->flip & ID_FLIP_MASK)== ID_FLIP_MASK) { priv->flip = ID_FLIP_NONE; priv->rotation += 180; priv->rotation %= 360; } cairo_matrix_init_scale (&affine, scale_h, scale_v); item_data_get_pos (data, &pos_old); pos_new = pos_old; cairo_matrix_transform_point (&affine, &pos_new.x, &pos_new.y); g_printf ("\ncenter %p [old] x=%lf,y=%lf -->", data, pos_old.x, pos_old.y); g_printf (" x=%lf, y=%lf\n", pos_new.x, pos_new.y); delta.x = - pos_new.x + pos_old.x; delta.y = - pos_new.y + pos_old.y; // flip the pins for (i = 0; i < priv->num_pins; i++) { x = priv->pins[i].offset.x; y = priv->pins[i].offset.y; cairo_matrix_transform_point (&affine, &x, &y); if (fabs (x) < 1e-2) x = 0.0; if (fabs (y) < 1e-2) y = 0.0; priv->pins[i].offset.x = x; priv->pins[i].offset.y = y; } // tell the view handler_connected = g_signal_handler_is_connected (G_OBJECT (part), ITEM_DATA(part)->flipped_handler_id); if (handler_connected) { g_signal_emit_by_name (G_OBJECT (part), "flipped", priv->flip); // TODO - proper boundingbox center calculation item_data_get_relative_bbox (ITEM_DATA (part), &b1, &b2); // flip the bounding box. cairo_matrix_transform_point (&affine, &b1.x, &b1.y); cairo_matrix_transform_point (&affine, &b2.x, &b2.y); item_data_set_relative_bbox (ITEM_DATA (part), &b1, &b2); item_data_set_pos (ITEM_DATA (part), &pos); // FIXME - proper recenter to boundingbox center } if (g_signal_handler_is_connected (G_OBJECT (part), ITEM_DATA (part)->changed_handler_id)) { g_signal_emit_by_name (G_OBJECT (part), "changed"); } #endif } 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 = g_object_new (TYPE_PART, NULL); new_part->priv->pins = g_new0 (Pin, src_part->priv->num_pins); new_part->priv->pins_orig = 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); if (src_part->priv->pins) { 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; } if (src_part->priv->pins_orig) { memcpy (dest_part->priv->pins_orig, src_part->priv->pins_orig, src_part->priv->num_pins * sizeof(Pin)); for (i = 0; i < dest_part->priv->num_pins; i++) dest_part->priv->pins_orig[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 *iter; LibrarySymbol *symbol; SymbolObject *object; GooCanvasPoints *points; int i; Coords 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 (iter = symbol->symbol_objects; iter; iter = iter->next) { object = iter->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: { // FIXME use cairo pango layout /*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)); } /** * register a part to its nodestore * @param data the part * @attention the @data has to have a valid nodestore set */ static int part_register (ItemData *data) { NodeStore *store; g_return_val_if_fail (IS_PART (data), FALSE); store = item_data_get_store (data); node_store_add_part (store, PART (data)); return TRUE; } /** * simply signal a change in the part */ static void part_changed (ItemData *data) { g_return_if_fail (IS_PART (data)); #if 0 Part *part; Coords loc = {0., 0.}; int angle = 0; IDFlip flip = ID_FLIP_NONE; part = (Part *)data; flip = part_get_flip (part); angle = part_get_rotation (part); item_data_get_pos (data, &loc); //FIXME isn't it more sane to just emit the changed? g_signal_emit_by_name (data, "moved", &loc); g_signal_emit_by_name (data, "flipped", flip); g_signal_emit_by_name (data, "rotated", angle); #endif g_signal_emit_by_name (data, "changed"); } 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_ascii_strcasecmp (prop->name, property) == 0) { g_free (prop->value); if (value != NULL) prop->value = g_strdup (value); else prop->value = NULL; break; } } } /** * print the part onto a physical sheet of paper or pdf, which is represented by * @cr */ 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; Coords pos; IDFlip flip; GooCanvasPoints *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_rgba (cr, &ctx->colors.components); rotation = part_get_rotation (part); flip = part_get_flip (part); if ((flip & ID_FLIP_HORIZ) && (flip & ID_FLIP_VERT)) rotation += 180; else if (flip == ID_FLIP_HORIZ) cairo_scale (cr, -1, 1); else if (flip == ID_FLIP_VERT) cairo_scale (cr, 1, -1); // Rotate around the item position if (rotation %= 360) { cairo_translate(cr, x0, y0); cairo_rotate (cr, rotation * M_PI / 180); 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; y = (y2 + y1) / 2; 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_rgba (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); } oregano-0.84.41/src/model/wire-private.h0000644000175000017500000000246513413640652017023 0ustar rubenruben/* * wire-private.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __WIRE_PRIVATE_H #define __WIRE_PRIVATE_H struct _WirePriv { // Used to traverse the wires during netlist generation. gboolean visited : 1; GSList *nodes; Coords length; WireDir direction; }; #endif oregano-0.84.41/src/model/node-store.c0000644000175000017500000005105213413640652016453 0ustar rubenruben/* * node-store.c * * * Store nodes, wires to hashtables. * Generate new wires, merge new wire create requests where possible with *already existing ones * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2012-2013 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #define NODE_EPSILON 1e-10 #define HASH_EPSILON 1e-3 #include "node-store.h" #include "node-store-private.h" #include "node.h" #include "part.h" #include "wire.h" #include "wire-private.h" #include "debug.h" /* NODE_EPSILON is used to check for intersection. */ /* HASH_EPSILON is used in the hash equality check function. */ /* 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 void node_store_finalize (GObject *self); static void node_store_dispose (GObject *self); enum { NODE_DOT_ADDED, NODE_DOT_REMOVED, LAST_SIGNAL }; G_DEFINE_TYPE (NodeStore, node_store, G_TYPE_OBJECT); static guint node_store_signals[LAST_SIGNAL] = {0}; static void node_store_dispose (GObject *self) { G_OBJECT_CLASS (node_store_parent_class)->dispose (self); } 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; } if (self->textbox) { g_list_free (self->textbox); self->textbox = NULL; } G_OBJECT_CLASS (node_store_parent_class)->finalize (object); } static void node_store_class_init (NodeStoreClass *klass) { GObjectClass *gobject_class; gobject_class = G_OBJECT_CLASS (klass); node_store_parent_class = g_type_class_peek_parent (klass); gobject_class->finalize = node_store_finalize; gobject_class->dispose = node_store_dispose; node_store_signals[NODE_DOT_ADDED] = g_signal_new ("node_dot_added", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (NodeStoreClass, node_dot_added), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); node_store_signals[NODE_DOT_REMOVED] = g_signal_new ("node_dot_removed", TYPE_NODE_STORE, G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (NodeStoreClass, node_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; } //////////////////////////////////////////////////////////////////////////////// // END BOILERPLATE //////////////////////////////////////////////////////////////////////////////// NodeStore *node_store_new (void) { return NODE_STORE (g_object_new (TYPE_NODE_STORE, NULL)); } static void node_dot_added_callback (Node *node, Coords *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), "node_dot_added", pos); } static void node_dot_removed_callback (Node *node, Coords *pos, NodeStore *store) { g_return_if_fail (store); g_return_if_fail (IS_NODE_STORE (store)); g_signal_emit_by_name (G_OBJECT (store), "node_dot_removed", pos); } /** * lookup if a node at @pos exists, if so return it, otherwise * create one, add it to the nodestore and return it */ Node *node_store_get_or_create_node (NodeStore *self, Coords pos) { Node *node; g_return_val_if_fail (self, 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), "node_dot_added", G_CALLBACK (node_dot_added_callback), G_OBJECT (self), 0); g_signal_connect_object (G_OBJECT (node), "node_dot_removed", G_CALLBACK (node_dot_removed_callback), G_OBJECT (self), 0); g_hash_table_insert (self->nodes, &node->key, node); } return node; } /** * register a part to the nodestore */ gboolean node_store_add_part (NodeStore *self, Part *part) { NG_DEBUG ("-0-"); g_return_val_if_fail (self, FALSE); g_return_val_if_fail (IS_NODE_STORE (self), FALSE); g_return_val_if_fail (part, FALSE); g_return_val_if_fail (IS_PART (part), FALSE); GSList *iter, *copy; Node *node; Coords pin_pos; Coords part_pos; int i, num_pins; Pin *pins; num_pins = part_get_num_pins (part); pins = part_get_pins (part); item_data_get_pos (ITEM_DATA (part), &part_pos); for (i = 0; i < num_pins; i++) { // Use the position of the pin as hash key. pin_pos.x = part_pos.x + pins[i].offset.x; pin_pos.y = part_pos.y + pins[i].offset.y; // Retrieve a node for this position. node = node_store_get_or_create_node (self, pin_pos); // Add all the wires that intersect this pin to the node store. copy = get_wires_at_pos (self, pin_pos); for (iter = copy; iter; iter = iter->next) { Wire *wire = copy->data; node_add_wire (node, wire); wire_add_node (wire, node); } g_slist_free (copy); 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; } /** * remove/unregister a part from the nodestore * this does _not_ free the part! */ gboolean node_store_remove_part (NodeStore *self, Part *part) { Node *node; Coords pin_pos; Coords part_pos; int i, num_pins; Pin *pins; g_return_val_if_fail (self, FALSE); g_return_val_if_fail (IS_NODE_STORE (self), FALSE); g_return_val_if_fail (part, 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), &part_pos); pins = part_get_pins (part); for (i = 0; i < num_pins; i++) { pin_pos.x = part_pos.x + pins[i].offset.x; pin_pos.y = part_pos.y + pins[i].offset.y; node = g_hash_table_lookup (self->nodes, &pin_pos); if (node) { if (!node_remove_pin (node, &pins[i])) { g_warning ("Could not remove pin[%i] from node %p.", i, node); 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, &pin_pos); g_object_unref (G_OBJECT (node)); } } else { return FALSE; } } return TRUE; } gboolean 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; } gboolean node_store_remove_textbox (NodeStore *self, Textbox *text) { self->textbox = g_list_remove (self->textbox, text); return TRUE; } /** * Remove all wires in the nodestore that overlap with a given * wire (preserve the longest of the two overlapping wires). * This is basically an optimization of the nodestore. */ void node_store_remove_overlapping_wires (NodeStore *store, Wire *wire) { gdouble a, b; Coords start_pos, end_pos, start_pos_other, end_pos_other; Coords length, length_other; Coords so, eo; GList *list, *to_be_removed = NULL; Node *sn, *en; Wire *other; gboolean overlap; g_return_if_fail (store != NULL); g_return_if_fail (IS_NODE_STORE (store)); g_return_if_fail (wire != NULL); g_return_if_fail (IS_WIRE (wire)); // Check for overlapping with other wires. for (list = store->wires; list && list->data != wire; list = list->next) { g_assert (list->data != NULL); g_assert (IS_WIRE (list->data)); other = list->data; overlap = do_wires_overlap (wire, other, &so, &eo); NG_DEBUG ("overlap [ %p] and [ %p ] -- %s", wire, other, overlap == TRUE ? "YES" : "NO"); if (overlap) { sn = node_store_get_node (store, eo); en = node_store_get_node (store, so); if (!sn && !en) wire = vulcanize_wire (store, wire, other); wire_get_pos_and_length (wire, &start_pos, &length); wire_get_pos_and_length (other, &start_pos_other, &length_other); wire_get_start_and_end_pos (wire, &start_pos, &end_pos); wire_get_start_and_end_pos (other, &start_pos_other, &end_pos_other); if (length.x < 0) { a = start_pos.x; b = end_pos.x; start_pos.x = b; end_pos.x = a; length.x = -length.x; } if (length.y < 0) { a = start_pos.y; b = end_pos.y; start_pos.y = b; end_pos.y = a; length.y = -length.y; } if (length_other.x < 0) { a = start_pos_other.x; b = end_pos_other.x; start_pos_other.x = b; end_pos_other.x = a; length_other.x = -length_other.x; } if (length_other.y < 0) { a = start_pos_other.y; b = end_pos_other.y; start_pos_other.y = b; end_pos_other.y = a; length_other.y = -length_other.y; } if (length.x > 0 && length_other.x > 0 && length.y == 0 && length_other.y == 0) { if (start_pos.x >= start_pos_other.x && end_pos.x <= end_pos_other.x) to_be_removed = g_list_append (to_be_removed, wire); if (start_pos_other.x >= start_pos.x && end_pos_other.x <= end_pos.x) to_be_removed = g_list_append (to_be_removed, other); } else if (length.y > 0 && length_other.y > 0 && length.x == 0 && length_other.x == 0) { if (start_pos.y >= start_pos_other.y && end_pos.y <= end_pos_other.y) to_be_removed = g_list_append (to_be_removed, wire); if (start_pos_other.y >= start_pos.y && end_pos_other.y <= end_pos.y) to_be_removed = g_list_append (to_be_removed, other); } } } // Remove all the wires that overlap with a given wire for (list = to_be_removed; list; list = list->next) { if (node_store_remove_wire (store, list->data)) wire_delete (list->data); } g_list_free (to_be_removed); } /** * add/register the wire to the nodestore * * @param store * @param wire * @returns TRUE if the wire was added or merged, else FALSE */ gboolean node_store_add_wire (NodeStore *store, Wire *wire) { GList *list; Node *node; Coords where; int i = 0; g_return_val_if_fail (store, FALSE); g_return_val_if_fail (IS_NODE_STORE (store), FALSE); g_return_val_if_fail (wire, FALSE); g_return_val_if_fail (IS_WIRE (wire), FALSE); // Check for intersection with other wires. for (list = store->wires; list; list = list->next) { g_assert (list->data != NULL); g_assert (IS_WIRE (list->data)); Wire *other = list->data; if (do_wires_intersect (wire, other, &where)) { if (is_t_crossing (wire, other, &where) || is_t_crossing (other, wire, &where)) { node = node_store_get_or_create_node (store, where); node_add_wire (node, wire); node_add_wire (node, other); wire_add_node (wire, node); wire_add_node (other, node); NG_DEBUG ("Add wire %p to wire %p @ %lf,%lf.\n", wire, other, where.x, where.y); } else { // magic node removal if a x crossing is overlapped with another wire node = node_store_get_node (store, where); NG_DEBUG ("Nuke that node [ %p ] at coords inbetween", node); if (node) { Coords c[4]; wire_get_start_and_end_pos (other, c + 0, c + 1); wire_get_start_and_end_pos (wire, c + 2, c + 3); if (!coords_equal (&where, c + 0) && !coords_equal (&where, c + 1) && !coords_equal (&where, c + 2) && !coords_equal (&where, c + 3)) { wire_remove_node (wire, node); wire_remove_node (other, node); node_remove_wire (node, wire); node_remove_wire (node, other); } } } } } node_store_remove_overlapping_wires (store, wire); // Check for intersection with parts (pins). for (list = store->parts; list; list = list->next) { g_assert (list->data != NULL); g_assert (IS_PART (list->data)); Coords part_pos; gint num_pins = -1; Part *part = list->data; num_pins = part_get_num_pins (part); item_data_get_pos (ITEM_DATA (part), &part_pos); // Go through all the parts and see which of their // pins that intersect the wire. for (i = 0; i < num_pins; i++) { Pin *pins; Coords lookup_pos; pins = part_get_pins (part); lookup_pos.x = part_pos.x + pins[i].offset.x; lookup_pos.y = part_pos.y + pins[i].offset.y; // If there is a wire at this pin's position, // add it to the return list. if (is_point_on_wire (wire, &lookup_pos)) { Node *node; node = node_store_get_node (store, lookup_pos); if (node != NULL) { // Add the wire to the node (pin) that it intersected. node_add_wire (node, wire); wire_add_node (wire, node); NG_DEBUG ("Add wire %p to pin (node) %p.\n", wire, node); } else { g_warning ("Bug: Found no node at pin at (%g %g).\n", lookup_pos.x, lookup_pos.y); } } } } 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; } /** * removes/unregisters a wire from the nodestore * this does _not_ free the wire itself! */ gboolean node_store_remove_wire (NodeStore *store, Wire *wire) { GSList *copy, *iter; Coords lookup_key; g_return_val_if_fail (store, FALSE); g_return_val_if_fail (IS_NODE_STORE (store), FALSE); g_return_val_if_fail (wire, FALSE); g_return_val_if_fail (IS_WIRE (wire), FALSE); if (item_data_get_store (ITEM_DATA (wire)) == NULL) { g_warning ("Trying to remove not-stored wire %p.", wire); return FALSE; } 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. // FIXME if done properly, a list copy is _not_ necessary copy = g_slist_copy (wire_get_nodes (wire)); for (iter = copy; iter; iter = iter->next) { Node *node = iter->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 (copy); return TRUE; } /** * check if there is at least one wire at the specified position * * @param store which NodeStore to check * @param pos the position * @returns TRUE or FALSE */ gboolean node_store_is_wire_at_pos (NodeStore *store, Coords pos) { GList *iter; g_return_val_if_fail (store, FALSE); g_return_val_if_fail (IS_NODE_STORE (store), FALSE); for (iter = store->wires; iter; iter = iter->next) { Wire *wire = iter->data; if (is_point_on_wire (wire, &pos)) return TRUE; } return FALSE; } /** * lookup node at specified position * * @param store which store to check * @param pos where to check in that store * @returns the node pointer if there is a node, else NULL */ Node *node_store_get_node (NodeStore *store, Coords 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) { NG_DEBUG ("No node at (%g, %g)", pos.x, pos.y); } else { NG_DEBUG ("Found node at (%g, %g)", pos.x, pos.y); } return node; } /** * Call GHFunc for each node in the nodestore */ 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); } /** * [transfer-none] */ 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; } /** * [transfer-none] */ 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; } /** * [transfer-none] */ 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; } /** * the caller has to free the list himself, but not the actual data items! */ 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; } /** * the caller has to free the list himself, but not the actual data items! */ 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, NodeRect *rect) { GList *list; Coords 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, NodeRect *rect) { GList *list; Coords 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++; } } return n; } static void draw_dot (Coords *pos, 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, pos->x, pos->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; 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); } gboolean node_store_is_pin_at_pos (NodeStore *store, Coords pos) { int num_pins; Coords 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 (fabs (x - pos.x) < NODE_EPSILON && fabs (y - pos.y) < NODE_EPSILON) return TRUE; } } return FALSE; } oregano-0.84.41/src/model/part-property.h0000644000175000017500000000257113413640652017233 0ustar rubenruben/* * part-property.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __PART_PROPERTY_H #define __PART_PROPERTY_H #include "part.h" typedef struct { gchar *name; gchar *value; } PartProperty; void update_connection_designators (Part *part, char **prop, int *node_ctr); gchar *part_property_expand_macros (Part *part, gchar *string); #endif oregano-0.84.41/src/model/textbox.h0000644000175000017500000000431213413640652016073 0ustar rubenruben/* * textbox.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __TEXTBOX_H #define __TEXTBOX_H #include #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; gulong text_changed_handler_id; gulong font_changed_handler_id; }; 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 oregano-0.84.41/src/model/schematic.h0000644000175000017500000001276413413640652016350 0ustar rubenruben/* * schematic.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __SCHEMATIC_H__ #define __SCHEMATIC_H__ // typedefing before including makes circular dependencies possible. typedef struct _Schematic Schematic; #include #include #include #ifdef CAIRO_HAS_SVG_SURFACE #include #endif #ifdef CAIRO_HAS_PDF_SURFACE #include #endif #ifdef CAIRO_HAS_PS_SURFACE #include #endif #include "part.h" #include "wire.h" #include "node-store.h" #include "log.h" #include "../sim-settings.h" #include "sim-settings-gui.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 _SchematicClass SchematicClass; typedef struct _SchematicPriv SchematicPriv; typedef void (*ForeachItemDataFunc)(ItemData *item_data, gpointer user_data); struct _Schematic { GObject parent; SchematicPriv *priv; }; struct _SchematicClass { GObjectClass parent_class; // signals void (*title_changed)(Schematic *, gchar *); void (*item_data_added)(Schematic *, gpointer *); void (*log_updated)(gpointer); void (*node_dot_added)(Schematic *); void (*node_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_version (Schematic *schematic); void schematic_set_version (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); guint schematic_get_width (const Schematic *schematic); guint schematic_get_height (const Schematic *schematic); double schematic_get_zoom (Schematic *schematic); void schematic_set_width (Schematic *schematic, const guint width); void schematic_set_height (Schematic *schematic, const guint height); 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); SimSettings *schematic_get_sim_settings (Schematic *schematic); SimSettingsGui *schematic_get_sim_settings_gui (Schematic *schematic); gpointer schematic_get_simulation (Schematic *schematic); Log *schematic_get_log_store (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 (const 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__ */ oregano-0.84.41/src/model/part-private.h0000644000175000017500000000302013413640652017007 0ustar rubenruben/* * part-private.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2014 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __PART_PRIVATE_H #define __PART_PRIVATE_H #include 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, without any transformations applied. Pin *pins_orig; }; #endif oregano-0.84.41/src/model/node-store.h0000644000175000017500000000724013413640652016460 0ustar rubenruben/* * node-store.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __NODE_STORE_H #define __NODE_STORE_H #include #include #include "coords.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; typedef struct _NodeRect NodeRect; #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 (*node_dot_added)(NodeStore *); void (*node_dot_removed)(NodeStore *); }; struct _NodeRect { double x0, y0, x1, y1; }; GType node_store_get_type (void); NodeStore *node_store_new (void); Node *node_store_get_node (NodeStore *store, Coords pos); gboolean node_store_add_part (NodeStore *store, Part *part); gboolean node_store_remove_part (NodeStore *store, Part *part); void node_store_remove_overlapping_wires (NodeStore *store, Wire *wire); gboolean node_store_add_wire (NodeStore *store, Wire *wire); gboolean node_store_remove_wire (NodeStore *store, Wire *wire); gboolean node_store_add_textbox (NodeStore *self, Textbox *text); gboolean node_store_remove_textbox (NodeStore *self, Textbox *text); void node_store_node_foreach (NodeStore *store, GHFunc *func, gpointer user_data); gboolean node_store_is_wire_at_pos (NodeStore *store, Coords pos); gboolean node_store_is_pin_at_pos (NodeStore *store, Coords 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, NodeRect *rect); gint node_store_count_items (NodeStore *store, NodeRect *rect); void node_store_print_items (NodeStore *store, cairo_t *opc, SchematicPrintContext *ctx); Node *node_store_get_or_create_node (NodeStore *store, Coords pos); #endif oregano-0.84.41/src/model/part-label.h0000644000175000017500000000233013413640652016417 0ustar rubenruben/* * part-label.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __PART_LABEL_H #define __PART_LABEL_H typedef struct { gchar *name; gchar *text; Coords pos; } PartLabel; #endif oregano-0.84.41/src/model/textbox.c0000644000175000017500000002265513413640652016100 0ustar rubenruben/* * textbox.c * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "textbox.h" #include "clipboard.h" #include "node-store.h" #include "schematic-print-context.h" #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, Coords *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, IDFlip direction, Coords *center); enum { TEXT_CHANGED, FONT_CHANGED, LAST_SIGNAL }; struct _TextboxPriv { char *text; char *font; }; G_DEFINE_TYPE (Textbox, textbox, TYPE_ITEM_DATA) static guint textbox_signals[LAST_SIGNAL] = {0}; static void textbox_finalize (GObject *object) { Textbox *textbox = TEXTBOX (object); TextboxPriv *priv = textbox->priv; g_free (priv); G_OBJECT_CLASS (textbox_parent_class)->finalize (object); } static void textbox_dispose (GObject *object) { G_OBJECT_CLASS (textbox_parent_class)->dispose (object); } static void textbox_class_init (TextboxClass *klass) { GObjectClass *object_class; ItemDataClass *item_data_class; textbox_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 *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; 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 (ITEM_DATA_CLASS (textbox_parent_class)->copy != NULL) ITEM_DATA_CLASS (textbox_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, Coords *center) { cairo_matrix_t affine; double x, y; Textbox *textbox; Coords b1, b2; Coords 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; } cairo_matrix_init_rotate (&affine, (double)angle * M_PI / 180); // Let the views (canvas items) know about the rotation. g_signal_emit_by_name (G_OBJECT (textbox), "rotated", angle); if (center) { Coords textbox_pos; item_data_get_pos (ITEM_DATA (textbox), &textbox_pos); x = textbox_center.x - center->x; y = textbox_center.y - center->y; cairo_matrix_transform_point (&affine, &x, &y); delta.x = x - (textbox_center.x - center->x); delta.y = y - (textbox_center.y - center->y); item_data_move (ITEM_DATA (textbox), &delta); } } static void textbox_flip (ItemData *data, IDFlip direction, Coords *center) { cairo_matrix_t affine; double x, y; Textbox *textbox; Coords b1, b2; Coords textbox_center = {0.0, 0.0}, 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; } if (direction == ID_FLIP_HORIZ) cairo_matrix_init_scale (&affine, -1, 1); else cairo_matrix_init_scale (&affine, 1, -1); // Let the views (canvas items) know about the rotation. g_signal_emit_by_name (G_OBJECT (textbox), "flipped", direction); if (center) { Coords textbox_pos; item_data_get_pos (ITEM_DATA (textbox), &textbox_pos); x = textbox_center.x - center->x; y = textbox_center.y - center->y; cairo_matrix_transform_point (&affine, &x, &y); delta.x = x - (textbox_center.x - center->x); delta.y = y - (textbox_center.y - center->y); item_data_move (ITEM_DATA (textbox), &delta); } } void textbox_update_bbox (Textbox *textbox) { Coords b1, b2; 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); } 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; Coords 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; } oregano-0.84.41/src/model/part.h0000644000175000017500000000521213413640652015344 0ustar rubenruben/* * part.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __PART_H #define __PART_H #include #include "coords.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 { Coords offset; guint pin_nr; gint node_nr; // Node number into the 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 (); Part *part_new_from_library_part (LibraryPart *library_part); gint part_get_num_pins (Part *part); Pin *part_get_pins (Part *part); gboolean part_set_pins (Part *part, GSList *connections); gboolean part_get_rotation (Part *part); IDFlip part_get_flip (Part *part); void part_labels_rotate (Part *part, int rotation); char **part_get_property_ref (Part *part, char *name); 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 oregano-0.84.41/src/model/node-store-private.h0000644000175000017500000002124513413640652020131 0ustar rubenruben#ifndef NODE_STORE_PRIV_H__ #define NODE_STORE_PRIV_H__ #include #include "coords.h" #include "node.h" #include "wire.h" #include "debug.h" static gboolean is_point_on_wire (Wire *w, Coords *where); 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); } /** * check if 2 wires intersect * @param a wire * @param b wire * @param where [out] [NULL allowed] the position of intersection, if * @returns TRUE when @a and @b intersect, else FALSE */ gboolean do_wires_intersect (Wire *a, Wire *b, Coords *where) { g_assert (a); g_assert (b); Coords delta1, start1; Coords delta2, start2; wire_get_pos_and_length (a, &start1, &delta1); wire_get_pos_and_length (b, &start2, &delta2); // parallel check const gdouble d = coords_cross (&delta1, &delta2); if (fabs (d) < NODE_EPSILON) { NG_DEBUG ("do_wires_intersect(%p,%p): NO! d=%lf\n", a, b, d); return FALSE; } // implemented according to // http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect const Coords qminusp = coords_sub (&start2, &start1); // p = start1, q = start2, r = delta1, s = delta2 const gdouble t = coords_cross (&qminusp, &delta1) / d; const gdouble u = coords_cross (&qminusp, &delta2) / d; if (t >= -NODE_EPSILON && t - NODE_EPSILON <= 1.f && u >= -NODE_EPSILON && u - NODE_EPSILON <= 1.f) { NG_DEBUG ("do_wires_intersect(%p,%p): YES! t,u = %lf,%lf\n", a, b, t, u); if (where) { where->x = start1.x + u * delta1.x; where->y = start1.y + u * delta1.y; } return TRUE; } NG_DEBUG ("do_wires_intersect(%p,%p): NO! t,u = %lf,%lf\n", a, b, t, u); return FALSE; } /** * @param store which NodeStore to use * @param pos where to look for wires * @returns list of wire at position p (including endpoints) */ static GSList *get_wires_at_pos (NodeStore *store, Coords pos) { GList *iter; GSList *wire_list; g_return_val_if_fail (store, FALSE); g_return_val_if_fail (IS_NODE_STORE (store), FALSE); wire_list = NULL; for (iter = store->wires; iter; iter = iter->next) { Wire *wire = iter->data; if (is_point_on_wire (wire, &pos)) wire_list = g_slist_prepend (wire_list, wire); } return wire_list; } /** * projects the point @p onto wire @w * @param w the wire * @param p the point * @param projected [out][NULL-allowed] the point p is projected onto - this is * always filled no matter of return value * @param d [out][NULL-allowed] the distance between @p and @projected - this is * always filled no matter of return value * @returns TRUE if the point was within the line segement bounds, else FALSE */ static gboolean project_point_on_wire (Wire *w, Coords *p, Coords *projected, gdouble *d) { Coords cstart, clen; wire_get_pos_and_length (w, &cstart, &clen); const Coords delta = coords_sub (p, &cstart); const gdouble l2 = coords_euclid2 (&clen); const gdouble lambda = coords_dot (&delta, &clen) / l2; Coords pro = {cstart.x + lambda * clen.x, cstart.y + lambda * clen.y}; if (projected) { *projected = pro; } if (d) { pro.x -= p->x; pro.y -= p->y; *d = coords_euclid2 (&pro); } return (lambda >= 0. - NODE_EPSILON && lambda <= 1. + NODE_EPSILON); } /** * test if point is within a wire (including endpoints) * @param w the wire * @param p the point to test */ static gboolean is_point_on_wire (Wire *w, Coords *p) { g_assert (w); g_assert (IS_WIRE (w)); g_assert (p); gdouble d = -7777.7777; const gboolean ret = project_point_on_wire (w, p, NULL, &d); return (ret && fabs (d) < NODE_EPSILON); } /** * check if the two given wires have any incomon endpoints * @param w the wire * @param p the point to test */ static gboolean is_point_at_end_of_wire (Wire *w, Coords *p) { g_assert (w); g_assert (IS_WIRE (w)); g_assert (p); Coords start1, end1; wire_get_start_and_end_pos (w, &start1, &end1); return coords_equal (&start1, p) || coords_equal (&end1, p); } /** * check if 2 wires are colinear/parallel */ static gboolean check_colinear (Wire *a, Wire *b) { Coords la, sa; Coords lb, sb; wire_get_pos_and_length (a, &sa, &la); wire_get_pos_and_length (b, &sb, &lb); // below implementations are idential #if 0 Coords nb; n1.x = +lb.y; n1.y = -lb.x; return fabs(coords_dot (&la,&nb)) < NODE_EPSILON; #else return fabs (coords_cross (&la, &lb)) < NODE_EPSILON; #endif } /** * check if the two given wires overlap * @param so start overlap * @param eo end overlap */ static gboolean do_wires_overlap (Wire *a, Wire *b, Coords *so, Coords *eo) { g_assert (a); g_assert (IS_WIRE (a)); g_assert (b); g_assert (IS_WIRE (b)); g_assert (so); g_assert (eo); Coords sa, la, ea; Coords sb, lb, eb; wire_get_pos_and_length (a, &sa, &la); wire_get_pos_and_length (b, &sb, &lb); ea = coords_sum (&sa, &la); eb = coords_sum (&sb, &lb); // parallel check if (!check_colinear (a, b)) return FALSE; const gboolean sb_on_a = is_point_on_wire (a, &sb); const gboolean eb_on_a = is_point_on_wire (a, &eb); const gboolean sa_on_b = is_point_on_wire (b, &sa); const gboolean ea_on_b = is_point_on_wire (b, &ea); // a-----b++++++b---a if (sb_on_a && eb_on_a) { *so = sb; *eo = eb; return TRUE; } if (sa_on_b && ea_on_b) { *so = sa; *eo = ea; return TRUE; } // a----b~~~~a++++++b // this also covers "touching" of colinear wires if (sb_on_a && sa_on_b) { *so = sb; *eo = sa; return TRUE; } if (eb_on_a && sa_on_b) { *so = eb; *eo = ea; return TRUE; } if (sb_on_a && ea_on_b) { *so = sb; *eo = ea; return TRUE; } if (eb_on_a && ea_on_b) { *so = eb; *eo = sa; return TRUE; } return FALSE; } /** * check if wires a and b form a t crossing * @param a * @param b * @param t [out][NULL-allowed] which endpoint is the T point (where both wires * "intersect") * @returns which of the inputs * @attention wire @a and @b are taken as granted to be intersecting * @attention L-like crossings are a special form of T-crossings */ gboolean is_t_crossing (Wire *a, Wire *b, Coords *t) { g_assert (a); g_assert (IS_WIRE (a)); g_assert (b); g_assert (IS_WIRE (b)); Coords sa, ea, sb, eb; wire_get_start_and_end_pos (a, &sa, &ea); wire_get_start_and_end_pos (b, &sb, &eb); if (is_point_on_wire (a, &sb) /* && !is_point_on_wire (a, &sb)*/) { if (t) // a *t = sb; // sbbb return TRUE; // a } if (is_point_on_wire (a, &eb) /* && !is_point_at_end_of_wire (a, &eb)*/) { if (t) // a *t = eb; // bbe return TRUE; // a } if (is_point_on_wire (b, &sa) /* && !is_point_at_end_of_wire (b, &sa)*/) { if (t) *t = sa; return TRUE; } if (is_point_on_wire (b, &ea) /* && !is_point_at_end_of_wire (b, &ea)*/) { if (t) *t = ea; return TRUE; } return FALSE; } /** * merge wire @b into wire @a, where @so and @eo are the overlapping wire part * * @param a wire * @param b wire to merge into @a * @param so [out] coords of the overlapping wire part - start * @param eo [out] coords of the overlapping wire part - end * @returns the pointer to a, or NUL if something went wrong * @attention onlycall this for two parallel and overlapping wires, ever! */ static Wire *vulcanize_wire (NodeStore *store, Wire *a, Wire *b) { g_assert (store); g_assert (IS_NODE_STORE (store)); g_assert (a); g_assert (IS_WIRE (a)); g_assert (b); g_assert (IS_WIRE (b)); Coords starta, enda; Coords startb, endb; GSList *list; wire_get_start_pos (a, &starta); wire_get_end_pos (a, &enda); wire_get_start_pos (b, &startb); wire_get_end_pos (b, &endb); Coords start, end, len; start.x = MIN (MIN (starta.x, startb.x), MIN (enda.x, endb.x)); start.y = MIN (MIN (starta.y, startb.y), MIN (enda.y, endb.y)); end.x = MAX (MAX (starta.x, startb.x), MAX (enda.x, endb.x)); end.y = MAX (MAX (starta.y, startb.y), MAX (enda.y, endb.y)); len.x = end.x - start.x; len.y = end.y - start.y; g_assert ((fabs (len.x) < NODE_EPSILON) ^ (fabs (len.y) < NODE_EPSILON)); // FIXME register and unregister to new position #define CREATE_NEW_WIRE 0 // always null, or schematic_add_item in create_wire // will return pure bogus (and potentially crash!) #if CREATE_NEW_WIRE Wire *w = wire_new (item_data_get_grid (ITEM_DATA (a))); g_return_val_if_fail (w, NULL); g_return_val_if_fail (IS_WIRE (w), NULL); #else Wire *w = a; #endif item_data_set_pos (ITEM_DATA (w), &start); wire_set_length (w, &len); for (list = wire_get_nodes (b); list;) { Node *n = list->data; list = list->next; // needs to be done here, as wire_add_node mods the list if (!IS_NODE (n)) g_warning ("Found bogus node entry in wire %p, ignored.", b); wire_add_node (w, n); node_add_wire (n, w); } return w; } #endif /* NODE_STORE_PRIVATE_H__ */ oregano-0.84.41/src/model/part-property.c0000644000175000017500000002412113413640652017221 0ustar rubenruben/* * part-property.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #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 (char macro, 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 && macro != '@' && macro != '&') { // 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 + (*cls1 != NULL ? strlen(*cls1) + 2 : 0) + (*cls2 != NULL ? strlen(*cls2) + 2 : 0); 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; } // Rules: // @ value of . If no value, error // & value of if is defined // ?s...s text between s...s separators if defined // ?s...ss...s text between 1st s...s separators if defined // else 2nd s...s clause // ~s...s text between s...s separators if undefined // ~s...ss...s text between 1st s...s separators if undefined // else 2nd s...s clause // #s...s text between s...s separators if defined, but // delete rest of template if undefined // Separators can be any of {',', '.', ';', '/', '|', '(', ')'}. // For an opening-closing pair of // separators the same character has to be used. // Examples: // R^@refdes %1 %2 @value // V^@refdes %+ %- SIN(@offset @ampl @freq 0 0) // ?DC|DC @DC| char *part_property_expand_macros (Part *part, char *string) { static char mcode[] = {"@?~#&"}; char *value; char *tmp0, *temp, *qn, *q0, *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; tmp0 = temp = g_strdup (string); 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, 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; g_free (qn); g_free (cls1); 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++; } } } g_free (tmp0); out = g_string_append_c (out, '\0'); ret = g_strdup (out->str); g_string_free (out, TRUE); return ret; } /** * see #168 */ void update_connection_designators(Part *part, char **prop, int *node_ctr) { if (prop == NULL || *prop == NULL) return; if (node_ctr == NULL) return; if (part == NULL || !IS_PART(part)) return; char *temp = *prop; GString *out = g_string_new (""); int breakout = FALSE; while (!breakout) { char **prop_split = g_regex_split_simple("[@?~#&%].*", temp, 0, 0); if (prop_split[0] == NULL) { g_strfreev(prop_split); break; } temp += strlen(prop_split[0]); g_string_append_printf(out, "%s", prop_split[0]); g_strfreev(prop_split); char macro = *temp; temp++; switch (macro) { case '%': { char **prop_split = g_regex_split_simple(" .*", temp, 0, 0); temp += strlen(prop_split[0]); g_string_append_printf(out, "%%%d", (*node_ctr)++); g_strfreev(prop_split); break; } case '@': { char **prop_split = g_regex_split_simple("[,.;/|() ].*", temp, 0, 0); temp += strlen(prop_split[0]); char *prop_ref_name = prop_split[0]; char **prop_ref_value = part_get_property_ref(part, prop_ref_name); g_string_append_printf(out, "@%s", prop_ref_name); update_connection_designators(part, prop_ref_value, node_ctr); g_strfreev(prop_split); break; } case '&': { char **prop_split = g_regex_split_simple("[,.;/|() ].*", temp, 0, 0); temp += strlen(prop_split[0]); char *prop_ref_name = prop_split[0]; char **prop_ref_value = part_get_property_ref(part, prop_ref_name); g_string_append_printf(out, "&%s", prop_ref_name); if (prop_ref_value != NULL && *prop_ref_value != NULL) update_connection_designators(part, prop_ref_value, node_ctr); g_strfreev(prop_split); break; } case '?': case '~': { char **prop_split = g_regex_split_simple("([,.;/|()])(.*?)(\\g{-3})(?(?=[,.;/|()])([,.;/|()])(.*?)(\\g{-3})).*", temp, 0, 0); char *prop_ref_name = g_strdup(prop_split[0]); char separator1 = *prop_split[1]; char *cls1 = g_strdup(prop_split[2]); //separator1 == *prop_split_name[3] char separator2 = prop_split[4] != NULL ? *prop_split[4] : 0; char *cls2 = NULL; if (separator2 != 0) { cls2 = g_strdup(prop_split[5]); } char **prop_ref_value = part_get_property_ref(part, prop_ref_name); for (int i = 0; prop_split[i] != NULL; i++) temp += strlen(prop_split[i]); g_strfreev(prop_split); if ( (macro == '?' && prop_ref_value != NULL && *prop_ref_value != NULL) || (macro == '~' && (prop_ref_value == NULL || *prop_ref_value == NULL)) ) update_connection_designators(part, &cls1, node_ctr); else if (cls2 != NULL) update_connection_designators(part, &cls2, node_ctr); g_string_append_printf(out, "%c%s%c%s%c", macro, prop_ref_name, separator1, cls1, separator1); if (cls2 != NULL) { g_string_append_printf(out, "%c%s%c", separator2, cls2, separator2); g_free(cls2); } g_free(cls1); g_free(prop_ref_name); break; } case '#': { char **prop_split = g_regex_split_simple("([,.;/|()])(.*?)(\\g{-3}).*", temp, 0, 0); char *prop_ref_name = g_strdup(prop_split[0]); char separator = *prop_split[1]; char *cls = g_strdup(prop_split[2]); //separator == *prop_split_name[3] char **prop_ref_value = part_get_property_ref(part, prop_ref_name); for (int i = 0; prop_split[i] != NULL; i++) temp += strlen(prop_split[i]); g_strfreev(prop_split); if (prop_ref_value != NULL && *prop_ref_value != NULL) { update_connection_designators(part, &cls, node_ctr); g_string_append_printf(out, "#%s%c%s%c", prop_ref_name, separator, cls, separator); } else { g_string_append_printf(out, "#%s%c%s%c%s", prop_ref_name, separator, cls, separator, temp); breakout = TRUE; } g_free(cls); g_free(prop_ref_name); break; } default: { breakout = TRUE; break; } } } g_free(*prop); *prop = out->str; g_string_free (out, FALSE); return; } oregano-0.84.41/src/model/node.h0000644000175000017500000000470113413640652015325 0ustar rubenruben/* * node.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __NODE_H #define __NODE_H #include #include "coords.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; Coords key; }; struct _NodeClass { GObjectClass parent_class; }; GType node_get_type (void); Node *node_new (Coords pos); gint node_is_empty (Node *node); gboolean node_add_pin (Node *node, Pin *pin); gboolean node_remove_pin (Node *node, Pin *pin); gboolean node_add_wire (Node *node, Wire *wire); gboolean node_remove_wire (Node *node, Wire *wire); gboolean node_is_visited (Node *node); void node_set_visited (Node *node, gboolean is_visited); gboolean node_needs_dot (Node *node); guint node_hash (gconstpointer key); gboolean node_equal (gconstpointer a, gconstpointer b); #endif oregano-0.84.41/src/simulation.h0000644000175000017500000000636113413640652015470 0ustar rubenruben/* * simulation.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __SIMULATION_H #define __SIMULATION_H #include #include "schematic.h" #include "schematic-view.h" typedef struct _SimulationData SimulationData; typedef enum { ANALYSIS_TYPE_NONE, ANALYSIS_TYPE_OP_POINT, ANALYSIS_TYPE_TRANSIENT, ANALYSIS_TYPE_DC_TRANSFER, ANALYSIS_TYPE_AC, ANALYSIS_TYPE_TRANSFER, ANALYSIS_TYPE_DISTORTION, ANALYSIS_TYPE_NOISE, ANALYSIS_TYPE_POLE_ZERO, ANALYSIS_TYPE_SENSITIVITY, ANALYSIS_TYPE_FOURIER, ANALYSIS_TYPE_UNKNOWN } AnalysisType; #define INFINITE 1e50f //keep in mind the relation to global variable //const char const *SimulationFunctionTypeString[] //in simulation.c (strings representing the functions in GUI) typedef enum { FUNCTION_SUBTRACT = 0, FUNCTION_DIVIDE } SimulationFunctionType; typedef struct _SimulationFunction { SimulationFunctionType type; guint first; guint second; } SimulationFunction; struct _SimulationData { AnalysisType type; gint n_variables; gchar **var_names; gchar **var_units; GArray **data; gdouble *min_data; gdouble *max_data; gint got_var; gint got_points; // Functions typeof SimulationFunction GList *functions; }; typedef struct { SimulationData sim_data; int state; } SimOp; typedef struct { SimulationData sim_data; double freq; gint nb_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 start, stop, step; } SimDC; typedef struct { SimulationData sim_data; int state; double sim_length; double start, stop; } SimNoise; typedef union { SimOp op; SimTransient transient; SimFourier fourier; SimAC ac; SimDC dc; SimNoise noise; } Analysis; void simulation_show_progress_bar (GtkWidget *widget, SchematicView *sv); gpointer simulation_new (Schematic *sm, Log *logstore); #define SIM_DATA(obj) ((SimulationData *)(obj)) #define ANALYSIS(obj) ((Analysis *)(obj)) #endif /* __SIMULATION_H */ oregano-0.84.41/src/options.c0000644000175000017500000000434413413640652014771 0ustar rubenruben#include "options.h" #include //for gtk_get_option_group OreganoOptions opts = { .debug = {.wires = FALSE, .boxes = FALSE, .dots = FALSE, .directions = FALSE, .all = FALSE}}; GOptionEntry entries[] = { {"version", 0, 0, G_OPTION_ARG_NONE, &(opts.version), "Print the version and quit.", NULL}, {"debug-wires", 0, 0, G_OPTION_ARG_NONE, &(opts.debug.wires), "Give them randomly alternating colors.", NULL}, {"debug-boundingboxes", 0, 0, G_OPTION_ARG_NONE, &(opts.debug.boxes), "Draw them in semi transparent purple.", NULL}, {"debug-dots", 0, 0, G_OPTION_ARG_NONE, &(opts.debug.dots), "Draw an extra color circle around dots which are always shown.", NULL}, {"debug-directions", 0, 0, G_OPTION_ARG_NONE, &(opts.debug.directions), "Draw fancy direction arrows top left edge of the sheet.", NULL}, {"debug-all", 0, 0, G_OPTION_ARG_NONE, &(opts.debug.all), "Enable all debug-* options.", NULL}, {NULL}}; /** * parse the commandline options for gtk args and oregano recognized ones * results will be written to a global Options struct (opts) * @param argc pointer to argc from main * @param argv pointer to argv from main * @param e a GError ptr ptr which will be filled in case of an error */ gboolean oregano_options_parse (int *argc, char **argv[], GError **e) { GError *error = NULL; gboolean r = FALSE; GOptionContext *context; context = g_option_context_new ("- electrical engineering tool"); g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE); g_option_context_add_group (context, gtk_get_option_group (TRUE)); r = g_option_context_parse (context, argc, argv, &error); if (error) { if (e) *e = g_error_copy (error); g_error_free (error); error = NULL; } g_option_context_free (context); return r; } inline gboolean oregano_options_version () { return opts.version; } inline gboolean oregano_options_debug_wires () { return opts.debug.wires || opts.debug.all; } inline gboolean oregano_options_debug_boxes () { return opts.debug.boxes || opts.debug.all; } inline gboolean oregano_options_debug_dots () { return opts.debug.dots || opts.debug.all; } inline gboolean oregano_options_debug_directions () { return opts.debug.directions || opts.debug.all; } oregano-0.84.41/src/splash.h0000644000175000017500000000266013413640652014574 0ustar rubenruben/* * splash.h * * * Author: * Ricardo Markiewicz * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef _OREGANO_SPLASH_H_ #define _OREGANO_SPLASH_H_ #include typedef struct _Splash Splash; struct _Splash { GtkWindow *win; GtkWidget *progress; GtkWidget *event; GtkLabel *lbl; gboolean can_destroy; }; Splash *oregano_splash_new (GError **error); gboolean oregano_splash_free (Splash *); void oregano_splash_step (Splash *, char *s); void oregano_splash_done (Splash *, char *s); #endif //_OREGANO_SPLASH_H_ oregano-0.84.41/src/main.c0000644000175000017500000000474313413640652014225 0ustar rubenruben/* * main.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include "oregano.h" #include "options.h" #include "schematic.h" int main (int argc, char *argv[]) { // keep in mind the app is a subclass of GtkApplication // which is a subclass of GApplication // so casts from g_application_get_default to // GtkApplication as well as GApplication or Oregano // are explicitly allowed Oregano *app; GError *error = NULL; int status; gpointer class = NULL; #ifdef ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif oregano_options_parse (&argc, &argv, &error); if (error) { g_warning ("Failed to parse commandline arguments: %i - %s", error->code, error->message); g_clear_error (&error); return 1; } if (oregano_options_version()) { g_printf("Oregano "VERSION"\n" " Website: https://ahoi.io/projects/oregano\n" " License: GPLv2/GPLv3\n" " Main Developer: Bernhard Schuster\n"); return 0; } // required? gtk_init (&argc, &argv); // required, as we possibly need signal // information within oregano.c _before_ the // first Schematic instance exists class = g_type_class_ref (TYPE_SCHEMATIC); app = oregano_new (); status = g_application_run (G_APPLICATION (app), argc, argv); g_object_unref (app); g_type_class_unref (class); return status; } oregano-0.84.41/src/oregano-config.h0000644000175000017500000000264213413640652016177 0ustar rubenruben/* * oregano-config.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, 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 * perhaps make the oregano global variable pass through these functions? */ void oregano_lookup_libraries (Splash *sp); #endif oregano-0.84.41/src/errors.h0000644000175000017500000000274213413640652014617 0ustar rubenruben/* * errors.h * * * Authors: * Ricardo Markiewicz * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 2003-2008 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __ERRORS_H #define __ERRORS_H #include #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_NO_SUCH_PART, OREGANO_SIMULATE_ERROR_IO_ERROR, OREGANO_SCHEMATIC_BAD_FILE_FORMAT, OREGANO_SCHEMATIC_FILE_NOT_FOUND, OREGANO_UI_ERROR_NO_BUILDER, OREGANO_OOM } OREGANO_ERRORS; #endif oregano-0.84.41/src/log.c0000644000175000017500000000611513413640652014055 0ustar rubenruben#include #include "log.h" #define LOG_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), LOG_TYPE, LogPrivate)) struct _LogPrivate { char x; }; G_DEFINE_TYPE (Log, log, GTK_TYPE_LIST_STORE); static void log_finalize (GObject *object) { G_OBJECT_CLASS (log_parent_class)->finalize (object); } static void log_class_init (LogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = log_finalize; g_type_class_add_private (object_class, sizeof(LogPrivate)); } static void log_init (Log *self) { static GType v[] = {G_TYPE_STRING, G_TYPE_STRING}; self->priv = LOG_GET_PRIVATE (self); gtk_list_store_set_column_types (GTK_LIST_STORE (self), 2, v); } Log *log_new () { return g_object_new (LOG_TYPE, NULL); } /** * trim only newlines */ gchar *log_append_trim_message(const gchar *string) { if (string == NULL) return NULL; gchar **array = g_regex_split_simple("[\\r\\n]*(.*?)[\\n$]+", string, 0, 0); gchar *ret_val = g_strdup(array[0]); g_strfreev(array); if (*ret_val == 0) { g_free(ret_val); ret_val = NULL; } return ret_val; } /** * Show on top of the items in the logview. * * If the previous message had an '\r' at the end, the previous message will be * replaced by the new message instead of prepending the new message. * * Leading and trailing '\n's will be truncated. */ void log_append (Log *log, const gchar *prefix, const gchar *message) { //trim message (only newlines), because newlines do not make sense in the log view gchar *message_trimed = log_append_trim_message(message); if (message_trimed == NULL) return; GtkTreeIter iter; //if the previous message had an '\r' at the end, the previous message will be //replaced by the new message instead of prepending the new message if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(log), &iter)) { GValue previous_value; previous_value.g_type = 0; gtk_tree_model_get_value(GTK_TREE_MODEL(log), &iter, 1, &previous_value); const gchar *previous_message = g_value_get_string(&previous_value); if (previous_message != NULL && previous_message[strlen(previous_message) - 1] != '\r') gtk_list_store_prepend (GTK_LIST_STORE (log), &iter); g_value_unset(&previous_value); } else { gtk_list_store_prepend (GTK_LIST_STORE (log), &iter); } gtk_list_store_set (GTK_LIST_STORE (log), &iter, 0, g_strdup (prefix), 1, g_strdup (message_trimed), -1); g_free(message_trimed); } void log_append_error (Log *log, const gchar *prefix, const gchar *message, GError *error) { if (error == NULL) { return log_append (log, prefix, message); } gchar *concat = NULL; if (message) { concat = g_strdup_printf ("%s\n%s - %i", message, error->message, error->code); } else { concat = g_strdup_printf ("\n%s - %i", error->message, error->code); } GtkTreeIter item; gtk_list_store_insert (GTK_LIST_STORE (log), &item, 0); gtk_list_store_set (GTK_LIST_STORE (log), &item, 0, g_strdup (prefix), 1, concat, -1); } void log_clear (Log *log) { gtk_list_store_clear (GTK_LIST_STORE (log)); } void log_export (Log *log, const gchar *path) { // FIXME TODO } oregano-0.84.41/src/options.h0000644000175000017500000000112713413640652014772 0ustar rubenruben#ifndef OPTION_H__ #define OPTION_H__ #ifndef GETTEXT_PACKAGE #define GETTEXT_PACKAGE "oregano" #endif #include typedef struct { gboolean version; struct { gboolean wires; gboolean boxes; gboolean dots; gboolean directions; gboolean all; } debug; } OreganoOptions; gboolean oregano_options_parse (int *argc, char **argv[], GError **e); gboolean oregano_options_version (); gboolean oregano_options_debug_wires (); gboolean oregano_options_debug_boxes (); gboolean oregano_options_debug_dots (); gboolean oregano_options_debug_directions (); #endif /* OPTION_H__ */ oregano-0.84.41/src/dialogs.h0000644000175000017500000000400013413640652014712 0ustar rubenruben/* * dialogs.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __DIALOGS_H #define __DIALOGS_H #include "schematic.h" typedef struct _OreganoTitleMsg OreganoTitleMsg; typedef struct _OreganoQuestionAnswer OreganoQuestionAnswer; struct _OreganoTitleMsg { gchar *title; gchar *msg; }; struct _OreganoQuestionAnswer { gchar *msg; gint ans; }; gboolean oregano_schedule_error (gchar *msg); gboolean oregano_schedule_error_with_title (OreganoTitleMsg *tm); void oregano_error (gchar *msg); void oregano_error_with_title (gchar *title, gchar *msg); gboolean oregano_schedule_warning (gchar *msg); gboolean oregano_schedule_warning_with_title (OreganoTitleMsg *tm); void oregano_warning (gchar *msg); void oregano_warning_with_title (gchar *title, gchar *msg); gboolean oregano_schedule_question (OreganoQuestionAnswer *qa); gint oregano_question (gchar *msg); void dialog_about (void); #endif oregano-0.84.41/src/file.h0000644000175000017500000000254213413640652014220 0ustar rubenruben/* * file.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __FILE_H #define __FILE_H #include #include "schematic-view.h" 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 oregano-0.84.41/src/debug.h0000644000175000017500000000311513413640652014364 0ustar rubenruben/* * debug.h * * * Authors: * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 2012-2013 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #ifdef DEBUG_THIS #undef DEBUG_THIS #endif #define DEBUG_THIS 0 #ifndef DEBUG_ALL #define DEBUG_ALL 0 #endif #define NG_DEBUG(msg, ...) \ { \ if (DEBUG_THIS || DEBUG_ALL) { \ g_printf ("%s:%d @ %s +++ " msg "\n", __FILE__, __LINE__, __FUNCTION__, \ ##__VA_ARGS__); \ } \ } oregano-0.84.41/src/oregano-utils.c0000644000175000017500000000431413413640652016063 0ustar rubenruben/* * oregano-utils.c * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "debug.h" #include "oregano-utils.h" gdouble oregano_strtod (const gchar *str, const gchar *unit) { gboolean unit_does_not_match = FALSE; gdouble ret; gchar *endptr, *c; size_t unit_length = 0; if (unit) unit_length = strlen (unit); if (!str) return 0.0; ret = g_ascii_strtod (str, &endptr); for (c = endptr; *c; c++) { switch (*c) { case 'T': ret *= 1e12; break; case 'G': ret *= 1e9; break; case 'M': ret *= 1e6; break; case 'k': ret *= 1e3; break; case 'm': ret *= 1e-3; break; case 'u': ret *= 1e-6; break; case 'n': ret *= 1e-9; break; case 'p': ret *= 1e-12; break; case 'f': ret *= 1e-15; break; case ' ': break; default: if (c) { if (!g_ascii_strncasecmp (c, unit, unit_length)) { return ret; } else { unit_does_not_match = TRUE; break; } } break; } } if (unit_does_not_match) g_printf ("Unexpected unit of measurement\n"); return ret; } oregano-0.84.41/src/sheet/0000755000175000017500000000000013413640652014235 5ustar rubenrubenoregano-0.84.41/src/sheet/create-wire.c0000644000175000017500000003652313413640652016621 0ustar rubenruben/* * create-wire.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Description: 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: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2012-2013 Bernhard Schuster * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "cursors.h" #include "coords.h" #include "node-store.h" #include "wire-item.h" #include "create-wire.h" #include "wire.h" #include "sheet-private.h" #include "debug.h" CreateWireInfo *create_wire_info_new (Sheet *sheet) { CreateWireInfo *create_wire_info; GooCanvasLineDash *dash; create_wire_info = g_new0 (CreateWireInfo, 1); create_wire_info->state = WIRE_DISABLED; create_wire_info->direction = WIRE_DIR_HORIZ; // create_wire_info->direction_auto_toggle = // WIRE_DIRECTION_AUTO_TOGGLE_OFF; create_wire_info->points = goo_canvas_points_new (3); create_wire_info->points->coords[0] = 0.; create_wire_info->points->coords[1] = 0.; create_wire_info->points->coords[2] = 0.; create_wire_info->points->coords[3] = 0.; create_wire_info->points->coords[4] = 0.; create_wire_info->points->coords[5] = 0.; dash = goo_canvas_line_dash_new (2, 5.0, 5.0); create_wire_info->line = GOO_CANVAS_POLYLINE (goo_canvas_polyline_new ( GOO_CANVAS_ITEM (sheet->grid), FALSE, 0, "points", create_wire_info->points, "stroke-color-rgba", 0x92BA52C3, "line-dash", dash, "line-width", 2.0, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL)); goo_canvas_line_dash_unref (dash); create_wire_info->dot = GOO_CANVAS_ELLIPSE (goo_canvas_ellipse_new ( GOO_CANVAS_ITEM (sheet->object_group), -3.0, -3.0, 6.0, 6.0, "fill-color", "red", "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL)); return create_wire_info; } void create_wire_info_destroy (CreateWireInfo *create_wire_info) { g_return_if_fail (create_wire_info); goo_canvas_item_remove (GOO_CANVAS_ITEM (create_wire_info->dot)); goo_canvas_item_remove (GOO_CANVAS_ITEM (create_wire_info->line)); goo_canvas_points_unref (create_wire_info->points); g_free (create_wire_info); } inline static gboolean create_wire_start (Sheet *sheet, GdkEvent *event) { double x, y; GooCanvasPoints *points; GooCanvasPolyline *line; CreateWireInfo *create_wire_info; // g_signal_stop_emission_by_name (sheet, "event"); create_wire_info = sheet->priv->create_wire_info; #if 0 //TODO save and restore the selection? sheet_select_all (sheet, FALSE); #endif points = create_wire_info->points; line = create_wire_info->line; g_assert (points); g_assert (line); x = event->button.x; y = event->button.y; goo_canvas_convert_from_pixels (GOO_CANVAS (sheet), &x, &y); snap_to_grid (sheet->grid, &x, &y); #if 0 Coords p; sheet_get_pointer (sheet, &p.x, &p.y); NG_DEBUG ("diff_x=%lf; diff_y=%lf;", p.x-x, p.y-y); #endif // start point points->coords[0] = x; points->coords[1] = y; // mid point points->coords[2] = x; points->coords[3] = y; // end point points->coords[4] = x; points->coords[5] = y; g_object_set (G_OBJECT (line), "points", points, "visibility", GOO_CANVAS_ITEM_VISIBLE, NULL); goo_canvas_item_raise (GOO_CANVAS_ITEM (create_wire_info->line), NULL); goo_canvas_item_raise (GOO_CANVAS_ITEM (create_wire_info->dot), NULL); create_wire_info->state = WIRE_ACTIVE; sheet_pointer_grab (sheet, event); sheet_keyboard_grab (sheet, event); return TRUE; } inline static gboolean create_wire_update (Sheet *sheet, GdkEvent *event) { CreateWireInfo *create_wire_info; double new_x, new_y, x1, y1; gint32 snapped_x, snapped_y; Coords pos; Schematic *schematic; NodeStore *store; // g_signal_stop_emission_by_name (sheet, "event"); create_wire_info = sheet->priv->create_wire_info; schematic = schematic_view_get_schematic_from_sheet (sheet); g_assert (schematic); store = schematic_get_store (schematic); g_assert (store); new_x = event->button.x; new_y = event->button.y; goo_canvas_convert_from_pixels (GOO_CANVAS (sheet), &new_x, &new_y); snap_to_grid (sheet->grid, &new_x, &new_y); #if 0 Coords p; sheet_get_pointer (sheet, &p.x, &p.y); NG_DEBUG ("diff_x=%lf; diff_y=%lf;", p.x-new_x, p.y-new_y); #endif snapped_x = (gint32)new_x; snapped_y = (gint32)new_y; /* start pos (do not update, * was fixed in _start func and will not change * until _discard or _fixate) */ x1 = create_wire_info->points->coords[0]; y1 = create_wire_info->points->coords[1]; // mid pos if (create_wire_info->direction == WIRE_DIR_VERT) { create_wire_info->points->coords[2] = x1; create_wire_info->points->coords[3] = snapped_y; } else if (create_wire_info->direction == WIRE_DIR_HORIZ) { create_wire_info->points->coords[2] = snapped_x; create_wire_info->points->coords[3] = y1; } else { create_wire_info->points->coords[2] = x1; create_wire_info->points->coords[3] = y1; } NG_DEBUG ("update ~._.~ start=(%lf,%lf) → end=(%i,%i)", x1, y1, snapped_x, snapped_y); // end pos create_wire_info->points->coords[4] = snapped_x; create_wire_info->points->coords[5] = snapped_y; g_assert (create_wire_info->line); // required to trigger goocanvas update of the line object g_object_set (G_OBJECT (create_wire_info->line), "points", create_wire_info->points, NULL); pos.x = (gdouble)snapped_x; pos.y = (gdouble)snapped_y; /* Check if the pre-wire intersect another wire, and * draw a small red circle to indicate the connection */ g_assert (create_wire_info->dot); const guint8 is_pin = node_store_is_pin_at_pos (store, pos); const guint8 is_wire = node_store_is_wire_at_pos (store, pos); if (is_pin || is_wire) { g_object_set (G_OBJECT (create_wire_info->dot), "x", new_x - 3.0, "y", new_y - 3.0, "width", 6.0, "height", 6.0, "visibility", GOO_CANVAS_ITEM_VISIBLE, NULL); } else { g_object_set (G_OBJECT (create_wire_info->dot), "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); } goo_canvas_item_raise (GOO_CANVAS_ITEM (create_wire_info->line), NULL); return TRUE; } inline static gboolean create_wire_discard (Sheet *sheet, GdkEvent *event) { CreateWireInfo *create_wire_info; // g_signal_stop_emission_by_name (sheet, "event"); NG_DEBUG ("wire got discarded"); sheet_keyboard_ungrab (sheet, event); sheet_pointer_ungrab (sheet, event); create_wire_info = sheet->priv->create_wire_info; g_object_set (G_OBJECT (create_wire_info->dot), "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); g_object_set (G_OBJECT (create_wire_info->line), "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); create_wire_info->state = WIRE_START; return TRUE; } inline static Wire *create_wire_spawn (Sheet *sheet, Coords start_pos, Coords end_pos) { Wire *wire = NULL; Coords length; NG_DEBUG ("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- spawning..."); g_assert (sheet); g_assert (IS_SHEET (sheet)); wire = wire_new (sheet->grid); length.x = end_pos.x - start_pos.x; length.y = end_pos.y - start_pos.y; wire_set_length (wire, &length); item_data_set_pos (ITEM_DATA (wire), &start_pos); schematic_add_item (schematic_view_get_schematic_from_sheet (sheet), ITEM_DATA (wire)); NG_DEBUG ("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- spawning wire %p", wire); return wire; } #define FINISH_ON_WIRE_CLICK 0 inline static gboolean create_wire_fixate (Sheet *sheet, GdkEvent *event) { NodeStore *store; Schematic *schematic; Coords p1, p2, start_pos, end_pos, mid_pos; CreateWireInfo *create_wire_info; Wire *wire = NULL; gboolean b_start_eq_mid, b_mid_eq_end; #if FINISH_ON_WIRE_CLICK gboolean b_finish; #endif double x, y; // g_signal_stop_emission_by_name (sheet, "event"); x = event->button.x; y = event->button.y; goo_canvas_convert_from_pixels (GOO_CANVAS (sheet), &x, &y); snap_to_grid (sheet->grid, &x, &y); create_wire_info = sheet->priv->create_wire_info; g_assert (create_wire_info); g_assert (create_wire_info->points); g_assert (create_wire_info->line); p1.x = create_wire_info->points->coords[0]; p1.y = create_wire_info->points->coords[1]; p2.x = x; p2.y = y; NG_DEBUG ("x: %lf ?= %lf | y: %lf ?= %lf", p1.x, p2.x, p1.y, p2.y); // if we are back at the starting point of our wire, // and the user tries to fixate, just ignore it // and mark the event as handled if (coords_equal (&p1, &p2)) return TRUE; schematic = schematic_view_get_schematic_from_sheet (sheet); g_assert (schematic); store = schematic_get_store (schematic); g_assert (store); start_pos.x = create_wire_info->points->coords[0]; start_pos.y = create_wire_info->points->coords[1]; mid_pos.x = create_wire_info->points->coords[2]; mid_pos.y = create_wire_info->points->coords[3]; end_pos.x = create_wire_info->points->coords[4]; end_pos.y = create_wire_info->points->coords[5]; NG_DEBUG ("A(%g, %g) B(%g, %g) -> same = %i", start_pos.x, start_pos.y, mid_pos.x, mid_pos.y, coords_equal (&start_pos, &mid_pos)); NG_DEBUG ("A(%g, %g) B(%g, %g) -> same = %i", mid_pos.x, mid_pos.y, end_pos.x, end_pos.y, coords_equal (&mid_pos, &end_pos)); #if FINISH_ON_WIRE_CLICK // check for wires _before_ spawning wires // otherwise we will end up with 1 anyways b_finish = node_store_get_node (store, end_pos) || node_store_is_wire_at_pos (store, end_pos); #endif b_start_eq_mid = coords_equal (&start_pos, &mid_pos); b_mid_eq_end = coords_equal (&mid_pos, &end_pos); if (!b_mid_eq_end && !b_start_eq_mid) { NG_DEBUG ("we should get exactly 2 wires"); } if (!b_start_eq_mid) { wire = create_wire_spawn (sheet, start_pos, mid_pos); g_assert (wire); g_assert (IS_WIRE (wire)); } else { NG_DEBUG ("looks like start == midpos"); } if (!b_mid_eq_end) { wire = create_wire_spawn (sheet, mid_pos, end_pos); g_assert (wire); g_assert (IS_WIRE (wire)); } else { NG_DEBUG ("looks like midpos == endpos"); } /* check if target location is either wire or node, * if so, * set state to START and fixate both ends of the current wire */ #if FINISH_ON_WIRE_CLICK /* * auto-finish if the target is a wire or node */ if (b_finish) return create_wire_discard (sheet, event); #endif /* * update all position/cursor data for the next wire * (consider this is a implicit START call, with less bloat) */ x = create_wire_info->points->coords[4]; y = create_wire_info->points->coords[5]; create_wire_info->points->coords[0] = x; create_wire_info->points->coords[1] = y; create_wire_info->points->coords[2] = x; create_wire_info->points->coords[3] = y; // required to trigger goocanvas update of the line object g_object_set (G_OBJECT (create_wire_info->line), "points", create_wire_info->points, NULL); // toggle wire direction if (create_wire_info->direction == WIRE_DIR_VERT) create_wire_info->direction = WIRE_DIR_HORIZ; else create_wire_info->direction = WIRE_DIR_VERT; goo_canvas_item_raise (GOO_CANVAS_ITEM (create_wire_info->line), NULL); /* * do NOT ungrab sheet here, as we are still creating another wire * this should be changed if on fixate means that we are back in state * WIRE_START */ return TRUE; } gboolean create_wire_setup (Sheet *sheet) { CreateWireInfo *create_wire_info; g_return_val_if_fail (sheet, FALSE); g_return_val_if_fail (IS_SHEET (sheet), FALSE); create_wire_info = sheet->priv->create_wire_info; g_return_val_if_fail (create_wire_info, FALSE); if (create_wire_info->state == WIRE_DISABLED) { create_wire_info->event_handler_id = g_signal_connect (sheet, "event", G_CALLBACK (create_wire_event), NULL); // this is also handled by event // create_wire_info->cancel_handler_id = g_signal_connect (sheet, //"cancel", // G_CALLBACK //(create_wire_discard), NULL); } create_wire_info->state = WIRE_START; return TRUE; } gboolean create_wire_orientationtoggle (Sheet *sheet) { CreateWireInfo *create_wire_info; GooCanvasPoints *points; g_return_val_if_fail (sheet, FALSE); g_return_val_if_fail (IS_SHEET (sheet), FALSE); NG_DEBUG ("toggle orientation") create_wire_info = sheet->priv->create_wire_info; g_return_val_if_fail (create_wire_info, FALSE); points = create_wire_info->points; switch (create_wire_info->direction) { case WIRE_DIR_HORIZ: create_wire_info->direction = WIRE_DIR_VERT; points->coords[2] = points->coords[0]; points->coords[3] = points->coords[5]; g_object_set (G_OBJECT (create_wire_info->line), "points", points, NULL); break; case WIRE_DIR_VERT: create_wire_info->direction = WIRE_DIR_HORIZ; points->coords[2] = points->coords[4]; points->coords[3] = points->coords[1]; g_object_set (G_OBJECT (create_wire_info->line), "points", points, NULL); break; default: break; } return TRUE; } gboolean create_wire_event (Sheet *sheet, GdkEvent *event, gpointer data) { CreateWireInfo *create_wire_info; g_return_val_if_fail (sheet, FALSE); g_return_val_if_fail (IS_SHEET (sheet), FALSE); create_wire_info = sheet->priv->create_wire_info; g_return_val_if_fail (create_wire_info, FALSE); switch (event->type) { case GDK_3BUTTON_PRESS: case GDK_2BUTTON_PRESS: case GDK_BUTTON_RELEASE: break; case GDK_BUTTON_PRESS: switch (event->button.button) { case 1: if (create_wire_info->state == WIRE_START) return create_wire_start (sheet, event); else if (create_wire_info->state == WIRE_ACTIVE) return create_wire_fixate (sheet, event); break; case 3: if (create_wire_info->state == WIRE_ACTIVE) return create_wire_discard (sheet, event); break; default: break; } break; case GDK_MOTION_NOTIFY: if (create_wire_info->state == WIRE_ACTIVE) return create_wire_update (sheet, event); break; case GDK_KEY_PRESS: NG_DEBUG ("keypress 0"); if (create_wire_info->state != WIRE_ACTIVE) return FALSE; NG_DEBUG ("keypress 1"); switch (event->key.keyval) { case GDK_KEY_Escape: return create_wire_discard (sheet, event); case GDK_KEY_R: case GDK_KEY_r: return create_wire_orientationtoggle (sheet); default: break; } default: break; } return FALSE; } gboolean create_wire_cleanup (Sheet *sheet) { CreateWireInfo *create_wire_info; create_wire_info = sheet->priv->create_wire_info; if (create_wire_info && create_wire_info->state != WIRE_DISABLED) { g_object_set (G_OBJECT (create_wire_info->line), "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); create_wire_info->state = WIRE_DISABLED; g_signal_handler_disconnect (G_OBJECT (sheet), create_wire_info->event_handler_id); // g_signal_handler_disconnect (G_OBJECT (sheet), // create_wire_info->cancel_handler_id); } return TRUE; } oregano-0.84.41/src/sheet/rubberband.c0000644000175000017500000002173513413640652016517 0ustar rubenruben/* * rubberband.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Description: Handles the user interaction when doing area/rubberband *selections. * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "rubberband.h" #include "sheet-private.h" #include "debug.h" inline static cairo_pattern_t *create_stipple (const char *color_name, guchar stipple_data[]) { cairo_surface_t *surface; cairo_pattern_t *pattern; GdkRGBA color; int stride; const int width = 8; const int height = 8; gdk_rgba_parse (&color, color_name); /* stipple_data[2] = stipple_data[14] = color.red >> 8; stipple_data[1] = stipple_data[13] = color.green >> 8; stipple_data[0] = stipple_data[12] = color.blue >> 8; */ stride = cairo_format_stride_for_width (CAIRO_FORMAT_ARGB32, width); g_assert (stride > 0); NG_DEBUG ("stride = %i", stride); surface = cairo_image_surface_create_for_data (stipple_data, CAIRO_FORMAT_ARGB32, width, height, stride); pattern = cairo_pattern_create_for_surface (surface); cairo_surface_destroy (surface); cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); return pattern; } #define COLOR_A 0x3093BA52 #define COLOR_B 0x30FFFFFF #define PREMULTIPLY(argb) \ ((argb & 0xFF << 24) | \ ((((argb & 0xFF << 16) >> 16) * ((argb & 0xFF << 24) >> 24) / 0xFF) << 16) | \ ((((argb & 0xFF << 8) >> 8) * ((argb & 0xFF << 24) >> 24) / 0xFF) << 8) | \ ((((argb & 0xFF << 0) >> 0) * ((argb & 0xFF << 24) >> 24) / 0xFF) << 0)) #define COLOR_A_PRE PREMULTIPLY (COLOR_A) #define COLOR_B_PRE PREMULTIPLY (COLOR_B) RubberbandInfo *rubberband_info_new (Sheet *sheet) { RubberbandInfo *rubberband_info; cairo_pattern_t *pattern; cairo_matrix_t matrix; NG_DEBUG ("0x%x A", COLOR_A); NG_DEBUG ("0x%x B", COLOR_B); NG_DEBUG ("0x%x A PRE", COLOR_A_PRE); NG_DEBUG ("0x%x B PRE", COLOR_B_PRE); static guint32 stipple_data[8 * 8] = { COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_A_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE, COLOR_B_PRE}; /* the stipple patten should look like that * 1 1 1 0 0 0 0 1 * 1 1 0 0 0 0 1 1 * 1 0 0 0 0 1 1 1 * 0 0 0 0 1 1 1 1 * * 0 0 0 1 1 1 1 0 * 0 0 1 1 1 1 0 0 * 0 1 1 1 1 0 0 0 * 1 1 1 1 0 0 0 0 */ rubberband_info = g_new (RubberbandInfo, 1); rubberband_info->state = RUBBERBAND_START; pattern = create_stipple ("lightgrey", (guchar *)stipple_data); // scale 5x, see // http://cairographics.org/manual/cairo-cairo-pattern-t.html#cairo-pattern-t cairo_matrix_init_scale (&matrix, 1.0, 1.0); cairo_pattern_set_matrix (pattern, &matrix); rubberband_info->rectangle = GOO_CANVAS_RECT (goo_canvas_rect_new ( GOO_CANVAS_ITEM (sheet->object_group), 10.0, 10.0, 10.0, 10.0, "stroke-color", "black", "line-width", 0.2, "fill-pattern", pattern, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL)); cairo_pattern_destroy (pattern); return rubberband_info; } void rubberband_info_destroy (RubberbandInfo *rubberband_info) { g_return_if_fail (rubberband_info != NULL); goo_canvas_item_remove (GOO_CANVAS_ITEM (rubberband_info->rectangle)); g_free (rubberband_info); } gboolean rubberband_start (Sheet *sheet, GdkEvent *event) { GList *list; double x, y; RubberbandInfo *rubberband_info; g_assert (event->type == GDK_BUTTON_PRESS); x = event->button.x; y = event->button.y; goo_canvas_convert_from_pixels (GOO_CANVAS (sheet), &x, &y); rubberband_info = sheet->priv->rubberband_info; rubberband_info->start.x = x; rubberband_info->start.y = y; rubberband_info->end.x = x; rubberband_info->end.y = y; rubberband_info->state = RUBBERBAND_ACTIVE; // FIXME TODO recheck g_assert (rubberband_info->rectangle != NULL); g_object_set (rubberband_info->rectangle, "x", x, "y", y, "width", 0., "height", 0., "visibility", GOO_CANVAS_ITEM_VISIBLE, NULL); #if 1 // Mark all the selected objects to preserve their selected state // if SHIFT is pressed while rubberbanding. if (event->button.state & GDK_SHIFT_MASK) { for (list = sheet->priv->selected_objects; list; list = list->next) sheet_item_set_preserve_selection (SHEET_ITEM (list->data), TRUE); sheet->priv->preserve_selection_items = g_list_copy (sheet->priv->selected_objects); } #endif sheet_pointer_grab (sheet, event); return TRUE; } gboolean rubberband_update (Sheet *sheet, GdkEvent *event) { GList *iter; Coords cur, cmin, cmax; double dx, dy; // TODO maybe keep track of subpixel changes, make em // global/part of the rubberband_info struct and reset on // finish double width, height, width_ng, height_ng; RubberbandInfo *rubberband_info; rubberband_info = sheet->priv->rubberband_info; g_assert (event->type == GDK_MOTION_NOTIFY); cur.x = event->motion.x; cur.y = event->motion.y; goo_canvas_convert_from_pixels (GOO_CANVAS (sheet), &cur.x, &cur.y); width = fabs (rubberband_info->end.x - rubberband_info->start.x); height = fabs (rubberband_info->end.y - rubberband_info->start.y); width_ng = fabs (cur.x - rubberband_info->start.x); height_ng = fabs (cur.y - rubberband_info->start.y); dx = fabs (width_ng - width); dy = fabs (height_ng - height); NG_DEBUG ("motion :: dx=%lf, dy=%lf :: x=%lf, y=%lf :: w_ng=%lf, h_ng=%lf", dx, dy, cur.x, cur.y, width_ng, height_ng); // TODO FIXME scroll window if needed (use // http://developer.gnome.org/goocanvas/stable/GooCanvas.html#goo-canvas-scroll-to) if (dx > 0.1 || dy > 0.1) { // a 0.1 change in pixel coords would be the least // visible, silently ignore everything else rubberband_info->end.x = cur.x; rubberband_info->end.y = cur.y; cmin.x = MIN (rubberband_info->start.x, rubberband_info->end.x); cmin.y = MIN (rubberband_info->start.y, rubberband_info->end.y); cmax.x = cmin.x + width_ng; cmax.y = cmin.y + height_ng; #if 1 for (iter = sheet->priv->items; iter; iter = iter->next) { sheet_item_select_in_area (iter->data, &cmin, &cmax); } #endif g_object_set (GOO_CANVAS_ITEM (rubberband_info->rectangle), "x", cmin.x, "y", cmin.y, "width", width_ng, "height", height_ng, "visibility", GOO_CANVAS_ITEM_VISIBLE, NULL); goo_canvas_item_raise (GOO_CANVAS_ITEM (rubberband_info->rectangle), NULL); } return TRUE; } gboolean rubberband_finish (Sheet *sheet, GdkEvent *event) { RubberbandInfo *rubberband_info; rubberband_info = sheet->priv->rubberband_info; #if 1 GList *iter = NULL; if (sheet->priv->preserve_selection_items) { for (iter = sheet->priv->preserve_selection_items; iter; iter = iter->next) sheet_item_set_preserve_selection (SHEET_ITEM (iter->data), FALSE); g_list_free (sheet->priv->preserve_selection_items); sheet->priv->preserve_selection_items = NULL; } #endif sheet_pointer_ungrab (sheet, event); g_object_set (rubberband_info->rectangle, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); rubberband_info->state = RUBBERBAND_START; return TRUE; } oregano-0.84.41/src/sheet/plot-add-function.h0000644000175000017500000000236013413640652017736 0ustar rubenruben/* * plot-add-function.h * * * Author: * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __PLOT_ADD_H #define __PLOT_ADD_H #include "simulation.h" #include "engine.h" void plot_add_function_show (OreganoEngine *engine, SimulationData *current); extern const char *SimulationFunctionTypeString[]; #endif oregano-0.84.41/src/sheet/part-item.h0000644000175000017500000000437713413640652016323 0ustar rubenruben/* * part-item.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, 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)) 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); void part_item_create_canvas_items_for_preview (GooCanvasGroup *group, LibraryPart *library_part); void part_item_update_node_label (PartItem *part); void part_item_show_node_labels (PartItem *part, gboolean b); #endif oregano-0.84.41/src/sheet/sheet-private.h0000644000175000017500000000362413413640652017173 0ustar rubenruben/* * sheet-private.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __SHEET_PRIVATE_H #define __SHEET_PRIVATE_H #include #include #include "sheet.h" #include "create-wire.h" #include "rubberband.h" struct _SheetPriv { // Keeps the current signal handler for wire creation int wire_handler_id; // Keeps the signal handler for floating objects. int float_handler_id; double zoom; gulong width; gulong height; GooCanvasGroup *selected_group; GooCanvasGroup *floating_group; GList *selected_objects; GList *floating_objects; GList *items; RubberbandInfo *rubberband_info; GList *preserve_selection_items; GooCanvasClass *sheet_parent_class; GHashTable *voltmeter_nodes; CreateWireInfo *create_wire_info; // Wire context for each schematic GHashTable *node_dots; guint8 keyboard_grabbed : 1; guint8 pointer_grabbed : 1; }; #endif oregano-0.84.41/src/sheet/textbox-item.c0000644000175000017500000003562313413640652017043 0ustar rubenruben/* * textbox-item.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "cursors.h" #include "coords.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_finalize (GObject *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, IDFlip direction, SheetItem *sheet_item); static void textbox_moved_callback (ItemData *data, Coords *pos, SheetItem *item); static void textbox_text_changed_callback (ItemData *data, gchar *new_text, SheetItem *item); static void textbox_item_paste (Sheet *sheet, 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, Coords *p1, Coords *p2); inline static void get_cached_bounds (TextboxItem *item, Coords *p1, Coords *p2); static void textbox_item_place (SheetItem *item, Sheet *sheet); static void textbox_item_place_ghost (SheetItem *item, Sheet *sheet); static void edit_textbox (SheetItem *sheet_item); static void edit_cmd (GtkWidget *widget, Sheet *sheet); #include "debug.h" typedef struct { GtkDialog *dialog; GtkEntry *entry; } TextboxPropDialog; static TextboxPropDialog *prop_dialog = NULL; static const char *textbox_item_context_menu = "" " " " " " " ""; 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; GooCanvasItem *text_canvas_item; // Cached bounding box. This is used to make // the rubberband selection a bit faster. Coords bbox_start; Coords bbox_end; }; G_DEFINE_TYPE (TextboxItem, textbox_item, TYPE_SHEET_ITEM) static void textbox_item_class_init (TextboxItemClass *textbox_item_class) { GObjectClass *object_class; SheetItemClass *sheet_item_class; object_class = G_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); object_class->finalize = textbox_item_finalize; 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_finalize (GObject *object) { TextboxItem *item; item = TEXTBOX_ITEM (object); g_free (item->priv); item->priv = NULL; G_OBJECT_CLASS (textbox_item_parent_class)->finalize (object); } // "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) { GooCanvasItem *item; TextboxItem *textbox_item; TextboxItemPriv *priv; Coords pos; ItemData *item_data; 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 = g_object_new (TYPE_TEXTBOX_ITEM, NULL); g_object_set (item, "parent", sheet->object_group, NULL); textbox_item = TEXTBOX_ITEM (item); g_object_set (textbox_item, "data", textbox, NULL); priv = textbox_item->priv; priv->text_canvas_item = goo_canvas_text_new ( GOO_CANVAS_ITEM (textbox_item), textbox_get_text (textbox), 0.0, 0.0, -1, GOO_CANVAS_ANCHOR_SW, "font", TEXTBOX_FONT, "fill-color", NORMAL_COLOR, NULL); item_data = ITEM_DATA (textbox); item_data->rotated_handler_id = g_signal_connect_object (G_OBJECT (textbox), "rotated", G_CALLBACK (textbox_rotated_callback), G_OBJECT (textbox_item), 0); item_data->flipped_handler_id = g_signal_connect_object (G_OBJECT (textbox), "flipped", G_CALLBACK (textbox_flipped_callback), G_OBJECT (textbox_item), 0); item_data->moved_handler_id = g_signal_connect_object (G_OBJECT (textbox), "moved", G_CALLBACK (textbox_moved_callback), G_OBJECT (textbox_item), 0); textbox->text_changed_handler_id = g_signal_connect_object ( G_OBJECT (textbox), "text_changed", G_CALLBACK (textbox_text_changed_callback), G_OBJECT (textbox_item), 0); textbox_update_bbox (textbox); return textbox_item; } void textbox_item_signal_connect_placed (TextboxItem *textbox_item, Sheet *sheet) { g_signal_connect (G_OBJECT (textbox_item), "button_press_event", G_CALLBACK (sheet_item_event), sheet); g_signal_connect (G_OBJECT (textbox_item), "button_release_event", G_CALLBACK (sheet_item_event), sheet); g_signal_connect (G_OBJECT (textbox_item), "key_press_event", G_CALLBACK (sheet_item_event), sheet); } 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, IDFlip direction, SheetItem *sheet_item) { TextboxItem *item; g_return_if_fail (sheet_item); 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) { Coords bbox_start, bbox_end; TextboxItemPriv *priv = item->priv; get_cached_bounds (item, &bbox_start, &bbox_end); g_object_set (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; g_object_set (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) g_idle_add ((gpointer)select_idle_callback, item); else g_idle_add ((gpointer)deselect_idle_callback, item); } static gboolean is_in_area (SheetItem *object, Coords *p1, Coords *p2) { TextboxItem *item; Coords 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, Coords *p1, Coords *p2) { PangoFontDescription *font; Coords pos; TextboxItemPriv *priv; priv = item->priv; if (!priv->cache_valid) { Coords 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(Coords)); memcpy (p2, &priv->bbox_end, sizeof(Coords)); } static void textbox_item_paste (Sheet *sheet, ItemData *data) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); g_return_if_fail (data != NULL); g_return_if_fail (IS_TEXTBOX (data)); sheet_add_ghost_item (sheet, data); } // This is called when the textbox data was moved. Update the view accordingly. static void textbox_moved_callback (ItemData *data, Coords *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. goo_canvas_item_translate (GOO_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); g_object_set (textbox_item->priv->text_canvas_item, "text", new_text, NULL); goo_canvas_item_ensure_updated (GOO_CANVAS_ITEM (textbox_item)); } static void textbox_item_place (SheetItem *item, Sheet *sheet) { textbox_item_signal_connect_placed (TEXTBOX_ITEM (item), sheet); g_signal_connect (G_OBJECT (item), "double_clicked", G_CALLBACK (edit_textbox), item); } static void textbox_item_place_ghost (SheetItem *item, Sheet *sheet) { // textbox_item_signal_connect_placed (TEXTBOX_ITEM (item)); } static gboolean create_textbox_event (Sheet *sheet, GdkEvent *event) { 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; Coords pos; sheet->state = SHEET_STATE_NONE; sheet_get_pointer (sheet, &pos.x, &pos.y); textbox = textbox_new (NULL); textbox_set_text (textbox, _ ("Label")); item_data_set_pos (ITEM_DATA (textbox), &pos); schematic_add_item (schematic_view_get_schematic_from_sheet (sheet), ITEM_DATA (textbox)); schematic_view_reset_tool (schematic_view_get_schematicview_from_sheet (sheet)); g_signal_handlers_disconnect_by_func (G_OBJECT (sheet), G_CALLBACK (create_textbox_event), sheet); } return TRUE; default: return FALSE; } return TRUE; } void textbox_item_cancel_listen (Sheet *sheet) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); sheet->state = SHEET_STATE_NONE; g_signal_handlers_disconnect_by_func (G_OBJECT (sheet), G_CALLBACK (create_textbox_event), sheet); } void textbox_item_listen (Sheet *sheet) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); // 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), sheet); } // Go through the properties and commit the changes. void edit_dialog_ok (TextboxItem *item) { const gchar *value; Textbox *textbox; g_return_if_fail (item != NULL); g_return_if_fail (IS_TEXTBOX_ITEM (item)); textbox = TEXTBOX (sheet_item_get_data (SHEET_ITEM (item))); value = gtk_entry_get_text (GTK_ENTRY (prop_dialog->entry)); textbox_set_text (textbox, value); } static void edit_textbox (SheetItem *sheet_item) { TextboxItem *item; Textbox *textbox; const char *value; GtkBuilder *builder; GError *e = NULL; g_return_if_fail (sheet_item != NULL); g_return_if_fail (IS_TEXTBOX_ITEM (sheet_item)); if ((builder = gtk_builder_new ()) == NULL) { oregano_error (_ ("Could not create textbox properties dialog")); return; } gtk_builder_set_translation_domain (builder, NULL); item = TEXTBOX_ITEM (sheet_item); textbox = TEXTBOX (sheet_item_get_data (sheet_item)); if (!gtk_builder_add_from_file (builder, OREGANO_UIDIR "/textbox-properties-dialog.ui", &e)) { oregano_error_with_title (_ ("Could not create textbox properties dialog."), e->message); g_clear_error (&e); return; } prop_dialog = g_new0 (TextboxPropDialog, 1); prop_dialog->dialog = GTK_DIALOG (gtk_builder_get_object (builder, "textbox-properties-dialog")); prop_dialog->entry = GTK_ENTRY (gtk_builder_get_object (builder, "entry")); value = textbox_get_text (textbox); gtk_entry_set_text (GTK_ENTRY (prop_dialog->entry), value); gtk_dialog_run (GTK_DIALOG (prop_dialog->dialog)); edit_dialog_ok (item); gtk_widget_destroy (GTK_WIDGET (prop_dialog->dialog)); g_free (prop_dialog); g_object_unref (builder); } static void edit_cmd (GtkWidget *widget, Sheet *sheet) { GList *list; list = sheet_get_selection (sheet); if ((list != NULL) && IS_TEXTBOX_ITEM (list->data)) edit_textbox (list->data); g_list_free_full (list, g_object_unref); } oregano-0.84.41/src/sheet/sheet-item.c0000644000175000017500000007001613413640652016451 0ustar rubenruben/* * sheet-item.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ // FIXME #define FIXME_INCREMENTAL_MOVMENT_DOES_NOT_WORK 1 #include #include #include #include #include "oregano.h" #include "sheet-private.h" #include "sheet-item.h" #include "stock.h" #include "clipboard.h" #include "options.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_finalize (GObject *object); static void sheet_item_run_menu (SheetItem *item, Sheet *sheet, GdkEventButton *event); static void sheet_item_reparent (SheetItem *item, GooCanvasGroup *group); static void sheet_item_dispose (GObject *object); #include "debug.h" struct _SheetItemPriv { guint selected : 1; guint preserve_selection : 1; ItemData *data; GtkActionGroup *action_group; GtkUIManager *ui_manager; }; enum { ARG_0, // GOOGANVASGROUP properties ARG_X, ARG_Y, ARG_WIDTH, ARG_HEIGHT, // Sheet item properties 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 = "" " " " " " " " " " " " " " " " " " " " " ""; static GtkActionEntry action_entries[] = { {"Copy", GTK_STOCK_COPY, N_ ("_Copy"), "C", NULL, NULL}, {"Cut", GTK_STOCK_CUT, N_ ("C_ut"), "X", NULL, NULL}, {"Delete", GTK_STOCK_DELETE, N_ ("_Delete"), "D", N_ ("Delete the selection"), NULL}, {"Rotate", STOCK_PIXMAP_ROTATE, N_ ("_Rotate"), "R", N_ ("Rotate the selection clockwise"), NULL}, {"FlipH", NULL, N_ ("Flip _horizontally"), "F", N_ ("Flip the selection horizontally"), NULL}, {"FlipV", NULL, N_ ("Flip _vertically"), "F", N_ ("Flip the selection vertically"), NULL}}; G_DEFINE_TYPE (SheetItem, sheet_item, GOO_TYPE_CANVAS_GROUP) static void sheet_item_dispose (GObject *object) { G_OBJECT_CLASS (sheet_item_parent_class)->dispose (object); } static void sheet_item_class_init (SheetItemClass *sheet_item_class) { GObjectClass *object_class; object_class = G_OBJECT_CLASS (sheet_item_class); object_class->finalize = sheet_item_finalize; object_class->dispose = sheet_item_dispose; object_class->set_property = sheet_item_set_property; object_class->get_property = sheet_item_get_property; sheet_item_parent_class = g_type_class_peek_parent (sheet_item_class); // Override from GooCanvasGroup g_object_class_override_property (object_class, ARG_X, "x"); g_object_class_override_property (object_class, ARG_Y, "y"); g_object_class_override_property (object_class, ARG_WIDTH, "width"); g_object_class_override_property (object_class, ARG_HEIGHT, "height"); 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)); 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_warning ("building menus failed: %s", error->message); g_error_free (error); } } static void sheet_item_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *spec) { GooCanvasItemSimple *simple = (GooCanvasItemSimple *)object; SheetItem *sheet_item; Coords pos; sheet_item = SHEET_ITEM (object); switch (prop_id) { case ARG_X: sheet_item->x = g_value_get_double (value); break; case ARG_Y: sheet_item->y = g_value_get_double (value); break; case ARG_WIDTH: sheet_item->width = g_value_get_double (value); break; case ARG_HEIGHT: sheet_item->height = g_value_get_double (value); break; case ARG_DATA: if (sheet_item->priv->data) { g_warning (_ ("Cannot set SheetItem after creation.")); break; } sheet_item->priv->data = g_value_get_pointer (value); item_data_get_pos (sheet_item->priv->data, &pos); sheet_item->x = pos.x; sheet_item->y = pos.y; 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); break; default: break; } goo_canvas_item_simple_changed (simple, TRUE); } 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_X: g_value_set_double (value, sheet_item->x); break; case ARG_Y: g_value_set_double (value, sheet_item->y); break; case ARG_WIDTH: g_value_set_double (value, sheet_item->width); break; case ARG_HEIGHT: g_value_set_double (value, sheet_item->height); break; 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_finalize (GObject *object) { SheetItem *sheet_item = SHEET_ITEM (object); g_free (sheet_item->priv); sheet_item->priv = NULL; G_OBJECT_CLASS (sheet_item_parent_class)->finalize (object); } static void sheet_item_run_menu (SheetItem *item, Sheet *sheet, GdkEventButton *event) { GtkWidget *menu; menu = gtk_ui_manager_get_widget (item->priv->ui_manager, "/ItemMenu"); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, sheet, event->button, event->time); } // Event handler for a SheetItem gboolean sheet_item_event (GooCanvasItem *sheet_item, GooCanvasItem *sheet_target_item, GdkEvent *event, Sheet *sheet) { // Remember the last position of the mouse cursor. GooCanvas *canvas; SheetPriv *priv; GList *list; static Coords last, current, snapped; // snapped : Mouse cursor position in window coordinates, snapped to the grid // spacing. // delta : Move the selected item(s) by this movement. Coords delta, after; g_return_val_if_fail (sheet_item != NULL, FALSE); g_return_val_if_fail (sheet != NULL, FALSE); priv = sheet->priv; canvas = GOO_CANVAS (sheet); switch (event->type) { 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 (sheet_item, "button_press_event"); sheet->state = SHEET_STATE_DRAG_START; g_assert (sheet_get_pointer (sheet, &last.x, &last.y)); break; case 3: g_signal_stop_emission_by_name (sheet_item, "button_press_event"); if (sheet->state != SHEET_STATE_NONE) return TRUE; // Bring up a context menu for right button clicks. if (!SHEET_ITEM (sheet_item)->priv->selected && !((event->button.state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK)) sheet_select_all (sheet, FALSE); sheet_item_select (SHEET_ITEM (sheet_item), TRUE); sheet_item_run_menu (SHEET_ITEM (sheet_item), sheet, (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 (sheet_item, "button_press_event"); g_signal_emit_by_name (sheet_item, "double_clicked"); break; default: return FALSE; } break; case GDK_3BUTTON_PRESS: g_signal_stop_emission_by_name (sheet_item, "button_press_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 (sheet_item, "button-release-event"); if (sheet->state == SHEET_STATE_DRAG_START) { sheet->state = SHEET_STATE_NONE; if (!(event->button.state & GDK_SHIFT_MASK)) sheet_select_all (sheet, FALSE); if (IS_SHEET_ITEM (sheet_item)) sheet_item_select (SHEET_ITEM (sheet_item), TRUE); return TRUE; } // Get the mouse motion g_assert (sheet_get_pointer (sheet, &snapped.x, &snapped.y)); delta = coords_sub (&snapped, &last); sheet->state = SHEET_STATE_NONE; goo_canvas_pointer_ungrab (canvas, GOO_CANVAS_ITEM (sheet_item), event->button.time); // Reparent the selected objects to the normal group // to have correct behaviour for (list = priv->selected_objects; list; list = list->next) { sheet_item_reparent (SHEET_ITEM (list->data), sheet->object_group); } 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_get_pos (item_data, &after); snap_to_grid (sheet->grid, &after.x, &after.y); item_data_set_pos (item_data, &after); item_data_register (item_data); } break; } case GDK_KEY_PRESS: switch (event->key.keyval) { case GDK_KEY_r: { #ifndef FIXME_STILL_MINI_OFFSET Coords bbdelta; GooCanvasBounds bounds; // Center the objects around the mouse pointer. goo_canvas_item_get_bounds (GOO_CANVAS_ITEM (priv->selected_group), &bounds); bbdelta.x = (bounds.x2 - bounds.x1) / 2.; bbdelta.y = (bounds.y2 - bounds.y1) / 2.; #endif sheet_rotate_selection (sheet, 90); #ifndef FIXME_STILL_MINI_OFFSET // Center the objects around the mouse pointer. goo_canvas_item_get_bounds (GOO_CANVAS_ITEM (priv->selected_group), &bounds); bbdelta.x -= (bounds.x2 - bounds.x1) / 2.; bbdelta.y -= (bounds.y2 - bounds.y1) / 2.; snap_to_grid (sheet->grid, &bbdelta.x, &bbdelta.y); goo_canvas_item_translate (GOO_CANVAS_ITEM (priv->selected_group), bbdelta.x, bbdelta.y); #endif } break; default: return FALSE; } return TRUE; 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 (IS_SHEET_ITEM (sheet_item) && (!SHEET_ITEM (sheet_item)->priv->selected)) { if (!(event->button.state & GDK_SHIFT_MASK)) { sheet_select_all (sheet, FALSE); } sheet_item_select (SHEET_ITEM (sheet_item), TRUE); } // 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); } goo_canvas_pointer_grab (canvas, GOO_CANVAS_ITEM (sheet_item), GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, NULL, event->button.time); } // Set last_x & last_y to the pointer position sheet_get_pointer (sheet, &snapped.x, &snapped.y); delta = coords_sub (&snapped, &last); // 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 !FIXME_INCREMENTAL_MOVMENT_DOES_NOT_WORK last = snapped; #else goo_canvas_item_set_transform (GOO_CANVAS_ITEM (priv->selected_group), NULL); #endif goo_canvas_item_translate (GOO_CANVAS_ITEM (priv->selected_group), delta.x, delta.y); return TRUE; default: return FALSE; } return TRUE; } // Cancel the placement of floating items and remove them. void sheet_item_cancel_floating (Sheet *sheet) { GooCanvasGroup *group; GList *list; g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); group = GOO_CANVAS_GROUP (sheet->priv->floating_group); if (group == NULL) return; if (sheet->state != SHEET_STATE_FLOAT && sheet->state != SHEET_STATE_FLOAT_START) return; if (g_signal_handler_is_connected (sheet, sheet->priv->float_handler_id)) g_signal_handler_disconnect (sheet, sheet->priv->float_handler_id); // TODO verfiy that the following has no nasty sideffects for (list = sheet->priv->floating_objects; list; list = list->next) { goo_canvas_item_remove (list->data); // remove from canvas and free } g_list_free (sheet->priv->floating_objects); sheet->priv->floating_objects = NULL; goo_canvas_item_remove (GOO_CANVAS_ITEM (group)); // Create a new empty group to prepare next floating group sheet->priv->floating_group = GOO_CANVAS_GROUP ( goo_canvas_group_new (GOO_CANVAS_ITEM (sheet->object_group), "x", 0.0, "y", 0.0, NULL)); // sheet_clear_ghosts (sheet); sheet->priv->float_handler_id = 0; sheet->state = SHEET_STATE_NONE; } // Event handler for a "floating" group of objects. int sheet_item_floating_event (Sheet *sheet, const GdkEvent *event) { SheetPriv *priv; GList *list; static gboolean keep = FALSE; // Remember the start position of the mouse cursor. static Coords last = {0., 0.}; // Mouse cursor position in window coordinates, snapped to the grid spacing. static Coords snapped = {0., 0.}; // Move the selected item(s) by this movement. Coords delta = {0., 0.}; g_return_val_if_fail (sheet != NULL, FALSE); g_return_val_if_fail (IS_SHEET (sheet), FALSE); g_return_val_if_fail (sheet->priv->floating_objects != NULL, FALSE); priv = sheet->priv; switch (event->type) { case GDK_BUTTON_RELEASE: g_signal_stop_emission_by_name (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: // do not free the floating items, but use them like a stamp keep = event->button.state & GDK_CONTROL_MASK; // Continue adding if CTRL is pressed if (!keep) { sheet->state = SHEET_STATE_NONE; g_signal_stop_emission_by_name (sheet, "event"); if (g_signal_handler_is_connected (sheet, sheet->priv->float_handler_id)) g_signal_handler_disconnect (sheet, sheet->priv->float_handler_id); sheet->priv->float_handler_id = 0; } // FIXME assert that `Coords current` has been set by now! for (list = priv->floating_objects; list; list = list->next) { SheetItem *floating_item; ItemData *floating_data; // Create a real item. floating_item = list->data; if (!keep) { floating_data = sheet_item_get_data (floating_item); g_object_set (floating_item, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); } else { // FIXME the bounding box of the clone is wrong floating_data = item_data_clone (sheet_item_get_data (floating_item)); } NG_DEBUG ("Item Data Pos will be %lf %lf", snapped.x, snapped.y) item_data_set_pos (floating_data, &snapped); schematic_add_item (schematic_view_get_schematic_from_sheet (sheet), floating_data); if (!keep) g_object_unref (G_OBJECT (floating_item)); } if (keep) { g_object_set (G_OBJECT (priv->floating_group), "x", snapped.x, "y", snapped.y, NULL); } else { g_list_free (priv->floating_objects); priv->floating_objects = NULL; } break; case 3: // Cancel the "float-placement" for button-3 clicks. g_signal_stop_emission_by_name (sheet, "event"); sheet_item_cancel_floating (sheet); break; } break; case GDK_2BUTTON_PRESS: case GDK_3BUTTON_PRESS: g_signal_stop_emission_by_name (sheet, "event"); return TRUE; case GDK_MOTION_NOTIFY: // keep track of the position, as `sheet_get_pointer*()` does not work // in other events than MOTION_NOTIFY #if 0 { Coords tmp; last = current; if (sheet_get_pointer (sheet, &tmp.x, &tmp.y)) { snapped_current = current = tmp; snap_to_grid (sheet->grid, &snapped_current.x, &snapped_current.y); } } #endif if (sheet->state != SHEET_STATE_FLOAT && sheet->state != SHEET_STATE_FLOAT_START) return FALSE; g_signal_stop_emission_by_name (sheet, "event"); // Get pointer position independantly of the zoom if (sheet->state == SHEET_STATE_FLOAT_START) { sheet->state = SHEET_STATE_FLOAT; last.x = last.y = 0.; // 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); // Set the floating item visible g_object_set (G_OBJECT (list->data), "visibility", GOO_CANVAS_ITEM_VISIBLE, NULL); } #if 0 GooCanvasBounds box; goo_canvas_item_get_bounds (priv->floating_group, &box); #endif NG_DEBUG ("\n\n\nFLOAT ### START\n\n\n\n"); } sheet_get_pointer_snapped (sheet, &snapped.x, &snapped.y); delta = coords_sub (&snapped, &last); NG_DEBUG ("drag floating current sx=%lf sy=%lf \n", snapped.x, snapped.y); NG_DEBUG ("drag floating last lx=%lf ly=%lf \n", last.x, last.y); NG_DEBUG ("drag floating delta -> dx=%lf dy=%lf \n", delta.x, delta.y); #if !FIXME_INCREMENTAL_MOVMENT_DOES_NOT_WORK last = snapped; #else goo_canvas_item_set_transform (GOO_CANVAS_ITEM (priv->floating_group), NULL); #endif goo_canvas_item_translate (GOO_CANVAS_ITEM (priv->floating_group), delta.x, delta.y); break; case GDK_KEY_PRESS: switch (event->key.keyval) { case GDK_KEY_r: case GDK_KEY_R: { Coords bbdelta; GooCanvasBounds bounds; // Center the objects around the mouse pointer. goo_canvas_item_get_bounds (GOO_CANVAS_ITEM (priv->floating_group), &bounds); bbdelta.x = (bounds.x2 - bounds.x1) / 2.; bbdelta.y = (bounds.y2 - bounds.y1) / 2.; sheet_rotate_ghosts (sheet); // Center the objects around the mouse pointer. goo_canvas_item_get_bounds (GOO_CANVAS_ITEM (priv->floating_group), &bounds); bbdelta.x -= (bounds.x2 - bounds.x1) / 2.; bbdelta.y -= (bounds.y2 - bounds.y1) / 2.; snap_to_grid (sheet->grid, &bbdelta.x, &bbdelta.y); goo_canvas_item_translate (GOO_CANVAS_ITEM (priv->floating_group), bbdelta.x, bbdelta.y); } break; default: return FALSE; } 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 (item, "selection_changed", select); item->priv->selected = select; return TRUE; } void sheet_item_select_in_area (SheetItem *item, Coords *p1, Coords *p2) { SheetItemClass *sheet_item_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); sheet_item_class = SHEET_ITEM_CLASS (G_OBJECT_GET_CLASS (item)); in_area = sheet_item_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); } // Reparent a sheet object without moving it on the sheet. void sheet_item_reparent (SheetItem *item, GooCanvasGroup *group) { g_return_if_fail (item != NULL); g_return_if_fail (IS_SHEET_ITEM (item)); g_return_if_fail (group != NULL); g_object_ref (item); goo_canvas_item_remove (GOO_CANVAS_ITEM (item)); goo_canvas_item_add_child (GOO_CANVAS_ITEM (group), GOO_CANVAS_ITEM (item), -1); g_object_unref (item); } void sheet_item_edit_properties (SheetItem *item) { SheetItemClass *sheet_item_class; g_return_if_fail (item != NULL); g_return_if_fail (IS_SHEET_ITEM (item)); sheet_item_class = SHEET_ITEM_CLASS (G_OBJECT_GET_CLASS (item)); if (sheet_item_class->edit_properties) sheet_item_class->edit_properties (item); } void sheet_item_rotate (SheetItem *sheet_item, int angle, Coords *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 (Sheet *sheet, ClipboardData *data) { SheetItemClass *item_class; ItemDataClass *id_class; ItemData *item_data, *clone; g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); 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 (sheet, 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 (goo_canvas_item_get_canvas (GOO_CANVAS_ITEM (item))); } 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, Sheet *sheet) { SheetItemClass *sheet_item_class; g_return_if_fail (item != NULL); g_return_if_fail (IS_SHEET_ITEM (item)); sheet_item_class = SHEET_ITEM_CLASS (G_OBJECT_GET_CLASS (item)); if (sheet_item_class->place) sheet_item_class->place (item, sheet); } void sheet_item_place_ghost (SheetItem *item, Sheet *sheet) { SheetItemClass *sheet_item_class; g_return_if_fail (item != NULL); g_return_if_fail (IS_SHEET_ITEM (item)); sheet_item_class = SHEET_ITEM_CLASS (G_OBJECT_GET_CLASS (item)); if (sheet_item_class->place_ghost) sheet_item_class->place_ghost (item, sheet); } 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); } } oregano-0.84.41/src/sheet/textbox-item.h0000644000175000017500000000435413413640652017045 0ustar rubenruben/* * textbox-item.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __TEXTBOX_ITEM_H #define __TEXTBOX_ITEM_H #include #include "schematic-view.h" #include "sheet-item.h" #include "textbox.h" #define TYPE_TEXTBOX_ITEM (textbox_item_get_type ()) #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, Sheet *sheet); void textbox_item_cancel_listen (Sheet *sheet); void textbox_item_listen (Sheet *sheet); #endif oregano-0.84.41/src/sheet/sheet-item-factory.h0000644000175000017500000000246013413640652020121 0ustar rubenruben/* * sheet-item-factory.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __SHEET_ITEM_FACTORY_H #define __SHEET_ITEM_FACTORY_H #include "sheet-item.h" SheetItem *sheet_item_factory_create_sheet_item (Sheet *sheet, ItemData *data); #endif /* __SHEET_ITEM_FACTORY_H */ oregano-0.84.41/src/sheet/sheet.h0000644000175000017500000001272513413640652015525 0ustar rubenruben/* * sheet.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __SHEET_H #define __SHEET_H #include #include #include "grid.h" #include "item-data.h" // typedef to avoid circular dependency typedef struct _SchematicView SchematicView; // Allow about 200 pixels for the border of the sheet #define SHEET_BORDER 200 typedef struct _Sheet Sheet; typedef struct _SheetPriv SheetPriv; typedef struct _SheetClass SheetClass; typedef struct _SheetItem SheetItem; #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 { GooCanvas parent_canvas; SheetState state; GooCanvasGroup *object_group; Grid *grid; SheetPriv *priv; }; struct _SheetClass { GooCanvasClass 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); }; GType sheet_get_type (void); GtkWidget *sheet_new (const gdouble width, const gdouble height); gboolean sheet_replace (SchematicView *sv); void sheet_scroll_pixel (const Sheet *sheet, int dx, int dy); void sheet_get_size_pixels (const Sheet *sheet, guint *width, guint *height); gpointer sheet_get_first_selected_item (const Sheet *sheet); void sheet_zoom_step (Sheet *sheet, const double rate); void sheet_get_zoom (const Sheet *sheet, gdouble *zoom); 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); void sheet_remove_selected_object (const Sheet *sheet, SheetItem *item); void sheet_prepend_selected_object (Sheet *sheet, SheetItem *item); void sheet_remove_floating_object (const Sheet *sheet, SheetItem *item); void sheet_prepend_floating_object (Sheet *sheet, SheetItem *item); void sheet_connect_part_item_to_floating_group (Sheet *sheet, gpointer *sv); void sheet_show_node_labels (Sheet *sheet, gboolean show); void sheet_add_item (Sheet *sheet, SheetItem *item); void sheet_stop_rubberband (Sheet *sheet, GdkEventButton *event); void sheet_setup_rubberband (Sheet *sheet, GdkEventButton *event); int sheet_event_callback (GtkWidget *widget, GdkEvent *event, Sheet *sheet); void sheet_select_all (Sheet *sheet, gboolean select); void sheet_rotate_selection (Sheet *sheet, gint angle); void sheet_move_selection (Sheet *sheet, gdouble dx, gdouble dy); void sheet_delete_selection (Sheet *sheet); void sheet_release_selected_objects (Sheet *sheet); GList *sheet_get_selection (Sheet *sheet); void sheet_update_parts (Sheet *sheet); void sheet_destroy_sheet_item (SheetItem *item, Sheet *sheet); void sheet_rotate_ghosts (Sheet *sheet); void sheet_flip_selection (Sheet *sheet, IDFlip direction); void sheet_flip_ghosts (Sheet *sheet, IDFlip direction); void sheet_clear_op_values (Sheet *sheet); void sheet_provide_object_properties (Sheet *sheet); void sheet_clear_ghosts (Sheet *sheet); guint sheet_get_selected_objects_length (Sheet *sheet); GList *sheet_get_floating_objects (Sheet *sheet); void sheet_add_ghost_item (Sheet *sheet, ItemData *data); GList *sheet_get_items (const Sheet *sheet); void sheet_stop_create_wire (Sheet *sheet); void sheet_initiate_create_wire (Sheet *sheet); void sheet_connect_node_dots_to_signals (Sheet *sheet); void sheet_remove_item_in_sheet (SheetItem *item, Sheet *sheet); gboolean sheet_get_pointer_pixel (Sheet *sheet, gdouble *x, gdouble *y); gboolean sheet_get_pointer (Sheet *sheet, gdouble *x, gdouble *y); gboolean sheet_get_pointer_snapped (Sheet *sheet, gdouble *x, gdouble *y); gboolean sheet_pointer_grab (Sheet *sheet, GdkEvent *event); void sheet_pointer_ungrab (Sheet *sheet, GdkEvent *event); gboolean sheet_keyboard_grab (Sheet *sheet, GdkEvent *event); void sheet_keyboard_ungrab (Sheet *sheet, GdkEvent *event); gboolean sheet_get_adjustments (const Sheet *sheet, GtkAdjustment **hadj, GtkAdjustment **vadj); #endif oregano-0.84.41/src/sheet/grid.c0000644000175000017500000001302313413640652015325 0ustar rubenruben/* * grid.c * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://github.com/marc-lorber/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include "grid.h" #define ROUND(x) (floor ((x)+0.5)) #include "debug.h" enum { ARG_0, ARG_COLOR, ARG_SPACING, ARG_SNAP }; struct _GridPriv { GooCanvasItem *canvas_grid; guint snap; GdkRGBA color; gdouble spacing; gdouble cached_zoom; cairo_t *cairo; }; G_DEFINE_TYPE (Grid, grid, GOO_TYPE_CANVAS_GROUP) static void grid_class_init (GridClass *class); static void grid_init (Grid *grid); static void grid_finalize (GObject *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_dispose (GObject *object); static void grid_class_init (GridClass *class) { GObjectClass *object_class; object_class = G_OBJECT_CLASS (class); grid_parent_class = g_type_class_peek_parent (class); object_class->dispose = grid_dispose; object_class->finalize = grid_finalize; 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)); } static void grid_init (Grid *grid) { GridPriv *priv; priv = g_new0 (GridPriv, 1); grid->priv = priv; priv->spacing = 10.0; priv->snap = TRUE; } static void grid_dispose (GObject *object) { G_OBJECT_CLASS (grid_parent_class)->dispose (object); } static void grid_finalize (GObject *object) { Grid *grid; grid = GRID (object); grid->priv = NULL; G_OBJECT_CLASS (grid_parent_class)->finalize (object); } static void grid_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *spec) { Grid *grid; GridPriv *priv; grid = GRID (object); priv = grid->priv; switch (prop_id) { 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; } } Grid *grid_new (GooCanvasItem *root, gdouble width, gdouble height) { Grid *grid = NULL; grid = g_object_new (TYPE_GRID, NULL); g_object_set (G_OBJECT (grid), "parent", root, NULL); grid->priv->canvas_grid = goo_canvas_grid_new ( GOO_CANVAS_ITEM (grid), 0.0, 0.0, width, height, 10.0, 10.0, 0.0, 0.0, "horz-grid-line-width", 0.05, "horz-grid-line-color", "dark gray", "vert-grid-line-width", 0.05, "vert-grid-line-color", "dark gray", NULL); grid_show (grid, TRUE); grid_snap (grid, TRUE); return grid; } inline gboolean snap_to_grid (Grid *grid, gdouble *x, gdouble *y) { GridPriv *priv; gdouble spacing; priv = grid->priv; spacing = priv->spacing; Coords old = {0., 0.}; gboolean moved = FALSE; if (G_LIKELY (priv->snap)) { if (G_LIKELY (x)) { old.x = *x; *x = ROUND ((*x) / spacing) * spacing; moved = moved || (fabs ((*x) - old.x) > COORDS_DELTA); } if (G_LIKELY (y)) { old.y = *y; *y = ROUND ((*y) / spacing) * spacing; moved = moved || (fabs ((*y) - old.y) > COORDS_DELTA); } } return moved; } void grid_show (Grid *grid, gboolean show) { if (show) g_object_set (G_OBJECT (grid), "visibility", GOO_CANVAS_ITEM_VISIBLE, NULL); else g_object_set (G_OBJECT (grid), "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); } void grid_snap (Grid *grid, gboolean snap) { GridPriv *priv; priv = grid->priv; priv->snap = snap; } oregano-0.84.41/src/sheet/sheet-item.h0000644000175000017500000000717213413640652016461 0ustar rubenruben/* * sheet-item.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __SHEET_ITEM_H #define __SHEET_ITEM_H #include #include #include #include "sheet.h" #include "coords.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_CHECK_INSTANCE_TYPE (obj, TYPE_SHEET_ITEM)) typedef struct _SheetItemClass SheetItemClass; typedef struct _SheetItemPriv SheetItemPriv; #include "sheet.h" #include "clipboard.h" struct _SheetItem { GooCanvasGroup canvas_group; gdouble width; gdouble height; gdouble x; // left gdouble y; // top SheetItemPriv *priv; }; struct _SheetItemClass { GooCanvasGroupClass parent_class; // Methods. gboolean (*is_in_area)(SheetItem *item, Coords *p1, Coords *p2); void (*show_labels)(SheetItem *sheet_item, gboolean show); void (*edit_properties)(SheetItem *item); void (*paste)(Sheet *sheet, ItemData *data); void (*place)(SheetItem *item, Sheet *sheet); void (*place_ghost)(SheetItem *item, Sheet *sheet); // 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 (Sheet *sheet, gboolean select); gboolean sheet_item_select (SheetItem *item, gboolean select); Sheet *sheet_item_get_sheet (SheetItem *item); gboolean sheet_item_event (GooCanvasItem *sheet_item, GooCanvasItem *sheet_target_item, GdkEvent *event, Sheet *sheet); int sheet_item_floating_event (Sheet *sheet, const GdkEvent *event); void sheet_item_cancel_floating (Sheet *sheet); void sheet_item_edit_properties (SheetItem *item); ItemData *sheet_item_get_data (SheetItem *item); void sheet_item_paste (Sheet *sheet, ClipboardData *data); void sheet_item_rotate (SheetItem *sheet_item, int angle, Coords *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, Coords *p1, Coords *p2); void sheet_item_place (SheetItem *item, Sheet *sheet); void sheet_item_place_ghost (SheetItem *item, Sheet *sheet); void sheet_item_add_menu (SheetItem *item, const char *menu, const GtkActionEntry *action_entries, int nb_entries); #endif oregano-0.84.41/src/sheet/node-item.c0000644000175000017500000000542113413640652016264 0ustar rubenruben/* * node-item.c * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include "options.h" #include "node-item.h" static void node_item_init (NodeItem *item); static void node_item_class_init (NodeItemClass *klass); struct _NodeItemPriv { GooCanvasItem *dot_item; GooCanvasItem *circle_item; // debug }; G_DEFINE_TYPE (NodeItem, node_item, GOO_TYPE_CANVAS_GROUP); static void node_item_dispose (GObject *object) { NodeItem *item = NODE_ITEM (object); NodeItemPriv *priv = item->priv; g_clear_object (&(priv->dot_item)); g_clear_object (&(priv->circle_item)); G_OBJECT_CLASS (node_item_parent_class)->dispose (object); } static void node_item_finalize (GObject *object) { G_OBJECT_CLASS (node_item_parent_class)->finalize (object); } static void node_item_class_init (NodeItemClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = node_item_finalize; object_class->dispose = node_item_dispose; } static void node_item_init (NodeItem *item) { item->priv = g_new0 (NodeItemPriv, 1); item->priv->dot_item = goo_canvas_ellipse_new (GOO_CANVAS_ITEM (item), 0.0, 0.0, 2.0, 2.0, "fill-color", "black", "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); item->priv->circle_item = goo_canvas_ellipse_new ( GOO_CANVAS_ITEM (item), 0.0, 0.0, 3.0, 3.0, "stroke-color-rgba", 0x3399FFFF, "line-width", 1.0, "visibility", oregano_options_debug_dots () ? GOO_CANVAS_ITEM_VISIBLE : GOO_CANVAS_ITEM_INVISIBLE, NULL); } void node_item_show_dot (NodeItem *item, gboolean show) { g_return_if_fail (item != NULL); g_return_if_fail (IS_NODE_ITEM (item)); g_object_set (item->priv->dot_item, "visibility", show ? GOO_CANVAS_ITEM_VISIBLE : GOO_CANVAS_ITEM_INVISIBLE, NULL); } oregano-0.84.41/src/sheet/plot-add-function.c0000644000175000017500000001173313413640652017735 0ustar rubenruben/* * plot-add-function.c * * * Authors: * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "plot-add-function.h" #include "dialogs.h" #include "simulation.h" void plot_add_function_show (OreganoEngine *engine, SimulationData *current) { GtkBuilder *gui; GError *perror = NULL; GtkDialog *dialog; GtkComboBoxText *op1, *op2, *functiontype; int i; gint result = 0; GtkWidget *warning; GtkWidget *container_temp; SimulationFunction *func = g_new0 (SimulationFunction, 1); if ((gui = gtk_builder_new ()) == NULL) { oregano_error (_ ("Could not create plot window.")); return; } gtk_builder_set_translation_domain (gui, NULL); if (gtk_builder_add_from_file (gui, OREGANO_UIDIR "/plot-add-function.ui", &perror) <= 0) { oregano_error_with_title (_ ("Could not create plot window."), perror->message); g_error_free (perror); return; } dialog = GTK_DIALOG (gtk_builder_get_object (gui, "toplevel")); container_temp = GTK_WIDGET (gtk_builder_get_object (gui, "op1_alignment")); op1 = GTK_COMBO_BOX_TEXT (gtk_combo_box_text_new ()); gtk_container_add (GTK_CONTAINER (container_temp), GTK_WIDGET (op1)); gtk_widget_show (GTK_WIDGET (op1)); container_temp = GTK_WIDGET (gtk_builder_get_object (gui, "op2_alignment")); op2 = GTK_COMBO_BOX_TEXT (gtk_combo_box_text_new ()); gtk_container_add (GTK_CONTAINER (container_temp), GTK_WIDGET (op2)); gtk_widget_show (GTK_WIDGET (op2)); container_temp = GTK_WIDGET (gtk_builder_get_object (gui, "function_alignment")); functiontype = GTK_COMBO_BOX_TEXT (gtk_combo_box_text_new ()); gtk_container_add (GTK_CONTAINER (container_temp), GTK_WIDGET (functiontype)); gtk_widget_show (GTK_WIDGET (functiontype)); for (const gchar **ptr = SimulationFunctionTypeString; *ptr != NULL; ptr++) { gtk_combo_box_text_append_text(functiontype, *ptr); } for (i = 1; i < current->n_variables; i++) { if (current->type != ANALYSIS_TYPE_DC_TRANSFER) { if (strchr (current->var_names[i], '#') == NULL) { gtk_combo_box_text_append_text (op1, current->var_names[i]); gtk_combo_box_text_append_text (op2, current->var_names[i]); } } else { gtk_combo_box_text_append_text (op1, current->var_names[i]); gtk_combo_box_text_append_text (op2, current->var_names[i]); } } gtk_combo_box_set_active (GTK_COMBO_BOX (op1), 0); gtk_combo_box_set_active (GTK_COMBO_BOX (op2), 1); gtk_combo_box_set_active (GTK_COMBO_BOX (functiontype), 0); result = gtk_dialog_run (GTK_DIALOG (dialog)); if ((result == GTK_RESPONSE_OK) && ((gtk_combo_box_get_active (GTK_COMBO_BOX (op1)) == -1) || (gtk_combo_box_get_active (GTK_COMBO_BOX (op2)) == -1) || (gtk_combo_box_get_active (GTK_COMBO_BOX (functiontype)) == -1))) { warning = gtk_message_dialog_new_with_markup ( NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, _ ("Neither function, nor " "operators have been chosen\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 (GTK_COMBO_BOX (op1)) != -1) && (gtk_combo_box_get_active (GTK_COMBO_BOX (op2)) != -1) && (gtk_combo_box_get_active (GTK_COMBO_BOX (functiontype)) != -1))) { func->type = gtk_combo_box_get_active (GTK_COMBO_BOX (functiontype)); for (i = 1; i < current->n_variables; i++) { if (g_strcmp0 (current->var_names[i], gtk_combo_box_text_get_active_text (op1)) == 0) func->first = i; if (g_strcmp0 (current->var_names[i], gtk_combo_box_text_get_active_text (op2)) == 0) func->second = i; } current->functions = g_list_append (current->functions, func); } gtk_widget_destroy (GTK_WIDGET (dialog)); } oregano-0.84.41/src/sheet/rubberband.h0000644000175000017500000000375613413640652016527 0ustar rubenruben/* * rubberband.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Description: Handles the user interaction when doing area/rubberband *selections. * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __INPUT_CONTEXT_RUBBERBAND_H #define __INPUT_CONTEXT_RUBBERBAND_H #include #include #include "coords.h" typedef enum { RUBBERBAND_DISABLED, RUBBERBAND_START, RUBBERBAND_ACTIVE } RubberbandState; typedef struct _RubberbandInfo RubberbandInfo; #include "sheet.h" struct _RubberbandInfo { RubberbandState state; Coords start; Coords end; GooCanvasRect *rectangle; }; RubberbandInfo *rubberband_info_new (Sheet *sheet); void rubberband_info_destroy (RubberbandInfo *rubberband); gboolean rubberband_start (Sheet *sheet, GdkEvent *event); gboolean rubberband_update (Sheet *sheet, GdkEvent *event); gboolean rubberband_finish (Sheet *sheet, GdkEvent *event); #endif /* __INPUT_CONTEXT_RUBBERBAND_H */ oregano-0.84.41/src/sheet/part-item.c0000644000175000017500000010507213413640652016310 0ustar rubenruben/* * part-item.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2018 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include "oregano.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" #include "sheet.h" #include "oregano-utils.h" #include "options.h" #define NORMAL_COLOR "red" #define LABEL_COLOR "dark cyan" #define SELECTED_COLOR "green" #include "debug.h" static void part_item_class_init (PartItemClass *klass); static void part_item_init (PartItem *gspart); static void part_item_finalize (GObject *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, Coords *p1, Coords *p2); inline static void get_cached_bounds (PartItem *item, Coords *p1, Coords *p2); static void show_labels (SheetItem *sheet_item, gboolean show); static void part_item_paste (Sheet *sheet, ItemData *data); static void part_rotated_callback (ItemData *data, int angle, SheetItem *item); static void part_flipped_callback (ItemData *data, IDFlip direction, SheetItem *sheet_item); static void part_moved_callback (ItemData *data, Coords *pos, SheetItem *item); static void part_changed_callback (ItemData *data, SheetItem *sheet_item); static void part_item_place (SheetItem *item, Sheet *sheet); static void part_item_place_ghost (SheetItem *item, Sheet *sheet); static void create_canvas_items (GooCanvasGroup *group, LibraryPart *library_part); static void create_canvas_labels (PartItem *item, Part *part); static void create_canvas_label_nodes (PartItem *item, Part *part); static PartItem *part_item_canvas_new (Sheet *sheet, 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); static void part_item_dispose (GObject *object); static GooCanvasAnchorType part_item_get_anchor_from_part (Part *part); enum { ARG_0, ARG_DATA, ARG_SHEET, ARG_ACTION_GROUP, ARG_NAME, ARG_SYMNAME, ARG_LIBNAME, ARG_REFDES, ARG_TEMPLATE, ARG_MODEL }; struct _PartItemPriv { guint cache_valid : 1; GooCanvasItem *label_group; GSList *label_items; GooCanvasItem *node_group; GSList *label_nodes; GooCanvasItem *rect; // Cached bounding box. This is used to make // the rubberband selection a bit faster. Coords bbox_start; Coords 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 = "" " " " " " " ""; static GtkActionEntry action_entries[] = {{"ObjectProperties", GTK_STOCK_PROPERTIES, N_ ("_Object Properties..."), NULL, N_ ("Modify object properties"), NULL}}; enum { ANCHOR_NORTH, ANCHOR_SOUTH, ANCHOR_WEST, ANCHOR_EAST }; G_DEFINE_TYPE (PartItem, part_item, TYPE_SHEET_ITEM) static void part_item_class_init (PartItemClass *part_item_class) { GObjectClass *object_class; SheetItemClass *sheet_item_class; object_class = G_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->finalize = part_item_finalize; object_class->dispose = part_item_dispose; object_class->set_property = part_item_set_property; object_class->get_property = part_item_get_property; 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_slice_new0 (PartItemPriv); priv->rect = NULL; 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) { g_return_if_fail (object != NULL); g_return_if_fail (IS_PART_ITEM (object)); switch (propety_id) { default: g_warning ("PartItem: Invalid argument.\n"); } } static void part_item_get_property (GObject *object, guint propety_id, GValue *value, GParamSpec *pspec) { g_return_if_fail (object != NULL); g_return_if_fail (IS_PART_ITEM (object)); switch (propety_id) { default: pspec->value_type = G_TYPE_INVALID; break; } } static void part_item_dispose (GObject *object) { G_OBJECT_CLASS (parent_class)->dispose (object); } static void part_item_finalize (GObject *object) { PartItemPriv *priv; priv = PART_ITEM (object)->priv; g_slist_free (priv->label_nodes); g_slist_free (priv->label_items); g_slice_free (PartItemPriv, priv); priv = NULL; G_OBJECT_CLASS (parent_class)->finalize (object); } //////////////////////////////////////////////////////////////////////////////// // END BOILER PLATE //////////////////////////////////////////////////////////////////////////////// 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; } static void part_item_moved (SheetItem *sheet_item) { // g_warning ("part MOVED callback called - LEGACY"); } PartItem *part_item_canvas_new (Sheet *sheet, Part *part) { PartItem *part_item; PartItemPriv *priv; GooCanvasItem *goo_item; ItemData *item_data; 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); part_item = g_object_new (TYPE_PART_ITEM, NULL); goo_item = GOO_CANVAS_ITEM (part_item); g_object_set (part_item, "parent", sheet->object_group, NULL); g_object_set (part_item, "data", part, NULL); priv = part_item->priv; Coords b1, b2; item_data_get_relative_bbox (ITEM_DATA (part), &b1, &b2); priv->rect = goo_canvas_rect_new ( goo_item, b1.x, b1.y, b2.x - b1.x, b2.y - b1.y, "stroke-color", "green", "line-width", .0, "fill-color-rgba", 0x7733aa66, "radius-x", 1.0, "radius-y", 1.0, "visibility", oregano_options_debug_boxes () ? GOO_CANVAS_ITEM_VISIBLE : GOO_CANVAS_ITEM_INVISIBLE, NULL); priv->label_group = goo_canvas_group_new (goo_item, "width", -1.0, "height", -1.0, NULL); priv->node_group = goo_canvas_group_new (goo_item, NULL); g_object_set (priv->node_group, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); item_data = ITEM_DATA (part); item_data->rotated_handler_id = g_signal_connect_object (part, "rotated", G_CALLBACK (part_rotated_callback), part_item, 0); item_data->flipped_handler_id = g_signal_connect_object (part, "flipped", G_CALLBACK (part_flipped_callback), part_item, 0); item_data->moved_handler_id = g_signal_connect_object (part, "moved", G_CALLBACK (part_moved_callback), part_item, 0); item_data->changed_handler_id = g_signal_connect_object (part, "changed", G_CALLBACK (part_changed_callback), part_item, 0); return part_item; } static void update_canvas_labels (PartItem *item) { PartItemPriv *priv; Part *part; GSList *labels, *label_items; GooCanvasItem *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); g_object_set (canvas_item, "text", text, NULL); g_free (text); } } void part_item_update_node_label (PartItem *item) { PartItemPriv *priv; Part *part; GSList *labels; GooCanvasItem *canvas_item; Pin *pins; gint num_pins; 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); if (num_pins == 1) { pins = part_get_pins (part); labels = priv->label_nodes; for (labels = priv->label_nodes; labels; labels = labels->next) { char *txt; txt = g_strdup_printf ("V(%d)", pins[0].node_nr); canvas_item = labels->data; if (pins[0].node_nr != 0) g_object_set (canvas_item, "text", txt, "fill_color", LABEL_COLOR, "font", "Sans 8", NULL); else g_object_set (canvas_item, "text", "", 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 = NULL; GList *widget; Property *prop; PartItem *item; Part *part; gchar *prop_name; const gchar *prop_value; guint prop_value_length; gboolean valid_entry; GtkWidget *w; item = prop_dialog->part_item; 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_ascii_strcasecmp (prop->name, prop_name) == 0) { valid_entry = TRUE; // Prevent invalid properties name entries if (g_ascii_strcasecmp (prop->name, "Refdes") == 0) { // Prevent invalid voltage source name entries if (prop->value[0] == 'V') { if (prop_value[0] != 'V') valid_entry = FALSE; prop_value_length = strlen (prop_value); for (int i = 1; i < prop_value_length; i++) if (prop_value[i] < '0' || prop_value[i] > '9') valid_entry = FALSE; } } if (valid_entry) { 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; Part *part; GtkBuilder *gui; GError *error = NULL; GtkRadioButton *radio_v, *radio_c; GtkRadioButton *ac_r, *ac_m, *ac_i, *ac_p; GtkCheckButton *chk_db; part = PART (sheet_item_get_data (SHEET_ITEM (item))); if ((gui = gtk_builder_new ()) == NULL) { oregano_error (_ ("Could not create part properties dialog.")); return; } gtk_builder_set_translation_domain (gui, NULL); if (gtk_builder_add_from_file (gui, OREGANO_UIDIR "/clamp-properties-dialog.ui", &error) <= 0) { oregano_error_with_title (_ ("Could not create part properties dialog."), error->message); g_error_free (error); return; } prop_dialog = g_new0 (PartPropDialog, 1); prop_dialog->part_item = item; prop_dialog->dialog = GTK_DIALOG (gtk_builder_get_object (gui, "clamp-properties-dialog")); radio_v = GTK_RADIO_BUTTON (gtk_builder_get_object (gui, "radio_v")); radio_c = GTK_RADIO_BUTTON (gtk_builder_get_object (gui, "radio_c")); gtk_widget_set_sensitive (GTK_WIDGET (radio_c), FALSE); ac_r = GTK_RADIO_BUTTON (gtk_builder_get_object (gui, "radio_r")); ac_m = GTK_RADIO_BUTTON (gtk_builder_get_object (gui, "radio_m")); ac_p = GTK_RADIO_BUTTON (gtk_builder_get_object (gui, "radio_p")); ac_i = GTK_RADIO_BUTTON (gtk_builder_get_object (gui, "radio_i")); chk_db = GTK_CHECK_BUTTON (gtk_builder_get_object (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_ascii_strcasecmp (prop->name, "internal")) continue; if (!g_ascii_strcasecmp (prop->name, "type")) { if (!g_ascii_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_ascii_strcasecmp (prop->name, "ac_type")) { if (!g_ascii_strcasecmp (prop->value, "m")) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ac_m), TRUE); } else if (!g_ascii_strcasecmp (prop->value, "i")) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ac_i), TRUE); } else if (!g_ascii_strcasecmp (prop->value, "p")) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ac_p), TRUE); } else if (!g_ascii_strcasecmp (prop->value, "r")) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ac_r), TRUE); } } else if (!g_ascii_strcasecmp (prop->name, "ac_db")) { if (!g_ascii_strcasecmp (prop->value, "true")) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chk_db), TRUE); } } } 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_ascii_strcasecmp (prop->name, "internal")) continue; if (!g_ascii_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_ascii_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_ascii_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; Part *part; char *internal, *msg; GtkBuilder *gui; GError *error = NULL; GtkGrid *prop_grid; 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); part = PART (sheet_item_get_data (SHEET_ITEM (item))); internal = part_get_property (part, "internal"); if (internal) { if (g_ascii_strcasecmp (internal, "ground") == 0) { g_free (internal); return; } if (g_ascii_strcasecmp (internal, "point") == 0) { edit_properties_point (item); return; } } g_free (internal); if ((gui = gtk_builder_new ()) == NULL) { oregano_error (_ ("Could not create part properties dialog.")); return; } else gtk_builder_set_translation_domain (gui, NULL); if (gtk_builder_add_from_file (gui, OREGANO_UIDIR "/part-properties-dialog.ui", &error) <= 0) { msg = error->message; oregano_error_with_title (_ ("Could not create part properties dialog."), msg); g_error_free (error); return; } prop_dialog = g_new0 (PartPropDialog, 1); prop_dialog->part_item = item; prop_dialog->dialog = GTK_DIALOG (gtk_builder_get_object (gui, "part-properties-dialog")); prop_grid = GTK_GRID (gtk_builder_get_object (gui, "prop_grid")); notebook = GTK_NOTEBOOK (gtk_builder_get_object (gui, "notebook")); g_signal_connect (prop_dialog->dialog, "destroy", G_CALLBACK (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_ascii_strcasecmp (prop->name, "internal")) continue; if (!g_ascii_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_grid_attach (prop_grid, label, 0, y, 1, 1); gtk_grid_attach (prop_grid, entry, 1, y, 1, 1); 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 (gtk_builder_get_object (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)); } inline static GooCanvasAnchorType angle_to_anchor (int angle) { GooCanvasAnchorType anchor; // Get the right anchor for the labels. This is needed since the // canvas doesn't know how to rotate text and since we rotate the // label_group instead of the labels directly. while (angle < 0) angle += 360; angle %= 360; if (90 - 45 < angle && angle < 90 + 45) { anchor = GOO_CANVAS_ANCHOR_NORTH_WEST; } else if (180 - 45 < angle && angle < 180 + 45) { anchor = GOO_CANVAS_ANCHOR_NORTH_EAST; } else if (270 - 45 < angle && angle < 270 + 45) { anchor = GOO_CANVAS_ANCHOR_SOUTH_EAST; } else /* if (360-45 < angle && angle < 0+45) */ { anchor = GOO_CANVAS_ANCHOR_SOUTH_WEST; } return anchor; } /** * whenever the model changes, this one gets called to update the view * representation * @attention this recalculates the matrix every time, this makes sure no errors * stack up * @attention further reading on matrix manipulations * @attention http://www.cairographics.org/matrix_transform/ * @param data the model item, a bare C struct derived from ItemData * @param sheet_item the view item, derived from goo_canvas_group/item */ static void part_changed_callback (ItemData *data, SheetItem *sheet_item) { g_return_if_fail (sheet_item != NULL); g_return_if_fail (IS_PART_ITEM (sheet_item)); // TODO add static vars in order to skip the redraw if nothing changed // TODO may happen once in a while and the check is really cheap PartItem *item = PART_ITEM (sheet_item); PartItemPriv *priv = item->priv; // init the states cairo_matrix_t morph, inv; cairo_status_t done; inv = *(item_data_get_rotate (data)); // copy cairo_matrix_multiply (&morph, &inv, item_data_get_translate (data)); done = cairo_matrix_invert (&inv); if (done != CAIRO_STATUS_SUCCESS) { g_warning ("Failed to invert matrix. This should never happen. Ever!"); return; } // no translations inv.y0 = inv.x0 = 0.; goo_canvas_item_set_transform (GOO_CANVAS_ITEM (sheet_item), &(morph)); priv->cache_valid = FALSE; return; /* FIXME */ #if 0 GooCanvasGroup *group = GOO_CANVAS_GROUP (item); // rotate all items in the canvas group for (int index = 0; index < group->items->len; index++) { GooCanvasItem *canvas_item = GOO_CANVAS_ITEM (group->items->pdata[index]); goo_canvas_item_set_transform (GOO_CANVAS_ITEM (canvas_item), &morph); } // revert the rotation of all labels and change their anchor to not overlap too badly // this assures that the text is always horizontal and properly aligned GooCanvasAnchorType anchor = angle_to_anchor (rotation); for (GSList *iter = priv->label_items; iter; iter = iter->next) { g_object_set (iter->data, "anchor", anchor, NULL); goo_canvas_item_set_transform (iter->data, &inv); } // same for label nodes for (GSList *iter = priv->label_nodes; iter; iter = iter->next) { g_object_set (iter->data, "anchor", anchor, NULL); goo_canvas_item_set_transform (iter->data, &inv); } // Invalidate the bounding box cache. priv->cache_valid = FALSE; #endif } /** * a part got rotated * * @angle the angle the item is rotated towards the default (0) rotation * */ static void part_rotated_callback (ItemData *data, int angle, SheetItem *sheet_item) { // g_warning ("ROTATED callback called - LEGACY\n"); } /** * handles the update of the canvas item when a part gets flipped (within the * backend alias model) * @data the part in form of a ItemData pointer * @direction the new flip state * @sheet_item the corresponding sheet_item to the model item @data */ static void part_flipped_callback (ItemData *data, IDFlip direction, SheetItem *sheet_item) { // g_warning ("FLIPPED callback called - LEGACY\n"); } 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) g_idle_add ((gpointer)select_idle_callback, item); else g_idle_add ((gpointer)deselect_idle_callback, item); } static int select_idle_callback (PartItem *item) { GooCanvasItem *canvas_item = NULL; int index; g_return_val_if_fail (item != NULL, FALSE); for (index = 0; index < GOO_CANVAS_GROUP (item)->items->len; index++) { canvas_item = GOO_CANVAS_ITEM (GOO_CANVAS_GROUP (item)->items->pdata[index]); g_object_set (canvas_item, "stroke-color", SELECTED_COLOR, NULL); } g_object_unref (G_OBJECT (item)); return FALSE; } static int deselect_idle_callback (PartItem *item) { GooCanvasItem *canvas_item = NULL; int index; for (index = 0; index < GOO_CANVAS_GROUP (item)->items->len; index++) { canvas_item = GOO_CANVAS_ITEM (GOO_CANVAS_GROUP (item)->items->pdata[index]); if (GOO_IS_CANVAS_TEXT (canvas_item)) { g_object_set (canvas_item, "stroke-color", LABEL_COLOR, NULL); } else { g_object_set (canvas_item, "stroke-color", NORMAL_COLOR, NULL); } } g_object_unref (G_OBJECT (item)); return FALSE; } static gboolean is_in_area (SheetItem *object, Coords *p1, Coords *p2) { PartItem *item; Coords 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) g_object_set (priv->label_group, "visibility", GOO_CANVAS_ITEM_VISIBLE, NULL); else g_object_set (priv->label_group, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); } // 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, Coords *p1, Coords *p2) { PartItemPriv *priv; priv = item->priv; if (G_LIKELY (priv->cache_valid)) { *p1 = priv->bbox_start; *p2 = priv->bbox_end; } else { Coords start_pos, end_pos; GooCanvasBounds bounds; goo_canvas_item_get_bounds (GOO_CANVAS_ITEM (item), &bounds); start_pos.x = bounds.x1; start_pos.y = bounds.y1; end_pos.x = bounds.x2; end_pos.y = bounds.y2; *p1 = priv->bbox_start = start_pos; *p2 = priv->bbox_end = end_pos; priv->cache_valid = TRUE; } } static void part_item_paste (Sheet *sheet, ItemData *data) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); g_return_if_fail (data != NULL); g_return_if_fail (IS_PART (data)); sheet_add_ghost_item (sheet, data); } PartItem *part_item_new (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_canvas_new (sheet, part); create_canvas_items (GOO_CANVAS_GROUP (item), library_part); create_canvas_labels (item, part); create_canvas_label_nodes (item, part); goo_canvas_item_ensure_updated (GOO_CANVAS_ITEM (item)); return item; } void part_item_create_canvas_items_for_preview (GooCanvasGroup *group, LibraryPart *library_part) { g_return_if_fail (group != NULL); g_return_if_fail (library_part != NULL); create_canvas_items (group, library_part); } static void create_canvas_items (GooCanvasGroup *group, LibraryPart *library_part) { GooCanvasItem *item; GooCanvasPoints *points; GSList *objects; LibrarySymbol *symbol; SymbolObject *object; gdouble height, width; GooCanvasBounds bounds, group_bounds = {0, 0, 0, 0}; g_return_if_fail (group != NULL); 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 = goo_canvas_polyline_new (GOO_CANVAS_ITEM (group), FALSE, 0, "points", points, "stroke-color", NORMAL_COLOR, "line-width", 0.5, NULL); if (object->u.uline.spline) { g_object_set (item, "smooth", TRUE, "spline_steps", 5, NULL); } break; case SYMBOL_OBJECT_ARC: item = goo_canvas_ellipse_new (GOO_CANVAS_ITEM (group), (object->u.arc.x2 + object->u.arc.x1) / 2.0, (object->u.arc.y1 + object->u.arc.y2) / 2.0, (object->u.arc.x2 - object->u.arc.x1) / 2.0, (object->u.arc.y1 - object->u.arc.y2) / 2.0, "stroke-color", NORMAL_COLOR, "line_width", 1.0, NULL); break; case SYMBOL_OBJECT_TEXT: item = goo_canvas_text_new (GOO_CANVAS_ITEM (group), object->u.text.str, (double)object->u.text.x, (double)object->u.text.y, -1, GOO_CANVAS_ANCHOR_NORTH_EAST, "fill_color", LABEL_COLOR, "font", "Sans 8", NULL); break; default: g_warning ("Unknown symbol object.\n"); continue; } goo_canvas_item_get_bounds (item, &bounds); if (group_bounds.x1 > bounds.x1) group_bounds.x1 = bounds.x1; if (group_bounds.x2 < bounds.x2) group_bounds.x2 = bounds.x2; if (group_bounds.y1 > bounds.y1) group_bounds.y1 = bounds.y1; if (group_bounds.y2 < bounds.y2) group_bounds.y2 = bounds.y2; } g_object_get (group, "width", &width, "height", &height, NULL); width = group_bounds.x2 - group_bounds.x1; height = group_bounds.y2 - group_bounds.y1; g_object_set (group, "width", width, "height", height, NULL); } static void create_canvas_labels (PartItem *item, Part *part) { GooCanvasItem *canvas_item; GSList *list, *item_list; GooCanvasGroup *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)); group = GOO_CANVAS_GROUP (item->priv->label_group); item_list = NULL; for (list = part_get_labels (part); list; list = list->next) { PartLabel *label = list->data; char *text; text = part_property_expand_macros (part, label->text); canvas_item = goo_canvas_text_new (GOO_CANVAS_ITEM (group), text, (double)label->pos.x, (double)label->pos.y, 0, GOO_CANVAS_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) { GooCanvasItem *canvas_item; GSList *item_list; GooCanvasItem *group; Pin *pins; int num_pins, i; Coords p1, p2; GooCanvasAnchorType anchor; 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); switch (part_get_rotation (part)) { case 0: anchor = GOO_CANVAS_ANCHOR_SOUTH_WEST; break; case 90: anchor = GOO_CANVAS_ANCHOR_NORTH_WEST; break; case 180: anchor = GOO_CANVAS_ANCHOR_NORTH_EAST; break; case 270: anchor = GOO_CANVAS_ANCHOR_SOUTH_EAST; break; default: anchor = GOO_CANVAS_ANCHOR_SOUTH_WEST; } for (i = 0; i < num_pins; i++) { int x, y; char *text; x = pins[i].offset.x; y = pins[i].offset.y; text = g_strdup_printf ("%d", pins[i].node_nr); canvas_item = goo_canvas_text_new (GOO_CANVAS_ITEM (group), text, (double)x, (double)y, 0, anchor, "fill_color", "black", "font", "Sans 8", NULL); // Shift slightly the label for a Voltmeter if (i == 0) goo_canvas_item_translate (canvas_item, -15.0, -10.0); item_list = g_slist_prepend (item_list, canvas_item); g_free (text); } 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, Coords *pos, SheetItem *item) {} static void part_item_place (SheetItem *item, Sheet *sheet) { g_signal_connect (G_OBJECT (item), "button_press_event", G_CALLBACK (sheet_item_event), sheet); g_signal_connect (G_OBJECT (item), "button_release_event", G_CALLBACK (sheet_item_event), sheet); g_signal_connect (G_OBJECT (item), "motion_notify_event", G_CALLBACK (sheet_item_event), sheet); g_signal_connect (G_OBJECT (item), "key_press_event", G_CALLBACK (sheet_item_event), sheet); g_signal_connect (G_OBJECT (item), "double_clicked", G_CALLBACK (edit_properties), item); } static void part_item_place_ghost (SheetItem *item, Sheet *sheet) { // part_item_signal_connect_placed (PART_ITEM (item)); } void part_item_show_node_labels (PartItem *part, gboolean show) { PartItemPriv *priv; priv = part->priv; if (show) g_object_set (priv->node_group, "visibility", GOO_CANVAS_ITEM_VISIBLE, NULL); else g_object_set (priv->node_group, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); } static GooCanvasAnchorType 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 GOO_CANVAS_ANCHOR_NORTH_EAST; if ((anchor_v == ANCHOR_WEST) && (anchor_h == ANCHOR_NORTH)) return GOO_CANVAS_ANCHOR_NORTH_WEST; if ((anchor_v == ANCHOR_WEST) && (anchor_h == ANCHOR_SOUTH)) return GOO_CANVAS_ANCHOR_SOUTH_WEST; return GOO_CANVAS_ANCHOR_SOUTH_EAST; } oregano-0.84.41/src/sheet/sheet-item-factory.c0000644000175000017500000000417513413640652020121 0ustar rubenruben/* * sheet-item-factory.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "sheet-item-factory.h" #include "wire-item.h" #include "part-item.h" #include "textbox-item.h" #include "debug.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 (Sheet *sheet, ItemData *data) { SheetItem *item; g_return_val_if_fail (data != NULL, NULL); g_return_val_if_fail (IS_ITEM_DATA (data), NULL); g_return_val_if_fail (sheet != NULL, NULL); g_return_val_if_fail (IS_SHEET (sheet), NULL); item = NULL; // Pick the right model. if (IS_PART (data)) { item = SHEET_ITEM (part_item_new (sheet, PART (data))); NG_DEBUG ("part %p", item); } else if (IS_WIRE (data)) { item = SHEET_ITEM (wire_item_new (sheet, WIRE (data))); NG_DEBUG ("wire %p", item); } else if (IS_TEXTBOX (data)) { item = SHEET_ITEM (textbox_item_new (sheet, TEXTBOX (data))); NG_DEBUG ("text %p", item); } else { g_warning ("Unknown Item type."); } return item; } oregano-0.84.41/src/sheet/sheet.c0000644000175000017500000012306513413640652015520 0ustar rubenruben/* * sheet.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include "sheet-private.h" #include "sheet-item.h" #include "node-store.h" #include "node-item.h" #include "wire-item.h" #include "part-item.h" #include "grid.h" #include "sheet-item-factory.h" #include "schematic-view.h" #include "options.h" #include "rubberband.h" #include "create-wire.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_set_zoom (Sheet *sheet, const double zoom); static GList *sheet_preserve_selection (Sheet *sheet); static void rotate_items (Sheet *sheet, GList *items, gint angle); static void move_items (Sheet *sheet, GList *items, const Coords *delta); static void flip_items (Sheet *sheet, GList *items, IDFlip direction); static void node_dot_added_callback (Schematic *schematic, Coords *pos, Sheet *sheet); static void node_dot_removed_callback (Schematic *schematic, Coords *pos, Sheet *sheet); static void sheet_finalize (GObject *object); static int dot_equal (gconstpointer a, gconstpointer b); static guint dot_hash (gconstpointer key); #define ZOOM_MIN 0.35 #define ZOOM_MAX 3 #include "debug.h" enum { SELECTION_CHANGED, BUTTON_PRESS, CONTEXT_CLICK, CANCEL, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = {0}; enum { ARG_0, ARG_ZOOM }; G_DEFINE_TYPE (Sheet, sheet, GOO_TYPE_CANVAS) static void sheet_class_init (SheetClass *sheet_class) { GObjectClass *object_class; object_class = G_OBJECT_CLASS (sheet_class); object_class->set_property = sheet_set_property; object_class->get_property = sheet_get_property; object_class->finalize = sheet_finalize; sheet_parent_class = g_type_class_peek (GOO_TYPE_CANVAS); 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)); // 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, 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); } static void sheet_init (Sheet *sheet) { sheet->priv = g_new0 (SheetPriv, 1); sheet->priv->zoom = 1.0; sheet->priv->selected_group = NULL; sheet->priv->floating_group = NULL; sheet->priv->floating_objects = NULL; sheet->priv->selected_objects = NULL; sheet->priv->wire_handler_id = 0; sheet->priv->float_handler_id = 0; sheet->priv->items = NULL; sheet->priv->rubberband_info = NULL; sheet->priv->create_wire_info = NULL; sheet->priv->preserve_selection_items = NULL; sheet->priv->sheet_parent_class = g_type_class_ref (GOO_TYPE_CANVAS); sheet->priv->voltmeter_nodes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); sheet->state = SHEET_STATE_NONE; } static void sheet_finalize (GObject *object) { Sheet *sheet = SHEET (object); if (sheet->priv) { g_list_free (sheet->priv->selected_objects); g_list_free (sheet->priv->floating_objects); g_list_free (sheet->priv->items); g_list_free (sheet->priv->preserve_selection_items); if (sheet->priv->voltmeter_nodes) g_hash_table_destroy (sheet->priv->voltmeter_nodes); if (sheet->priv->node_dots) g_hash_table_destroy (sheet->priv->node_dots); g_free (sheet->priv->rubberband_info); g_free (sheet->priv->create_wire_info); g_free (sheet->priv); } if (sheet->grid) g_object_unref (G_OBJECT (sheet->grid)); if (G_OBJECT_CLASS (sheet_parent_class)->finalize) (*G_OBJECT_CLASS (sheet_parent_class)->finalize)(object); } /** * position within the sheet in pixel coordinates * * coordinates are clamped to grid if grid is enabled * see snap_to_grid * zero point : top left corner of the window (not widget!) * * @param x horizontal, left to right * @param y vertical, top to bottom * @returns wether the position could be detected properly * * @attention never call in event handlers! */ gboolean sheet_get_pointer_pixel (Sheet *sheet, gdouble *x, gdouble *y) { GtkAdjustment *hadj = NULL, *vadj = NULL; gdouble x1, y1; gint _x, _y; GdkDevice *device_pointer; GdkRectangle allocation; GdkDisplay *display; GdkWindow *window; #if GTK_CHECK_VERSION (3,20,0) GdkSeat *seat; #else GdkDeviceManager *device_manager; #endif // deprecated gtk_widget_get_pointer (GTK_WIDGET (sheet), &_x, &_y); // replaced by a code copied from evince if (G_UNLIKELY (!sheet || !gtk_widget_get_realized (GTK_WIDGET (sheet)))) { NG_DEBUG ("Widget is not realized."); return FALSE; } display = gtk_widget_get_display (GTK_WIDGET (sheet)); #if GTK_CHECK_VERSION (3,20,0) seat = gdk_display_get_default_seat (display); device_pointer = gdk_seat_get_pointer (seat); #else device_manager = gdk_display_get_device_manager (display); // gdk_device_manager_get_client_pointer // shall not be used within events device_pointer = gdk_device_manager_get_client_pointer (device_manager); #endif window = gtk_widget_get_window (GTK_WIDGET (sheet)); if (!window) { NG_DEBUG ("Window is not realized."); return FALSE; } // even though above is all defined the below will always return NUL for // unknown reason and _x and _y are populated as expected gdk_window_get_device_position (window, device_pointer, &_x, &_y, NULL); #if 0 if (!window) { //fails always NG_DEBUG ("Window does not seem to be realized yet?"); return FALSE; } #else #if GTK_CHECK_VERSION (3,20,0) NG_DEBUG ("\n%p %p %p %p %i %i\n\n", display, seat, device_pointer, window, _x, _y); #else NG_DEBUG ("\n%p %p %p %p %i %i\n\n", display, device_manager, device_pointer, window, _x, _y); #endif #endif gtk_widget_get_allocation (GTK_WIDGET (sheet), &allocation); _x -= allocation.x; _y -= allocation.y; x1 = (gdouble)_x; y1 = (gdouble)_y; if (!sheet_get_adjustments (sheet, &hadj, &vadj)) return FALSE; x1 += gtk_adjustment_get_value (hadj); y1 += gtk_adjustment_get_value (vadj); *x = x1; *y = y1; return TRUE; } /** * get the pointer position in goocanvas coordinates * * @attention shall not be called in event callbacks, * except for GDK_MOTION_... where it is useless since * the event itself contains the cursor position */ gboolean sheet_get_pointer (Sheet *sheet, gdouble *x, gdouble *y) { if (!sheet_get_pointer_pixel (sheet, x, y)) return FALSE; goo_canvas_convert_from_pixels (GOO_CANVAS (sheet), x, y); return TRUE; } gboolean sheet_get_pointer_snapped (Sheet *sheet, gdouble *x, gdouble *y) { if (!sheet_get_pointer_pixel (sheet, x, y)) return FALSE; goo_canvas_convert_from_pixels (GOO_CANVAS (sheet), x, y); snap_to_grid (sheet->grid, x, y); return TRUE; } void sheet_get_zoom (const Sheet *sheet, gdouble *zoom) { g_return_if_fail (sheet); g_return_if_fail (IS_SHEET (sheet)); *zoom = sheet->priv->zoom; } static void sheet_set_zoom (Sheet *sheet, const double zoom) { g_return_if_fail (sheet); g_return_if_fail (IS_SHEET (sheet)); sheet->priv->zoom = zoom; } /* * \brief gets the sheets parent adjustments * * @returns TRUE on success */ gboolean sheet_get_adjustments (const Sheet *sheet, GtkAdjustment **hadj, GtkAdjustment **vadj) { GtkWidget *parent; GtkScrolledWindow *scrolled; if (G_UNLIKELY (!sheet)) return FALSE; if (G_UNLIKELY (!vadj || !hadj)) return FALSE; parent = gtk_widget_get_parent (GTK_WIDGET (sheet)); if (G_UNLIKELY (!parent || !GTK_IS_SCROLLED_WINDOW (parent))) return FALSE; scrolled = GTK_SCROLLED_WINDOW (parent); *hadj = gtk_scrolled_window_get_hadjustment (scrolled); if (G_UNLIKELY (!*hadj || !GTK_IS_ADJUSTMENT (*hadj))) return FALSE; *vadj = gtk_scrolled_window_get_vadjustment (scrolled); if (G_UNLIKELY (!*vadj || !GTK_IS_ADJUSTMENT (*vadj))) return FALSE; return TRUE; } /** * \brief change the zoom by factor (zoom step) * * zoom origin when zooming in is the cursor * zoom origin when zooming out is the center of the current viewport * * @param sheet * @param factor values should be in the range of [0.5 .. 2] */ void sheet_zoom_step (Sheet *sheet, const gdouble factor) { double zoom; g_return_if_fail (sheet); g_return_if_fail (IS_SHEET (sheet)); sheet_get_zoom (sheet, &zoom); sheet_set_zoom (sheet, zoom * factor); Coords adju, r, pointer, delta, center, pagesize; GtkAdjustment *hadj = NULL, *vadj = NULL; GooCanvas *canvas; gboolean b = FALSE; canvas = GOO_CANVAS (sheet); // if we scroll out, just use the center as focus // mouse curser centered scroll out "feels" awkward if (factor < 1.) { goo_canvas_set_scale (canvas, factor * goo_canvas_get_scale (canvas)); return; } // get pointer position in pixels // just skip the correction if we can not get the pointer if (!sheet_get_pointer_pixel (sheet, &pointer.x, &pointer.y)) { goo_canvas_set_scale (canvas, factor * goo_canvas_get_scale (canvas)); g_warning ("Failed to get cursor position."); return; } // top left corner in pixels b = sheet_get_adjustments (sheet, &hadj, &vadj); if (b) { adju.x = gtk_adjustment_get_value (hadj); adju.y = gtk_adjustment_get_value (vadj); // get the page size in pixels pagesize.x = gtk_adjustment_get_page_size (hadj); pagesize.y = gtk_adjustment_get_page_size (vadj); } else { // FIXME untested codepath, check for variable space conversion // FIXME Pixel vs GooUnits gdouble left, right, top, bottom; goo_canvas_get_bounds (canvas, &left, &top, &right, &bottom); pagesize.x = bottom - top; pagesize.y = right - left; adju.x = adju.y = 0.; } // calculate the center of the widget in pixels center.x = adju.x + pagesize.x / 2.; center.y = adju.y + pagesize.y / 2.; // calculate the delta between the center and the pointer in pixels // this is required as the center is the zoom target delta.x = pointer.x - center.x; delta.y = pointer.y - center.y; // increase the top left position in pixels by our calculated delta adju.x += delta.x; adju.y += delta.y; // convert to canvas coords goo_canvas_convert_from_pixels (canvas, &adju.x, &adju.y); // the center of the canvas is now our cursor position goo_canvas_scroll_to (canvas, adju.x, adju.y); // calculate a correction term // for the case that we can not scroll the pane far enough to // compensate the whole off-due-to-wrong-center-error if (b) { r.x = gtk_adjustment_get_value (hadj); r.y = gtk_adjustment_get_value (vadj); goo_canvas_convert_from_pixels (canvas, &r.x, &r.y); // the correction term in goo coordinates, to be subtracted from the // backscroll distance r.x -= adju.x; r.y -= adju.y; } else { r.x = r.y = 0.; } // no the center is our cursor position and we can safely call scale goo_canvas_set_scale (canvas, factor * goo_canvas_get_scale (canvas)); // top left corner in pixels after scaling if (b) { adju.x = gtk_adjustment_get_value (hadj); adju.y = gtk_adjustment_get_value (vadj); } else { adju.x = adju.y = 0.; } // gtk_adjustment_get_page_size is constant before and after scale adju.x -= (delta.x) / sheet->priv->zoom; adju.y -= (delta.y) / sheet->priv->zoom; goo_canvas_convert_from_pixels (canvas, &adju.x, &adju.y); goo_canvas_scroll_to (canvas, adju.x - r.x, adju.y - r.y); gtk_widget_queue_draw (GTK_WIDGET (canvas)); } /** * \brief defines the drawing widget on which the actual schematic will be drawn * * @param width width of the content area * @param height height of the content area */ GtkWidget *sheet_new (const gdouble width, const gdouble height) { GooCanvas *sheet_canvas; GooCanvasGroup *sheet_group; GooCanvasPoints *points; Sheet *sheet; GtkWidget *sheet_widget; GooCanvasItem *root; // Creation of the Canvas sheet = SHEET (g_object_new (TYPE_SHEET, NULL)); sheet_canvas = GOO_CANVAS (sheet); g_object_set (G_OBJECT (sheet_canvas), "bounds-from-origin", FALSE, "bounds-padding", 4.0, "background-color-rgb", 0xFFFFFF, NULL); root = goo_canvas_get_root_item (sheet_canvas); sheet_group = GOO_CANVAS_GROUP (goo_canvas_group_new (root, NULL)); sheet_widget = GTK_WIDGET (sheet); goo_canvas_set_bounds (GOO_CANVAS (sheet_canvas), 0., 0., width + 20., height + 20.); sheet->priv->width = width; sheet->priv->height = height; // Create the dot grid. sheet->grid = grid_new (GOO_CANVAS_ITEM (sheet_group), width, height); // Everything outside the sheet should be gray. // top // goo_canvas_rect_new (GOO_CANVAS_ITEM (sheet_group), 0.0, 0.0, width + 20.0, 20.0, "fill_color", "gray", "line-width", 0.0, NULL); goo_canvas_rect_new (GOO_CANVAS_ITEM (sheet_group), 0.0, height, width + 20.0, height + 20.0, "fill_color", "gray", "line-width", 0.0, NULL); // right // goo_canvas_rect_new (GOO_CANVAS_ITEM (sheet_group), 0.0, 0.0, 20.0, height + 20.0, "fill_color", "gray", "line-width", 0.0, NULL); goo_canvas_rect_new (GOO_CANVAS_ITEM (sheet_group), width, 0.0, width + 20.0, height + 20.0, "fill_color", "gray", "line-width", 0.0, NULL); if (oregano_options_debug_directions ()) { goo_canvas_polyline_new_line (GOO_CANVAS_ITEM (sheet_group), 10.0, 10.0, 50.0, 10.0, "stroke-color", "green", "line-width", 2.0, "end-arrow", TRUE, NULL); goo_canvas_text_new (GOO_CANVAS_ITEM (sheet_group), "x", 90.0, 10.0, -1.0, GOO_CANVAS_ANCHOR_WEST, "fill-color", "green", NULL); goo_canvas_polyline_new_line (GOO_CANVAS_ITEM (sheet_group), 10.0, 10.0, 10.0, 50.0, "stroke-color", "red", "line-width", 2.0, "end-arrow", TRUE, NULL); goo_canvas_text_new (GOO_CANVAS_ITEM (sheet_group), "y", 10.0, 90.0, -1.0, GOO_CANVAS_ANCHOR_CENTER, "fill-color", "red", NULL); } // Draw a thin black border around the sheet. points = goo_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; goo_canvas_polyline_new (GOO_CANVAS_ITEM (sheet_group), FALSE, 0, "line-width", 1.0, "points", points, NULL); goo_canvas_points_unref (points); // Finally, create the object group that holds all objects. sheet->object_group = GOO_CANVAS_GROUP (goo_canvas_group_new (root, "x", 0.0, "y", 0.0, NULL)); NG_DEBUG ("root group %p", sheet->object_group); sheet->priv->selected_group = GOO_CANVAS_GROUP ( goo_canvas_group_new (GOO_CANVAS_ITEM (sheet->object_group), "x", 0.0, "y", 0.0, NULL)); NG_DEBUG ("selected group %p", sheet->priv->selected_group); sheet->priv->floating_group = GOO_CANVAS_GROUP ( goo_canvas_group_new (GOO_CANVAS_ITEM (sheet->object_group), "x", 0.0, "y", 0.0, NULL)); NG_DEBUG ("floating group %p", sheet->priv->floating_group); // Hash table that maps coordinates to a specific dot. sheet->priv->node_dots = g_hash_table_new_full (dot_hash, dot_equal, g_free, NULL); // this requires object_group to be setup properly sheet->priv->rubberband_info = rubberband_info_new (sheet); sheet->priv->create_wire_info = create_wire_info_new (sheet); return sheet_widget; } /* * Replace the current sheet with a new one (eventually * with a different size, i.e. with a different width * and/or height). */ gboolean sheet_replace (SchematicView *sv) { g_return_val_if_fail (sv != NULL, FALSE); g_return_val_if_fail (IS_SCHEMATIC_VIEW (sv), FALSE); Schematic *sm = schematic_view_get_schematic (sv); Sheet *old_sheet = schematic_view_get_sheet (sv); Sheet *sheet; GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (old_sheet)); gdouble zoom; g_return_val_if_fail (old_sheet != NULL, FALSE); g_return_val_if_fail (IS_SHEET (old_sheet), FALSE); sheet_get_zoom (old_sheet, &zoom); sheet = SHEET (sheet_new ((double) schematic_get_width (sm) + SHEET_BORDER, (double) schematic_get_height (sm) + SHEET_BORDER)); if (!sheet) return FALSE; sheet_set_zoom (sheet, zoom); goo_canvas_set_scale (GOO_CANVAS (sheet), zoom); g_signal_connect (G_OBJECT (sheet), "event", G_CALLBACK (sheet_event_callback), sheet); schematic_view_set_sheet (sv, sheet); rubberband_info_destroy (old_sheet->priv->rubberband_info); old_sheet->priv->rubberband_info = NULL; create_wire_info_destroy (old_sheet->priv->create_wire_info); old_sheet->priv->create_wire_info = NULL; gtk_widget_destroy (GTK_WIDGET (old_sheet)); gtk_container_add (GTK_CONTAINER (parent), GTK_WIDGET (sheet)); gtk_widget_grab_focus (GTK_WIDGET (sheet)); return TRUE; } static void sheet_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *spec) { Sheet *sheet = SHEET (object); switch (prop_id) { case ARG_ZOOM: sheet_set_zoom (sheet, (const double) 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; } } /* * scroll to in pixels relative to the current coords * note that pixels are _not_ affected by zoom */ void sheet_scroll_pixel (const Sheet *sheet, int delta_x, int delta_y) { GtkAdjustment *hadj = NULL, *vadj = NULL; GtkAllocation allocation; gfloat vnew, hnew; gfloat hmax, vmax; gfloat x1, y1; const SheetPriv *priv = sheet->priv; if (sheet_get_adjustments (sheet, &hadj, &vadj)) { x1 = gtk_adjustment_get_value (hadj); y1 = gtk_adjustment_get_value (vadj); } else { x1 = y1 = 0.f; } gtk_widget_get_allocation (GTK_WIDGET (sheet), &allocation); if (priv->width > allocation.width) hmax = (gfloat)(priv->width - allocation.width); else hmax = 0.f; if (priv->height > allocation.height) vmax = (gfloat)(priv->height - allocation.height); else vmax = 0.f; hnew = CLAMP (x1 + (gfloat)delta_x, 0.f, hmax); vnew = CLAMP (y1 + (gfloat)delta_y, 0.f, vmax); if (hadj && hnew != x1) { gtk_adjustment_set_value (hadj, hnew); g_signal_emit_by_name (G_OBJECT (hadj), "value_changed"); } if (vadj && vnew != y1) { gtk_adjustment_set_value (vadj, 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_remove_selected_object (const Sheet *sheet, SheetItem *item) { sheet->priv->selected_objects = g_list_remove (sheet->priv->selected_objects, item); } void sheet_prepend_selected_object (Sheet *sheet, SheetItem *item) { sheet->priv->selected_objects = g_list_prepend (sheet->priv->selected_objects, item); } void sheet_remove_floating_object (const Sheet *sheet, SheetItem *item) { sheet->priv->floating_objects = g_list_remove (sheet->priv->floating_objects, item); } void sheet_prepend_floating_object (Sheet *sheet, SheetItem *item) { sheet->priv->floating_objects = g_list_prepend (sheet->priv->floating_objects, item); } void sheet_connect_part_item_to_floating_group (Sheet *sheet, gpointer *sv) { g_return_if_fail (sheet); g_return_if_fail (IS_SHEET (sheet)); g_return_if_fail (sv); g_return_if_fail (IS_SCHEMATIC_VIEW (sv)); sheet->state = SHEET_STATE_FLOAT_START; 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 sheet_show_node_labels (Sheet *sheet, gboolean show) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); GList *item = NULL; for (item = sheet->priv->items; item; item = item->next) { if (IS_PART_ITEM (item->data)) if (part_get_num_pins (PART (sheet_item_get_data (SHEET_ITEM (item->data)))) == 1) part_item_show_node_labels (PART_ITEM (item->data), show); } } void sheet_add_item (Sheet *sheet, SheetItem *item) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); g_return_if_fail (item != NULL); g_return_if_fail (IS_SHEET_ITEM (item)); sheet->priv->items = g_list_prepend (sheet->priv->items, item); } /** * save the selection * @attention not stackable */ GList *sheet_preserve_selection (Sheet *sheet) { g_return_val_if_fail (sheet != NULL, FALSE); g_return_val_if_fail (IS_SHEET (sheet), FALSE); GList *list = NULL; for (list = sheet->priv->selected_objects; list; list = list->next) { sheet_item_set_preserve_selection (SHEET_ITEM (list->data), TRUE); } // Return the list so that we can remove the preserve_selection // flags later. return sheet->priv->selected_objects; } int sheet_event_callback (GtkWidget *widget, GdkEvent *event, Sheet *sheet) { GtkWidgetClass *wklass = GTK_WIDGET_CLASS (sheet->priv->sheet_parent_class); switch (event->type) { case GDK_3BUTTON_PRESS: // We do 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. return wklass->button_press_event (widget, (GdkEventButton *)event); 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 (wklass->button_press_event (widget, (GdkEventButton *)event)) { return TRUE; } if (event->button.button == 3) { run_context_menu (schematic_view_get_schematicview_from_sheet (sheet), (GdkEventButton *)event); return TRUE; } if (event->button.button == 1) { if (!(event->button.state & GDK_SHIFT_MASK)) sheet_select_all (sheet, FALSE); rubberband_start (sheet, event); return TRUE; } break; case GDK_BUTTON_RELEASE: if (event->button.button == 4 || event->button.button == 5) return TRUE; if (event->button.button == 1 && sheet->priv->rubberband_info->state == RUBBERBAND_ACTIVE) { rubberband_finish (sheet, event); return TRUE; } if (wklass->button_release_event != NULL) { return wklass->button_release_event (widget, (GdkEventButton *)event); } break; case GDK_SCROLL: { GdkEventScroll *scr_event = (GdkEventScroll *)event; if (scr_event->state & GDK_SHIFT_MASK) { // Scroll horizontally if (scr_event->direction == GDK_SCROLL_UP) sheet_scroll_pixel (sheet, -30, 0); else if (scr_event->direction == GDK_SCROLL_DOWN) sheet_scroll_pixel (sheet, 30, 0); } else if (scr_event->state & GDK_CONTROL_MASK) { // Scroll vertically if (scr_event->direction == GDK_SCROLL_UP) sheet_scroll_pixel (sheet, 0, -30); else if (scr_event->direction == GDK_SCROLL_DOWN) sheet_scroll_pixel (sheet, 0, 30); } else { // Zoom if (scr_event->direction == GDK_SCROLL_UP) { double zoom; sheet_get_zoom (sheet, &zoom); if (zoom < ZOOM_MAX) sheet_zoom_step (sheet, 1.1); } else if (scr_event->direction == GDK_SCROLL_DOWN) { double zoom; sheet_get_zoom (sheet, &zoom); if (zoom > ZOOM_MIN) sheet_zoom_step (sheet, 0.9); } } } break; case GDK_MOTION_NOTIFY: if (sheet->priv->rubberband_info->state == RUBBERBAND_ACTIVE) { rubberband_update (sheet, event); return TRUE; } if (wklass->motion_notify_event != NULL) { return wklass->motion_notify_event (widget, (GdkEventMotion *)event); } break; case GDK_ENTER_NOTIFY: return wklass->enter_notify_event (widget, (GdkEventCrossing *)event); case GDK_KEY_PRESS: switch (event->key.keyval) { case GDK_KEY_R: case GDK_KEY_r: if (sheet->state == SHEET_STATE_NONE) sheet_rotate_selection (sheet, 90); break; case GDK_KEY_L: case GDK_KEY_l: if (sheet->state == SHEET_STATE_NONE) sheet_rotate_selection (sheet, -90); break; case GDK_KEY_Home: case GDK_KEY_End: break; case GDK_KEY_Left: if (event->key.state & GDK_MOD1_MASK) { sheet_scroll_pixel (sheet, -20, 0); } else { sheet_move_selection (sheet, -20., 0.); } break; case GDK_KEY_Up: if (event->key.state & GDK_MOD1_MASK) { sheet_scroll_pixel (sheet, 0, -20); } else { sheet_move_selection (sheet, 0., -20.); } break; case GDK_KEY_Right: if (event->key.state & GDK_MOD1_MASK) { sheet_scroll_pixel (sheet, 20, 0); } else { sheet_move_selection (sheet, +20., 0.); } break; case GDK_KEY_Down: if (event->key.state & GDK_MOD1_MASK) { sheet_scroll_pixel (sheet, 0, 20); } else { sheet_move_selection (sheet, 0., +20.); } break; case GDK_KEY_Escape: g_signal_emit_by_name (G_OBJECT (sheet), "cancel"); break; case GDK_KEY_Delete: sheet_delete_selection (sheet); break; default: return FALSE; } default: return FALSE; } return TRUE; } /** * select all items on the sheet */ void sheet_select_all (Sheet *sheet, gboolean select) { GList *list; g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); for (list = sheet->priv->items; list; list = list->next) sheet_item_select (SHEET_ITEM (list->data), select); if (!select) sheet_release_selected_objects (sheet); } /** * rotate the currently selected on the sheet */ void sheet_rotate_selection (Sheet *sheet, gint angle) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); if (sheet->priv->selected_objects != NULL) rotate_items (sheet, sheet->priv->selected_objects, angle); } /** * move the currently selected on the sheet */ void sheet_move_selection (Sheet *sheet, gdouble x, gdouble y) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); const Coords delta = {x, y}; if (sheet->priv->selected_objects != NULL) move_items (sheet, sheet->priv->selected_objects, &delta); } /** * rotate floating items */ void sheet_rotate_ghosts (Sheet *sheet) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); if (sheet->priv->floating_objects != NULL) rotate_items (sheet, sheet->priv->floating_objects, 90); } static void rotate_items (Sheet *sheet, GList *items, gint angle) { GList *list, *item_data_list; Coords center, b1, b2; 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 = coords_average (&b1, &b2); snap_to_grid (sheet->grid, ¢er.x, ¢er.y); for (list = item_data_list; list; list = list->next) { ItemData *item_data = list->data; if (item_data == NULL) continue; if (sheet->state == SHEET_STATE_NONE) item_data_unregister (item_data); item_data_rotate (item_data, angle, ¢er); if (sheet->state == SHEET_STATE_NONE) item_data_register (item_data); } g_list_free (item_data_list); } static void move_items (Sheet *sheet, GList *items, const Coords *trans) { GList *list; for (list = items; list; list = list->next) { g_assert (list->data != NULL); ItemData *item_data = sheet_item_get_data (list->data); g_assert (item_data != NULL); if (sheet->state == SHEET_STATE_NONE) item_data_unregister (item_data); item_data_move (item_data, trans); if (sheet->state == SHEET_STATE_NONE) item_data_register (item_data); } } /** * remove the currently selected items from the sheet * (especially their goocanvas representators) */ void sheet_delete_selection (Sheet *sheet) { GList *copy, *iter; g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); if (sheet->state != SHEET_STATE_NONE) return; copy = g_list_copy (sheet->priv->selected_objects); for (iter = copy; iter; iter = iter->next) { sheet_remove_item_in_sheet (SHEET_ITEM (iter->data), sheet); goo_canvas_item_remove (GOO_CANVAS_ITEM (iter->data)); g_object_unref (iter->data); } g_list_free (copy); // function // requires selected_objects, items, floating_objects // to be not NULL! g_list_free (sheet->priv->selected_objects); sheet->priv->selected_objects = NULL; } /** * removes all canvas items in the selected canvas group from their parents * but does NOT delete them */ void sheet_release_selected_objects (Sheet *sheet) { GList *list, *copy; GooCanvasGroup *group; gint item_nbr; g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); group = sheet->priv->selected_group; copy = g_list_copy (sheet->priv->selected_objects); // Remove all the selected_objects into selected_group for (list = copy; list; list = list->next) { item_nbr = goo_canvas_item_find_child (GOO_CANVAS_ITEM (group), GOO_CANVAS_ITEM (list->data)); goo_canvas_item_remove_child (GOO_CANVAS_ITEM (group), item_nbr); } g_list_free (copy); g_list_free (sheet->priv->selected_objects); sheet->priv->selected_objects = NULL; } /** * @returns [transfer-none] the list of selected objects */ GList *sheet_get_selection (Sheet *sheet) { g_return_val_if_fail (sheet != NULL, NULL); g_return_val_if_fail (IS_SHEET (sheet), NULL); return sheet->priv->selected_objects; } /** * update the node lables of all parts in the current sheet */ void sheet_update_parts (Sheet *sheet) { GList *list; g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); for (list = sheet->priv->items; list; list = list->next) { if (IS_PART_ITEM (list->data)) part_item_update_node_label (PART_ITEM (list->data)); } } /** * flip currently selected items */ void sheet_flip_selection (Sheet *sheet, IDFlip direction) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); if (sheet->priv->selected_objects != NULL) flip_items (sheet, sheet->priv->selected_objects, direction); } /** * flip currently floating items */ void sheet_flip_ghosts (Sheet *sheet, IDFlip direction) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); if (sheet->priv->floating_objects != NULL) flip_items (sheet, sheet->priv->floating_objects, direction); } static void flip_items (Sheet *sheet, GList *items, IDFlip direction) { GList *iter, *item_data_list; Coords center, b1, b2; Coords after; item_data_list = NULL; for (iter = items; iter; iter = iter->next) { item_data_list = g_list_prepend (item_data_list, sheet_item_get_data (iter->data)); } item_data_list_get_absolute_bbox (item_data_list, &b1, &b2); // FIXME center is currently not used by item_data_flip (part.c implentation) center.x = b2.x / 2 + b1.x / 2; center.y = b2.y / 2 + b1.y / 2; // FIXME - registering an item after flipping it still creates an offset as // the position is still 0 for (iter = item_data_list; iter; iter = iter->next) { ItemData *item_data = iter->data; if (sheet->state == SHEET_STATE_NONE) item_data_unregister (item_data); item_data_flip (item_data, direction, ¢er); // Make sure we snap to grid. item_data_get_pos (item_data, &after); snap_to_grid (sheet->grid, &after.x, &after.y); item_data_set_pos (item_data, &after); if (sheet->state == SHEET_STATE_NONE) item_data_register (item_data); } g_list_free (item_data_list); } void sheet_clear_op_values (Sheet *sheet) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); g_hash_table_destroy (sheet->priv->voltmeter_nodes); sheet->priv->voltmeter_nodes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); } void sheet_provide_object_properties (Sheet *sheet) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); if (g_list_length (sheet->priv->selected_objects) == 1) sheet_item_edit_properties (sheet->priv->selected_objects->data); } /** * get rid of floating items (delete them) */ void sheet_clear_ghosts (Sheet *sheet) { GList *copy, *list; g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); if (sheet->priv->floating_objects == NULL) return; g_assert (sheet->state != SHEET_STATE_FLOAT); copy = g_list_copy (sheet->priv->floating_objects); for (list = copy; list; list = list->next) { g_object_force_floating (G_OBJECT (list->data)); g_object_unref (G_OBJECT (list->data)); } g_list_free (copy); sheet->priv->floating_objects = NULL; } /** * count selected objects O(n) */ guint sheet_get_selected_objects_length (Sheet *sheet) { g_return_val_if_fail ((sheet != NULL), 0); g_return_val_if_fail (IS_SHEET (sheet), 0); return g_list_length (sheet->priv->selected_objects); } /** * @returns a shallow copy of the floating items list, free with `g_list_free` */ GList *sheet_get_floating_objects (Sheet *sheet) { g_return_val_if_fail (sheet != NULL, NULL); g_return_val_if_fail (IS_SHEET (sheet), NULL); return g_list_copy (sheet->priv->floating_objects); } /** * add a recently created item (no view representation yet!) * to the group of floating items and add a SheetItem via * `sheet_item_factory_create_sheet_item()` */ void sheet_add_ghost_item (Sheet *sheet, ItemData *data) { SheetItem *item; g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); item = sheet_item_factory_create_sheet_item (sheet, data); g_object_set (G_OBJECT (item), "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); sheet_prepend_floating_object (sheet, item); } void sheet_stop_create_wire (Sheet *sheet) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); create_wire_cleanup (sheet); } void sheet_initiate_create_wire (Sheet *sheet) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); create_wire_setup (sheet); } static void node_dot_added_callback (Schematic *schematic, Coords *pos, Sheet *sheet) { NodeItem *node_item; Coords *key; g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); node_item = g_hash_table_lookup (sheet->priv->node_dots, pos); if (node_item == NULL) { node_item = NODE_ITEM (g_object_new (TYPE_NODE_ITEM, NULL)); g_object_set (node_item, "parent", goo_canvas_get_root_item (GOO_CANVAS (sheet)), "x", pos->x, "y", pos->y, NULL); } node_item_show_dot (node_item, TRUE); key = g_new0 (Coords, 1); key->x = pos->x; key->y = pos->y; g_hash_table_insert (sheet->priv->node_dots, key, node_item); } static void node_dot_removed_callback (Schematic *schematic, Coords *pos, Sheet *sheet) { GooCanvasItem *node_item; Coords *orig_key; gboolean found; g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); found = g_hash_table_lookup_extended (sheet->priv->node_dots, pos, (gpointer)&orig_key, (gpointer)&node_item); if (found) { goo_canvas_item_remove (GOO_CANVAS_ITEM (node_item)); g_hash_table_remove (sheet->priv->node_dots, pos); } else { g_warning ("No dot to remove!"); } } /** * hash function for dots (for their position actually) * good enough to get some spread and very lightweight */ static guint dot_hash (gconstpointer key) { Coords *sp = (Coords *)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) { Coords *spa, *spb; g_return_val_if_fail (a != NULL, 0); g_return_val_if_fail (b != NULL, 0); spa = (Coords *)a; spb = (Coords *)b; if (fabs (spa->y - spb->y) > HASH_EPSILON) return 0; if (fabs (spa->x - spb->x) > HASH_EPSILON) return 0; return 1; } void sheet_connect_node_dots_to_signals (Sheet *sheet) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); GList *iter, *list; Schematic *sm; sm = schematic_view_get_schematic_from_sheet (sheet); g_signal_connect_object (G_OBJECT (sm), "node_dot_added", G_CALLBACK (node_dot_added_callback), G_OBJECT (sheet), 0); g_signal_connect_object (G_OBJECT (sm), "node_dot_removed", G_CALLBACK (node_dot_removed_callback), G_OBJECT (sheet), 0); list = node_store_get_node_positions (schematic_get_store (sm)); for (iter = list; iter; iter = iter->next) node_dot_added_callback (sm, iter->data, sheet); } /** * remove a single item from the sheet */ void sheet_remove_item_in_sheet (SheetItem *item, Sheet *sheet) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); g_return_if_fail (item != NULL); g_return_if_fail (IS_SHEET_ITEM (item)); sheet->priv->items = g_list_remove (sheet->priv->items, item); // Remove the object from the selected-list before destroying. sheet_remove_selected_object (sheet, item); sheet_remove_floating_object (sheet, item); ItemData *data = sheet_item_get_data (item); g_return_if_fail (data != NULL); g_return_if_fail (IS_ITEM_DATA (data)); // properly unregister the itemdata from the sheet item_data_unregister (data); // Destroy the item-data (model) associated to the sheet-item g_object_unref (data); } inline static guint32 extract_time (GdkEvent *event) { if (event) { switch (event->type) { /* only added relevant events */ case GDK_MOTION_NOTIFY: return ((GdkEventMotion *)event)->time; case GDK_3BUTTON_PRESS: case GDK_2BUTTON_PRESS: case GDK_BUTTON_RELEASE: case GDK_BUTTON_PRESS: return ((GdkEventButton *)event)->time; case GDK_KEY_PRESS: return ((GdkEventKey *)event)->time; case GDK_ENTER_NOTIFY: case GDK_LEAVE_NOTIFY: return ((GdkEventCrossing *)event)->time; case GDK_PROPERTY_NOTIFY: return ((GdkEventProperty *)event)->time; case GDK_DRAG_ENTER: case GDK_DRAG_LEAVE: case GDK_DRAG_MOTION: case GDK_DRAG_STATUS: case GDK_DROP_START: case GDK_DROP_FINISHED: return ((GdkEventDND *)event)->time; default: return 0; } } return 0; } /** * helpful for debugging to not grab all input forever * if oregano segfaults while running inside * a gdb session */ #ifndef DEBUG_DISABLE_GRABBING #define DEBUG_DISABLE_GRABBING 0 #endif gboolean sheet_pointer_grab (Sheet *sheet, GdkEvent *event) { g_return_val_if_fail (sheet, FALSE); g_return_val_if_fail (IS_SHEET (sheet), FALSE); #if !DEBUG_DISABLE_GRABBING if (sheet->priv->pointer_grabbed == 0 && goo_canvas_pointer_grab (GOO_CANVAS (sheet), GOO_CANVAS_ITEM (sheet->grid), GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK, NULL, extract_time (event)) == GDK_GRAB_SUCCESS) { sheet->priv->pointer_grabbed = 1; } return (sheet->priv->pointer_grabbed == 1); #else return TRUE; #endif } void sheet_pointer_ungrab (Sheet *sheet, GdkEvent *event) { g_return_if_fail (sheet); g_return_if_fail (IS_SHEET (sheet)); #if !DEBUG_DISABLE_GRABBING if (sheet->priv->pointer_grabbed) { sheet->priv->pointer_grabbed = FALSE; goo_canvas_pointer_ungrab (GOO_CANVAS (sheet), GOO_CANVAS_ITEM (sheet->grid), extract_time (event)); } #endif } gboolean sheet_keyboard_grab (Sheet *sheet, GdkEvent *event) { g_return_val_if_fail (sheet, FALSE); g_return_val_if_fail (IS_SHEET (sheet), FALSE); #if !DEBUG_DISABLE_GRABBING if (sheet->priv->keyboard_grabbed == FALSE && goo_canvas_keyboard_grab (GOO_CANVAS (sheet), GOO_CANVAS_ITEM (sheet->grid), TRUE, /*do not reroute signals through sheet->grid*/ extract_time (event)) == GDK_GRAB_SUCCESS) { sheet->priv->keyboard_grabbed = TRUE; } return (sheet->priv->keyboard_grabbed == TRUE); #else return TRUE; #endif } void sheet_keyboard_ungrab (Sheet *sheet, GdkEvent *event) { g_return_if_fail (sheet); g_return_if_fail (IS_SHEET (sheet)); #if !DEBUG_DISABLE_GRABBING if (sheet->priv->keyboard_grabbed) { sheet->priv->keyboard_grabbed = FALSE; goo_canvas_keyboard_ungrab (GOO_CANVAS (sheet), GOO_CANVAS_ITEM (sheet->grid), extract_time (event)); } #endif } oregano-0.84.41/src/sheet/wire-item.c0000644000175000017500000005321213413640652016306 0ustar rubenruben/* * wire-item.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "cursors.h" #include "coords.h" #include "wire-item.h" #include "node-store.h" #include "wire.h" #include "wire-private.h" #include "schematic.h" #include "schematic-view.h" #include "options.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_dispose (GObject *object); static void wire_item_finalize (GObject *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, IDFlip horizontal, SheetItem *sheet_item); static void wire_moved_callback (ItemData *data, Coords *pos, SheetItem *item); static void wire_changed_callback (Wire *, WireItem *item); static void wire_item_paste (Sheet *sheet, 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, Coords *p1, Coords *p2); inline static void get_boundingbox (WireItem *item, Coords *p1, Coords *p2); static void mouse_over_wire_callback (WireItem *item, Sheet *sheet); static void highlight_wire_callback (Wire *wire, WireItem *item); static int unhighlight_wire (WireItem *item); static void wire_item_place (SheetItem *item, Sheet *sheet); static void wire_item_place_ghost (SheetItem *item, Sheet *sheet); static void wire_item_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *spec); static void wire_item_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *spec); #include "debug.h" 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. GooCanvasPolyline *line; GooCanvasRect *resize1; // Resize box of the wire GooCanvasRect *resize2; // Resize box of the wire // Cached bounding box. This is used to make // the rubberband selection a bit faster. Coords bbox_start; Coords bbox_end; }; G_DEFINE_TYPE (WireItem, wire_item, TYPE_SHEET_ITEM) static void wire_item_class_init (WireItemClass *wire_item_class) { GObjectClass *object_class; SheetItemClass *sheet_item_class; object_class = G_OBJECT_CLASS (wire_item_class); sheet_item_class = SHEET_ITEM_CLASS (wire_item_class); wire_item_parent_class = g_type_class_peek_parent (wire_item_class); object_class->finalize = wire_item_finalize; object_class->dispose = wire_item_dispose; object_class->set_property = wire_item_set_property; object_class->get_property = wire_item_get_property; 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 = selection_changed; sheet_item_class->place = wire_item_place; sheet_item_class->place_ghost = wire_item_place_ghost; } static void wire_item_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { g_return_if_fail (object != NULL); g_return_if_fail (IS_WIRE_ITEM (object)); switch (property_id) { default: g_warning ("PartItem: Invalid argument.\n"); } } static void wire_item_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { g_return_if_fail (object != NULL); g_return_if_fail (IS_WIRE_ITEM (object)); switch (property_id) { default: pspec->value_type = G_TYPE_INVALID; break; } } 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; priv->line = NULL; priv->resize1 = NULL; priv->resize2 = NULL; item->priv = priv; } static void wire_item_dispose (GObject *object) { WireItemPriv *priv; priv = WIRE_ITEM (object)->priv; G_OBJECT_CLASS (wire_item_parent_class)->dispose (object); } static void wire_item_finalize (GObject *object) { WireItemPriv *priv; priv = WIRE_ITEM (object)->priv; g_free (priv); priv = NULL; G_OBJECT_CLASS (wire_item_parent_class)->finalize (object); } // TODO get rid of this static void wire_item_moved (SheetItem *object) { // NG_DEBUG ("wire MOVED callback called - LEGACY"); } WireItem *wire_item_new (Sheet *sheet, Wire *wire) { GooCanvasItem *item; WireItem *wire_item; ItemData *item_data; GooCanvasPoints *points; WireItemPriv *priv; Coords start_pos, length; g_return_val_if_fail (sheet != NULL, NULL); g_return_val_if_fail (IS_SHEET (sheet), NULL); wire_get_pos_and_length (wire, &start_pos, &length); item = g_object_new (TYPE_WIRE_ITEM, NULL); g_object_set (item, "parent", sheet->object_group, NULL); wire_item = WIRE_ITEM (item); g_object_set (wire_item, "data", wire, NULL); priv = wire_item->priv; const int random_color_count = 9; const char *random_color[] = {"blue", "red", "green" /*, "yellow"*/, "orange", "brown", "purple", "pink", "lightblue", "lightgreen"}; priv->resize1 = GOO_CANVAS_RECT ( goo_canvas_rect_new (GOO_CANVAS_ITEM (wire_item), -RESIZER_SIZE, -RESIZER_SIZE, 2 * RESIZER_SIZE, 2 * RESIZER_SIZE, "stroke-color", oregano_options_debug_wires () ? random_color[g_random_int_range (0, random_color_count - 1)] : "blue", "fill-color", "green", "line-width", 1.0, NULL)); g_object_set (priv->resize1, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); priv->resize2 = GOO_CANVAS_RECT (goo_canvas_rect_new ( GOO_CANVAS_ITEM (wire_item), length.x - RESIZER_SIZE, length.y - RESIZER_SIZE, 2 * RESIZER_SIZE, 2 * RESIZER_SIZE, "stroke-color", oregano_options_debug_wires () ? random_color[g_random_int_range (0, random_color_count - 1)] : "blue", "fill-color", "green", "line-width", 1.0, NULL)); g_object_set (priv->resize2, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); points = goo_canvas_points_new (2); points->coords[0] = 0; points->coords[1] = 0; points->coords[2] = length.x; points->coords[3] = length.y; priv->line = GOO_CANVAS_POLYLINE (goo_canvas_polyline_new ( GOO_CANVAS_ITEM (wire_item), FALSE, 0, "points", points, "stroke-color", oregano_options_debug_wires () ? random_color[g_random_int_range (0, random_color_count - 1)] : "blue", "line-width", 1.0, "start-arrow", oregano_options_debug_wires () ? TRUE : FALSE, "end-arrow", oregano_options_debug_wires () ? TRUE : FALSE, NULL)); goo_canvas_points_unref (points); item_data = ITEM_DATA (wire); item_data->rotated_handler_id = g_signal_connect_object ( G_OBJECT (wire), "rotated", G_CALLBACK (wire_rotated_callback), G_OBJECT (wire_item), 0); item_data->flipped_handler_id = g_signal_connect_object ( G_OBJECT (wire), "flipped", G_CALLBACK (wire_flipped_callback), G_OBJECT (wire_item), 0); item_data->moved_handler_id = g_signal_connect_object ( G_OBJECT (wire), "moved", G_CALLBACK (wire_moved_callback), G_OBJECT (wire_item), 0); item_data->changed_handler_id = g_signal_connect_object ( G_OBJECT (wire), "changed", G_CALLBACK (wire_changed_callback), G_OBJECT (wire_item), 0); wire_update_bbox (wire); return wire_item; } gboolean wire_item_event (WireItem *wire_item, GooCanvasItem *sheet_target_item, GdkEvent *event, Sheet *sheet) { Coords start_pos, length; Wire *wire; GooCanvas *canvas; static double last_x, last_y; double dx, dy, zoom; // The selected group's bounding box in window resp. canvas coordinates. double snapped_x, snapped_y; Coords pos; canvas = GOO_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: { double x, y; g_signal_stop_emission_by_name (wire_item, "button_press_event"); sheet_get_pointer_snapped (sheet, &x, &y); x = x - start_pos.x; y = 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; sheet_get_pointer_snapped (sheet, &x, &y); last_x = x; last_y = 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; sheet_get_pointer_snapped (sheet, &x, &y); last_x = x; last_y = 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) { g_signal_stop_emission_by_name (wire_item, "motion-notify-event"); sheet->state = SHEET_STATE_DRAG; sheet_get_pointer_snapped (sheet, &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 (wire_item, "button-release-event"); goo_canvas_pointer_ungrab (canvas, GOO_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 (GOO_CANVAS_ITEM (wire_item), GOO_CANVAS_ITEM (wire_item), event, sheet); } return sheet_item_event (GOO_CANVAS_ITEM (wire_item), GOO_CANVAS_ITEM (wire_item), event, sheet); } void wire_item_signal_connect_placed (WireItem *wire_item, Sheet *sheet) { ItemData *item; item = sheet_item_get_data (SHEET_ITEM (wire_item)); g_signal_connect (wire_item, "button-press-event", G_CALLBACK (wire_item_event), sheet); g_signal_connect (wire_item, "button-release-event", G_CALLBACK (wire_item_event), sheet); g_signal_connect (wire_item, "motion-notify-event", G_CALLBACK (wire_item_event), sheet); g_signal_connect (wire_item, "mouse_over", G_CALLBACK (mouse_over_wire_callback), sheet); g_signal_connect (item, "highlight", G_CALLBACK (highlight_wire_callback), wire_item); } static void wire_rotated_callback (ItemData *data, int angle, SheetItem *sheet_item) { WireItem *wire_item; GooCanvasPoints *points; Coords 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 = goo_canvas_points_new (2); points->coords[0] = 0; points->coords[1] = 0; points->coords[2] = length.x; points->coords[3] = length.y; g_object_set (wire_item->priv->line, "points", points, NULL); goo_canvas_points_unref (points); g_object_set (wire_item, "x", start_pos.x, "y", start_pos.y, NULL); g_object_set (wire_item->priv->resize2, "x", length.x - RESIZER_SIZE, "y", length.y - RESIZER_SIZE, NULL); // Invalidate the bounding box cache. wire_item->priv->cache_valid = FALSE; } static void wire_flipped_callback (ItemData *data, IDFlip direction, SheetItem *sheet_item) { GooCanvasPoints *points; WireItem *item; WireItemPriv *priv; Coords 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 = goo_canvas_points_new (2); points->coords[0] = 0; points->coords[1] = 0; points->coords[2] = length.x; points->coords[3] = length.y; g_object_set (item->priv->line, "points", points, NULL); goo_canvas_points_unref (points); g_object_set (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; g_object_set (priv->line, "stroke-color", SELECTED_COLOR, NULL); g_object_set (item->priv->resize1, "visibility", GOO_CANVAS_ITEM_VISIBLE, NULL); g_object_set (item->priv->resize2, "visibility", GOO_CANVAS_ITEM_VISIBLE, NULL); priv->highlight = TRUE; g_object_unref (G_OBJECT (item)); return FALSE; } static int deselect_idle_callback (WireItem *item) { WireItemPriv *priv = item->priv; g_object_set (priv->line, "stroke_color", NORMAL_COLOR, NULL); g_object_set (item->priv->resize1, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); g_object_set (item->priv->resize2, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); priv->highlight = FALSE; g_object_unref (G_OBJECT (item)); return FALSE; } static void selection_changed (WireItem *item, gboolean select, gpointer user) { g_object_ref (G_OBJECT (item)); if (select) { g_idle_add ((gpointer)select_idle_callback, item); } else { g_idle_add ((gpointer)deselect_idle_callback, item); } } // 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, Coords *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, Coords *pos) { WireItemPriv *priv; GooCanvasPoints *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]; goo_canvas_points_unref (points); } static gboolean is_in_area (SheetItem *object, Coords *p1, Coords *p2) { WireItem *item; Coords bbox_start, bbox_end; item = WIRE_ITEM (object); get_boundingbox (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_boundingbox (WireItem *item, Coords *p1, Coords *p2) { g_return_if_fail (item != NULL); g_return_if_fail (IS_WIRE_ITEM (item)); WireItemPriv *priv; priv = item->priv; if (!priv->cache_valid) { GooCanvasBounds bounds; //, canvas_bounds; goo_canvas_item_get_bounds (GOO_CANVAS_ITEM (item), &bounds); priv->bbox_start.x = bounds.x1; priv->bbox_start.y = bounds.y1; priv->bbox_end.x = bounds.x2; priv->bbox_end.y = bounds.y2; priv->cache_valid = TRUE; } if (p1) *p1 = priv->bbox_start; if (p2) *p2 = priv->bbox_end; } static void wire_item_paste (Sheet *sheet, ItemData *data) { g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); g_return_if_fail (data != NULL); g_return_if_fail (IS_WIRE (data)); sheet_add_ghost_item (sheet, data); } static void wire_traverse (Wire *wire); static void node_traverse (Node *node) { GSList *iter; 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 (iter = node->wires; iter; iter = iter->next) { Wire *wire = iter->data; wire_traverse (wire); } } static void wire_traverse (Wire *wire) { GSList *iter; 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 (wire, "highlight"); for (iter = wire_get_nodes (wire); iter; iter = iter->next) { Node *node = iter->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_callback (WireItem *item, Sheet *sheet) { GList *iter; Wire *wire; NodeStore *store; if (sheet->state != SHEET_STATE_NONE) return; store = schematic_get_store (schematic_view_get_schematic_from_sheet (sheet)); node_store_node_foreach (store, (GHFunc *)node_foreach_reset, NULL); for (iter = store->wires; iter; iter = iter->next) { wire = iter->data; wire_set_visited (wire, FALSE); } wire = WIRE (sheet_item_get_data (SHEET_ITEM (item))); wire_traverse (wire); } static void highlight_wire_callback (Wire *wire, WireItem *item) { WireItemPriv *priv = item->priv; g_object_set (priv->line, "stroke-color", HIGHLIGHT_COLOR, NULL); // Guard against removal during the highlighting. g_object_ref (G_OBJECT (item)); g_timeout_add (1000, (gpointer)unhighlight_wire, item); // FIXME XXX wtf??? } static int unhighlight_wire (WireItem *item) { char *color; WireItemPriv *priv = item->priv; color = sheet_item_get_selected (SHEET_ITEM (item)) ? SELECTED_COLOR : NORMAL_COLOR; g_object_set (priv->line, "stroke-color", color, NULL); g_object_unref (G_OBJECT (item)); return FALSE; } // FIXME get rid of static void wire_moved_callback (ItemData *data, Coords *pos, SheetItem *item) { // NG_DEBUG ("wire MOVED callback called - LEGACY"); } static void wire_item_place (SheetItem *item, Sheet *sheet) { wire_item_signal_connect_placed (WIRE_ITEM (item), sheet); } // FIXME get rid of static void wire_item_place_ghost (SheetItem *item, Sheet *sheet) { // wire_item_signal_connect_placed (WIRE_ITEM (item)); } static void wire_changed_callback (Wire *wire, WireItem *item) { Coords start_pos, length; GooCanvasPoints *points; g_return_if_fail (wire != NULL); g_return_if_fail (IS_ITEM_DATA (wire)); g_return_if_fail (item != NULL); g_return_if_fail (IS_WIRE_ITEM (item)); wire_get_pos_and_length (wire, &start_pos, &length); // Move the canvas item and invalidate the bbox cache. goo_canvas_item_set_simple_transform (GOO_CANVAS_ITEM (item), start_pos.x, start_pos.y, 1.0, 0.0); item->priv->cache_valid = FALSE; points = goo_canvas_points_new (2); points->coords[0] = 0; points->coords[1] = 0; points->coords[2] = length.x; points->coords[3] = length.y; // this does handle cleanup of previous points internally g_object_set (item->priv->line, "points", points, NULL); goo_canvas_points_unref (points); g_object_set (item->priv->resize1, "x", -RESIZER_SIZE, "y", -RESIZER_SIZE, "width", 2 * RESIZER_SIZE, "height", 2 * RESIZER_SIZE, NULL); g_object_set (item->priv->resize2, "x", length.x - RESIZER_SIZE, "y", length.y - RESIZER_SIZE, "width", 2 * RESIZER_SIZE, "height", 2 * RESIZER_SIZE, NULL); goo_canvas_item_request_update (GOO_CANVAS_ITEM (item->priv->line)); } oregano-0.84.41/src/sheet/wire-item.h0000644000175000017500000000403413413640652016311 0ustar rubenruben/* * wire-item.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __WIRE_ITEM_H #define __WIRE_ITEM_H #include #include "sheet.h" #include "sheet-item.h" #include "wire.h" #define TYPE_WIRE_ITEM (wire_item_get_type ()) #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, Coords *pos); void wire_item_get_length (WireItem *item, Coords *pos); #endif oregano-0.84.41/src/sheet/grid.h0000644000175000017500000000377413413640652015346 0ustar rubenruben/* * grid.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://github.com/marc-lorber/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __GRID_H #define __GRID_H #include #include #include #include "coords.h" #define TYPE_GRID (grid_get_type ()) #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; typedef struct _GridPriv GridPriv; struct _Grid { GooCanvasGroup canvas_group; gdouble width; gdouble height; gdouble x; gdouble y; GridPriv *priv; }; struct _GridClass { GooCanvasGroupClass parent_class; }; Grid *grid_new (GooCanvasItem *root, gdouble width, gdouble height); GType grid_get_type (void); gboolean snap_to_grid (Grid *grid, double *x, double *y); void grid_show (Grid *grid, gboolean snap); void grid_snap (Grid *grid, gboolean snap); #endif oregano-0.84.41/src/sheet/node-item.h0000644000175000017500000000375613413640652016302 0ustar rubenruben/* * * node-item.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __NODE_ITEM_H__ #define __NODE_ITEM_H__ #include #include #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 { GooCanvasGroup parent; NodeItemPriv *priv; }; struct _NodeItemClass { GooCanvasGroupClass 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__ */ oregano-0.84.41/src/sheet/create-wire.h0000644000175000017500000000361513413640652016622 0ustar rubenruben/* * create-wire.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __CREATE_WIRE_H #define __CREATE_WIRE_H #include #include "sheet.h" #include "wire.h" #include "wire-item.h" #include "schematic-view.h" typedef enum { WIRE_START, WIRE_ACTIVE, WIRE_DISABLED } WireState; typedef struct _CreateWireInfo CreateWireInfo; struct _CreateWireInfo { WireState state; GooCanvasPolyline *line; GooCanvasPoints *points; GooCanvasEllipse *dot; WireDir direction; gulong event_handler_id; // gulong cancel_handler_id; }; CreateWireInfo *create_wire_info_new (Sheet *sheet); void create_wire_info_destroy (CreateWireInfo *wire_info); gboolean create_wire_setup (Sheet *sheet); gboolean create_wire_orientationtoggle (Sheet *sheet); gboolean create_wire_event (Sheet *sheet, GdkEvent *event, gpointer data); gboolean create_wire_cleanup (Sheet *sheet); #endif oregano-0.84.41/src/plot.c0000644000175000017500000004632413413640652014260 0ustar rubenruben/* * plot.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include "file.h" #include "oregano.h" #include "schematic.h" #include "dialogs.h" #include "plot.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)) #define PLOT_AXIS_COLOR "black" #define PLOT_CURVE_COLOR "medium sea green" #include "debug.h" static guint next_color = 0; static guint next_pulse = 0; static guint n_curve_colors = 7; static char *plot_curve_colors[] = {"white", "green", "red", "yellow", "cyan", "pink", "orange1", 0}; typedef struct { GtkWidget *window; GtkWidget *canvas; GtkWidget *coord; // shows the coordinates of the mouse GtkWidget *combo_box; 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; gdouble plot_max; gdouble x_min; gdouble 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; static GtkWidget *plot_window_create (Plot *plot); static void destroy_window (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 add_function (GtkMenuItem *menuitem, Plot *plot); static void close_window (GtkMenuItem *menuitem, Plot *plot); static gchar *get_variable_units (gchar *str) { gchar *tmp; if (str == NULL) return g_strdup ("##"); if (!strcmp (str, _ ("voltage"))) { tmp = g_strdup ("V"); } 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 if (!strcmp (str, _ ("psd"))) { tmp = g_strdup ("V^2 / Hz"); } 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); g_free (plot->ytitle); g_free (plot); plot = NULL; return FALSE; } // Call this to close the plot window static void destroy_window (GtkWidget *widget, Plot *plot) { gtk_widget_destroy (plot->canvas); gtk_widget_destroy (plot->coord); gtk_widget_destroy (plot->combo_box); gtk_widget_destroy (plot->window); g_object_unref (plot->sim); plot->window = NULL; 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 visible = FALSE; 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, &visible, 4, &f, -1); visible = !visible; gtk_tree_store_set (GTK_TREE_STORE (model), &iter, 0, visible, -1); g_object_set (G_OBJECT (f), "visible", visible, 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; guint len, j; gdouble width = 1; GraphicType graphic_type = FUNCTIONAL_CURVE; gdouble shift_step = 0; 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); X[j] = g_array_index (current->data[0], double, j); } if (current->type == ANALYSIS_TYPE_FOURIER) { graphic_type = FREQUENCY_PULSE; next_pulse++; width = 5.0; shift_step = X[1] / 20; NG_DEBUG ("shift_step = %lf\n", shift_step); } else { next_pulse = 0; width = 1.0; } f = g_plot_lines_new (X, Y, len); g_object_set (G_OBJECT (f), "color", plot_curve_colors[(next_color++) % n_curve_colors], NULL); g_object_set (G_OBJECT (f), "graph-type", graphic_type, NULL); g_object_set (G_OBJECT (f), "shift", shift_step * next_pulse, NULL); g_object_set (G_OBJECT (f), "width", width, NULL); NG_DEBUG ("plot: create_plot_function_from_simulation_data: shift = %lf\n", 0.1 * next_pulse); return f; } static void analysis_selected (GtkWidget *combo_box, Plot *plot) { int i; const gchar *ca; 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")); if (gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box)) == -1) { // Simulation failed? g_warning (_ ("The simulation produced no data!!\n")); return; } ca = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (combo_box)); plot->current = NULL; analysis = oregano_engine_get_results (plot->sim); for (; analysis; analysis = analysis->next) { sdat = SIM_DATA (analysis->data); gchar *analysis_name = oregano_engine_get_analysis_name (sdat); if (!strcmp (ca, analysis_name)) { plot->current = sdat; g_free(analysis_name); break; } g_free(analysis_name); } 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); gchar *analysis_name = oregano_engine_get_analysis_name (plot->current); plot->title = g_strdup_printf (_ ("Plot - %s"), analysis_name); g_free(analysis_name); // 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 != ANALYSIS_TYPE_DC_TRANSFER) { //FIXME extra axis scaling for current/voltage //FIXME or extra plot window for current/voltage //FIXME or extra analysis for current/voltage 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 *coordstr; gdouble x, y; x = event->x; y = event->y; g_plot_window_to_device (GPLOT (plot->plot), &x, &y); coordstr = g_strdup_printf ("(%g, %g)", x, y); gtk_entry_set_text (GTK_ENTRY (plot->coord), coordstr); g_free (coordstr); } static GtkWidget *plot_window_create (Plot *plot) { GtkTreeView *list; GtkTreeStore *tree_model; GtkCellRenderer *cell; GtkTreeViewColumn *column; GtkWidget *outer_table, *window, *button, *plot_scrolled; GtkWidget *vbox, *menubar, *menu, *menuitem, *combo_box, *w; GtkBuilder *gui; GError *perror = NULL; gchar *msg; GtkAccelGroup *accel_group; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), _ ("Oregano - Plot")); gtk_container_set_border_width (GTK_CONTAINER (window), 0); g_signal_connect (G_OBJECT (window), "delete-event", G_CALLBACK (delete_event_cb), plot); accel_group = gtk_accel_group_new (); gtk_window_add_accel_group (GTK_WINDOW (window), accel_group); if ((gui = gtk_builder_new ()) == NULL) { oregano_error (_ ("Could not create plot window.")); return NULL; } gtk_builder_set_translation_domain (gui, NULL); if (gtk_builder_add_from_file (gui, OREGANO_UIDIR "/plot-window.ui", &perror) <= 0) { msg = perror->message; oregano_error_with_title (_ ("Could not create plot window."), msg); g_error_free (perror); return NULL; } outer_table = GTK_WIDGET (gtk_builder_get_object (gui, "plot_grid")); plot_scrolled = plot->canvas = GTK_WIDGET (gtk_builder_get_object (gui, "plot_scrolled")); plot->coord = GTK_WIDGET (gtk_builder_get_object (gui, "pos_label")); plot->plot = g_plot_new (); gtk_container_add (GTK_CONTAINER (plot_scrolled), plot->plot); gtk_widget_set_size_request (plot_scrolled, 600, 400); g_signal_connect (G_OBJECT (plot->plot), "motion_notify_event", G_CALLBACK (plot_canvas_movement), plot); // Creation of the menubar vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); menubar = gtk_menu_bar_new (); gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, TRUE, 0); gtk_widget_show (menubar); // Creation of the menu menu = gtk_menu_new (); //add Add Function menuitem menuitem = gtk_menu_item_new_with_label (_ ("Add Function")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); g_signal_connect (menuitem, "activate", G_CALLBACK (add_function), plot); gtk_widget_show (menuitem); //add separator menuitem = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_widget_show (menuitem); menuitem = gtk_menu_item_new_with_label (_ ("Close")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); g_signal_connect (menuitem, "activate", G_CALLBACK (close_window), plot); gtk_widget_show (menuitem); // Installation of the menu in the menubar menuitem = gtk_menu_item_new_with_label (_ ("File")); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu); gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem); gtk_widget_show (menuitem); g_object_ref (outer_table); gtk_widget_unparent (outer_table); gtk_container_add (GTK_CONTAINER (vbox), outer_table); gtk_widget_show (vbox); g_object_ref (vbox); gtk_widget_unparent (vbox); gtk_container_add (GTK_CONTAINER (window), vbox); button = GTK_WIDGET (gtk_builder_get_object (gui, "close_button")); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (destroy_window), plot); list = GTK_TREE_VIEW (gtk_builder_get_object (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, FALSE); 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)); w = GTK_WIDGET (gtk_builder_get_object (gui, "analysis_combobox")); gtk_widget_destroy (w); w = GTK_WIDGET (gtk_builder_get_object (gui, "grid1")); combo_box = gtk_combo_box_text_new_with_entry (); gtk_grid_attach (GTK_GRID (w), combo_box, 0, 0, 1, 1); plot->combo_box = combo_box; plot->window = window; gtk_widget_show_all (window); return window; } int plot_show (OreganoEngine *engine) { GList *analysis = NULL; GList *analysis_backup = NULL; Plot *plot; gchar *str = NULL; gchar *s_current = NULL; SimulationData *first = NULL; SimulationData *sdat = NULL; gboolean abort = TRUE; g_return_val_if_fail (engine != NULL, FALSE); // Get the analysis we have analysis = analysis_backup = oregano_engine_get_results (engine); for (; analysis; analysis = analysis->next) { sdat = SIM_DATA (analysis->data); str = oregano_engine_get_analysis_name (sdat); if (sdat->type != ANALYSIS_TYPE_OP_POINT) abort = FALSE; } if (abort) return 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; for (; analysis_backup; analysis_backup = analysis_backup->next) { sdat = SIM_DATA (analysis_backup->data); str = oregano_engine_get_analysis_name (sdat); if (sdat->type == ANALYSIS_TYPE_OP_POINT) { continue; } if (s_current == NULL) { s_current = str; first = sdat; } gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (plot->combo_box), str); gtk_combo_box_set_active (GTK_COMBO_BOX (plot->combo_box), 0); } g_signal_connect (G_OBJECT (plot->combo_box), "changed", G_CALLBACK (analysis_selected), plot); 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 ((plot->combo_box), plot); return TRUE; } static GPlotFunction *create_plot_function_from_data (SimulationFunction *func, SimulationData *current) { GPlotFunction *f; double *X; double *Y; double data; guint j, len; GraphicType graphic_type = FUNCTIONAL_CURVE; gdouble width = 1.0; 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_SUBTRACT: Y[j] -= data; break; case FUNCTION_DIVIDE: 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); } if (current->type == ANALYSIS_TYPE_FOURIER) { graphic_type = FREQUENCY_PULSE; next_pulse++; width = 5.0; } else { next_pulse = 0; width = 1.0; } f = g_plot_lines_new (X, Y, len); g_object_set (G_OBJECT (f), "color", plot_curve_colors[(next_color++) % n_curve_colors], "graph-type", graphic_type, "shift", 50.0 * next_pulse, "width", width, NULL); return f; } static void close_window (GtkMenuItem *menuitem, Plot *plot) { destroy_window (GTK_WIDGET (menuitem), plot); } static void add_function (GtkMenuItem *menuitem, 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 = NULL, *name1 = NULL, *name2 = NULL; 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_SUBTRACT: str = g_strdup_printf ("%s - %s", name1, name2); break; case FUNCTION_DIVIDE: 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; } g_list_free_full (lst, g_object_unref); gtk_widget_queue_draw (plot->plot); } oregano-0.84.41/src/coords.h0000644000175000017500000000502513413640652014571 0ustar rubenruben/* * coords.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2012-2013 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __COORDS_H #define __COORDS_H #define COORDS_DELTA (1e-5) #include #include typedef struct _Coords { gdouble x; gdouble y; } Coords; Coords *coords_new (gdouble x, gdouble y); Coords *coords_new_copy (const Coords *c); void coords_destroy (Coords *c); /* * Adds b to a and returns a pointer to a which holds now the result */ Coords *coords_add (Coords *a, const Coords *b); /* * Adds b to a and returns a ptr to a Coord struct which has to be freed by * either coords_destroy */ Coords *coords_sum_new (const Coords *a, const Coords *b); Coords *coords_set (Coords *a, const Coords *val); /* * */ Coords coords_sum (const Coords *a, const Coords *b); Coords coords_sub (const Coords *a, const Coords *b); /* * calculates the average of two points */ Coords coords_average (const Coords *a, const Coords *b); gdouble coords_cross (const Coords *a, const Coords *b); gdouble coords_dot (const Coords *a, const Coords *b); gdouble coords_euclid (const Coords *a); gdouble coords_euclid2 (const Coords *a); gdouble coords_distance (const Coords *a, const Coords *b); gboolean coords_equal (const Coords *a, const Coords *b); /* * used for GHashTable key hashing */ guint coords_hash (gconstpointer v); /* * used for comparsion in GHashTable */ gint coords_compare (const Coords *a, const Coords *b); #endif /* __COORDS_H */ oregano-0.84.41/src/stock.h0000644000175000017500000000363013413640652014423 0ustar rubenruben/* * stock.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, 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 oregano-0.84.41/src/save-schematic.c0000644000175000017500000004123513413640652016172 0ustar rubenruben/* * save-schematic.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "xml-compat.h" #include "oregano.h" #include "schematic.h" #include "coords.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" #include "debug.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); if (sim_settings_get_trans_analyze_all(s)) str = "true"; else str = "false"; child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "analyze-all", 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")); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "vout1", BAD_CAST sim_settings_get_ac_vout (s)); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "type", BAD_CAST sim_settings_get_ac_type (s)); 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)); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "vout1", BAD_CAST sim_settings_get_dc_vout (s)); str = g_strdup_printf ("%g", sim_settings_get_dc_start (s)); 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)); 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)); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "step1", BAD_CAST str); g_free (str); // Fourier analysis analysis = xmlNewChild (sim_settings_node, ctxt->ns, BAD_CAST "fourier", NULL); if (!analysis) { g_warning ("Failed during save of Fourier analysis settings.\n"); return; } child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "enabled", BAD_CAST (sim_settings_get_fourier (s) ? "true" : "false")); str = g_strdup_printf ("%.3f", sim_settings_get_fourier_frequency (s)); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "freq", BAD_CAST str); g_free (str); str = g_strdup_printf ("%s", sim_settings_get_fourier_vout (s)); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "vout", BAD_CAST str); g_free (str); // Noise analysis analysis = xmlNewChild (sim_settings_node, ctxt->ns, BAD_CAST "noise", NULL); if (!analysis) { g_warning ("Failed during save of Noise analysis settings.\n"); return; } child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "enabled", BAD_CAST (sim_settings_get_noise (s) ? "true" : "false")); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "vsrc1", BAD_CAST sim_settings_get_noise_vsrc (s)); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "vout1", BAD_CAST sim_settings_get_noise_vout (s)); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "type", BAD_CAST sim_settings_get_noise_type (s)); str = g_strdup_printf ("%d", sim_settings_get_noise_npoints (s)); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "npoints", BAD_CAST str); g_free (str); str = g_strdup_printf ("%g", sim_settings_get_noise_start (s)); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "start", BAD_CAST str); g_free (str); str = g_strdup_printf ("%g", sim_settings_get_noise_stop (s)); child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "stop", 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); } static void write_xml_part (Part *part, parseXmlContext *ctxt) { PartPriv *priv; xmlNodePtr node_part; gchar *str; Coords pos; g_return_if_fail (part != NULL); g_return_if_fail (IS_PART (part)); 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", part_get_rotation (part)); 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); 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 gint cmp_nodes (gconstpointer a, gconstpointer b) { return coords_compare (&(((const Node *)a)->key), &(((const Node *)b)->key)); } static void write_xml_wire (Wire *wire, parseXmlContext *ctxt) { xmlNodePtr node_wire; gchar *str; Coords 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); Node *node; Coords last, current, tmp; GSList *iter, *copy; copy = g_slist_sort (g_slist_copy (wire_get_nodes (wire)), cmp_nodes); current = last = start_pos; for (iter = copy; iter; iter = iter->next) { node = iter->data; if (node == NULL) { g_warning ("Node of wire did not exist [%p].", node); continue; } tmp = node->key; if (coords_equal (&tmp, &start_pos)) continue; if (coords_equal (&tmp, &end_pos)) continue; last = current; current = tmp; str = g_strdup_printf ("(%g %g)(%g %g)", last.x, last.y, current.x, current.y); xmlNewChild (node_wire, ctxt->ns, BAD_CAST "points", BAD_CAST str); g_free (str); } last = current; current = end_pos; str = g_strdup_printf ("(%g %g)(%g %g)", last.x, last.y, current.x, current.y); xmlNewChild (node_wire, ctxt->ns, BAD_CAST "points", BAD_CAST str); g_free (str); g_slist_free (copy); } static void write_xml_textbox (Textbox *textbox, parseXmlContext *ctxt) { xmlNodePtr node_textbox; gchar *str; Coords pos; g_return_if_fail (textbox != NULL); if (!IS_TEXTBOX (textbox)) return; // 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; cur = xmlNewDocNode (ctxt->doc, ctxt->ns, BAD_CAST "schematic", NULL); if (cur == NULL) { printf ("%s:%d NULL that shall be not NULL!\n", __FILE__, __LINE__); return NULL; } if (ctxt->ns == NULL) { ogo = xmlNewNs (cur, BAD_CAST "https://beerbach.me/project/oregano/ns/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_version (sm)); xmlNewChild (cur, ctxt->ns, BAD_CAST "version", 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); // 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. gboolean schematic_write_xml (Schematic *sm, GError **error) { int ret = -1; xmlDocPtr xml; parseXmlContext ctxt; GError *err = 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, &err)); if (err) { g_propagate_error (error, err); return FALSE; } // Dump the tree. xmlSetDocCompressMode (xml, oregano.compress_files ? 9 : 0); { char *s = schematic_get_filename (sm); if (s != NULL) { 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; } oregano-0.84.41/src/wscript0000644000175000017500000000226213413640652014545 0ustar rubenruben#! /usr/bin/env python3 # encoding: utf-8 import os from waflib import Logs as logs from waflib import Utils as utils def options(opt): pass def configure(conf): pass def build(bld): if bld.cmd == 'install' or bld.cmd == 'uninstall': if not os.geteuid()==0: logs.warn ('You most likely need root privileges to install or uninstall properly.') nodes = bld.path.ant_glob(\ ['*.c', 'tools/*.c', 'gplot/*.c', 'engines/*.c', 'sheet/*.c', 'model/*.c'], excl='main.c') bld.objects ( ['c','glib2'], source = nodes, includes = ['.', 'tools/', 'engines/', 'gplot/', 'model/', 'sheet/'], uselib = 'M XML GOBJECT GLIB GTK3 XML GOOCANVAS GTKSOURCEVIEW3', target = 'shared_objects' ) exe = bld.program( features = ['c', 'glib2'], target = bld.env.appname, source = ['main.c'], includes = ['.', 'tools/', 'engines/', 'gplot/', 'model/', 'sheet/'], use = 'shared_objects', uselib = 'M XML GOBJECT GLIB GTK3 XML GOOCANVAS GTKSOURCEVIEW3', settings_schema_files = ['../data/settings/'+bld.env.gschema_name ] if not bld.options.no_install_gschema else [], install_path = "${BINDIR}" ) for item in exe.includes: logs.debug(item) oregano-0.84.41/src/clipboard.c0000644000175000017500000000567013413640652015240 0ustar rubenruben/* * clipboard.c * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include "oregano.h" #include "sheet-item.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); item_data = sheet_item_get_data (SHEET_ITEM (item)); g_return_if_fail (item_data != NULL); 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); } oregano-0.84.41/src/coords.c0000644000175000017500000000710713413640652014567 0ustar rubenruben/* * coords.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2012-2013 Bernhard Schuster * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "coords.h" inline Coords *coords_new (gdouble x, gdouble y) { Coords *c = g_malloc (sizeof(Coords)); g_assert (c != NULL); c->x = x; c->y = y; return c; } inline Coords *coords_new_copy (const Coords *src) { return coords_new (src->x, src->y); } inline void coords_destroy (Coords *c) { g_free (c); } inline Coords *coords_add (Coords *a, const Coords *b) { if (!a || !b) return NULL; a->x += b->x; a->y += b->y; return a; } inline Coords coords_sum (const Coords *a, const Coords *b) { g_assert (a); g_assert (b); Coords c; c.x = a->x + b->x; c.y = a->y + b->y; return c; } inline Coords coords_sub (const Coords *a, const Coords *b) { g_assert (a); g_assert (b); Coords c; c.x = a->x - b->x; c.y = a->y - b->y; return c; } inline Coords *coords_sum_new (const Coords *a, const Coords *b) { if (G_UNLIKELY (!a || !b)) return NULL; Coords *c = coords_new (a->x, a->y); c->x += b->x; c->y += b->y; return c; } inline Coords *coords_set (Coords *a, const Coords *val) { if (G_UNLIKELY (!a || !val)) return NULL; a->x = val->x; a->y = val->y; return a; } inline Coords coords_average (const Coords *a, const Coords *b) { Coords r = (Coords)(*a); r.x += b->x; r.x /= 2.0; r.y += b->y; r.y /= 2.0; return r; } inline gdouble coords_dot (const Coords *a, const Coords *b) { return (a->x * b->x) + (a->y * b->y); } inline gdouble coords_cross (const Coords *a, const Coords *b) { return (a->x * b->y) - (a->y * b->x); } inline gdouble coords_euclid (const Coords *a) { return sqrt (coords_dot (a, a)); } inline gdouble coords_euclid2 (const Coords *a) { return coords_dot (a, a); } inline gdouble coords_distance (const Coords *a, const Coords *b) { return sqrt (coords_dot (a, b)); } #define CIRCLE_R_SHIFT(x, r) ((x >> r) | (x << (sizeof(x) * 8 - r))) #define CIRCLE_L_SHIFT(x, l) ((x << l) | (x >> (sizeof(x) * 8 - l))) inline guint coords_hash (gconstpointer v) { const Coords *c = v; const guint x = (guint)(c->x); const guint y = (guint)(c->y); return CIRCLE_L_SHIFT (x, 7) ^ CIRCLE_R_SHIFT (y, 3); } inline gboolean coords_equal (const Coords *a, const Coords *b) { return G_UNLIKELY (fabs (a->x - b->x) < COORDS_DELTA && fabs (a->y - b->y) < COORDS_DELTA); } inline gint coords_compare (const Coords *a, const Coords *b) { if (coords_equal (a, b)) return 0; if ((a->x > b->x) || (fabs (a->x - b->x) < (COORDS_DELTA * COORDS_DELTA) && (a->y > b->y))) return -1; return +1; } oregano-0.84.41/src/splash.c0000644000175000017500000000601213413640652014562 0ustar rubenruben/* * splash.c * * * Authors: * Ricardo Markiewicz * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "splash.h" #include "dialogs.h" #include "errors.h" 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 (GError **error) { GtkBuilder *gui; Splash *sp; GtkEventBox *event; if ((gui = gtk_builder_new ()) == NULL) { g_set_error_literal (error, OREGANO_ERROR, OREGANO_UI_ERROR_NO_BUILDER, _ ("Failed to spawn builder")); return NULL; } gtk_builder_set_translation_domain (gui, NULL); if (gtk_builder_add_from_file (gui, OREGANO_UIDIR "/splash.ui", error) <= 0) { return NULL; } sp = g_new0 (Splash, 1); sp->can_destroy = FALSE; sp->win = GTK_WINDOW (gtk_builder_get_object (gui, "splash")); gtk_window_set_keep_above (sp->win, TRUE); sp->lbl = GTK_LABEL (gtk_builder_get_object (gui, "label")); sp->progress = GTK_WIDGET (gtk_builder_get_object (gui, "pbar")); event = GTK_EVENT_BOX (gtk_builder_get_object (gui, "event")); sp->event = GTK_WIDGET (event); 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) { 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); } oregano-0.84.41/src/gplot/0000755000175000017500000000000013413640652014252 5ustar rubenrubenoregano-0.84.41/src/gplot/gplotlines.h0000644000175000017500000000261413413640652016606 0ustar rubenruben/* * gplotlines.h * * Authors: * Ricardo Markiewicz * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef _GPLOT_LINES_H_ #define _GPLOT_LINES_H_ #include "gplotfunction.h" typedef enum { FUNCTIONAL_CURVE = 0, FREQUENCY_PULSE } GraphicType; #define GPLOT_LINES(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_GPLOT_LINES, GPlotLines) #define IS_GPLOT_LINES(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, TYPE_GPLOT_LINES) GPlotFunction *g_plot_lines_new (gdouble *x, gdouble *y, guint points); #endif oregano-0.84.41/src/gplot/gplotlines.c0000644000175000017500000002367213413640652016610 0ustar rubenruben/* * gplotlines.c * * Authors: * Ricardo Markiewicz * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include "gplot-internal.h" #include "gplotlines.h" 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_function_get_type (); 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_GDKRGBA, ARG_VISIBLE, ARG_GRAPH_TYPE, ARG_SHIFT }; struct _GPlotLinesPriv { gboolean bbox_valid; GPlotFunctionBBox bbox; gdouble *x; gdouble *y; gdouble points; gboolean visible; // Line width gdouble width; // Line Color gchar *color_string; GdkRGBA color; // Graphic type GraphicType graphic_type; // Shift for pulse drawings gdouble shift; }; #define TYPE_GPLOT_LINES (g_plot_lines_get_type ()) #define TYPE_GPLOT_GRAPHIC_TYPE (g_plot_lines_graphic_get_type ()) #include "debug.h" G_DEFINE_TYPE_WITH_CODE (GPlotLines, g_plot_lines, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TYPE_GPLOT_FUNCTION, g_plot_lines_function_init)); GType g_plot_lines_graphic_get_type (void) { static GType etype = 0; if (etype == 0) { static const GEnumValue values[] = {{FUNCTIONAL_CURVE, "FUNCTIONAL_CURVE", "funct-curve"}, {FREQUENCY_PULSE, "FREQUENCY_PULSE", "freq-pulse"}, {0, NULL, NULL}}; etype = g_enum_register_static ("GraphicType", values); } return etype; } 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_GDKRGBA, g_param_spec_pointer ("color-rgb", "GPlotLines::color-rgb", "the GdkRGBA of the line", G_PARAM_READWRITE)); g_object_class_install_property ( object_class, ARG_GRAPH_TYPE, g_param_spec_enum ("graph-type", "GPlotLines::graph-type", "the type of graphic", TYPE_GPLOT_GRAPHIC_TYPE, FUNCTIONAL_CURVE, G_PARAM_READWRITE)); g_object_class_install_property (object_class, ARG_SHIFT, g_param_spec_double ("shift", "GPlotLines::shift", "the shift for multiple pulses", 0.0, 15e+10, 50.0, 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(GdkRGBA)); } 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_rgba_parse (&plot->priv->color, plot->priv->color_string); break; case ARG_GRAPH_TYPE: plot->priv->graphic_type = g_value_get_enum (value); break; case ARG_SHIFT: plot->priv->shift = g_value_get_double (value); 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; case ARG_GRAPH_TYPE: g_value_set_enum (value, plot->priv->graphic_type); break; case ARG_SHIFT: g_value_set_double (value, plot->priv->shift); 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; } // This procedure is in charge to link points with ligne. // Modified to only draw spectral ray for Fourier analysis. static void g_plot_lines_draw (GPlotFunction *f, cairo_t *cr, GPlotFunctionBBox *bbox) { gboolean first_point = TRUE; guint point; gdouble *x, x1; gdouble *y, y1; 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; if (plot->priv->graphic_type == FUNCTIONAL_CURVE) { 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; } } } } else { for (point = 1; point < points; point++) { x1 = x[point - 1] + plot->priv->shift; y1 = 0; NG_DEBUG ("gplotlines: x= %lf\ty= %lf\n", x1, y1); cairo_line_to (cr, x1, y1); cairo_move_to (cr, x[point] + plot->priv->shift, y[point]); } } if (point < points) { cairo_line_to (cr, x[point], y[point]); } cairo_save (cr); cairo_set_source_rgb (cr, plot->priv->color.red, plot->priv->color.green, plot->priv->color.blue); cairo_identity_matrix (cr); cairo_set_line_width (cr, plot->priv->width); cairo_stroke (cr); cairo_restore (cr); } oregano-0.84.41/src/gplot/gplotfunction.c0000644000175000017500000000455313413640652017320 0ustar rubenruben/* * gplotfunction.c * * Authors: * Ricardo Markiewicz * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "gplot-internal.h" #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); } oregano-0.84.41/src/gplot/gplot-internal.h0000644000175000017500000000406513413640652017367 0ustar rubenruben/* * gplot-internal.h * * Authors: * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef _GPLOT_INTERNAL_H_ #define _GPLOT_INTERNAL_H_ #include #include #include #include "gplot.h" #include "gplotfunction.h" // Internal definitions associated to gplot.h typedef struct _GPlotClass GPlotClass; typedef struct _GPlotPriv GPlotPriv; struct _GPlot { GtkLayout parent; GPlotPriv *priv; }; struct _GPlotClass { GtkLayoutClass parent_class; }; // Internal definitions associated to gplotfunction.h #define TYPE_GPLOT_FUNCTION (g_plot_function_get_type ()) #define GPLOT_FUNCTION_CLASS(klass) \ G_TYPE_CHECK_CLASS_CAST (klass, TYPE_GPLOT_FUNCTION, GPlotFunctionClass) #define GPLOT_FUNCTION_GET_CLASS(inst) \ (G_TYPE_INSTANCE_GET_INTERFACE ((inst), TYPE_GPLOT_FUNCTION, GPlotFunctionClass)) typedef struct _GPlotFunctionClass GPlotFunctionClass; struct _GPlotFunctionClass { GTypeInterface parent; void (*draw)(GPlotFunction *, cairo_t *, GPlotFunctionBBox *); void (*get_bbox)(GPlotFunction *, GPlotFunctionBBox *); }; #endif oregano-0.84.41/src/gplot/gplot.h0000644000175000017500000000341013413640652015546 0ustar rubenruben/* * gplot.h * * Authors: * Ricardo Markiewicz * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef _GPLOT_H_ #define _GPLOT_H_ #include #include #include #define GPLOT(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_GPLOT, GPlot) #define IS_GPLOT(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, TYPE_GPLOT) #define TYPE_GPLOT (g_plot_get_type ()) typedef struct _GPlot GPlot; typedef struct _GPlotFunction { } GPlotFunction; enum { GPLOT_ZOOM_INOUT, GPLOT_ZOOM_REGION }; 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 oregano-0.84.41/src/gplot/gplot.c0000644000175000017500000005320213413640652015545 0ustar rubenruben/* * gplot.c * * Authors: * Ricardo Markiewicz * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include "gplot-internal.h" #include "gplot.h" #define BORDER_SIZE 50 static void g_plot_class_init (GPlotClass *class); static void g_plot_init (GPlot *plot); static gboolean g_plot_draw (GtkWidget *widget, cairo_t *cr); 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 press_x; gdouble press_y; // Window->Viewport * Transformation Matrix cairo_matrix_t matrix; gboolean window_valid; GPlotFunctionBBox window_bbox; GPlotFunctionBBox viewport_bbox; GPlotFunctionBBox rubberband; #if GTK_CHECK_VERSION(3,22,0) GdkDrawingContext *gdk_ctx; cairo_region_t *region; #endif }; 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->draw = g_plot_draw; object_class->dispose = g_plot_dispose; object_class->finalize = g_plot_finalize; } static cairo_t *g_plot_create_cairo (GPlot *p) { GdkWindow *window; cairo_t *cr; window = gtk_layout_get_bin_window (GTK_LAYOUT (p)); #if GTK_CHECK_VERSION(3,22,0) p->priv->region = gdk_window_get_clip_region (window); p->priv->gdk_ctx = gdk_window_begin_draw_frame (window, p->priv->region); cr = gdk_drawing_context_get_cairo_context (p->priv->gdk_ctx); #else cr = gdk_cairo_create (window); #endif return cr; } static void g_plot_finalize (GObject *object) { GPlot *p = GPLOT (object); g_free (p->priv->xlabel); 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_list_free_full (lst, g_object_unref); 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 ("%.*f", MAX(0, (int)(2 - floor(log10(fabs((max - min)/divisor))))), 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 - 6; 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); if (!vertical && extents.width > s - 5) { cairo_save(cr); cairo_rotate(cr, M_PI/10); } cairo_show_text (cr, label); if (!vertical && extents.width > s - 5) { cairo_restore(cr); } 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 gboolean g_plot_draw (GtkWidget *widget, cairo_t *cr) { 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; guint width; guint height; guint graph_width; guint graph_height; GPlotFunction *f; GList *lst; gdouble aX, bX, aY, bY; gint div; cairo_text_extents_t extents; plot = GPLOT (widget); priv = plot->priv; if (!priv->window_valid) { g_plot_update_bbox (plot); } width = gtk_widget_get_allocated_width (widget); height = gtk_widget_get_allocated_height (widget); graph_width = width - priv->left_border - priv->right_border; graph_height = height - priv->top_border - priv->bottom_border; // 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); priv->viewport_bbox.xmax = width - priv->right_border; priv->viewport_bbox.xmin = priv->left_border; priv->viewport_bbox.ymax = height - priv->bottom_border; priv->viewport_bbox.ymin = priv->top_border; // 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); //plot functions 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_transform(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); //plot red axis cairo_save (cr); { cairo_rectangle (cr, priv->left_border, priv->right_border, graph_width, graph_height); cairo_clip (cr); //plot x axis cairo_save (cr); { cairo_transform(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); //plot y axis cairo_save (cr); { cairo_transform(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); //plot axis ticks cairo_save (cr); 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 x Label 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); } //axis y label 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); } //plot rubberband (zoom-in-rectangle) 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_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); } g_list_free_full (lst, g_object_unref); 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) { #if GTK_CHECK_VERSION (3,16,0) GdkDisplay *display; display = gtk_widget_get_display (w); #endif 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; #if GTK_CHECK_VERSION (3,16,0) GdkCursor *cursor = gdk_cursor_new_for_display (display, GDK_FLEUR); #else GdkCursor *cursor = gdk_cursor_new (GDK_FLEUR); #endif gdk_window_set_cursor (gtk_widget_get_window (w), cursor); gdk_flush (); dx = p->priv->press_x - e->x; dy = p->priv->press_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->press_x = e->x; p->priv->press_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)) { #if GTK_CHECK_VERSION (3,16,0) GdkCursor *cursor = gdk_cursor_new_for_display (display, GDK_CROSS); #else GdkCursor *cursor = gdk_cursor_new (GDK_CROSS); #endif gdk_window_set_cursor (gtk_widget_get_window (w), cursor); gdk_flush (); p->priv->rubberband.xmin = MIN(e->x, p->priv->press_x); p->priv->rubberband.xmax = MAX(e->x, p->priv->press_x); p->priv->rubberband.ymin = MIN(e->y, p->priv->press_y); p->priv->rubberband.ymax = MAX(e->y, p->priv->press_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 : Check 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->press_x = e->x; p->priv->press_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->press_x = e->x; p->priv->press_y = e->y; } } } return TRUE; } static gboolean g_plot_button_release_cb (GtkWidget *w, GdkEventButton *e, GPlot *p) { gdouble zoom = 0.0; 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 (gtk_widget_get_window (w), NULL); gdk_flush (); } break; case GPLOT_ZOOM_REGION: if ((e->button == 1) && (p->priv->action == ACTION_REGION)) { gdk_window_set_cursor (gtk_widget_get_window (w), NULL); gdk_flush (); if (e->x < p->priv->press_x || e->y < p->priv->press_y) { g_plot_reset_zoom(p); } else { 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 (gtk_widget_get_window (w), 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; } g_list_free_full (lst, g_object_unref); 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); #if GTK_CHECK_VERSION(3,22,0) gdk_window_end_draw_frame (gtk_layout_get_bin_window (GTK_LAYOUT (p)) , p->priv->gdk_ctx); cairo_region_destroy (p->priv->region); #else cairo_destroy (cr); #endif 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); #if GTK_CHECK_VERSION(3,22,0) gdk_window_end_draw_frame (gtk_layout_get_bin_window (GTK_LAYOUT (p)) , p->priv->gdk_ctx); cairo_region_destroy (p->priv->region); #else cairo_destroy (cr); #endif 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; g_list_free (lst); } 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); #if GTK_CHECK_VERSION(3,22,0) gdk_window_end_draw_frame (gtk_layout_get_bin_window (GTK_LAYOUT (plot)) , plot->priv->gdk_ctx); cairo_region_destroy (plot->priv->region); #else cairo_destroy (cr); #endif } 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; } oregano-0.84.41/src/gplot/gplotfunction.h0000644000175000017500000000322013413640652017313 0ustar rubenruben/* * gplotfunction.h * * Authors: * Ricardo Markiewicz * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2010 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef _GPLOT_FUNCTION_H_ #define _GPLOT_FUNCTION_H_ #include #define GPLOT_FUNCTION(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_GPLOT_FUNCTION, GPlotFunction) #define IS_GPLOT_FUNCTION(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, TYPE_GPLOT_FUNCTION) typedef struct _GPlotFunctionBBox { gdouble xmin; gdouble ymin; gdouble xmax; gdouble ymax; } GPlotFunctionBBox; 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 oregano-0.84.41/src/part-browser.c0000644000175000017500000004333013413640652015723 0ustar rubenruben/* * part-browser.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include "oregano.h" #include "load-library.h" #include "schematic.h" #include "schematic-view.h" #include "part-browser.h" #include "part-item.h" #include "dialogs.h" #include "coords.h" #include "sheet.h" #include "debug.h" typedef struct _Browser Browser; struct _Browser { SchematicView *schematic_view; GtkWidget *viewport; GtkWidget *list; GtkWidget *canvas; GooCanvasText *description; GooCanvasGroup *preview; Library *library; 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, GtkBuilder *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; // Auxiliary parameters shall keep their number in upcase char *comp1, *comp2; Browser *br = (Browser *)data; s = gtk_entry_get_text (GTK_ENTRY (br->filter_entry)); // Without filter, the part is shown 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; Coords 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); sheet_connect_part_item_to_floating_group (sheet, (gpointer)br->schematic_view); sheet_select_all (sheet, FALSE); sheet_clear_ghosts (sheet); sheet_add_ghost_item (sheet, ITEM_DATA (part)); } 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 text_width; gdouble width, height; GooCanvasBounds bounds; gdouble scale; cairo_matrix_t transf, affine; gchar *part_name; char *description; 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_IS_TREE_SELECTION (selection)) return; 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 is already a preview part-item, destroy its group and create a // new one. if (br->preview != NULL) { goo_canvas_item_remove (GOO_CANVAS_ITEM (br->preview)); } br->preview = GOO_CANVAS_GROUP ( goo_canvas_group_new (goo_canvas_get_root_item (GOO_CANVAS (br->canvas)), NULL)); goo_canvas_set_bounds (GOO_CANVAS (br->canvas), 0.0, 0.0, 250.0, 110.0); g_object_get (br->preview, "width", &width, "height", &height, NULL); if (!library_part) return; part_item_create_canvas_items_for_preview (br->preview, library_part); // Unconstraint the canvas width & height to adjust for the part description g_object_set (br->preview, "width", -1.0, "height", -1.0, NULL); // Get the coordonates */ goo_canvas_item_get_bounds (GOO_CANVAS_ITEM (br->preview), &bounds); x1 = bounds.x1; x2 = bounds.x2; y1 = bounds.y1; y2 = bounds.y2; // Translate in such a way that the canvas centre remains in (0, 0) cairo_matrix_init_translate (&transf, -(x2 + x1) / 2.0f + PREVIEW_WIDTH / 2, -(y2 + y1) / 2.0f + PREVIEW_HEIGHT / 2); // 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; cairo_matrix_init_scale (&affine, scale, scale); cairo_matrix_multiply (&transf, &transf, &affine); // Apply the transformation goo_canvas_item_set_transform (GOO_CANVAS_ITEM (br->preview), &transf); // Compute the motion to centre the Preview widget new_x = 100 + (PREVIEW_WIDTH - x1 - x2) / 2; new_y = (PREVIEW_HEIGHT - y1 - y2) / 2 - 10; // Apply the transformation if (scale > 5.0) scale = 3.0; goo_canvas_item_set_simple_transform (GOO_CANVAS_ITEM (br->preview), new_x, new_y, scale, 0.0); description = g_strdup (library_part->description); wrap_string (description, 20); g_object_set (br->description, "text", description, NULL); g_free (description); g_object_get (G_OBJECT (br->description), "width", &text_width, NULL); goo_canvas_item_set_simple_transform (GOO_CANVAS_ITEM (br->description), 50.0, -20.0, 1.0, 0.0); 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; 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_visibility (SchematicView *schematic_view) { Browser *browser = schematic_view_get_browser (schematic_view); if (browser == NULL) { // part_browser_create (schematic_view); g_warning ("This should never happen. No Part Browser."); } else { browser->hidden = !(browser->hidden); if (browser->hidden) { gtk_widget_hide (browser->viewport); } else { gtk_widget_show_all (browser->viewport); } } } void part_browser_dnd (GtkSelectionData *selection_data, int x, int y) { LibraryPart *library_part; Coords pos; DndData *data; Sheet *sheet; Part *part; data = (DndData *)(gtk_selection_data_get_data (selection_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); sheet_connect_part_item_to_floating_group (sheet, (gpointer)data->schematic_view); sheet_select_all (sheet, FALSE); sheet_clear_ghosts (schematic_view_get_sheet (data->schematic_view)); sheet_add_ghost_item (sheet, ITEM_DATA (part)); } 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, gtk_selection_data_get_target (selection_data), 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; GtkBuilder *builder; GError *e = NULL; GtkWidget *w, *view; GtkCellRenderer *cell_text; GtkTreeViewColumn *cell_column; 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; if ((builder = gtk_builder_new ()) == NULL) { oregano_error (_ ("Could not create part browser")); return NULL; } else gtk_builder_set_translation_domain (builder, NULL); br = g_new0 (Browser, 1); br->preview = NULL; br->schematic_view = schematic_view; br->hidden = FALSE; schematic_view_set_browser (schematic_view, br); if (gtk_builder_add_from_file (builder, OREGANO_UIDIR "/part-browser.ui", &e) <= 0) { oregano_error_with_title (_ ("Could not create part browser"), e->message); g_error_free (e); return NULL; } view = GTK_WIDGET (gtk_builder_get_object (builder, "viewport1")); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (view), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (view), 115); w = goo_canvas_new (); gtk_container_add (GTK_CONTAINER (view), GTK_WIDGET (w)); br->canvas = w; g_signal_connect (w, "realize", (GCallback)preview_realized, br); // gtk_widget_set_size_request (w, PREVIEW_WIDTH, // PREVIEW_HEIGHT + PREVIEW_TEXT_HEIGHT); goo_canvas_set_bounds (GOO_CANVAS (w), 0, 0, PREVIEW_WIDTH, (PREVIEW_HEIGHT + PREVIEW_TEXT_HEIGHT)); br->description = GOO_CANVAS_TEXT (goo_canvas_text_new ( goo_canvas_get_root_item (GOO_CANVAS (br->canvas)), "", 0.0, PREVIEW_HEIGHT - 9.0, 100.0, GOO_CANVAS_ANCHOR_NORTH_WEST, "font", "sans 9", NULL)); // Set up dnd. g_signal_connect (G_OBJECT (br->canvas), "drag_data_get", G_CALLBACK (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 (gtk_builder_get_object (builder, "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 = GTK_WIDGET (gtk_builder_get_object (builder, "place_button")); g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (place_cmd), br); // Update the libraries option menu br->library = g_list_nth_data (oregano.libraries, 0); part_browser_setup_libs (br, builder); // Parts list. w = GTK_WIDGET (gtk_builder_get_object (builder, "parts_list")); br->list = w; // Create the List Model 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", G_CALLBACK (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 = GTK_WIDGET (gtk_builder_get_object (builder, "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); gtk_widget_unparent (br->viewport); return br->viewport; } static void part_browser_setup_libs (Browser *br, GtkBuilder *builder) { GtkWidget *combo_box, *w; GList *libs; gboolean first = FALSE; w = GTK_WIDGET (gtk_builder_get_object (builder, "library_optionmenu")); gtk_widget_destroy (w); w = GTK_WIDGET (gtk_builder_get_object (builder, "grid1")); combo_box = gtk_combo_box_text_new (); gtk_grid_attach (GTK_GRID (w), combo_box, 1, 0, 1, 1); libs = oregano.libraries; while (libs) { gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (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) { GtkTreePath *path; 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); path = gtk_tree_path_new_first (); gtk_tree_view_set_cursor (GTK_TREE_VIEW (br->list), path, NULL, FALSE); gtk_tree_path_free (path); } 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); } oregano-0.84.41/src/log-view.c0000644000175000017500000000262313413640652015025 0ustar rubenruben#include "log-view.h" #define LOG_VIEW_GET_PRIVATE(object) \ (G_TYPE_INSTANCE_GET_PRIVATE ((object), TYPE_LOG_VIEW, LogViewPrivate)) struct _LogViewPrivate { char x; }; G_DEFINE_TYPE (LogView, log_view, GTK_TYPE_TREE_VIEW); static void log_view_finalize (GObject *object) { G_OBJECT_CLASS (log_view_parent_class)->finalize (object); } static void log_view_class_init (LogViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = log_view_finalize; g_type_class_add_private (object_class, sizeof(LogViewPrivate)); } static void log_view_init (LogView *self) { self->priv = LOG_VIEW_GET_PRIVATE (self); } LogView *log_view_new () { LogView *self = g_object_new (TYPE_LOG_VIEW, NULL); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (self), TRUE); GtkTreeViewColumn *col1, *col2; GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); g_object_ref (renderer); col1 = gtk_tree_view_column_new_with_attributes ("Source", renderer, "text", 0, NULL); col2 = gtk_tree_view_column_new_with_attributes ("Message", renderer, "text", 1, NULL); gtk_tree_view_insert_column (GTK_TREE_VIEW (self), col1, 0); gtk_tree_view_insert_column (GTK_TREE_VIEW (self), col2, 1); return self; } void log_view_set_store (LogView *lv, Log *ls) { gtk_tree_view_set_model (GTK_TREE_VIEW (lv), GTK_TREE_MODEL (ls)); } oregano-0.84.41/src/part-browser.h0000644000175000017500000000301613413640652015725 0ustar rubenruben/* * part-browser.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __PART_BROWSER_H #define __PART_BROWSER_H #include #include "schematic.h" void part_browser_toggle_visibility (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 oregano-0.84.41/src/schematic-view-menu.h0000644000175000017500000003332413413640652017155 0ustar rubenruben/* * schematic-view-menu.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef _SCHEMATIC_VIEW_MENU_ #define _SCHEMATIC_VIEW_MENU_ #include "sim-settings-gui.h" // TODO: Create only two entries instead of four for stretching the schematic horizontally // or vertically (needs proper icons not provided by Gtk). 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"), "N", N_ ("Create a new schematic"), G_CALLBACK (new_cmd)}, {"Open", GTK_STOCK_OPEN, N_ ("_Open"), "O", N_ ("Open a schematic"), G_CALLBACK (open_cmd)}, {"DisplayRecentFiles", NULL, N_ ("_Recent Files"), NULL, NULL, NULL}, {"Save", GTK_STOCK_SAVE, N_ ("_Save"), "S", N_ ("Save a schematic"), G_CALLBACK (save_cmd)}, {"SaveAs", GTK_STOCK_SAVE_AS, N_ ("Save _As..."), "S", N_ ("Save a schematic with other name"), G_CALLBACK (save_as_cmd)}, {"PrintProperties", NULL, N_ ("Print 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"), "W", N_ ("Close the current schematic"), G_CALLBACK (close_cmd)}, {"Quit", GTK_STOCK_QUIT, N_ ("_Quit"), "Q", N_ ("Close all schematics"), G_CALLBACK (quit_cmd)}, {"Cut", GTK_STOCK_CUT, N_ ("C_ut"), "X", NULL, G_CALLBACK (cut_cmd)}, {"Copy", GTK_STOCK_COPY, N_ ("_Copy"), "C", NULL, G_CALLBACK (copy_cmd)}, {"Paste", GTK_STOCK_PASTE, N_ ("_Paste"), "V", NULL, G_CALLBACK (paste_cmd)}, {"Delete", GTK_STOCK_DELETE, N_ ("_Delete"), "D", N_ ("Delete the selection"), G_CALLBACK (delete_cmd)}, {"Rotate", STOCK_PIXMAP_ROTATE, N_ ("_Rotate"), "R", N_ ("Rotate the selection clockwise"), G_CALLBACK (rotate_cmd)}, {"FlipH", NULL, N_ ("Flip _horizontally"), "F", N_ ("Flip the selection horizontally"), G_CALLBACK (flip_horizontal_cmd)}, {"FlipV", NULL, N_ ("Flip _vertically"), "F", N_ ("Flip the selection vertically"), G_CALLBACK (flip_vertical_cmd)}, {"SelectAll", NULL, N_ ("Select _all"), "A", N_ ("Select all objects on the sheet"), G_CALLBACK (select_all_cmd)}, {"SelectNone", NULL, N_ ("Select _none"), "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 (schematic_view_simulate_cmd)}, {"Netlist", NULL, N_ ("_Generate netlist"), NULL, N_ ("Generate a netlist"), G_CALLBACK (netlist_cmd)}, {"SmartSearch", NULL, N_ ("Smart Search"), NULL, N_ ("Search a part within all the librarys"), G_CALLBACK (smartsearch_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)}, {"UserManual", NULL, N_ ("User's Manual"), NULL, N_ ("Oregano User's Manual"), G_CALLBACK (show_help)}, {"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)}, {"StretchLeft", GTK_STOCK_GO_BACK, N_ ("Stretch to the left"), NULL, N_ ("Stretch to the left"), G_CALLBACK (stretch_horizontal_cmd)}, {"StretchRight", GTK_STOCK_GO_FORWARD, N_ ("Stretch to the right"), NULL, N_ ("Stretch to the right"), G_CALLBACK (stretch_horizontal_cmd)}, {"StretchTop", GTK_STOCK_GO_UP, N_ ("Stretch the top"), NULL, N_ ("Stretch the top"), G_CALLBACK (stretch_vertical_cmd)}, {"StretchBottom", GTK_STOCK_GO_DOWN, N_ ("Stretch the bottom"), NULL, N_ ("Stretch the bottom"), G_CALLBACK (stretch_vertical_cmd)}, }; static GtkToggleActionEntry toggle_entries[] = { {"Labels", NULL, N_ ("_Node labels"), NULL, N_ ("Toggle node label visibility"), G_CALLBACK (show_label_cmd), FALSE}, {"Parts", STOCK_PIXMAP_PART_BROWSER, N_ ("_Parts"), NULL, N_ ("Toggle part browser visibility"), G_CALLBACK (part_browser_cmd), TRUE}, {"Grid", STOCK_PIXMAP_GRID, N_ ("_Grid"), NULL, N_ ("Toggle grid visibility"), G_CALLBACK (grid_toggle_snap_cmd), TRUE}, {"LogView", GTK_STOCK_DIALOG_WARNING, N_ ("LogView"), NULL, N_ ("Toggle log view visibility"), G_CALLBACK (log_toggle_visibility_cmd), TRUE}, }; static GtkRadioActionEntry zoom_entries[] = { {"Zoom50", NULL, "50%", NULL, N_ ("Set the zoom to 50%"), 0}, {"Zoom75", NULL, "75%", NULL, N_ ("Set the zoom to 75%"), 1}, {"Zoom100", NULL, "100%", "1", N_ ("Set the zoom to 100%"), 2}, {"Zoom125", NULL, "125%", NULL, N_ ("Set the zoom to 125%"), 3}, {"Zoom150", NULL, "150%", NULL, N_ ("Set the zoom 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 = "" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ""; #endif oregano-0.84.41/src/oregano-utils.h0000644000175000017500000000424113413640652016067 0ustar rubenruben/* * oregano-utils.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __OREGANO_UTILS_H #define __OREGANO_UTILS_H gdouble oregano_strtod (const gchar *str, const gchar *unit); #define DEGSANITY(x) \ do { \ while (rotation < 0) \ x += 360; \ x %= 360; \ } while (0) #define DEG2RAD(x) ((double)x * M_PI / 180.) #define RAD2DEG(x) ((double)x * 180. / M_PI) #define COORDS_AVERAGE(tl, br) \ { \ (tl.x + br.x) / 2., (tl.y + br.y) / 2. \ } #endif oregano-0.84.41/src/cursors.c0000644000175000017500000000352313413640652014774 0ustar rubenruben/* * cursors.c * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "cursors.h" #include "debug.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; GdkDisplay *display; display = gdk_display_get_default (); for (i = 0; oregano_cursors[i].type != -1; i++) { oregano_cursors[i].cursor = gdk_cursor_new_for_display (display, oregano_cursors[i].type); } } void cursors_shutdown (void) { int i; for (i = 0; oregano_cursors[i].type != -1; i++) { if (oregano_cursors[i].cursor) g_object_unref (oregano_cursors[i].cursor); } } void cursor_set_widget (GtkWidget *w, int name) { if (gtk_widget_get_window (w)) gdk_window_set_cursor (gtk_widget_get_window (w), oregano_cursors[name].cursor); } oregano-0.84.41/src/cursors.h0000644000175000017500000000277413413640652015010 0ustar rubenruben/* * cursors.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __CURSORS_H #define __CURSORS_H #include #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 oregano-0.84.41/src/sim-settings-gui.h0000644000175000017500000000577013413640652016517 0ustar rubenruben/* * sim-settings-gui.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef SIM_SETTINGS_GUI_H_ #define SIM_SETTINGS_GUI_H_ typedef struct _SimSettingsGui SimSettingsGui; #include "model/schematic.h" #include "sim-settings.h" #include "schematic-view.h" struct _SimSettingsGui { SimSettings *sim_settings; GtkWidget *pbox; GtkNotebook *notebook; GtkWidget *w_main; // Transient analysis. GtkWidget *w_trans_enable, *w_trans_start, *w_trans_stop, *w_trans_step, *w_trans_step_enable, *w_trans_init_cond, *w_trans_analyze_all, *w_trans_frame; // AC GtkWidget *w_ac_enable, *w_ac_vout, *w_ac_type, *w_ac_npoints, *w_ac_start, *w_ac_stop, *w_ac_frame; // DC GtkWidget *w_dc_enable, *w_dc_vin, *w_dc_vout, *w_dc_start, *w_dc_stop, *w_dc_step, *w_dcsweep_frame; // Fourier analysis. Replace with something sane later. GtkWidget *w_four_enable, *w_four_freq, *w_four_vout, *w_four_combobox, *w_four_add, *w_four_rem, *w_fourier_frame; // Noise GtkWidget *w_noise_enable, *w_noise_vin, *w_noise_vout, *w_noise_type, *w_noise_npoints, *w_noise_start, *w_noise_stop, *w_noise_frame; GtkEntry *w_opt_value; GtkTreeView *w_opt_list; }; SimSettingsGui *sim_settings_gui_new(); void sim_settings_gui_finalize(SimSettingsGui *gui); void sim_settings_show (GtkWidget *widget, SchematicView *sm); gint get_voltmeters_list (GList **voltmeters, Schematic *sm, GError *e, gboolean with_type); gint get_voltage_sources_list (GList **sources, Schematic *sm, GError *e, gboolean ac_only); #endif /* SIM_SETTINGS_GUI_H_ */ oregano-0.84.41/src/oregano-config.c0000644000175000017500000001014713413640652016171 0ustar rubenruben/* * oregano-config.c * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include "oregano.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) { oregano.settings = g_settings_new ("io.ahoi.oregano"); oregano.engine = g_settings_get_int (oregano.settings, "engine"); oregano.compress_files = g_settings_get_boolean (oregano.settings, "compress-files"); oregano.show_log = g_settings_get_boolean (oregano.settings, "show-log"); oregano.show_splash = g_settings_get_boolean (oregano.settings, "show-splash"); // 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) { g_settings_set_int (oregano.settings, "engine", oregano.engine); g_settings_set_boolean (oregano.settings, "compress-files", oregano.compress_files); g_settings_set_boolean (oregano.settings, "show-log", oregano.show_log); g_settings_set_boolean (oregano.settings, "show-splash", oregano.show_splash); } 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); } 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 library or Oregano " "and try again.")); oregano_error_with_title (title, desc); g_free (title); g_free (desc); } oregano-0.84.41/src/stock.c0000644000175000017500000000576213413640652014426 0ustar rubenruben/* * stock.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ /* * Stock icon code, stolen from: * Eye of Gnome image viewer - stock icons * * Copyright (C) 1999 The Free Software Foundation * * Author: Federico Mena-Quintero */ #include #include #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); } oregano-0.84.41/src/stock/0000755000175000017500000000000013413640652014250 5ustar rubenrubenoregano-0.84.41/src/stock/voltmeter.xpm0000644000175000017500000000140413413640652017016 0ustar rubenruben/* XPM */ static char * voltmeter_xpm[] = { "24 24 3 1", " c None", ". c #000000", "+ c #5373E8", " ", " ", " ", " ", " . . ", " + . . ", " + . . ", " + . . ", " + . . ", " + . ", " + ", " + ", " . ", " ... ", " +++.....+++++ ", " ... ", " . ", " + ", " + ", " + ", " + ", " ", " ", " "}; oregano-0.84.41/src/stock/zoom_region.xpm0000644000175000017500000001067313413640652017334 0ustar rubenruben/* 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. ", " ", " "}; oregano-0.84.41/src/stock/text.xpm0000644000175000017500000000137713413640652015772 0ustar rubenruben/* XPM */ static char * text_xpm[] = { "24 24 3 1", " c None", ". c #000000", "+ c #777777", " ", " ", " ", " ", " ", " ........... ", " ..++...++..+ ", " .++ ...+ .+ ", " + ...+ + ", " +..+ ", " +..+ ", " +..+ ", " ...+ ", " ..+ ", " +..+ ", " +..+ ", " ...+ ", " ..... ", " +++++ ", " ", " ", " ", " ", " "}; oregano-0.84.41/src/stock/arrow.xpm0000644000175000017500000000237713413640652016141 0ustar rubenruben/* 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]. ", " ... ", " ", " ", " "}; oregano-0.84.41/src/stock/zoom_pan.xpm0000644000175000017500000001211013413640652016613 0ustar rubenruben/* 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+ ", " . "}; oregano-0.84.41/src/stock/part-browser.xpm0000644000175000017500000002047413413640652017434 0ustar rubenruben/* 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@=# ", " ]#^#)#/# ", " ]#(#_# ", " ", " "}; oregano-0.84.41/src/stock/zoom_out.xpm0000644000175000017500000000153513413640652016655 0ustar rubenruben/* 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", " ", " ", " ", " ... ", " ..+@+.. ", " .#@$$$@#. ", " .%$$$$$$+&. ", " .@$$$$$$@#. ", " .+$$$$$$$@#&. ", " .@$.......+&. ", " .+$@####%&+*. ", " .@$$$@+#$&. ", " .#+@@+#$%*. ", " ..%#+#@%*. ", " .#...&&*.. ", " ..#. ... ", " .$.. ", " .$... ", " .$... ", " .#.. ", " .. ", " ", " ", " "}; oregano-0.84.41/src/stock/plot.xcf0000644000175000017500000000522013413640652015727 0ustar rubenrubengimp xcf fileBBDPath 8@@@@A Background copy     cwJ,,,,,,,,f,,,,f, ,,,,,,f ,,f,,,,,,,,,,=,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YJrrrrrrrrrrrrr rrrrrr rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrYJddddddddddddd dddddd ddddddddddddrdddddddddddddddddddddddddddddddYh.  Ulkw  New Layer#2     FZj [RRRR R[     [XL  "կZ Background     2&_=s6*** &#%++++)&1UgglggggggkgngygmgggeggmgmgggggggUgggg iggggggggrgghggg g?gggjioooonrUggg1U\'r)gaaaU  Zf?\]cccc`fUJkpn׺<S pJ New Layer      \ p @@@@oregano-0.84.41/src/stock/wire.xpm0000644000175000017500000001072013413640652015744 0ustar rubenruben/* 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. "}; oregano-0.84.41/src/stock/zoom_in.xpm0000644000175000017500000000153413413640652016453 0ustar rubenruben/* 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", " ", " ", " ", " ... ", " ..+@+.. ", " .#@$$$@#. ", " .%$$$.#$+&. ", " .@$$$.#$@#. ", " .+$$$$.+$$#&. ", " .@$.......@&. ", " .+$##+.&%&@*. ", " .@$$$.&#$&. ", " .#+@@.&$%*. ", " ..%#+#@%*. ", " .#...&&*.. ", " ..#. ... ", " .$.. ", " .$... ", " .$... ", " .#.. ", " .. ", " ", " ", " "}; oregano-0.84.41/src/stock/grid.xpm0000644000175000017500000000220613413640652015723 0ustar rubenruben/* 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", " ", " ", " ", " ................. ", " .+@@@#$$@@@%@@@&. ", " .@*************=. ", " .@***-***;*-***>. ", " .,**-'-***-'-**). ", " .@***-*****-***-. ", " .@*************-. ", " .@***-*****-***-. ", " .,**-'-***-'-**!. ", " .@***~*****-*{*-. ", " .@*************>. ", " .@***-****+-***-. ", " .,**-]-***-^-**/. ", " .@***-(**;*-***>. ", " .@*****{{******-. ", " .+__:<-----[>-}|. ", " ................. ", " ", " ", " ", " "}; oregano-0.84.41/src/stock/grid.xcf0000644000175000017500000000766613413640652015716 0ustar rubenrubengimp xcf fileBBg New Layer#2     +;HdHHdHHfaggfHffgfeffdgf fgfgffHgfeggafHgfgaffm gfgfeef gfgmffa gfggfg affmgfg feefgfg mffagfggfggfggfggfggfggfggfggfggfgaffm gfgfeef affmmffa feefdfg mffamfgfggefgdffeffgmeffggfHdHHdHHdHHdHHfaggfHffgfeffdgf fgfgffHgfeggafHgfgaffm gfgfeef gfgmffa gfggfg affmgfg feefgfg mffagfggfggfggfggfggfggfggfggfggfgaffm gfgfeef affmmffa feefdfg mffamfgfggefgdffeffgmeffggfHdHHdHHdHHdHHfaggfHffgfeffdgf fgfgffHgfeggafHgfgaffm gfgfeef gfgmffa gfggfg affmgfg feefgfg mffagfggfggfggfggfggfggfggfggfggfgaffm gfgfeef affmmffa feefdfg mffamfgfggefgdffeffgmeffggfHdHHdH#**FF##F**Fᶌ*ŶF**MM#*N**#***F **## **F* **** *F** ##** F**********************F **## *FF* ##+* F*FM**N*ᷩ*?F**F# Background     @oljhfdb`][YWUSQNLJHFDB??qomjhfdb`^[YWUSQOLJHFDB?sqomjhfdb`^[YWUSQOLJHFDBusqomkhfdb`^\YWUSQOMJHFDxusqomkifdb`^\ZWUSQOMJHFzxusqomkifdb`^\ZWUSQOMKH|zxvsqomkigdb`^\ZXUSQOMK~|zxvtqomkigeb`^\ZXUSQOM~|zxvtqomkigeb`^\ZXVSQO~|zxvtromkigec`^\ZXVTQ|zxvtrpmkigec`^\ZXVT|zxvtrpmkigeca^\ZXV}zxvtrpnkigeca_\ZX}{xvtrpnkigeca_\Z}{xvtrpnligeca_]}{yvtrpnljgeca_}{yvtrpnljgeca}{ywtrpnljhec}{ywurpnljhf}{ywurpnljh}{ywuspnlj}{ywusqnl}{ywusqn~{ywusq@@~|zxvtss~|zxvts}{ywu}{yw}{y}{}M!!!!!3 New Layer     @@@@oregano-0.84.41/src/stock/plot2.xcf0000644000175000017500000000474213413640652016021 0ustar rubenrubengimp xcf fileBBc Pasted Layer       0 ,:f ,,f ,,,,f,,f,,,,,,,=,,,,,,,,,,,,,,,  ggRg RkRmerRRRSRRoRR grr grrrrgrrrrrrrrrrrrrrrgrrrrrgrrrgrgg ggg    ' (d   ] dd dddddddddddddrddddddddddddddd        Color copy     c ppk jss {ttÿu~_c ppk jss {ttÿu~_c ppO Nss {ttÿu~_Jcoregano-0.84.41/src/stock/rotate.xpm0000644000175000017500000000177213413640652016303 0ustar rubenruben/* 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. ", " .. "}; oregano-0.84.41/src/stock/vclamp.xpm0000644000175000017500000000315013413640652016257 0ustar rubenruben/* 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 "}; oregano-0.84.41/src/stock/sim-settings.xpm0000644000175000017500000000743413413640652017434 0ustar rubenruben/* 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 . . ", " . . . "}; oregano-0.84.41/src/stock/part-browser.xcf0000644000175000017500000000545113413640652017406 0ustar rubenrubengimp xcf fileBBk OPasted Layer copy     -=  еКnКnnеZnЏZZnZ      еКnКnnеZnЏZZnZ      ѶјnјnnѶ\nё\\n\                    Pasted Layer       еКnКnnеZnЏZZnZ      еКnКnnеZnЏZZnZ      ѶјnјnnѶ\nё\\n\      ȵۖwЅ`]cm>19NZT0%0Vڃk52E~MD㏂     Pasted Layer     %SS&S S S S S S S S S S S S S S S SSO%ss&s s s s s s s s s s s s s s s ssO%& O%{&a66ɜ366O New Layer        @@@@oregano-0.84.41/src/stock/plot.xpm0000644000175000017500000001162413413640652015760 0ustar rubenruben/* 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.! ", " ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ", " ", " ", " "}; oregano-0.84.41/src/stock/clamp.xpm0000644000175000017500000000140013413640652016065 0ustar rubenruben/* XPM */ static char * clamp_xpm[] = { "24 24 3 1", " c None", ". c #000000", "+ c #BE5959", " ", " ", " ", " ", " ", " ", " . ", " ... ", " ... ", " ... ", " ... ", " ... ", " ... ", " . ... ", " .. ... ", " .++... ", " .+++. ", " .++++. ", " .+++++.. ", " .+++.. ", " .+... ", " .. ", " ", " "}; oregano-0.84.41/src/schematic-view.c0000644000175000017500000015141413413640652016207 0ustar rubenruben/* * schematic-view.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2013-2014 Bernhard Schuster * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include "schematic.h" #include "schematic-view.h" #include "part-browser.h" #include "stock.h" #include "oregano.h" #include "load-library.h" #include "netlist-helper.h" #include "dialogs.h" #include "cursors.h" #include "file.h" #include "settings.h" #include "errors.h" #include "engine.h" #include "netlist-editor.h" #include "sheet.h" #include "sheet-item-factory.h" #include "textbox-item.h" #include "log-view.h" #include "log.h" #include "debug.h" #define ZOOM_MIN 0.35 #define ZOOM_MAX 3 enum { CHANGED, RESET_TOOL, LAST_SIGNAL }; typedef enum { SCHEMATIC_TOOL_ARROW, SCHEMATIC_TOOL_PART, SCHEMATIC_TOOL_WIRE, SCHEMATIC_TOOL_TEXT } SchematicTool; typedef struct { GtkWidget *log_window; GtkTextView *log_text; GtkBuilder *log_gui; } LogInfo; struct _SchematicView { GObject parent; GtkWidget *toplevel; SchematicViewPriv *priv; }; struct _SchematicViewClass { GObjectClass parent_class; // Signals go here void (*changed)(SchematicView *schematic_view); void (*reset_tool)(SchematicView *schematic_view); }; struct _SchematicViewPriv { Schematic *schematic; Sheet *sheet; GtkPageSetup *page_setup; GtkPrintSettings *print_settings; gboolean empty; GtkActionGroup *action_group; GtkUIManager *ui_manager; gpointer browser; GtkWidget *logview; GtkPaned *paned; guint grid : 1; SchematicTool tool; int cursor; LogInfo *log_info; }; G_DEFINE_TYPE (SchematicView, schematic_view, G_TYPE_OBJECT) // 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 void schematic_view_load (SchematicView *sv, Schematic *sm); static void schematic_view_do_load (SchematicView *sv, Schematic *sm, const gboolean reload); static void schematic_view_reload (SchematicView *sv, Schematic *sm); // 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 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 void set_tool (SchematicView *sv, SchematicTool tool); static GList *schematic_view_list = NULL; static GObjectClass *parent_class = NULL; static guint schematic_view_signals[LAST_SIGNAL] = {0}; 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; GtkBuilder *builder; GError *e = NULL; GtkWidget *window; GtkEntry *title, *author; GtkTextView *comments; GtkTextBuffer *buffer; gchar *s_title, *s_author, *s_comments; gint button; s = schematic_view_get_schematic (sv); if ((builder = gtk_builder_new ()) == NULL) { log_append (schematic_get_log_store (s), _ ("SchematicView"), _ ("Could not create properties dialog")); return; } gtk_builder_set_translation_domain (builder, NULL); if (gtk_builder_add_from_file (builder, OREGANO_UIDIR "/properties.ui", &e) <= 0) { log_append_error (schematic_get_log_store (s), _ ("SchematicView"), _ ("Could not create properties dialog due to issues with " OREGANO_UIDIR "/properties.ui file."), e); g_clear_error (&e); return; } window = GTK_WIDGET (gtk_builder_get_object (builder, "properties")); title = GTK_ENTRY (gtk_builder_get_object (builder, "title")); author = GTK_ENTRY (gtk_builder_get_object (builder, "author")); comments = GTK_TEXT_VIEW (gtk_builder_get_object (builder, "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)); button = gtk_dialog_run (GTK_DIALOG (window)); if (button == 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 (window); } static void find_file (GtkButton *button, GtkEntry *text) { GtkWidget *dialog; dialog = gtk_file_chooser_dialog_new (_ ("Export to..."), NULL, GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_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; GtkBuilder *builder; GError *e = NULL; GtkWidget *window; GtkWidget *warning; GtkWidget *w; GtkEntry *file = NULL; GtkComboBoxText *combo; gint button = GTK_RESPONSE_NONE; gint formats[5], fc; s = schematic_view_get_schematic (sv); if ((builder = gtk_builder_new ()) == NULL) { log_append (schematic_get_log_store (s), _ ("SchematicView"), _ ("Could not create properties dialog")); return; } gtk_builder_set_translation_domain (builder, NULL); if (gtk_builder_add_from_file (builder, OREGANO_UIDIR "/export.ui", &e) <= 0) { log_append_error (schematic_get_log_store (s), _ ("SchematicView"), _ ("Could not create properties dialog due to issues with " OREGANO_UIDIR "/exportp.ui file."), e); g_clear_error (&e); return; } window = GTK_WIDGET (gtk_builder_get_object (builder, "export")); combo = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (builder, "format")); fc = 0; #ifdef CAIRO_HAS_SVG_SURFACE gtk_combo_box_text_append_text (combo, "Scalar Vector Graphics (SVG)"); formats[fc++] = 0; #endif #ifdef CAIRO_HAS_PDF_SURFACE gtk_combo_box_text_append_text (combo, "Portable Document Format (PDF)"); formats[fc++] = 1; #endif #ifdef CAIRO_HAS_PS_SURFACE gtk_combo_box_text_append_text (combo, "Postscript (PS)"); formats[fc++] = 2; #endif #ifdef CAIRO_HAS_PNG_FUNCTIONS gtk_combo_box_text_append_text (combo, "Portable Network Graphics (PNG)"); formats[fc++] = 3; #endif file = GTK_ENTRY (gtk_builder_get_object (builder, "file")); w = GTK_WIDGET (gtk_builder_get_object (builder, "find")); g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (find_file), file); gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0); button = gtk_dialog_run (GTK_DIALOG (window)); if (button == GTK_RESPONSE_OK) { if (g_path_skip_root (gtk_entry_get_text (file)) == NULL) { warning = gtk_message_dialog_new_with_markup ( NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, _ ("No filename has " "been chosen\n\n" "Please, click on the tag, beside, to select an output.")); if (gtk_dialog_run (GTK_DIALOG (warning)) == GTK_RESPONSE_OK) { gtk_widget_destroy (GTK_WIDGET (warning)); export_cmd (widget, sv); gtk_widget_destroy (GTK_WIDGET (window)); return; } } else { int bg = 0; GtkSpinButton *spinw, *spinh; int color_scheme = 0; GtkWidget *w; int i = gtk_combo_box_get_active (GTK_COMBO_BOX (combo)); w = GTK_WIDGET (gtk_builder_get_object (builder, "bgwhite")); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))) bg = 1; w = GTK_WIDGET (gtk_builder_get_object (builder, "bgblack")); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))) bg = 2; w = GTK_WIDGET (gtk_builder_get_object (builder, "color")); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))) color_scheme = 1; spinw = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "export_width")); spinh = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "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 (window); } static void page_properties_cmd (GtkWidget *widget, SchematicView *sv) { if (sv->priv->page_setup) { g_object_unref (sv->priv->page_setup); } 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, *t; char *fname, *uri = NULL; GList *iter; GError *e = NULL; fname = dialog_open_file (sv); if (!fname) return; // Repaint the other schematic windows before loading the new file. new_sv = NULL; for (iter = schematic_view_list; iter; iter = iter->next) { t = SCHEMATIC_VIEW (iter->data); if (t->priv->empty) new_sv = t; gtk_widget_queue_draw (GTK_WIDGET (t->toplevel)); } while (gtk_events_pending ()) gtk_main_iteration (); new_sm = schematic_read (fname, &e); if (e) { gchar *const msg = g_strdup_printf (_ ("Could not load file \"file://%s\""), fname); Schematic *old = schematic_view_get_schematic (sv); log_append_error (schematic_get_log_store (old), _ ("SchematicView"), msg, e); g_clear_error (&e); g_free (msg); } if (new_sm) { GtkRecentManager *manager; GtkRecentInfo *rc; manager = gtk_recent_manager_get_default (); uri = g_strdup_printf ("file://%s", fname); if (uri) { rc = gtk_recent_manager_lookup_item (manager, uri, &e); if (e) { g_clear_error (&e); } else { gtk_recent_manager_remove_item (manager, uri, &e); if (e) { gchar *const msg = g_strdup_printf (_ ("Could not load recent file \"%s\""), uri); Schematic *old = schematic_view_get_schematic (sv); log_append_error (schematic_get_log_store (old), _ ("SchematicView"), msg, e); g_clear_error (&e); g_free (msg); } } gtk_recent_manager_add_item (manager, uri); if (rc) gtk_recent_info_unref (rc); } 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 (uri); } g_free (fname); } static void oregano_recent_open (GtkRecentChooser *chooser, SchematicView *sv) { gchar *uri; const gchar *mime; GtkRecentInfo *item; GtkRecentManager *manager; Schematic *new_sm; SchematicView *new_sv = NULL; GError *e = 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; // remove and re-add in order to update the ordering gtk_recent_manager_remove_item (manager, uri, &e); if (e) { gchar *const msg = g_strdup_printf (_ ("Could not load recent file \"%s\"\n%s"), uri, e->message); oregano_error_with_title (_ ("Could not load recent file"), msg); g_clear_error (&e); g_free (msg); } gtk_recent_manager_add_item (manager, uri); mime = gtk_recent_info_get_mime_type (item); if (!mime || strcmp (mime, "application/x-oregano") != 0) { gchar *const msg = g_strdup_printf (_ ("Can not handle file with mimetype \"%s\""), mime); oregano_error_with_title (_ ("Could not load recent file"), msg); g_clear_error (&e); g_free (msg); } else { new_sm = schematic_read (uri, &e); if (e) { oregano_error_with_title (_ ("Could not load recent file"), e->message); g_clear_error (&e); } 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)); } } g_free (uri); gtk_recent_info_unref (item); } static GtkWidget *create_recent_chooser_menu (GtkRecentManager *manager) { GtkWidget *menu; GtkRecentFilter *filter; 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_filter_add_application (filter, g_get_application_name ()); 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 *e = 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, &e)) { log_append_error (schematic_get_log_store (sm), _ ("SchematicView"), _ ("Failed to save schematic file."), e); g_clear_error (&e); } } } 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)) { NG_DEBUG (" --- not dirty (anymore), do close schematic_view: %p -- vs -- " "toplevel: %p", sv, schematic_view_get_toplevel (sv)); gtk_widget_destroy (GTK_WIDGET (schematic_view_get_toplevel (sv))); sv->toplevel = NULL; g_object_unref (G_OBJECT (sv)); } } static void select_all_cmd (GtkWidget *widget, SchematicView *sv) { sheet_select_all (sv->priv->sheet, TRUE); } static void deselect_all_cmd (GtkWidget *widget, SchematicView *sv) { sheet_select_all (sv->priv->sheet, FALSE); } static void delete_cmd (GtkWidget *widget, SchematicView *sv) { sheet_delete_selection (sv->priv->sheet); } static void rotate_cmd (GtkWidget *widget, SchematicView *sv) { if (sv->priv->sheet->state == SHEET_STATE_NONE) sheet_rotate_selection (sv->priv->sheet, 90); else if (sv->priv->sheet->state == SHEET_STATE_FLOAT || sv->priv->sheet->state == SHEET_STATE_FLOAT_START) sheet_rotate_ghosts (sv->priv->sheet); } static void flip_horizontal_cmd (GtkWidget *widget, SchematicView *sv) { if (sv->priv->sheet->state == SHEET_STATE_NONE) sheet_flip_selection (sv->priv->sheet, TRUE); else if (sv->priv->sheet->state == SHEET_STATE_FLOAT || sv->priv->sheet->state == SHEET_STATE_FLOAT_START) sheet_flip_ghosts (sv->priv->sheet, TRUE); } static void flip_vertical_cmd (GtkWidget *widget, SchematicView *sv) { if (sv->priv->sheet->state == SHEET_STATE_NONE) sheet_flip_selection (sv->priv->sheet, FALSE); else if (sv->priv->sheet->state == SHEET_STATE_FLOAT || sv->priv->sheet->state == SHEET_STATE_FLOAT_START) sheet_flip_ghosts (sv->priv->sheet, FALSE); } static void object_properties_cmd (GtkWidget *widget, SchematicView *sv) { sheet_provide_object_properties (sv->priv->sheet); } /** * copy the currently selected items */ static void copy_cmd (GtkWidget *widget, SchematicView *sv) { SheetItem *item; GList *iter; if (sv->priv->sheet->state != SHEET_STATE_NONE) return; sheet_clear_ghosts (sv->priv->sheet); clipboard_empty (); iter = sheet_get_selection (sv->priv->sheet); for (; iter; iter = iter->next) { item = iter->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); } /** * snip the currently selected items */ static void cut_cmd (GtkWidget *widget, SchematicView *sv) { if (sv->priv->sheet->state != SHEET_STATE_NONE) return; copy_cmd (NULL, sv); sheet_delete_selection (sv->priv->sheet); 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); } static void paste_objects (gpointer data, Sheet *sheet) { sheet_item_paste (sheet, data); } static void paste_cmd (GtkWidget *widget, SchematicView *sv) { if (sv->priv->sheet->state != SHEET_STATE_NONE) return; if (sheet_get_floating_objects (sv->priv->sheet)) sheet_clear_ghosts (sv->priv->sheet); sheet_select_all (sv->priv->sheet, FALSE); clipboard_foreach ((ClipBoardFunction)paste_objects, sv->priv->sheet); if (sheet_get_floating_objects (sv->priv->sheet)) sheet_connect_part_item_to_floating_group (sv->priv->sheet, (gpointer)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 show; Schematic *sm; Netlist netlist; GError *e = NULL; show = gtk_toggle_action_get_active (toggle); // Use of netlist_helper_create sm = sv->priv->schematic; netlist_helper_create (sm, &netlist, &e); if (e != NULL) { if (g_error_matches (e, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_CLAMP) || g_error_matches (e, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_GND) || g_error_matches (e, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_IO_ERROR)) { log_append_error (schematic_get_log_store (sm), _ ("SchematicView"), _ ("Could not create a netlist."), e); } else { log_append_error (schematic_get_log_store (sm), _ ("SchematicView"), _ ("Unexpect failure occured."), e); } g_clear_error (&e); return; } sheet_show_node_labels (sv->priv->sheet, show); sheet_update_parts (sv->priv->sheet); } 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 *iter, *copy; // Duplicate the list as the list is modified during destruction. copy = g_list_copy (schematic_view_list); for (iter = copy; iter; iter = iter->next) { close_cmd (NULL, iter->data); } g_list_free (copy); g_application_quit (g_application_get_default ()); } static void v_clamp_cmd (SchematicView *sv) { LibraryPart *library_part; Coords pos; Sheet *sheet; Part *part; GList *lib; Library *l = NULL; set_tool (sv, SCHEMATIC_TOOL_PART); sheet = sv->priv->sheet; // Find default lib for (lib = oregano.libraries; lib; lib = lib->next) { l = (Library *)(lib->data); if (!g_ascii_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"); sheet_select_all (sv->priv->sheet, FALSE); sheet_clear_ghosts (sv->priv->sheet); sheet_add_ghost_item (sv->priv->sheet, ITEM_DATA (part)); sheet_connect_part_item_to_floating_group (sheet, (gpointer)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_visibility (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 log_toggle_visibility_cmd (GtkToggleAction *action, SchematicView *sv) { g_return_if_fail (sv); g_return_if_fail (sv->priv->logview); GtkAllocation allocation; gboolean b = gtk_toggle_action_get_active (action); static int pos = 0; if (pos == 0) pos = gtk_paned_get_position (GTK_PANED (sv->priv->paned)); gtk_widget_get_allocation (GTK_WIDGET (sv->priv->paned), &allocation); gtk_paned_set_position (GTK_PANED (sv->priv->paned), b ? pos : allocation.height); } static void smartsearch_cmd (GtkWidget *widget, SchematicView *sv) { // Perform a research of a part within all librarys g_print ("TODO: search_smart ()\n"); } static void netlist_cmd (GtkWidget *widget, SchematicView *sv) { Schematic *sm; gchar *netlist_name; GError *e = NULL; 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, &e); sheet_update_parts (sv->priv->sheet); g_free (netlist_name); g_object_unref (engine); if (e) { if (g_error_matches (e, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_CLAMP) || g_error_matches (e, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_GND) || g_error_matches (e, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_IO_ERROR)) { log_append_error (schematic_get_log_store (sm), _ ("SchematicView"), _ ("Could not create a netlist."), e); } else { log_append_error (schematic_get_log_store (sm), _ ("SchematicView"), _ ("Unexpect failure occured."), e); } g_clear_error (&e); return; } } static void netlist_view_cmd (GtkWidget *widget, SchematicView *sv) { netlist_editor_new_from_schematic_view (sv); } 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, "/StandardToolbar/ZoomIn"), zoom < ZOOM_MAX); gtk_action_set_sensitive ( gtk_ui_manager_get_action (sv->priv->ui_manager, "/StandardToolbar/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_zoom_step (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_zoom_step (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); } /* * Stretch the sheet horizontally. */ static void stretch_horizontal_cmd (GtkWidget *widget, SchematicView *sv) { Schematic *sm; guint width; g_return_if_fail (sv != NULL); g_return_if_fail (IS_SCHEMATIC_VIEW (sv)); sm = sv->priv->schematic; g_return_if_fail (sm != NULL); g_return_if_fail (IS_SCHEMATIC (sm)); width = schematic_get_width (sm); schematic_set_width (sm, width * (1.0 + SCHEMATIC_STRETCH_FACTOR)); if (sheet_replace (sv)) { schematic_view_reload (sv, sm); gtk_widget_show_all (schematic_view_get_toplevel (sv)); } } /* * Stretch the sheet vertically. */ static void stretch_vertical_cmd (GtkWidget *widget, SchematicView *sv) { Schematic *sm; guint height; g_return_if_fail (sv != NULL); g_return_if_fail (IS_SCHEMATIC_VIEW (sv)); sm = sv->priv->schematic; g_return_if_fail (sm != NULL); g_return_if_fail (IS_SCHEMATIC (sm)); height = schematic_get_height (sm); schematic_set_height (sm, height * (1.0 + SCHEMATIC_STRETCH_FACTOR)); if (sheet_replace (sv)) { schematic_view_reload (sv, sm); gtk_widget_show_all (schematic_view_get_toplevel (sv)); } } void schematic_view_simulate_cmd (GtkWidget *widget, SchematicView *sv) { Schematic *sm; SimSettings *sim_settings; sm = schematic_view_get_schematic (sv); sim_settings = schematic_get_sim_settings (sm); // Before running the simulation for the first time, make // sure that the simulation settings are configured (this // includes the removal of missing output vectors from // previous application runs). if (!sim_settings->configured) { // The response_callback() function will take care // of launching the simulation again when the // simulation settings have been accepted. sim_settings->simulation_requested = TRUE; sim_settings_show (NULL, sv); return; } simulation_show_progress_bar (NULL, sv); sheet_update_parts (sv->priv->sheet); return; } 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); schematic_view_signals[RESET_TOOL] = g_signal_new ("reset_tool", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (SchematicViewClass, reset_tool), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_class->finalize = schematic_view_finalize; object_class->dispose = schematic_view_dispose; } static void schematic_view_init (SchematicView *sv) { sv->priv = g_new0 (SchematicViewPriv, 1); sv->priv->log_info = g_new0 (LogInfo, 1); 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->logview = NULL; } static void schematic_view_finalize (GObject *object) { SchematicView *sv = SCHEMATIC_VIEW (object); if (sv->priv) { if (sv->priv->page_setup) { g_object_unref (sv->priv->page_setup); } g_object_unref (sv->priv->print_settings); g_object_unref (sv->priv->action_group); g_object_unref (sv->priv->ui_manager); g_object_unref (sv->priv->paned); g_free (sv->priv->log_info); g_free (sv->priv); sv->priv = NULL; } if (sv->toplevel) { g_object_unref (G_OBJECT (sv->toplevel)); sv->toplevel = NULL; } G_OBJECT_CLASS (parent_class)->finalize (object); } static void schematic_view_dispose (GObject *object) { SchematicView *sv = SCHEMATIC_VIEW (object); schematic_view_list = g_list_remove (schematic_view_list, sv); if (sv->toplevel) { // Disconnect focus signal g_signal_handlers_disconnect_by_func (G_OBJECT (sv->toplevel), G_CALLBACK (set_focus), sv); // Disconnect destroy event from toplevel g_signal_handlers_disconnect_by_func (G_OBJECT (sv->toplevel), G_CALLBACK (delete_event), sv); } if (sv->priv) { if (IS_SHEET (sv->priv->sheet)) { // Disconnect sheet's events g_signal_handlers_disconnect_by_func (G_OBJECT (sv->priv->sheet), G_CALLBACK (sheet_event_callback), sv->priv->sheet); } g_object_unref (G_OBJECT (sv->priv->schematic)); } G_OBJECT_CLASS (parent_class)->dispose (object); } static void show_help (GtkWidget *widget, SchematicView *sv) { GError *e = NULL; #if GTK_CHECK_VERSION (3,22,0) if (!gtk_show_uri_on_window (GTK_WINDOW (sv->toplevel), "help:oregano", gtk_get_current_event_time (), #else if (!gtk_show_uri (gtk_widget_get_screen (sv->toplevel), "help:oregano", gtk_get_current_event_time (), #endif &e)) { NG_DEBUG ("Error %s\n", e->message); g_clear_error (&e); } } /** * Get a suitable value for the window size. * * Make the window occupy 3/4 of the screen with a padding of 50px in each * direction */ static void get_window_size (GtkWindow *window, GdkRectangle *rect) { GdkRectangle monitor_rect; #if GTK_CHECK_VERSION (3,22,0) GdkMonitor *monitor; GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET (window)); #else gint monitor; GdkScreen *screen = gdk_screen_get_default (); #endif #if GTK_CHECK_VERSION (3,22,0) if (display) { monitor = gdk_display_get_primary_monitor (display); gdk_monitor_get_geometry (monitor, &monitor_rect); #else if (screen) { monitor = gdk_screen_get_primary_monitor (screen); gdk_screen_get_monitor_geometry (screen, monitor, &monitor_rect); #endif rect->width = 3 * (monitor_rect.width - 50) / 4; rect->height = 3 * (monitor_rect.height - 50) / 4; } else { g_warning ("No default screen found. Falling back to 1024x768 window size."); rect->width = 1024; rect->height = 768; } } static void set_window_size (SchematicView *sv) { GdkRectangle rect; get_window_size (GTK_WINDOW (sv->toplevel), &rect); gtk_window_set_default_size (GTK_WINDOW (sv->toplevel), rect.width, rect.height); } #include "schematic-view-menu.h" SchematicView *schematic_view_new (Schematic *schematic) { SchematicView *sv; SchematicViewPriv *priv; Schematic *sm; GtkWidget *w, *hbox, *vbox; GtkWidget *toolbar, *part_browser; GtkWidget *logview; GtkWidget *logview_scrolled; GtkActionGroup *action_group; GtkUIManager *ui_manager; GtkAccelGroup *accel_group; GtkWidget *menubar; GtkGrid *grid; GtkPaned *paned; GError *e = NULL; GtkBuilder *builder; GdkRectangle window_size; g_return_val_if_fail (schematic, 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); sm = schematic_view_get_schematic (sv); if ((builder = gtk_builder_new ()) == NULL) { log_append (schematic_get_log_store (sm), _ ("SchematicView"), _ ("Failed to spawn builder object.")); return NULL; } gtk_builder_set_translation_domain (builder, NULL); if (gtk_builder_add_from_file (builder, OREGANO_UIDIR "/oregano-main.ui", &e) <= 0) { log_append_error (schematic_get_log_store (sm), _ ("SchematicView"), _ ("Could not create main window from file."), e); g_clear_error (&e); return NULL; } sv->toplevel = GTK_WIDGET (gtk_builder_get_object (builder, "toplevel")); grid = GTK_GRID (gtk_builder_get_object (builder, "grid")); paned = GTK_PANED (gtk_builder_get_object (builder, "paned")); sv->priv->paned = paned; get_window_size (GTK_WINDOW (sv->toplevel), &window_size); if (schematic_get_width (schematic) < window_size.width) schematic_set_width (schematic, window_size.width); if (schematic_get_height (schematic) < window_size.height) schematic_set_height (schematic, window_size.height); sv->priv->sheet = SHEET (sheet_new ((double) schematic_get_width (schematic) + SHEET_BORDER, (double) schematic_get_height (schematic) + SHEET_BORDER)); g_signal_connect (G_OBJECT (sv->priv->sheet), "event", G_CALLBACK (sheet_event_callback), sv->priv->sheet); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 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_widget_set_hexpand (w, TRUE); gtk_widget_set_vexpand (w, TRUE); gtk_container_add (GTK_CONTAINER (w), GTK_WIDGET (sv->priv->sheet)); gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 5); part_browser = part_browser_create (sv); gtk_widget_set_hexpand (part_browser, FALSE); gtk_grid_attach_next_to (grid, part_browser, GTK_WIDGET (paned), GTK_POS_RIGHT, 1, 1); priv = sv->priv; priv->log_info->log_window = NULL; priv->action_group = action_group = gtk_action_group_new ("MenuActions"); gtk_action_group_set_translation_domain (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); g_assert_cmpint (G_N_ELEMENTS (toggle_entries), >=, 4); 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); if (!gtk_ui_manager_add_ui_from_string (ui_manager, ui_description, -1, &e)) { g_message ("building menus failed: %s", e->message); g_clear_error (&e); return NULL; } 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, "/StandardToolbar"); 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); gtk_paned_pack1 (paned, vbox, FALSE, TRUE); 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); sv->priv->logview = logview = GTK_WIDGET (log_view_new ()); log_view_set_store (LOG_VIEW (logview), schematic_get_log_store (schematic)); logview_scrolled = gtk_scrolled_window_new (NULL, NULL); gtk_container_add (GTK_CONTAINER (logview_scrolled), logview); gtk_paned_pack2 (paned, logview_scrolled, FALSE, TRUE); 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); g_signal_connect_object (G_OBJECT (sv), "reset_tool", G_CALLBACK (reset_tool_cb), G_OBJECT (sv), 0); set_window_size (sv); 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")); gtk_window_set_application (GTK_WINDOW (schematic_view_get_toplevel (sv)), GTK_APPLICATION (g_application_get_default ())); return sv; } static void schematic_view_load (SchematicView *sv, Schematic *sm) { schematic_view_do_load (sv, sm, FALSE); } static void schematic_view_do_load (SchematicView *sv, Schematic *sm, const gboolean reload) { GList *list; g_return_if_fail (sv != NULL); g_return_if_fail (sm != NULL); g_return_if_fail (IS_SCHEMATIC (sm)); if (!reload) g_return_if_fail (sv->priv->empty != FALSE); if (!reload && sv->priv->schematic) g_object_unref (G_OBJECT (sv->priv->schematic)); sv->priv->schematic = sm; if (!reload) { 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); } list = schematic_get_items (sm); for (; list; list = list->next) { g_signal_emit_by_name (G_OBJECT (sm), "item_data_added", list->data); } sheet_connect_node_dots_to_signals (sv->priv->sheet); // connect logview with logstore if (!reload) log_view_set_store (LOG_VIEW (sv->priv->logview), schematic_get_log_store (sm)); schematic_set_dirty (sm, FALSE); g_list_free_full (list, g_object_unref); } static void schematic_view_reload (SchematicView *sv, Schematic *sm) { schematic_view_do_load (sv, sm, TRUE); } static void item_selection_changed_callback (SheetItem *item, gboolean selected, SchematicView *sv) { guint length; if (selected) { sheet_prepend_selected_object (sv->priv->sheet, item); } else { sheet_remove_selected_object (sv->priv->sheet, item); } length = sheet_get_selected_objects_length (sv->priv->sheet); 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) { Sheet *sheet; SheetItem *item; sheet = sv->priv->sheet; item = sheet_item_factory_create_sheet_item (sheet, data); if (item != NULL) { sheet_item_place (item, sv->priv->sheet); g_object_set (G_OBJECT (item), "action_group", sv->priv->action_group, NULL); g_signal_connect (G_OBJECT (item), "selection_changed", G_CALLBACK (item_selection_changed_callback), sv); sheet_add_item (sheet, item); sv->priv->empty = FALSE; if (sv->priv->tool == SCHEMATIC_TOOL_PART) schematic_view_reset_tool (sv); // refresh _after_ we added it to the Sheet // this is required to properly display rotation, flip and others item_data_changed (data); } } 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 (!gtk_window_get_focus (window)) 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)); return FALSE; } else return TRUE; } static int can_close (SchematicView *sv) { GtkWidget *dialog; gchar *text, *filename; GError *e = 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 (_ ("Save " "changes to schematic %s before closing?\n\nIf you don't save, " "all changes since you last saved will be permanently lost."), filename ? g_path_get_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 (sv->priv->schematic, &e); if (e) { g_clear_error (&e); } break; case GTK_RESPONSE_NO: schematic_set_dirty (sv->priv->schematic, FALSE); break; case GTK_RESPONSE_CANCEL: default: return FALSE; } return TRUE; } 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; } void schematic_view_set_sheet (SchematicView *sv, Sheet *sheet) { g_return_if_fail (sv != NULL); g_return_if_fail (IS_SCHEMATIC_VIEW (sv)); sv->priv->sheet = 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; } 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), "reset_tool"); } 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 *e = NULL; // Extract the filenames from the URI-list we received. switch (info) { case DRAG_PART_INFO: part_browser_dnd (selection_data, x, y); break; case DRAG_URI_INFO: files = g_strsplit ((gchar *)gtk_selection_data_get_data (selection_data), "\n", -1); if (files) { int i = 0; while (files[i]) { Schematic *new_sm = NULL; int l = strlen (files[i]); // Algo remains bad after the split: we agregate back into one \0 files[i][l - 1] = '\0'; if (l <= 0) { // Empty file name, ignore! i++; continue; } gchar *fname = files[i]; new_sm = schematic_read (fname, &e); if (e) { // g_warning () g_clear_error (&e); } 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++; } g_strfreev (files); } } gtk_drag_finish (context, TRUE, TRUE, time); } 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 the tool. sheet_item_cancel_floating (sv->priv->sheet); 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; }*/ sheet_stop_create_wire (sv->priv->sheet); break; case SCHEMATIC_TOOL_TEXT: textbox_item_cancel_listen (sv->priv->sheet); break; case SCHEMATIC_TOOL_PART: sheet_item_cancel_floating (sv->priv->sheet); 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; sheet_initiate_create_wire (sv->priv->sheet); 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->priv->sheet); 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, "/StandardToolbar/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; } static gboolean log_window_delete_event (GtkWidget *widget, GdkEvent *event, SchematicView *sv) { sv->priv->log_info->log_window = NULL; return FALSE; } static void log_window_destroy_event (GtkWidget *widget, SchematicView *sv) { sv->priv->log_info->log_window = NULL; } static void log_window_close_cb (GtkWidget *widget, SchematicView *sv) { gtk_widget_destroy (sv->priv->log_info->log_window); sv->priv->log_info->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_info->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; Schematic *sm; GError *e = NULL; g_return_if_fail (sv != NULL); g_return_if_fail (IS_SCHEMATIC_VIEW (sv)); sm = sv->priv->schematic; if ((sv->priv->log_info->log_gui = gtk_builder_new ()) == NULL) { log_append (schematic_get_log_store (sm), _ ("SchematicView"), _ ("Could not create the log window.")); return; } gtk_builder_set_translation_domain (sv->priv->log_info->log_gui, NULL); if (sv->priv->log_info->log_window == NULL) { // Create the log window if not already done. if (!explicit && !oregano.show_log) return; if (gtk_builder_add_from_file (sv->priv->log_info->log_gui, OREGANO_UIDIR "/log-window.ui", &e) <= 0) { log_append_error (schematic_get_log_store (sm), _ ("SchematicView"), _ ("Could not create the log window."), e); g_clear_error (&e); return; } sv->priv->log_info->log_window = GTK_WIDGET (gtk_builder_get_object (sv->priv->log_info->log_gui, "log-window")); sv->priv->log_info->log_text = GTK_TEXT_VIEW (gtk_builder_get_object (sv->priv->log_info->log_gui, "log-text")); gtk_window_set_default_size (GTK_WINDOW (sv->priv->log_info->log_window), 500, 250); // Delete event. g_signal_connect (G_OBJECT (sv->priv->log_info->log_window), "delete_event", G_CALLBACK (log_window_delete_event), sv); g_signal_connect (G_OBJECT (sv->priv->log_info->log_window), "destroy_event", G_CALLBACK (log_window_destroy_event), sv); w = GTK_WIDGET (gtk_builder_get_object (sv->priv->log_info->log_gui, "close-button")); g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (log_window_close_cb), sv); w = GTK_WIDGET (gtk_builder_get_object (sv->priv->log_info->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 (gtk_widget_get_window (sv->priv->log_info->log_window)); } gtk_text_view_set_buffer (sv->priv->log_info->log_text, schematic_get_log_text (sm)); gtk_widget_show_all (sv->priv->log_info->log_window); } gboolean schematic_view_get_log_window_exists (SchematicView *sv) { if (sv->priv->log_info->log_window != NULL) return TRUE; else return FALSE; } GtkWidget *schematic_view_get_toplevel (SchematicView *sv) { return sv->toplevel; } Schematic *schematic_view_get_schematic_from_sheet (Sheet *sheet) { g_return_val_if_fail ((sheet != NULL), NULL); g_return_val_if_fail (IS_SHEET (sheet), NULL); GList *iter, *copy; Schematic *s = NULL; copy = g_list_copy (schematic_view_list); // really needed? probably not for (iter = copy; iter; iter = iter->next) { SchematicView *sv = SCHEMATIC_VIEW (iter->data); if (sv->priv->sheet == sheet) { s = sv->priv->schematic; break; } } g_list_free (copy); return s; } SchematicView *schematic_view_get_schematicview_from_sheet (Sheet *sheet) { g_return_val_if_fail (sheet, NULL); g_return_val_if_fail (IS_SHEET (sheet), NULL); GList *iter, *copy; SchematicView *sv = NULL; copy = g_list_copy (schematic_view_list); // really needed? probably not for (iter = copy; iter; iter = iter->next) { sv = SCHEMATIC_VIEW (iter->data); if (sv->priv->sheet == sheet) break; } g_list_free (copy); return sv; } 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); } oregano-0.84.41/src/plot.h0000644000175000017500000000227313413640652014260 0ustar rubenruben/* * plot.h * * * Author: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __PLOT_H #define __PLOT_H #include "engine.h" int plot_show (OreganoEngine *engine); #endif oregano-0.84.41/src/xml-helper.c0000644000175000017500000001235113413640652015350 0ustar rubenruben/* * xml-helper.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2014 Bernhard Schuster * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "xml-compat.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. gboolean oreganoXmlSAXParseFile (xmlSAXHandlerPtr sax, gpointer user_data, const gchar *filename) { g_return_val_if_fail (filename != NULL, FALSE); gboolean parser_failed, ret = TRUE; xmlParserCtxtPtr ctxt; ctxt = xmlCreateFileParserCtxt (filename); if (ctxt == NULL) return FALSE; ctxt->sax = sax; ctxt->userData = user_data; #if defined(LIBXML_VERSION) && LIBXML_VERSION >= 20000 xmlKeepBlanksDefault (0); #endif parser_failed = FALSE; if (xmlParseDocument (ctxt) < 0) { // FIXME post a message to the log buffer with as much details as possible g_message ("Failed to parse \"%s\"", filename); ret = FALSE; parser_failed = TRUE; } else { ret = ctxt->wellFormed ? TRUE : FALSE; if (sax != NULL) ctxt->sax = NULL; } if (!parser_failed) 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 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); } oregano-0.84.41/src/load-library.c0000644000175000017500000004373413413640652015665 0ustar rubenruben/* * load-library.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include "xml-compat.h" #include "oregano.h" #include "xml-helper.h" #include "load-common.h" #include "load-library.h" #include "part-label.h" typedef enum { PARSE_START, PARSE_LIBRARY, PARSE_NAME, PARSE_AUTHOR, PARSE_VERSION, 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 *iter; g_return_val_if_fail (symbol_name != NULL, NULL); symbol = NULL; for (iter = oregano.libraries; iter; iter = iter->next) { library = iter->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)) { 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:version")) { state->state = PARSE_VERSION; 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: case PARSE_VERSION: // 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_VERSION: state->library->version = 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 goo canvas points. state->object->u.uline.line = goo_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); } oregano-0.84.41/src/log.h0000644000175000017500000000202413413640652014055 0ustar rubenruben#ifndef __LOG_H__ #define __LOG_H__ #include G_BEGIN_DECLS #define LOG_TYPE (log_get_type ()) #define LOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LOG_TYPE, Log)) #define LOG_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LOG_TYPE, Log const)) #define LOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LOG_TYPE, LogClass)) #define LOG_IS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LOG_TYPE)) #define LOG_IS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LOG_TYPE)) #define LOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), LOG_TYPE, LogClass)) typedef struct _Log Log; typedef struct _LogClass LogClass; typedef struct _LogPrivate LogPrivate; struct _Log { GtkListStore parent; LogPrivate *priv; }; struct _LogClass { GtkListStoreClass parent_class; }; GType log_get_type (void) G_GNUC_CONST; Log *log_new (void); void log_append (Log *log, const gchar *prefix, const gchar *message); void log_append_error (Log *log, const gchar *prefix, const gchar *message, GError *error); G_END_DECLS #endif /* __LOG_H__ */ oregano-0.84.41/src/xml-helper.h0000644000175000017500000000343413413640652015357 0ustar rubenruben/* * xml-helper.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Bernhard Schuster * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2014 Bernhard Schuster * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __XML_HELPER_H #define __XML_HELPER_H #include #include "xml-compat.h" gboolean oreganoXmlSAXParseFile (xmlSAXHandlerPtr sax, gpointer user_data, const gchar *filename); 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 oregano-0.84.41/src/sim-settings.h0000644000175000017500000001411613413640652015727 0ustar rubenruben/* * sim-settings.h * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * Guido Trentalancia * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2004 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * Copyright (C) 2017 Guido Trentalancia * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __SIM_SETTINGS_H #define __SIM_SETTINGS_H typedef struct { gboolean configured; gboolean simulation_requested; // Transient analysis. gboolean trans_enable; gboolean trans_init_cond; gboolean trans_analyze_all; gchar *trans_start; gchar *trans_stop; gchar *trans_step; gboolean trans_step_enable; // AC gboolean ac_enable; gchar *ac_vout; gchar *ac_type; gchar *ac_npoints; gchar *ac_start; gchar *ac_stop; // DC gboolean dc_enable; gchar *dc_vin; gchar *dc_vout; gchar *dc_start, *dc_stop, *dc_step; // Fourier analysis. Replace with something sane later. gboolean fourier_enable; gchar *fourier_frequency; gchar *fourier_nb_vout; GSList *fourier_vout; // Noise gboolean noise_enable; gchar *noise_vin; gchar *noise_vout; gchar *noise_type; gchar *noise_npoints; gchar *noise_start; gchar *noise_stop; // Options GList *options; } SimSettings; typedef struct _SimOption { gchar *name; gchar *value; } SimOption; SimSettings *sim_settings_new (); void sim_settings_finalize(SimSettings *s); gdouble sim_settings_get_trans_start (const SimSettings *sim_settings); gdouble sim_settings_get_trans_stop (const SimSettings *sim_settings); gdouble sim_settings_get_trans_step (const SimSettings *sim_settings); gboolean sim_settings_get_trans (const SimSettings *sim_settings); gdouble sim_settings_get_trans_step_enable (const SimSettings *sim_settings); gboolean sim_settings_get_trans_init_cond (const SimSettings *sim_settings); gboolean sim_settings_get_trans_analyze_all (const 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); void sim_settings_set_trans_analyze_all (SimSettings *sim_settings, gboolean enable); gboolean sim_settings_get_dc (const SimSettings *); gchar *sim_settings_get_dc_vsrc (const SimSettings *); gchar *sim_settings_get_dc_vout (const SimSettings *); gdouble sim_settings_get_dc_start (const SimSettings *); gdouble sim_settings_get_dc_start (const SimSettings *); gdouble sim_settings_get_dc_stop (const SimSettings *); gdouble sim_settings_get_dc_step (const SimSettings *); void sim_settings_set_dc (SimSettings *, gboolean); void sim_settings_set_dc_vsrc (SimSettings *, gchar *); void sim_settings_set_dc_vout (SimSettings *, gchar *); void sim_settings_set_dc_start (SimSettings *, gchar *); void sim_settings_set_dc_stop (SimSettings *, gchar *); void sim_settings_set_dc_step (SimSettings *, gchar *); gboolean sim_settings_get_ac (const SimSettings *); gchar *sim_settings_get_ac_vout (const SimSettings *); gchar *sim_settings_get_ac_type (const SimSettings *); gint sim_settings_get_ac_npoints (const SimSettings *); gdouble sim_settings_get_ac_start (const SimSettings *); gdouble sim_settings_get_ac_stop (const SimSettings *); void sim_settings_set_ac (SimSettings *, gboolean); void sim_settings_set_ac_vout (SimSettings *, gchar *); 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 *); void sim_settings_set_fourier (SimSettings *, gboolean); void sim_settings_set_fourier_frequency (SimSettings *, gchar *); void sim_settings_set_fourier_vout (SimSettings *, gchar *); gboolean sim_settings_get_fourier (const SimSettings *); gdouble sim_settings_get_fourier_frequency (const SimSettings *); gchar *sim_settings_get_fourier_vout (const SimSettings *); gchar *sim_settings_get_fourier_nodes (const SimSettings *); gboolean sim_settings_get_noise (const SimSettings *); gchar *sim_settings_get_noise_vsrc (const SimSettings *); gchar *sim_settings_get_noise_vout (const SimSettings *); gchar *sim_settings_get_noise_type (const SimSettings *); gint sim_settings_get_noise_npoints (const SimSettings *); gdouble sim_settings_get_noise_start (const SimSettings *); gdouble sim_settings_get_noise_stop (const SimSettings *); void sim_settings_set_noise (SimSettings *, gboolean); void sim_settings_set_noise_vsrc (SimSettings *, gchar *); void sim_settings_set_noise_vout (SimSettings *, gchar *); void sim_settings_set_noise_type (SimSettings *, gchar *); void sim_settings_set_noise_npoints (SimSettings *, gchar *); void sim_settings_set_noise_start (SimSettings *, gchar *); void sim_settings_set_noise_stop (SimSettings *, gchar *); GList *sim_settings_get_options (const SimSettings *sim_settings); void sim_settings_add_option (SimSettings *, SimOption *); gchar *fourier_add_vout(SimSettings *sim_settings, guint i); #endif oregano-0.84.41/src/log-view.h0000644000175000017500000000214013413640652015024 0ustar rubenruben#ifndef __LOG_VIEW_H__ #define __LOG_VIEW_H__ #include #include #include "log.h" G_BEGIN_DECLS #define TYPE_LOG_VIEW (log_view_get_type ()) #define LOG_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LOG_VIEW, LogView)) #define LOG_VIEW_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LOG_VIEW, LogView const)) #define LOG_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LOG_VIEW, LogViewClass)) #define LOG_IS_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LOG_VIEW)) #define LOG_IS_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LOG_VIEW)) #define LOG_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LOG_VIEW, LogViewClass)) typedef struct _LogView LogView; typedef struct _LogViewClass LogViewClass; typedef struct _LogViewPrivate LogViewPrivate; struct _LogView { GtkTreeView parent; LogViewPrivate *priv; }; struct _LogViewClass { GtkTreeViewClass parent_class; }; GType log_view_get_type (void) G_GNUC_CONST; LogView *log_view_new (void); void log_view_set_store (LogView *lv, Log *ls); G_END_DECLS #endif /* __LOG_VIEW_H__ */ oregano-0.84.41/src/file-manager.h0000644000175000017500000000340713413640652015631 0ustar rubenruben/* * file-manager.h * * * Authors: * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef _FILE_MANAGER_H_ #define _FILE_MANAGER_H_ 1 #include #include #include "schematic.h" #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 oregano-0.84.41/src/file.c0000644000175000017500000001372413413640652014217 0ustar rubenruben/* * file.c * * * Authors: * Richard Hult * Ricardo Markiewicz * Andres de Barbara * Marc Lorber * * Web page: https://ahoi.io/project/oregano * * Copyright (C) 1999-2001 Richard Hult * Copyright (C) 2003,2006 Ricardo Markiewicz * Copyright (C) 2009-2012 Marc Lorber * * 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., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include "file.h" #include "schematic.h" #include "schematic-view.h" #include "dialogs.h" #include "save-schematic.h" 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, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_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] == '/') { g_free (name); name = NULL; } } 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, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_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); 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, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Save"), GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (dialog), TRUE); gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); 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; } 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, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_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; } oregano-0.84.41/waf0000755000175000017500000001003513424071216013034 0ustar rubenruben#!/usr/bin/env python3 # encoding: latin-1 # Thomas Nagy, 2005-2018 # """ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ import os, sys, inspect VERSION="2.0.14" REVISION="e67604cd8962dbdaf7c93e0d7470ef5b" GIT="353ffefa21e6f8795469d118d8059aa16ef49109" INSTALL='' C1='#(' C2='#&' C3='#%' cwd = os.getcwd() join = os.path.join WAF='waf' def b(x): return x if sys.hexversion>0x300000f: WAF='waf3' def b(x): return x.encode() def err(m): print(('\033[91mError: %s\033[0m' % m)) sys.exit(1) def unpack_wafdir(dir, src): f = open(src,'rb') c = 'corrupt archive (%d)' while 1: line = f.readline() if not line: err('run waf-light from a folder containing waflib') if line == b('#==>\n'): txt = f.readline() if not txt: err(c % 1) if f.readline() != b('#<==\n'): err(c % 2) break if not txt: err(c % 3) txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00')) import shutil, tarfile try: shutil.rmtree(dir) except OSError: pass try: for x in ('Tools', 'extras'): os.makedirs(join(dir, 'waflib', x)) except OSError: err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir) os.chdir(dir) tmp = 't.bz2' t = open(tmp,'wb') try: t.write(txt) finally: t.close() try: t = tarfile.open(tmp) except: try: os.system('bunzip2 t.bz2') t = tarfile.open('t') tmp = 't' except: os.chdir(cwd) try: shutil.rmtree(dir) except OSError: pass err("Waf cannot be unpacked, check that bzip2 support is present") try: for x in t: t.extract(x) finally: t.close() for x in ('Tools', 'extras'): os.chmod(join('waflib',x), 493) if sys.hexversion<0x300000f: sys.path = [join(dir, 'waflib')] + sys.path import fixpy2 fixpy2.fixdir(dir) os.remove(tmp) os.chdir(cwd) try: dir = unicode(dir, 'mbcs') except: pass try: from ctypes import windll windll.kernel32.SetFileAttributesW(dir, 2) except: pass def test(dir): try: os.stat(join(dir, 'waflib')) return os.path.abspath(dir) except OSError: pass def find_lib(): src = os.path.abspath(inspect.getfile(inspect.getmodule(err))) base, name = os.path.split(src) #devs use $WAFDIR w=test(os.environ.get('WAFDIR', '')) if w: return w #waf-light if name.endswith('waf-light'): w = test(base) if w: return w err('waf-light requires waflib -> export WAFDIR=/folder') dirname = '%s-%s-%s' % (WAF, VERSION, REVISION) for i in (INSTALL,'/usr','/usr/local','/opt'): w = test(i + '/lib/' + dirname) if w: return w #waf-local dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname) w = test(dir) if w: return w #unpack unpack_wafdir(dir, src) return dir wafdir = find_lib() sys.path.insert(0, wafdir) if __name__ == '__main__': from waflib import Scripting Scripting.waf_entry_point(cwd, VERSION, wafdir) oregano-0.84.41/HACKING.md0000644000175000017500000000613313413640652013727 0ustar rubenruben## HACKING ### Code Readable code with a sane amount of good comments (always describe the `why`, but not the `how` is prefered. #### Gettings started Have a look at existing bugs, small bugs are usually easy to fix and get your started. Have a dive through the `ARCHITECTURE.md` file which describes roughly how `Oregano` works from a top down point of view. #### ProTips 0. Be nice. 1. Be explicit in your commit messages. 2. Add test cases to the testsuite where possible. 3. Keep your code clean and comment if necessary or non trivial. 4. Comments might be outdated, but should be fairly trustable by now. 5. Check Travis CI for known build failures. 6. Fix the source of a bug, do not code around it. 7. Do not change things based on personal preference or lack of understanding. 8. Always note all the changes made in your commit messages. ---- #### Code ##### Coding style As always, code should be kept modular and all methods should get a sane name (R.I.P. foo & bar) New code should be written in mostly K&R fashion. It's easiest to show within an example snippet how code should look like: ```C /** * \brief description - may be ommitted * * description from a toplevel viewpoint, what it does * @param long_name some magic key * @param offset whatsoeverargument * @param zoom the new zoom level */ int some_function (gint16 long_name, gint16 offset, gint16 zoom) { int ret; // comments for developers // like why something is done or has to be done that specific way // example: // required to handle zoomed shifts long_name -= offset/zoom; ret = function_call (&long_name, zoom); return ret; } ``` Use tabs to indent, but spaces for syntetical linebreak indents. ```C { |←tab→|{ |←tab→|←tab→|a_very_long_func_name_breaking_120_chars (type first_argument, |←tab→|←tab→|← - - - any sane number of spaces - - - →|type second_argument, |←tab→|←tab→|← - - - any sane number of spaces - - - →|type third_argument); |←tab→|} } ``` Note: There is a lot of old code, that has mixed styling. It will be fixed over time. ### Tests Verify that all existing tests do pass before calling for review/doing merge requests by calling `waf runtests` after successfully compiling (installing is _not_ required). Add new tests whenever possible/sane! ### Commit messages Git commit messages should be one (1) line, describing the changeset briefly. If it closes a bug append a `, closes #bugnumber` or `, fixes #bugnumber`, where `#bugnumber` refers to the github bugtracker bugnumber. Always describe what effects your changes have or why that change was necessary if not obvious. Grid: Split into model and view objects, closes #77. The split was necessary due to ... and blah. --- ### Translations * `potfiles.in` list of files to be skimmed for translateable data. * `POTFILES.in` list of files to be translate to header files via `intltool-update` and the results will be added to `potfiles.in`. These are regenerated automatically via the `waf` target `spawnpot` and should not be modified manually but only via `po/wscript`. oregano-0.84.41/README.md0000644000175000017500000001255113413640652013621 0ustar rubenruben# oregano - an electrical engineering tool [![Join the chat at https://gitter.im/drahnr/oregano](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/drahnr/oregano?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Build Status](http://ci.spearow.io/api/v1/teams/main/pipelines/oregano/jobs/compile/badge)](http://ci.spearow.io/teams/main/pipelines/oregano) ![Maintainance Status: Passive](https://img.shields.io/badge/maintenance-passively--maintained-yellowgreen.svg) ### About oregano is an application for schematic capture and simulation of electronic circuits. The actual simulation is performed by Berkeley Spice, GNUcap or the new generation ngspice. oregano is licensed under the terms of the [GNU GPL-2.0](http://www.gnu.org/licenses/gpl-2.0.html) included in the file COPYING. ### Status The overall status should still be considered `meta-stable`, some deprecations are still to be taken core of, there is plenty to do :) ### Donations Donations are very welcome! [![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=drahnr&url=https://github.com/drahnr/oregano&title=oregano&language=&tags=github&category=software) ### Support The preferred way of supporting oregano is by sending patches and pull requests or filing bug reports. ---- ### Quick install guide #### Repositories If you are not going to build it yourself from source (which in fact is quite straightforward) you can grab a either a ready to install packages or distribution specific recipes: * Fedora - [stable and git](https://copr.fedoraproject.org/coprs/drahnr/oregano/) or via `dnf copr enable drahnr/oregano` * ArchLinux - [stable](https://aur.archlinux.org/packages/oregano/), [git](https://aur.archlinux.org/packages/oregano/) #### Requirements You need `gtk+-3.0`, `glib-2.0`, `gio-2.0`, `gtksourceview-3.0`, `goocanvas-2.0`, `libxml2` and `intltool` in order to build oregano. These are usually included in your favorite distributions repositories and can otherwise be found at the [gnome public ftp](ftp://ftp.gnome.org) server. In order to simulate a schematic you need either `ngspice` or `gnucap`. If you are running a recent `Fedora` or `Ubuntu`, you can simply use `su -c'./builddeps.sh'` to do that automatically. To install the packages yourself find the package lists under `pkg-list.fedora` respectivly `pkg-list.ubuntu` required for compilation. #### Building To build the oregano application issue the following for a debug build ./waf configure build --debug or the following for a release build ./waf configure build --release For additional options like specifying the install directory, consult ./waf --help Note that additional options can be passed to the `configure` stage, i.e. `waf configure --prefix="/usr" build -j6` is commonly used. **Attention!** If you install oregano to a different prefix than `/usr`, `/usr/local` keep in mind that the `GSettings` schema will be installed under `${PREFIX}/shared/glib-2.0/schemas/`, which will not be checked by default. So you need to export the schema location appropriately via `export XDG_DATA_DIRS=/usr/local/share:/usr/share:${HOME}/.local/share:${PREFIX}/share` before launching oregano, see [xdg basedir spec](http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html) for further details. Omitting the `--prefix=..` option results in `/usr/local` as prefix, which works just fine. #### Installation For installation to the default directories, it is usually required to run ./waf install with root privileges. After installation oregano can be started by running `oregano` from terminal. #### Removal ./waf uninstall **Attention!** On subsequent installs with different prefixes this will only remove the last install! ---- ### Contributions are very welcome! We provide `TODO`,`ARCHITECTURE.md`, `HACKING.md` and the files under `docs/*` as a starting point, an overview that should help you going. If you want to discuss an issue or something you would like to implement, don't be shy, drop a message to [gitter.im](https://gitter.im/drahnr/oregano) #### Packaging This repo also tracks packaging information for fedora (which should also be used for RedHat and CentOS, `oregano.spec`, use `./waf dist` or `git archive --format tar --prefix oregano/ HEAD | xz > $HOME/rpmbuild/SOURCE/oregano-0.83.3.tar.xz && cp oregano.spec $HOME/rpmbuild/SPECS/oregano.spec`), Ubuntu (and thus Debian unstable, see the `debian` subdir) and soon to come for Mac (`macports` only contains a draft right now). If you see the need for more platforms we'd be happy to include even more. #### Bugs For bug and issue tracking as well as feature requests, the github built in issue tracker plus [waffle.io](https://waffle.io/drahnr/oregano) #### Translations Translators are welcome to translate at transifex which will be synced into the git repository a day before a new release is created (see the release milestones for planned release dates) **Attention!** Currently translations are out of sync and will stay so until the next stable release since many error and ui strings are in the process of being unified. ---- ### FAQ Q: Why are you doing this? A: If I don't nobody else does. Also: I really like to tinker with electronics and the workflow of geda and friends or running wine to use a glitchy windows shareware never was an option for me. oregano-0.84.41/AUTHORS0000644000175000017500000000035713413640652013413 0ustar rubenrubenRichard Hult Ricardo Markiewicz Andrés de Barbará Marc Lorber Bernhard Schuster Guido Trentalancia oregano-0.84.41/po/0000755000175000017500000000000013413640652012754 5ustar rubenrubenoregano-0.84.41/po/ru.po0000644000175000017500000011051413413640652013744 0ustar rubenruben# translation of ru.po to Russian # Copyright (C) 2001, 2005 Free Software Foundation, Inc. # Valek Filippov , 2001. # Yuri Kozlov , 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 \n" "Language-Team: Russian \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 "AC Analysis Options" msgstr "Параметры анализа по переменному току" #: ../data/dialogs/clamp-properties-dialog.glade2.h:2 msgid "Type" msgstr "Тип" #: ../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 "Alignment" 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 msgid "Print Properties" msgstr "Параметры печати" #: ../data/dialogs/part-browser.glade2.h:1 msgid "Preview" msgstr "Предварительный просмотр" #: ../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 "Plot" msgstr "Диаграмма" #: ../data/dialogs/plot-window.glade2.h:2 msgid "Variables" msgstr "Переменные" #: ../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 "Comments" 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 msgid "Title:" msgstr "Заголовок:" #: ../data/dialogs/settings.glade2.h:1 msgid "\n" msgstr "\n" #: ../data/dialogs/settings.glade2.h:3 msgid "Data Paths" msgstr "Пути к данным" #: ../data/dialogs/settings.glade2.h:4 msgid "Engine" msgstr "Механизм" #: ../data/dialogs/settings.glade2.h:5 msgid "Executable Path" msgstr "Путь к исполняемым файлам" #: ../data/dialogs/settings.glade2.h:6 msgid "File Format" msgstr "Формат файла" #: ../data/dialogs/settings.glade2.h:7 msgid "User Interface" msgstr "Пользовательский интерфейс" #: ../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 "AC" msgstr "AC" #: ../data/dialogs/sim-settings.glade2.h:2 msgid "DC Sweep" msgstr "DC Sweep" #: ../data/dialogs/sim-settings.glade2.h:3 msgid "Fourier" msgstr "Фурье" #: ../data/dialogs/sim-settings.glade2.h:4 msgid "Transient" 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 "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 "Text" msgstr "Текст" #: ../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: %s" msgstr "Прогресс:" #: ../src/simulation.c:201 msgid "" "The simulation was aborted due to an " "error.\n" "\n" "Would you like to view the error log?" msgstr "" "Моделирование было прервано из-за " "ошибки.\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 "" "Save changes to schematic %s before " "closing?\n" "\n" "If you don't save, all changes since you last saved will be permanently lost." msgstr "" "Файл схемы %s изменён\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 "Format" #~ msgstr "Формат" #~ msgid "Size" #~ msgstr "Размер" #~ msgid "Height : " #~ msgstr "Высота : " #~ msgid "Plot Export" #~ msgstr "Экспорт диаграммы" #~ msgid "Portable Network Graphics (png)" #~ msgstr "Переносимая сетевая графика (png)" #~ msgid "Postscript (ps)" #~ msgstr "Postscript (ps)" #~ msgid "Width : " #~ msgstr "Ширина : " oregano-0.84.41/po/ChangeLog0000644000175000017500000000135513413640652014532 0ustar rubenruben2005-10-18 Ricardo Markiewicz * pl.po : Added. Thanks to Wojciech Mula * fr.po : Updated. 2004-08-11 Maximiliano Curia * es.po: Updated. 2001-04-15 Richard Hult * es.po: Fixed spelling mistake. 2001-02-18 Richard Hult * sv.po: Updated. 2000-12-06 Richard Hult * Added translations. 2000-03-15 Richard Hult * sv.po: Updated translation. 2000-03-07 Richard Hult * fr.po: Added French translation. 1999-11-05 Richard Hult * it.po: Added Italian translation from Elker Cavina oregano-0.84.41/po/ja.po0000644000175000017500000010477113413640652013720 0ustar rubenruben# ja.po for oregano. # Copyright (C) 2000 Free Software Foundation, Inc. # Kazuya NUMATA , 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 \n" "Language-Team: Japanese \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 "AC Analysis Options" msgstr "ץ" #: ../data/dialogs/clamp-properties-dialog.glade2.h:2 #, fuzzy msgid "Type" 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 "Alignment" 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 "Preview" 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 "Plot" msgstr "ե" #: ../data/dialogs/plot-window.glade2.h:2 #, fuzzy msgid "Variables" 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 "Comments" 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 "Data Paths" msgstr "¹ԥץ" #: ../data/dialogs/settings.glade2.h:4 msgid "Engine" msgstr "" #: ../data/dialogs/settings.glade2.h:5 #, fuzzy msgid "Executable Path" msgstr "¹ԥץ" #: ../data/dialogs/settings.glade2.h:6 #, fuzzy msgid "File Format" msgstr "ե" #: ../data/dialogs/settings.glade2.h:7 #, fuzzy msgid "User Interface" 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 "AC" msgstr "" #: ../data/dialogs/sim-settings.glade2.h:2 #, fuzzy msgid "DC Sweep" msgstr "DC ް" #: ../data/dialogs/sim-settings.glade2.h:3 #, fuzzy msgid "Fourier" msgstr "աꥨ" #: ../data/dialogs/sim-settings.glade2.h:4 #, fuzzy msgid "Transient" 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 "Text" 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: %s" msgstr "ʹԾ:" #: ../src/simulation.c:201 #, fuzzy msgid "" "The simulation was aborted due to an " "error.\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 "" "Save changes to schematic %s before " "closing?\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 "Format" #~ msgstr "ե" #, fuzzy #~ msgid "Size" #~ msgstr "" #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "줿եߤĤޤǤ: %s" #~ msgid " " #~ msgstr " " #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s" #~ msgstr "줿եߤĤޤǤ: %s" #, fuzzy #~ msgid "" #~ "Could not load file.\n" #~ "\n" #~ "%s" #~ msgstr "줿եߤĤޤǤ: %s" #, fuzzy #~ msgid "" #~ "Could not create a netlist\n" #~ "\n" #~ "%s" #~ msgstr "줿եߤĤޤǤ: %s" #, fuzzy #~ msgid "Could not create log window." #~ msgstr "ɥǤޤǤ" #, fuzzy #~ msgid "" #~ "Could not create settings dialog." #~ msgstr "ǤޤǤ" #, fuzzy #~ msgid "" #~ "Transient analysis\n" #~ "\n" #~ "Start time must be less than stop time." #~ msgstr "" #~ ":\n" #~ "\n" #~ "ϻ֤߻֤⾮ʤФʤޤ" #, fuzzy #~ msgid "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "ߥ졼ǤޤǤ" #, fuzzy #~ msgid "" #~ "Could not create simulation dialog." #~ "" #~ msgstr "ߥ졼ȥǤޤǤ" #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "줿եߤĤޤǤ: %s" #, fuzzy #~ msgid "" #~ "Could not create textbox properties dialog." #~ msgstr "ƥȥܥåץѥƥǤޤǤ" #, fuzzy #~ msgid "" #~ "Could not save temporary netlist " #~ "file:\n" #~ "%s\n" #~ msgstr "줿եߤĤޤǤ: %s" #, fuzzy #~ msgid "window" #~ msgstr "ɥ" #, fuzzy #~ msgid "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "ߥ졼ǤޤǤ" #, fuzzy #~ msgid "Oregano" #~ msgstr "ե򳫤" #, fuzzy #~ msgid "Set the zoom factor to 200%" #~ msgstr "Ψ 100 % " #, fuzzy #~ msgid "" #~ "Could not create a netlist\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 "" #~ "Could not find the required file:\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" #~ "''˥ɥåƲ" oregano-0.84.41/po/de.po0000644000175000017500000007501113413640652013710 0ustar rubenruben# 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 \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 "AC Analysis Options" msgstr "AC Analyse Optionen" #: ../data/dialogs/clamp-properties-dialog.glade2.h:2 msgid "Type" msgstr "Typ" #: ../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 "Alignment" msgstr "Alignment" #: ../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 "Preview" msgstr "Ansicht" #: ../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 "Plot" msgstr "Plot" #: ../data/dialogs/plot-window.glade2.h:2 msgid "Variables" msgstr "Variablen" #: ../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 "Comments" msgstr "Kommentare" #: ../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 "Data Paths" msgstr "Datenpfade" #: ../data/dialogs/settings.glade2.h:4 msgid "Engine" msgstr "Engine" #: ../data/dialogs/settings.glade2.h:5 msgid "Executable Path" msgstr "Programmpfad" #: ../data/dialogs/settings.glade2.h:6 msgid "File Format" msgstr "Dateiformat" #: ../data/dialogs/settings.glade2.h:7 msgid "User Interface" msgstr "Benutzerinterface" #: ../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 "AC" msgstr "AC" #: ../data/dialogs/sim-settings.glade2.h:2 msgid "DC Sweep" msgstr "DC Sweep" #: ../data/dialogs/sim-settings.glade2.h:3 msgid "Fourier" msgstr "Fourier" #: ../data/dialogs/sim-settings.glade2.h:4 msgid "Transient" msgstr "Transient" #: ../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 "Text" msgstr "Text" #: ../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: %s" msgstr "Fortschritt:" #: ../src/simulation.c:201 msgid "" "The simulation was aborted due to an " "error.\n" "\n" "Would you like to view the error log?" msgstr "" "Die Simulation wurde aufgrund eines " "Fehlers Abgebrochen.\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 "" "Save changes to schematic %s before " "closing?\n" "\n" "If you don't save, all changes since you last saved will be permanently lost." msgstr "" "Schaltplan %s wurde geaendert\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 "Format" #~ msgstr "Format" #~ msgid "Size" #~ msgstr "Groesse" #~ 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 : " oregano-0.84.41/po/it.po0000644000175000017500000011404513413640652013735 0ustar rubenruben# Italian translation of Oregano # Copyright (C) 1999 Free Software Foundation, Inc. # Elker Cavina , 1999. # Guido Trentalancia , 2017. # 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: Guido Trentalancia \n" "Language-Team: Italian \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 "AC Analysis Options" msgstr "Opzioni dell'analisi AC" #: ../data/dialogs/clamp-properties-dialog.glade2.h:2 msgid "Type" msgstr "Tipo" #: ../data/dialogs/clamp-properties-dialog.glade2.h:3 msgid "Current" msgstr "Corrente" #: ../data/dialogs/clamp-properties-dialog.glade2.h:4 msgid "Edit Clamp properties" msgstr "Modifica le proprieta'" #: ../data/dialogs/clamp-properties-dialog.glade2.h:5 msgid "Imaginary part" msgstr "Parte immaginaria" #: ../data/dialogs/clamp-properties-dialog.glade2.h:6 msgid "Magnitude" msgstr "Modulo" #: ../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 reale" #: ../data/dialogs/clamp-properties-dialog.glade2.h:9 msgid "Use decibel scale" msgstr "Usa la scala logaritmica" #: ../data/dialogs/clamp-properties-dialog.glade2.h:10 msgid "Voltage" msgstr "Voltaggio" #: ../data/dialogs/log-window.glade2.h:1 msgid "Clear" msgstr "Pulisci" #: ../data/dialogs/log-window.glade2.h:2 msgid "Oregano Log Window" msgstr "Resoconto di Oregano" #: ../data/dialogs/page-properties.glade2.h:1 msgid "Alignment" msgstr "Allineamento" #: ../data/dialogs/page-properties.glade2.h:2 msgid "Center Horizontally" msgstr "Centra orizzontalmente" #: ../data/dialogs/page-properties.glade2.h:3 msgid "Center Vertically" msgstr "Centra verticalmente" #: ../data/dialogs/page-properties.glade2.h:4 msgid "Fit to page" msgstr "Adatta alla pagina" #: ../data/dialogs/part-browser.glade2.h:1 msgid "Preview" msgstr "Anteprima" #: ../data/dialogs/part-browser.glade2.h:2 msgid "Library:" msgstr "Libreria:" #: ../data/dialogs/part-browser.glade2.h:3 ../src/schematic-view-menu.h:360 msgid "Parts" msgstr "Componenti" #: ../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 "Premi questo bottone per inserire il componente" #: ../data/dialogs/part-browser.glade2.h:6 msgid "Search:" msgstr "Ricerca:" #: ../data/dialogs/part-browser.glade2.h:7 msgid "Select which library to use" msgstr "Seleziona una libreria" #: ../data/dialogs/part-properties-dialog.glade2.h:1 msgid "Part Properties" msgstr "Modifica le proprieta' del componente" #: ../data/dialogs/plot-window.glade2.h:1 msgid "Plot" msgstr "Grafico" #: ../data/dialogs/plot-window.glade2.h:2 msgid "Variables" msgstr "Variabili" #: ../data/dialogs/plot-window.glade2.h:3 msgid "Plot" msgstr "Grafico" #: ../data/dialogs/plot-window.glade2.h:4 msgid "Region" msgstr "Regione" #: ../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 "Comments" msgstr "Commenti" #: ../data/dialogs/properties.glade2.h:3 msgid "Author:" msgstr "Autore:" #: ../data/dialogs/properties.glade2.h:4 ../src/sheet/part-item.c:147 msgid "Properties" msgstr "Proprieta'" #: ../data/dialogs/properties.glade2.h:5 msgid "Title:" msgstr "Titolo:" #: ../data/dialogs/settings.glade2.h:1 msgid "\n" msgstr "" #: ../data/dialogs/settings.glade2.h:3 msgid "Data Paths" msgstr "Percorso dei dati" #: ../data/dialogs/settings.glade2.h:4 msgid "Engine" msgstr "" #: ../data/dialogs/settings.glade2.h:5 msgid "Executable Path" msgstr "Percorso dell'eseguibile" #: ../data/dialogs/settings.glade2.h:6 msgid "File Format" msgstr "Formato del documento" #: ../data/dialogs/settings.glade2.h:7 msgid "User Interface" msgstr "Interfaccia utente" #: ../data/dialogs/settings.glade2.h:8 msgid "Automatically show log windows after simulation" msgstr "Mostra automaticamente il resoconto dopo la simulazione" #: ../data/dialogs/settings.glade2.h:9 msgid "Compress saved files" msgstr "Comprimi i documenti salvati" #: ../data/dialogs/settings.glade2.h:10 msgid "Grid size[px] " msgstr "Dimensione della griglia [px]" #: ../data/dialogs/settings.glade2.h:11 msgid "Library" msgstr "Libreria" #: ../data/dialogs/settings.glade2.h:12 msgid "Model" msgstr "Modello" #: ../data/dialogs/settings.glade2.h:13 msgid "Paths" msgstr "Percorsi" #: ../data/dialogs/settings.glade2.h:14 msgid "Preferences" msgstr "Opzioni" #: ../data/dialogs/settings.glade2.h:15 msgid "Realtime update of selection (slow)" msgstr "Aggiornamento in tempo reale della selezione (lento)" #: ../data/dialogs/settings.glade2.h:16 msgid "Remove" msgstr "Rimuovi" #: ../data/dialogs/settings.glade2.h:17 msgid "Select A File" msgstr "Seleziona un documento" #: ../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 "AC" msgstr "Analisi AC" #: ../data/dialogs/sim-settings.glade2.h:2 msgid "DC Sweep" msgstr "Analisi in continua" #: ../data/dialogs/sim-settings.glade2.h:3 msgid "Fourier" msgstr "Fourier" #: ../data/dialogs/sim-settings.glade2.h:4 msgid "Transient" msgstr "Transitorio" #: ../data/dialogs/sim-settings.glade2.h:5 msgid "Add new options" msgstr "Aggiungi nuove opzioni" #: ../data/dialogs/sim-settings.glade2.h:6 msgid "Add to list" msgstr "Aggiungi alla lista" #: ../data/dialogs/sim-settings.glade2.h:7 msgid "Analysis Options" msgstr "Opzioni di analisi" #: ../data/dialogs/sim-settings.glade2.h:8 msgid "Analysis Parameters" msgstr "Parametri di analisi" #: ../data/dialogs/sim-settings.glade2.h:9 msgid "DEC" msgstr "Logaritmica" #: ../data/dialogs/sim-settings.glade2.h:10 msgid "Frequency" msgstr "Frequenza" #: ../data/dialogs/sim-settings.glade2.h:11 msgid "LIN" msgstr "Lineare" #: ../data/dialogs/sim-settings.glade2.h:12 msgid "List of outputs" msgstr "Lista delle uscite" #: ../data/dialogs/sim-settings.glade2.h:13 msgid "OCT" msgstr "" #: ../data/dialogs/sim-settings.glade2.h:14 msgid "Points" msgstr "Punti" #: ../data/dialogs/sim-settings.glade2.h:15 msgid "Simulation Settings" msgstr "Impostazioni della Simulazione" #: ../data/dialogs/sim-settings.glade2.h:16 msgid "Source" msgstr "Sorgente" #: ../data/dialogs/sim-settings.glade2.h:17 msgid "Start" msgstr "Inizio" #: ../data/dialogs/sim-settings.glade2.h:18 msgid "Step" msgstr "Passo" #: ../data/dialogs/sim-settings.glade2.h:19 msgid "Stop" msgstr "Fine" #: ../data/dialogs/sim-settings.glade2.h:20 msgid "Type" msgstr "Tipo" #: ../data/dialogs/sim-settings.glade2.h:21 msgid "Use Initial Conditions" msgstr "Usa le condizioni iniziali" #: ../data/dialogs/simulation.glade2.h:1 msgid "Progress: None" msgstr "Avanzamento: Nessuno" #: ../data/dialogs/simulation.glade2.h:2 msgid "Simulation" msgstr "Simulazione" #: ../data/dialogs/textbox-properties-dialog.glade2.h:2 msgid "Text" msgstr "Testo" #: ../data/dialogs/textbox-properties-dialog.glade2.h:3 msgid "Text Properties" msgstr "Proprieta' del testo" #: ../data/dialogs/view-netlist.glade2.h:1 msgid "Netlist View" msgstr "Vista della descrizione circuitale" #: ../src/sheet/part-item.c:147 msgid "Edit the part's properties" msgstr "Modifica le proprieta' 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 "Il documento %s non puo' essere trovato. Reinstallare 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 "Impossibile creare la finestra delle opzioni del componente." #: ../src/sheet/sheet-item.c:307 ../src/schematic-view-menu.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-menu.h:285 msgid "Cut" msgstr "Taglia" #: ../src/sheet/sheet-item.c:310 msgid "Cut the object to the clipboard" msgstr "Taglia l'oggetto e mettilo negli 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 "Modifica..." #: ../src/sheet/textbox-item.c:99 msgid "Edit the text" msgstr "Modifica il testo" #: ../src/sheet/textbox-item.c:596 msgid "Label" msgstr "Etichetta" #: ../src/sheet/textbox-item.c:681 ../src/sheet/textbox-item.c:690 msgid "Could not create textbox properties dialog" msgstr "Impossibile creare la finestra delle impostazioni della casella di testo" #: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115 msgid "Could not create simulation dialog" msgstr "Impossibile creare la finestra di simulazione " #: ../src/simulation.c:150 #, c-format msgid "Progress: %s" msgstr "Avanzamento: %s" #: ../src/simulation.c:201 msgid "" "The simulation was aborted due to an " "error.\n" "\n" "Would you like to view the error log?" msgstr "La simulazione e' stata interrotta da un'errore. Vuoi vedere il resoconto ?" #: ../src/simulation.c:211 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 "Aggiungi una nuova opzione" #: ../src/sim-settings.c:777 ../src/sim-settings.c:784 #: ../src/sim-settings.c:790 msgid "Could not create simulation settings dialog" msgstr "Impossibile creare la finestra delle impostazioni di simulazione " #: ../src/sim-settings.c:814 #, fuzzy msgid "Option" msgstr "Opzione" #: ../src/sim-settings.c:816 msgid "Value" msgstr "Valore" #: ../src/settings.c:141 ../src/settings.c:148 ../src/settings.c:154 msgid "Could not create settings dialog" msgstr "Impossibile creare la finestra delle impostazioni di simulazione" #: ../src/settings.c:215 msgid "Engine executable not found" msgstr "Eseguibile del simulatore non trovato" #: ../src/settings.c:216 msgid "The engine is unable to locate the external program." msgstr "Impossibile trovare il programma esterno di simulazione" #: ../src/schematic-view.c:254 msgid "Could not create properties dialog" msgstr "Impossibile creare la finestra delle opzioni" #: ../src/schematic-view.c:320 msgid "Could not create the page properties dialog" msgstr "Impossibile creare la finestra delle opzioni del foglio" #: ../src/schematic-view.c:383 msgid "Could not load file" msgstr "Impossibile 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 msgid "Could not save schematic file" msgstr "Impossibile salvare il documento dello schema" #: ../src/schematic-view.c:765 ../src/netlist-editor.c:225 #: ../src/netlist-editor.c:436 msgid "Could not create a netlist" msgstr "Impossibile creare la descrizione circuitale" #: ../src/schematic-view.c:768 ../src/netlist-editor.c:229 #: ../src/netlist-editor.c:439 msgid "An unexpected error has occurred" msgstr "Si e' verificato un errore imprevisto" #: ../src/schematic-view.c:1313 msgid "Untitled.netlist" msgstr "Senzatitolo.netlist" #: ../src/schematic-view.c:1504 #, c-format msgid "" "Save changes to schematic %s before " "closing?\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 "Chiudi senza salvare" #: ../src/schematic-view.c:2434 ../src/schematic-view.c:2445 msgid "Could not create the log window" msgstr "Impossibile creare la finestra con il resoconto" #: ../src/schematic-view-menu.h:50 msgid "_New" msgstr "_Nuovo" #: ../src/schematic-view-menu.h:50 msgid "Create a new schematic" msgstr "Crea un nuovo schema" #: ../src/schematic-view-menu.h:52 msgid "_Open" msgstr "Apri" #: ../src/schematic-view-ui.h:52 msgid "Open a schematic" msgstr "Apri uno schema" #: ../src/schematic-view-ui.h:54 msgid "_Recent Files" msgstr "Documenti recenti" #: ../src/schematic-view-ui.h:55 msgid "_Save" msgstr "_Salva" #: ../src/schematic-view-ui.h:55 msgid "Save a schematic" msgstr "Salva uno schema" #: ../src/schematic-view-ui.h:57 msgid "Save _As..." msgstr "Salva come..." #: ../src/schematic-view-ui.h:57 msgid "Save a schematic with other name" msgstr "Salva uno schema con un altro nome" #: ../src/schematic-view-menu.h:59 msgid "Print Properties" msgstr "Proprieta' di stampa" #: ../src/schematic-view-ui.h:59 msgid "Set print properties" msgstr "Modifica le proprieta' di stampa" #: ../src/schematic-view-ui.h:61 msgid "_Print" msgstr "Stam_pa" #: ../src/schematic-view-ui.h:61 msgid "Print schematic" msgstr "Stampa lo schema" #: ../src/schematic-view-menu.h:62 msgid "Print Preview" msgstr "Anteprima di Stampa" #: ../src/schematic-view-menu.h:62 msgid "Preview the schematic before printing" msgstr "Visualizza un'anteprima prima di stampare" #: ../src/schematic-view-menu.h:64 msgid "Schematic Pr_operties..." msgstr "Proprieta' dello schema..." #: ../src/schematic-view-menu.h:65 msgid "Modify the schematic's properties" msgstr "Modifica le proprieta' dello schema" #: ../src/schematic-view-ui.h:66 msgid "_Export..." msgstr "_Esporta..." #: ../src/schematic-view-ui.h:66 msgid "Export schematic" msgstr "Esporta schema" #: ../src/schematic-view-ui.h:67 msgid "_Close" msgstr "_Chiudi" #: ../src/schematic-view-ui.h:67 msgid "Close the current schematic" msgstr "Chiudi lo schema attuale" #: ../src/schematic-view-ui.h:69 msgid "_Quit" msgstr "Termina" #: ../src/schematic-view-ui.h:69 msgid "Close all schematics" msgstr "Termina il programma" #: ../src/schematic-view-ui.h:71 msgid "C_ut" msgstr "Taglia" #: ../src/schematic-view-ui.h:72 msgid "_Copy" msgstr "_Copia" #: ../src/schematic-view-ui.h:73 msgid "_Paste" msgstr "Incolla" #: ../src/schematic-view-menu.h:74 msgid "_Delete" msgstr "_Cancella" #: ../src/schematic-view-menu.h:96 msgid "Delete the selection" msgstr "Cancella la selezione" #: ../src/schematic-view-menu.h:76 msgid "_Rotate" msgstr "_Ruota" #: ../src/schematic-view-menu.h:77 msgid "Rotate the selection clockwise" msgstr "Ruota la selezione in senso orario" #: ../src/schematic-view-menu.h:78 msgid "Flip _horizontally" msgstr "Capovolgi orizzontalmente" #: ../src/schematic-view-menu.h:78 msgid "Flip the selection horizontally" msgstr "Capovolgi i componenti selezionati orizzontalmente" #: ../src/schematic-view-menu.h:80 msgid "Flip _vertically" msgstr "Capovolgi _verticalmente" #: ../src/schematic-view-menu.h:81 msgid "Flip the selection vertically" msgstr "Capovolgi i componenti selezionati verticalmente" #: ../src/schematic-view-menu.h:82 msgid "Select _all" msgstr "Selezion_a tutto" #: ../src/schematic-view-menu.h:82 msgid "Select all objects on the sheet" msgstr "Seleziona tutti gli oggetti nello schema" #: ../src/schematic-view-menu.h:84 msgid "Select _none" msgstr "Deselezio_na tutto" #: ../src/schematic-view-menu.h:85 msgid "Deselect the selected objects" msgstr "Deseleziona gli oggetti selezionati" #: ../src/schematic-view-menu.h:86 msgid "_Object Properties..." msgstr "Pr_oprieta' dell'oggetto..." #: ../src/schematic-view-menu.h:87 msgid "Modify the object's properties" msgstr "Modifica le proprieta' dell'oggetto" #: ../src/schematic-view-menu.h:88 msgid "Simulation S_ettings..." msgstr "S_ettaggi di Simulazione" #: ../src/schematic-view-menu.h:89 msgid "Edit the simulation settings" msgstr "Modifica le impostazioni di simulazione" #: ../src/schematic-view-ui.h:90 msgid "_Preferences" msgstr "Opzioni" #: ../src/schematic-view-ui.h:90 msgid "Edit Oregano settings" msgstr "Imposta le opzioni di Oregano" #: ../src/schematic-view-ui.h:92 msgid "_Simulate" msgstr "_Simula" #: ../src/schematic-view-menu.h:92 msgid "Run a simulation" msgstr "Lancia una simulazione" #: ../src/schematic-view-menu.h:94 msgid "_Generate netlist" msgstr "_Genera la descrizione circuitale" #: ../src/schematic-view-menu.h:94 msgid "Generate a netlist" msgstr "Genera la descrizione circuitale" #: ../src/schematic-view-menu.h:129 msgid "50%" msgstr "50%" #: ../src/schematic-view-menu.h:129 msgid "Set the zoom to 50%" msgstr "Imposta l'ingrandimento al 50%" #: ../src/schematic-view-menu.h:130 msgid "75%" msgstr "75%" #: ../src/schematic-view-menu.h:130 msgid "Set the zoom to 75%" msgstr "Imposta l'ingrandimento al 75%" #: ../src/schematic-view-menu.h:131 msgid "100%" msgstr "100%" #: ../src/schematic-view-menu.h:131 msgid "Set the zoom to 100%" msgstr "Imposta l'ingrandimento al 100%" #: ../src/schematic-view-menu.h:132 msgid "125%" msgstr "125%" #: ../src/schematic-view-menu.h:132 msgid "Set the zoom to 125%" msgstr "Imposta l'ingrandimento al 125%" #: ../src/schematic-view-menu.h:133 msgid "150%" msgstr "150%" #: ../src/schematic-view-menu.h:133 msgid "Set the zoom to 150%" msgstr "Imposta l'ingrandimento al 150%" #: ../src/schematic-view-menu.h:196 msgid "Zoom" msgstr "Ingrandimento" #: ../src/schematic-view-menu.h:98 msgid "_Log" msgstr "Resoconto della simulazione" #: ../src/schematic-view-menu.h:98 msgid "View the latest simulation log" msgstr "Visualizza il resoconto della simulazione" #: ../src/schematic-view-menu.h:118 msgid "_Node labels" msgstr "Etichette dei nodi" #: ../src/schematic-view-ui.h:118 msgid "Toggle node label visibility" msgstr "Mostra o nascondi le etichette dei nodi" #: ../src/schematic-view-menu.h:120 msgid "_Parts" msgstr "Mostra o nascondi il selettore dei componenti" #: ../src/schematic-view-menu.h:120 msgid "Toggle part browser visibility" msgstr "Mostra o nascondi il selezionatore dei componenti" #: ../src/schematic-view-ui.h:122 msgid "_Grid" msgstr "_Griglia" #: ../src/schematic-view-ui.h:122 msgid "Toggle grid visibility" msgstr "Mostra o nascondi la griglia" #: ../src/schematic-view-ui.h:124 msgid "LogView" msgstr "Visualizza il resoconto" #: ../src/schematic-view-ui.h:124 msgid "Toggle log view visibility" msgstr "Mostra o nascondi il resoconto" #: ../src/schematic-view-menu.h:99 msgid "N_etlist" msgstr "Visualizza la descrizione circuitale" #: ../src/schematic-view-menu.h:99 msgid "View the circuit netlist" msgstr "Mostra la descrizione circuitale corrente" #: ../src/schematic-view-menu.h:101 msgid "_About" msgstr "Inform_azioni" #: ../src/schematic-view-menu.h:102 msgid "User's Manual" msgstr "Manuale Utente" #: ../src/schematic-view-menu.h:44 msgid "_File" msgstr "Documento" #: ../src/schematic-view-menu.h:45 msgid "_Edit" msgstr "Modifica" #: ../src/schematic-view-menu.h:46 msgid "_Tools" msgstr "S_trumenti" #: ../src/schematic-view-menu.h:47 msgid "_View" msgstr "Vista" #: ../src/schematic-view-menu.h:48 msgid "_Help" msgstr "Aiuto" #: ../src/schematic-view-menu.h:264 msgid "New" msgstr "Nuovo" #: ../src/schematic-view-menu.h:267 msgid "Open" msgstr "Apri" #: ../src/schematic-view-menu.h:267 msgid "Open an existing schematic" msgstr "Apri uno schema esistente" #: ../src/schematic-view-menu.h:270 msgid "Save" msgstr "Salva" #: ../src/schematic-view-menu.h:270 msgid "Save the schematic" msgstr "Salva lo schema" #: ../src/schematic-view-menu.h:285 msgid "Cut the selection to the clipboard" msgstr "Taglia la selezione negli appunti" #: ../src/schematic-view-menu.h:288 msgid "Copy the selection to the clipboard" msgstr "Copia la selezione negli appunti" #: ../src/schematic-view-menu.h:291 ../src/schematic-view-menu.h:404 msgid "Paste" msgstr "Incolla" #: ../src/schematic-view-menu.h:291 msgid "Paste the clipboard" msgstr "Incolla il contenuto degli appunti" #: ../src/schematic-view-menu.h:301 msgid "Arrow" msgstr "Freccia" #: ../src/schematic-view-menu.h:302 msgid "Select, move and modify objects" msgstr "Seleziona, muovi e modifica oggetti" #: ../src/schematic-view-menu.h:307 msgid "Text" msgstr "Testo" #: ../src/schematic-view-menu.h:308 msgid "Put text on the schematic" msgstr "Inserisci un testo nello schema" #: ../src/schematic-view-menu.h:313 msgid "Wires" msgstr "Fili" #: ../src/schematic-view-menu.h:139 msgid "Draw wires" msgstr "Traccia fili" #: ../src/schematic-view-menu.h:140 msgid "Add voltage clamp" msgstr "Aggiungi un voltmetro" #: ../src/schematic-view-menu.h:331 msgid "Add a Voltage test clamp" msgstr "Aggiungi un voltmetro" #: ../src/schematic-view-menu.h:336 msgid "Simulate" msgstr "Simula" #: ../src/schematic-view-menu.h:337 msgid "Run a simulation for the current schematic" msgstr "Lancia la simulazione dello schema corrente" #: ../src/schematic-view-menu.h:342 ../src/schematic-view-menu.h:343 msgid "Simulation settings" msgstr "Impostazioni di Simulazione" #: ../src/schematic-view-menu.h:361 msgid "Show or hide the part browser" msgstr "Mostra o nascondi il navigatore delle parti" #: ../src/schematic-view-menu.h:366 msgid "Grid" msgstr "Griglia" #: ../src/schematic-view-menu.h:367 msgid "Turn on/off the grid" msgstr "Mostra/Nascondi la griglia" #: ../src/schematic-view-menu.h:104 msgid "Zoom in" msgstr "Ingrandisci" #: ../src/schematic-view-menu.h:105 msgid "Zoom out" msgstr "Rimpicciolisci" #: ../src/schematic-view-menu.h:107 msgid "Stretch to the left" msgstr "Estendi orizzontalmente" #: ../src/schematic-view-menu.h:109 msgid "Stretch to the right" msgstr "Estendi orizzontalmente" #: ../src/schematic-view-menu.h:111 msgid "Stretch the top" msgstr "Estendi verticalmente" #: ../src/schematic-view-menu.h:113 msgid "Stretch the bottom" msgstr "Estendi verticalmente" #: ../src/schematic-view-menu.h:405 msgid "Paste the contents of the clipboard to the sheet" msgstr "Incolla il contenuto degli appunti nel foglio" #: ../src/print.c:297 msgid "Print" msgstr "Stampa" #: ../src/print.c:304 msgid "Pages" msgstr "Pagine" #: ../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 "Impossibile creare i caratteri per la stampa." #: ../src/print.c:372 msgid "Printing failed." msgstr "Stampa non riuscita." #: ../src/plot.c:61 ../src/plot.c:62 msgid "Sans 10" msgstr "" #: ../src/plot.c:63 msgid "Sans 8" msgstr "" #: ../src/plot.c:151 msgid "Preview the plot before printing" msgstr "Visualizza un'anteprima del grafico prima di stampare" #: ../src/plot.c:153 msgid "Export plot" msgstr "Esporta il grafico" #: ../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 "O_pzioni..." #: ../src/plot.c:182 msgid "Show crosshairs" msgstr "" #: ../src/plot.c:183 msgid "_Zoom" msgstr "_Ingrandimento" #: ../src/plot.c:190 msgid "Schematic Plot" msgstr "Grafico dello schema" #: ../src/plot.c:197 msgid "_Plot" msgstr "Grafica" #. Simulation failed? #: ../src/plot.c:330 msgid "The simulation produced no data!!\n" msgstr "La simulazione non ha prodotti dati !!\n" #: ../src/plot.c:340 ../src/plot.c:574 #, c-format msgid "Plot - %s" msgstr "Grafico - %s" #: ../src/plot.c:349 msgid "Nodes" msgstr "Nodi" #: ../src/plot.c:352 ../src/plot.c:636 msgid "Functions" msgstr "Funzioni" #: ../src/plot.c:424 msgid "Oregano - Plot" msgstr "Oregano - Grafico" #: ../src/plot.c:436 ../src/plot.c:443 msgid "Could not create plot window." msgstr "Impossibile creare la finestra del grafico." #: ../src/plot.c:659 msgid "TRANSFER" msgstr "" #: ../src/plot.c:691 ../src/plot.c:698 msgid "Could not create plot export window." msgstr "Impossibile creare la finestra di esportazione del grafico." #. 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 "Impossibile caricare il componente richiesto" #: ../src/part-browser.c:499 ../src/part-browser.c:507 msgid "Could not create part browser" msgstr "Impossibile creare il selettore dei componenti" #: ../src/oregano-config.c:123 #, c-format msgid "Loading %s ..." msgstr "Caricamento di %s ..." #: ../src/oregano-config.c:164 #, c-format msgid "Could not read the parts library: %s " msgstr "Impossibile leggere la libreria dei componenti: %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 documento e' probabilmente rovinato. Prova a reinstallare\n" "la libreria dei componenti o Oregano e riprova." #: ../src/engines/netlist.c:436 msgid "No ground node. Aborting.\n" msgstr "Nessun nodo di massa. Impossibile continuare.\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 "" "Impossibile generare la descrizione circuitale, probabilmente\n" "questo e' 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 "Non sono stati trovati voltmetri. Impossibile continuare.\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 "" "Impossibile generare la descrizione circuitale, probabilmente\n" "questo e' dovuto ad uno schema non corretto. Controlla di avere\n" "uno o piu' voltmetri e riprova." #: ../src/engines/gnucap.c:299 msgid "### Too few or none analysis found ###\n" msgstr "### Nessuna analisi trovata ###\n" #: ../src/engines/gnucap.c:366 msgid "Unable to execute GnuCap." msgstr "Impossibile eseguire GnuCap." #: ../src/engines/gnucap.c:383 msgid "None" msgstr "Nessuno" #: ../src/engines/gnucap.c:586 msgid "time" msgstr "tempo" #: ../src/engines/gnucap.c:591 ../src/engines/gnucap.c:601 msgid "voltage" msgstr "voltaggio" #: ../src/engines/gnucap.c:596 msgid "frequency" msgstr "frequenza" #: ../src/engines/gnucap.c:645 msgid "Unknown analysis" msgstr "Tipo di analisi sconosciuto" #: ../src/engines/gnucap.c:693 #, fuzzy msgid "abort" msgstr "interrompi" #: ../src/engines/engine.c:32 msgid "Operating Point" msgstr "Punto di polarizzazione" #: ../src/engines/engine.c:33 msgid "Transient Analysis" msgstr "Analisi del transitorio" #: ../src/engines/engine.c:34 msgid "DC transfer characteristic" msgstr "Caratteristica di trasferimento in continua" #: ../src/engines/engine.c:35 msgid "AC Analysis" msgstr "Analisi AC" #: ../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 "Analisi del rumore" #: ../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 "Tipo di analisi sconosciuto" #: ../src/netlist-editor.c:172 #, c-format msgid "Netlist for %s" msgstr "Descrizione circuitale per %s" #: ../src/netlist-editor.c:173 #, c-format msgid "Author : %s" msgstr "Autore : %s" #: ../src/netlist-editor.c:186 msgid "Page %N of %Q" msgstr "Pagina %N su un totale di %Q" #: ../src/netlist-editor.c:238 ../src/netlist-editor.c:274 #, c-format msgid "The file %s could not be saved" msgstr "Il documento %s non puo' essere salvato" #: ../src/netlist-editor.c:239 ../src/netlist-editor.c:275 msgid "Could not save temporary netlist file" msgstr "Impossibile salvare il documento temporaneo della descrizione circuitale" #: ../src/netlist-editor.c:311 msgid "Could not create the netlist dialog" msgstr "Impossibile creare la finestra delle impostazioni." #. gettext support #: ../src/netlist-editor.c:390 #, c-format msgid "The file %s could not be found." msgstr "Il documento %s non puo' essere trovato." #: ../src/netlist-editor.c:391 msgid "Could not find the required file" msgstr "" "Impossibile trovare il documento 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 "Benvenuti in Oregano" #: ../src/load-schematic.c:261 msgid "Bad file format." msgstr "Formato del documento non riconosciuto." #: ../src/load-schematic.c:271 msgid "Unknown parser error." msgstr "Errore di interpretazione sconosciuto." #: ../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 il componente richiesto: %s\n" #: ../src/file.c:50 ../src/file.c:90 msgid "Oregano Files" msgstr "Documenti Oregano" #: ../src/file.c:52 ../src/file.c:92 msgid "All Files" msgstr "Tutti i documenti" #: ../src/file.c:55 msgid "Open File" msgstr "Apri il documento" #: ../src/file.c:95 msgid "Save File" msgstr "Salva il documento" #: ../src/file.c:145 msgid "Netlist File" msgstr "Nome del documento descrizione circuitale" #: ../src/file.c:221 msgid "Open file" msgstr "Apri documento" #: ../src/file.c:271 msgid "Save schematic as" msgstr "Salva lo schema come" #: ../src/file.c:336 msgid "Netlist filename" msgstr "Nome del documento descrizione circuitale" #: ../src/dialogs.c:141 msgid "Schematic capture and circuit simulation.\n" msgstr "Disegno e simulazione circuitale.\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 "Non posso creare il selettore dei componenti" #, 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" #~ msgid "Could not find the simulation executable" #~ msgstr "Impossibile trovare l'eseguibile del simulatore" #, 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 "Format" #~ msgstr "Formato del file" #, fuzzy #~ msgid "Size" #~ msgstr "Formato del file" #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "Non posso trovare il file richiesto:\n" #~ "%s" #~ msgid " " #~ msgstr " " #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s" #~ msgstr "" #~ "Non posso trovare il file richiesto:\n" #~ "%s" #, fuzzy #~ msgid "" #~ "Could not load file.\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Non posso trovare il file richiesto:\n" #~ "%s" #, fuzzy #~ msgid "" #~ "Could not create a netlist\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Non posso trovare il file richiesto:\n" #~ "%s" #, fuzzy #~ msgid "Could not create log window." #~ msgstr "Non posso creare il browser delle parti" #, fuzzy #~ msgid "" #~ "Could not create settings dialog." #~ msgstr "Non posso creare il dialogo dei settaggi." #, fuzzy #~ msgid "" #~ "Transient analysis\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 "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "Non posso creare il dialogo dei settaggi di simulazione " #, fuzzy #~ msgid "" #~ "Could not create simulation dialog." #~ "" #~ msgstr "Non posso creare il dialogo dei settaggi di simulazione " #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "Non posso trovare il file richiesto:\n" #~ "%s" #, fuzzy #~ msgid "" #~ "Could not create textbox properties dialog." #~ msgstr "Non posso creare il dialogo dei settaggi." #, fuzzy #~ msgid "" #~ "Could not save temporary netlist " #~ "file:\n" #~ "%s\n" #~ msgstr "" #~ "Non posso trovare il file richiesto:\n" #~ "%s" #, fuzzy #~ msgid "window" #~ msgstr "Annulla" #, fuzzy #~ msgid "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "Non posso creare il dialogo dei settaggi di simulazione " #, fuzzy #~ msgid "Oregano" #~ msgstr "Apri file" #, fuzzy #~ msgid "200%" #~ msgstr "200%" #~ msgid "Set the zoom factor to 200%" #~ msgstr "Imposta l'ingrandimento al 200%" #, fuzzy #~ msgid "" #~ "Could not create a netlist\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." #~ msgid "Library: " #~ msgstr "Libreria: " #~ msgid "Edit part properties" #~ msgstr "Modifica le proprieta' del componente" #~ msgid "label" #~ msgstr "etichetta" #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "" #~ msgstr "" #~ "Non posso trovare il file richiesto:\n" #~ "%s" #~ msgid "Paper Size" #~ msgstr "Dimensione del foglio" #~ 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?" #~ msgid "View the latest plot" #~ msgstr "Mostra il grafico attuale" #~ msgid "Default" #~ msgstr "Predefinito" #~ msgid "Spice Path: " #~ msgstr "Percorso di Spice: " #~ msgid "Data" #~ msgstr "Dati" #~ msgid "Library Path: " #~ msgstr "Percorso della Libreria: " #~ msgid "Model Path: " #~ msgstr "Percorso del Modello: " #~ msgid "Start time: " #~ msgstr "Tempo iniziale: " #~ msgid "Stop time: " #~ msgstr "Tempo finale: " #~ msgid "Step size: " #~ msgstr "Dimensione del passo: " #~ msgid "Enable" #~ msgstr "Abilita" #~ 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" oregano-0.84.41/po/LINGUAS0000644000175000017500000000011513413640652013776 0ustar rubenruben# keep this thing sorted alphabetically sv ru ro pt_BR pl ja it fr es de ca oregano-0.84.41/po/pt_BR.po0000644000175000017500000011043113413640652014322 0ustar rubenruben# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # Marcelo Elias Del Valle , 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 \n" "Language-Team: Português do Brasil \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 "AC Analysis Options" msgstr "Opções AC" #: ../data/dialogs/clamp-properties-dialog.glade2.h:2 #, fuzzy msgid "Type" msgstr "Tipo" #: ../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 "Alignment" 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 "Preview" 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 "Plot" msgstr "" #: ../data/dialogs/plot-window.glade2.h:2 msgid "Variables" msgstr "Variáveis" #: ../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 "Comments" 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 "Data Paths" msgstr "" #: ../data/dialogs/settings.glade2.h:4 msgid "Engine" msgstr "" #: ../data/dialogs/settings.glade2.h:5 #, fuzzy msgid "Executable Path" msgstr "Programas executáveis" #: ../data/dialogs/settings.glade2.h:6 msgid "File Format" msgstr "Formato de arquivo" #: ../data/dialogs/settings.glade2.h:7 msgid "User Interface" msgstr "Interface de usuário" #: ../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 "AC" msgstr "" #: ../data/dialogs/sim-settings.glade2.h:2 #, fuzzy msgid "DC Sweep" msgstr "Varredura DC (corrente contínua)" #: ../data/dialogs/sim-settings.glade2.h:3 msgid "Fourier" msgstr "Fourier" #: ../data/dialogs/sim-settings.glade2.h:4 msgid "Transient" msgstr "Transiente" #: ../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 "Text" msgstr "Texto" #: ../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: %s" msgstr "Progresso:" #: ../src/simulation.c:201 msgid "" "The simulation was aborted due to an " "error.\n" "\n" "Would you like to view the error log?" msgstr "" "A simulação foi abortada por um erro." "\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 "" "Save changes to schematic %s before " "closing?\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 "Format" #~ msgstr "Formato" #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "Não foi possível encontrar o arquivo requisitado:\n" #~ "%s" #~ msgid " " #~ msgstr "." #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s" #~ msgstr "" #~ "Não foi possível encontrar o arquivo requisitado:\n" #~ "%s" #, fuzzy #~ msgid "" #~ "Could not load file.\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Não foi possível encontrar o arquivo requisitado:\n" #~ "%s" #, fuzzy #~ msgid "" #~ "Could not create a netlist\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Não foi possível encontrar o arquivo requisitado:\n" #~ "%s" #, fuzzy #~ msgid "Could not create log window." #~ msgstr "Não foi possível criar uma janela de log." #, fuzzy #~ msgid "" #~ "Could not create settings dialog." #~ msgstr "Não foi possível criar janela de diálogo de configurações" #, fuzzy #~ msgid "" #~ "Transient analysis\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 "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "" #~ "Não foi possível criar janela de diálogo de ajustes de simulação" #, fuzzy #~ msgid "" #~ "Could not create simulation dialog." #~ "" #~ msgstr "Não foi possível criar janela de diálogo de simulação." #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "Não foi possível encontrar o arquivo requisitado:\n" #~ "%s" #, fuzzy #~ 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." #, fuzzy #~ msgid "" #~ "Could not save temporary netlist " #~ "file:\n" #~ "%s\n" #~ msgstr "" #~ "Não foi possível encontrar o arquivo requisitado:\n" #~ "%s" #, fuzzy #~ msgid "window" #~ msgstr "janela2" #, fuzzy #~ msgid "" #~ "Could not create simulation " #~ "settings dialog." #~ 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 "" #~ "Could not create a netlist\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 "" #~ "Could not find the required file:\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" oregano-0.84.41/po/ca.po0000644000175000017500000010001413413640652013673 0ustar rubenruben# translation of ca.po to Catalan # Traducció al català de l'Oregano. # Copyright © 2000, 2004 Free Software Foundation, Inc. # Joan Peris , Xàtiva,Novembre de 2000. # Toni Cunyat , Simat de la Valldigna, Novembre de 2000. # Jordi Mallach , 2004. # Orestes Mas , 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 \n" "Language-Team: Catalan \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 "AC Analysis Options" msgstr "Opcions de l'anàlisi d'AC" #: ../data/dialogs/clamp-properties-dialog.glade2.h:2 msgid "Type" msgstr "Tipus" #: ../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 "Alignment" msgstr "Alineament" #: ../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 "Preview" msgstr "Previsualitza" #: ../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 "Plot" msgstr "Gràfic" #: ../data/dialogs/plot-window.glade2.h:2 msgid "Variables" msgstr "Variables" #: ../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 "Comments" msgstr "Comentaris" #: ../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 "Data Paths" msgstr "Camins de dades" #: ../data/dialogs/settings.glade2.h:4 msgid "Engine" msgstr "Motor" #: ../data/dialogs/settings.glade2.h:5 msgid "Executable Path" msgstr "Camí dels executables" #: ../data/dialogs/settings.glade2.h:6 msgid "File Format" msgstr "Format del fitxer" #: ../data/dialogs/settings.glade2.h:7 msgid "User Interface" msgstr "Interfície d'usuari" #: ../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 "AC" msgstr "AC" #: ../data/dialogs/sim-settings.glade2.h:2 msgid "DC Sweep" msgstr "Escombrat DC" #: ../data/dialogs/sim-settings.glade2.h:3 msgid "Fourier" msgstr "Fourier" #: ../data/dialogs/sim-settings.glade2.h:4 msgid "Transient" msgstr "Transitòria" #: ../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 "Text" msgstr "Text" #: ../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: %s" msgstr "Progrés:" #: ../src/simulation.c:201 msgid "" "The simulation was aborted due to an " "error.\n" "\n" "Would you like to view the error log?" msgstr "" "S'ha avortat la simulació a causa d'un " "error.\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 "" "Save changes to schematic %s before " "closing?\n" "\n" "If you don't save, all changes since you last saved will be permanently lost." msgstr "" "L'esquemàtic %s té canvis sense desar\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 "Format" #~ msgstr "Format" #~ msgid "Size" #~ msgstr "Mida" #~ 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: " oregano-0.84.41/po/wscript0000644000175000017500000001102413413640652014370 0ustar rubenruben#! /usr/bin/env python # encoding: utf-8 top = '..' build = '../build' from waflib import Logs as logs def spawn_pot(ctx): """ Create the initial pot file containing strings to translate. """ #################################################################################################### #################################################################################################### #################################################################################################### def spawn_pot_run_stage1(task): srcs = task.inputs tgt = task.outputs[0] node = tgt.get_bld() for src in srcs: # this would work pretty well if intltool-update would not prefix another "../" - retarded # so now we go for hardcoding build/po and thus just prefixing another "../" for the source path and we are done" a = src.parent.get_bld() # cut off the filename, a = task.generator.bld.path b = src.get_src() src = b.path_from(a) if str(src).endswith(".ui"): node.write("[type: gettext/glade]../{0}\n".format(src), 'a') elif str(src).endswith(".gschema.xml") or str(src).endswith(".gschema.xml.in"): node.write("[type: gettext/gsettings]../{0}\n".format(src), 'a') elif str(src).endswith(".in"): node.write("../{0}\n".format(src), 'a') return 0 # gen a list of all ui and translateable files alias *.in nodes = [] nodes.extend(ctx.path.parent.ant_glob('**/*.in', excl=['*POTFILES*','*potfiles*','**/po/**', '**/*spec.in'])) nodes.extend(ctx.path.parent.ant_glob('**/*.ui')) ctx(rule = spawn_pot_run_stage1, name = "spawnpot - enlist", source = nodes, target = 'POTFILES.in') #################################################################################################### #################################################################################################### #################################################################################################### ### FIXME FIXME FIXME this pollutes the source directory! copy all nodes from "nodes" to the bld subdir and let intltool-update work from there ### FIXME FIXME FIXME this also would get rid of the hack reequireing a another "../" prefix def spawn_pot_run_stage2(task): srcs = task.inputs[0] tgt = task.outputs import os ret = task.exec_command('pwd; cd po; pwd; intltool-update --headers; cd ..; pwd') return ret # gen .h files for all non source files target_nodes = [str(node) + '.h' for node in nodes] ctx(rule=spawn_pot_run_stage2, name = "spawnpot - generate headers", source = 'POTFILES.in') # , # target = target_nodes) #################################################################################################### #################################################################################################### #################################################################################################### # def spawn_pot_run_stage3(task): # srcs = task.inputs # tgt = task.outputs[0] # node = tgt.get_bld() # print ("target3 {0} {1}".format(len(srcs),str(node.abspath()))) # for src in srcs: ## this would work pretty well if intltool-update would not prefix another "../" - retarded ## so now we go for hardcoding build/po and thus just prefixing another "../" for the source path and we are done" # a = src.parent.get_bld() # cut off the filename, # a = task.generator.bld.srcpath # b = src.get_src() # src = b.path_from(a) # src = src.srcpath # print ("tgt xx {0}".format(src) ) # node.write("{0}".format(src), 'a') # return 0 # # seek for all header and source files to translate and enlist them # totranslate = [] # totranslate.extend(ctx.path.parent.ant_glob('**/*.c', excl=['test/*.c'])) # totranslate.extend(ctx.path.parent.ant_glob('**/*.h', excl=['test/*.h'])) # ctx(rule = spawn_pot_run_stage3, # name = "spawnpot - collect", # source = totranslate, # target = 'potfiles.in', # after = "spawnpot - generate headers") # extract translateable strings from all c/h/generated h files # ctx(rule = 'xgettext -k_ -kN_ -E -f ./${SRC} --package-name='+ctx.env.appname+' --package-version '+ctx.env.version+' -o ${TGT}', # name = "spawnpot - generate .pot", # source = 'potfiles.in', # target = ctx.env.appname+'.pot') def update_po(ctx): """ Does not work yet. """ nodes = ctx.path.ant_glob('../build**.po') for node in nodes: ctx(rule = 'msgmerge -U "${SRC}" "${TGT}"', source = node, target = node) def options(opts): pass def configure(conf): pass def build(bld): bld( features='intltool_po', appname=bld.env.appname, podir='.', install_path="${LOCALEDIR}") oregano-0.84.41/po/POTFILES.skip0000644000175000017500000000005213413640652015066 0ustar rubenrubendata/netlist.lang data/oregano.desktop.in oregano-0.84.41/po/ro.po0000644000175000017500000010601613413640652013740 0ustar rubenruben# Oregano # Copyright (C) 2000 Free Software Foundation, Inc. # Marius Andreiana , 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 \n" "Language-Team: Românã \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 "AC Analysis Options" msgstr "" #: ../data/dialogs/clamp-properties-dialog.glade2.h:2 #, fuzzy msgid "Type" 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 "Alignment" 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 "Preview" 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 "Plot" msgstr "Format fiºier" #: ../data/dialogs/plot-window.glade2.h:2 #, fuzzy msgid "Variables" 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 "Comments" 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 "Data Paths" msgstr "Executabile" #: ../data/dialogs/settings.glade2.h:4 msgid "Engine" msgstr "" #: ../data/dialogs/settings.glade2.h:5 #, fuzzy msgid "Executable Path" msgstr "Executabile" #: ../data/dialogs/settings.glade2.h:6 #, fuzzy msgid "File Format" msgstr "Format fiºier" #: ../data/dialogs/settings.glade2.h:7 #, fuzzy msgid "User Interface" 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 "AC" msgstr "" #: ../data/dialogs/sim-settings.glade2.h:2 msgid "DC Sweep" msgstr "" #: ../data/dialogs/sim-settings.glade2.h:3 msgid "Fourier" msgstr "" #: ../data/dialogs/sim-settings.glade2.h:4 #, fuzzy msgid "Transient" 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 "Text" 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: %s" msgstr "Progres:" #: ../src/simulation.c:201 #, fuzzy msgid "" "The simulation was aborted due to an " "error.\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 "" "Save changes to schematic %s before " "closing?\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 "Format" #~ msgstr "Format fiºier" #, fuzzy #~ msgid "Size" #~ msgstr "Tranzitoriu" #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "Nu s-a putut gãsi fiºierul cerut:\n" #~ "%s" #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s" #~ msgstr "" #~ "Nu s-a putut gãsi fiºierul cerut:\n" #~ "%s" #, fuzzy #~ msgid "" #~ "Could not load file.\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Nu s-a putut gãsi fiºierul cerut:\n" #~ "%s" #, fuzzy #~ msgid "" #~ "Could not create a netlist\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Nu s-a putut gãsi fiºierul cerut:\n" #~ "%s" #, fuzzy #~ msgid "Could not create log window." #~ msgstr "Nu s-a putut crea fereastra de log." #, fuzzy #~ msgid "" #~ "Could not create settings dialog." #~ msgstr "Nu s-a putut crea dialogul de setãri." #, fuzzy #~ msgid "" #~ "Transient analysis\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 "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "Nu s-a putu crea dialogul de setãri simulare." #, fuzzy #~ msgid "" #~ "Could not create simulation dialog." #~ "" #~ msgstr "Nu s-a putut crea dialogul de simulare." #, fuzzy #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "Nu s-a putut gãsi fiºierul cerut:\n" #~ "%s" #, fuzzy #~ msgid "" #~ "Could not create textbox properties dialog." #~ msgstr "Nu s-a putut crea dialogul de proprietãþi pentru textbox." #, fuzzy #~ msgid "" #~ "Could not save temporary netlist " #~ "file:\n" #~ "%s\n" #~ msgstr "" #~ "Nu s-a putut gãsi fiºierul cerut:\n" #~ "%s" #, fuzzy #~ msgid "" #~ "Could not create simulation " #~ "settings dialog." #~ 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 "" #~ "Could not create a netlist\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 "" #~ "Could not find the required file:\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ã" oregano-0.84.41/po/es.po0000644000175000017500000011713113413640652013727 0ustar rubenruben# Traducción española de Oregano # Copyright (C) 2001 Free Software Foundation, Inc. # Antonio Martínez Alvarez , 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 \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 "AC Analysis Options" msgstr "Opciones para análisis AC" #: ../data/dialogs/clamp-properties-dialog.glade2.h:2 msgid "Type" msgstr "Tipo" #: ../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 "Alignment" msgstr "Alineación" #: ../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 "Preview" msgstr "Vista previa" #: ../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 "Plot" msgstr "Gráfica" #: ../data/dialogs/plot-window.glade2.h:2 msgid "Variables" msgstr "Variables" #: ../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 "Comments" msgstr "Comentarios" #: ../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 "Data Paths" msgstr "Rutas a datos" #: ../data/dialogs/settings.glade2.h:4 msgid "Engine" msgstr "Motor" #: ../data/dialogs/settings.glade2.h:5 msgid "Executable Path" msgstr "Ejecutables" #: ../data/dialogs/settings.glade2.h:6 msgid "File Format" msgstr "Formato de fichero" #: ../data/dialogs/settings.glade2.h:7 msgid "User Interface" msgstr "Interfaz de usuario" #: ../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 "AC" msgstr "AC" #: ../data/dialogs/sim-settings.glade2.h:2 msgid "DC Sweep" msgstr "Fuente DC" #: ../data/dialogs/sim-settings.glade2.h:3 msgid "Fourier" msgstr "Fourier" #: ../data/dialogs/sim-settings.glade2.h:4 msgid "Transient" msgstr "Análisis en el tiempo" #: ../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 "Text" msgstr "Texto" #: ../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: %s" msgstr "Evolución: %s" #: ../src/simulation.c:201 msgid "" "The simulation was aborted due to an " "error.\n" "\n" "Would you like to view the error log?" msgstr "" "La simulación ha finalizado debido a un " "error.\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 "" "Save changes to schematic %s before " "closing?\n" "\n" "If you don't save, all changes since you last saved will be permanently lost." msgstr "" "El esquemático %s tiene cambios sin " "guardar\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 "Format" #~ msgstr "Formato" #~ msgid "Size" #~ msgstr "Tamaño" #~ 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 "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "No se pudo encontrar el archivo " #~ "especificado:\n" #~ "%s\n" #~ msgid " " #~ msgstr " " #~ msgid "" #~ "Could not find the required file:\n" #~ "%s" #~ msgstr "" #~ "No se pudo encontrar el archivo " #~ "especificado:\n" #~ "%s" #~ msgid "" #~ "Could not load file.\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "No se pudo cargar el archivo\n" #~ "\n" #~ "%s" #~ msgid "" #~ "Could not save Schematic file\n" #~ "%s\n" #~ msgstr "" #~ "No su pudo guardar el archivo del " #~ "esquemático\n" #~ "%s\n" #~ msgid "" #~ "Could not create a netlist\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "No se pudo generar la lista de " #~ "nodos\n" #~ "\n" #~ "%s" #~ msgid "Unspected error!!!" #~ msgstr "Error no esperado!!!" #~ msgid "Could not create log window." #~ msgstr "No puede crear una ventana de log." #~ msgid "" #~ "Could not create settings dialog." #~ msgstr "" #~ "No se pudo crear un diálogo de " #~ "propiedades." #~ msgid "" #~ "Transient analysis\n" #~ "\n" #~ "Start time must be less than stop time." #~ msgstr "" #~ "Análisis en el tiempo\n" #~ "\n" #~ "El tiempo de inicio debe ser menor que el tiempo final." #~ msgid "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "" #~ "No se pudo crear el diálogo " #~ "depropiedades." #~ msgid "" #~ "Could not create simulation dialog." #~ "" #~ msgstr "" #~ "No se pudo crear el diálogo de " #~ "simulación." #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "No se pudo encontrar el archivo especificado:\n" #~ "%s\n" #~ "\n" #~ msgid "" #~ "Could not create textbox properties dialog." #~ msgstr "" #~ "No se pudo crear el diálogo de propiedades del " #~ "cuadro de texto." #~ msgid "" #~ "Could not save temporary netlist " #~ "file:\n" #~ "%s\n" #~ msgstr "" #~ "No se pudo generar lista de " #~ "nodotemporal:\n" #~ "%s\n" #~ msgid "window" #~ msgstr "ventana2" #~ msgid "No data for the Simulation !!\n" #~ msgstr "¡¡No hay datos de la simulación!!\n" #~ msgid "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "" #~ "No se pudo crear el diálogo de " #~ "propiedades." #~ 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 "" #~ "Could not create a netlist\n" #~ "\n" #~ "Possibly due an I/O error." #~ msgstr "" #~ "No se pudo crear el archivo de " #~ "netlist\n" #~ "\n" #~ "Posiblemente por un error de E/S." #~ msgid "" #~ "Could not create a netlist\n" #~ "\n" #~ "Possibly dueto a faulty circuit schematic. Please check that\n" #~ "you have one o more test clamps and try again." #~ msgstr "" #~ "No se pudo crear el listado de " #~ "nodos\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 "" #~ "Could not create a netlist\n" #~ "\n" #~ "Possibly due an I/O error." #~ msgstr "" #~ "No se pudo generar lista de nodos\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 " oregano-0.84.41/po/pl.po0000644000175000017500000011056113413640652013733 0ustar rubenruben# Copyright (C) 2001 Free Software Foundation, Inc. # Antonio Martnez Alvarez , 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 Mua \n" "Language-Team: Polish (Wojciech Mua) \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 "AC Analysis Options" msgstr "Opcje analizy zmiennoprdowej (AC)" #: ../data/dialogs/clamp-properties-dialog.glade2.h:2 msgid "Type" msgstr "Rodzaj" #: ../data/dialogs/clamp-properties-dialog.glade2.h:3 msgid "Current" msgstr "Prd" #: ../data/dialogs/clamp-properties-dialog.glade2.h:4 msgid "Edit Clamp properties" msgstr "Edycja waciwoci prbnika" #: ../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 "Uywaj skali decybelowej" #: ../data/dialogs/clamp-properties-dialog.glade2.h:10 msgid "Voltage" msgstr "Napicie" #: ../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 "Alignment" msgstr "Wyrwnanie" #: ../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 "Waciwoci drukowania" #: ../data/dialogs/part-browser.glade2.h:1 msgid "Preview" msgstr "Podgld" #: ../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 "Czci" #: ../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 "Nacinij przycisk, aby umieci 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 "Waciwoci elementu" #: ../data/dialogs/plot-window.glade2.h:1 msgid "Plot" msgstr "Wykres" #: ../data/dialogs/plot-window.glade2.h:2 msgid "Variables" msgstr "Zmienne" #: ../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 "Comments" msgstr "Komentarz" #: ../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 "Waciwoci" #: ../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 "Data Paths" msgstr "cieki do danych" #: ../data/dialogs/settings.glade2.h:4 msgid "Engine" msgstr "Symulator" #: ../data/dialogs/settings.glade2.h:5 msgid "Executable Path" msgstr "cieka do symulatora" #: ../data/dialogs/settings.glade2.h:6 msgid "File Format" msgstr "Format pliku" #: ../data/dialogs/settings.glade2.h:7 msgid "User Interface" msgstr "Interfejs uytkownika" #: ../data/dialogs/settings.glade2.h:8 msgid "Automatically show log windows after simulation" msgstr "Automatycznie pokazuj okno dziennika po zakoczeniu 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 "Gsto 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 "cieki" #: ../data/dialogs/settings.glade2.h:14 msgid "Preferences" msgstr "Waciwoci" #: ../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 uytkownika" #: ../data/dialogs/sim-settings.glade2.h:1 msgid "AC" msgstr "AC" #: ../data/dialogs/sim-settings.glade2.h:2 msgid "DC Sweep" msgstr "Przemiatanie wartoci rde DC" #: ../data/dialogs/sim-settings.glade2.h:3 msgid "Fourier" msgstr "Analiza czstotliwociowa (Fourier)" #: ../data/dialogs/sim-settings.glade2.h:4 msgid "Transient" msgstr "Analiza przejciowa" #: ../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 "Czstotliwo" #: ../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 punktw" #: ../data/dialogs/sim-settings.glade2.h:15 msgid "Simulation Settings" msgstr "Ustawienia symulacji" #: ../data/dialogs/sim-settings.glade2.h:16 msgid "Source" msgstr "rdo" #: ../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 "Uyj wartoci pocztkowych" #: ../data/dialogs/simulation.glade2.h:1 #, fuzzy msgid "Progress: None" msgstr "Postp:" #: ../data/dialogs/simulation.glade2.h:2 msgid "Simulation" msgstr "Symulacja" #: ../data/dialogs/textbox-properties-dialog.glade2.h:2 msgid "Text" msgstr "Tekst" #: ../data/dialogs/textbox-properties-dialog.glade2.h:3 msgid "Text Properties" msgstr "Waciwoci tekstu" #: ../data/dialogs/view-netlist.glade2.h:1 msgid "Netlist View" msgstr "Podgld listy pocze" #: ../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 waciwoci 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 mona stworzy okna dialogowego waciwoci." #: ../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 mona stworzy okna dialogowego waciwoci." #: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115 #, fuzzy msgid "Could not create simulation dialog" msgstr "Nie mona utworzy dialogu symulacji" #: ../src/simulation.c:150 #, fuzzy, c-format msgid "Progress: %s" msgstr "Postp:" #: ../src/simulation.c:201 #, fuzzy msgid "" "The simulation was aborted due to an " "error.\n" "\n" "Would you like to view the error log?" msgstr "" "Symulacja zostaa przerwana z powodu " "bdw.\n" "\n" "Chcesz zobaczy dziennik bdw?" #: ../src/simulation.c:211 #, fuzzy msgid "The simulation was aborted due to an error" msgstr "" "Symulacja zostaa przerwana z powodu " "bldw.\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 mona 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 mona 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 mona stworzy okna dialogowego waciwoci." #: ../src/schematic-view.c:320 #, fuzzy msgid "Could not create the page properties dialog" msgstr "Nie mona stworzy okna dialogowego waciwoci." #: ../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 mona 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 mona utworzy przegldarki elementw." #: ../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 "" "Save changes to schematic %s before " "closing?\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 mona 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 "Waciwoci 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 "Podgld wydruku" #: ../src/schematic-view-ui.h:57 msgid "Preview the schematic before printing" msgstr "Zobacz podgld schematu przed wydrukowaniem" #: ../src/schematic-view-ui.h:65 msgid "Schematic _Properties..." msgstr "Waciwoci _schematu" #: ../src/schematic-view-ui.h:66 msgid "Modify the schematic's properties" msgstr "Zmiana waciwoci 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 "Waciwoci _obiektu" #: ../src/schematic-view-ui.h:141 msgid "Modify the object's properties" msgstr "Modyfikacja waciwoci 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 "_Utwrz list pocze" #: ../src/schematic-view-ui.h:170 msgid "Generate a netlist" msgstr "Tworzenie listy pocze (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 powikszenie 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 powikszenie 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 "Powikszenie 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 powikszenie 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 powikszenie na 150%" #: ../src/schematic-view-ui.h:196 msgid "Zoom" msgstr "Powikszenie" #: ../src/schematic-view-ui.h:202 msgid "_Log" msgstr "Dziennik (_log)" #: ../src/schematic-view-ui.h:202 msgid "View the latest simulation log" msgstr "Wywietl dziennik z ostatniej symulacji" #: ../src/schematic-view-ui.h:205 #, fuzzy msgid "_Node labels" msgstr "_Wywietl nazwy wzw" #: ../src/schematic-view-ui.h:205 msgid "Show or hide node labels" msgstr "Wywietla lub ukrywa nazwy wzw" #: ../src/schematic-view-ui.h:207 #, fuzzy msgid "N_etlist" msgstr "Plik listy pocze" #: ../src/schematic-view-ui.h:208 #, fuzzy msgid "View the circuit netlist" msgstr "Podgld listy pocze (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 "_Narzdzia" #: ../src/schematic-view-ui.h:264 msgid "New" msgstr "Nowy" #: ../src/schematic-view-ui.h:267 msgid "Open" msgstr "Otwrz" #: ../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 "Strzaka" #: ../src/schematic-view-ui.h:302 msgid "Select, move and modify objects" msgstr "Wybieranie, przesuwanie, edycja obiektw" #: ../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 "Poczenia" #: ../src/schematic-view-ui.h:314 msgid "Draw wires" msgstr "Rysowanie pocze" #: ../src/schematic-view-ui.h:330 msgid "Add Voltage Clamp" msgstr "Dodaj prbnik napicia" #: ../src/schematic-view-ui.h:331 msgid "Add a Voltage test clamp" msgstr "Dodaje prbnik napicia" #: ../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 biecego 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 przegldark elementw" #: ../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 "Powikszenie" #: ../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 mona pobra rozmiarw kartki! Uywam domylnych!" #: ../src/print.c:353 msgid "Could not create font for printing." msgstr "Nie mona utworzy czcionki dla wydruku." #: ../src/print.c:372 msgid "Printing failed." msgstr "Drukowanie nie powiodo 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 podgld 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 "_Waciwoci..." #: ../src/plot.c:182 msgid "Show crosshairs" msgstr "Poka krzyyki" #: ../src/plot.c:183 msgid "_Zoom" msgstr "_Powikszenie" #: ../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 mona 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 mona 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 wyczone!" #: ../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 mona utworzy przegldarki elementw." #: ../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 mona utworzy przegldarki elementw." #: ../src/oregano-config.c:166 #, fuzzy msgid "" "The file is probably corrupt. Please reinstall the parts\n" "library or Oregano and try again." msgstr "" "Nie mog odczyta biblioteki " "elementw: %s\n" "\n" "Plik jest najprawdopodobniej uszkodzony.\n" "Zainstaluj od nowa biblioteki (albo nawet Oregano) i sprbuj 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 "" "Nie mona utworzy listy pocze\n" "\n" "Prawodpobnie powodem jest niewaciwie skonstruowany obwd.\n" "Sprawd, czy przynajmniej jeden wze 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 "" "No se pudo crear el listado de nodos\n" "\n" "Posiblemente debido a un fallo en el esquemtico. 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 "Napicie" #: ../src/engines/gnucap.c:596 #, fuzzy msgid "frequency" msgstr "Czstotliwo" #: ../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 przejciowa" #: ../src/engines/engine.c:34 msgid "DC transfer characteristic" msgstr "" #: ../src/engines/engine.c:35 msgid "AC Analysis" msgstr "Analiza zmiennoprdowa (AC)" #: ../src/engines/engine.c:36 #, fuzzy msgid "Transfer Function" msgstr "Transmitancja" #: ../src/engines/engine.c:37 msgid "Distortion Analysis" msgstr "Analiza rozrzutu parametrw" #: ../src/engines/engine.c:38 msgid "Noise Analysis" msgstr "Analiza szumw" #: ../src/engines/engine.c:39 msgid "Pole-Zero Analysis" msgstr "Analiza zer i biegunw ukadu" #: ../src/engines/engine.c:40 msgid "Sensitivity Analysis" msgstr "Analiza wraliwoci" #: ../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 pocze 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 mona stworzy okna dialogowego waciwoci." #: ../src/netlist-editor.c:311 #, fuzzy msgid "Could not create the netlist dialog" msgstr "Nie mona stworzy okna dialogowego waciwoci." #. 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 "Wcza pewne funkcje debuggujce" #: ../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 "" "Wyglda na to, e program Oregano\n" "nie zosta prawidowo zainstalowany.\n" "\n" "Zainstaluj poprawnie Oregano (lub popraw bdy instalacji jeli wiesz jak) i " "sprbuj 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 elementw.\n" "\n" "Prawdopodobnie jest to spowodowane bdn 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 "Otwrz plik" #: ../src/file.c:95 msgid "Save File" msgstr "Zapisz plik" #: ../src/file.c:145 msgid "Netlist File" msgstr "Plik listy pocze" #: ../src/file.c:221 msgid "Open file" msgstr "Otwrz plik" #: ../src/file.c:271 msgid "Save schematic as" msgstr "Zapisz schemat jako" #: ../src/file.c:336 msgid "Netlist filename" msgstr "Nazwa pliku listy pocze" #: ../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 schematw elektrycznych i symulacji obwodw.\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 mona utworzy okna wykresu." #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "Nie znaleziono danego pliku:\n" #~ "%s\n" #~ msgid "s" #~ msgstr "s" #~ msgid "Hz" #~ msgstr "Hz" #~ msgid "A" #~ msgstr "A" #~ msgid "" #~ "Could not find the required file:\n" #~ "%s" #~ msgstr "" #~ "Nie znaleziono danego pliku:\n" #~ "%s" #~ msgid "" #~ "Could not save Schematic file\n" #~ "%s\n" #~ msgstr "" #~ "Nie mona zapisa schematu do " #~ "pliku\n" #~ "%s\n" #~ msgid "" #~ "Could not create a netlist\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Nie mona utworzy listy pocze\n" #~ "\n" #~ "%s" #~ msgid "Unspected error!!!" #~ msgstr "" #~ "Niespodziewany bd!!!" #~ msgid "" #~ "Schematic %s has unsaved changes\n" #~ "\n" #~ "Do you want to save them?" #~ msgstr "" #~ "Schemat %s zosta zmieniony od " #~ "czasu ostatniego zapisu\n" #~ "\n" #~ "Chcesz zapisa zmiany?" #~ msgid "Could not create log window." #~ msgstr "Nie mona utworzy okna dziennika." #~ msgid "_View netlist" #~ msgstr "_Podgld listy pocze" #~ msgid "View plot" #~ msgstr "Wywietl wykres" #~ msgid "View plot " #~ msgstr "Wywietla wykres" #~ msgid "" #~ "Could not create settings dialog." #~ msgstr "" #~ "Nie mona utworzy okna " #~ "waciwoci." #~ msgid "" #~ "Transient analysis\n" #~ "\n" #~ "Start time must be less than stop time." #~ msgstr "" #~ "Analiza przejciowa\n" #~ "\n" #~ "Pocztkowy czas musi by mniejszy od kocowego." #~ msgid "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "" #~ "Nie mona utworzy okna ustawie " #~ "symulacji." #~ msgid "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "" #~ "Nie mona utworzy okna ustawie " #~ "symulacji." #~ msgid "" #~ "Could not find the simulation " #~ "executable\n" #~ "\n" #~ "This probably means that you have not configured Oregano properly." #~ msgstr "" #~ "Nie znalazem programu do " #~ "symulacji\n" #~ "\n" #~ "Prawdopodobnie popenie bd przy konfiguracji Oregano." #~ msgid "" #~ "You have not entered a simulation " #~ "executable.\n" #~ "\n" #~ "Please choose Settings and specify whichprogram to use for simulations." #~ msgstr "" #~ "Nie wskazae programu do " #~ "symulacji.\n" #~ "\n" #~ "Wejd w menu Narzdzia/Preferencje i wska odpowiedni program." #~ msgid "" #~ "Could not create simulation dialog." #~ "" #~ msgstr "" #~ "Nie mona utworzy okna " #~ "dialogowego symulacji." #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "Nie mona znale danego pliku:\n" #~ "%s\n" #~ msgid "" #~ "Could not create textbox properties dialog." #~ msgstr "" #~ "Nie mona utworzy okna dialogowego waciwoci " #~ "tekstu." #~ msgid "" #~ "Could not save temporary netlist " #~ "file:\n" #~ "%s\n" #~ msgstr "" #~ "Nie mona zapisa tymczasowego " #~ "pliku z list pocze:\n" #~ "%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 "Format" #~ msgstr "Format" #~ msgid "Size" #~ msgstr "Rozmiar" #~ 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 "" #~ "Could not create a netlist\n" #~ "\n" #~ "Possibly dueto a faulty circuit schematic. Please check that\n" #~ "you have one o more test clamps and try again." #~ msgstr "" #~ "Nie mona utworzy listy pocze\n" #~ "\n" #~ "Prawodpobnie powodem jest niewaciwie skonstruowany obwd.\n" #~ "Sprawd, czy umiecie przynajmniej jeden prbnik." #~ msgid "" #~ "Could not create a netlist\n" #~ "\n" #~ "Possibly due an I/O error." #~ msgstr "" #~ "No se pudo crear el archivo de " #~ "netlist\n" #~ "\n" #~ "Posiblemente por un error de E/S.No se pudo crear el listado de nodos\n" #~ "\n" #~ "Posiblemente debidoc a un fallo en el esquemtico. Comprueba que exista " #~ "algn\n" #~ "nodo a tierra y pruebe de nuevo.No " #~ "se pudo crear el listado de nodos\n" #~ "\n" #~ "Posiblemente debido a un fallo en el esquemtico. Comprueba que exista " #~ "algn\n" #~ "nodo a tierra y pruebe de nuevo." #~ msgid "" #~ "Could not create a netlist\n" #~ "\n" #~ "Possibly due an I/O error." #~ msgstr "" #~ "No se pudo generar lista de nodos\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 botn 'Insertar', la " oregano-0.84.41/po/sv.po0000644000175000017500000010323513413640652013750 0ustar rubenruben# translation of sv.po to Svenska # Oregano # Copyright (C) 1999-2001 Richard Hult # Richard Hult , 1999-2001. # Peter Landgren , 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 \n" "Language-Team: Svenska \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 "AC Analysis Options" msgstr "AC-analysalternativ" #: ../data/dialogs/clamp-properties-dialog.glade2.h:2 msgid "Type" msgstr "Typ" #: ../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 mtpunktsgenskaper" #: ../data/dialogs/clamp-properties-dialog.glade2.h:5 msgid "Imaginary part" msgstr "Imaginr 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 "Anvnd decibelskala" #: ../data/dialogs/clamp-properties-dialog.glade2.h:10 msgid "Voltage" msgstr "Spnning" #: ../data/dialogs/log-window.glade2.h:1 msgid "Clear" msgstr "Tm" #: ../data/dialogs/log-window.glade2.h:2 msgid "Oregano Log Window" msgstr "Oregano Loggfnster" #: ../data/dialogs/page-properties.glade2.h:1 msgid "Alignment" msgstr "Inrttning" #: ../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 "Preview" msgstr "Frhandsgranskning" #: ../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 "Sk:" #: ../data/dialogs/part-browser.glade2.h:7 msgid "Select which library to use" msgstr "Vlj bibliotek" #: ../data/dialogs/part-properties-dialog.glade2.h:1 msgid "Part Properties" msgstr "Komponentegenskaper" #: ../data/dialogs/plot-window.glade2.h:1 msgid "Plot" msgstr "Diagram" #: ../data/dialogs/plot-window.glade2.h:2 msgid "Variables" msgstr "Variabler" #: ../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 "Comments" msgstr "Kommentarer" #: ../data/dialogs/properties.glade2.h:3 msgid "Author:" msgstr "Frfattare:" #: ../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 "Data Paths" msgstr "Dataskvgar" #: ../data/dialogs/settings.glade2.h:4 msgid "Engine" msgstr "Motor" #: ../data/dialogs/settings.glade2.h:5 msgid "Executable Path" msgstr "Programskvgar" #: ../data/dialogs/settings.glade2.h:6 msgid "File Format" msgstr "Filformat" #: ../data/dialogs/settings.glade2.h:7 msgid "User Interface" msgstr "Anvndargrnssnitt" #: ../data/dialogs/settings.glade2.h:8 msgid "Automatically show log windows after simulation" msgstr "Visa loggfnstret 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 "Rutntsstorlek [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 "Skvgar" #: ../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 (lngsamt)" #: ../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-skrm vid tillmpningsstart" #: ../data/dialogs/settings.glade2.h:19 msgid "TODO : Add FINDPATH for Engines" msgstr "" #: ../data/dialogs/settings.glade2.h:20 msgid "User Interface" msgstr "Anvdargrssnitt" #: ../data/dialogs/sim-settings.glade2.h:1 msgid "AC" msgstr "AC" #: ../data/dialogs/sim-settings.glade2.h:2 msgid "DC Sweep" msgstr "DC Svep" #: ../data/dialogs/sim-settings.glade2.h:3 msgid "Fourier" msgstr "Fourier" #: ../data/dialogs/sim-settings.glade2.h:4 msgid "Transient" msgstr "Transient" #: ../data/dialogs/sim-settings.glade2.h:5 msgid "Add new options" msgstr "" #: ../data/dialogs/sim-settings.glade2.h:6 msgid "Add to list" msgstr "Lgg 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 "Simuleringsinstllningar" #: ../data/dialogs/sim-settings.glade2.h:16 msgid "Source" msgstr "Klla" #: ../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 "Anvnd startfrutsttningar" #: ../data/dialogs/simulation.glade2.h:1 #, fuzzy msgid "Progress: None" msgstr "Frlopp:" #: ../data/dialogs/simulation.glade2.h:2 msgid "Simulation" msgstr "Simulering" #: ../data/dialogs/textbox-properties-dialog.glade2.h:2 msgid "Text" msgstr "Text" #: ../data/dialogs/textbox-properties-dialog.glade2.h:3 msgid "Text Properties" msgstr "Textegenskaper" #: ../data/dialogs/view-netlist.glade2.h:1 msgid "Netlist View" msgstr "Ntlistvy" #: ../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 fr 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 fr 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 fr simulering." #: ../src/simulation.c:150 #, fuzzy, c-format msgid "Progress: %s" msgstr "Frlopp:" #: ../src/simulation.c:201 #, fuzzy msgid "" "The simulation was aborted due to an " "error.\n" "\n" "Would you like to view the error log?" msgstr "" "Simuleringen avbrts pga ett fel.\n" "Vill du visa loggen med felmeddelanden?" #: ../src/simulation.c:211 #, fuzzy msgid "The simulation was aborted due to an error" msgstr "" "Simuleringen avbrts pga ett fel.\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 fr 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 fr 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 fr komponentegenskaper." #: ../src/schematic-view.c:320 #, fuzzy msgid "Could not create the page properties dialog" msgstr "Kunde inte skapa dialogen fr 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 "Namnls.oregano" #: ../src/schematic-view.c:415 #, fuzzy msgid "Could not save schematic file" msgstr "Kunde inte skapa dialogen fr 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 "Namnls.netlist" #: ../src/schematic-view.c:1504 #, c-format msgid "" "Save changes to schematic %s before " "closing?\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 diagramfnster." #: ../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 "Stt utskriftsegenskaper" #: ../src/schematic-view-ui.h:56 ../src/print.c:367 ../src/plot.c:150 #: ../src/netlist-editor.c:193 msgid "Print Preview" msgstr "Frhandsgranskning" #: ../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_instllningar..." #: ../src/schematic-view-ui.h:147 msgid "Edit the simulation settings" msgstr "ndra simuleringsinstllningarna" #: ../src/schematic-view-ui.h:162 msgid "Run a simulation" msgstr "_Kr en simulering" #: ../src/schematic-view-ui.h:169 msgid "_Generate netlist" msgstr "_Generera ntlista" #: ../src/schematic-view-ui.h:170 msgid "Generate a netlist" msgstr "Generera en ntlista" #: ../src/schematic-view-ui.h:177 msgid "50%" msgstr "50%" #: ../src/schematic-view-ui.h:178 msgid "Set the zoom factor to 50%" msgstr "Stt 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 "Stt 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 "Stt 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 "Stt 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 "Stt 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 gm nodetiketter" #: ../src/schematic-view-ui.h:207 #, fuzzy msgid "N_etlist" msgstr "Ntlistfil" #: ../src/schematic-view-ui.h:208 #, fuzzy msgid "View the circuit netlist" msgstr "Titta p en ntlista" #: ../src/schematic-view-ui.h:240 msgid "_Contents" msgstr "_Innehll" #: ../src/schematic-view-ui.h:240 msgid "Show program help" msgstr "Visa programhjlp" #: ../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 frn 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 pverka 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 "Lgg till en spnningsmtpunkt" #: ../src/schematic-view-ui.h:331 msgid "Add a Voltage test clamp" msgstr "Lgg till en spnningsmtpunkt" #: ../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 "Kr en simulering fr det aktuella schemat" #: ../src/schematic-view-ui.h:342 ../src/schematic-view-ui.h:343 msgid "Simulation settings" msgstr "Simuleringsinstllningar" #: ../src/schematic-view-ui.h:361 msgid "Show or hide the part browser" msgstr "Visa eller gm komponentvljaren" #: ../src/schematic-view-ui.h:366 msgid "Grid" msgstr "Rutnt" #: ../src/schematic-view-ui.h:367 msgid "Turn on/off the grid" msgstr "Stng av/stt p rutntet" #: ../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 innehllet 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 standardvrden!" #: ../src/print.c:353 msgid "Could not create font for printing." msgstr "Kunde inte skapa typsnitt fr 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 fre 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 "verfringsfunktion" #: ../src/plot.c:156 msgid "Add new function to the graph" msgstr "" #: ../src/plot.c:180 msgid "_Preferences..." msgstr "_Instllningar..." #: ../src/plot.c:182 msgid "Show crosshairs" msgstr "Visa hrkors" #: ../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 "verfringsfunktion" #: ../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 diagramfnster." #: ../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 diagramexportfnster." #. 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 stder 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 "" "Kunde inte lsa komponentbiblioteket:%" "s\n" "\n" "Filen r troligen korrupt. Var vnlig installera\n" "om komponentbiblioteket eller Oregano och frsk\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" "### Fr 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 "Spnning" #: ../src/engines/gnucap.c:596 #, fuzzy msgid "frequency" msgstr "Frekvens" #: ../src/engines/gnucap.c:645 #, fuzzy msgid "Unknown analysis" msgstr "Oknd 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-verfringskarakteristik" #: ../src/engines/engine.c:35 msgid "AC Analysis" msgstr "AC-analys" #: ../src/engines/engine.c:36 #, fuzzy msgid "Transfer Function" msgstr "verfringsfunktion" #: ../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 "Knslighetsanalys" #: ../src/engines/engine.c:41 msgid "Unknown Analysis" msgstr "Oknd analys" #: ../src/netlist-editor.c:172 #, c-format msgid "Netlist for %s" msgstr "Ntlista fr %s" #: ../src/netlist-editor.c:173 #, c-format msgid "Author : %s" msgstr "Frfattare : %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 fr komponentegenskaper." #: ../src/netlist-editor.c:311 #, fuzzy msgid "Could not create the netlist dialog" msgstr "Kunde inte skapa dialogen fr 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 begrd fil:\n" "%s" #: ../src/main.c:107 msgid "Enables some debugging functions" msgstr "Aktiverar felskningsfunktioner" #: ../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 kra Oregano utan att ha\n" "installerat det korrekt p systemet.\n" "\n" "Var vnlig installera Oregano och frsk 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 "Vlkommen 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 "Ntlistfil" #: ../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 fr ntlista" #: ../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 diagramfnster." #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "Hittade inte begrd fil:\n" #~ "%s\n" #~ msgid " " #~ msgstr " " #~ msgid "s" #~ msgstr "s" #~ msgid "Hz" #~ msgstr "Hz" #~ msgid "A" #~ msgstr "A" #~ msgid "" #~ "Could not find the required file:\n" #~ "%s" #~ msgstr "" #~ "Hittade inte den begrda filen:\n" #~ "%s" #~ msgid "" #~ "Could not save Schematic file\n" #~ "%s\n" #~ msgstr "" #~ "Kunde inte spara schemafil\n" #~ "%s\n" #~ msgid "" #~ "Could not create a netlist\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Kunde inte skapa en ntlista\n" #~ "\n" #~ "%s" #~ msgid "Unspected error!!!" #~ msgstr "Ovntat fel!!!" #~ msgid "" #~ "Schematic %s has unsaved changes\n" #~ "\n" #~ "Do you want to save them?" #~ msgstr "" #~ "Schemat %s har osparade ndringar\n" #~ "\n" #~ "Vill du spara dem?" #~ msgid "Could not create log window." #~ msgstr "Kunde inte skapa loggfnster." #~ msgid "_View netlist" #~ msgstr "_Titta p ntlista" #~ msgid "View plot" #~ msgstr "_Visa diagram" #~ msgid "View plot " #~ msgstr "Visa diagram" #~ msgid "" #~ "Could not create settings dialog." #~ msgstr "" #~ "Kunde inte skapa " #~ "instllningsdialog." #~ msgid "" #~ "Transient analysis\n" #~ "\n" #~ "Start time must be less than stop time." #~ msgstr "" #~ "Transientanalys\n" #~ "\n" #~ "Starttid mste vara mindre n n sluttid." #~ msgid "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "" #~ "Kunde inte skapa " #~ "simuleringsinstllningsdialog." #~ msgid "" #~ "Could not create simulation " #~ "settings dialog." #~ msgstr "" #~ "Kunde inte skapa " #~ "simuleringsinstllningsdialog." #~ msgid "" #~ "Could not find the simulation " #~ "executable\n" #~ "\n" #~ "This probably means that you have not configured Oregano properly." #~ msgstr "" #~ "Kunde inte hitta " #~ "simulatorprogrammet:\n" #~ "%s\n" #~ "\n" #~ "Detta beror troligen p att du inte har stllt\n" #~ "in Oregano korrekt" #~ msgid "" #~ "You have not entered a simulation " #~ "executable.\n" #~ "\n" #~ "Please choose Settings and specify whichprogram to use for simulations." #~ msgstr "" #~ "Du har inte angett ett " #~ "simuleringsprogram.\n" #~ "Var vnlig vlj Instllningar och ange vilket\n" #~ "program som ska anvndas." #~ msgid "" #~ "Could not create simulation dialog." #~ "" #~ msgstr "" #~ "Kunde inte skapa dialogen fr " #~ "simulering." #~ msgid "" #~ "Could not find the required file:\n" #~ "%s\n" #~ msgstr "" #~ "Kunde inte hitta den begrda filen:\n" #~ "%s\n" #~ msgid "" #~ "Could not create textbox properties dialog." #~ msgstr "" #~ "Kunde inte skapa dialogen fr textegenskaper." #~ msgid "" #~ "Could not save temporary netlist " #~ "file:\n" #~ "%s\n" #~ msgstr "" #~ "Kunde inte sparar tillfllig " #~ "ntlistfil:\n" #~ "%s\n" #~ msgid " " #~ msgstr " " #~ msgid "*" #~ msgstr "*" #~ msgid "Name: " #~ msgstr "Namn: " #~ msgid "Value: " #~ msgstr "Vrde: " #~ msgid "(0, 0)" #~ msgstr "(0, 0)" #~ msgid "window" #~ msgstr "fnster" #~ 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 "Format" #~ msgstr "Format" #~ msgid "Size" #~ msgstr "Storlek" #~ msgid "Height : " #~ msgstr "Hjd : " #~ 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 : " oregano-0.84.41/po/fr.po0000644000175000017500000012506213413640652013731 0ustar rubenruben# Oregano French translation # Copyright (C) 2000-2005 Free Software Foundation, Inc. # David Monniaux , 2000. # Jean-Luc Coulon (f5ibh) , 2005 # Marc Lorber , 2010, 2011, 2012. # msgid "" msgstr "" "Project-Id-Version: Oregano 0.69\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-05-07 07:28+0200\n" "PO-Revision-Date: 2012-04-28 11:54+0200\n" "Last-Translator: Marc Lorber \n" "Language-Team: français <>\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" #: ../data/oregano.desktop.in.in.h:1 msgid "Oregano" msgstr "Oregano" #: ../data/oregano.desktop.in.in.h:2 msgid "Electrical Engineering Tool" msgstr "Outil d'ingéniérie éléctrique" #: ../data/oregano.desktop.in.in.h:3 msgid "Oregano Electrical Engineering Tool" msgstr "Oregano : outil d'ingéniérie éléctrique" #: ../data/oregano.desktop.in.in.h:4 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/xml/plot-window.ui.h:1 msgid "Variables" msgstr "Variables" #: ../data/xml/plot-window.ui.h:2 msgid "Plot" msgstr "Tracé" #: ../data/xml/sim-settings.ui.h:1 msgid "Transient" msgstr "Transitoire" #: ../data/xml/sim-settings.ui.h:2 msgid "Use Initial Conditions" msgstr "Utiliser les conditions initiales" #: ../data/xml/sim-settings.ui.h:3 msgid "Start" msgstr "Début" #: ../data/xml/sim-settings.ui.h:4 msgid "Stop" msgstr "Fin" #: ../data/xml/sim-settings.ui.h:5 msgid "Step" msgstr "Pas" #: ../data/xml/sim-settings.ui.h:6 msgid "Fourier" msgstr "Fourier" #: ../data/xml/sim-settings.ui.h:7 ../src/engines/ngspice-analysis.c:465 msgid "Frequency" msgstr "Fréquence" #: ../data/xml/sim-settings.ui.h:8 msgid "List of outputs" msgstr "Liste des sorties" #: ../data/xml/sim-settings.ui.h:9 msgid "Add to list" msgstr "Ajouter à la liste" #: ../data/xml/sim-settings.ui.h:10 msgid "Remove" msgstr "Supprimer" #: ../data/xml/sim-settings.ui.h:11 msgid "DC Sweep" msgstr "Variation du point DC" #: ../data/xml/sim-settings.ui.h:12 msgid "Source" msgstr "Source" #: ../data/xml/sim-settings.ui.h:13 msgid "AC" msgstr "AC" #: ../data/xml/sim-settings.ui.h:14 msgid "Type" msgstr "Type" #: ../data/xml/sim-settings.ui.h:15 msgid "Points" msgstr "Points" #: ../data/xml/sim-settings.ui.h:16 msgid "Analysis Parameters" msgstr "Paramètres d'analyse" #: ../data/xml/sim-settings.ui.h:17 msgid "Add new options" msgstr "Ajouter de nouvelles options" #: ../data/xml/sim-settings.ui.h:18 msgid "Analysis Options" msgstr "Options d'analyse" #: ../data/xml/clamp-properties-dialog.ui.h:1 msgid "Clamp properties" msgstr "Propriétés du point de test" #: ../data/xml/clamp-properties-dialog.ui.h:2 msgid "Type" msgstr "Type" #: ../data/xml/clamp-properties-dialog.ui.h:3 msgid "Voltage" msgstr "Tension" #: ../data/xml/clamp-properties-dialog.ui.h:4 msgid "Current" msgstr "Courant" #: ../data/xml/clamp-properties-dialog.ui.h:5 msgid "AC Analysis Options" msgstr "Options de l'analyse AC" #: ../data/xml/clamp-properties-dialog.ui.h:6 msgid "Real part" msgstr "Partie réelle" #: ../data/xml/clamp-properties-dialog.ui.h:7 msgid "Magnitude" msgstr "Amplitude" #: ../data/xml/clamp-properties-dialog.ui.h:8 msgid "Imaginary part" msgstr "Partie imaginaire" #: ../data/xml/clamp-properties-dialog.ui.h:9 msgid "Phase" msgstr "Phase" #: ../data/xml/clamp-properties-dialog.ui.h:10 msgid "Use decibel scale" msgstr "Utiliser une échelle en décibel" #: ../data/xml/clamp-properties-dialog.ui.h:11 msgid "Clamp Reference" msgstr "Référence du point de test" #: ../data/xml/export.ui.h:1 msgid "Export ..." msgstr "Exporter..." #: ../data/xml/export.ui.h:2 ../data/xml/page-properties.ui.h:2 #: ../data/xml/properties.ui.h:4 ../data/xml/textbox-properties-dialog.ui.h:2 msgid " " msgstr " " #: ../data/xml/export.ui.h:3 msgid "Width : " msgstr "Largeur :" #: ../data/xml/export.ui.h:4 msgid "Height : " msgstr "Hauteur : " #: ../data/xml/export.ui.h:5 msgid "Size" msgstr "Taille" #: ../data/xml/export.ui.h:6 msgid "Format" msgstr "Format" #: ../data/xml/export.ui.h:7 msgid "White" msgstr "Blanc" #: ../data/xml/export.ui.h:8 msgid "Black" msgstr "Noir" #: ../data/xml/export.ui.h:9 msgid "Transparent" msgstr "Transparent" #: ../data/xml/export.ui.h:10 msgid "Background" msgstr "Fond" #: ../data/xml/export.ui.h:11 msgid "Color" msgstr "Couleur" #: ../data/xml/export.ui.h:12 msgid "Black and White" msgstr "Blanc et noir" #: ../data/xml/export.ui.h:13 msgid "Output File" msgstr "Fichier de sortie" #: ../data/xml/export.ui.h:14 msgid "Output" msgstr "Sortie" #: ../data/xml/log-window.ui.h:1 msgid "Oregano Log Window" msgstr "Fenêtre du journal d'Oregano" #: ../data/xml/log-window.ui.h:2 msgid "Clear" msgstr "Effacer" #: ../data/xml/page-properties.ui.h:1 ../src/schematic-view-menu.h:48 msgid "Print Properties" msgstr "Propriétés d'impression" #: ../data/xml/page-properties.ui.h:3 msgid "Fit to page" msgstr "Adapter à taille de la page" #: ../data/xml/page-properties.ui.h:4 msgid "Center Horizontally" msgstr "Centrer horizontalement" #: ../data/xml/page-properties.ui.h:5 msgid "Center Vertically" msgstr "Centrer verticalement" #: ../data/xml/page-properties.ui.h:6 msgid "Alignment" msgstr "Alignement" #: ../data/xml/part-browser.ui.h:1 msgid "Parts" msgstr "Composants" #: ../data/xml/part-browser.ui.h:2 msgid "Library:" msgstr "Bibliothèque :" #: ../data/xml/part-browser.ui.h:3 msgid "Fast Search:" msgstr "Recherche rapide :" #: ../data/xml/part-browser.ui.h:4 msgid "Preview" msgstr "Aperçu" #: ../data/xml/part-browser.ui.h:5 msgid "Place" msgstr "Placer" #: ../data/xml/part-properties-dialog.ui.h:1 msgid "Part Properties" msgstr "Propriétés du composant" #: ../data/xml/part-properties-dialog.ui.h:2 msgid "General" msgstr "Vue générale" #: ../data/xml/part-properties-dialog.ui.h:3 msgid "Model" msgstr "Modèle" #: ../data/xml/plot-add-function.ui.h:1 ../src/sheet/plot-add-function.c:93 msgid "Substraction" msgstr "Soustraction" #: ../data/xml/plot-add-function.ui.h:2 ../src/sheet/plot-add-function.c:94 msgid "Division" msgstr "Division" #: ../data/xml/plot-add-function.ui.h:3 ../src/plot.c:439 msgid "Add Function" msgstr "Ajouter la fonction" #: ../data/xml/plot-add-function.ui.h:4 msgid "Function Type" msgstr "Type de fonction" #: ../data/xml/plot-add-function.ui.h:5 msgid "Second Operand" msgstr "Seconde opérateur" #: ../data/xml/plot-add-function.ui.h:6 msgid "First Operand" msgstr "Premier opérateur" #: ../data/xml/plot-add-function.ui.h:7 msgid "Values" msgstr "Valeurs" #: ../data/xml/print-options.ui.h:1 msgid "Use colors" msgstr "Utilisation de la couleur" #: ../data/xml/print-options.ui.h:2 msgid "General" msgstr "Général" #: ../data/xml/print-options.ui.h:3 msgid "Components" msgstr "Composants" #: ../data/xml/print-options.ui.h:4 msgid "Labels" msgstr "Étiquettes" #: ../data/xml/print-options.ui.h:5 msgid "Wires" msgstr "Fils" #: ../data/xml/print-options.ui.h:6 ../src/schematic-view-menu.h:94 msgid "Text" msgstr "Texte" #: ../data/xml/print-options.ui.h:7 msgid "Background" msgstr "Fond" #: ../data/xml/print-options.ui.h:8 msgid "Colors" msgstr "Couleurs" #: ../data/xml/properties.ui.h:1 msgid "Properties" msgstr "Propriétés" #: ../data/xml/properties.ui.h:2 msgid "Title:" msgstr "Titre :" #: ../data/xml/properties.ui.h:3 msgid "Author:" msgstr "Auteur :" #: ../data/xml/properties.ui.h:5 msgid "Comments" msgstr "Commentaires" #: ../data/xml/settings.ui.h:1 msgid "Preferences" msgstr "Préférences" #: ../data/xml/settings.ui.h:2 msgid "Show the splash screen at application startup" msgstr "Afficher la bannière du programme au démarrage de l'application" #: ../data/xml/settings.ui.h:3 msgid "Realtime update of selection (slow)" msgstr "Mise à jour en temps réel de la sélection (lent)" #: ../data/xml/settings.ui.h:4 msgid "Automatically show log windows after simulation" msgstr "Afficher automatiquement la fenêtre de journal après la simulation" #: ../data/xml/settings.ui.h:5 msgid "Grid size[px] " msgstr "Pas de la grille [pixel] " #: ../data/xml/settings.ui.h:6 msgid "User Interface" msgstr "Interface utilisateur" #: ../data/xml/settings.ui.h:7 msgid "Compress saved files" msgstr "Compresser les fichiers lors de l'enregistrement" #: ../data/xml/settings.ui.h:8 msgid "File Format" msgstr "Format de fichier" #: ../data/xml/settings.ui.h:9 msgid "Engine" msgstr "Moteur" #: ../data/xml/simulation.ui.h:1 msgid "Simulation" msgstr "Simulation" #: ../data/xml/simulation.ui.h:2 msgid "Progress: None" msgstr "Aucun avancement" #: ../data/xml/textbox-properties-dialog.ui.h:1 msgid "Text Properties" msgstr "Propriétés du texte" #: ../data/xml/textbox-properties-dialog.ui.h:3 msgid "Text" msgstr "Texte" #: ../data/xml/view-netlist.ui.h:1 msgid "Netlist View" msgstr "Affichage de la liste des connexions" #: ../src/sheet/part-item.c:138 ../src/schematic-view-menu.h:64 msgid "_Object Properties..." msgstr "_Propriétés de l'objet..." #: ../src/sheet/part-item.c:139 ../src/schematic-view-menu.h:64 msgid "Modify the object's properties" msgstr "Modifier les propriétés de l'objet" #: ../src/sheet/part-item.c:463 ../src/sheet/part-item.c:476 #: ../src/sheet/part-item.c:484 ../src/sheet/part-item.c:633 #: ../src/sheet/part-item.c:645 ../src/sheet/part-item.c:654 msgid "Could not create part properties dialog." msgstr "Création du dialogue des propriétés du composant impossible." #: ../src/sheet/part-item.c:473 ../src/sheet/part-item.c:642 #: ../src/sheet/textbox-item.c:550 ../src/settings.c:183 #: ../src/schematic-view.c:295 ../src/schematic-view.c:1626 #: ../src/part-browser.c:491 ../src/netlist-editor.c:217 #, 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:697 msgid "Designation" msgstr "Désignation" #: ../src/sheet/part-item.c:698 msgid "Template" msgstr "Modèle" #: ../src/sheet/part-item.c:699 msgid "Resistor" msgstr "Résistance" #: ../src/sheet/part-item.c:700 msgid "Capacitor" msgstr "Condensateur" #: ../src/sheet/part-item.c:701 msgid "Inductor" msgstr "Bobine d'induction" #: ../src/sheet/plot-add-function.c:54 ../src/sheet/plot-add-function.c:64 #: ../src/sheet/plot-add-function.c:72 ../src/plot.c:395 ../src/plot.c:405 #: ../src/plot.c:413 msgid "Could not create plot window." msgstr "Création de la fenêtre de tracé impossible." #: ../src/sheet/plot-add-function.c:62 ../src/schematic-view.c:1098 #, 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/plot-add-function.c:124 msgid "" "Neither function, nor operators have " "been chosen\n" "\n" "Please, take care to choose a function and their associated operators" msgstr "" "Il n'y a ni fonction, ni opérateurs " "définis\n" "\n" "Veuillez, sélectionner une fonction et ses opérateurs associés. " #: ../src/sheet/sheet-item.c:108 ../src/schematic-view-menu.h:56 msgid "_Copy" msgstr "_Copier" #: ../src/sheet/sheet-item.c:109 ../src/schematic-view-menu.h:55 msgid "C_ut" msgstr "Co_uper" #: ../src/sheet/sheet-item.c:110 ../src/schematic-view-menu.h:58 msgid "_Delete" msgstr "_Effacer" #: ../src/sheet/sheet-item.c:111 ../src/schematic-view-menu.h:58 msgid "Delete the selection" msgstr "Effacer la sélection" #: ../src/sheet/sheet-item.c:112 ../src/schematic-view-menu.h:59 msgid "_Rotate" msgstr "_Pivoter" #: ../src/sheet/sheet-item.c:113 ../src/schematic-view-menu.h:59 msgid "Rotate the selection clockwise" msgstr "Pivoter la sélection dans le sens des aiguilles d'une montre" #: ../src/sheet/sheet-item.c:114 ../src/schematic-view-menu.h:60 msgid "Flip _horizontally" msgstr "Effectuer une symétrie _horizontale" #: ../src/sheet/sheet-item.c:115 ../src/schematic-view-menu.h:60 msgid "Flip the selection horizontally" msgstr "Effectuer une symétrie horizontale de la sélection" #: ../src/sheet/sheet-item.c:116 ../src/schematic-view-menu.h:61 msgid "Flip _vertically" msgstr "Effectuer une symétrie _verticale" #: ../src/sheet/sheet-item.c:117 ../src/schematic-view-menu.h:61 msgid "Flip the selection vertically" msgstr "Effectuer une symétrie verticale de la sélection" #: ../src/sheet/sheet-item.c:266 msgid "Cannot set SheetItem after creation." msgstr "La donnée SheetItem ne peut être initialisée après sa création." #: ../src/sheet/textbox-item.c:88 msgid "_Edit the text..." msgstr "_Éditer le texte" #: ../src/sheet/textbox-item.c:89 msgid "Edit the text" msgstr "Éditer le texte" #: ../src/sheet/textbox-item.c:466 msgid "Label" msgstr "Étiquette" #: ../src/sheet/textbox-item.c:539 ../src/sheet/textbox-item.c:553 #: ../src/sheet/textbox-item.c:561 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 ../src/splash.c:67 ../src/splash.c:75 msgid "Could not create splash message." msgstr "Impossible de créer le message de bienvenue" #: ../src/splash.c:65 #, 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:93 ../src/simulation.c:108 ../src/simulation.c:116 #: ../src/simulation.c:123 msgid "Could not create simulation dialog" msgstr "Création impossible du dialogue de simulation" #: ../src/simulation.c:160 #, c-format msgid "Progress: %s" msgstr "Avancement : %s" #: ../src/simulation.c:216 msgid "" "The simulation was aborted due to an " "error.\n" "\n" "Would you like to view the error log?" msgstr "" "La simulation s'est terminée " "prématurément à la suite d'une erreur.\n" "\n" "Voulez-vous afficher le journal des erreurs ?" #: ../src/simulation.c:227 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:353 msgid "Add new option" msgstr "Ajouter une nouvelle option" #: ../src/sim-settings.c:970 ../src/plot.c:402 #, 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 devez réinstaller Oregano pour corriger " "ce problème." #: ../src/sim-settings.c:974 ../src/sim-settings.c:980 #: ../src/sim-settings.c:990 ../src/sim-settings.c:997 msgid "Could not create simulation settings dialog" msgstr "Création impossible du dialogue des paramètres de simulation" #: ../src/sim-settings.c:1025 msgid "Option" msgstr "Option" #: ../src/sim-settings.c:1027 msgid "Value" msgstr "Valeur" #: ../src/sim-settings.c:1192 ../src/sim-settings.c:1313 #: ../src/schematic-view.c:731 ../src/schematic-view.c:882 #: ../src/netlist-editor.c:340 msgid "Could not create a netlist" msgstr "Création de la liste des connexions impossible" #: ../src/sim-settings.c:1197 ../src/sim-settings.c:1318 msgid "No node in the schematic!" msgstr "Il n'y a aucun noeud dans le schéma !" #: ../src/settings.c:107 msgid "Engine " msgstr "Le moteur " #: ../src/settings.c:110 msgid "" " not found\n" "The engine is unable to locate the external program." msgstr "" " n'a pas été trouvé.\n" "Le moteur « SPICE » est incapable d'accéder au programme externe" #: ../src/settings.c:112 msgid "Warning" msgstr "Avertissement" #: ../src/settings.c:154 ../src/settings.c:264 #, c-format msgid "" "No engine allowing analysis is available.\n" "You might install one, at least! \n" "Either ngspice or gnucap." msgstr "" "Aucun moteur d'analyse n'est présent.\n" "Vous devriez en installer au moins un !\n" "Soit ngspice, soit gnucap." #: ../src/settings.c:157 ../src/settings.c:165 ../src/settings.c:186 #: ../src/settings.c:194 ../src/settings.c:201 ../src/settings.c:267 msgid "Could not create settings dialog" msgstr "Création impossible du dialogue des paramètres" #: ../src/schematic-view.c:184 ../src/schematic-view.c:195 #: ../src/schematic-view.c:202 msgid "Could not create properties dialog" msgstr "Création du dialogue des propriétés impossible" #: ../src/schematic-view.c:191 #, c-format msgid "" "The file %s could not be found. You might need to reinstallOregano to fix " "this." msgstr "" "Le fichier %s est introuvable. Vous devriez réinstaller Oregano pour " "corriger ce problème." #: ../src/schematic-view.c:252 msgid "Export to..." msgstr "Exporter vers..." #: ../src/schematic-view.c:288 ../src/schematic-view.c:299 #: ../src/schematic-view.c:306 msgid "Could not create export dialog." msgstr "Création du dialogue des propriétés impossible" #: ../src/schematic-view.c:351 msgid "" "No filename has been chosen\n" "\n" "Please, click on the tag, beside, to select an output." msgstr "" "Aucun fichier n'a été choisi\n" "\n" "Activer la fenêtre de sélection afin d'en choisir un." #: ../src/schematic-view.c:427 ../src/schematic-view.c:482 msgid "Could not load file" msgstr "Chargement du fichier impossible" #: ../src/schematic-view.c:475 msgid "Unrecognized mime type" msgstr "Le type mime est non reconnue" #: ../src/schematic-view.c:497 msgid "Unknown type of file can't open" msgstr "Type de fichier inconnu" #: ../src/schematic-view.c:557 ../src/schematic-view.c:1206 #: ../src/schematic-view.c:1212 msgid "Untitled.oregano" msgstr "SansTitre.oregano" #: ../src/schematic-view.c:563 msgid "Could not save schematic file" msgstr "Enregistrement du fichier de schéma impossible" #: ../src/schematic-view.c:736 ../src/schematic-view.c:887 #: ../src/netlist-editor.c:344 msgid "An unexpected error has occurred" msgstr "Une erreur inattendue s'est produite" #: ../src/schematic-view.c:1090 ../src/schematic-view.c:1100 #: ../src/schematic-view.c:1108 msgid "Could not create main window." msgstr "Création de la fenêtre principale impossible." #: ../src/schematic-view.c:1213 msgid "Untitled.netlist" msgstr "SansTitre.netlist" #: ../src/schematic-view.c:1339 #, c-format msgid "" "Save changes to schematic %s before " "closing?\n" "\n" "If you don't save, all changes since you last saved will be permanently lost." msgstr "" "Le schéma %s comporte des modifications " "non enregistrées\n" "\n" "Voulez-vous l'enregistrer ?" #: ../src/schematic-view.c:1352 msgid "Close _without Saving" msgstr "Fermeture _sans enregistrement" #: ../src/schematic-view.c:1613 ../src/schematic-view.c:1636 msgid "Could not create the log window." msgstr "Création de la fenêtre de journal impossible" #: ../src/schematic-view.c:1628 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:37 msgid "_File" msgstr "_Fichier" #: ../src/schematic-view-menu.h:38 msgid "_Edit" msgstr "_Éditer" #: ../src/schematic-view-menu.h:39 msgid "_Tools" msgstr "_Outils" #: ../src/schematic-view-menu.h:40 msgid "_View" msgstr "_Affichage" #: ../src/schematic-view-menu.h:41 msgid "_Help" msgstr "_Aide" #: ../src/schematic-view-menu.h:42 msgid "_Zoom" msgstr "_Zoom" #: ../src/schematic-view-menu.h:43 msgid "_New" msgstr "_Nouveau" #: ../src/schematic-view-menu.h:43 msgid "Create a new schematic" msgstr "Créer un nouveau schéma" #: ../src/schematic-view-menu.h:44 msgid "_Open" msgstr "_Ouvrir" #: ../src/schematic-view-menu.h:44 msgid "Open a schematic" msgstr "Ouvrir un schéma" #: ../src/schematic-view-menu.h:45 msgid "_Recent Files" msgstr "Fichiers _récemment modifié" #: ../src/schematic-view-menu.h:46 msgid "_Save" msgstr "_Enregistrer" #: ../src/schematic-view-menu.h:46 msgid "Save a schematic" msgstr "Enregistrer le schéma" #: ../src/schematic-view-menu.h:47 msgid "Save _As..." msgstr "Enregistrer _comme..." #: ../src/schematic-view-menu.h:47 msgid "Save a schematic with other name" msgstr "Enregistrer le schéma sous un autre nom" #: ../src/schematic-view-menu.h:48 msgid "Set print properties" msgstr "Définir les propriétés de l'impression" #: ../src/schematic-view-menu.h:49 msgid "_Print" msgstr "_Imprimer" #: ../src/schematic-view-menu.h:49 msgid "Print schematic" msgstr "Imprimer le schéma" #: ../src/schematic-view-menu.h:50 msgid "Print Preview" msgstr "Afficher l'aperçu" #: ../src/schematic-view-menu.h:50 msgid "Preview the schematic before printing" msgstr "Afficher l'aperçu avant impression" #: ../src/schematic-view-menu.h:51 msgid "Schematic Pr_operties..." msgstr "_Propriétés du schéma..." #: ../src/schematic-view-menu.h:51 msgid "Modify the schematic's properties" msgstr "Modifier les propriétés du schéma" #: ../src/schematic-view-menu.h:52 msgid "_Export..." msgstr "_Exporter..." #: ../src/schematic-view-menu.h:52 msgid "Export schematic" msgstr "Exporter le schéma" #: ../src/schematic-view-menu.h:53 msgid "_Close" msgstr "_Fermer" #: ../src/schematic-view-menu.h:53 msgid "Close the current schematic" msgstr "Fermer la fenêtre du schéma actuel" #: ../src/schematic-view-menu.h:54 msgid "_Quit" msgstr "_Quitter Oregano" #: ../src/schematic-view-menu.h:54 msgid "Close all schematics" msgstr "Fermer toutes les fenêtres" #: ../src/schematic-view-menu.h:57 msgid "_Paste" msgstr "Col_ler" #: ../src/schematic-view-menu.h:62 msgid "Select _all" msgstr "Sélectionner _tout" #: ../src/schematic-view-menu.h:62 msgid "Select all objects on the sheet" msgstr "Sélectionner tous les objets de la feuille" #: ../src/schematic-view-menu.h:63 msgid "Select _none" msgstr "Ne _rien sélectionner" #: ../src/schematic-view-menu.h:63 msgid "Deselect the selected objects" msgstr "Désélectionner les objets sélectionnés" #: ../src/schematic-view-menu.h:65 msgid "Simulation S_ettings..." msgstr "_Paramètres de la simulation..." #: ../src/schematic-view-menu.h:65 msgid "Edit the simulation settings" msgstr "Modifier les paramètres de la simulation" #: ../src/schematic-view-menu.h:66 msgid "_Preferences" msgstr "_Préférences" #: ../src/schematic-view-menu.h:66 msgid "Edit Oregano settings" msgstr "Modifier les paramètres d'Oregano" #: ../src/schematic-view-menu.h:67 msgid "_Simulate" msgstr "_Simuler" #: ../src/schematic-view-menu.h:67 msgid "Run a simulation" msgstr "Lancer une simulation" #: ../src/schematic-view-menu.h:68 msgid "_Generate netlist" msgstr "_Créer le fichier netlist" #: ../src/schematic-view-menu.h:68 msgid "Generate a netlist" msgstr "Créer le fichier netlist" #: ../src/schematic-view-menu.h:69 msgid "Smart Search" msgstr "Recherche étendue" #: ../src/schematic-view-menu.h:69 msgid "Search a part within all the librarys" msgstr "Rechercher un composant dans toutes les librairies" #: ../src/schematic-view-menu.h:70 msgid "_Log" msgstr "_Journal" #: ../src/schematic-view-menu.h:70 msgid "View the latest simulation log" msgstr "Afficher le dernier journal de la simulation" #: ../src/schematic-view-menu.h:71 msgid "N_etlist" msgstr "Fichier de liste des _connexions" #: ../src/schematic-view-menu.h:71 msgid "View the circuit netlist" msgstr "Affichage de la liste des connexions (« netlist »)" #: ../src/schematic-view-menu.h:72 msgid "_About" msgstr "_A propos" #: ../src/schematic-view-menu.h:72 msgid "About Oregano" msgstr "A propos d'Oregano" #: ../src/schematic-view-menu.h:73 msgid "User's Manual" msgstr "Manuel utilisateur" #: ../src/schematic-view-menu.h:73 msgid "Oregano User's Manual" msgstr "Manuel utilisateur d'Oregano" #: ../src/schematic-view-menu.h:74 msgid "Zoom _In" msgstr "Zoom _+" #: ../src/schematic-view-menu.h:74 msgid "Zoom in" msgstr "Zoom +" #: ../src/schematic-view-menu.h:75 msgid "Zoom _Out" msgstr "Zoom _-" #: ../src/schematic-view-menu.h:75 msgid "Zoom out" msgstr "Zoom -" #: ../src/schematic-view-menu.h:79 msgid "_Node labels" msgstr "_Afficher les étiquettes du noeud" #: ../src/schematic-view-menu.h:79 msgid "Show or hide node labels" msgstr "Montrer ou cacher les étiquettes de noeuds" #: ../src/schematic-view-menu.h:80 msgid "_Parts" msgstr "_Composants" #: ../src/schematic-view-menu.h:80 msgid "Show or hide the part browser" msgstr "Montrer ou cacher le navigateur de composants" #: ../src/schematic-view-menu.h:81 msgid "_Grid" msgstr "_Grille" #: ../src/schematic-view-menu.h:81 msgid "Show or hide the grid" msgstr "Présenter ou cacher la grille d'aide" #: ../src/schematic-view-menu.h:85 msgid "Set the zoom factor to 50%" msgstr "Régler le facteur d'agrandissement à 50 %" #: ../src/schematic-view-menu.h:86 msgid "Set the zoom factor to 75%" msgstr "Régler le facteur d'agrandissement à 75 %" #: ../src/schematic-view-menu.h:87 msgid "Set the zoom factor to 100%" msgstr "Régler le facteur d'agrandissement à 100 %" #: ../src/schematic-view-menu.h:88 msgid "Set the zoom factor to 125%" msgstr "Régler le facteur d'agrandissement à 125 %" #: ../src/schematic-view-menu.h:89 msgid "Set the zoom factor to 150%" msgstr "Régler le facteur d'agrandissement à 150 %" #: ../src/schematic-view-menu.h:93 msgid "Arrow" msgstr "Flèche" #: ../src/schematic-view-menu.h:93 msgid "Select, move and modify objects" msgstr "Sélectionner, déplacer et modifier les objets" #: ../src/schematic-view-menu.h:94 msgid "Put text on the schematic" msgstr "Ajouter du texte au schéma" #: ../src/schematic-view-menu.h:95 msgid "Wire" msgstr "Fil" #: ../src/schematic-view-menu.h:95 msgid "Draw wires %" msgstr "Tracer des fils %" #: ../src/schematic-view-menu.h:96 msgid "Clamp" msgstr "Point de mesure" #: ../src/schematic-view-menu.h:96 msgid "Add voltage clamp" msgstr "Ajouter un point de mesure" #: ../src/plot.c:129 ../src/engines/gnucap.c:665 ../src/engines/gnucap.c:676 #: ../src/engines/ngspice-analysis.c:159 ../src/engines/ngspice-analysis.c:161 #: ../src/engines/ngspice-analysis.c:272 ../src/engines/ngspice-analysis.c:334 #: ../src/engines/ngspice-analysis.c:367 ../src/engines/ngspice-analysis.c:471 msgid "voltage" msgstr "tension" #: ../src/plot.c:135 ../src/engines/gnucap.c:659 #: ../src/engines/ngspice-analysis.c:269 msgid "time" msgstr "temps" #: ../src/plot.c:138 ../src/engines/gnucap.c:670 #: ../src/engines/ngspice-analysis.c:469 msgid "frequency" msgstr "fréquence" #: ../src/plot.c:141 msgid "current" msgstr "Courant" #. Simulation failed? #: ../src/plot.c:262 ../src/plot.c:279 msgid "The simulation produced no data!!\n" msgstr "Aucun résultat produit par la simulation\n" #: ../src/plot.c:289 ../src/plot.c:569 #, c-format msgid "Plot - %s" msgstr "Tracé - %s" #: ../src/plot.c:299 msgid "Nodes" msgstr "Noeuds" #: ../src/plot.c:303 ../src/plot.c:668 msgid "Functions" msgstr "Fonctions" #: ../src/plot.c:387 msgid "Oregano - Plot" msgstr "Oregano - Tracé" #: ../src/plot.c:447 msgid "Close" msgstr "Fermer" #. Installation of the menu in the menubar #: ../src/plot.c:454 msgid "File" msgstr "Fichier" #: ../src/plot.c:691 msgid "TRANSFER" msgstr "TRANSFERT" #: ../src/part-browser.c:180 ../src/part-browser.c:400 msgid "Unable to load required part" msgstr "Il est impossible de charger le composant demandé" #: ../src/part-browser.c:475 ../src/part-browser.c:495 #: ../src/part-browser.c:503 msgid "Could not create part browser" msgstr "Création du navigateur de composants impossible" #: ../src/oregano.c:144 #, c-format msgid "" "You seem to be running Oregano without having it installed properly on your " "system.\n" "\n" "Please install Oregano and try again." msgstr "" "Il semble que vous utilisez Oregano sans qu'il soit correctement installé " "sur votre\n" "système.\n" "Veuillez réinstaller Oregano et essayer de nouveau." #: ../src/oregano.c:163 msgid "" "Could not find a parts library.\n" "\n" "This is probably due to a faulty installation of Oregano. Please check your " "installation." msgstr "" "Aucune bibliothèque de composants trouvée.\n" "\n" "Ce problème est probablement dû à une installation défectueuse d'Oregano. " "Veuillez vérifier votre installation." #: ../src/oregano.c:204 msgid "Welcome to Oregano" msgstr "Oregano" #: ../src/oregano-config.c:115 #, c-format msgid "Loading %s ..." msgstr "Chargement de %s ..." #: ../src/oregano-config.c:153 #, c-format msgid "Could not read the parts library: %s " msgstr "Lecture de la bibliothèque de composants impossible : %s" #: ../src/oregano-config.c:155 #, c-format msgid "" "The file is probably corrupt. Please reinstall the parts 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-helper.c:461 msgid "No ground node. Aborting.\n" msgstr "Pas de noeud de masse. Abandon.\n" #: ../src/engines/netlist-helper.c:466 #, 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-helper.c:471 msgid "No test clamps found. Aborting.\n" msgstr "Pas de point de test. Abandon.\n" #: ../src/engines/netlist-helper.c:476 #, 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/netlist-helper.c:580 #, c-format msgid "Couldn't find part, pin_nr %d." msgstr "Impossible de trouver le composant, contact %d" #: ../src/engines/netlist-helper.c:581 msgid "Problem of library:" msgstr "Problème de bibliothèque" #: ../src/engines/gnucap.c:375 ../src/engines/ngspice.c:332 msgid "### Too few or none analysis found ###\n" msgstr "### Pas assez ou aucune analyse trouvée ###\n" #: ../src/engines/gnucap.c:444 msgid "Unable to execute GnuCap." msgstr "Il est impossible d'exécuter « GnuCap »" #: ../src/engines/gnucap.c:461 ../src/engines/ngspice.c:447 msgid "None" msgstr "Aucun" #: ../src/engines/gnucap.c:716 msgid "Unknown analysis" msgstr "Analyse inconnue" #: ../src/engines/gnucap.c:766 msgid "abort" msgstr "arrêt" #: ../src/engines/engine.c:38 msgid "Operating Point" msgstr "Point de fonctionnement" #: ../src/engines/engine.c:39 msgid "Transient Analysis" msgstr "Analyse transitoire" #: ../src/engines/engine.c:40 msgid "DC transfer characteristic" msgstr "Analyse Courant Continu" #: ../src/engines/engine.c:41 msgid "AC Analysis" msgstr "Analyse AC" #: ../src/engines/engine.c:42 msgid "Transfer Function" msgstr "Fonction de transfert" #: ../src/engines/engine.c:43 msgid "Distortion Analysis" msgstr "Analyse de distorsion" #: ../src/engines/engine.c:44 msgid "Noise Analysis" msgstr "Analyse de bruit" #: ../src/engines/engine.c:45 msgid "Pole-Zero Analysis" msgstr "Analyse Pôles-Zéros" #: ../src/engines/engine.c:46 msgid "Sensitivity Analysis" msgstr "Analyse de sensibilité" #: ../src/engines/engine.c:47 msgid "Fourier Analysis" msgstr "Analyse de Fourier" #: ../src/engines/engine.c:48 msgid "Unknown Analysis" msgstr "Analyse inconnue" #: ../src/engines/ngspice.c:232 msgid "" "Your transient analysis settings present a weakness... the start figure is " "greater than stop figure\n" msgstr "" "Votre paramétrage de l'analyse transitoire en courant continu a un " "problème... la valeur de départ est plus grande que la valeur d'arrivée\n" #: ../src/engines/ngspice.c:428 msgid "Unable to execute NgSpice." msgstr "Il est impossible d'exécuter « NgSpice »" #: ../src/engines/ngspice-analysis.c:244 msgid "Only the 9 first nodes will be considered" msgstr "Seuls les 9 premiers noeuds seront pris en charge" #: ../src/engines/ngspice-analysis.c:268 msgid "Time" msgstr "Temps" #: ../src/engines/ngspice-analysis.c:580 msgid "No analysis found" msgstr "Aucune analyse trouvée" #: ../src/engines/ngspice-analysis.c:590 msgid "Transient analysis expected not found" msgstr "L'analyse transitoire attendue est non trouvée" #: ../src/engines/ngspice-analysis.c:610 msgid "Fourier analysis expected not found" msgstr "L'analyse de Fourier attendue est non trouvée" #: ../src/engines/ngspice-analysis.c:629 msgid "DC Sweep expected but not found" msgstr "Analyse de balayage en courant continue non trouvée" #: ../src/netlist-editor.c:144 #, c-format msgid "The file %s could not be saved" msgstr "Enregistrement impossible du ficher %s" #: ../src/netlist-editor.c:145 msgid "Could not save temporary netlist file" msgstr "Enregistrement impossible du fichier temporaire " #: ../src/netlist-editor.c:207 ../src/netlist-editor.c:219 #: ../src/netlist-editor.c:228 msgid "Could not create the netlist dialog" msgstr "Création impossible du dialogue netlist" #. gettext support #: ../src/netlist-editor.c:298 #, c-format msgid "The file %s could not be found." msgstr "Fichier %s introuvable." #: ../src/netlist-editor.c:299 msgid "Could not find the required file" msgstr "Fichier requis introuvable" #: ../src/load-schematic.c:264 #, c-format msgid "Bad file format." msgstr "Format de fichier incorrect." #: ../src/load-schematic.c:274 #, c-format msgid "Unknown parser error." msgstr "Erreur inconnue de l'analyseur." #: ../src/load-library.c:153 #, c-format msgid "Could not find the requested symbol: %s\n" msgstr "Le symbole demandé est introuvable : %s\n" #: ../src/load-library.c:169 #, c-format msgid "Could not find the requested part: %s\n" msgstr "Le composant demandé est introuvable : %s\n" #: ../src/file.c:53 ../src/file.c:94 msgid "Oregano Files" msgstr "Fichiers d'Oregano" #: ../src/file.c:55 ../src/file.c:96 msgid "All Files" msgstr "Tous les fichiers" #: ../src/file.c:58 msgid "Open File" msgstr "Ouvrir le fichier" #: ../src/file.c:99 msgid "Save File" msgstr "Enregistrer fichier" #: ../src/file.c:149 msgid "Netlist File" msgstr "Fichier netlist" #: ../src/dialogs.c:164 msgid "" "(c) 2009-2012 Marc Lorber 2003-2006 LUGFi\n" "(c) 1999-2001 Richard Hult" msgstr "" "(c) 2009-2012 Marc Lorber 2003-2006 LUGFi\n" "(c) 1999-2001 Richard Hult" #: ../src/dialogs.c:178 msgid "Schematic capture and circuit simulation.\n" msgstr "Dessin de schémas et simulation de circuits.\n" #: ../src/model/part.c:249 #, c-format msgid "Couldn't find the requested symbol%s for part %s in library.\n" msgstr "Le symbole demandé %s pour le composant %s est introuvable.\n" #: ../src/model/schematic.c:569 #, c-format msgid "File %s does not exists." msgstr "Le fichier %s n'existe pas." #: ../src/model/schematic.c:577 ../src/model/schematic.c:616 #, c-format msgid "Unknown file format for %s." msgstr "Format de fichier inconnu pour %s." #: ../src/model/schematic.c:596 #, c-format msgid "Load fails!." msgstr "Échec du chargement." #: ../src/model/schematic.c:997 ../src/model/schematic.c:1001 #: ../src/model/schematic.c:1007 msgid "Error loading print-options.ui" msgstr "Il est impossible de charger « print-options.ui »" #: ../src/model/schematic.c:1081 msgid "Schematic" msgstr "Schéma" #~ msgid "User Interface" #~ msgstr "Interface utilisateur" #~ msgid "Select A File" #~ msgstr "Sélectionner un fichier" #~ msgid "Executable Path" #~ msgstr "Chemin vers l'exécutable" #~ msgid "\n" #~ msgstr "\n" #~ msgid "Select A Directory" #~ msgstr "Sélectionner un répertoire" #~ msgid "Library" #~ msgstr "Bibliothèque" #~ msgid "Data Paths" #~ msgstr "Chemins vers les données" #~ msgid "Paths" #~ msgstr "Chemins" #~ msgid "[FILES]" #~ msgstr "[Fichiers]" #~ msgid "Format '%s' not supported." #~ msgstr "Le format « %s » n'est pas supporté" #~ msgid "Done.\n" #~ msgstr "Effectué.\n" #, fuzzy #~ msgid "Analysis expected not found 2" #~ msgstr "Analyse attendue non trouvée" #, fuzzy #~ msgid "Could not main window." #~ msgstr "Création de la fenêtre de tracé impossible." #~ msgid "Plot" #~ msgstr "Tracé" #~ msgid "Region" #~ msgstr "Vue locale" #~ msgid "Shift" #~ msgstr "Déplacement" #~ msgid "DEC" #~ msgstr "DÉC" #~ msgid "LIN" #~ msgstr "LIN" #~ msgid "OCT" #~ msgstr "OCT" #~ msgid "Simulation Settings" #~ msgstr "Paramètres de la simulation" #~ msgid "..." #~ msgstr "..." #~ msgid "Press this button to place the selected part" #~ msgstr "Presser ce bouton pour placer le composant sélectionné" #~ msgid "Select which library to use" #~ msgstr "Choisir la bibliothèque à utiliser" #~ msgid "Open file" #~ msgstr "Ouvrir fichier" #~ msgid "Save schematic as" #~ msgstr "Enregistrer le schéma sous" #~ msgid "Netlist filename" #~ msgstr "Nom du fichier netlist" #~ msgid "Could not create plot window" #~ msgstr "Création de la fenêtre de tracé impossible" #~ msgid "Page Properties" #~ msgstr "Mise en page" #~ msgid "Sans 10" #~ msgstr "Sans 10" #~ msgid "Sans 8" #~ msgstr "Sans 8" #~ msgid "Add new function to the graph" #~ msgstr "Ajouter une nouvelle fonction au graphe" #~ msgid "100%" #~ msgstr "100 %" #~ msgid "_Preferences..." #~ msgstr "_Préférences" #~ msgid "Show crosshairs" #~ msgstr "Afficher le curseur" #~ msgid "Schematic Plot" #~ msgstr "Tracé du schéma" #~ msgid "Could not create plot export window." #~ msgstr "Création de la fenêtre d'exportation du tracé impossible." #~ msgid "Save PNG" #~ msgstr "Enregistrer au format PNG" #~ 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 "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 "TODO : Add FINDPATH for Engines" #~ msgstr "" #~ "A_faire : Ajouter le moyen de trouver le chemin des moteurs « SPICE »" #~ 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)" oregano-0.84.41/wscript0000644000175000017500000002076113413640652013762 0ustar rubenruben#! /usr/bin/env python3 # encoding: utf-8 VERSION = '0.84.41' APPNAME = 'oregano' top = '.' out = 'build' import os from waflib import Logs as logs from waflib import Utils as utils rec = ['src', 'po', 'data', 'test'] def options(opt): opt.load('compiler_c gnu_dirs glib2') opt.add_option('--debug', dest='build_debug', action='store_true', default=False, help='Build with debug flags') opt.add_option('--release', dest='build_release', action='store_true', default=False, help='Build with release flags') opt.add_option('--no-install-gschema', dest='no_install_gschema', action='store_true', default=False, help='Do not install the schema file') opt.add_option('--no-xdg', dest='no_xdg', action='store_true', default=False, help='Do not install the xdg desktop or xdg mime files') opt.add_option('--run', action='store_true', default=False, help='Run imediatly if the build succeeds.') opt.add_option('--gnomelike', action='store_true', default=False, help='Determines if gnome shemas and gnome iconcache should be installed.') # opt.add_option('--intl', action='store_true', default=False, help='Use intltool-merge to extract messages.') def configure(conf): conf.load('compiler_c gnu_dirs glib2 intltool') conf.env.appname = APPNAME conf.env.version = VERSION conf.define('VERSION', VERSION) conf.define('GETTEXT_PACKAGE', APPNAME) #things the applications needs to know about, for easier re-use in subdir wscript(s) conf.env.path_datadir = utils.subst_vars('${DATADIR}/', conf.env) conf.env.path_ui = utils.subst_vars('${DATADIR}/oregano/ui/', conf.env) conf.env.path_model = utils.subst_vars('${DATADIR}/oregano/models/', conf.env) conf.env.path_partslib = utils.subst_vars('${DATADIR}/oregano/library/', conf.env) conf.env.path_lang = utils.subst_vars('${DATADIR}/oregano/language-specs/', conf.env) conf.env.path_examples = utils.subst_vars('${DATADIR}/oregano/examples/', conf.env) # conf.env.path_icons = '${DATADIR}/oregano/icons/' # conf.env.path_mime = '${DATADIR}/oregano/mime/' # conf.env.path_locale = '${DATADIR}/oregano/locale/' # conf.env.path_schemas = utils.subst_vars('${DATADIR}/glib-2.0/schemas/', conf.env) #define the above paths so the application does know about files locations conf.define('OREGANO_UIDIR', conf.env.path_ui) conf.define('OREGANO_MODELDIR', conf.env.path_model) conf.define('OREGANO_LIBRARYDIR', conf.env.path_partslib) conf.define('OREGANO_LANGDIR', conf.env.path_lang) conf.define('OREGANO_EXAMPLEDIR', conf.env.path_examples) # conf.define('OREGANO_ICONDIR', conf.env.path_icons) # conf.define('OREGANO_MIMEDIR', conf.env.path_mime) # conf.define('OREGANO_LOCALEDIR', conf.env.path_locale) # conf.define('OREGANO_SCHEMASDIR', conf.env.path_schemas) conf.env.gschema_name = "io.ahoi.oregano.gschema.xml" conf.define('OREGANO_SCHEMA_NAME', conf.env.gschema_name) conf.check_cc(lib='m', uselib_store='M', mandatory=True) conf.check_cfg(atleast_pkgconfig_version='0.26') conf.check_cfg(package='glib-2.0', uselib_store='GLIB', args=['glib-2.0 >= 2.44', '--cflags', '--libs'], mandatory=True) conf.check_cfg(package='gobject-2.0', uselib_store='GOBJECT', args=['--cflags', '--libs'], mandatory=True) conf.check_cfg(package='gtk+-3.0', uselib_store='GTK3', args=['gtk+-3.0 >= 3.12', '--cflags', '--libs'], mandatory=True) conf.check_cfg(package='libxml-2.0', uselib_store='XML', args=['--cflags', '--libs'], mandatory=True) conf.check_cfg(package='goocanvas-2.0', uselib_store='GOOCANVAS', args=['--cflags', '--libs'], mandatory=True) conf.check_cfg(package='gtksourceview-3.0', uselib_store='GTKSOURCEVIEW3', args=['--cflags', '--libs'], mandatory=True) conf.check_large_file(mandatory=False) conf.check_endianness(mandatory=False) conf.check_inline(mandatory=False) conf.find_program('clang-format', var='CODEFORMAT', mandatory=False) conf.find_program('gdb', var='GDB', mandatory=False) conf.find_program('nemiver', var='NEMIVER', mandatory=False) conf.find_program('valgrind', var='VALGRIND', mandatory=False) # -ggdb vs -g -- http://stackoverflow.com/questions/668962 if conf.options.build_debug: conf.env.CFLAGS = ['-ggdb', '-Wall'] conf.define('DEBUG',1) elif conf.options.build_release: conf.env.CFLAGS = ['-O2', '-Wall'] conf.define('RELEASE',1) from waflib.Context import Context from waflib.Build import BuildContext def pre_fun(ctx): if ctx.cmd != 'install': logs.info ('Variant: \'' + ctx.variant + '\'') def post_fun(ctx): if ctx.options.run: ctx.exec_command('') def build(bld): bld(features='subst', source='oregano.spec.in', target='oregano.spec', install_path=None, VERSION=bld.env.version) if bld.variant != 'rpmspec': bld.add_pre_fun(pre_fun) bld.add_post_fun(post_fun) bld.recurse(rec) class rpmspec(BuildContext): """fill rpmspec""" cmd = 'rpmspec' variant = 'rpmspec' class release(BuildContext): """compile release binary""" cmd = 'release' variant = 'release' class debug(BuildContext): """compile debug binary""" cmd = 'debug' variant = 'debug' def docs(ctx): logs.info("TODO: docs generation is not yet supported") def dist(ctx): ctx.tar_prefix = APPNAME ctx.base_name = APPNAME+'-'+VERSION ctx.algo = 'tar.xz' ctx.excl = ['.*', '*~','./build','*.'+ctx.algo], ctx.files = ctx.path.ant_glob('src/**/*', excl=['**/*~']) ctx.files.extend(ctx.path.ant_glob('**/wscript')) ctx.files.extend(ctx.path.ant_glob('**/*', excl=['**/.*', 'build', 'buildrpm', '*.tar.*'])) def gdb_fun(ctx): if ctx.env.GDB: os.system ("G_DEBUG=resident-modules,fatal-warnings "+ctx.env.GDB[0]+" --args ./build/debug/"+APPNAME+" --debug-all") else: logs.warn ("Did not find \"gdb\". Re-configure if you installed it in the meantime.") def nemiver_fun(ctx): if ctx.env.NEMIVER: os.system (" "+ctx.env.NEMIVER[0]+" --env=\"G_DEBUG=resident-modules,fatal-warnings\" ./build/debug/"+APPNAME+" --debug-all") else: logs.warn ("Did not find \"nemiver\". Re-configure if you installed it in the meantime.") def valgrind_fun(ctx): if ctx.env.VALGRIND: os.system ("G_DEBUG=resident-modules,always-malloc "+ctx.env.VALGRIND[0]+" --leak-check=full --leak-resolution=high --show-reachable=no --track-origins=yes --undef-value-errors=yes --show-leak-kinds=definite --free-fill=0x77 ./build/debug/"+APPNAME+" --debug-all") else: logs.warn ("Did not find \"valgrind\". Re-configure if you installed it in the meantime.") def massif_fun(ctx): if ctx.env.VALGRIND: os.system ("G_DEBUG=resident-modules,always-malloc "+ctx.env.MASSIF[0]+" --tool=massif --depth=10 --max-snapshots=1000 --alloc-fn=g_malloc --alloc-fn=g_realloc --alloc-fn=g_try_malloc --alloc-fn=g_malloc0 --alloc-fn=g_mem_chunk_alloc --threshold=0.01 build/debug/ ./build/debug/"+APPNAME+" --debug-all") else: logs.warn ("Did not find \"massif\". Re-configure if you installed it in the meantime.") def codeformat_fun(ctx): if ctx.env.CODEFORMAT: nodes = ctx.path.ant_glob(\ ['src/*.[ch]', 'src/tools/*.[ch]', 'src/gplot/*.[ch]', 'src/engines/*.[ch]', 'src/sheet/*.[ch]', 'src/model/*.[ch]']) args = '' for item in nodes: args += str(item.abspath())+' ' os.system (''+ctx.env.CODEFORMAT[0]+' -i '+ args) else: logs.warn ("Did not find \"clang-format\". Re-configure if you installed it in the meantime.") def spawn_pot(ctx): # "create a .pot from all sources (.ui,.c,.h,.desktop)" ctx.recurse ('po') def update_po(ctx): # "update the .po files" ctx.recurse ('po') # we need to subclass BuildContext instead of Context # in order to access ctx.env.some_variable # TODO create a custom subclass of waflib.Context.Context which implements the load_env from BuildContext class spawnpot(BuildContext): """spawn .pot files""" cmd = 'spawnpot' fun = 'spawn_pot' class updatepo(BuildContext): """update the translate .po files""" cmd = 'updatepo' fun = 'update_po' class codeformat(BuildContext): """Format the source tree""" cmd = 'codeformat' fun = 'codeformat_fun' class massif(BuildContext): """Run with \"massif\"""" cmd = 'massif' fun = 'massif_fun' class valgrind(BuildContext): """Run with \"valgrind\"""" cmd = 'valgrind' fun = 'valgrind_fun' class gdb(BuildContext): """Run with \"gdb\"""" cmd = 'gdb' fun = 'gdb_fun' class nemiver(BuildContext): """Run with \"nemiver\"""" cmd = 'nemiver' fun = 'nemiver_fun' def builddeps_fun(ctx): os.system('./builddeps.sh') class builddeps(Context): """Install build dependencies""" cmd = 'builddeps' fun = 'builddeps_fun' def version_fun(ctx): with open("VERSION", "w") as f: f.write(VERSION + "\n") class version(Context): """Oregano Version to file VERSION""" cmd = 'version' fun = 'version_fun' oregano-0.84.41/data/0000755000175000017500000000000013413640652013247 5ustar rubenrubenoregano-0.84.41/data/oregano.MAN.in0000644000175000017500000000126113413640652015643 0ustar rubenruben.TH OREGANO 1 "13 September 2017" "OREGANO" .SH NAME oregano \- an electrical engineering tool .SH SYNOPSIS oregano [[\-\-debug-wires] [\-\-debug-dots] [\-\-debug-boundingboxes] [\-\-debug-directions] | [\-\-debug-all]] [\-\-display=DISPLAY] .SH DESCRIPTION A simulation frontend for UC Berkeley spice3, ngspice and gnucap written in 21st century Gtk+. .SH BUGS File bugs at https://github.com/drahnr/oregano .SH AUTHORS Richard Hult .PP Ricardo Markiewicz .PP Andr\('es de Barbar\('a .PP Marc Lorber .PP Bernhard Schuster .PP Guido Trentalancia oregano-0.84.41/data/help/0000755000175000017500000000000013413640652014177 5ustar rubenrubenoregano-0.84.41/data/help/es/0000755000175000017500000000000013413640652014606 5ustar rubenrubenoregano-0.84.41/data/help/es/oregano/0000755000175000017500000000000013413640652016240 5ustar rubenrubenoregano-0.84.41/data/help/es/oregano/oregano-es.omf0000644000175000017500000000177713413640652021016 0ustar rubenruben rmarkie@fi.uba.ar (Ricardo Markiewicz) Oregano User Guide 2004-05-03 This document will describe the benefits of oregano 2, and show you some examples. manual oregano-0.84.41/data/help/es/oregano/oregano.xml0000644000175000017500000001006213413640652020413 0ustar rubenruben Oregano"> ]>
<application>Oregano</application>Manual de Usuario 2003 2004 LUGFi 1999 2001 2002 Richard Hult LUGFI Ricardo Markiewicz
rmarkie@fi.uba.ar
Manual de Oregano 2004 Ricardo Markiewicz 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. Feedback To report a bug or make a suggestion regarding the Oregano application or this manual, follow the directions in the Oregano Feedback Page.
Introducción Oregano es una aplicación de captura esquemática y simulación de circuitos electrónicos. Editando un Circuito Al iniciar la aplicación tendrá una hoja vacía donde podrá comenzar a agregar los componentes de su circuito. Los componentes se encuentran en la lista de la derecha, agrupados por categorías. Simulación de Circuitos Parámetros de simulaciónTODO Configurar <application>Oregano</application>Opciones de EdiciónTODORutas de archivosTODO : agregar que se supone que se configura acaOregano Parser : Especifica el nómbre y ruta donde se encuentra el script oregano_parser.pl que es utilizado para la simulación. Este ejecutable es el encargado de realizar la simulación utilizando el motor (TODO:ver de poner un ref a donde se explique los motores de simulación) y entregar los datos en un formato que Oregano pueda entender.Formato de ArchivosComprimir 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ón y esta opción puede dificultar exportar el documento guardado para ser utilizado con otra aplicación.Motor de SimulaciónPuede seleccionar entre dos motores de simulación : GNU Cap o ngSpice.
oregano-0.84.41/data/help/es/oregano/legal.xml0000644000175000017500000000712113413640652020047 0ustar rubenruben 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 link or in the file COPYING-DOCS distributed with this manual. 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. 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. DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: 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 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. oregano-0.84.41/data/help/es/oregano/oregano-es.omf.out0000644000175000017500000000177213413640652021617 0ustar rubenruben rmarkie@fi.uba.ar (Ricardo Markiewicz) Oregano User Guide 2004-05-03 This document will describe the benefits of oregano 2, and show you some examples. manual oregano-0.84.41/data/help/es/oregano/omf_timestamp0000644000175000017500000000000013413640652021015 0ustar rubenrubenoregano-0.84.41/data/help/fr/0000755000175000017500000000000013413640652014606 5ustar rubenrubenoregano-0.84.41/data/help/fr/oregano/0000755000175000017500000000000013413640652016240 5ustar rubenrubenoregano-0.84.41/data/help/fr/oregano/oregano.xml0000644000175000017500000001233013413640652020413 0ustar rubenruben Oregano"> ]>
Guide de l'Utilisateur d'<application>Oregano</application> 2003 2004 LUGFi 1999 2001 2002 Richard Hult LUGFI Ricardo Markiewicz
rmarkie@fi.uba.ar
Oregano Manual V 0 2004 Ricardo Markiewicz 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. Retour d'expérience Pour faire part d'un problème ou faire une suggestion au sujet de Oregano ou de ce guide, nous vous proposons de suivre les instructions proposées dans Oregano Feedback Page.
Comment utiliser oregano pour la première fois 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. 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. Assurez-vous d'avoir connecter au moins une masse au circuit, celle-ci étant nécessaire pour réaliser une simulation. Saisie d'un circuit Il existe quelques raccourcis calvier permettant d'accélérer l'édition du schéma : Ctrl-APermet de sélectionner tous les objets sur le schéma Ctrl-Shift-APermet de désélectionner tous les objets rPermet de tourner l'objet sélectionner de 90 degrés dans le sens des aiguilles d'une montre <Del>Permet de détruire les objets sélectionnés lPermet de mette en place le composant sélectionné 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. Simulation Quand vous avez dessiné un circuit et souhaitez effectuer une simulation, pressez soit le boutton sur la barre d'outils ou sélectionner Outils ->Simulation. La simulation est alors lancée et vous suivez sa progression sur la fenêtre qui apparait devant vous. Si vous souhaitez changer les paramètres de simulation, sélectionner Paramètres->Paramètres de Simulation.
oregano-0.84.41/data/help/fr/oregano/legal.xml0000644000175000017500000000711713413640652020054 0ustar rubenruben L'utilisateur est libre de copier, distribuer et/ou modifier le présent document dans les termes de la GFDL (GNU Free Documentation License), Version 1.1 ou toute autre version ultérieure publié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 lien suivant ou dans le fichier COPYING-DOCS fourni avec le présent manuel. Le présent manuel fait partie d'une collection de manuels GNOME distribués dans les termes de la GFDL. Vous souhaitez, si vous le souhaitez, le distribuer indépendamment de la collection en incluant un exemplaire de la licence du manuel, comme le décrit la section 6 de la licence. La plupart des noms utilisés par les entreprises pour leurs produits et leurs services sont des marques déposées. Lorsque ces noms apparaissent dans la documentation GNOME et que les membres du projet de documentation GNOME sont informés de l'existence de ces marques déposées, ces noms apparaissent en majuscules, ou la première lettre en majuscule. LE PRÉSENT DOCUMENT ET SES VERSIONS DE MISE À JOUR SONT FOURNIS SOUS LES CONDITIONS DE L'ACCORD DE LICENCE DE DOCUMENTATION LIBRE GNU, SACHANT QUE : LE PRÉSENT DOCUMENT EST FOURNI "TEL QUEL", SANS AUCUNE GARANTIE, EXPRESSE OU IMPLICITE, ET INCLUT SANS LIMITATION LES GARANTIES DE BONNE QUALITÉ MARCHANDE OU D'APTITUDE À UN EMPLOI PARTICULIER OU AUTORISÉ DU DOCUMENT OU DE SA VERSION DE MISE À 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 À JOUR S'AVÉRAIT DÉFECTUEUX DE QUELQUE MANIÈRE QUE CE SOIT, L'UTILISATEUR (ET NON LE REDACTEUR INITIAL, L'AUTEUR OU TOUT AUTRE PARTICIPANT) ENDOSSERA LES COÛTS NÉCESSAIRES À TOUTE INTERVENTION, RÉPARATION OU CORRECTION. CETTE LIMITATION DE RESPONSABILITÉ CONSTITUE UNE PARTIE ESSENTIELLE DE LA PRÉSENTE LICENCE. AUCUNE UTILISATION DU PRÉSENT DOCUMENT OU DE SA VERSION DE MISE À JOUR N'EST AUTORISÉE AUX TERMES DU PRÉSENT ACCORD, EXCEPTÉ SOUS CETTE LIMITATION DE RESPONSABILITÉ ; EN AUCUNE CIRCONSTANCE ET SOUS AUCUNE INTERPRÉTATION DE LA LOI, QU'IL S'AGISSE DE RESPONSABILITÉ CIVILE (Y COMPRIS LA NÉGLIGENCE), CONTRACTUELLE OU AUTRE, L'AUTEUR, LE RÉDACTEUR INITIAL, TOUT PARTICIPANT ET TOUT DISTRIBUTEUR DE CE DOCUMENTOU DE SA VERSION DE MISE À JOUR AINSI QUE TOUT FOURNISSEUR DE QUELQUE PARTIE QUE CE SOIT NE POURRONT ÊTRE TENUS RESPONSABLES À L'ÉGARD DE QUICONQUE POUR TOUT DOMMAGE DIRECT, INDIRECT, PARTICULIER OU ACCIDENTEL DE TOUT TYPE Y COMPRIS, SANS LIMITATION, LES DOMMAGES LIÉS À LA PERTE DE CLIENTÈLE, AUX ARRÊTS DE TRAVAIL, AUX DÉFAILLANCES ET AUX DYSFONCTIONNEMENTS INFORMATIQUES OU TOUT AUTRE DOMMAGE OU PERTE LIÉE À L'UTILISATION DU PRÉSENT DOCUMENT ET DE SES VERSIONS DE MISE À JOUR, ET CE MÊME SI CES PARTIES ONT ÉTÉ INFORMÉES DE LA POSSIBILITÉ DE TELS DOMMAGES. oregano-0.84.41/data/help/fr/oregano/oregano-fr.omf0000644000175000017500000000201313413640652020776 0ustar rubenruben rmarkie@fi.uba.ar (Ricardo Markiewicz) Guide de l'Utilisateur d'Oregano 2004-05-03 Ce document décrit les particularités d'oregano et les présente au travers d'exemples. manual oregano-0.84.41/data/help/C/0000755000175000017500000000000013413640652014361 5ustar rubenrubenoregano-0.84.41/data/help/C/oregano/0000755000175000017500000000000013413640652016013 5ustar rubenrubenoregano-0.84.41/data/help/C/oregano/oregano.xml0000644000175000017500000014561113413640652020177 0ustar rubenruben Oregano"> ]>
<application>Oregano</application> User's Guide 2009 Marc Lorber 20032004 LUGFi 199920012002 Richard Hult LUGFI Marc Lorber
Lorber.Marc@wanadoo.fr
Ricardo Markiewicz
rmarkie@fi.uba.ar
Oregano Manual V 0.1 2009 Marc Lorber Oregano Manual V 0 2004 Ricardo Markiewicz 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. &legal; Feedback To report a bug or make a suggestion regarding the Oregano application or this manual, follow the directions in the Oregano Feedback Page.
Introduction to &app; &app; is a general purpose circuit-editor and simulation tool that provides a variety of features. As you will see, you can switch from the circuit editor to the simulation environment by clicking the icons in the &app; window. &app; is based on the SPICE simulation program, originates from the EECS Department of the University of California at Berkeley. For more details regarding SPICE, see . &app;: Circuit Editor &app; provides a variety of services to draw, edit an electrical circuit: Pick up a part using the part browser, clicking on the "place" button. Draw wires using the wire editor, after clicking on the "Wire Editor" button Join parts between each other to feature a circuit. Save the drawn circuit as an oregano file. Re-open an oregano file to edit or modify it.
&app;: main window
&app;: Simulation environment From a schematic drawn under &app; as a circuit editor, it is possible to obtain a file input for SPICE 3. To realize this, you have to select Tools-> Generate Netlist
&app;: Generate Netlist
Concurrently, it is posible to directly run a simulation, using a simulation engine: Either ngspice. Or gnucap. To run a simulation, just select the "engine" icon.
&app;: Simulate
The plot, result of the simulation will appear in a new window, beside the circuit window.
&app;: Simulate
Getting Started with Oregano When you first start &app;, you will be presented to an empty sheet, where you can place circuit components and connect them with wires.
&app;: main window
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.
&app;: main window
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.
&app;: main window
Caution: Make sure you connect at least one ground node to the circuit, as this is neccessary to perform a simulation.
&app;: main window
Editing the Circuit There are a few accelerator keys that can help editing the circuit: Ctrl-A Select all objects on the sheet Ctrl-Shift-A Deselect all objects r Rotate the selected objects 90 degrees clockwise <Del> Delete the selected objects l Place the currently selected part 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. Parts selected will appear "green" on the circuit.
&app;: main window
Circuit Description Each circuit can be described into a dedicated "description" window, that can be activated via File->Schematic Properties
&app;: main window
Print the circuit The circuit drawn on the main window can be printed. Conversely, you may will observe the printing by a preview before. Therefore select File->Print Preview. This service will use evince and will raise a new window containing the circuit within a title block.
&app;: preview printing
As you probably see, the orientation of the preview is not correct, you may correct the printing parameters, selecting File->Print Properties. A new window will appear providing you with possibilities to: Select a printer Any printer, for portable format <The System printer> a PDF output parametrize the Paper size A4 various format supported by the system define the orientation of the circuit on the printinted page: Portrait Landscape Reverse Portrait Reverse Landscape
&app;: page properties window
Select, now, an orientation conformed to "Landscape" and select again the printing preview, you will see the printing preview window with a correct orientation.
&app;: preview printing
Generate the netlist input for SPICE It si possible to generate a file "netlist" input for SPICE. For that, select View->Netlist. The produced "netlist" can be recorded into an iondependant file. Select "Save" in the window (see below).
&app;: preview printing
Export the circuit as figure The circuit can be exported to be integrated into an other document. For that, select File->Export.... A new window will appear providing you with possibilities to: Size the export in pixels Width (by default) = 300 Height (by default) = 300 define the format (according to the formats supported by your system) of the export Scalable Vector Graphic (SVG) Portable Document Format (PDF) Postscript (PS) Portable Network Graphic (PNG) define the colour of the background of the export White Black Transparent define if the export is in colour or not Colour Black and White Finally, you will define the file in which you will record your export.
&app;: preview printing
Simulation When you have finalized a circuit, you may wish to run a simulation. The simulation "run" may be parmetrized, through several menus, that will be detailled within this paragraph, hereunder. Simulation may be activated: either pressing the simulate button on the toolbar or select Tools->Simulation. The simulation then starts and you can follow the progress on the dialog box that pops up.
&app;: main window
Analyses This paragraph will go through the analyses that the engine ngspice is able to provide. Noise analysis The noise analysis 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. Operating point analysis The operating point analysis determines the dc operating point of the circuit with inductors shorted and capacitors opened. Operating point sweep Analysis The operating point sweep analysis determines the values of output variables while one or two 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. Pole-zero analysis The pole-zero analysis 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. Small-Signal distortion analysis The distortion analysis computes steady-state harmonic and intermodulation products for small input signal magnitudes. Not all devices are supported. Small Signal frequency response analysis The ac small-signal 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. Sensitivity analysis Ngspice will calculate 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. Spice calculates the difference in an output variable (either a node voltage or a branch current) by perturbing each parameter of each device independently. Transfer function analysis The (small signal) transfer function analysis computes 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. Transient analysis The transient analysis 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. Parameters of the simulation Your circuit being captured, you may want to run a simulation. For that you have access to 2 simulations engines that you may chosen via Edit-> Preferences. Then select the simulation engine by ticking the engine name.
&app;: main window
The simulation can be parametrized according to the kind of circuit you may analyse. The selection of parameters of the siumulation is performed through: either pressing the "simulation Settings" button on the toolbar (see figure here below) or select Edit->Simulation Settings.
&app;: main window
The "simulation settings" window pops up, allowing you to parmetrize the simulation.
&app;: main window
Therefore, you may be able to select the analysis you will run: tick the ticking box you select and the window will open the parameters associated to the analysis. Select the <emphasis role="bold">Transient</emphasis> analysis You can tick to force the Initial Conditions You may choose the Start figure You may choose the Stop figure You may tick if you want to force the stepping figure: the hidden field apperas You may choose the Stepping figure
&app;: main window
Select the <emphasis role="bold">Fourier</emphasis> analysis
&app;: main window
Advanced Parameters Distorsion Control This card controls whether SPICE will compute the distortion characteristic of the circuit in a small-signal mode as a part of the ac small-signal sinusoidal steady-state analysis. The analysis is performed assuming that one or two signal frequencies are imposed at the input; let the two frequencies be f1 (the nominal analysis frequency) and f2 (=SKW2*f1). The program then computes the following distortion measures: HD2 - the magnitude of the frequency component 2*f1 assuming that f2 is not present. HD3 - the magnitude of the frequency component 3*f1 assuming that f2 is not present. SIM2 - the magnitude of the frequency component f1 + f2. DIM2 - the magnitude of the frequency component f1 - f2. DIM3 - the magnitude of the frequency component 2*f1 - f2. RLOAD is the name of the output load resistor into which all distortion power products are to be computed. INTER is the interval at which the summary printout of the contributions of all nonlinear devices to the total distortion is to be printed. If omitted or set to zero, no summary printout will be made. REFPWR is the reference power level used in computing the distortion products; if omitted, a value of 1 mW (that is, dbm) is used. SKW2 is the ratio of f2 to f1. If omitted, a value of 0.9 is used (i.e., f2 = 0.9*f1). SPW2 is the amplitude of f2. If omitted, a value of 1.0 is assumed. The distortion measures HD2, HD3, SIM2, DIM2, and DIM3 may also be be printed and/or plotted (see the description of the .PRINT and .PLOT cards). Noise Control This card controls the noise analysis of the circuit. The noise analysis is performed in conjunction with the ac analysis (see .AC card). OUTV is an output voltage which defines the summing point. INSRC is the name of the independent voltage or current source which is the noise input reference. NUMS is the summary interval. SPICE will compute the equivalent output noise at the specified output as well as the equivalent input noise at the specified input. In addition, the contributions of every noise generator in the circuit will be printed at every NUMS frequency points (the summary interval). If NUMS is zero, no summary printout will be made. The output noise and the equivalent input noise may also be printed and/or plotted (see the description of the .PRINT and .PLOT cards). Choice of the incrementyal steps figure TSTEP is the printing or plotting increment for line-printer output. For use with the post-processor, TSTEP is the suggested computing increment. TSTOP is the final time, and TSTART is the initial time. If TSTART is omitted, it is assumed to be zero. The transient analysis always begins at time zero. In the interval , the circuit is analyzed (to reach a steady state), but no outputs are stored. In the interval , the circuit is analyzed and outputs are stored. TMAX is the maximum stepsize that SPICE will use (for default, the program chooses either TSTEP or (TSTOP-TSTART)/50.0, whichever is smaller. TMAX is useful when one wishes to guarantee a computing interval which is smaller than the printer increment, TSTEP. UIC (use initial conditions) is an optional keyword which indicates that the user does not want SPICE to solve for the quiescent operating point before beginning the transient analysis. If this keyword is specified, SPICE uses the values specified using IC=... on the various elements as the initial transient condition and proceeds with the analysis. If the .IC card has been specified, then the node voltages on the .IC card are used to compute the intitial conditions for the devices. Look at the description on the .IC card for its interpretation when UIC is not specified. Fourier Analysis # This card controls whether SPICE performs a Fourier analysis as a part of the transient analysis. FREQ is the fundamental frequency, and OV1, ..., are the output variables for which the analysis is desired. The Fourier analysis is performed over the interval , where TSTOP is the final time specified for the transient analysis, and period is one period of the fundamental frequency. The dc component and the first nine components are determined. For maximum accuracy, TMAX (see the .TRAN card) should be set to period/100.0 (or less for very high-Q circuits).
Howto maintain the <application>oregano</application> libraries 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>. he 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. How to add a new part model? 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. How to add a new advanced part model? 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. Spice: circuit simulation program &app; is based on the SPICE simulation program, originates from the EECS Department of the University of California at Berkeley. Spice 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. Spice 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. Types of analyses DC analyses The DC analysis portion of Spice (.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. AC Small-Signal Analysis The AC small-signal portion of Spice (.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. Transient analysis The transient analysis portion of Spice (.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. Pole-Zero Analysis The pole-zero analysis portion of Spice (.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. 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. The pole-zero analysis works with resistors, capacitors, inductors, linear-controlled sources, independent sources, BJTs, MOSFETs, JFETs and diodes. Transmission lines are not supported. 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. Small-Signal Distortion Analysis The distortion analysis portion of Spice (.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. 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. Sensitivity Analysis Spice 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. Spice 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). Noise Analysis The noise analysis portion of Spice (.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. 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. Analyses at different temperatures All input data for Spice 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. 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: IS(T1) = IS(T0)*(T1XTI/T0)*exp(q*EG*(T1*T0)/(k*T1-T0)) where k is Boltzmann's constant, q is the electronic charge, Eg 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). The temperature dependence of forward and reverse beta is according to the formula: B(T1) = B(T0)* T1XTB/T0 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 where T1 and T0 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 (Spice model parameters BF, ISE, BR, and ISC, respectively). Temperature dependence of the saturation current in the junction diode model is determined by: IS(T1) = IS(T0)*(T1XTI/T0) *exp(q*EG*(T1*T0)/(k*T1-T0)) XTB |T | 1 B(T ) = B(T ) |--| 1 0 |T | 0 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. Temperature appears explicitly in the value of junction potential, U (in Spice PHI), for all the device models. The temperature dependence is determined by: 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 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. Temperature appears explicitly in the value of surface mobility, M0 (or UO), for the MOSFET model. The temperature dependence is determined by: R(T) = R(T0) [1 + TC1 (T - T0 ) + TC2 (T - T0)2] | N N | a d kT |------ | U(T) = -- log 2 q e |N (T) | i The effects of temperature on resistors is modeled by the formula: IS(T1) = IS(T0)*(T1XTI/T0) *exp(q*EG*(T1*T0)/(k*T1-T0)) M (T ) 0 0 M (T) = ------- 0 1.5 | T| |--| |T | 0 where T is the circuit temperature, T0 is the nominal temperature, and TC1 and TC2 are the first- and second-order temperature coefficients. Convergence Both DC and transient solutions are obtained by an iterative process which is terminated when both of the following conditions hold: The nonlinear branch currents converge to within a tolerance of 0.1% or 1 picoamp (1.0-12A), whichever is larger. The node voltages converge to within a tolerance of 0.1% or 1 microvolt (1.0-6V), whichever is larger. Although the algorithm used in Spice 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. 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. Input Format The input format for SPICE is of the free format type. Fields on a card are separated by one or more blanks, a comma, an equal (=) sign, or a left or right parenthesis; extra spaces are ignored. A card may be continued by entering a ; (semicolon) as the last character of the card; SPICE continues reading the command on the next card. A name field must begin with a letter (A through Z) and cannot contain any delimiters. Only the first eight characters of the name are used. A number field may be an integer field (12, -44), a floating point field (3.14159), either an integer or floating point number followed by an integer exponent (10-14, 2.65*1033), or either an integer or a floating point number followed by one of the following scale factors: T=1012 G=109 MEG=106 K=103 MIL=25.4*10-6 M=10-3 U=10-6 N=10-9 P=10-12 F=10-15 Letters immediately following a number that are not scale factors are ignored, and letters immediately following a scale factor are ignored. Hence, 10, 10V, 10VOLTS, and 10HZ all represent the same number, and M, MA, MSEC, and MMHOS all represent the same scale factor. Note that 1000, 1000.0, 1000 Hz, 103, 1.0 * 103, 1 KHz, and 1 K all represent the same number.
oregano-0.84.41/data/help/C/oregano/index.html0000644000175000017500000004731113413640652020016 0ustar rubenruben Oregano User's Guide

Oregano User's Guide

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.
Revision History
Revision Oregano Manual V 0.12009
Revision Oregano Manual V 02004

1. Spice: circuit simulation program

Spice 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.

Spice 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.

1.1. Types of analyses

1.1.1. DC analyses

The DC analysis portion of Spice (.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.

1.1.2. AC Small-Signal Analysis

The AC small-signal portion of Spice (.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.

1.1.3. Transient analysis

The transient analysis portion of Spice (.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.

1.1.4. Pole-Zero Analysis

The pole-zero analysis portion of Spice (.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.

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.

The pole-zero analysis works with resistors, capacitors, inductors, linear-controlled sources, independent sources, BJTs, MOSFETs, JFETs and diodes. Transmission lines are not supported.

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.

1.1.5. Small-Signal Distortion Analysis

The distortion analysis portion of Spice (.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.

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.

1.1.6. Sensitivity Analysis

Spice 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. Spice 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).

1.1.7. Noise Analysis

The noise analysis portion of Spice (.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.

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.

1.2. Analyses at different temperatures

All input data for Spice 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.

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:

IS(T1) = IS(T0)*(T1XTI/T0) *exp(q*EG*(T1*T0)/(k*T1-T0))

where k is Boltzmann's constant, q is the electronic charge, Eg 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).

The temperature dependence of forward and reverse beta is according to the formula:

B(T1) = B(T0)* T1XTB/T0

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

COUCOUCOUCOUCOIU

x = -b b2 - 4ac 2a

COUCOUCOUCOUCOIU

where T1 and T0 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 (Spice model parameters BF, ISE, BR, and ISC, respectively).

Temperature dependence of the saturation current in the junction diode model is determined by:

IS(T1) = IS(T0)*(T1XTI/T0) *exp(q*EG*(T1*T0)/(k*T1-T0))

XTB |T | 1 B(T ) = B(T ) |--| 1 0 |T | 0

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.

Temperature appears explicitly in the value of junction potential, U (in Spice PHI), for all the device models. The temperature dependence is determined by:

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

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.

Temperature appears explicitly in the value of surface mobility, M0 (or UO), for the MOSFET model. The temperature dependence is determined by:

R(T) = R(T0) [1 + TC1 (T - T0 ) + TC2 (T - T0)2]

| N N | a d kT |------ | U(T) = -- log 2 q e |N (T) | i

The effects of temperature on resistors is modeled by the formula:

IS(T1) = IS(T0)*(T1XTI/T0) *exp(q*EG*(T1*T0)/(k*T1-T0))

M (T ) 0 0 M (T) = ------- 0 1.5 | T| |--| |T | 0

where T is the circuit temperature, T0 is the nominal temperature, and TC1 and TC2 are the first- and second-order temperature coefficients.

1.3. Convergence

Both dc and transient solutions are obtained by an iterative process which is terminated when both of the following conditions hold:

  1. The nonlinear branch currents converge to within a tolerance of 0.1% or 1 picoamp (1.0-12A), whichever is larger.

  2. The node voltages converge to within a tolerance of 0.1% or 1 microvolt (1.0-6V), whichever is larger.

Although the algorithm used in Spice 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.

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.

oregano-0.84.41/data/help/C/oregano/legal.xml0000644000175000017500000000712113413640652017622 0ustar rubenruben 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 link or in the file COPYING-DOCS distributed with this manual. 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. 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. DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: 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 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. oregano-0.84.41/data/help/C/oregano/figures/0000755000175000017500000000000013413640652017457 5ustar rubenrubenoregano-0.84.41/data/help/C/oregano/figures/oregano-main-window-4.png0000644000175000017500000011571713413640652024223 0ustar rubenrubenPNG  IHDRHEsBITOtEXtSoftwaregnome-screenshot> IDATxw|+KrI $E*"J J"by "DA,?P@D:I=^nMr].p{3ly/qX0@ B?QѳO~҃oU@  kyL\mzvd/N@pJ FfhJR o9fg,ɹ%ZeB(ԕUiϦt0~l~JKz%Wh۷'2c{;(@ @Y]>ܷwnCr*y{ :b4hcxFgd-7*WQj:@ wQXVo=Fy:wugHg %Gwl`V-dxp&­! ?O^py@ f.ن,D7G~ṗJN BB9&awhN(z.+ [vc'`b~3.YSY]&i) Bas؇GPrk}U5WoTU` Va!~ cf!o϶ѭrŴ-y7k4SZ^yFnuxy*ZG}UEY7r FB.o|bf\ʺdRF&2ahG.ӎB Vt !$%|If.l! v%\!V6#h04EѢVAxghe9] n ݴ#l߻[N~׾0sp5CS7 +s[.' |ZdRxI臃O*H%2F׳T2ݣB} ;\mPѭވ ͚9GWRs/||y!O?11[\lv%@p`Q s}7dsdw!i u&IhZFP*m&'Z7r"Ԓz  Pꚬ6a~,#yFk]CZaB#ioVud9|QSw @Pjfr&Mx9NU0Gƴ(RR8$r0j &gorCl lTV=@&xD!V4j\.@h G1)`x큂!4$Xu;WIGն21PZk#ݺt2NLn_uIRֵ'jbS+,u \=;I~'$tҎkrX^/OF%?a5GLW /EP MF !) S8-JN F***|WƧB-/R]_E ˲U5%VorٴiOll59I[Z*ȧns˕ UF5FZt`ؑ*RWm{iN -TojсH%H8ql.+'wJ/dE!hbahZ .**t\κ>gB o_,-H;~" qhHOq0iXGff,ˎgޞ܅˖CeҔࠀ ;`T\WPؐDO;OިA9ݟWR$Fa ~ruK!Sy"(yj#6yHVJ7wJJ蔔`9lSKn;p@_˟!oooo/Ȟ;wyַ'Ri&00 M[ozGِ)Do|˝Scߙ_!TN_-^%348¥+B*Jb ^^3 n+ +|7!(*#==7r?^xܠsi{.6_0B(UĒzt/\r`[:ľLh9_U\Uu{oYBRb(!)1+ fu\S~-,(d};e!dU2ҹc"(pZɗm:YSa$JRaN(ƴ_UUC:<>Nd{oKYe!]E _VL11)~U{[yVLh)B/`,ڵ6'Q9n; B-(q|j`KPWD ZU>hTTF+˅Аm(=ڱ嗰=}T&ACb9A7 ptdžZG\2pRYYUT\7iZx2@!Jz_?Q,,V  Ipm5;hR{ƞ61Vo i ؟E B˧N H3J}M!:x0i#e%@@ ZqnN{Fc@L BA: @J&@\2@ -&u\XzZ 65n;N@0G@r)u6:98hޯ_?={`ؼ[p\Xo ߜĽSìtٗ/j1-|in''L飿?n℉V`S#6Ƀ`&% { 8k~}=#zLY;+cRvw{ ޣ)K.7Mva ޴iSGzpee~|F=7?w>///>!ql\|^uէ4׮Gϔn{`ӻv޳xG-ue-Οpb7ߺuے%.jլ+_|gnAlnQqK?/>~dɯ)3O>9iǯf]Å6ovJСC6lҞaÆ*Jh s8q℟_Hj-vl/\W|ˏ?dmn@ \g-b&˲  ) )ϊ#xp{Ŋq Mu`gܯwƍ|2V{߫s^IMMܹsܶ)V#>kO<9}?O]DpοԩW?ŋ7?|`t֯ ~[ݹ;B w j7\.+vs EMu̙ݻr…ϔsj'|РÆܹS>}o&&&iiݺvMOOJ?Ν߯7<=unGv9n]v ZO;3g\0@ >pɎ 3U*{̟߿o[ӟ}v 8qЭk֭8qBv|Ϟ=g̜U\\|ĉ˿?ٳ={tz<}@h N̸?VE vs[oY蝗q ?\ԵKF]r 9% >k͛u:N(}-##eWV?NPPXOyj^OO})Sjq'ݷOiGDD`N:p ]"|~}׭['y[j[p[>̴in@ DqݧwU__|%A:w̴g\j Æ zzڴаӧ2gU_;cB=ZO1=''7,,t|Sf&OK?.ɺwͪ]3㱉w}Yw_~^jjHM}))8MgsrrCBBC@iƵhrBBrsnRdԌаTլv,pN!|+KUXr k9]IE 8KnN6y&{@ H+@ i%"|e@ Abb7^}j[@# "rK鴷@ nP@h` =nM3LP*8w{^&3 w?9٧N,.*rdjM|bbLL P{+LZɄ^_\Tv4>>>)!Z(ҎQ5!<;@/e w9:.3##)L.ܼ˳[;a"qB_7dqMx(.6VB3FBJEE!㿐oK-& PQrw_$]I5?0`FNt\ 0`r9}TB'#9/Pe3p"3GJ˾9*""$8'O8|ԧ5ь܁e!?7M*_Lm5S'c;uǾnmFF:BhՊUn4OOOo/o?_Аw\n/,-)& ,80",NI2ͤ?>w\XhxkPeNwF&HTV*8 Y~m~SvF7\eDLgpUUez+W.M͗eFNvxXkV;v,~АБ#tM6uǟX~Æ4QmwC6d_f]ԕW])m}StAS7vIZ헞3aҲIS&Z mb<絺uhޔuN]hܽoOE6<:>st'=x[~2ecn`^vۧWR0Ƃ A1CgKP%)QVR 1x;e6#4EE%+W{4@CJ˗s7ཟ'MJƹ '].ҢuhסWNO?vOJ3av,mYhY~dAn+şZv}K~/Ԫ..l1jBΜ:F[,Le%&}H_^TSx-kQw oǫ5Z/x{*+Չ 6t8r]p1wΎPbL. j{҅{wG*amHJ\B )5^! I?{ 788Ecn.Wh dbY+rMzegM*@`1Nvv: @sIːD?_o^60~8؁6ǘk:qF%%wu7`,oFɺէ=: 22E4EQ4M<4M!6Q(ܒ_O~` ]) h[ WJ5s{;0tdZ1mϞ.JiT^> qÇ1l0c,b,//Җ n/cɈ2?dɧ*W$$$fd:tĺ߽gO~>:!#xBB+xk:\QQչS՗{Fq} _ 0J)Wa!A[wlئ_o.Ӭ5_\[M!TA"T0GolyY_ik^*4v۠ꦁ#G wpC]޵{8d4lښ^:>z8g/Wiz}kt4ddd"%`BPϞ)oSkq|xUSY{Ǧv:iLUWnd/kԉ 47ngOT?XAzFNo_gaBńn0q:S9ӕt<ϹAqEEBOOOO>yU>xez|sf]G?秉K|yZ1vW٪.6eVTW <ڷO߽{w:B6tNWc4KCC\z-8.#㘝V{`'c PWǟN>236$nݱS&dR2R)7&1((iUFYt͚+ldHPhQq+.sr$хi@ `՛0ӛx1IN$d&mDyF] H^ر+eYDbRZ'\Pw A 80ސ߷ḳdpK IDATA[TTؑ؉j+rFsB$36Վ~(u먋.4KNLL:s\b9uUD+/OϜ'Om[nEw7\AhYT  :qDbR҉5Ooa^SSSV^~rևT`0 %%% hqcMƚ?l(&M\SF,T6nZ&)}ׯ_^^Fk4O0eeeAzFz``+c hԚ?T]]})d2>rJUyXN! Mٿu٘\܂m~޲Ke0  ?uJ&k*NXkH,Q^w鲉lٲ1c@ff@? ?d՞6$hh&a]BiوXu!N_;33q8x QV^ F>w _Tp9jkW < KLV?`4**JRm۶?udYY/Jw1i=:P.8ᢿFVkn1رcE!(DGlŗCCG Ჺ8mDitzGTꬮoE<;iQQQQI:esj2O*++g9d3qDZ,*,5:=< P^}z&/?s@^^^HHHEElT_Tqx}/W"6|-˲o\TTйsҕKٹӧMu<@5BB "LnbM 9Wbܤ.%ŁGWx)c{Fhz_ca*oE Քnܨټ3ψ]Ӣ5 6lɒ%ƒ3 zL 7X|1Dc,X :h=<1Vu,`v7&./WVV*J53_~eƀOBvIe).I^P!m7 *oUy++,!4nr}Uea ߻vѓX*.\01M0LJ((Zxi2UR -h:AøD/uh ֭Yyر8ȱc|ѽR~IOZ477''7h4ƘX㚮X" )>}"\z%,Qzz@MMͿznXVs﭅㣒0v}}}[jM3tz]L,wgpVE  ]uQkԡ! CCCf~cC_ `'Wdn}+uF}Ѩql~p,ts. b4B)|1aBgӡ@{hcX& ߾hGZɮ͜( zSI}_:U|xP>7].Kxy(F[lowc׮ y>>6!-xddtYq><> }Q(}̹Sn\%`Aͷ` E_W/Quюdod7Fs_Q r/\8q V+0mْrJ!<<;-E;&.zd24=~@eE[6cLJ;O׶0VWLz<**ڍmS땇>z?8(525BڿB`.z?^(>cxc SHRQ )tl9rPHӻ^}u|B{-dɒWO9M.~Y %VBTbB/;@[q>Qr.QBs BH\/tBqVRZʲ M7}(5wMg;yYyg^Mβ,EQqArAE*7hΏ=ر#[ع[n~n)ӧhuevV46)]6# qѭXG\S-r%c4Vk F^,"x/q06`qPS H~Wk@\\\lll\\lu" BIq㗖;(q۞,8)~q\{}_o4[jOL^ǕrcMpb땇N||_.АcӞjLMv$IpiYy? R!{\텺jIiYqpkOܦ. ډPwt]ƒl۶ Xi / Ek_=_r\ek Qjo?o Q`}Rf%I{RȯZK 8qbm0~i7lwRVQQȲ5ƙ =/zk\ÌHUFQTTV4ѤĎ~˶ezc/_.!ٳgO7N¼`L.ukmh oF}z:rTUW4R.eeQU*ՅyźVCRظظXSE܁xƼfaQQ|\c&?=2Z-I:y^zqMS*ǚ^,B{~K*1ಒ2M'{3? 4Ej@hhC ^bҙ0E! !(R}Bȷ;ѣkuM1Me;yr,X2!tG<+EٳşT5qȶW0%  o []F8='y~o¬z. &S`^gYCauyaTTVj`0hk>>~eeSW}cʈ?zr偪HғeM%% zʕ^h/]0#G!rMϖlvɝ:@&Aܹ݂]ҭKFk):tEhs u`5_~#FcR(PHHL&/(*Zoۚah|hoUUWshkTĨ֮ "?P@}WsLD& mI m%&ĭ_d2Ƚ\)(*R(;:eyN;~$ o@vAJ#fQ/^TϥM]gt]MV!W u 73@bn!@ JexF>4Ӿ*ۅjѴ7ޘ)a$;d2p<ϲ 8[xy5hZRQYMN)ӻoyEفvvYBN+?Zvpv X]S]TT0'OӧF_P.bKKۦMA(t\}f OK9 ().p;<\i''$'XZٯ=h;-צT0Am%avyՄ]Ir(m^};h8^I=<C_dT* 5ڼNRz~QYdm Js5@U%u7m@[qqqqq!qZ_R\d~p$Z\\߽gw~Ǎf4TTQTthhhaQAAQBto̗LV;9Nf,?̴)-lݺuX@T%%ev5n^={РmLFGuh6 1]d4dӡm{N1 nn%KWS1N2-ϸd]KbǵXCVe$C(Pj=deuFSyn= b+jmM Y~.*JٷeLZ-baÇ_ :֎kׯ3ryb۵+рFE9@Zvͥˆv4ìCM8ܹsfzW{9Ͼ&г[yyz"r;wCEE7o!c?_''<1^s+e^<4 L C?)EgŎkPqQa &!@}0aB ^d'c~ϝyxǁbcrt5o T>*s_,e2Y(L2kƳ沢i.XԩS|Tͻ V&;ܶuNЙ\B)e_v஠A |6mZ˖cɻwSN9ruNc\`32vP(1cyIy7M/6yA/1Y5:}ii&??cǎ<2f5O>dt+SRn.kVcbbpe%8pŷkL;8ǵYqwb7p&T²qP 8^`&^&&hu*o`2ՅD|hR*V*b:s+G)WUUV $1L2`0H<5.(,z5,)uc z=խR&-kkne32?>x`/{Uq|p~q:6Pyt?~Uii\!S4kڴi M;;=žz&ay0੎մX;ssƍ?=BŅ6dT8ѱQ3gN?<Ϗ7aLVǦu?:dPjۨ(No ʍ&K.1s`@jueEUeŜ9,\ӕ[XqC0)z߸rDYyE9x{{{*jCa4weys̘GV]'NW}$He;N8%(@1Wƣe^fۤ+~}#﫨1xdby^ < ϲCyyETFI錺}VVViBR #2 HF*ebb_t9&CڱΝڱ:wJ#\-Ys&c M+ Iua=350x*bb$D7Sǵ3vC,b% Qi;(J&7ΨhF9 !F"F* 18"""g/jwbN;إ.;9pccF=$Hnma'v\#8"QL.~j8P*r-wrA%ΖWӿ_MFCbbSq(FSEmj ,˚L&RÏnsΝ6҅| t7/;En^ H"]]tASdw4j)1u@]۶K]b*a"g[&bvM{ߒ[ž$X9w~Y|tjc Ŧ -r< 1Gxyy74|Kv<)3\(7ꆸ82J ޭ[m iS6/:@QN/@͛oah)6o6Čk(lA>M$]XL ܉ 4jhK<t}!/d]Эd#:o}(RWUVQ2@⿐pb2"8$$3YwWx(=x[EF7Α[ ˲ׯ^ٷw/(dp܅xA(NHd22A|FF޵)$IvhFr@Nd2@ 1hd&Zf0.+/h} rmdi%BBɔšHr-901ټysrrB {X3 #xR9tB1xsZl"?͇zsٳ{;wիKO#39;vL&ѣGYYx#FdѣGWs̙kZy~Ĉs@ n=_ݸ~mŊ/޲e=wƍ?m/?\6mxMh%Ihߴi}sa͛~}m᯿zw-[VQQq3g̟?XF9k֬v͞=Aur8aժU[nMNN[Z`0,EP`n]yyy@@@@:N.7$ǑhpYΝ;K?pgO?#˽|ݻw׏6}Ͽ\f_~ʔ)asbb+W믿ڵD"iժm6xN<ٿJر9 / ߩS'sHNʺd\jccRt Mv*@h ={4<}gtM_vGǶRk#J-JIQ(۷okׯcyIwM.d2T_?~VVֈ#jD"QT6qzռ*h`Ո#>|xbmF8poW&Ezyi~RZ-B`Ph3fLO>>WggffFFFnܸюѦLR|||k___-]Jmz"'YK8tC68q(*33!i#;z4m߾}Æ uqX?hgǎ8fdd @xzBQV^nvy)B*?X32!Sz;f>;mJKM=6]vo>((oY|cǜ}kY9l K5* X^ &NeჟܐLXnbW 'O:zka=q„Izԧ>slC,[ժU}ї_~Ɏ VƟ6t5Y{{*eⴴc_|R\GL{}'>MyeZ֭?6yWN<3q|oo_|ԩ)s򘘘W/ܹLGZ~w~N:?ߞ?qDVr*_gssWXʺ}̘1VrA@ Ư[HZMxӧ?;u99!/gKgz󃂂fLܹ 8q|9n6z U 5Mbb”)O=C!1f߾|w|1̚5[ӧ͚5W戧,_JHH4L۷zjUyM:%?c\YYuX= &` {_ޝ5q}> U@٬*bU*VjmQnT[+VZZ*j.bq+Tť**+;$3cLB !w_&g}={011fL @( H'/'LIIIz$8(pȼ@Q{֭*鲲2Bnmc>WɹkWͥhmc[Dbkۇgį5gΠCf}lE쳧OEAM06ƍeSSL>L_^ɷ]"^&ښi{,5X( c`Xw;mr3g̰.\/'42P0o_7nƛw7qDvk[{>C%uqu{%±ds{ݻw}s-{qɟh 6lذaR$[T9 x)xջ_PHӴG$ֺ!ޥߨBPfi9Ky=z)k'0QQ28ںҷԉ0+kQV]:zh{,6ׯ]KM3reer;zA`h:iW- "/21q{r)Lq4$wС46VwʦX,vIUSS3R32dΝlJ-lU–jh M;u|d bGM" QYQ3RЦMO]ml>c{zk^hرS*iVi>&HɆ'OZXh{ DEU}yXQy !$9*&A/( )Y?ӏKm1,=ڶ25_`c3Hz1 --w2F '6s#'N_cd}V_fIszR2/4`4_Aٓ,ƋM'Y*֭g ɹvڲeRSS̸˗_~=555???66VCW'I40 uҥN/6d}0Y8/9Ji;w?iժwbb"mdd0 cjjPh8g\(H٧*禕z,?}annSk$zzzN2eݺu_j啖֬~i:rڴ?~ԩ9sa5ȒÖm xGD3gDFFrÏ;VYYYQQq/ x└'N?^K^6mZnnnFzoI;p;w#%5nsY]K8ߗwaSNfM81>>K.~~~iiiǶ%&&n޼[nV0avF0x=mڴ!icc~/ӻtGSΚ&j:[_&V֪*^6*c/ .KDpppppܥwءzwivV[YY0*nV5w|$)yŋ+xӞ eNi.M-ը0>Ecz|C:CգR~W*4ɭ .R_c@'h&@I~DZ㼯4M3s C<~Ѹe" Ďk,īHKYS- ]ܕ6H~jTR#\@S[Տ(mQ9_ꊯF]wOrjhd~IC}㮙HɆgf.AJoHɆ_O, dsJ] zQV 'PPSg+7bq*&}p ˃n5]2hWJ 6dFχ0s&*g:UÆ5 H5=)tO6VfFjQAI_W[TN軏omRVG Uj*YZe^B"reaVֵǏ;[[;ťv?632uÆ"cϕvޣ*i"h4d>\YW$(դVV[._g7Gնs?ER 1lIŵ<.}\V{ewv]m4}|"vn_ foia?d4R2g,2dȠ;ٔ=45eVFAU}UUm̴29R[qM>{A0-7Ibٯ=ri1l|Fk]`:iS\Q!R\Q~rr|ZUgVDΞ=砋WZ=bG-r.K=}uV>vO޹]R!wgݑ@CUl%">y‚{WQ={ |ãΝkN0QQ+:'-[I}}R2+&_|(yRu اmoWp-.hH _MSZ:ȑta[ss89$dk;њӮUcg7Dbɧ%Ojl-M J^BȪϺs=k_]eԉu"m# f!%TLPni9Ko6~z !dΝӲ3Zj2@Hf~RuDbfmʕ;φ[OܧoկݗL؉:W1"xCCPKgT !WFF y.w4v,@J= uHuZ(ˏ zàafhF0 MLMa1!$;;Kqdsq ͠Z$4CLuɖZ* ztR29l%@J=~ff/4wd^@AMT#S11TL06#1q֯J6r7FlJ|5.J|D=H*&q{>6MjקU(C[P_kvY NEPY+?$7 [P;PEIC3 XSaa*Zte˖;wNvT{]bŭ[\]]͛G+#ڱMi諭,Rc*>>Z$ިv\,v\06^ާϼcǞh{,wA,]T$&Lر[xxxii)HRRR@@K``-[T䔘ؽ{wggg1ܹ_=11qΜ9&&&sILLT+mCJB172}yqƵ̌[|SSScccY&Lfff_~eϞ=٧ K.&~w;4 IDATJB.\hggנ888pO۶m[RRҠiMq G]Dnn!C! %  䔕*B.]ĥgBH^i!jiӐ^i://RvVddd~⬭ivqqiJ4B@Cvvv碢ngkJKK B.\w}afggq233G޽Z4׺^O+k=R<o6QQQ/NII캺ɓQL@=&C4ZPSiSN]pi)Sߟr…ٳg"[n]zuQQ)S͛4$R'Iܻw_PP Q&h&v\a%w!;=={:qDnz̘1cƌr;DS\,LܡC:Tp]2/ %Rᑸ,RQn1Hl`ӎevM:@.i u EQLS.e *ݦhef$f ahX0~٢WwL|EP4yz"2 !d{R>R[uS(C|+5mރ)8/CG3;v'NRջtTԼ0Bt@Vh:5~DYޥ3Ds o d&{Dv4 A B*BJ6lV]&7_-}9s_~YbENNg6l033\e˖ ~G!%q͊622rvv>322Zj_=zmOHHXtw}J4B… 4i۶mKJJWvڈ3gL>}ݺuR|G Z43\JP11LTGNR-\V2d!y+5SPP`2"QҥK={BՋVճgϙ3g>|ݺu^^^Rs˧O5ڡWqJ L7n<\Pj\ <~i://wܹ{naa!c922w)((Ph)슋EEE٥BƍRKOiiiFF | 4vP{|&*fz5)4OgOqW7˫sMfkk+rssΝ;>}{J=z{tzzm믿Jٹs޽{7n(uhxǒCCؘ tq068$$ű4ŋTVVVVV8qb,wwM6\rEj_pA$?^%O>ήΎ`x)PPSg+k=R<0k|'y'k{H EJBM${w;'yW7cPxR|&#*{'qzd^@Jd5n H`XK%ѓ'OʎԩS~i.]\\\.\XVV NFFFXX׼y***49jh*dYr}9˖-8p#Gnܸk.X>>K.Dl{AA :v^ZZ-eU999%&&vYv ;wmONN5jP(l۶Ϟ=[]]=xत$񄄄TWWoݺ588zɒ%iiiM@s^̌[|SSScccY&L=V%Z۶mۻwﯿٹs޽{7n(uhx)२ŋTVVVVV8qb,wwM6\rEj_pA$?^%gҤIO͍7n!`֬Y ]vMLL5k۷ !Ǐ߰aÖ-[,,,^h؉RPPPbbb\\ܜ9sh2e ;kʕg^d}DDDtt4>tgϞEDD9;;GFFΛ7Oi4Ÿ3 qVXq9:t0z?jҤIӦM#}ן|Irrɓ|M.˗[nw 4) $w!;=={:qDnz̘1cƌឆ+Vy[K5>|Xeȑ#G$+X v\R2/ %R2/Wz|x>~`PPSgd !- t* H]WXT\XTPHM2﫯[b340 CQ}Y.Aqd5srrR\M4M3s CH5* c`X,)mԢ'OʎIF׮] sww7o^EE&G M ;+W2Uƍ:u8ׯȨ3R24TrA,]T$&Lر[xxxii)HRRR@@K``-[T䔘ؽ{wggg1ܹ_8 ?'%%I'$$z֭K,IKKk{*JNN~1ɓ'S}qTԁbbۯ\a;rˆ &qq7.(PTj?k/ՔP11RsWpgμBfe}ouPyRP3333..nׯ_OMMϏegM0aɹ-b߿zꄄׯYfħKA4BѣGw 5666""_~YbENN!ٳWްad-[6n]alV~ɨQa X~a>xX`@V`N,wF5kQ))yT%C 4۪&ǟ? `@R-ΞX+wW~QMH#Ɵ׳_JҹyORKw;wĈ/^:Ȏӓ6lXff&7+==]h׮]S>pqd]r孷ުZ}}}srroE"""T$anbX\[[[]]]Q^GFNuss;fL;޹{-Y,eM3(ؘ}=4E#mvvͼR_{KB~QUDm`~lA=;*77wȐ!D$KAA rrrȋoBȥKzɅի7 !ݽ/!&&fڴi\KϞ=gΜ9|uyyyIOLL,//>}zkajdڵ cǎYAaT8ךߗl/x?99-K,,|̬E3wؽ{aٳ{{oc>׾}3鼼-wݛVVkέZ)Us32_]riӦ \sΧ%~egg)/_>c Wҥo۶m޽kff&׾sν{nܸQ2h@ ;vL#~r!%+galOyǎ=!$;k{hu]iewOps__ţ(&* x└'N?iӦ+WH^M1 .DK^ Z9sƍFl,((5kVBBB׮]g͚umB7lذef_e8(RM,Q.qbMػn.^4Vv>5"~폏(0~^?45ɏ轢{G3pqu 5i~';u뱕 zn/3ǶANIMŲBPP} Lv@\\]]\]ջt&R?[(&F`+(%357qǒu߿Ֆ˗:vAdNج,w>CX2N`%Ko%[Ycv2&]mľX(>a'fdSrє)[BBhP S7Z Vc !14θss89$dP#N)d"+(,@rO 2PL21ƛPSvL9j< 1%<,C(\J澣(i/qbnu-5jpP_HcH̠Uldo~GMƃ;AYjNBi _UK<,}nnxͭEA/ %~9?~PdB$e gE$lwhYC!H\7.Jki/>T#1V/[k?Lv]M?)_`k=\̔Tk~hܬB6! tzNo˳V<*Z~M0a$W3.$yŚ' .|nT_|RVUSߗ }s# : 0+i:AL YW~Ӯ];BHqqd㺟~Zv-vɓ.:y+]'ND Gٺu+,;>>\jE B O9q!$//l# jnq(͇AevWAR;@[.];]ll8}Pwh)W7nxGv]8{1{ uc:w~wtӧOE,kkk[RR,--%ץ !#?`A۪UY-!$:z3Ǝv`ҶmzL~AM-<11-gm1(177o߮66-r|5>!d„$;u$ ozGBȭ[!D;vBv) Z @SSӬSbqzzeFFX,:u4((P ?θf^˫#+wkXȆQYwJIkтt &:~522j߾ŋN"9W rƿ[m?>|ΝےM:e۶ml bffxHS !deee5%V2Y 4yӧ0:сNcυ_\ȩS_K:uJ܀77/mڼҥnnn B!以K8hڥKq@)%cBB/4盘DGE"ݻwm2t(;qc !_}5>n8yqQ5`@Pu*;. :Q9o99-WNhntz7xcĈ 򟌌 p>PX]]- njӸ n///[[[Bf_!?%ǘ[=b#u%(vG}s7oXR%eۥ)B9s&G顃i :V2蠆o1+>RHZFPa"9W@Jrb~n]Q'2^3芳z)aT F21{H'*K\TII7@75X4AJ51l.!IʺQW[ۘ}7~:8\V jOj˗j2tD{wk(2T)-ǃ*VA*&,9m8>ܷ -Rwår:5G7u{,{p j GZ.A ~@ɦ֭%(-=«{ԀaE1z4Z8a5k֬zpX\_OP.j͗.}H;;m_mVǁ-cy$¬[Ϟ]4!}fe}׻ws@`+&8׷AcBU9s溁ݫ`˘6__?-[Kl61wEP!%7Xʈ85mLOPYIPTYmK;X{~#hZQy;niY\Q!{ܻh$VD+f6rdwfjs|{ӦҪ*/[mͷbLܐ {ؿR9XX|!ӧRhhdEdԳ-vvw>L#Ҏ==u8fKr2IDAT u<3=!C!3w̶ۘyOv)AQEE[ Aͤ# cd;LO2s/Hӷo}"⭷ؖϺuHL@dP_dl*յ46&ՙܬLq@tKv^!k_Pw)]JgˣW?޸Q˻J$zmʫwj<-(QٱO'p)]vvy]]y] z;95r*t!N_zOwIA2co>]sѻwwzWfEdƧҟ@.P[O~vw !o;;4}D.=$Gàzw/{oߨNUG+rrv/)I8fji6rdW K:|]s˖[ !.^ئMwm TpJ&|ٳ⬬Zx_2HׄFXw@\ndBW={/"qCo O;tJ|-c |d pHɠVH;g\8g8 ]PS^#lOJzA<~YYro\~}5y C͂5ԯ J=S\ELTJW;Hߜ j65Z_gjh -WkWgj~bԳ t/ORnc{zk߾q%199cRw?[))YϝcAؽЍ bעŢ@xM?qxeI?#Ϗ E#d҄l(p?G GԲl br3_@Q[/}N!IʺIgk똾}qG5-EPra#%o *3{;;)EbyFPLTTͬY? q۲ƍ#~^>سG/ TS).(gfd4PAd;_)"46fn qiZ@QBrjR/QAMM@ |rm6WGնsGUUR- !_|ɘO=zts+?ڳA;~v{|*.}}d%Qk/~}++n 2R‚BXa,9|x*+E v>jhٳ]\Z>HM% |E9!]S%>};23=Ae%!D@Qe}9θnY:NZ}NMmÞ_MmaϸPR@/M>qbM^ޛ6VUyn ܫYRGKҪ)bk*kX-Rvv/SSBD2d//vbDO&Ԁg)YvCYOy2dV#&2A2<;T _C*\ :)!^&Ďd @^{ Fwə%fyX}I4_/QZ'ߐzOջ2~~}>PwtzBJd^@Jd^@Jd^kWQ/keqڢhn^y|u ^i>~𻠦 ښ;W7 jh]v\i PSa (]{B ZzO7%TưwneKd^@Jd^@Jd^@Jd^Хo񡩚^yJ6jԈ?>zXJٓÉ=$m(Xa`$flb" /s:[J @$?r޽~=v\R2/ % @=fR,cf  ;x[`TPԠ4t04R2*|kϠz#>@|C]`daAP ջ 0θd^@Jd^] ACpvZ!%dYk^@JD|G|`PPx5AϨXP;x)x)P*YeddpC%dfU_@{v\R2hՠ[Y0dw…CZZZȁ).^8dȐǏoȁ;(^G۷)SdgQWXXHtuuٟGG733c17mR?.[޽{]tٰa7!&""bZ3gܹsþ# j!ddd{=}sh&,X޽{׮]z۷m֭[LLLeeeaaaDD53f<())9s^CJsݺuKNN۴i,~kooߡC:8::.YmOLL?---oiӦg߾}Zj\连={9rD]긲??Ku9wJjqƍ7n>/6|Cd^@.G|ׁջwP wd^@Jd^@Jd^@Jd^@JD|G|`PPx5AϠ&.AJd^@Jd^@Jd^0æ_=%@)(:& j jR2/ %R2/ %K C>,҄a= (b" m,mL)Jۣi.H:!O*W,M 7k,;5p R2(yRYŮ߽GY5>|fͅVzzYޅ:2y |L1356%uN3A.TujU !skjg-1~.fջ@0 3X"Dld0$(à VXT\XTQ4dy_}pha0:E;n]Gq !FcHhicFQcl5"S|B:iȱ[8{{%OBX,nkk9j-[>-iR2Pq#swwoj">8wᶴ F[ "X4e'BC۶/[NHNN~1ɓ'xQxr̗?{#ON}w/{\)~Cn^L˹x[aIyuɣg;w%_4{tʇAJ6,4ʏ?5*,==Cۃj^ ahFC,?_PV^Bȴ2zùeGgZ{G&f2~eUm}qy"%x?sjrԬ7n|0}'{{kSr[|ߞԾA֖]x}ӯ${{uG]PW[0z_U(:?xyyҵk˿W>QEyZ,/]׹\q֭{/\!uneUWZZhX-WRAS]qʿiiߢ%s'G~+WSTz(K~ %&dA͟8﫯b1{rH$ycƬ pg\oٲ)ZUqW(>|ĜMĬW&ikӚm/~X6}YyֵXТ%ۖ揞UBbkW?KΒTUU٭K7B;;j!!R}^%%}zt>}犂<#~X&0 `ĈCO,Z~>.*^vn̐)KthaEUؾ?TPh0,txE\gv_}1'TVY3BEQl{^^n>}e#_8y p )t@ ;v {]Ģ:HC[ɣS꤯SjmnT^Qm$DHL ?)kDn'R-u5N(64M;;<0uF2 iҕ- "H,D"N$bZ$}Ƽ?(}dcJB6-M0#zƼSq}=ɵO4[dHȰ!!øY\{O?WR2wj{P҇ӴhZL"H,;Ӧ-LZTTT_0BLhp@_04QZJ(4b40LV~_wp7?W]1mmEZ,BJ QNPFF.΃cjwfH[ҏSt˩l KF EQXTEQFF`7uf1=eˡ敔|^V։zTb/ӫlV ٕ&wuC }UUN¹ZVk y蕔WAC=<{f$zghZFZ)Xa211ݷ_.Ǐ>gЊ@" ډbU~= e #VbQ:!S2ٹAG0/MJXlddD MsH4%"ݻ%Dʢ.W:akݻDDE"ҽt"e a Q+ (bR%PE"єS_$ٮ !b#ik}>@_H~paԩ"HꇸG&ֺEw%GCIg\KVizYYY閖*?ahV㚛+;Q_@U ' ciiܷ_?Y#"-=HH߮:w#ˑIɄʸlݺuӧOTKMV]\ ̌ $a!VV!!ᇵcǎYu8sq_MTPbĠ[p|Li&)YT'y^|Ĉǎ߳gi۴YV>P Jf`0$a!?ٳgرcG.AG"3jHubJ) ̉kKQbΜ#GرJVܡ @I~ IDATxy\TUs {; =h^k >Rfec⮙b#f>e $j" (&( .eP9s\_3!6! !sϿOڶ4JVs#b% !GB'0gOBokdcn*Wo_J;{pr#Gc{o sH)a1&FFn. ӊz?aY>ۻBr1h wD8߃@::Znfj7V{|(4ݒNȺإs[2a/}jC#V{?B5tиvnL[+IR}eYVĊDa8NjF:qVouhy/bca1lfz-7c&t/SQYh &(xP!07jkmwůG[^Uml,twsrUZ^qF~yyqf&n.6nNw'9dPAh _?z:V(rro/{V%bEMK8i?0*5z8xĆEc!ҿΒ=>bV"fE"ߪVh5bVR?hz"ЌBWT9xԈ^\ ߉{TۻdnFw^#sf)(u4J. Oyslk^T*y_7= !J4Qztw~J̾|5CXWws2吁z:V(n\jԨ\Sx(Z)GeaјU{PЃ@H$22JeYV0ZVժT*-5YZL K* !Ϙ(J7F #V4cpֵZ->1x*翉j5~QS.ǽ5>3$zQ䚃Uw_ru?ynQ#Fسz' -KtXpGfiWn[{9L46{oQ0e#2=7r^>t#,ra݊Ѓ@{u"Tj,IMbFQ(U*%IfffaJ7q\y=*#Ts}=kЮ lOwqsss->aIC޸yKXe[|[dBFky/ gE̖=iJr4KκjY2kBHyB*{O5)b)6tPz>"S{X̲10*R`XV+lM\ZQ3Ƒ !qp>!^CZWT !n6/FnƼZnNWW˃ MMM*v|PJsރ NTTVK'x\ WeR+{]+ RTTkFĈYrVvvu?}h+bӓ2n{{˄ 8N;jpG?˫aANIo8=*qN%ʯ݇[S94+ wNhZBHjZƽBX"1*v|''|z.j B0,ˊDpijn:{2Z?~o}Cgzyy7ejjSPɪp!W JLMTy5Ɋ[Pbjj毛2w+;;JU^Q1W< kP*Jh7GG333=}ec{ZHgs挹ȑ#?C33&Z… M14RGdE:6ڵk,v[l ?|BBBuuŋ^~y=ސq̩/So8u'jcnQvݯ_;w2de:$TM>sڴiEEEաvs[]vUWWwر^{~;ѿBkLLL^Ç>cǎ=zu;1`;vlj_~ ={vqqqChd5ݪcXfy-;;˅62VXXhnݨO>k֬L//KoݺuʕzpݻwW_}իW7l_/BmRRҁ !k֬YbիWwҥիWyWnܸqӦMzPqe˖]r%%%\8&?$(r^8q'z~ȣ%~}&%% 嗲/:99q~漹02Mڅ5kY%SN355_~5Z^|w kĈG=z4,,L_%T7.++KxXXXأG~9,,,))IJLLʕ+BUiiwChao.Tz3F o+32 JF{W[bJ1_ާO ;v́5YjUDDg\G˗/<ׯ_vvP&6#F u`1x{{ ˖rܐ!AdZKVVVͽ믏9c]15kjZe?>33sƍz15Z󖖖Ap0OXanٽ{{R[yv֘:|DDH$ʏ;m۶DUVX["ҏΝ;{{㯼 _5gΜw}7##CVgdd^ng 1|Hm >x?|<{4xmb}mg_N>W^3c'QC!,f͚Pyy9_vڝ;w+/!j̙AAA ϻ|(ݓm„ sΝ?#""ƍWgˁ|wݺu Xn1cƄϞ=k޼yplh<$6q\bׇ^=ɤZkP3f|hX`kjuVVŋL#h9f 6mZ~~Ӕ)S̙#h9vbĉmxJSKe@hX5e 2F$rrr.op-7ŐCvdR~RE ^RŸ;BGT( oWsdT"=_dXurtK^Y`vd hZ] YZVTbOPr, [z2 !z]KS*UJhƈDD&z WU\M=}..˲}uh>(iWAR* 򓓓ꆛkPJȻp޽R߾]B:{sJJ!Y>gŋT*UZZϩ1&lΝSNQ8u˵kV rxB>x?|<{gҤIs愻up3'|…ƏosTsdII }Yn[lnA&N4qP^{^_>@qhd@=P˲Z? ]h4,Ҳ]#999@ bȡI 2D?t)"@/Fs)b#G*۷(I>R}wcebYicd2/yeeU1 j}|:w'4jJ!)FY !Ǣn !z2 !z2^/MLL3gE عϮ'87x^M<"{wɒ&ZYYۻ捼.U(OvphJڵk˖ ǯ_N&I${{1c6 Fv!lԨ~w rvq4x#G>YiW'gaC.6%!ԩ?_?됡ٳ?bd[w '{2m7n|ξ~N~]fϞsԩ&(hM n%̝^_I"6Ljbd)YFINNNJL޴S_wgϞhl˔ƎUT'R_r9 ̙vg__wZo/NHH>Qg̜{֮Y}捤Ą?]iv &r^[[FFFu65?O~p=!Ν{n}O9ٱcuu[BșӞY$޽Ө??ɓ$'wG)))uSB? !r˲[ѝ#strVۧZNA͘-[/222 !]v m< !? _k[{ iy.=2h`_ûފ.QGx{y?2"٠'-)~~~&<}gr[^K`Bbn8aCUU z˴W^5p]hyM g DGoAn_"tޭ)4LϞ= !'N|"wؼ9:bVkBHd'O={~…j8>>~o-Z$>¢"#[D*~ju~~~\\\بQkgkKrP2(*.622 ѽFב}gtc\:T׆+NVԭ{zW\\HHȓvM}<;n܋nBGLHH| Yw߱pŢ7qu0~)Z%PACvpL=c i֌|4_оmc`KZd@=PACd@=PACd@=PACd@=PAk ÷*@PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PA IDATCd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PACd@=PA7_۷4_ /kj%PACd@=PACd@=PACCIѨ5q=0,+bY}!AAR ./))i4;Hd{ǎ6!z Ƞ-j4 ϞM bYGԼT*U޵$V̺{j=_d5!=ci ǗKN?hbjVv6wwhQnKJT*uu!z (V˲,LlBub#2 SKh8LJ, 4; ڡe˖؄Ƿ(PVVh"Lfbb"zrV,~ٳ6mjaAB6lJJJrss[{\m\. )--=tPYY١CJKK RUUU>~yPkCA5ڵkbbb$ehh}ܱcZYY5ݻ|X,{M4Ps޽fff2l֭AAAnnnK,QT_FnicӺ5ի}}}cbb%-[:ufalΝ;xC 2#l2ho"##},Xp֭zKZr߿% sX`g}V\\|dß|Itttiidz.]ڬOY޽{…5 ~Gݒ 6l۶-11SN-8`ڛWvҥL~dٲeBK_r'_WC%xyy |M`` !믿Oi5999˗'%%߿|Y<]rssnjckk˟u U;w+++匌]={688H*ݾ}ߺo߾HMm+VtT*Zص22һw^gi/6lƯZBQW)*ek__]oƎAM!diiizd2q/>xP>yfI ڲLO0~ƍ՞;eoo0ٳgY]u}MQ7e m7W7vÆ 5 7lㄱq׵k}fCPdvq\Spϟ_WϏV*Gy|7|SUUu 7XpabbBə5k6_dɒ%K۽ʄ'כc(22KQ*999G\WDD06~UVoڴ#l2h˚722ڿ˴i8;uٰY^k7mڸ}v'Ā 1b_|d1c^8p _쳃[d^+Vxf!2119pyX(GGQF[X c{xxoVZՌc28Șy_n_\p[T(~7+|Rlo1c,kcנ f̖-쇶8NW貶S[rFʚC 6dІq s4~s6dvSۭ=6;>2h8VvH}dFDڗcV푰C@A0VVVE[{(-~=kk+CBA[Ċ؀S'RwQj{޳TjTv~2hD? 2M\sv,kieogkklb\v~2hK%2UrC0ډX*166;D?]Xb*( IDATx{ mՠ}so޵dB͑j$VzTtK1#$ 8KE>sZn!d_ $ $71yJYφݶFV~/ pYH!@d{ ``PA4Gt#?B Vy&}"/Ra8pqAt3.:]$) 7idkI2;MÀ|/0 )=up;Y BZ^NF G%9}.UQQQQQAQAP( s\]]]⺃~m~g>Q_~ZjljjÆ=R v3- xʹD?nʹ;'O_{rO?>n&C< U]aCK{"Gi=ymsKA hT݄v1duKk;#}_`w%( E8¯"~qE#8Jѧw0CTTJTEEtԮ.^p_9_o<|kz>y5p񟏢**<̊լWodb'>MF=bg5Hoa*Mm?]+UZ!MpU5}W?g}oYX[?$ r֋?UܦiJA'M/Us-,]|e*qn'}#t ]DSDd '}!JT%*UQQQQBuuq8t(t+|6w2M*k*D\imx7 v:pp5=lD?2ϲ xolz*v*'jCXh#DCd|>ڢ]:o=t8*ԍ(U<,ٓdz5bϘRm3E/o9]DtC'~a}>`EYEFWPPPQVVRJT"dx<~_EYYUUkwؘ\&.__zߖ Ԣmz K+s7֖V=OijeV6G9S'fBgG Wq9yܸK{@$6 !n(ʉq9`_XOF[EB13?|H}W AӰyiC= BPTEE%*BikoDCP?5LUUdw0HTJso=oni37As5Gu5ݾ+ 6Ͽ ƍ gsxmiݥ'-8?^=Oan4 ȣ'Ibk ȳ>| ͭi9\1p`[;:%툾yE}"`DQqy UQA>w?QlgCHlo|ehc[ou| ba6^a wA}Z |:|]'hm=~dߴ- .>%0()BAc )(*( @#`+PP@j0z~p0Dw؝l EQQQA6kec{.s9\[GS>oTZ = C7>p8M-oݾ+(+)5hg*) f~7> 1lؐ6NISK3 G 6I_hj~LA4OKuV`Z! :ES>"%EťX ofj,C4x< ((P( (QF{-Eŝ\g.(q~+yR[kLµPo[g= %%THot™[VR߷UUi((z`>՘ >/qmS; HwÆl}>+KW qW;2VSlz6/W:N ?G6|;K/hF*7gEl|A]4bͯg)ʈ#F Wg9<SSm]v@՞<~ɜiJUUvv6D}K5oOhl`^|qT<An<~&|8VSMY4uP6vv +z]}C?yQ{0鞋㛝_kMxh!wXMQ^nq<06Axv]39^]=#L10 qk"|X>{F!//?BjʓO8U~I SM5_7ïlkkţRTG6RMUAw_< -C7rye ?~ |ӒiD\6oy(iIN9}Z: Q8JKr]-fwrk^"` Hk;{"Ooᶶo!PƖ0~܄Y |0 > "0 > "0 > "0 B%r@9/6&}4Q,q&fpzL=#~/))a*( ۷oյܱcGssGG ]sxgddoܸU|V@IҥKNNN2L ޾x⦦gVWW={iҥ9%ICBDD)++nrss>u@H?ϙ3NO8ۻCބ+++]]]++zmmSN1 foo_TTL&|ܸqظͣ閖"=r䈁ADDNWRRt:=&& IHH>}uBBћ g)/99`TUUGz5lpJs9{,ٳ?X,֭[VZEkEyx_˷O|ߊ:y,-3gD_kii߻w>00ݔ4mڴBKK˔ ػwĉlm1gΜbŋn &''i֭Xw777oޠ7o433f555֭9]qq1D%؝T++bmRy]`ÉT]]=elQdJ/_433w/,,d0_d2 ~O/tT-Hς3I׮]'--JlScczܹئtGGGB_777 ,룯r,B]]4kkk322ºWUUaϟ G?(Nhѡ'2,8::feea233E9KqvC,TTTXZZb- rK L&% ۔M/Zȑ#qﯢBf0"yl HLW^^ !FU*++SWW'k׮5jTWW.IA+ | &2,HG^sƍ*û zEEŧO )+++--"k$@Is!5@b&L&M$XҥWVV?zhRq sssfY`Ȱ3iҤldxG^㖜v!C׋K֭[gΜIKK;qDff&˞={֯_D&} yŝ yN̙ӵF5III ӧO_E`ۆovww'E؎Gc_~<''!W`V{{?555&((h"NjjuII )))4g>#/ vtt|pc)={ظ`U 88E/}>UZr?GIbo|6J bnnҥK ,YrM2i[,..ѱ8v4]]iӦ%&&~۶mfff:::۶mkjj"88"woiicee+iyO &l~foouOJJrpphkkK.MJJ kdE/}O 9uBfl~OdVN}}/}q&S6k_`J|N?--M32'i֭r2BN}}#^w\+}Fo:sLww/_jjjYFCɷO| MK-[lٲb A&}D`ADI f@#w 1\.7.. b@!IR/_ ˕"##{!1`x_nÉG$>>sݺuٓ>3!Ӕ"aQ% @S6_0 > "0 > "0 > "0 > "rZD_ĉuuu|||ܹ %2W'޼yߘd1L( ۷KSݦ-LzVܳgɓ=<> ::Z9q\OOO yfCCCׯ_߻woh==ӧOiHE__?&&N}WXݻw3L///|_-<jΝ7o>pD-0=4~Osss80cƌkXD%..NII)..RUUJ7nXQQQ޽4xLL F?~҈#'EUUU]\\(JyypEEʼn'FFF^rEѥN[:/_޽{7FSTT5j09k% ~…իW48w܊+oϝ;'BthiKG]]Çg,@ ETuԪUT*f`k:::yA:^YYidd$rs]vؚvl'd*uL5}ŋWE` JJJm .y#WSS򚛛7nl11NUUuԨQ׮]61̠ `0*8z:''':tСCտϟ?m:pzB2hQQQwQSS>{zzTUU޽ҥKy^|{GOȰl]]XTTdcc-Κ5?>P؆|QΝ-;::233Mnrvv6`*++Mk:+atzGGʎ===)[)y}||"""E-r8]]ݞЉ૴~OOc+++l`TTT`ӦM^O>} mmmnΜ9SN1cرcݛd2[ZZ:@&rIWv :::_}աCtTEEFC_W[WNLL̵kטL&ǰׯW^ihh z:O0!//[×{.:??k gAD29rʕ+n,|6&&fk+j#9 iii'O2d~Yff&ennN2&$夏}]z?X\\rGl^SS3//Ox'&{vvv[[[kk۷utt۬Y*((ٳg\.ٳg6lx)vuJ}v\\\BB&OO| *==tkjkk:jii_ ]y怀7o|'bhxxx||rJdddtt4)** 땙gϞK.=z(<<\`h2ea@ O֭p8wvv[{ ؃:;v:uYXX؟谰0%%SXFDDPq۷ٳCxb޼yÇWRR211*YkЙJiJr_}9 UUUaɗ ^Ν;AލpQ ʦiAQAAaG*.*++SWW'h}%K䤧o߾_qQ$''')Z]ė|;wؓ⢧gllqVL&SOOO!}?C@@@K~}-/6,z:?Rt钓<9y߿ܘX`IIIw>w~]>}_SSk.t# #>9stĉfׯ_7oNLLLD䚞T#c+]d2Ǎ'#bV\9~x:^_/O䰱;)⃉_q)Q̄ӧcV@0#:u`h4{{3fh4GGǚ2{< '''3 DHbbQBCC]Z^^BP˱L&322 AH&,<źu֪U |<P/޽{覛7oegg욚u g0ŝEEEӧO6edd̙3x۽{$fjjm-..f0.$,n RfX{N8o]]] (@+^uu)Sknzy>[ sΌ3?nmm#.l@@$Ko-@'jҒ~>+++߸qMΙ[narlS]]$wEW^̳ۀsMOOڤ;::6###$cd( )⃉ρ`7ttt6eff+}$H/bXfE}}nJ=&'xF񉈈9]gg'oll477p8]~駩SOb>~¢C|98/`a5TZZZlllc.6 AMqGbmٲ.2X;Cw`s M1+**,-- GY#Kۻ {qHK1L&y͛gVRRBD]]͛hJ?#11qڵAAACo>a1}{lI{GV>OZ/^xemm˗/ k :::_}V(A|DYv۷_x~,"N Cq`NLdL K7[dWwPOp999"/zxx?ihhp8_}?s}۷oF݅s͜9"XnnnYYY--- "wM B.>*vJx葽d5ȁ`7LMM.))p8%%%֒&Lȋf/ {L OqlGG .zcccc|_`0={m*++hllXYY '?|c zBD>OKKspp՝6mZbb@ozyy?^WW!%%ӦMѱo]tޒ%Kn޼)CEEkJOO_d F0a˟g߾}['___lqҥIIIm%vlIQٻw/޲e6NVVl$ QAIKK ('c}֭[WSSr˃]]]e><@2K``5r/U[@90sLww/_jjjYFC$ >lٲe˖u :<`I_2 % HOANIfEzxb?m4T>U|@"w a\.7..N󘘘{y{{owt| ˆt[.Fdqm6===5A qU;R>="#SUdyUDk*!C lHOH{R222\\\􌍍7nJ2`$O>-211M&Q 62͊lVYYR\\mdIeddtttL >͆ ߽{ghh"i={bŊ_4۷} 6Lٚ5kx___-Ϝ9`0ttta]6w\faaqi|$@>7 FWSSsttLJJ$'';99J~ʕ^^^;vVlllYf 7rJdddtt4Z#** $ii:5552 dE Xu=AΜ9C|F\ kk!C >|ӦM§eNSS[;vl]]p谰0%%SئݻwϜ9SYYFu}XL$sYf7662dHAA RgXhVmmmwI C"!kJ0̖ -hӧO'hvZ۷oxbeQZDׯW^ihh@\vdR_J 'Eeffy&==rE/++=zBiitt,33[277n6ywbhnJNNNKK;y!CH&@27)'}55ٳg{{{;88m{==SNǏq-OO| J۷A$sM̃}zڴi"oLKKspp՝6mZbbp &${2 e@ETe\;98L0/3Pt cnne!Rtimm hvvv/^$7*eOrNO555gϞݴiSOe˖566&&&VUUEFF^| FXd=" ȿݽ`0z%&&FSS_~Abcc{Xrrrm=d2 FPPɌ~իW~w=-ٜKL|UVellcllQTT$=!DիW`țM<ӧAAAfIeccknnpΞ=dVWW,^=#P`SeON8w~J& Iyzt7oIwƍ?ŋ[nݺukXX@8􅲲ѣ7m4{lvCPDҊ(٩~oգ ,ի =2f̘:NRtϟ?mSH?FdMeO={v޽fGwTǏ="u ) xqeO6=a0N JMMIbKdp!wܸqVVV.\Wppgx<^MMM``… {X"77fgee]vڵRMPD()S={644o?knnnaaau111qss9rEDbŊ+((L<9$$d"c/DO:* d< N > "0 "f8`kkK'Nw-/zmk@"ͤ󘘘{y{{6dj@";1114-""]TRR ǍܹZ+?Q@$' .^3AHQz*(Ikjj&LK]Ꙑ,ݻ722BH$ x2".ZBʺuv5r!i>Jw!g""*yyyK,sx?'i& =zT]Ꙉ#>^:tŪ*ܒf_f͓'O6lPYYr222/_.u%x-B`֬Y;w|-,,g i髨$''GGG{yyX,SzzzJ݅h "*$/0 6=~x??? r@ET"*0@D "0 > "L?qAΝ%5++k޼y"u۞LUZ[[¬h4ŋې,B[Lį$>"w/6,`wӄlM|||MMͮ]qww?}@D777ѺmO *l6{ٲeUUU/_nFܺ{sWX}tss6,||<PS[[knn^ZZKKKjkkM͆ XwE!^KKKdw2[1V"ԤO܆xtǢE|Dp`<{̬LXN_%|< __H---tcRR899Isu$m/*V(,qQ";w |*'8}||J&,kee5gΜE͝; ș3gĝۑ0UjjjX,yXX!LPԅ$\.7'' Aŋ\.ߞb*++6, =Ĭv&cc!C R\\lllLJMzѣG hn, {Y~=dX@I3766nٲeǎ袢޽{զfϞ@撬3WSSpBf$!%%aؚÇ;88 laaӧO-[F>,`7o޼d]]]l_|`͛7㛹?W#=ԭB|!!!yzz-I[, IDAT^@#I%MMM"Νsqq₞!s`@3NaET` "*yĠ :} N > "0 @H3c蘛oٲ.K>}jkk+Y^^.ؾ}{ssȖYlllh4͕+WHn9''}okjjΞ=[[[iӦv!So>q vӔzj-ŕ@)**ڲeKXXXeeeXXXHHHqqq@􎢢~xx˪;w:99kl2MMMEEűcdž{~rr2^d2 2 l»SE-9O)f]Ȕ@Aի,חuuu{("lq֬Yn'wI4.ݧX,O?4k֬t={iGGGvvϮ]fϞ-?ܻwoRRBv LAjj*Puuuرc݄:qD||o )'}ѣGA%..}ӧRFFFǏ?zhKK+"|:p8|2Kͻ݄ 8uTPP'qYYY]pA.$Kzwﶷs8ҵkJZ3<<2  "0 >`䢈 :SpkkkXXFxfT` "*(b˖-kllLLL|Ȗ⪩#GET>9stĉhjj/JJJFFF"uQQ: QQQwQSS n* (G>{iPPDETQ"##TGA>|BIIiԨQ۶mnSSSbllltuu8x'Nػwofee%EwrQDE((쵺z[[pwƍ?ŋ[nݺukXXQX䢈Q!;1c"""t:J?|@]@"ET- ).6(D.//gϞx J ܽ&(EIyzz-^`Ν"[O+NCC$֦'~͚5b||/F<qQQɓ'z:Q|"*ʺ{3ڢ"lq֬YCD#@f (zt>cX?DETuέ|e]]&8vغ:qu@8q">>~Օ(2-(ꪩٱcǶm"##˭7AY@%ET>dW ox5+  ʪ/("()) 733ͻQ\4AY@%ETV^}vSZZvZ777^'???<B100oVZ%<44488bh]vL&̀Gf ׮]K~Q|F~POry_GK DNg:/AXx "PD(A&}D`AD.dddoܸ ZkkkXXFxf$K+=|*@!ETbcc}||222:::EF`˖-kllLLL|p3%PQA)//&//O\./ztzGQQQ__?<<=钘hgg:jԨk׮/*)) 7c2AAA CYY`1L M5QQQ5ׯ_={6F355 rئӧZ[['$$9!_ETTqT֊H ,xeEE?'333""bϞ=՗.]zQxx8ŋ>rHuuuTTC=y<ӧO$*Be߾}+Vbꚛq8fZGAA!00СCC>FDDPq۷ٳ覘0%%%0IG^"GETa2---"#x7n}/^غu֭[{oJuvv_? HUUUTT~kiiܹs TR(tSEE%QvɤRE(3fLDDNRt:}ϟn&iq֯_ȑÇ؜*++{/^|Y[[K)FI^$'''?f$:x𠇇Go'Z {ēܹs>ʚ7oLڋ$ s1Z+=ۣ=zt֭H6O |/avtt'|<P}X||7֬YE"-Y$77WKK Va&&&l6;77d:J4ԣ)$ׯ[Ϗ 6XXX?D6Uf+WpAwDMUZr?GIаݻw---" nZZZ)))hM &xyy "9 +23g U||<>k׮͝;FYXX>}ZQ*++'L;gΜT;흜,wԤO;E0lS%nB /555GGǤ$lMrroZYYy555qE d+WDFFFGGWWW,<~ܹsRiggWPPPUU{K.ߩRH(E6\zbaϢ 3lS%n6uTqU3\$pE+933[u6oܸAQtWד)k㢪?A. `]q r4A~Q7ˋqS 03E55w\JC"H$I3EYd~܉efz>zǙs{>s7389ZS]˿ϩ?@-U󰲲2''3֕$IM6U=18##U...򲥥eqq|,///eϞ=KM8qРAovrrիWSӛR* eh̙3,XЪU+c@O:~e3 `$}&L0/֙6S׊A'%%߿~7eccsʕVomN81j(ۿHj_p ÖyXAAMMo?|C]vm#Fhzn뀖V:w/o?Ǐ7Q$Iڵi>ݻw/]T I$Mȡ@-Ut77=}7|sСs~SYWR*Nrss;qDii'j"`JJOFFFYYYzzzϞ=陚ZZZ;sL2a„Ç߹sIIIM%''iyDy/- ;r?Tݤze _]c}eS߷mVGeRjm+ʔ{޾w;w?˫گlܹ׷]v^^^6l(5j똁?ok׮Q}m СCJj89ŋw}`KЧJcbŊ5kw! TPPlbG+^2 !C|@}1KJJ.]گ_?GGǎ;7ogmڤhУV}KK.'._ZZ:v_~eժU}ԩS?S}vYdIxx^:88ٳw^M^NKK{w######5I&+ ء.蘝m]jZCٳǏ@% `]MC-{nhp_:@%_{yn:x```awѣk׮MJJj޼a'O:ydYYɓ'LRIt/3;@CM4ټys\\ܔ)S4i1yd}vo}v۔)SN:k.\ТEJ<==#""̙`ܩG}4k֬ C&*hD@7}Ah ;4d B_w ./?wD]ꥉ6PE`htW= 77wƍssziA)n9;;GEEݻW]6oެj{ ߼ys++={T;Lnbaa!7Qv6Rzz{bbAf#1=}RY3H-ۻU_O:566vĉMпŋc]- 80>>>'''55uȑ~GYnݢElQnYgZ[[7إ&ikת,,,Ν;p@ʨ#Gl۶_;A'LJJ2.2Txxx/}||;CFss]Y&!!FEٳ꿲x{{'&&m۶P1vvv>>>[n5.R6Q}ҤIǏ/...))9|phhhhhgyfƍ:u0\0aBddd@@λKm:iҤtSSΝ; ƴo/7nQG4(4Qƀ&*h ; BB@}!@ > BB@}!@ > BB@}okkk:u֡nݺrI׮]bW_ly``$I bٲeF( `x:gΜYVVgIgΜ9 ϼ;\;$:e/տSPPK^6 $!cW^t]àm_:+ P+k0ի B@}!@ > ˗/JLLL*iXW~0ό℄{O.yիW߻wO%IsNddCo߮PU݅C]vyyy988k N^ԭ[={6sIIɘ1cn޼aÆ~iٲe))) UIIIzj׮ϦM7{zzIj궶_}ՠA;v8uԢ"y@kj7U>^Zcy̤I?^\\\RRrPykJJn3O2eΜ9yyy͝5kְa83hW!!!!!!3gy~{ƌ?)M$-YdÆ ۷ |饗t.@e̘1Ÿ$I~~~NS4iRttt.]~騨pO2dn3M0aNNN#Gtqq?636kkkPՕVXfÂ<<*u`ڵ kksh)33SW _HƸ7`o'|RjJի6_3HUhٳ˥K._\PP 7 mo&ݺu;tÕj3HUhuϞ=n*Pc2@ҿQ{L<9**ɓeee'O2eJmɥja~)ژ={o^\\\\\X I4#$XT]M~oJ5m۶U-l޼VF^ѯ_?{{ݻ'Jê]s{ΝՎqC@ D˗/ 2W^y%&&ƀa]℄{իW߻w ]7̻ϻvrppBɩ[n5=avIIIzj׮ϦM77TkR%K%III>>>_^Tt~|.]۷OL͵i.@76+))I}SMT~;:88 }G_~kM4IT*l2i$Rٳgϼ>>Koo .hSܹs֭[_z$JRPhS* /k2qA=>l6mx@O W:ZG/99YdU\rxi'%%߿_,((1`bo'OvY4dСÉ''NԩSj;vcƌQtuuMOOצ6 tܹR*$uuڴiݻ.]*OOOwssӦ*}H~̙򌌌wy'88Xj4dyWy睌 @'OU J2>>^ZcmjP@ppz^:9rΝ;GJIIզ* )((h۶믿To3T_ѣG߽{744v#FZ0f̘0yU} ݺu+88իvvvojӳ>VQQ>m4զ˗5iҤG OmxYÊ+222֬Yc1}.D&*͘1K@Ӱ0*}C4> BB@ :61}8k111qqq]v yG=Ν }dž w{'| [n3d$ItssS( ,p}z6%>6}PgAzꆎ`@`%6@}C&p!@ %/> ޽{Y^^ZokkW_ 4ѱcǎSN-**ڸqJ^/@C.\cǎ~!**J}رG}tΜ9w^lY\\\NNΊ+bcc, }Cnnnvvv/޸quʕݻwW(VVV;rj}\\_?Գ 6}Zff%IRD"/[ZZ*Wѳ 6 gZZZVU{{uϞ=ݫsΕY@6Q={o^\\\\\ͳVVGGGUTTO6{ݺu+88իvvvoMT5fǏ_V @{E. BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ > BB@}!@ ZKQBc BB@}!@ > BB@}&HKJe}R'LLL̪I3CU>ؔ\|7nw-Fgjjj²cN B}Z>ШTܿ[aazzZ~9:wEUVVÇۙ~95$F3g\ߵBҾDjMGsj@T~w{{N7PƦL)ȧ$IJeJC nRFM}5@oIIIɼy:tЬY3kk#G8pS݋puum޼yV s.Jw>M^{;w޾};++k]T)))/nܸqYf\4NJٲeKllO<1z6]xq-[l޼ߵk mllܹcccSXXT*oޭ[Gy.<!!A^VZ=#ݻw߸q'0}<㙙n6l̙3\RPPо}7|{֭[z{{[[[ݻʕ+o޼z>ބ3fI1$EFF&$$t]PknժUΝ;?p؊+bbb,,,zbŊ˗66Eݻwߴij}}B&cǎ=w܀rrrfϞSO;vLŋCR~$IgΜ)(($$I=zhڴi&M,,,^Z˰#ӧϹsT˯Z=OxeyL} 4BeeeeEƏ7~8Im$I|}}cccx≊-/)'I֭[7{vغuTVܫkٲ̪ƣypvv3nnn5 BI=SS] b̘ч޹sٳ/, IH\VoW\Q-gd5kIzz|ԗ^ziJr/4^-%%Xeӎ=*66VAU :u3>O=z䣏Zi>)K!C߲k׮ϚT\\\޽5sLT*111$Jexxxx;7osΝ;w<4jhC!??:… 7oܷoȑ䃪Mo:uԩSoFHHjӈ#8pΝ۷o8p];z# FIޚefOOe 7..611m[QFO8QǏ{yǏ>[f… 'O~`UJI&)))m۴i۩S+bL,T/W_lcW'1zצ.Z];;ܹ3)3z#0) ŽPBhlLMMo߾cf&w߯033P-Bh\LLZlYt7kk.^㏷21QwC }Q135c=z>a`ƪByS}aaD^y 4*fmڴҵ뙌[q_l,[ҵVVM5sjBֶRN$SSs EӦWrjBsE}WQ8U 6 BB@}YpR&3B@:4 a`IENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-main-window-2.png0000644000175000017500000007760613413640652024225 0ustar rubenrubenPNG  IHDR7sBITOtEXtSoftwaregnome-screenshot> IDATxw|I.]z$CB/A ("*vEŎK Bz$׷&Ǒ\.w ~"<ϳe晾H*G1<`@ Y>H*ǃZ,4~0@ C|3?u'?Ej@ nPQmx MiDO_|IhHAEY@ TT+k 'mq1~|~*{z% {a u,!p3PYc*Ogl|NQ?We OqHyP'12zhaX.˚+¨a.F&npپٖH&RR?smCƄ[6"$E7a Ƭl.^MҴ&\/6Cj6Еw_xfȀ^Ϻki C WPpiWlA-[bjS6@hmyn@ד۰϶'@ TW\b6l a=NRܷY 6!KQG˲~^K4MS4EB! `xт 4@8| :q z# !R!{1fHCLh:]=XT  )*-tl*iPQU{Vo>vm"4jhIB\bhs%9Em#NK!$&i,a&t$lܺW0k;8 i jrfh CS-jxX+-fWJ8| :(q)T_%)W_T" OKahrIoO91-!D1gAro;N9157P-㞟3&"\(ZĥˆQv]’>8WP\ʌCl['_,mԯG^aq||c0:Щ[NwkFS+"R!wbgK>-k->N?;zupw(1EQ2THiBH^X RµKx=\T^3wF̹Ǣoڜkc![gkdc.zoNs,@QI9jf΄.>b ]n`jeUZƽ<g yzv,aȀ^{YK ˡ?|5u(J&ʥLyb1 L*UTbWa;RuI޸<F Wm}s[nMuxbnġ4>_Q3-7ܼ¼± G"#"#V?T B߬l#.R}!uP\傢{Dã"#V϶׮HQ幭{\xwxy ;P}ſ:C ,0O۟- ZnpMـ˖^!04-aBFj"M j*µKxX=-0[93)'o|Vol>=><4lX(&ru]Csc#D#g^v%5=YwA*=wX^R0wBvZ\*&Jqos;I!@n f 7) 6+Il8 s<CcZV^?KWcBx5>Pf N'6; ߍ+BRguVlѭf`lvnpr.:ofn>tooƒE µGB9+^P'MQ@Ql4iجCGL ǒEKl BiBbN飜>!ؿ֯k*9H218@*R7((I,+uRogUJչĘ jY՗W`JyNs[MP}- =x862=-ET\(km_S[ U*VohlFs Q  h4EC9mwi|$ڃͥr6;Z zOT֨ YGm6]rZl8?yPi)V*:<"s ֮}ݵ83xUEѩ瞳AZw]Lb"aj"eqlDxq0uT5dg-.̋ b^}3C4<4")hUXh-'0H)+),..z`D2-'BC_Ƹ!Am?ܑ\TTX^VvBvz%D=_/U\iuɤث*?_ߢbӢws j;Kk!4ԷAd_.(zoCW.SABm,{{̙г۶Siv1xp6]RE )ɉM4p%Dܿr>T2X l@W;$\g*****Mf 4M)2&PX{f1HdoR^^YP\s-`4KJz/ #Qi}9VTVZYV&^kJKJ&3(?_.Ϟ8e9 hF>|K|\Gٜo2$IHHP^^8@ƨUM?a (d;76j,'\ٿ\ Zxɛ%Xi p oh{$o}H& P` W۵kӔ>1.^B/]ܤ>ξP M l;$`,:v%:1A; k6-ԻHie-4]JQ>XT p㣫Gctn|Na՟Ϟ/1G^oR% yo{UO2 & "n^Ss ?&n)kJLf MQr\ը|OF T(R Co1xjA`ED R5F9V`Ub| LM @ov 4ٷMZh @ [*+ʁ @-/>N5@ BkC1@ &anH@  @:8$s#kcύvMqI  (p+^rKgECn n2^8p}xsqxo%FA"[k˹|T fK=2y?8`UUS&Oi չb-H NhqHϘoڴiGFIJNy79kzu"o`_[JzGF٫?)sM8}Qm vZT{ݻ++|𣪪j]c W?w01)3q|BbaQzO i釄}zjӣgkx@I|m۶/]%K.\ظaӧYԋ7lظl}b΅?ZD۵%EW˯._J_o:Ys.ֹgkloϨQ#Ui·:u rsspȑ0UYЀ?d'_̹O{ 6z@IA|ÏWe,Tа!EaEY`]w b!CfgeeSc]:9yXyu۶'5v1 $ 6ϥ?lٲdoMHv G1s֮;ğdpο}E.]d}j].r8 ozOOw[ן@%H$P_29G:lz;\׉'ziٻW/˙3gc٧OSm|pȐFLMڿ0rC=w̔J3ɝ4p+ylt}l2q[nZI<'Nx`@ b]A'jYqٵk׿[˯xYf+dʔ?c\jʔɍ#8{9kvYYّ#G>ӁKKKO<ٻwoOi'qc~ArrƍO0f5eIBBm ЩS{4Hw޸81SBϜ9]{%KowˢW^7;/{nZ6!>%Kr<;y ?}[O0!!L&/7Ev:h4w=y/,XͲ\ff 6w>/}d23D 0mڣ͞1q;wFk׮6mx`СCO~! fr8Xj8Νjժ O .X?uK/}g+Bjj'9a B `Ԩ55=xqqQdD3?A.9kVII XLBƍg4f̜_1{̱w)Lfddd={|՗Æ9<8HO^Yh?' yjȑ^@ n:_mX=[‚m@ d2pk~uxDdV*UjU^wqn[ p%|-U߰1Ʊ@ n=Z}'] kF !?&C@ \H@ UK/\/;@h;?ZB qh@~Fl6u4Cd JO湥2_M ;ZVZ]4Mk4丸8h ' 2inq&SYiɡCS5_BF6<"_g'"|^&pc4RRa(k|}}z{'O!@h=n|?&Մ[J%4#a$(DZZZ"9@h=n|O ><B@!DQu+*H"Z[;/j1`IM-6ϝ.**ar^G!@Z FrV4&Hvf>M/w`_6m"pMx>zZт0VPK4ijG0]>8o.++!_yѰCf||||##[2qQXTp9??4Ȱ6NJi%]ͼF"#`6 _i6_Z.M󃴡* PƱ_ç=2{t+ 4`Ɓs^%Q{,[SSq¹ɓt,!J/EEFyfա>.,*w`UuqcAGPyX"-QKU5_ATs|#)*e~nw`}`ii_}-i(IWVq_XkU{rnVΜ9=meϜܱscy~T*'""=3C-tg7U[.Ȼ$WTրy>3#PNTq}WrO4:U}ÂyZYn5՚tR}ɥ ?1ɋ*jo秮ֹo7!:j,uKq>m۴8n߿4'sFxZ){.11jaJeaaa#T>>ƹȝ~MRB"0w9a3g,y{Sf=bJg'Аway(0 @XH $wݾskeEFv1ʵV]Ј3EoN+`XŞ? 8P%u OmL0cX.w o߾WMVHMM=qwU{7:0B,Y<0IN61ڟW<Ƶd,!Ac!$fӾ^k &vv6Ox.($b@;vlsh2w5jhQo1+"=z8.+밓/bʴV .9SAB@ IDAT?~<11hvmHJ߰yL&ɤ M)eRJnXVKhhͲ'7\{g~DaK000?`5&<4yQ퓎#*  06bhcI'{#DyE]MJ^ҥeYDbRn nc*0p`1(ՠ+N  '{߬&=z@Ď#OoniiIJrc&%*IlQ \[7vbΞ;Ӫ899ĩS՝:??/?/2"2'B6m}}|.*ʌ#Joޥ>7@ĭE̋y 111GINI9]3>}zw{_lF˛ Nj9rOS1iW,V`YT|ZL*S|"" 8pB`ZO0ƕAfVfHH o zFkkkk?BV3fniiPֿ!Piw9~]cO=9ۗ PP\d ';WydfA?d2IǶAߒ.1,huta.8+V?~<dggڵ D,:cnpܸDkY,<WUj$H"0v, ux4hUhL?wWJPtѼo= l4]WpKuرUXP|߾eۖ{ǎ?qh}*Kr3gF%( !((D!_bb?<,b(3&>SR%nu'6y+\XꉉJ5;T@~AO?}XeeqVGn8eYVIєDc4σ UUп3c{K@ osz? <, u:]@@V/>b1]tXG~Bh߲,uAi>*sx|!T_Da@)Je2*2ZAtĸJS*B||SoݼO=Ңӵ5jٲeƏ]0ŋFCKM7X|1Dc,Xrb>+eyNyD;cJZGw[umA-_T9Q^P$h?l6U:OVRBh0b]eTd\ͽ{9Ꚛ3Όg|u1 ӧo((Zxik/y%l<ƶw…-ȎÇwIKnλÆ?>*d0 CEEEAA~~Ab1˱ǵ\*XeBBpcL z3~0jW46 oﯖ0Mڶ:3+#-?hTb232{n&""2yDDʏclpnDl"WiRg4v:\ۋb1珱 J# C - $TuR K): F_B 8 z!QW]i{6OR(&ӣ)g2>ոuMPe&[N`gϞncPeeDGVqsCK%kf"DQT=߿ş'N +!){Ryg7._D(*&&]Ree4eJؘgΜ8N+0m@xheb J d'ǏO" s~WZ4Ms|oK Pަ8x8cİ!~>>6FFF >jcbb/]>Ciy-ɍCAVf'P_xV>$=:B؆[&LgP+sEz9`YBݙ19˷a&2v#iX( c`9.8$B.ȳr6mLMu͎];~sǏv6oܣ{ Q4MQWSgee5^y^*bAmN1[F B{ۜ285{d0Ce%3w J͈m̒Ą&O)--{l֜JF#II}f6MSj?Z~!ws7(1Jmxųf< 4E &u+Pƈr˭F+(D!RHi J)UhA*}|#yQW}@|+rl?~\UUpX~;}]LxyΒ%ܼyOp8L[wŒ+ ``.qn@xï9OchZ$Uo2[xY*W( zVZ׶m;l0/EEVVLOjiG:V|XZ^QljZuhpܙ +0˃/[O n/>X&AHMiѭgE۷ϋ+l~b\]s>n.yѣG@K1&TJSB(<}aQarRUYAmn~~qiRJ]!`8PFFfzׯ_?lXCBC|Ug/nn_BB1 ]:df8~*4m,j϶)]-  Dtɢ8cps~H Տ uPȟf:yP9xЋ/Β0 kZ++9gYNA|-}kҴDW]Mn)-,*o@r]{8sR ]wtV_[ZZl01G߿VTT\.b+*߾}!EE;u*yO u:?f  P^V5n7+"=i'%&%%&ه|͗-<;v"6Z8ڞy x_-bC T_"$,S4yd<1u 1kV?qJA]!w:Ĩ ضb`@ 3;}t \ީs/jyрfW@y}p՛KQHwumu5T u@Wo߾)S:uj?|>Bzq)_PaaAZj)+-wd2LV<c͏up/`h)-(:;?,W#JKx 8O*.)8==?|eۄ{*ݻwu+Vbŗ^y㹧  Rj>c_dΝ;Prd'meEuUc?oM>_ݺ]e2Yl_rj*ъLJ%:}ҁ[CCfoonuu'y~x۶m`7~|رM9xIcg,نV[dDTaf B]c >!^ 3 o8v~1%)aQ#G}Fb汇䫕ch`2I% ckz0 rB a}\Sq In;gTU-\o=w?  3j̾sOLNG+@o4UT=EEE]t0a7}z2 ZjHy㸸81eoK^M1vgvAR]; MRe9f#,pZ1@V j?l2Eyirɶ`0?JeYYA rݹ#hkdJj[VVc6% UT8%w߭fW@ X9Z**0BX;`e\_9u} xX>&887n_o:s4MӴR!WQaMmyAŽ ݝagO#0<XXk%R /|「CF;yUF N8t8+55 kÙ5յO| tV%'W%uPF&KHI).)Q"JG,:|8).GX1%>X^ѻO+U0@@@5P n)rln=ۢ?mMdYwU wǰ5LfbX,sE HL& JR/54 p+݈[Vw?=i?4+R|WEG 4c1i]I&Uincn X0! ( BLllNLX, 0Zo'^GH<t)$Ig!"iZ;|kkk}}}e@+EW(UbyZ]TlM֗Qj%BZu9)*uwθhI+/a5Zmv.iBh}5 |!h⿮jdPLtJt.+ؘ 99^.hrmTTTDD+Wkt1fҥC0Lr##r9 +N#X,V#;WӳR={+B4EQ MQX*ycl2.?L3o\Z\PHY/Aj>[ !3JZAAAgz?G+;p0C_bѢE/ܜ3f<#j??7fx%4E!$krn0k=+/>6V3<<ZZsph۷Ԩ.06&TJ[fxPn\YMwˤRP 4$gu,mM]ͼMF7luR~{ /q ɘ+}B  lm4-ΐ 9@hUncf!h-\S:Dq6*y},@64ҥ뙳V+B*Qv|?>G1@s8ҥGCtFֶ]kd:4쯎' 3.ݻ{bbhr,1X֖ݳ["_G B;M6$wЩEQXeVd2F#B(888::zӆ XEL n\XKSh ,n  X&5|_@ @ L` %zc|hv6cb9!hyoK1@9=UUY). ?ڶFye O?VUUum!~qqmڵH$#L nfeT2̌܋9Kx433cРAmc[cWHµe܋vA3t6m)cps֍xA(NJjZ2t|Y}H$;vɾݻCBBJd>@9 + hdVZe0lӦM"誫X%y}L 7 4M&P۳W!ϒ3 | @L WoqM رw1Ƃc<Ƙ`+\ (/?A{qx͚5˹>K_vjm[\^V 'NzΞ9}ۿK U$'/k cx@@wyW:?ڊ+t:ݻO8h"`YVW<3fٳ :v8o<毾jÆ iiiaÆl6{,c@%KIMMJiii·?z׃{v_.۶mkm}IziӦ.\z/{m۶}w}8ѣG P(j믿y0쿀\.ߵkW׮]m!]vݵk\.X7ӽ(@ 7ϯ޽{ێ}q+[I_ti 8P[[ 6٢GTnڴirs1Ɖ :6233{v}7ə3gΞ={jjjOxy}6*(J?c=>xpj4ABBF9s>>|իyw5r,q A{aɓ iZA@}ITcSj@}َݗ0ڑ#Gxƌ/gze晹IIVSNO=ԣNk_>}ZQQ1ƸZu4x('O ޹sӧO/]t.^L n{ ` X sl=l=w~NhS;rȠ+s5nQt/G۷ϟk|VEKMM>}xJ~ݷiǍ ǏXW=y$M )T  %4.-K)M/"` J/IhQHB/$;3ѽK6Rfvs̜yF=^]SBKӧOfBCC +#(5 sxy-[vѢUTy1 z%)_JHHHJG>^] 1Ƕ)c5ۢN_}QD>T4oV/\Oi÷߰tQdEeR [{ΎO?۠aC炢QZ5?~7d1;PdKZOE)$4I>"I`(R1#@z (}E(Qۍ^fVw}Fר׷ۋGC}.ż>o ~i+s2jjժ]qc玝K,Y6mG[s|0ߣT)YAC#1m[7oUsq=[v̙3BBB Wϙ'񩧢+>xؤIF~>}x+W^>}qxD=o_1֫_F^1!_zի%QZ3OOcǒs m޼Ϛ53?m{jw>ǏFO0meM|%=M?5&>soٵ{ۜ9sMv/_~ذg+g'MݧOSO5j(<"ѓO:9wo֬YsΩ&Z~TtqwTM?~'LN!,qr^غuܹsdYl [eIEM<,p [\xQ}^~ ~̵Çk;wDxٳ>w $;w~ѱИѣzo.#####c={RCիW_Ǐ7oĈ;v:}C 2%s!Wcl|mfU}9 sQC-[\ӥ˖ծXZg̜+/ys,jA/7o^:e ot֭yTTI|$)s%JvעEϖ-=׉˗%:e)ݷϝMp~mwڶU4hk˗JzV`Y.zgnrbJԖ[Xυ\Q m)\ (h| 6`0Ȳ,P$I S.\z"(JO,1 ge$I頰$I:oV.!33zgepvq]ˆ>M]DJ. 3 qc:NZj /`l8YMƂ| &333c?"JFA}.ős1Q [A>@{cjvk}·ZO|3g~@zz4 6hl}L1{W_9r7غuuֳgώB!$I:yI*U̙s]6>>UV 6[nÆ LZrجϖ,2=x;[nj0YVE1ۨ(wnNMMݽkK@+Ò8777j())EM*5S __ߎ;3g矓봴 4nX}~hҤiڵ%IFYeYV933S}|}}CBB6KPc%../hԨъ+c+M:99effZ߿lz> k׮6'hlظ,/}<,ѣևb=ҹs[nڴK]\FC$%%U^o}ҥ(JEQ̿`pʷ>%jޮ]m۶\rW^=z={JG~׬lҽ{u֥KtcǶiӦ>l,+V|XS m)\ͱKuȑ:lذ!c+uŋ8qBQfW_}{ stNIIٵkק~{wo~ȑQ.UFǏ$IeEF!C>޽{Ϝ1][u@>8g=#ѣGr0*****adYw~㍡֭GLs"9rd͓'Mǎ5jt7'Pbccׯ[WbE!DŊW]9^ @xSKOOώ;*^1#=11w8"JFXٿ}llN:'@}.0JcG>@{cG>(ڷom۶۶mС"++ߏ z_~;w}Lwd |sJ/5| QŭX"Gʕ+#9r VXqԩ;vt>$44rEΝwu5Sw٥K!Ml0:ufA&L0|A"A>(;vzjS˚5k~r !<<<~|׿5ub([rUԃB'⋃^x޽{Fc^ѣ,‘P(Q-rnnnB$%%DDDg}v-[p8`Zɥ6lXBBBVBCCw1k,篿*Ɂpc'""oTTTTTTMsl!h| h| Eѣ3t3fؒ͞%>Dڮ1LtEA}.<:݌ʈٲ|$=_~i4yQ RsD}.(gߒ%'k=((5*V|ֳҊz ('oܨlVz6-`rX QXٲ|ʕ6 z.PҺvUdERE%E(-)"kQسgq(݌.CG߰Q͟ }}(Ɋ,˒Ȳr?(ˊyKB>ƣ+ђa18o۶-Gm:tPToXTCѐ8+Vh\re/Z1%jѢչs]v]vr;wvٳUVHHH\\ܕ+W-z'T"vO8ѷo:uo~ڵh?Ԟ˗/ /Locd\lK5jT_{5E{/::z 6Ξ1cƵkΝ+ 5k0;ܪUw-99y-'׬Y3cƌ 9rdcƌҥ(ESN2]ϵgou@sp8qqq+W4\jzz˖-QQQnnn˗3fi'ZwС|WŋO:A 6|w?#aQ8:3BDDIII...BgϪǟkԨa~L;44r~ǯ^ҥKyiz٬YpXcR$..N=b J!Cԯ_ǎϟ?{7>'N\|yj6mԦMy=Lrt:cҲI;w1cFjjM&N6=z믿vuuB:t ㄇ !Ν; !t:(֮];111::Z}c f*ѱ|[Cݽ]v h۶m~gǨQ$..nwݱcGjvD+2nܸ$ј4nܸ_` >߳sw鮭;~wż1J:L42{ÇO/F!vBt}g -QO [XR%ڰ?,Or-}b\\i3:x5 ǔ9j x5\Ptxxdb(jc<<21J+~z 7Tv|W2rd$ P (-(j-a=S%jSQbB}.hs741obD]vQ SGڛW}.y=sѡywW%91{f=φ{bYSǫUh󄿟[Fk?%]eE1zkYM)wMp1߭"̧B9Os~($)"˒"Yqs+"k)=1{fe7د\:ޟtJpū*u~Y66zI . 7CF]#|t[ pBu\NqAzӁ| 問}<\;>ϧ1W^vOqvg\[Τݸ/sO^¸uonoʭ(q=gt8DEQb6iW>8M>`r8="苭gf۫xεi7gdJ.Nz [ݼϩi'˲,ˊ7E333s4;=6U8{ ^lڍ{9{}bHIDATe22snʲo{;J1b| 8^Ƅt•ϧg Ǖ ejyح\س{ˠ׎k_xm,t !D{L=3סL-ե) ј}U//nN}.DnrTVzܷ_s5Pɏ'bw7mh$eG؊۱Y i=سwZn$R`0xyy5k<᭷>3ޥ8F]>QDm7ZbejzwXZigzϞ]u  i&!anzӘk׮ǫDd^>GB(RcQz{׮]]uoҸG-7~_,?^Xxcb۵[ u^z+/l^VB_ɓ& 4ȑ#1[l_ oR:.Q ;w߼q5k4Q6=8mڴ@wwo-9k{6oNOOBm޲ͭ{n9 B6!v!ؼyڨ>ٹsJKK;Vѿk6tE˖5k !Μ9#xS'Ѹz!5kF㳝:yxxx/+!7ruuݝ(I[<<<<<>>O<"$8844x?!l8:֯_ϖ嵕Z|G>/iΰ?=s%Jv>R1;>[GW/c˯j=8ϖ,*H7s=1#=1#=1ڣ>QDm7 8s-E^k}·\ ΕZh| h| h| h| E(Qۍ\l `g@A>@{cG>@{cG>@{cG>@{"JFA}.\3 =1#=1#=1# Lzv\D(l\Pt \bÎrQ#<*YE| x;Z Ďpd9i=RWP)ŌcU.c@pQ(QmaG8Q m> Rx2S\<$u^("c %MY0o;?`*531*vK%jQhu[%\l 4f:.]bc\Gj-"kz 3c! 01(\8c@aG"rGB>@{"JFA}.\3jG>@{cG>@{cG>@{cG>@{"JFA}.\3 =1#=1#=1#=s%Jv>B}.sPj8i=p [l1=_ c(9y% Kݖq푏EӕM4ђcG E=ztŊ+Uo㗷@~]p /`ޣG (y%Ȋ+~ymZf̀r .\}cǎmݺuE)P |]ׯߎ;Μ9cx̙;wׯ߽Pf̘1a„,+}7|8˖-2eJ@@@@@)S.]厵$I񾾾e˖ٳ۷M=?`'xСCjgϮZ^3dffKʕ>}d'W=<<<<< p}5Knnn?)S&c 6\Dݨ][nttvڰ@SKڵ}]I'|R}ްav? !N믿|͛-?/^xĉ?ܹs&L9XNWQmIMMmҤɡC<==-4idҥ=y$IofzfϞ-0 ,...FrG]]]7nXvm!Djjjz._ի*UBdddxxxdgg !OII |*UlݺFB?v3}[֬YSs+5 <8$$dȑB̙3 ,QXQ l߀Lbڰa_d,0 +V0vwws˗ŋC YrRRRœ ZZe˖5u+sMB˗/CCC-;CCCSSSohe>|Fcvv@Æ KHH8{lI&Y9$M8>_rtٳܹsM+W|Y(I(GsxBӧOMOO:k}ÇC54h_~ 6Tw-6| (So=vX_~EEEE7رcFɓ/R~b/^8~xӢӧh0`ɓ'FѣG{i}_r] /iiiiiig3 󚃕eY#F9s̙3G׏ZYۻw˼eҤIFѭk׮})SLVj׮=o<^k޼yXXXXXX˖-_y.]t拊njӼy֭[-[w]X;ՏPbŠzʲÔ)SjԨQFɓ'[VLȼ~6\l=B\gX[%푏%jQq ma= ҪU;diݡ\,[,ׂ*˻Cj| o֒%K Y;4 S||СCջ*Yg~wȼnwXscp}yvnw C(x}8GbB#F늢̟?pSv,"JFar;v(s-炝>푏푏Ql"| Y"JFA}.s6\ 1#=1#=?R@QYWoKY Yt:*tZϦ)Bzt5C|lЉ>v'ӣve7SB`ndߺut}*ٓu]]Q񺟙x跿ޮqj^%jQo9ڣ]SO}2BDG56b;ZOP m>g}͖Fpdlr?3kvnTF/>ǫ)P{<.bLPJ( Jt9eg16:~b"ˊ(B1f+@;EeYeEș9cxԄetu᯽70\#;vSoKTǣ]ӚiYї+{޼ț 1=θ5e?/6_$+,_qwUMFխ>1 +?׹넷)Si(O@鐐pu7nG J2zYq=Sj!\]Ix=CYZ>ڸ?qč;oܹv֚oaC;?{8s%Jv6nLNjJ~ؼyKPdC7%U}^YRөNZU<*w~\\92e5^Sx]BBSz>-ˣ[gRL~S͛yyԭS󳥟l[BAm(v_A`[sFǏ$Ieh4xΝ;;th5m:}V{-_ki;{˾2lO+I͛9qnNe3U/~M/Ut\lmsR2n3LOOoX/4P ޛ>q&YYӦLz?T :¦Q))OB͛~4 wQVޱNŮ 6Cϟ7o!/ݻӅ.*n?m;QI=*{WP/_=tZ,te]gf߼fѼ$Is¸#ĭL ߩV[}9s{3gi# &c} BTZmμZho>v(c^7wnTdd.r?=rF 5N~^{Wv{Y_r_2Z eN'L|Y}rޓ[BN=zE,G>2RJ\Q&P&zw^ZϥIlhC'BҮϠ윗$U(t}'.(%٠t7nuuWnh42cZ//oY{AQ,!ouL1[ݻ{0$N+)iHVluԡmwO7 feYȊ-ϧ^҃#}Udj ߱c{rlQg~ZNlv-9.EC=ҫ{dӈkBȲ"uLxϠ̷"M˖,/GMS71|YYOzc@}Ĩ5!oɸ{'cǶmqz;B>`b;vLN>v?:N(JjZӧc;v,ṕgN7Jūw_'ζ|"uܮrA"2{_|^+J^޶];!U{>ߥYdsy,|za5r~<Gk⅟-YTTl{uk%I`05oP9Wˏ1$F1h4ʒl/u3Wy{O!e!=[yռ/viiSޤY_g>Zǡ%ȰOcIWHү~W/pы^eI E)c*ϋ߻w.]:ÒAvM>q:p+ʈJeKɱvZZ]qȱY=kehSI?^nܸ="59cD@E׀Z2\Or,iuEtsj;w{d !rcpmW׬(뫋v6Nڷо( >W\w޽-~XA\zۧdؔqMm\-Zxxϭ!*V;fܣ$=rV11%9+Fe!D*ٲ(vr8_;f`ztfQ%;gE[7o%aޘI*Ԕp8..>9-Ripʹ?L>Dɲby1#=1#=1#=1#=1#=1#=1˙=+zquǔn)[VPljvh2Ml#4{8ym#  IDATxw\G wG?z"*MP,؍-MQ5bbb&o%6ERJ(ʲ<<=0pG tB]?)cȳ9:+Ѣ̫~ N_F1_o j6BZؙ6R%Ma6ifE4B{ &q"\W6@*H+NPQx?]?B<! MS]TYې:fROf3 k"F Cv Ud R҆fyNh BYyUfsXh䐁U7<{%dDkSEdf$DkejE4 J+nM(/ ?sqy`2t\{[nv6 F+UTE;23c07b0M5&,M 3b0^ƥjm޺Q(pͻϯ<˱OݳuA33;&y)( ] KȂUrd Eq@*QVMQ@2bbRY,d1`08c.rS'`8L!SCo$yMԽ8P^.E/r`Pm]C^AQ]]z*DjbC Ыo G/҆!b0FΎz__9o&>?ҲOdDQ˷Yd^OǗV֍ plwSW(lvxMhј[ u.as&MjK~q(@ |^h ""DStW6]1xZ $L?߼c2rt\6-bT*19'8y(v'uu^U]!vF<20/yG#=XL BXzcдa(lV&";x]}r3ih}2ړl;snNj{ؚ r(?ΩZ/ۣggһea0j /LJ1wަ 4RcJr8`0lK`0MBDB`X07W[,ޏ71͛AYTPV7I*#. G+65J)ʩS&mqDBd8.opw4GUxyHeԭYOJj\M K%448V(V9FZR q)jҠVbb(*i QW|}ErdY,pÍf<OmqS ^Vprǥ..=Ȉ8#z_!~`VM ǩ[j,ڕק{JX"顽\L yN|'[~+FtC21 !(1p?oD1 S@tجG 9MU $TOa& b2 W_~V[+ɤ._T`9Gq\ s3gg'ЃI_O?ʣe'FT*oRJ˷„E}̂J/g>NeUVfb̩{7j&KMx&s'PhgPYuZpQ@6ѐAq~}T5PcrBL&bXL6ftuMyyYVvܼ؝|zyieiNb.YKژEI٪[aBbR%2Yǩ_/V,gg<{t$rI$EeUud0UBsBOPTBhަ }=z{*iՀ+cj<)D(uICC:z8o "J)&&&ޞKi rZ[Y8N!Ѐ{1Q&Y,C{[;6 :rCM!85@*QVMAҵXq [!i?)eWi^ӔuM)S-E! ERii! t9Z1LcdP|;YIym;Vd2͍w)l&tC#2Q]6DW{K̶01۳ZvY0 {_z/1{T`o"wMi]9B!!T\^;ۙDhN ܺ[E(" !z@F|1 C-lĩKW4bab31@h]9pF+3%amV^bفC'_ݺ]9ji}D.1kxLvmߐd9?/ʵ! 1ˏj̏?ݶȡ#ΐ2׮^>xP73^.T*#m wHZ3Èhc>$B6fć!3C_O?i***5,ƼwG7[nc8!1L|]~?BPUL)BjԶvm\+c3? [nÖ "ۑ7߰fæmyLiod;"^]\&Ф!-ݘ[|?C^R^*)#> )D>_~i˪?En^ge+V=-:ubl̽櫃+ELPnNVnNVFzځ{eeXs"&t!pbٗ cǪǎ30gs>}8Lo۲a>}:,;{[Q_XXZPE{_?6mjfܽ ޺`Pp0542i;^i۸nA!u8:NݷoV톿|^&2 WMsR_~ޫgϪ1+B+!4?{mUe%!++Yt=~.^Ruz@O1{bW~>kTh<֖}8yHad`0H=Nju*rvu%BPo-2D?[G#"iOCT}a\5H9?\mfTmY2\ܳe(Jڵgꟽ<=7lܴtيv O>޶e3}{cǨm[Ti 8_EWo`4 \.D::B`ϿߤiD޸zŲ9a}0,9-ؘhԉp&d:1p Ye[d.IHɤG..@>‚#|ϵ~Z[dY,U"```-2D >RIB7Rjk^!ina1b' [.11Y\IDN`ڄ'1+`+++NL[1qrHkkqkקN='e/YNf}3e?}?T*]8. +Ҭi'-qZ'n^_bGdO}\t!qғDMK=D)~wݽ{IS+?@J/nثi~d^,;+!ᓦ|@l:?mIJp9{(0h_{nۼaq |}9[LE*2D%+7yU-2Dnyk9߮Z5lhDY2}= vcãhR`8F5hxһ{^ObjmJ<8* 2kԘqƌSREaqsOkr'ӦZ+)iii~dԴv4g73?xl{;;Q}rb340^GLx)+Wyg3g]n.qb<<~~aii7ȫ;6!x:#;.+w5># Їw6ʈ 1@h}E;KzZZg.t 0L#ccWihd\ZglBԔk7i+LOt0f}<=ӟ>8yi J!8u!bd2qZ8DL@ DL@ DL@ DL@ DL@ DL@ D̎s{1;ZODL#cjPa(I??Զ]1;2P^mF̂>m/ߏ%sccLU!gϝ#QaٳGmvHȟpaV6ߤ"KQٹ/#c>խ I%O,Wf>}i:.1?Yٳ۶n}QZ}ѣ~"^tޓʤqqrs//OݽgyC!r&vtٲدz TgQ:'b2L pg0D rC;w=IIy;o ("6Z5M7̜9SGGobJͶ9B28vpp Nuwg%EGYB11;vNeƌO\gGƪ߹uV&, !O?ϟGPܹ /]\YYr BD֊9eRRSe2YQQ'F&477Geff)b;Bҥ`Y?- _'Jj8j霈9wݻ[]]8(bPP@P{ΝC@K+aL:Do\֫,CyJZϲeKMLL jvz܀AGRׯ_TT}lemǟ ԑ@-VYe>  @t @t @toPX,2 !?&02w;b[vodWcBt 1%ɓ䤻wh`XAcMPhX,޸qөӧ 믇 &]~ \]-mEM )b8׵\.W)ܹsNcǩ88XSSs޽ 6tX&oqTh<\.W Ǐ_lYBb"ū-ϟ?m=zX,ssIW._&sO:baieg0cƧ6of>}:D$2kB8pv).)Q4Mn_q+W[X\jL&SNff)S-,C m?pϱcU0}դS***uR{۬KDB#;vի1ߤيk22MmKDt_ѐf骢(Qq)Gj?ZNsu5,b">ü+VmJM[lݸqCqQ$C# 'Oܼy=KK޵qSN!LLLҞ"O:UZ!dfffgkܾBq M###׮[mҒțO׬Yǟ5rDFӒ⢭[68Kfm۶}=%]aŋN`zXXXnNNNv˒˚թ[:.]vmѢEW**,tBtL Y$2*[S VYm4J-lhj8j;N"EHݤo.6Nk7lnll'/^|ر%K|%nجֱ3B ߟ~9)adgϗNuEi B(d˗1Ⱥ~nߊBO}M؎;-_}۶O?nukcclܸÃ*// PRhieD^йÆ #No޼vț7T} hjjᙛMSt\>bGV~11?Qˆ> IDAT:E)h4'ݔPpOhjh;qSGM~P4zǑ#GBCC7?~|Ȑ!DfI dROOd.!>/ ㌌`2+88ӧw ._'_~!tWW5,&%% 615㛘M\\^(S->{EǏPx=4hPj://oivF|+kfujK))Ok/vqq!)*N&t|Te (PpOYZ*%qSA1BEEESL)((Xz5]f ͂3f|q;o[nnXEAĤ+V܏-++KMM S\ErsjjkUkD9xAl/MJL$̠I}Zn:irin;vcf|Ch_Ĝ1cڵkRRRO =#/=&&<ݻ7qok `iifz k+t$,wn_LW"&&S`rr…YZZ2̤$::iݻw-KQqm MUVhfDSUK>j;N"E(TJWW]%Eо^M믿Yjqgϖ򂂂EFls}/J}M\2wذa9bBhĈV5^t4te˗ B;SNS4yʭ[Bacc۷wg#| S*o~H`wttASE ߹{W"~VfPlfDSUK:N"E(T*4tز˫RÇgBQ~suqE8Nu̧O?,_qI&P[ ǿlܹsJ=%aŔ-[6;99l''۷) j=DDg.[[YW._  O;(h5445jTbBwKE"&9YF}mB Lv+~4i BOC}TOovyũ7}Mо_$5 )P7 K& |~EyBv^mD"&B0M!f1 @~axyߊo@堠ŋg ::;{7 !$ R*+qy(gI ]>r#1M 2W/]镛- =ԦQ"ːW^N㹺sp Ŋ 2"OWٙLW[/t!TP#5x=\\9s13>0а)"+YC}=qui߭E7ipާonNNCC07(fZ^Vfkg/Ɉˏ^m$jww؈m}ח8~mP`-)*IQ,b# 񷲢<++ӻX"IqvqE%>V6rL$)1=5ǯ}I֫L&Wm %E޾~²0cӬgl68766-l$bGG+''Af{EY^duhշKCO%EDMBGLj6֡ 2Y^>}IeR2Rm%8uX,,(ԣ{iI]eE{>4Aτ[)0LP[\NDrSTD++ tım<4xJ0"dXL@,RB^cXbH)BWoNUUOS]]zдH-b1%2Q{ԃrMdT/:̟$'Ie2Amm@PdҺ:kk[H$h/ޭ^ͣ,~wowwA\FƥEKuڡG"66TWKaXIuquKyLT/tG(9!AWWյg7 Tlw'ܜ8&abjb0iusٓ'jjVxmӧbdRԋEsǨvrfk@5766 iMв$c1z,׮NM>f9\1rL@r\"W*2, ä1K!py}:Xd}^qqq'Ogna9xМB,??ml,,&MRQQ֐KW\ <ҪwÇPQٳg= wnllRSS(9yT;{s g""ȬSNXXZ;̘iew\mbW7R/"pR\R$Bzxz[jѱ8_AQGyyi&ta8n7Q0+W[X\j5#c;{mO &gۇΕ[CRHNC"f9vؗ_|ǎkVW'%>'On޼eݥ%{vڸqөSH /\x`{'Ozsg# F{Bfrsrr\]],]ɵk-Zz‚K/DPQL9{رcLL-FHZR\ugɬ-[nܸqr tM`oggbb!ԩ$333;[[MMMѰg""m~Ғ}{l۶]xKjŋ6nt`>-[6!-LBP<\nݶm[KK"o>MO_f-02*[%Cts%ӡW;KSu(8^UYѢуp'1?P[w^uڂvvURRϙӧӧ%%S<&KNuuuU]*{QjnnyNRZ=˗5DbPРh</#=]U-BQCy^0wk j׮Yd2:AҥK5ѬB??ΒYF-^?w6̊8s͚-PՋ$00@7X*nΕL[C])EST}- zOyƘ׮];f,A׮]o`488ӧ䩣#q```tDM:ȘoemSUz<%33}΄x{{/X0w^~Ch]]]O~[3`KKKO5km>}yjָUntEs (5$-zӼ+O=ZqWUCCѣG)Phe˗WUUI҇Ξ)fkcs/:ݰs}/J}M RrqqٷoH$JOX;MH/\~]Dsf9n4i[n [owl-aذa9bBhĈ mo&<|QRRT*MJJXyh]%6|  K0UH.]l3BP(޾sgiֱݭoMtyGV~<=<Ο?x9O:AmNv  8羽{Ы=wDʖ-lTgOoEEf7nXɐbGxyzr8nݺOj=uڒ"}}gjq\CCQF%&īRvbQCrSnݺAGGG6mp8jQU2)Gn[[ni*kjaOjrrHp./8(TGMJִj#-+?Z_;X\OX$/+]^H?q]lGځǏGqC{I痕vdكC:ثOiUWVxMqyxGѦihhOg@|{K$9={[ZuuM?+@X,+[&89tacCG:D̷ FoǕ_һL,c]*:o'&މY/SLd1]gjZDL}_}jkcc܏@yk#&Ş-N-{+m;坹у>^^oJ>}bFh<&aG=~xZӦ& ~>!]}EmY7Q*;뙠v1JYee9YϚz.V֭B!e{KR[{?`}xК)>U^^ŋׯW1 &lמ * jk2<}|Ammdgr[GG*6v1ہܕ޽Gsĉ:::ӦMr2!c^>f>}}8V?m>d+W[X\jlkfnsqPS(88{=zlMM:?&]\MLL ka~~(_*(_&bF^?t &b?~<<|!-/^qӦ{oٲUmfW|hdumZZRyiz5k5ym}{߷w /^8q~#6۰q'tuտg SS3Z-M@53+;]֭]cem۶lϏՖ-((x񆆆#߾C_U7nڴs???b5m"=ׯ7mݶ !dooo߾>Ç_|CmlZ?HDrS.+[xYqLfSu/&niH4H~b&ovj233GDDR&%% F 7*+yB#G>x]Ԕ 9&b8;׏LQ]Jִ=֮Y3n߾s IDAT%K.X0?|$/>9s݊>UTTX6 ÕżWjr\K-#jjj~"h]i~߼=<ݽwzZޫwDB(qӻ/x;` }_ 7htz3gΎ(M[<5uuwIJܼvuB!$)EiI!8eR)Bì\#oy}(.*ܳ{֌16^Hn/91!i'dh(z.-@k1\ϻaP$ ?l7@8q:x8opWVd2;e(Gmy`1Lq}-Ce Ua[4@onwgg2++"b`ѱs馧% :2h^z"dtcо@|{`0&sf rX,'1m"ۆD,n{(05@ DL@ DL@ DL@ DL@ DL@ DL@ DL@ DL@ DL@ DLtid72t:8X'ps}t~jG;O/]\'okgoai2xsZg"**jV6V#GRq#ml Oăyzy[X^vm_z[ Fjع/#c>խ ˜@rSǽT&{9sg'NlIXI)Oٓ&OQ ;ڹҒbQwD޽+-i<<ѣ={v'$$̝36 >xQZrŊ-G0ڭƼ9wU]U٢bW/]x:AR3*);6&~}F8vwrqqILoF?x(___Pbb␡^޽{)i{$F%'%C.3̚*%sr,/7<&t#oyoBJٽcj"11 !R'#CɊ2=U :::"tuyiB, !$ˉĜ˖>8#BgFVPTX`dd0j&+S"2̚ERRҦfΜ71U@њy~~~mz)qiZTЌrgϞNZ1WXp.[*Ɋ?1rL&sŊeee?dxq8!tE@|J,sssPfffSК9pׯ>~K+#~^fذagNKeR/ooOOX|aÆvz܀AGRZlIth/VYe\kƘDL@ DL@ DL@6ELXTW'!lO>W7բuhӛ8ɓ䤻wh`XAcMhH$ڶ}3yyyܹsFnO- V,_qt#hSq<&&zկk\ZHcǩ_,0=zhjj1ۗR eh]9BH.k !.GR?wprrڹc;1661bęӧHx53{!2Șw>rˊ'O3ǎW԰c^zM+W[X\jLō'Ojg`na2LDu"d?>j)ݝz45ȲMMMݝzTVVR:zO_`dqܘotWHK]-mash=y[]ZRg7::^8 E?y'N;QTX0jEߓb۶m߷wOiI}{op%2+2*[PddumZZRyiz5k ?1j䈌%E[l>q:]M2>d2ss/]Hx]xiM#h˖>J9ZQw:hӛ8nߺvf %nج1K+<OmCV,_6bk֮}+ !ddOyx{CC⩳kًRB5H7o\n}DV8777"k17n N˃CB232'lmmTWR>9Ο?ps/ĉϚ=k l N߿?z>}Fp_:88,Z>uԖ7Y(,,['Z2x#G֭[78ϯ[|M=p8ǎNWD_;w}͊+̟"~8}? ޟ8NP7;k~"v((V*cmlԊ :Xq_:uwG[gFŪP* *k T䝔Y HOs=w{ IIIʕ+VXַHs:Z]_|ΠnI]]7_۰E+?p,}Y+gX^oˆnUN٫{5G*I]ӝ+z%nth @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @KX`d,vZ9jVU)Ji'1="С]?gώ3s ?}T5ԩS.CML#;4;rcGd]ya0w|eŋΛoeeuw(Ny]ĉR֭Ϟ:;;͜9ĉzRi31vEGG[sB233;"wB"֭X!gÆ 2l떭VVӟ} !dm}SsLGFϞ= !r\LBz[>DsܹAppnnnN6^.,o]9fs\\\ !9*_fee7!$%* A7K̐+!_}uii/|z|>~?+K&?~/mb@tѕ4x{Od'[&yzztW?3s?{%!/l9>s|^j2uԩS*l5!dUhE[0eeWdggc'@/tĜ7OU>~wڂQ0uzBΰX |>o4Y/TVV<~qYY)!T8pP7zxyt0;%__\/ >𷴲&$']=u$ HkL~t9&0UU_I1bƬ~|>o7`=._yl\u调R72>}zhoM`2UWI\𣷏|Gϟ?oYZ 'v<:tرt-1j%Obn!36<<9<}x7? W}`⢃o޲ܹОt-1s05'ڏaV͝7nocv*>&jUJ׮1̼{5R,).ׯQ4CT&5bhh(U/=zvrrNNN~}̕+W쌌]7nNIIqtt:%&߀?dCBȚ5kf͚ebbbbb2k֬5kBRo{xe&w_tIHHhFFT* ]Es?5k˥R͛7檺BCBV IJN orr._l!n߾-JCBW-[[Ng`0!x`hh~{ݻwoI bULbN^:=prEVsgUe*4tՊO͛-&}0{9|䰥䀀3g4-8x霠s>]j'V1{^iϟd߫*;,MH/2cmӗRXիxw͝vKR8PWUUeNضk‚}{!ZD/v_K !"#2Yq9oANNӧwV`bB 9(=Fxlb1B.K$.d0%??_$N^95@קIaFdMxڴ;$%tm 1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1h!1hq]@GaVR_/Qp9ogX.BUbmWmY/TVV<~qYY)!T8pP7zxyt0;%__\/ >𷴲&$']=u$ HkH\`tGa߯$\1cVPv|>0s\/r iXpѣfV63TqqN&Bס =0Th63gTu:TzRm_𣷏|GhS@zL&k7 ԠkYW+ys h1ӻw2\Ns3DFܺuKQǎ^F-_l̙Cq%EV0AqQ:/UWTTJؿy˖s7:ܥKBCC׮ SRW\ٸiSTΒ⢄+}aFhzÇ9#5*=؃|>t WwD"wlW풟?q_{:zD.;op[m1nw_oqssx666wE;~L7ڑ=ǔ˙"KDyyٜf1UF9R5rAAsF{{Oswwl05jTVFedddz{B"L׮1)SQj 𽭭˗F툌l c&ӊ⊗⊪JqBi@\Ghf^R\܀~+E[gvppHzڰeeqqI7oQ߸j;%%ѩѴNNɯ5>B[k7z#7R=uQ^K-((O'5v„w2ixXG,,,V#6mZd)(_O[d c,/k}l??9WUvPYJe/_ǟ5e;ڦ/! ?)1իW3gxݻAs祧ja  L _`޽vI"Ѽn]xגbBHd:|Lv\Λ?}lyZ8tu:B0 7wwl6X  0jO;wr|H8=8xi; ]n&&!aM6i>[rkk @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ zaj&&ͮUZ!+X,6n@NP7@gbF&TW z7 W vqg10MiX,Ū{\So5Sл_~26md,pprkLBThh!1h!1h!1h!1h!1h" \&=;as8@IҢڮñlc#A׏7 @O)~s1clp8ڮcIҼܧII.o_[ZS2^f;c?@۵t wusssÞo1 V~üxٷo?m +$IDATѩm++Rz@) W_?rrèAr0Lޕs\L͇]1@SuuuoF>}Ə:4"Hƍ'OVTT<{lʕ{v] DFF0`߾}xǏ?w~_5r޽WL8O>={>|?OUٳgzimm&J54rV=zt͇Ňڸq']&Lͭ/_^nݞ={b׳׮]ہgB yɐ!CZk׮ݻw1{zzڵ+::Zٕ7i$###>?|SN)7nܸÇx<[[x&V>>>>>>YYY xxx|󎵵Ν;}=Bb5T*I5awf67@"Sm٬_1eJ@bbR||UVXBQ(yyAi )cbbZXfQn <ڵk׮;8 QtqqY|١Cq׮%o޼IzyMk$!1hK,yɒ%KsrrbO??YOʍEק,^X կ^JHjkO?TWWWWW_8yr2%&!b``pӧ>\zhBմʍ>:(hnAAMhhH@@k[nMKK^^^GQx9rdӦMK,aeV!$&^ңիW^hfBX\ٳgn42nܸqƽ/!d(s6٥HL0 P![\홻&$&~c4j{Y^:͛HLhS 10 $&5$&bٯ^Us8z)C\ɯf"1%JBK IDATxw|I.]z$CB/ATEBEDP_ĂTر"~"{I@Hy8r9OĽٙy<ڽxC@ W2chgAf=@ w\vfgğh?`gUu@ CE#34Q+o Z?9|J%37~8G ."FXYc8yhlPR 㱥?`yP'u\pSYc*Ogl|ǸNQ?We OqH !S_'>?Y"J+bd`^md.%C;76dlhI/:m#B}n PT^{pFѠm[跖.!Mkb0d@f]IyoM Yw8-@pB> = P׻$ذc]'^駞m*9~[O''aAm;O z$ m l@-{9olB#7` eWihBcA<=cAh*9p-q ou:F@ϧCl[BnߝHc5޿lcu55zJhhSTZ~rbU6:rAވ|}Dh)ђzyKJ+r.F<#^x6\e$2@mrrI \clDw}BHLX‡ώqdֲuZq^Q¬eH0me2% MQU^bY] B+%ܺ}=/L/ԥ//Ol𬽺 oxz|j( CSK~܎m!9nWqʉyj1BA՚-'.]6 ߶چRf5b:~`l;o_Š~= 1-Nr*s]3]m ;[iYm qcf-[W;xl8kS%K%ah)AeY `A.9IN \KwE5#{wxpdʜ{z,f銾v@;\ٟ٪6XKh0>>PTRN3t3 ϯ؂(jWzZYUq^/xދm;+uhuCe<'tI*0t̽-XQ>y|wcIQ)緫]'vV2S =hC}ցя#ԫǎ% kֲub|{Oݜk\Pt}}vxTdXxڵ7)*7<5t os;c'oWr(i"A=xY ߳)p}R>}bK#% Bh2ZVQiAZRr@8 /뺇f+p&#ۇ-ń@nkH8}BSzclDh >"֮pgT4.h^%.K NNKW)8rn')حlu76%@f%8I@ ԕdyGbh0`,`ZgjuaB/`gLAfﰣu!-h|!=-pQ'iݺnX6.i0W}.+m͇. ^xpH!@H:g 8$r) ( X?p(HIaXh@c 6wbP4MQV)}ӧ=UsuM%'ZTR3Uz^T%Ve2rN-uJ:WTb@Z-˲5 R))uni_gF( UqmCkjkvpJT hN{6!ZAvW0|('m?/ٹ \{PTfG D5 е"!#\KNX g<#B4M404JBTWWG;v!ucVgf(6&s68HkIC$ Sm@dߡ#na1Յf G bW< H)-**/.zpDJ-Zf #RJ 1yˉƗ1nF{HoOw$=d]].^ yhFov9Z>wAͥz!W݂ >;`ֲu]S$ُ%;7U}!????_ž:uy6+'R3&\{N\  cp9p.]+aa96uXsF+UT&lAJZo>~a>> yrp*4dRUfoQi;' NQSX띥 /z!+.4T|t `Pt6>0s&1TZ05yL4^=xjw򲄔DQBJrbS! $\ \|?~!"# יʪJMS L m잙} R$ۇWo q,R l7M$$$(/Љa BI \c*M8|AI|yw|H_`.zkn4lB7]R7>$P OY+ڵiJuM_U{/Y.]~nrUg_(ɦM_ 0d;ڒh ĉ5FlW]u}%بk_,tQ@UDq: U[X>gϗ#CiP)ڼν y7 795ee&(\j~'#n*rlrn5 c"q"n)|L#ٜpa0YժQwNt1 &ˍ&@ T7q[Ǧ]-4@ t-g`[++ʁ @-/>N5@ BkC1@ &anH@  @:8$s#kcύvMqI  (p+^rKgECn n2^8p}__d?\cc[k >.).jȖĻsr._аW>Qmzz@ 7)^ϵmeYtŜ 7?uKyQ /OW\̹G~G "ڒ"+J>?|)=gef\̹o]->>>#GXg{{FHSw><<ԩS+..#GyĆ|'+>b΅OW|mذы6M |B/e٦ⅆ7).* /.*ϊck'$ċqʆ Mu`=;vm&Mn`cH:lKOOnٲew޸)wg=:c];w?Jڝ/22?ŋ_YtIպW^Yqެ Og;[?ݻ#pK Hn]es=:t0/vn'Nw^w3gO>N=)>!CGڵa7IrCzt)JEgl;?hW~{'nٲeҤn6ݵ=v7x'N @p 'OW{Sx߽k׮lE/xYf+d)?c\j)#8{9kvYYّ#G>ӁKKKO<ٻwoOi'qc~ArrƍO8f5eIBBm ЩS{4Hw޸81SBϜ9]{ΥKow_7;/z{inݴZmB|KuKKyv8 `BBgS#G%pqjr!GD_o+@&[#"RPWjt;uCܲnE 75.kY^bu'7a7%pѢ;RG^3@h 1@ >&C@ \j_xzA DUo@ \反F57@ $nD06fx˦Z&S(U~„@ 4-j­ONWwѲRJiZ&&'E{W8@hIpc6JK: ^R2̇h<:;@2DŽ[јE& CQ^^ӣG;w7e*Bq1&r<_VV/ #hDI%ABqǏ~y !BޮS_QAryW`ƘLZ$njnFd<}tQQP  j?_ jPH`0P7 G3{oryڶiTǏ߿o[ӊ܄p`\6!G?15wYY>ʋ5U24ْ1Nˍ¢E%GtRxL+oe7O=կYXJrh*̽ UU*0v׬?k>iݻ[aؠSV5*c>ޚ̬ M7e̬ Tz9?/*23>p!q"#Ǝ3N(--p-Zccc~[p]MyƊ <255q>2ϿffeM4ihwx7mtՒn]bٶs%U{6P&yl5_n XU]qX1t)HKԒrUWPp?H Ƹc[f;&8XkXZZW_ƽzvK h>6UexG,Zޅ\3gNw[YE3:w%gfJuĉHό:ty yko .U5=z5 x(/)FDS=82c\$$8vNU߰`^V[M&]T_r)g1wL ??$&&jZFokuƍE9eni8;IQy(`A@1D&t8w̶[/J=EEE6o1OeZ_#2O^aCyh5i^׽}B,wX"TLS:A _(\oBH^yRi 4wǪNK _|$Oo[Zo.9aX?[b]r;O%~b;49rh4PWV!D4MQM44MSh}L RNqKQzO) sgN)^T]sJHJ9~4ۋJ9Ol.JiԾI GH o KKUPQd,)3WxQV ds<|~jO\$%%gee9fO?l۾};%++#))ًZBb#t P]|}|ӿnY, 7 } fB_x-,]"C7l^7e}-i^K]q+U3_-^ bDHGRT<N@@|U+itZPSsTKn2{!-2V隒>ڿ6d8 d4LhFE!D!J(D޽xf|S` `הj2xYV٫?{a*u3Н={cǎǎdyy<9cÍYl2/>02C} 0kZUVc5szzgJ%O?v%eS8Ͽ?o[K߸gڄ_Zw6Q1ƞu&7(10QT) &}z@׾u#?pGSbAS CXd_ry}>=1|Hex xKy6nݺ#FԹ͛72D<.((tR `0`B5L ef6`;[}4=k5`0@aaEeer)1}g oظ tb@EFF1t{#nfkUtoLLLUJJy  (/y!+ ٓhliʶozo0,@F{q z}ԩ8] /^̹sը)AQo6m9[/͟yy/)*f}^KLLZXRYXXءc0/z)r'0董>^董9ṡ~o>YO?kXRV~IhHWװ< D ,e$X]n߹Bqt k}ƮuWKhT֙% ~'2Tv+5vӅEnӄ.c,7ݷ188B<۷ouURSSmgO8]^>d,`{,d0D:LR}}F+<6տ:3-K8yDHpиFdrٴWG{\Q;vl;}tB|JE <1;9F{v9h[̦ʪpu;8:}u4K/X2rcN111ǏOLLA{I IDATϿ.22~BBϿa臞믿j i{]jj]W6# h7122`0}W~ &&c;W ܒܨm˲Ea ,VTTeryVFٱko?}>ݮ-{t⛡#)c㬬3<+<ϋCO,5ն  FpKȂs`Ahvz3]fttu?gEN9R0\y f`4&kR'|9ι(;15ǁ zH9׷c5j !!!>>>!!~)u ByY)W(u۞$8%&*Y ?Xm۽~YյUrcᎱwCOqbuN}`ǟXV?t!n+I‚**4AEլo_P5B9q IF0nTTyV]-n^njqƍe>;W.oy}vk_/wB{C #CBz$*c VW ){X8Ntf'sy͚?O蕠 7c:]UpPZ*CB-V-;tWN۷]fMO%8(TZ[[cXZZDSͦ7TVL&gϟ-lٻwoozB?&j&hn}'|ңWv{l@MmM(M!&\N+/NV9{oa?*C#?|u^=穑w MdMf />!^$!>>!.@m15bjF4S&Mgδm_XTzwVrAnF_\ZTR{}y?ٽ{^{O[-VFА0_ً۷ۗct @*#Y{( pK(ڳmJWuA5]hwGl>%ܜ_-+C%@0T#1N5yT@:⋳$ZbYxA'_ bߧZ4-UW@Ӵ[J PܽkW=Μ;T5}wV9nזLF#G-؊cƷo:dEQ@QNʟ5¡CeƏe͊HOZIIII!_}y O>FQPN`m[,1 Qsqm $J*Ea7n߻I??_ 83zK/Jm"{vOkm!E!wJ;KUڜE M2WBEfƵ b8!!>!>!>!$hJj2\(m6hIMoi*)*6""HTjFq%47-kvNNNѣ;BH./ǂK<{~UgJ: Vc"cPb:sNFQPkLSՒ`cǎBf[ W3o޳"5@l(#@! ZdsF0>>>/uMX\RdX*++0W'c9R1\+vǘՀV aF}K+O}}geN;wxW?̋4l\B:]u3Clxjœ}M:ԩSg~{oлGgN RMxwYi&d(DgДo~toE+Շ(F+$%Nm@'a!TVZR P( ch1LorqI qO{-&3NP޽;8$4>\)Zs.=TpPZVP&u$g>i++*{%Kޘ>}uWdԾUX%J t{͆Xonuu'y~x۶m`7~|رM9xIcg,نV[dDTaf B]c >!^ 3 o8v~1%)aQ#G}Fb䫕&ch`2I%̤jz0 rB a}\Sq In;gTU-\7ޜ;wn5v9'&i7**t{FAڢ.]L8ybc=r-u5`q\\βlǷ~eˮ˦NpkjR _bZw&T²qfwL 8^`-V^ V FjH"ۼ{4uUd[fc0ğJv q BDp52jVL1R**JxV+UAy,𜿿T-!2/|Ev:At{w>\xQ,A\hq`j?79wjeiiZ+0< aCNIxx,,h)D{M_~!#JȼqSk'NyͮrWUj @}kcl/am)n*5mgUM3L@`Æl2fb <M34#Jd2\.+>*Jjp$ `ma}P &Y^`YɯA!FWw -))NKMdh?`9jaӖHJ%%R[V5.4zCaA%o,\FWeYhŋ=.&jDZ,qNj 2l?m&L\7=PLt[&]]ҳgq6l6lٝ;wG\_\\ Ǐ]4ѫZZεJ7"sAAVqO4?:T1_UQ @!0Ea@ %`kmImDۘV()LB4E! c6,KbB',nۉ瑇>H<t)W%Ig!"iZ;|jkk}}}e@+EW(UbyZ]TlM֗Qj%BZu9)*uwθhI/a5Zmv.iBh5 |PB+]lyZEUT.{'zqb=b%Gي i^OFED1 s]?_au5rƺK67&.//ؾa㟶=G*c(JS5hƎ_DdA1*ҭccb.8<{ɁQQQ_ŰdIƲeC0Lr##r9 ˋO#X,V#;WӳR={+B4EQ MQX*ycl2.?[ !3JZAAAgz?G+;p0C_bŋ-S~Ԍ'>fǎaYc,HnQ}{ߋ;EQ2qGES$&$%&$5]!3 XP4l+4npx~o]ܕ77\ Ww`8(FrkKݰ\i@7dry@`T&hBR) ENf {+-WzA<[-d4'P40(߁AXZJ{-[3j/5ݼ7@u5D&L+4Enr{Nh[QRuЩ£ غ)r~FF,!Zg|Mn ?kyU/#E?}\;H~Mx-cc@TeƕtL* BCBzQ˞$n*0`tùV'巧@ҋ`?|ҧM [8/1@I( qVO Vn?&nFBZb^0Cil"-Ǣ kM3)]9{j"Da±Gl4]k%nenLƏ 8 C)pw[DPh JdЀ[>/}'&jDFiGl<& IDATw5 <ϛMj BnLDŽ&d4\o+BKU…fvJ"-mWsϨwَs/]8,~T14Mj4iim۵FCh|2@ <#yqaQ޽.&i\-rc}mmII=%2ixXu4@h!d@qٴaCJr:Q%~͏eYj5M&h4"7mp%Zƅ帴=ŏ8r}@ @ ܸ`e2Yh Ƹ /x_­YL n0ǎf_m.::&zZ<ϑoi#YU mmaY ?cUUUBK(Jצ];D<2hVFmM!x ȽsdJK333 6:5v$\KXͽxa4CiӖr@?&7!a)ix褔VU*MΗ8?~ѷlo DҾcg۽;$$DT9LsаpiLfXU^ʪ6m]o;$2eYGp!Md ž=;{,90Ί&%hRnSڴm1a4ڠ$j`0:ujl!$22޾} -κuҔJedd… Y3 #rrrNJ5rȒ1x[Zlۚ?Çr l߾}۷o_`ʕ+Kp}}z9lٲNm۾m˿J`Ҥɏ?3O>վ}_|A_~vw n90-Z?+Vtw>qŋeY_`رg.,,,((رy\Tg/GEiɷ_}~vܧOǏ~^JK _Z߰o>JrӦMÇ1NLH٣GSuTNNΜ9sSSS~u\%'/ WAQW{?F#BHhh3g𣏆zGy]r\>aaGÇbccpA.^wv0e!C|GZV@8P_7>؆}@ `߾}{%&&:vȑ9O=DQTvvvSƌ]PPx࡝;w5]c5 7x{Ƌ?t_58mVVO? 223mJEeU-کӧml!^bb4ʶdfeJl4Hp󞛟ɲlFFs=7s bcczb9}3s6%aǦO'ۖ> &W[ւ?X;|O3wQ|f?š3gx~M:7|]%rVMNN6ѻ!$07ߜ1cBZZٳg;O>1cK/_hhٳ{nxjyfnRRjԩSO=$_hӊ1:C2e 0lΝ;>}zٲeSLq:cp0{ `^l8Ke zfٽsڴGgޑ#G]>qJs|>Z߾}s]:]-Zjj}SZᄉO;~'L0a„z;4)S&9s^)S&L ^W_[*ϒ5r>ɓ';&&ۻϸ(5gE(,;1%͍ IF&7jAb/DW 6,QĂJ^T]vf1uY"0agΞEe̼| ۬WK+FmvrrU=TZ+^`x>}8>Nu| mp|wڳg"h*}h_G<~̉U߱aahi|i?.o;fW rfҚ?T[}kCV18yI:M z5ʕߞ\&۷w},8hz[4Q!#IXEA~R=-oҤ@PXB$yxx^ӥP=4l4^B(; ȡD"E;vVFƕ<@[Q bq=H,i$= oC>s!(Es~B}.hL04M1#aEF./ɫX@(H$! ܁|O^&=~tsss({:VD"OW)?@{{xD"=]R?SSeryFF $^fFtZjJTKkkfr\Cgcm!cݱ#sCZs>Nڂ,'I斝)Z(,SHTK| P,4<υ(jo򟂃;ulgqpB#@͠>h\N^&M& 3{,gggnzڟK+56cS x4sKW14T,,,IP:{6j!i)'#weИ1cL|p{/:u\BSf͞)ɇu[zҥKSR_fjj:mt.ˠ.[hјc{^Ν=<=:w$fvmB5kj/wKl##{yu\x1wph+Wի!D*nX%,E+KE?پ>>-4dˆݞE߉߳'777l]Bn'0nMNI+Wx|Cp͹w{TmaaQRR½٩ey,-ǎn=zlW_]7!-,,嗁~k֬iΞ UZeP]8 z/33j_jݺuk7X[[ ¸F]'| lȐˣ(*-ɬsoY*)))))pfC͛7ߺuL&3*|ofΜuE\<)hrU@-cef^Pp| uaCCJ+DJQ QDc/|W%?r I D}..X]du='+Q$Bhm s~GQM MSu+.6=-U*uk0 Cs/'υje7uyo+p4DVF%E\˒+x|6VYs}$"ឋi=?,1鄐&xLDF-ޝh HQ͉Y_h~n~U1 sgO Zn*ʧ7?OndM\%Խ;KDAws}CUM]N*:#WҿӢlKfNάs<_jlS:J+iVra7^`=5e_o[\hHdhh(QtS !avǽ g >z\(xcG/Ҋ&NBjѣjǴ17ښI~ʽtvNz~ĂA^TgɪoSLZTRfb(*xzmst/{OJ~L NyquNR'".ӰX>ԹU{&=Ll}% D?kob$zY q67k$u+{-?)Ry`gYoRz[b(+e3Fkg]mMgbc[\wP]˂8υ(joi8Ѵg; S-R Ke THH-n0.SEӻ%@w567 X|JWܢWZ&F<[/&wRi }y6ANj'/z!53nuM;o'5>hڭuU{5A>/Z7o_oʨoG; rp_{{γ҈kaݚY46䓊+ݼW~nFE%egnf}ӅѴqK)jnq?lV18yIE34MS4C+喦Wu?> S]UsVujsI۾5a7u:tyʨ6HIyd׿f76V{4tТ]Jl:f@>]p1;ce>@K .k@ՠ琏@!CC| P .<;S]ֻu1,s!(hX}h_G<~̉@n}MYS\x1pvػ[eU@+^:..n֭GGnj 3tqʔ);;~^]}^ ҥKvttTi5j9sU:)7Κ5뫯R9eʔYfێk׮JJJlٲpJ`͛7zҞа ~͛W}́QQQ^={J{.]T%K$%%ܹkٱcGrr%Qc.]V:77;FFFV\_j/S۾k.vd:tP&$$5j˖- m۶e †ھ}{UV9r[={ŋCN߿rΝ;7lؐ8uQFq!CQ͵Qn H$:tXd빐cNNN?h'BQD7ʋ/_*_u~I$Bӧw)))sή]Ο?_ZZvؕ+WN2Pmav|N.]]޽['5A{>hU E6m:uΝ;>L$֜9sӷoߍ7 ?qċ/$]NnÝ=~Ciiiv?~̾LMM=ztLLڡ>@ڷoǷo߮ bbb߿]#}ٳgsrrK8qb\\ܹsTF^|7|SQ2&xzz*\z۾rJ6m^^^5!ŋ۶m۹srkjjʵcC"hŊg.**_~=))?}=zr˼y ͛7@.t16.A>P`[ w<g{XFb|ϝ;wȑ...\]vC ;w.ײlٲiӦŚ/4hеkRRR͛}dׯ0RKEu(߿ԩS{ɶoذ|t/[鬌'N?I{ѢE'NT^Q݀| TK:2%Xފb)04c$2 CTV`c;pv\"FKFv/'x@}..S jG\C>1z _W^}L77S2'Xlmm7k,kkkŋ!!!999 >}:FY=@-d~aaa]>|jժcǎqь<~xb?gC#FxyxxG.; IDATß?zl>"Zi&;;e˖H$͛7&]\\,X϶lܸ=44T*J$T"J7mT\]>?гg#8::r "33s˖-wfw R%..n̙Ofw,,,ԩɓ;vX Gc#ɩ ,HNN9r̙3% U9loon֭[ֺudv_~:txՅ ,Yү_:@;pEQNڶmǏ{݅ rQoZZZtte*ضm[.] k'| z֖=,R?|D"T*]lɓ'Tz=nsqqQFܡ3@U ܹs.s)++c7\ҭM6U"_( @L8q)))E%''O6mС42gΜ/LJJ1cFJJBHII9s׃&L)))dϟh:>֫| ?\_ PCYYٵ21@͙áia(ڙk4M4C0L&Sit?1jÇFDDT}wBQD7 ЀDFF?x0=+QgFU}wR‚Ν;qQLaÆÇzyy}}Qٝ{ H$eell\X.]t:~+RRR\]]̙3`BHΝ۫W/ϟ_t'S4 ?6n3;hIAA8ѭk+ k_NR; sڻwҥKUrQ6mڔ۷oW;BFFFFFFrr;Ν[/W7o^B7nܘ?~pppbbbppyn޼I7nܟy׮]cǎiPnݻ[[n!!+j$Yc/ &&&F \M\]]CCC[h!Hvءa(HԪUUV);ܹ?`333>_}0gVVɓsuuСCppB`:uT~֭V 1cFn u6cƌ0BȰa.]SgϢW_xTµklܰАj%c| fϞ=&L =ZСCk0@ ۷vڵk>zh͚5W>x !ԃBnݺմiS{{{BȹsBCC/_ѣG޿?$$5oq{ǽի !78p޽{?ѠALLLj}P(3ftu1A>P( D1bDDDw ܲejFQTbbi϶?D"رcpp-[P^.^H9y@ 8{,!$**ˋW NNN+W ~yϮ,77Ύ{ioon7n׮]\hX@ Vڍ| zH$sssӧO`GGGGGGT:fT̶?xח֭[{\>裏||w}p;;;7kˋˑ77|422v!͛ D,vr&$HĕDL#{쉌\z5RZZJDSrJuo˻uֆ sssݻǝߥi:>>\5X&;;;|=nܸ?s'5 8|Y[;WHݿ099j ;vdRSRbcoPUH$бkE;tV P\\]]\]~BQD7 ?^ ڥ׫C>1| P',-4zD9AJ$ggO'L4)Zu w nݔJ],\JuK] : EQ)[[ۥ~ζ+̇?``3g`ʕ#F~*uppswo?K+Gqc9rʺwo?RnA!:XZY߹Cae-[f+ݎ٧N P Kb$wتP(l%IvV&ܹիEK.A ֛7Ν_>_g6_?p1'OZ|?L4 Bvܰ--4)۽ !QQg==<֯߰`‰?_#A>軴4Brϡ!wFye bҥ7 !!?B>CC3gBrssFE}0riǿ!}:2\dn#:: Tnny!~:Ae˖/oBz.N BHJJ !| b})!A!=zt744|gͣQsa;ZWaWb?/h$PS哓oq{;(hݻ !ƍ}+ȨGgΜ|׮ 8r_W\yⅿQ5?"4<8>^u䀘4M|YmW*&$}ǎwIR__BY)8oK 1&͛g```; "==} b`1sBƍ6kҧ?!տA>}\B4DVZ >ѩY@QQϟuE"ѫWD"ѣk6ՕimmmeeաCBͭn?!h?=@GEQ//oh/;;ܜJG<!k/Ot\"Fsv\Zυ>@UEc}?@5*p=| ?c!υ(jo@>hZuA 1| ?BQD7 ?P sA}.jD {:C>1| ?BQD7 ?P s5*@}.b' rLvֵ*RMc(rsM!@hەs3s5!:5X:):̦ P5T[y= U\"F{P\eTd\p\Puz ?(V~I'+L!6!d͐@c Cd^ ?c!<%늡>"Q\]P5w5s4 @wUd-M4W3T@wU%]@hG z5| ?cV5:f\Qu52n>"Q S/E1k@>Y/MŻ4US9R큲%c'}V+_V_zF8>T&۳*!UNa1ۙ 1Csreּ@ɕ^ͥ;"W M*ǻ ԚR#T wH_o5~υ(jo|Rկ&H5\]PKO\V{%DkUυjr*U0})c.!o]C>1| ?c>"Q\]PKTtjuUυj!4hYm{:c!C>s!(@Ǡ>@!{z$**ݻ7]e| P*Jhvmj!|OzފC-Z _Ɩƍͭ8mѢ-[>yk),,l׮ݽ{߂enn<͛?5j͛+>ԛh0 Sѭǎ{ !3g˻wѣ>}cbbD"H$|2bggjժO?jĉ}֭`۷/P~_x1%%E1%%%::zU~@ !ԕǏɓ hܸ͊+.]TA4} &?~\cCCC !6mj֬ه~X~˗O:U(00pժUʍK``QRRҐ!CLMM M>ںI&!!!l!,RCŋ4ibooȑ`KKK{{ӧOLEy!1hkkkbbgd2s4j?~Eo/P QDhسgOSNu֭fc*+?nܸO>d߾}\!O޵k/_^~#GmQ=((h׮]EEE]vB?$$$ܼy3999==fx1c䤥-^{{ܯaMBم 㓓srr.\6O7n܈1663gN\P K%T~oǏ߻wrc\\܈#/哾ǩh={lٲɓ}~ǎ;;>;6h s :t%c .V&LP^~%K80wBN8akk6BOn:BQVVn:5&&gϞ7&&&l{VV[u?NyM6%*o+S*r\h۶X,Dvvvj1@+++;sc߿ǧ7''ɓƍcϤ~'999ltҤI'O>|_~9e-Za;<<<<1| ?c!υ(jo@>h\ 1| ?c!O[@%@i@K>"Q\]j>C}.m| ?c!a)JAQDOncD"HGIJ>*@UVVp'ٳg|ϥ Bs3V[;J$SOMQy7z"m^ ]YYYj ϋ"gg^s!(nB1!D"hۿϽ2+SOP s'8+}HƜ?ܜ-h0h֫dLH$E3 D 4Xa23@}@>6gw a(Sig6n\L 1h;ifd*|Q Cvhص*vNJsדҳ "!EQ6lh&f5X,V(54@>)ťO_٢Kgf.(,>uɎؕSVujD#G5jT/_ Ç+,,,q>iQɰ;Jݻy[n=zӣU'ħiGP(cǎ%$$L2~P QDިfSg~8٨*3(蠋݋DSNMM 3 <504jݺԐťH(if۶mT %%% 6dРA999G111qssۺur{ǎ5j4o޼2@(ڴqÜQE4PL 0Dĉn]X\^;w2p3;rlO)L|ھ\aRfzfDԢ+YYnKgg;ƍ,-Lٚ>ۏvDRVVƽmժӧOCVڵ\.WPP}vBHDDɓlңGŋo۶r[+33oXh~ͪC[47as14 BpڵA'[~̘1!+WB\Ydkԅ-W-hdf<@E#W2[?(s(JLL={СCUBof7/^X.88xڵ͛ɘm߲e'!eӦM>>>c`µklܰT=*tlia\2&8X3$7;߼\^V*,M 4 %H$׮]!))iȐ!"摵^pXmǙY11ѝ}tb``aeKF VV8پ.Fedeϙ%Wcbbb%6sHZ|5o^yOf^R !a E {׻ŋ ǵ-@Fb|ԬEQUk_bBHZh t|rprϫ48U 71EQbz{an߼ak` Cӵ^?ja p>vZBJP(|YROOѠhZTi,ˡ(*换Ev!T7|WERңGqq śuG:EA~~tӂ&M 'H|_[qO }ϏRP*a+"Tዩpʿ^͏>4yJJ{H$yxx^MQ4߉Q}%&U֚/.%;1a2.Ϸ,UiJ CWrp}5cPʺ~U>]?{S$O !MMk2tdcК1E)oYh7ogϜNH[Wќ]RG#6n\!*$bq>}0 Ooӑ'!͜gsRw5n3\Zn{t^N@k m.Jwֽ~'_,X1| ?c!SM,B/O_|^ƺI:/_<Oϰ( O>|g9=IENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-Simulate.png0000644000175000017500000013643713413640652023416 0ustar rubenrubenPNG  IHDR?7sBITOtEXtSoftwaregnome-screenshot> IDATxw|ϝ-nzB 5!!{G}X?by6b *H/; %on}1ɲl6t~;sffΙsz+Ya7 G@ B2 86nGv[-e@ *Yrn{lEWn{hPhy@ jbx! MuV"aM{_z70.[t>KmA"Y [桭AO7Fтf }}+w1V[ 0A"̘*f#L-1r˷}> Bh%@ c׬{X˿֒:0* 3@&]%&Bdمgl7|rtHʃ[2O샵M 2iltdvB Qe~> _b"ԼK7*Bs|koz"jf~OV@SnO׳S$ڱx]dP+ef=t&gr]?vذdCު _-,_>~ٺ7@)c)#;so o74MMQBc,8gMYڊy.^{~kG)g!r waW'?xvcST oGt^̓_tU$21 ubaqF;C2+aoyf)#__0jw3FTW_-WWZ@Vvh׉>)=:YmG 륫yVJhXl,x5r+ /X0a=Zv@(L^i'ЦDB}""5%~,\[Km~ݶOpIMLF3) ^)o,iX#d y7/\whJ(AQL.0ieT8ճν{zWZmQa.1v'i_vZj_حsGoM{g..xAO}_|Wvn~(YKwSsRcw <}eOξ0OFxÅSugJEžA 6F^ ވ>ƍpF1pq#j2T|=U(J&ʥLyr L*UTbPm'QAN9MgP(bAjRsێ\~=LݒXdNLQ iv'dPKWgIMfhMfcҕcRB_r<.!!]@r5s.}H/cྗߓ GJvb 1:JnF/~9פ6\X蓞lHlI VcAUͫ p̰?Ob06ǃYtajWיU7JB C!dwn(Ѵ@H^R-N Y|TfS{OL|lNWiq3`PɥQ8Hd3͇Ǫ|W c$Rpfvs=:wXUV=)>.{Gsss|x W+$vd9* cED.N /\䩨f'"s8!5<}/lNw6 ~z')!@Y P69Qiua: ',>ssۯ|BH7_xtNXC9, q| 7@^}X-J~)2:e<|Ml7c*۬;Mק'k7" fqt5$!^μ #'dקX^)Ϯwb9ӉU "PS@oAp]B4MS4(yc6[8' B w6yPg^rOb vcll9tckUZ*kbZy,}d rVTZ5j8N NM`9]uX̃o گO/R_ޣ}LXEe%!& UJER Q)UrzvJYlCQ˲֒2G`h]ee @0vDIB[h@PךD2H8r ҧwZM yPi)V*zb/~ME < ot˰n.zS/75fmǏ,*Md^Xֹ;Ii%Na)r{ Vg ~7*.ػWj^}AJ>?j;f.BHj5::<ޛ!I;=!'ЧwZaqc3̓G<ڱ}w=f0U8o=V0ozu?$w?u.RIrnj9 Oo;&z2Mawpw+!&FYDR:\~ɯK,VK%_r<>6FV]/|\ME&;;F Fo$B[5x𙽣zF+(WZR|$\KZlNx7|s1 풑Q6|R2Sk;}t^p:$Ittdnnx\SYRv$<}jEuh.;3JU&z MvNP(1Zr"vhxgZ4D=qr1˞_R[{t 0vm J3f/ Z!۵eÄ)YlV"XNOO.ZKd#X2ޫOiyL&5ɓkЮ]wIJ$^i=}1;Z< yW3xos Zټ[2`H I `'ЦcE&kMPcҖ*q @R!Fb?9]쌏ii*\P[~Y}P(b;)`s8[8emqAX,ƒES\.7:b!hr}Lrk6 cI<@ 4 Vt_% Иj]&A?@ *]؉)qB $5 lX2TV $ B #y.1-ñw-*oiC(m#gF&@ Eܕ7kH3l !XR$Z@ 6j˙# zh !{Ֆ3/?!Lm3W\o@xr"w|c@ C[?x\eAAeK N_cEOlh=^RzXՂW>$n; <]ġ^'5u.W]X}k]mԃ9rw;^{- B%@ B%GqQOBOƍ( ,_<153|5߳}xz5sW\5bUVϽs-h ƆV@ - Ր1~ؼycۥz9k&$8hW_}c6![j{GM-N!kDܽn1JQRLv={Lk ڽ{ڴ[[LMyᇫNNYP5:~tLW_}=pv f5@ 7 ?j}KZ曗.闬gxsi#ߴw'/t1|2B698 >:(zuPo?eZ`)SzGMRC!c%ջ Wl/ؓUީ:CM~QSL^[OʺuM:ERygŅeee+W"8qDDDD\lcNz𣏖}᥋9/ٴF@ 7! ;3 ot=Lf ]>gqzz:ddd?gϞS٥P~xgHiޝU^dv@ٵ;7IwGFA_,;Yͮ]56s~dUWw#GعkW7֭fϞ֭FGߨR0wߣs{xoIC5@ 74!=}ry=_ }OA;LB[>ԓ/vn߽gϝs6<ǎgYc>|<111&`'˨T}TDIG^y#щ9MMDbgkSZ=~y;nOSW~W=z4=z>4 A};|pF@ Fn6tg~'A!'6.' NRQY1„G~g|;Yc,I2s+Mʈ* ;w|yVne'絴@hd2~|yPM5֌@)-6$RtFݿ=vκsnGfn?~WZL.ƕ^{SW7?LD4 +tr2 .K79೭ NkNYvtiCFc1Bxq7.{srJMS(A/ߛU~Q~37`%,,##s8qܻcǎ">[Y#V[}ЌZjq 7PsyyyeFb%$ۘfq5 Q$>?~Q 4M0 4X{b XigpB/Y=^ eor:sܮvGyJ X $P~C_tvg˜#kR),+Ήn24 r5R*c¥RA$R+m`Qm]Ǜsk&VyxSdᗌp]fgBKAOAxZ{>.#;ܣǝ甕{>>mvf--+cݻ%''6drmߵ\aKLꙖrԴs߁0j24V@uMj% Cs<дe2fBVbrndwՅ ԴcǎLr5+1jYwyؑԴFR>n֍l6@eQk;l1bD\M[6{373DŽ+5p ` <yH q1ls欆D&S_>=CszbhJ&QN%]:sVѤu51h/,.Q L&aHE *ЎFFT0n@xryyf fC@~?O_[˗sm:;X#T[0}H܉K2k̠nᗊ5D|tݽRbߝirqBLltr+A{RN%I:"ϳSFqHn.gr\cUjl6+JP:];ciuaP\{ݹ<ܒ7OCJJڳ/ov _W`8Sb,`|OMR@N8`p=tyvLJO1IZBg`^]ba=֡I9q\ui=t! h,]~Ͻ:$,..j߸qɓa^s[l7j6^XP @XT ,1KR)HJf[ 0G aet8E]."[u& c}l(((33"B3~Y4?Ϛ;2ೋl[Oz$iM)TV>t|rh 3N5,9gG]Yj9omȹ\bpxpqy8{/Yt c %̲sֆj :_t1bw EQ4MSVkڷkq܊~gjL]0sc%̦&jPpϞ)nT* tR}oMQ(Ԕ 4e޻iTaΝ?{w܅=vROV|QLttg[",v=RFfzZ`νRa2$i1s8F M;WC 7!ZGdWܚ׳q1S_]1Ƹf# UVV&n2bQFF3gc qhV+0ceN aR!Ḅ!`qtG'b89dɬ"sdf1.&S|8ό;n)(Ѱ+%+%vx6,>i@)49Wlp41jE ﲹ%.Q4o&5%yӖ]L&IRʤ*rݮuz/} <8>.ٜY[ibʨ0]v9rĈ#Mwԩٳ>8~옱?*!!.`P*7>`0>.xt'7::n>a ` ``$UkVڬ֛o,)yySO *  09`;ܼy+dyΩyy Dy܈j#ǏOOjaYV"xTݶ5t!DKFceeiJ*J BaaaEEF"cG_!T߰*GF<\}B X,p_A }cxεz/< M ]j*/}Qt:ɟ=={ֵYLLUזZSHuUIe*:>>vĈ#G,((Ym.wyVd2!G>tÇAZᷟ6TVV<} Ƹ?O}:BQQFWs[6ݓt2:gZم\s'  o?%Ik+'ǭM,/ef̘Ǐ߽{7|xoC]SƘBHyRqr,r-iv,'hUCa۪O_\"s+ΥHR0 `KyǏQhԨ1AG,B%n,T '/`ͷ?yd*g95qDz,7VUDawσ 0l㝓5ҰXEGXxx\l,ř%̟~a{xSڕ_,/FcTdTFFJ}!Bnn գV C!! !BLP&&$Y &SY=p0EJK5JpVk"zx1ܧ{tZF'JKwkUihD]-,vL:uU>0;NaraxA|a.FDynm{#@4rJU(?#l].\X 8<$D umi&}feщMprքq^J6VVVrcr,5@vp0DG(EP@KRkj^s>`(l)(k|rq^ If; }ؑ>},w}$T5C,NscG@}}||exo+W !$ fFpSWʨ%q0`e l6[^a7k)/)YAA-Z5OtL  b+ B)1D`0BJnH5rp$F!"B֤L#Mo]9;~O}WV1MR47ߓ:/*?w.8A|~b/6hjJn\N0AbbV8?WHINB Cc;p1114Ms [`178x juް_l6}wwtI]e<χ:as^;zԅ]ti͚oƎݱSlS0#K6Ph .`'rBo=2cXvT$E(L;b3#W8GuūI$r.1v̓fSZ?P;.*\Vn CSE_j:#p'YU5&#`l KE5eG.\ EB/)jU8dtA~OJMXc>uewq9Bfs6t8 S!qEدq 8`Bڀ M׆k4DF@JJJrrrJJ +uQ%A(-1B41YiIa{J3k5RW+߬t]wx?KׯY9\.c,Lei{םlwG˞{YXvEHlTdG*[C6;oԇd2h5{k,|;Mт 'd?tdWJv7(D!RHi J)Uh!PJQ(/O קu^W; \='Gvt~`B&Mz뭷Jb9ct¡Gdf|]Qi2d|EbY?j# b7bPRb0p *nsNM+Wy> .ǔIMu[xAs,+6+_j>`g^_zG5{֝_|%M1f㋍EEBRi0f6ۋ?␜k!˱G}p-}GJKMRVXwpE ~1C;.^"cPhR!Tb,.0Dh׃ M;g)*.8_~~ymӧ)={DE$&Wn^kO?H.L #>dݻw2ɣ<ri)7_/70]Ӿfd2#CZƐ.LvFV@r A;|`߶(IcJtDt1?l߾:u5t:l np޽?1&Fe8s‘XPdiE1:iԣGM! ׫rCީT0N cy*؁yw/@xA/?SNZn]= áR(2Lk֬[׭[7pg} `Z ANwݧV+u5Cx;\6\Q1z1b0 t^;Tafmpv!0)ɢ,: Qrͪ^ L2ug˧N0{gw?04cs8fiV+lJ\PBhO}8lؐU׌9GJ*ZU+?O4][/QVfw00Ϝ9㋯{Z._fGb:˲>;vҥu?5t&&_TqC]-..7o/? woj9CHxA^j6S6I8s:ErƸv0finKHhfbYVQj矧N?Z$. ʺusg٢ ;no]v4M4Tȕryb|,ESv)صsgt]jIxx\,Ɇ=)D׻rZnݺoOPIqU !j ̙usf9zQFmyo_Ĵ3by%KЅs+"6IfpEEWsΜ0@ժ(AP\?a)3f\Պ{[|;?!&DjS]&L;=zqcdg_:dPrj jI"ba8{G\t`*s6)ʟ~[&1/6`pY0G< ϲCyS..:Ħ}V+Aq\۷o8qO?4su]BhQ/fV;iaC8rn9ifRL&rBRT kMn8wq3 aƌ#o,.XR]d퀆UwCc0yA39z$::OFgrb9.""l=v^p} *J.KҐYFFG1zH@j\nx_zz\ `c 0Xy8 fƏڷk3f{ᄋSN!utނ% ssg 'M4)mvGDs.tN4_ Qn;ԏ9,_c*FcՃx` 0 0M 7ˤv[AHR`bݻwر7o;wʕ+[ 4aN˜auj1c:uK̘׸ElM4WW_z1 ;\νzjМ;fkZX'WV\y!$:C6,>.>!!e%e%Ţ 2뎙v^MT5WB(yA`D 1>75kZ]T%<ׯcuul4E5{vWIiԩy\&JǎSkVXo4 .]lhc%F# J$ogؒMLQUдRBT׈JT*UX6999}].WGZ`~TI+4%a#bڃRW &@R`#RRt|`ؿDzQ+,淊@h;0 ݡS'B~}eeeNg9u5ֿ%H${R ү_?eNgYYƍ/^Q^^W_!jժKfffdq-[,22Rrsj-xeRp\-mOs{FYw˗/ׯ'Wz#`ۿW_}522RVO:_~۷%K!Gb<3?l޼_lY޽ y䑴^{M,5q+V@JJ?h /\j4mMMvx6zu]rK,=eݺuÆ ni+F*@~^˗_deniۚF?Jd;Em/8%pXXÇ/((PffgyD Ç{%*..Keeeu޽FޡC5^zSo ";;;>>li+ƦGrO? \B&5+ MXAcǎM2;wSo7"<={***|{X73)0>`FFm6`1c$$$YFB0[=W._>rpIIߜ4MG}2С#N;Iiiiڵɓ' Iq20ƥ~ RW̙3q?<22RqP6ܤwy֭[7m?S>#E+-<!Rg`߾=cƌЩMXX9c,X++#IbZlMĜ9s/^ C>}6lK9rg(ÞtI4dddk֬ٵka̘1ׯO###_}ՇzNZbg}h&Oݓxs4-ό MU kz>>>~Æ } 6X&ՙ7K X\7 ?FFBh;[`0&=O?x3yA |~U}d8NLaʯ/xe-'ꇟ/|1>ux+:t)i*2(5i.QO{A Mez$@[ڨƇe3ODnh(iu{hסCmC2=@ Z#'7ظG\t/<_b4=zdԨQ;&5Le+rvI3tv7է/ PګdN_gTO?>zؿpRB"tڝ%Pd&_5'4-jta\^nj׾CKAhLڵ3[Y!m4nݺ6@  MӤG]ϽVycl~CCRв@ M[BeZ9 @ κ4   c^p!{1nk׮}Njz-0L dggwֶ3f̉'Q-[B8p@8_OO7 @H'ԘG۶m;x`RRR竨o%Gss0`ܹ)St5| 4y;.C)K,.]Sy\$ܙۅsPtrhرC#PiYYppĄ4nܛ7o670ߦhw>-*jjjfmFlإKSSӕ+W`FPgϞijjUWWk91 '~(XbEZZZfffZZڊ+8 a#0 -,6fYl>53l3M[-33c<;Ãs|߾L>cݺ~~~*//];w!}ySsssּ͛㏽\M}cooG͛weuuu?j^WϿtnࠪe˖U7lPYի͞3{wwӧO刈;;;ST:{!]aÆ˗/c@]]ƍDqCHquu%\߿O(ҟ~oΰ704iV-fܺt钒*-+0~Hmڴdr_hnβl6yY]`oo=wl]۠7R([nw{-?PEEݻ6߿;Yׯ_9үkp "-LfDDď?_ٝ9{k}.\H9Ī.]4޾{GlXE,H$ .ơ^ywHnݡ^ Z P:K.miiYtٳnfii_-^Zk efI zKsssEEũS}}0?+W\*!WraX^y<=V\̩͛S"2hIo:>._M\ rrr&M/ O|9t5cYӧ(F3YhH3w֮5663{+Z;ĉ!6M?{ȁ7.BH]]&,,400D"[9|MfϞalGGyr~q {={5ϛ7we۷-Zƶw _>= ðwׇahp>}EFFj#>>^*q)NYbq2%9:e˜ 7т7T5HAj޼2yrvvVuUenNNp9qpp~ݼPx3#K#S޿߿TUU޿_p@- r;s&ˊʳg888ܺu͛L>Xe``p/_qرcUBPPЃ޽{٠hs zȭ!!m iG ccGMMM۵#^#tmSXp[uu|>{Bp f23_$FK.qqڛ|p/f I}( C$ {G|OE BP ]0! %%_:ccL(9q(/#YQ}R:f67Hzzz5 [ ȾotڍDj#R`E.)<.ڦYlccyfueF ŮʼǺO4)@0,)}VQ,ETd7=uZ &DQZXXh4&a= E斐&2څBv/cH4? i@Ҡ2%8eeKp")i1al6 Ckjaab`)F°fxb PT55AǠ@߽ JNΛ49dZťU׮\"#,<\}gRjhl|I֝;^UX,iwt L6n4p෶Xm$Dêkov/*קٟF&sAd!E@UUm]Y3%%jinxq5_)Dj{ lҫW744i,`c?"e?B"[xAoi)nYܜ>oDYwgO͞;8vnu(oCV]:㫰p6xbŋfWUUI#@U/UTڸ>B"D Ի7Ban݊ϯ..?_զ۷z{QYY?1 F'] Lf*(,w?"n>QT2vl?x驫MNSWFׯ'ZV6*)=! v NYqYDq'~Gzx70 ..g>d?&'ػ7>DF1ĂLE)o`(.?P"& ic`DEupwϨK?%>*gO'  樨_TThjjN 2dAXW[3fKi"6mZ2[Z_^#tUWFo2$lŋȵ " ;y27##ĝ&}Bt:B]rrrTT$ ?$'&^xchZ_~o`~FVZVbF771gD@uX$<1)[W7~2d߁;xwX:m*jΘ#mF7![kw7nX9cL`wI─8<)AnnOy˰P|wbȑ#G n/A7AK??Pt^d( w"l6[ڽbڼ AeKp"Hb]ގيVT8q/ J%Ϟ0i3]{s1vRa^Jȏ,򥹩rJ}c[?,cX%<1f={47 .~ DPURU/=s:bIGSdqw,,,o ʄ/w/3fzo#fcm&$@&555555I@ ). DN>z[Fw#=<鼑ǝ9UUll|ߟ%^DN7ogF~;w钴4U ZR`E.70PP 4TΈ7Iǧ-ptTP8:^.+#I-+3޳ςaہ | v2QCU}_FYZFQQ-H, Sf.^L<4bc#G[&y?PFw*+ǝ=~ "tUWؽK7]m]x* @8ݲҜׯ_ݒL&wwtp nH\~#F|72Nߞ/:&=…cFz>H]Mbeˌt//s 2ac01 0ǺꌛT5U&%2%eΜ FرIIuuw L6REr˷bXL&fnjj—I$Qw#ri%ѢR3&LȨ| qvnxxX0]lL׺_0LMM'ɔ6!Ł!?DaVQ^oh2%8eeKpcB Ft{Ї3zWGV7^';?;)]DA=TDv Z7ie|θM{p?CfS YL6 ;Hɭ fJ%xιf,vR l:p+JQYOjڌ-$6bՇuecX,fXwrּ1iV񢼛ݜ0 z3 E7Ŝ0_KU nuU=l22 ,bAzJə/f|kUۏjKo}} OW=FƸm핵Niu6{çԾWSW{8abr77ݜ!e IDAT?S M}V꟬970~ڠGWox ;|t7*jiCm9gLH_[Պ|W}{/@Ļi,TTHϪ>__u=u>Cta2щdlfU5O( 7|uGC0,ơW׊ ĪO\/Nߟt_Cfo|>J\Ȫ$8i_)%I~M_o0Gop_ 2af}!jjjMmi8VXaqKe_ð'o몐˺~Maه'/i讉'1P>44/ye]3ļҊMzY U@灸w?@qhm~FjUS!X%U}z/@JQ1׈dPs Egrc+խ%!bfQ XSJƻJ:/ l0UCm[^x̙C8fc5;IyO/GWxS]\lrWWB]hw)?sТFo~;a|B"ַ8/ vT (弫 XtsQs˗CKD{_WW%2@S6B_!t^բ1}{ly3-%MF]~_47ٚw-HUQ$@1)eKp"`;@6ꏵz +bEhGYq^eDYXޱ>aI/Wci%?kͻk~k]A{;nW> gHQ!wU7[;K h /XQY}6C3Lܦpb2ݜaĢfKP c Ee}9k ˹{ [B5T:?sX˃'e<sUoSnfOU|VמzZw}'͝GoPT)*k'E'>xBni]OCC˿yc~/N1~e[siچc,6fcl6馭m('76-eGҢxǼk2*6ºr2})Ϛ_/z@A#{ oPfx]6I'@* 9N 80Wap26 G_"?_S2%8eeKpH_Н!J@?;m7(%|dƍˊϚ5ϟwqq177o)))mn $/SxKԮ}b?!Bɓ'DpIII>>>۶mׯ˗?_eccSPP0eʔdfoܸjƌ>>>D6o޼w/^h '%%޽SիWZZZI&!Ə5bbbcǎYf;v| fΜɛ| 󝜜8#{ٽ{'Ov޽} .:|v@6A.226pL&3==!4f̘3L܆;h mgffN8W^qF"""TƍCh>; GY>>>T*!;pT]߿رk׮566m622rΜ9jjj|bOpqq!t\WlllJJJ\\C|||LL q˩S.]vڴiVVV֭m ??{/_ݻwrc / %pܹ"|+WTWW{{{#޽-[ϟ56773rmb933ښxkgg2 PF7n8p#G4559㉉DD[[;11!իW]_E&nݺt>ggg?{ptoo3gpFV\y]&jժ3gΞ=;@@)eKp"`EmS"_C\C}%vŊt:XտQFXl޼y…txeee3gΚ5r֬Yg"JJJ@FA$SCܹ3//.ԩS<q)I:aԩ*_"\pJ<#gBx녟"-xIR`E.)<.ڦPxP@EqxI$ HEV__s̙/_ZXX,X`ԨQ!gR(CCCOO%KWWWwoѢEZq9! `VSSӏ?cǎ=~xǎgϞ%V|BnjS[[{ĉ'O8qvر>}'srH9.]Sy\,hXcc͛7t*jcco>( N_fMAA?z`0T*b03PP@F#-L˗/_\\|q|Ǩ(;;;]޽ﮯ{===''ٳg;::㴁S l͚5%%%T*_5GĎ}jo߾%%%̙3?}t3gnܸG'b._|O|H@rvv3_j;rPXaaaK.---eX%%% .x7c٥˖->|81cƳg/^\ZZd2KKKóg͚o0iҤk׮͞={ْ;1 `)(,;;Ǐw- `ZbBEEoٲexDCC#!!aAAAUUU,]v74iRtttnnʕ+%|v@A)eKp"`EmS"啚ZVV믿qa999֭$v^f͝;w?Ǘ/_k===={ɓdH>@{AZC\|b( @j<==ܹ#^O i@ Di&9rVp0brsw~`o':o߽׏JK#EF"TH$s!Cz&u8<\2= ȧR Dgg{ȑ6kk7df不wgϾ`),w?(! v NYqO20s_н{RB_6o`N4h~~h0 hqR\!cIJZPPq9vFn\hۇȑ6ĪW YY&H3&/?SHgjk}w՝JףG8:J,aٳGθQ.k ʮdg"s9S.^{f?}~ŋx<.??));Z&}33파$SghdD JN.vu/]B OH_͟ohP(֤/ʨS(LLd7"r]ZZfgg:l0݉ݻАPyܼysӦM¯:w֭[KKK͗-[#|}}WXιk6mt/a%>'Onڴv栠ϟ߹sgܒÇXB"o۶m+WlתիWGDDGDD\2//!rQ;,n. 'xvBMM͠ TXXHcccͣTÇ4E&cα#Gt77|ΎfܹaK.GDD0L'_2tmS"?i$9xԩiӦuAǔ]vڵɓ';wIJJB!ʒB֭[=Biii[lyə3g]v/^t𴿖AtwwFiii1ɓg秩)bk#||E!L&s/^R>|6lح[( BÇjjjmF)X,ӧOׯ_߭[;v %Kxzz[^r%**ܹs_4,,,..nݺu[l?~m>|o!ƌaϷV~zṹ]֫W/az%*:SW^y楥᫼mfy@P%T*8p`jjjڡh4`L0`DDDG>|_vwwqB(%%eܸqW\A]reȐ!fff={455{єEGNlmmճByyy|H tN|||JJJLL illE1baimAWW~޽{{zÇl6@WW*T##*b6IeeG ѣ0Tb`Y%䃸/:@dddU|VTTQSSC֭[[n_аtrr244rtt$nܵMIIdH\aA]vɉxV]]SF^<#\KH)11[[[hkk{{{'&&"f̘b&Y[[{Չ'ӦM[jU^^[jUhh(ѣOOϣGrN _n]rrrCCCCCCzzz{.Ш̨̖(R(ZZZ>>>ӧOm+~A4ٻ;Rd$#Cr>Vil VxGq`LLLzo߾ɓ'cǎgϞmii9{9spxxxC"f9+}}wqqq0`ۅ<:>sUNNN6lXti^-[qF{{{CBB$fյ7]wѬvŋr ?I$ F77b$8Δ(RN=˗y&-ZhvO8qbkľ| o; yDkklm渀΀R`Ɨuac[f;xn#!LȽZmMȃ ѿNDlq "j{6"`t 9yrR}YPpTmRddkO'S!?]ڵ}Ǒ:\ Z}){Su@?<-wqYbm}{{aO%$|,,\نt:@XffzcՇI%ESvX2ԩFb)ψ oz/r!W/ C΋O,eGFyS3gOӴx#/`)a2yx6ܹMM>8+k-ptTP8:^.+!4޳ςu6?& v NYqܝO 54B>}B46rEB~,bY+Sf%"=|X@Sd2O>;v BGqssnnn7|򥝝ܹs lmm+++.]177`2xF999rرc6lHIIfU\\ŋ]]]UUU]]]/^ܼy۷Ė޽KOO= BJ w 6e"]U=) -_ɜ8&>>~ҤIsqsԩiӦuAolBB®]vɓ;w$%%!LLL􊊊BeeeIII{u֭G-[fXf\SnVHY;/q .yBj`GjjJE8 6O Ƅ  FDD葛Çe"HII7n\reȐ!fff={455#rE[7Q}#*^YYY}^\\d2kkk^:qvbڴiVc2yyyV %ֺ=z!yQI֭KNNnhhhhhHOO7n8p#Gx XҒy+ӽa(E0 {0!\Y8eW4rt Ȱ_~+nݺ055={988pf;vlccٳ+**h4ڜ9s8<<<6n8tPСC׮]Yiヒ^x1Ͷ= HJr'R99 L-Zh"1q-}v\]]9}=]kG[[[ DNN'N[@"Ak; ٸ vI\qx߬Uqu>O:OkZJ̡rA)kmCHrFb@A # :1SC*=Z ׿݂_1!gM>8J)~Cz!uvĘH$HHȜGz>D"]!HjP [ Cm^=lW$D"!(ÉSH_"O:18w ߸ 'N|%afAҎ@]Ⱥ$80蒠"w3h-8|7.5Y`2El?H$a}KwQg_<‘[I @[ C$H+W\\E\\h4$_00M.: rM6 S+H~ @jjjHB"Nђ`03}yK|||#""LF*++> 2إUS111dSNqT/~6]PP/^TTTxBFZ[5{l;;7na+%[?H@|hĈF72nERe$e%C 4(++K[[9;;߼yS__F;DԴ&L XEӋB\["o?d޴=<+2ALc\h`DtZbb7| hll|-bX"<<|ݺu 'NL,,,:#@(o>w"((>+V;wnϞ=oÇ0f'OLǶmv1++'N03MO~ƗH;?)n4X s>ι|2opx \zI4"`ݕ+WԩSPLJ>"vFF3fHG@Ή5+/%_1=9F>A)? "I ¦@)uY`'k vS<ɇOsq쒠DQjE]@)Qoc< g _DBL? @ Vt[TH$s!CzF(*5#Ŗ,AQ3gOӴ$t(?@Dp&},9<8YرF]yg̞g7 Ca)20[9Rbg_) x˻^<4b]GGD"H|0OZVQBYx3N<1 I0@!A%8 g翮חB[k~d2x< cC ? oiY~zǏ6Dp a"#ߺsζm %Y`E.)I,n---odժU{v F?9yrR}YPpԠ ?:<k͵]j֬l@|r [?1 6J޽!&Çggg'$$?ZW@)B..22YMo/wqZ;NBe0ɀ?)Z [lIO<@HsffzcՇ}~AMC `~{޵***Νf_;$߮pq}Qܒy/U J1C<Ի72*;;<- *Q!ut" w?o߽׏vHwgMCjFffbrsO#Z\QZ\޴paf^GNOUU7ogq \Nq@j8+"#:8xЫݿ_]Xx8NwvUCW/_A4ڭ/wsK3.]z>cgeǏN.S%EXyPaN5"7 gocməeg-Y1`@== _m׮ l>//) Ct0 B3Ԝڻ[7Smm֭xٱ;'N_B?o"Lׯ q|=+?~$SYzGQ9k"hm + mӞw98| aohnƖ,a/Yꫯ7ѤR/~}SB(.??));Z'!_r&"pJkMM祒HY֭! }>>;~qZBHLFiP(֤~BhxBWZGJiK />%KВ%ojb84ڙ m)@Ĝ@!*3HBtzhw h/hMn2T&oy뵵]z_W2r2%A@ӝ.]kb-6\x[c\Ac9;;oZ---]\\NziO8 8999^^ Hz \0x|Ȓ$w[?h4Y&YQQXxihcƌqqq ݅X`X?^nܑ(x׹:::PUU%6 "WJKK7lؠsCU NYÍYfo߾ Lӧώ;.\ЮPT#G&%%XbUaafPPD*QQQ.]@H P>L&p#FFF{[.$(JxxSH||IBǏ| "uK o1 ifѣG48y#F:pV'b>}~z__v(uii)d2W^3f̰a֬YC|ub֯_c****DҔH!R? "XX,|c;vpd2yƍ+W"#HLf07ovssdSNNNև2e g\U;rf PXX`0bmcc#-0̇.^ȑ# ,hǹ!l6a즦&`t3!y$\FVZ5rHfbm(**9;;P(744TKK&ģnG>[Ѷ<f.[loM__֬YׯߎL&ܹs0Pbb7| y[055uss㜸 dhCjIL av \Fd\?'N ǝ8qNSnbC%tz``-[Drpp'Oı#a++QF%$$L<ȑ#x 탂Z{39ҁN6>}ݻwߟ?^ETV[wT#]5RZLځ@pwيU,fnJ!IҒ%NE{=TX.X ]D#G4Aiv/5]VZ]'$hG;lcnQxDӄlO9DOBȲsS瘛:˲,oӗZ[I!8{Juʒ$f̨q$oxwq=k/df-3S>𐐢I*$|%,YYˏ9}bƍv}mڴBWZ;v\9x}F浴x 9ᙳiӦaÆ*nڴIHÁ\ "HLf[2uz"!'wq C٠_ x[ݞz%Uװmi?j㲩S'|;;󯼼ǎU!3)i-?kcvC^2e_^OVΞ=+hѢ}ե7xmE… nݺaÆ/<"uBѣGٻPQPPw߾ѣF9 BB!ݫ SbǍoׇnv%!IB>;}k`yv=TÇ'!,wPزe˗W9}ڑ#oܳysC@@ E>>]v<3{bq9zTqw(S:Iqi!h>ll~ュBn5Ç 3r1">>.(((!Ųw>h4bd:W4nxzK Ғ%N 6 BY,0dˇo:Gf#(FDcn ^ٔ{S{rs0d2틟~?aҫS#FYo 2z}۶mǏ7'R;f#۴zjΩ7n\yqo.7NnO0..a4׃!<={?`c ,䓝[2|Ľ߲ysSC`)p]5hpd LMU<ҥһr(>rJ6m_\ý5m>_S{s⭷\ ٨ѿ֙QL;W_N8ͷ={Bd:Tnƍ}w2**_~5D~e&Ļ,X(7?RRV6[5,-^ԩ!:8$`Xt睳/)+v+Nl'eپ pV=zq#fǒ?Y* F!;ΞssOdgw}w$IJ~8I3'UY͸D/$)1q@bb$I,>b;Ǡ ]z վ}ݻwoڴGYYYQGGGoxI5Kk?/7| !ڬ<+,|UPM 9;x?`JL6q_U]ߛ[wSh ?^R-wG{H)5zq?7y/I&6[fj*/~Wr:}_߂K Eu=[7|KՍ9t`>KkS ZK yu'l.N//]%QQQQ#>G^<4SV-<85.-P$6o滬RܳC>дï>@?ڨ?ڨ?ڨ?pw{P?`JLq Ĕ=Pϣ9+7t?FQQQQQq Ĕ=`JLq<CBvOW-!C)8 $³"EBUXk Femc ߻ 橺AYPgOZP^k0%xMw)]6١bB UdBS0kՇ/UG%V5B?u}0[q]xʧ\1\Ku\8_ڨ?ڨ?D5\qc^k0%Sb{v( M/q(Õ~'Pn.mfruF x<ŝ*/8۱x6\j .GChEB/5SxHR/S\gBR'|>7 \5NۊԴbP3/rt?~.U(%-Qʅn%ڕ-ܘVe{?~BA9llj^k0%Sb{v(u1b\)7WbZ\oU?o3/ޫ=[%Qd5*=}1⣖8y RyGPCTPpjʧ:?pVmԣSbk0%g|?9sT@?ڨ?ڨ?ڨ?ڨ?Sbk0%g|?9> Uk1PQQQQq Ĕ=`JLq<7>@Ng{@?u/Eĵ/@m{$y;ԀOeeeuIs'''?};uBO?"%%%]v=y!F~իW?3fի}TS 7q Ĕ=`JLqe,N>uǎCB,]4%%ɓFrffft:Nw!%ҢE_}??;wBu@cǎ=pӧ탧O;vۯjM$I>},X&M\vqODEEɲ|̙+W61cF-Ojժ~ҥӧ϶mZnm|/\ꫯ"SLiҤܹsO:5eʔ}L7kLa2f͚qFxѩSZ:웞޳g=zl߾ݶ`9sfRRc=WW_1cFxDD}g[zQFEDD!b4ϟ{ne 6,[,222,,IM W\;wXYRkZf͚5kkPk׮UnԨ… mv= ر{|#FxwWׯ7nxܸqׯm|_~y۶mw\.]zNkѢEkpL&Ӟ={ bl޼~ccck:Z}wޝ#ڵ+??_y'4iȑ#xɓ';6o<:vسg͛7o޼W^;vTcƌݻwMr߿?,cǎU.1[499Y1cƌ{϶g}&IR\\#؂W^ ɱqfܸqO=TnnnIIԩS-ܲdɒsM0x}9mڴ©S&%%) &~>X4<P;.L>ٳ7|˗پׯ?~cǎ]~}vvylHaÆ{Jd޼y3gt=~\viBCC[n%::m۶Jp͚5~hYFRRRzm{\ߵkۇJk||4h4r;ST ,_Z+7o,W^<4SV-LIS^v g}cG;/lj?.4NۣYOM@zp@?ڨ?ڨ?ڨ?ڨ?ڪ?l╸͔Uk0%SGS?CQ@m@m@m@m@mr\)1e5SxܳC>M(666x؆ukP )o=4/@mr\)1e5SxܳC>cM?hwPQQEVlYv"$.@_~4U@}a2f8~oR7uܶ}{tTRue˖1cƨ⡙jq Ĕ=`JhʰZ,YY$$$Pd:/um۶ *D|i߸E=9?x`]Bz;E& my*mےL&Q @sV_vq`0,,[JX (On~K;,5PzYjeYdV{\^Mog \jZeodZVVvVVn ䷛Ut˖-^{LYSbk0z4e(K|rM#S{$-o-ٰ5ǁNk/dcybT{w6>1If^wʶl~w_+o~sѭ6ihʲZ\rsyKܓاNtVZ5_lР٬ xmưT;W+==ݾxII|闋N׷lIƱ܃~:Rˍv3O?zl6KKKwؑ=ydugEv:lR\Prcjjڵk.ů6-7E6il(’~%0(sSRyjʃo:uԽz=v߾}{lllhhhttuzjРAddٳM&_Qugf8hP׮]-zIi˶=' .E41~ٯN~w2왟^E0zjRcXO9$I#FxsuiƌJ?~ϟ_\\{+ݻwϛ7oŊ%%%<2k aТii'MZͤ%2wYV}EnfT?^zmV!5VfkYMCb3g1bS~ $$䥗^% ,HKK0`Co-[ou]Ѯ]UVΛ7CS H[l.M OKJK{ŴX콶CѪie[Œr] e0 Chh!C:v옖Sn0FcQQ?vXBBBbcc###ϟ?3) HJzH۹l6]&SS/_I&l_J~m ʡ\)//|wj4o;~Tj={LXXXcBq Ĕ=`JLq %IիWoc\cdMi@-rܿq>Po2[V,dl-/Jy3EU?u4ȑ#ӦMmڴ$I|ew/W[o.8|8A&o}WqDZGN?|캃,999 Q97U{b^re`v4;s:l^?lm$G'$+VaÆ-[wߨq Zpٳ[l5lx%~wuEEEohѢ{lX+yZlկ_̃;>nX*oǷjJTWdob1L2aD^_XKDX_JnhW`c^X@zy![2laÆ'<裏ּCvڷo׾wN XVjU,dzNI j(ʕ}^ɍ)_\ou:$Iz`09ܸq7vK?2YxcI?4MpV4*&B3W7bPl[(M1{|ZnZls&cyU4ݕ:¹y7$Io8|aFy=B333n>A.v{eݺs? }@Νϛ̳.6z CP,&1k5P|hP_!:(y\ilV5 ;;h,.~WBHW7hR0MηJsl7+ȲoE uhYTTN>;OQU?,^T{cZ'O>>l8,,V{79{@dv''N4e*V\XSZ|/EE7DT1'M:xtlο8=z5Tcvj4gddL4ɡvZ u, :gX>y͝]Kᅰ,˿=eキ%,DYzg\oiII׷oB.C74S /^ԭ[ 0pp z4##[n/B8y;M;*tk$%!/zEw+r, 4HTz#eٯnl*Mk=lfG-hٍcMД G|wovmuqe!4CT)XǏ{;W3+@#*ZwgU{_ =|8ӣ8hʕoxV$^ȇ?U?>MdڍuOLuQ?>TH8"Kq&|Y a.^:t}E7V+% MYԡ2|CVXoPQQQQQQQQQQQQ9a7H^ÿ/]ѬiІ?*#Cx%?*{+?s?y7?&Nv?d^IےIENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-main-window-3.png0000644000175000017500000012142113413640652024207 0ustar rubenrubenPNG  IHDRHEsBITOtEXtSoftwaregnome-screenshot> IDATxw|ٽ$.@ %j UA@`EQ"ґ!%;Gr].t3<ݾu,@ ,Ss 4}ovy?"?ǚ_K׿$_˶N2 ʵ:@ Rkb9;# hJ! JO |f-ѵ+g.6}R@h!Uj˫4?s?OOJTDX0v"%P^+U/gУB}b_'[ #F&>iZcpOF]Ҩ\L) dgd@ \EQ:Fۙ쵂:B$@Ai=?:-dF]2B;E/Y.i`ރ@;|<. TZ3flEЇ+Y"^ݑ_zanC @hVZ yUGŽH5_F%XFb)LKTa6nJ4MS4EB!1aIJGpPri*۹UUjL*$2a\t;yjtoJ&3mltTn^ZcY֬LYEyj-p Vxm'rn FD*$;Wx56 06mI mEGBOR_'sGXM2k6K- Iص(/amX #k3BMQ48c40&lS  ܺdLH%Hj^6T!E?}VVK6nA^/,!n{.S KD^ـ[wbӫF{#y?pUhPCDjH#\q;O<{V_/i~烗[2|w c$˟1V 7ӾoӆvѴV,4*ᓹ#f-wxj%S%@@4M!qq sFr>ҧG0ć1FUTV.,.4+SVn9QPTjNX:UPZ5{&xFړvxv[R͚>=:3HyE\lZ4S8~iew`>Y &(1VkI{kh8c/jmd7/d_Q5ƻ"| sjmiQޜ1[+e_nxH&mڶwB<M`Ue`l#kd4Y($i1^rB)H&'Zya>Wu0H  0]Vϊ|PējZoۮcDtP<2m2& Wsn9GTꭙ{ү3&묻h6mI; kqqFɉ@SPbX3uN-q1~\73Aqg0(h(dKRUx ^b޷G4PeR;eq~ET2 SU.)-Kv4mzƙ:''Jn*[+[xUUW#Z^LVIިF0yuu5A /V{s[kS6mI;M5_;PT Yg6XNrrDŽKfYPi)hB ,..z*\˹5B ɼRWq&= 88s&4hN>['W^Yf^eHSb~{cĒ‚'$`W?y|>n@ 5q!*l☮U_JnhY m'i$ZWן,mΪڽ\,!1!PH flu\S󷭿1 *Io2cPxkU[ϪcW.1-E5=-VUYL$0c\?2 ࠀk.0&@KL-$b1a^' }6lF 8y3?c#p\%,2r.wɲwmO'FH1!1~.qnf*2S iJZpEyDX~F5޼y)8}@)22 ~ϗX,miNTv-ZXj`KP7 D ZʪP/hɯ~ʵ"}pP6@hvdnڳݽIUν|l[88O\2RYYU\RhH$JBx2_T" 轻~3~eLbpK1X~G*ufM|a[*Ƥ,CZw)St Go7@ MG.S^V L ½oj@ %"Xk@ %8 @h!L BI~E`U=-A@ #ƣr!uΕV:9?`믽ַo_{cwK .VrQaAE$VGm&c? [s38a sG~ 뼂{Uu@&m4`sw׿HhX|B;k2>6oҵ[HhX)W_]nCBúvav^zqڴ 0`֭[R裏>rTTT:|G_'`3} c_PD}׭{JHhX6`ӻ?|˗-s}._^l ܹkʏbՍ}'~Z'ߺ-*,\O>S^銕+F/yI̸s}%[msHСC~a=Æ dzAAA^^^.][n˯p@ZlP>|ȹŪ?pΝ\h@ oܾ7n|NSGA_JZZwe?cNۗBZ?~X`={쌙:ȟMM `ߓ_HHS|zo._lܸ|a7;d7jټywݱ'B B!l]P[ٳ \"pB]ͧݻusBdggOSRR.]zKf~:4)c^o&$$H$]:wD?ƓOwuOxb޽{Ǎo9/%`՘opf¿\=pwy\Z41jck[ƌg͚騐'l}Ν߸q #xݻw9kvIIə3gVEԴ/vݙi )80T[ !!a׮?ƌD$66ǎoB8ZV h׮ѣGSSSӣGFGGl\o6s Gyᇗ-[^PXxҼFD"YtYNJelLe;%'K$'fA~u`ll M ]][mjZ#&NtO]`aVi1eff`a8Gsa)ܳ,|-33W`k=ľ?CZV>|8,, 8) 3ӷƍ1ﴴ7Y|opצMrKA׽z>×_q\RRiS9!'0(NHA~ 6S BCfΘubpY0|&2j(V7cܼٳf>#^23yҤ>8##C,we7_;gƓ' oe'߷o߷~'--RXO>V4;ԩSϘ/ :ƒ]3 /'(8$?/~[A -X ͸ LU]ͪѶ?qh@ tr_%{(-ǰc @ +iҗG˽C~f`d@ ZL B @hJy@  1q\r^}-@ %k{n @ oI D0jz5.M hM*6K'qy̸&Tr;wصiV(q @ѮN ˤLJO%'K:} 2(8e]_s' yb̰, E!W׬QAr2&'1H <:\M4 0D=i/9xˑRN!@p0@8s:[J/˾8*,,(0gϟ9~ؔg6 3-x}A>k5UamN];Lw'n}VV&B߸аC-pww  ixF~A܂bP(BBBl$NLyفKW.Lcf se&\n4oUdR2o@eG9j߷M~s.t3 !af_>vM&;-7\UUq 㟲c&3+C(νUNJ'8(xGo\ ːy/4rؐ&^s;49WeY %{zޕe*ЃܤPdfe͍0n|YY&}'[jy,jjF]ZV?۷ m:W`0?t@U KHv uqi'Bq,{UuƜSz2&#% h&?ާtx4o":9Uf*ƸOp3mn`3u:UX]t3g熈ƻP JR==U*mu"||| 0NɝL&cpk!9!$q_`dDW۳{/H&m.((عgwdL!)ؓU]L+=Cɼx}C tҘ{ټZB+6,!30"FTwA.;FbܺDa ! Ɏ[)/]:k-j_j~ǎsH X`r g.hvyqX}#}Md:=`j:fNZMQa~ueNGME4M,K4("6Q%{/Xӵ6H{eX.OϞv:L뇋D"W|\C:$6 f tŚmyaU}Y h4 X/\l7 YYCظiRĄjWrFƈXRG%uLp8z^=t3~y`0ܳO@5K-y{b\ifzis϶ c6z/uYj^Kਜf@5j!Q <۝DH1pDa <06[ꮁ' 47oٷ8׹d4hZZrݽcbS ;~tЀVSXӈ((Dq(Խ{sۦ{2˓-ue=[ \`Vj5Umź-\Ҷmsgܸ/^1eRppis^c}a:=s?MZcV,krՋcJ%J].ZbK/)t+;dSsd-XG=㣌Mx?]mc\rc㻚VR4?""TU'ҏu.;}ߡ1]( md'My.c6!^#=#c;tpR't! r*]墢"?qm۶ 27gϞyyy!!!6Jc8 `Pd4rHԛA'kRNA Ght_V^^͇8qjLSrIJ;w/ X~:PHHC:6mzh1F:~븸x;eMAAeE,"D5E tڕh.iʼKq8OL 7JibZrNiL tRtt^7n\Ϲ+|EQZL}1ٜ/ŌAR}<օ/:..h`Ri~~~me?F9ȑ~.>6N  :U:L d_䋯W,}Sg4h0D_Gny0 @X$b#wHxо2bО{/̯R5K&H. }aW{b>2+U$Eu9 /( acc*t9k+++{QYyą$ .Vp3eMoFA>@XMRN6@q&Wo8Քq.>c!Xmz~$|:xp˱1N+m\]]ͱ&_><m#ZA+-rnd:eZ8=MpWj:d񧈈ŝ=rccv9`>bH@SRH& tgl$Z1ˢU[Iӧ9?XbFS VQ(}@m۶}ӧ @Ν{rS,ˎ7ǟ &ۿ_kև*RtĨ1J2c}f#f)k2F1 @A }iF>ldP@pqI3.FşՆ(e@a1Yf1v jC:&xfYB] aO^>}t5] Bː&8{bE`u:}2&E`dl IDATϫA[\\db&PSYe4{/H8skZr5Y]rBBK:''+۵>~;!!99[pwϽsMqLԴ&jRq7~Ø5+晵K`3g$$&pt sZ]^QqZWdAiiiaX㸱Fa Ťj0a DrE+ H,ӷo߾`46 `̬LkׯSǩjBgϟCAF3!-uv2F@)iݹ}~yG/_>շ WXu_S]3Øa9Xض£s6j_C0`׌JUlUV=N>}a}0-Ch.ٶ}5W_` B4F qmQyX+ XƜћXۇyt켅((@#c^qO/+-H.g_U* e[Zx)BBÈBzGXsA#pZ]GCKufn:GQ;FZTKDDDVVVbǎ3O@5oڲsdL&a¢!9^˂AЫQ\~_x;(0󃂂T* ìP䯾jʴ):,[ǟa÷ l߱/))]~;wfLDOym0#0 nRi44$9+/wĸKMJKORyHSy`FcaWGJ ,+-qu7 j$Pyyڴi|4wm!Æ [rd ~x0SCp51b,DYYd0H$nK{;dYgv*N/WVVJ21h?VŅ/2GlU &V[zS^rf !WCC¤ޭ;kbL&SeUUQn.@#()8hOB%m:øT'k ֽY~ԩI qԩ~0h@>.!@Fє 3&d25] *1V&`O?G\Rj ={De6hUƒw BFޭ[tfVFrR'#c:w˳g:^y*(QN~N+YeYEQnZv57t||]vݳoC,Y^R`28`HzG h}I(yz2z9.0Y{ˢ"(*""ɓ:ee4JȈVyM&qu~1M/0衼 BCc==\"DZ11cX'zş~ Fc@@M&;>,TUDoC<1dOwwrBBB4ݧ_|ܤ"""o޾٦9$^y <=c4׍76m@ZxDk(0?7JoJ#w\-P{y{A1Q}0/'1" $G*)%%nHM7\*veˑB-^[+_?(wde?vBS_$FP ~qXyoT\ξ*s!UjV|"5lU9j LhtJ_? x]pWZR JKlmgM'&v?v6JDEo UoM>=y'VVWH$F><o^yXħ&| ;M6O><ȉlO@?߲PoA% G!~qS)²@?_޸U]B5 %ٵk0L7x9-]lݷ@EE+͝;~ s;)Dy<1DSt+qX &bN!j.$c'+&/zӞ\2ןaAԆY?'^B ĔP$2 JRU j zݎ];+T:TƩ+׮tF޽ '|a\Vx&ڵ6Xy7#>.z8vihF)>Ws#[+Wrm+ C",Nhe89㘘ؘؘK%Ů܁fN3oYT\䄉%z\PŢiS&䜗g4%{YC.Ny+O?{/5cZxx8/"iX7A3 vԨ5bBB27M!IER1HEIv:ӭs uM>Meyr,X2!C}<+`eʼys8qy|AH   XFѭߤc ,~Z0>40SѨrǚXe(qjϿ0/ UUz^ɽS^>%O<7"Nn<\&sgciY5:kޝh^^ @W~&}(㼓ھG\sZt`-EQǎs(m.F1;[nݺukĈ N$ ]%k7l<|H6/U&hPZryBDkK> ^P9o"MhҤit9;;*2* ?!>vFv-_VnnaqT*K^!`8y<=##sNݺwٳ'Y %"P@•ݣZRQߚСmL,3]WnxҪ. 3jZ'ʼ.2cpp5Վ uP  ȋD5dz ;h4XaLqtlcYe9hie9R_PЫg UÇ;w}T*RD?e::sJ׏:VWjtZ3g{Tگ!S#FDE% @QPKrg5%.=]zfȑ0@iII֨;L{=>.>>.2u_ϟsEh6q`Nh+sͫ&lJ2+Eawꫯ?zNl0L"77~DfЇ\)BvNT$y!i nUژEuMҗCY0zcmb[bbbbqllLlLlL,BPIU?m-66J؟7u KS" ܤRR.x}5E ;3>E HqԜ]_}Zeh@0l?L߼-Z]oY^s@"i׾}L۶|3n.4eQb9Vps鲢j4:0''رc'Ntٳ_}n)}tr%wwP~~^rRqc+).}Nn?yf[)kFAρbq"DZF(  Ǝ/,*2L/xǟc1?v?vh4ȹ7y|}r/ܱ/Xb}D,=s(~w}oʔͻ V,_z$i]Fc8 R21xn8/ O׼޻|}|AGDz!Z(2UU*Rh{yFRnRuv,4Xε?FE9c̱^U$Fa Z8t庬FڀG}nܸ"N3LZ_|bԣ; iiD*R4Љ: FEi5M;:=žz&a`Y`900ஈQ/׿f?y*)*"A\p'fYv kLMM֍[~2 MDN[ۂ ڱPC:}vdFMіm_PˢRkB..t|9tY  >|?17WUM >> ثgN ȘXDz@ѴDBX,H$nn2L&kp$ `bh ODfFgBK%E?ԫKprJ3#3?09)\@|1c2 dڹ{otۨ'd2D"~yHM듖R5yy… TE-^؉Gmg a`Re2IJ&d2E ?Z:~|1k[SDG8dҽh^...r L;w4CRRR X&{kFGyը6u8 ~Fow7~/Ie S$8Lxb[XXM`Bф(DSqz>..`0ŶFKjz'O:;irii,\y3BaO&8wδPXR:sF2eQO`H$Jh4庬SSv8M5 \.˛"Y׻W"څ&Mqp7Dq0 uhwnnܴ!4qZs#Mhy(   }-ZTVRTVR{O&ÏR]DQ4rw!Ç ߾s{+hu2#æ^}Ky/z-[㺴X8p]e--c(J&uy;4(P(Fx_۟gԈpTЃvH"#"Xz;AVqA˗3 }&D/X|9V*$s(v9sˢESD"d2NcL&>>Bi޴n/=n/^h[9ٗfL~iP ibYV@w}ca .ʡrt9g-ԊoؒqP(ڴi0  QC7' ?X},ٹfMKRAu!/LRR1F#`bM'=Tj5% EBWL2wQ1#G0 1 |g/D(J,7hF9 !PH "8/1aaa){Ps?+p5= EN=õܞ-!- ww`g(zbEӌ=E%oXPnnRL*qshr-'[hyvԾ, 4:*P40(ݢ1Rǟν{1lrm^vqp@$:ۻxu(n) eS>bj6mڕ95T(پ2Sn"z<&7_pmͼg##~;v𠠐{ljq@y9óݲadD8ȤnDW70 D @.]jBXMۜyٙZlv~{Fߏ1tnMߝqM /V2?Ni5 Ty.|e@ Acw%oݼq[}hQ([n}#ONzA f֯|_~itkbLc9uuuQQѿŢh6D"(ТٽsgbB6Qahu:V"wy%qEØL]򟁱-&619]A\2@h`bqhLj q7nrNBKK&͜5;t˗os eMd 4EӍ;\ q3f]o\˗ر|i{SZR ƍ:+ٗ/_$1!-?÷n6ޖ5#-ZysM?|뭷VZR9r…ŋ0ȑ#gϞ׶my٩RG7;wLNN;w~7z}#[tـd@XliRRH$JNN^tǟ|joG>ҫW/D_߿h3f ͛7?\lpu;w, [j__~gϦ~{Ϟ=aDr;C:vxaDL rSJJϛO###7n|≱#JߐаzHݻw[0qJ˰80aq2C|6$"(u?%5R{[l?vOxM~S ~fԩs_~7mj^(OQgó2eQF^>SǏ/2OAA>߹֏G|r]K䞞JUS6|p9-N5C}:$!O3gΎ[^jfϝ[ ~ڢ6>Xn ϝkxOj1(up3*Q2?33aW^yeVEFFY`0\|9s&2eiifl.qm4~ma ӦM.\pk?Fh4xQubkNwٳg/[RxI&Ŏ%APPCb|3331?SO=)mH q!E%< -ך݅BTo2MFuQ(}-\1c)χ=7e/<|}G> ֪'N0ц'<ԓNk@{zʃCi{D|>}zwk֬ _tN65֯_c|I+WTVV'^xEM򜗗 [0aŋ ܻwZx lK *E]o+ﻎS*w<CǧW:<Ӎ&LJJas=ې:t?] qfh=zl߾U-))رcSL/)뿵L;jԨ:G=zz;Կ _|i&oc!.Ep] N0̫J%|^޿V?<ˏ-OS_ئ޼iskךDh:V_wWF\}; Y*{:P ,ҪX[EԺP?UA^8uCHU@EA 8$$2.yx{{{3.]m[U {wۿUcx r7⋯LRu015kԨQtN[[ڶ!NP~)r}!$',L[Sx\۶;vd %ii-MLX?(KAHVb`po]]% u9q]g%B2uQKAH` %IEZjCԪ@)j*K+ucǜ;G.=Z؎iܸqQa|nvIYH yqNkh4@@㦛D 5qE445۹ܿw7|\QVsƍsigjbR]_݁:40ԩk|XH);K{ΐQp95ʹ/+=* 5e߰$Ԭκp>_6\QsYvVB¥kfWQQ!j@RAfڞ-A:n&+K U^Q8hOOU䣙ǦLCHV]efT)!^Q; dF U'G'W/5=p!Y=^TpY~1D zFSSSiʥIJ؋Ԓ @KV..̆'&fd%9DB аWT Сuի8quK4klBQٽ..NޫW/U *YN8訩ijb2l'3kϝ;memƹUy<]=vl_&f;v̜iO_kknƴ|߽X[88:}EE:bPWP5n?ĮOXLjgY=|p1cMxEK,eJp‚|B _òYǎT\n]VV۷ gϞì•fKRH1*Ȉ T R zժ1cN޹3Fr23&DDDlr5kyҫ'SWWh% VkVfc޽uwlTݹs'mmmSU+W^|YG 5!_儅 THSRɓrs;ZZԠN0ᄚ={UEEqRLuv~~~Ν]t&~JpH}pofV&߼;BSnbjV|m ==*{415+,Ԭ@걿{vKsJ j$dw~ صH r@Gb&0BB._ik{/Vܸ1|djb2vzSg̸}B@ x޸qcML eK@ bVIDC)\KV?0NXƍm~e͛OCݽ[;"mϞ٪YZZ<=/KzͭٳV{3444߿_]k...Qhxn}|C1~~onSTշ>|0#AU` 2ر|>ٳ/_`?=zի_}5^ռy_~]^^>g5kfHȼk׮UTTdffN &K0 BHVW\ O _ ؓq*i_;SS]--_{{}.WUk[PVF),+kn0 9rhݬml jll%2^իWoiպg-[GL8^uK~wU׮Yt2{#G]%M/\#}|TեkMw۫={ٳݻu;~hkI?s9ՄKd Bz{R\lϼի/OZս͕fb@ػ'OݺEϸVN7duU)YX8ҥ۶KSR$&4Һhfh4f:Po $%NXmwHN>a廙3 TwEj !YL%zϗ \*HņNEITPZaiiⅪ;oZH)H)/x'&j"yօQ_|YV |1f*+*VCBMjs[l>{h>AhjjZZX~7ɩyY "G l٪m;i  $Pyyyyy{ʆ`  P:.u'&;+Ν⟹^3$XTZA*6tR-*HņN*SJ 4(N3/_LJJ䤩I EQU((AɻwyyI:VEBM9PPH Qh^ZˇL &POt)Ѐ5/Obvs.]{>_ \>|IbDBM5@ cOC2 R{(T%٩@ $9m*)dp8<$PEQ:::RkjjISDHf5z4ȑ B2(EQ9ϟtCdVBBWV~꫒SSUw@- To_B: J)~r/EQ)_<˶spttj^mNлw;YY5QuwԏV-5Z'Ea϶fgozU3;_Ln\Mkτk~Ӯ/8vkWLRѭOgK>y)_/P T^SԪs΋{G7GHVzZZnnK0z9@D#\Wsw^h^eUwgk1gѼɱ/;&;H=bZ6.H;Ͷmh팲7if Xrܻ|>;ٙOe%n]]E @cΨOĮ9)PNn,YuSJljD?ety%<9Ee6&zޮO]351nictfh433 SPۯMsK ܒثJ>Uif|)B2XXYK{ meel ViWMn<,(VFG&97KU%1WGd} ug~Eٹ6&zq|_7^uC_ $g!K+k?MMM }PQՐ(_wˤK iami`_K{f知ey6͍u-.ʰ֛ e|W㗕~ƐYU\RaԈ+h [ccc%o 2bC'բTl$*(PHXգyLIfFiEHi9?3}fF›p4M>PKKCl*ЙԬbMoN75K3X^½usjr?,^|_J@)Ty%($M!$@='w"v"rB5OdjNY9s+ӣIϪ`x7xTXY J]EO]xl~K 3n}4K7Ӟ.TJ\OPω&o)h1 !1bڦ?CڣIIC,?x5[g2!Yy%k\rJ.0[bou #NGJ B2ˈs,{!?PX Wx8# :p8qrƟڬZ(ܾBu&w@@] $O*L.PSni8j$#6&3SSxH-C2B%?2bïVA^"fpIejH$!&ȝ#-z_rrrm 5Jt I8rKCe!D(Td_U%˾-nĎ"1P%hE<`7"##߿/Blllrro===OށLp_gccS|Z B2487n\hhΝ;RSS>|0*:nݺ*wTYӧcJݛfرcE~̙Ν;;88Hg\\Ԛ|G<{̹?}٣5'9| Wvww^k׮mCm߾Kjj͛O8-k׮p€K۷cǎ/^̚5ߟY5dȐZ딠8q g%Ǐ'=@zϟ?:u͛6'*%%C%۷o߶mǏm۶iӦg2<<<ݻWvBBMeS\8aaޅ2O IDAT+HņN*VXXi</11q#F9s ֭[ 6`ݻm3###99yܸqb盛 q\ww5kl߾YeccWvBBM9PP)&R!!¡G'%IW_{{NX@.)')W^ݽ{ǫ{Ν{ ӦM>\ZZ:a„+WN6ĉb'Oѣ_-vNNNmll|={0SBHQQQRRRzz:3k:===))K ˗aÆ3grVz]ᒛ7o2˻wﺹ8O#_.5jj;]{} 9rА)144=r!xɒ%+VWijj SO>/$ɓ%->ǻwŋUN@}fx<=4oNLEQ"jP["Kd:9rR>ABMdQITPZc~_y#wc_qU  rjԚDiH "  T!>22ɓ/_trr5k֐!C!O233ӧϼywޅ9s&//bsa(9[Q24,_|Eqq͛7:uYɓ'O~w--I&ѫFۘǏļ}vԨQ>|ݜc5 KTT\Ν;Eiii/]455.駟Zhr{Po!&@Tl$*(?~oZ={,44SNtɩS~`=$>…ݻw?yСCײe˘egϞ%&&zxx_^jݻ;wmddoݺ544TGB24,`---GGǍ7=zTϟ?O8::>|JۋݑGff|;B24,;vjr^UݩT3 $@8,>9{CVYYY ,߿?]2eʔOΝ;7++eeeܾ};880~+WL6mڴi;0PH رc'M7mtذa=jhh}G'j*<<<88ת %R>}UX 5EbC'QAi$Ԕ@ShBMCBM !X!X!X!h''*6mvttlݺW_}uEm>رʔq_'V>}ٳt\R+W(nC:thݺuU2UTT?{,***##?}+)MM֭[o޼eB׭[7{{nݺot˗/ܘ:3f̠(ruu}spppww xtMtttlmmEq]auΝ۵kWmm]Ν;>g0lذׯ?Lׯ_'&&.>ȑZ&䄅B48#^["zhyR߯_;yyW^- $L M#DQ BBѿ5BH!/uwII+ԩ,'N?6lYYY+V}||6n*666W.,,޽G! ۾}KJJJppO3//~uݻws玅g͚ueB˗׭[nݺv.^y#""eU;vrHVo޼)SUя?^~Է@BBBgڷoЅ tɡ?}7cSQ!!OҘ1A+wR +4F!tvn*te8x`BȈ#Μ9ÌD333[}(#>1{%?ڵk=<<\ghh]U{v!'>>EWpssҲ a|r ---VVVr@@UYkPאLp8.~TWK^S!H&9yaaqcBo5Iӱ<ބs~{ȑߏ<~=EMw1":իߺx)P_EFF2%eee1##Ev;E,A׮]gΜYPP;v?|+RSSn!Aynn.sիWC~cǎYiuL̜լ٫W?sH*웺:d7ן~bMm %t,9 70+STTIzzzRRRQQ!dСIZkժՍ77nhӦ ֡C333ggpOOO===k\\\; #OOO6ʕ+> v弼K.abҨkH&sz^pjqy9!$:%(_ggUwM \}GQ.USs:t~wUʫtL7|.#G }444=r!dʔ)O< xo߾MHH7n\v1qŋ߻wݻwoœ&Mb{}!g̅dBHHHʕ+O8QZZZZZXӽnҤIɕ၁΃300ׯɓ}}}Uq.aR4=-`7[||&?O0̙\_驜} nVl15zqj$66vٲeU W\s۷fggxxxTY5lڴi999666ӧOezyyYۛbŊ޽{3k{1w\@>uTYvdOWCW?~vvÚ5k;$ `VC]MPlv7Aǂ`A}@&( !P/S* %ˁʯʔL U.+Z2%CdM&JQS3Br}Pd%%OQ'XzD1b` 蔔%{ P3WdBzM>Dq*@RQke$<*RMH~!G#nUw2[~qv[3҉U%BUaOOL+::)::JyyyM[nW_]xQtsO:v|2t\'''WW ^UӧO{yy988xyy={.0`+Wʕ+T􁀤GOctURʶT?P?LM-C2BLe}#&>3,NVP uСuUCEEgϢ222ɓ'ٳGl 999999{XpR:.Ν;RSS>|0|YVݹsgɒ%-w!$ `Uvqc*p2q 5ECHO\v#ԺBEuCM}(TV޸] ȠiiiK,9zh~6nضm[|˖-?޼y?G=_۷oMF/_4t3flٲBQT⬬!ϟ hҤy󴴴=._<***77ŋuݻw?*((GLo^RRҥKW6mڔ^={޼yS___;@(1f>)(̇`bC"1>|z7Ŝy3&==n(  66vѣG ;6qZ4([nݺuǏlyQBuƍ !G#}!}ٿ+W8q411Q_vm%aդIÓ+++n``Я_ɓ'bbҨk`ʶ60FB5V`Š*.[Jʕ+utt>}l*QFM6 j£L//5kx{{BWXѻwofm=#""Ν+ݧN*u޽cℐI^աCիWϟ??;;a͚5 8pժU5:| dPfI(Xx;Cpž={2庺s̙3gv$_H7n\u[gggf>L] ߀$j2x`zX^uנHH)ʛ$d5J(R}`y\ܤ+9Mb *44jʾN1 kYbHJzZ\lb^L%՞&v[ypL)ejG 5HO4o8%H:Z^KqCsӸQ5:WNN r(aXE׏?bcbfW(ūѯ?S?]r;ZlNMUuGA썌48MǦ*$dEaPp(T|ox˖+j.@M >x<^eeeeEŇeee߿/)))y'%$'5]Zz m{fHUEQ'(M^mĉ!ϜYgOQFϝjBΚӧUYl_m6oȢQHE gi}6(T 'ܹ#ꎨRBB5@0fW%%NNƹߋFՠBL;~ׯgΜ}s bpt5jf|wU;p53s[㏃~~2n%1ćxV aLoO߼ɒ()Ϗʯ_||웫d/t)ST#2AgYcڼuvˀ㜝rS=s5cFr54^o5u֩^8sl.]6lX/j9Jij5{fٮ]?=7+;ޔ%Sڷo/L5mݻo۶k׮aYZ.jpՖ_UǷm;m[zyq.->>[||?zACCc-ݻu>|!D `[ 뤦=ܖ 9PIE9vҳjdYRYI/+pualm*XAeocc@}1f?n(axmOk#wx m>+?_~<Or#Wegg7-[ttt (,,TڻuҺujq%&$r}+nܠo~uN )_48nԨYJg:7jw៺bccǏO=ztmV^quO*r刈 6<~ɓo LIIIIIi޼+6|4(-Ͽ31_˪(*/?/33AӓލСڍm^:7U_פ՝ڂz,7J> J!]O-;+;EEE|q555MLL==kMQOs.|Ѳ庛7Eva65;A@ގCr;ƺNh+Bv<رCC0%iIEcP Zt IDAT#c6A }cUBM"ej~U-T">Tl$*445/ U>֫+o.II+>^ay"E5oፒF%ޗ,62, vn[+1kRߙB TP%d>>$0p; }&;ui82`Ϗ~V^k(,_115c~,;u} _d5:z[o;Z@&&Oc U{K-(ed%S2yYLnǼQݻ͕_9=b]h(!CУcǎ8=}|sQ6}|?~.cbjvJO8ibj݇iYU]#;'!V۴j݆uGB31Pf1#rI|mrV!Of!ZSTԖϲ1ׇƫLť݄cbb!c !`TّF!}B%BRSS M~a,A0~GI}1]ncǍ/xMA@0fgϞB,-- 7Fg׭[֭[gccc``! !Fѹ_PP@ϏOH5rdIhק/!ڵkx^HLLd*@&qu݇ك"K:cuP',c_h!o jJ !={.";tC:|>ظʾ$4BѣNҍ|>?>>Ftuu{~R7ukРg%''{ǧn ԏlӻ/ 1!/}3cFO[y/-ڞ&(*$|}]@~4nԨ7}K0˽nynqsZp0GÃtصݺusttLK׽{롣cnjtjzmhheeo_~Z7u H(#6t p p1;{,OSUJ.dg l!2 :Np_ 72pn޸q-ף`[XhҥLKx/^8xOS(8N1 BƎ%7B>MyӷO߾}9΍d] Ąu0%78aaXY3ݺv溶w),,,Ķ&BH3ڷo"!ķ_w::8ܾ}KqZaBM^]݂2F ʚ)p(BÏ 6I6_ THHwɓqO=innn{SVybίҚF!UBq*CSe]`toӝ;>bJ(R1wor7rBȬRBBaG!q\)8 sV^BB~˓'nݢWBDK8?Hq8we_zZZnnKkaYA??E 'kwCdDnfh4f䒏[Q!dwJ/LpqRp_hpn @v7(_:~T]NM2P !2dJI_e&CHfȐ ,Fi$|: ȜI3$6pƇ*٭DH bU Kِ iITP}Z+jUPS$I)H#5p+?i脚u{ B2+ $B2+ $B2+ $l 5Ep\Հd4d8 FPÄTɭ٠~>F?2bC2K6Thh$|MC! #z @CSkɸ F5?גX!d2@H`dV@H`dV@H`:%DT@TP\3#8(rێ !zB ݯD>t8|Q\mmMMM[ݺlU>A2aYIyΝ8q  |4\y4e\QdAtt wq8xz\ $@d8)Tc3rM $8u gA6q "J+ $DT@VQYfH Tx,{} 5:XYdl"!!?&(vVYZ$}QY2d H (K  2uX 5QP$ABMeSI >(j&(zM L5 \^P dzM((vZ݆bkT]  )3}GÛn-;Lijtk!iC8s 5Bj>ğ GvkPPXZJ#Z:*#[̐PX 5Usd/1&N\p5Ej$)dDI]6CH!+=&[V(7AJz_E7D< F ʨWLn(ĩn+#d 9t@efVB2q a ի.* [h`\+ *1 âbU[H ,EO/ 5uPu8-F$P'    H ,,R]-5 BPX 5ABMu   4, ̲7W.R- $(Uuq)g3$DT@VhhPX 5A.8ŎH $ODWݽ{e˖s陘ގm[lI۪Uϟ3%ڵ{.hMܹ/혿Ν;J#ꊢFcN !!!!>466=zH6))ISSSSSƍt͛~M6.hF }} &Ӆ|>…5ꫯ޽{'B2gddٳJ vZ6-//ƍwa&B֮]{6lmĉm۶R|7o/8L5kV~~~^^^V̙CY|yZZڽ{233_xQ"xbcƌ{ի0ѿ3®^l2pڵwܹ{n^^ނ jgBHP3gۗ ޿QQQhʶǏ𰵵uww?qSΟ?̘1&Ms5k͛'Znjj:bΝ;GijjJIKKӧڵkϟ?O_lbkk۸q7h˗/xeexmڴ|ӦM gÆ֭;rH]v!Grԩ \|yС%#m]Yȑ# .,..ٳg-,,ˢ̙m6WYYm6fԳgO_XXHzɩ#iӦeW6\z9''m۶ZZZbکB2BTVV^tiРALILLرcN:մ5mΟ?@_U7n\\\\^^vԩӦM>|)SO^UVI8[ۢE OO-ZӧOo޼aY=}J#ZZZrQQfff&eaat8;;|\Qw qVZ/#""ϟ:Դ)ocǎA_fҀBȼy:lxEӽ{w {  a tuuuuu333j?~ƌ/^(..={6]ؾ}Ҝ ru5ҸqG9s fϞ=f0((hOLk$$$C[$=zkdʕtߣGF3fpIIP;fS PZeee΋i~Z}Q8 c#m98p\UwGIPPXZ wx{{;6LUVVfg>z劦F}?^j \}Q̧On$&zk(j?vvR6+~󺲒( B2z|u\.P@QLP'Tn !$y^(B2݂)@@QE(^%~)@ $|DQ*#Wtv  ˷-6uo9ah&FzP@+B2@}b89ٸQ/(;6kp-$1:hjjZ[[9rʕ5RJ.j¹$Ϝ9?oJWPՕh?+N|i/_?kajɩ$x<^iiSҦO7dBrllQPWAT\\~~tT~/jڈ$ [Z+)kIY5jmkָ˂hi|VeյHCCyGӧÆ kܸO8ѩS'}}}''_~EӳQF-|8PXG8fO;,\Ǜ8p3gv7p>MڷoT>sl/FީO_xYjڸч;;K=7& Y>JϜy\Ŷr+++[Wn޼K.+V(**ڳg!̙3ӦM۵kW=^xzݻwBΟ?dɒm۶|r̙...V|۷l2ĸqajNk6444mWyWnnaB2gdd̟?СUV zzzWnЭ[B7oNc|׮]{{N:I %:غeO;vl'XU_zܹx !fF[ -46Щ,76HBS\.4E[nRӧC 111rƅtE{nNtuuuttmmm_zU#W0J51fhdUExJ7 yuhWnwUV5*{wy91//AMxIA})B"Sx sJN#Cc0TlM?Rډ iPuM!iQDŽUmJhق @2y3c})}ӽ,;#%*ɔt: AWr=Tq|nݺvڃ߳X,RIA㦔޺#buA$q7::j0 /Y8MIqXg\[k]qqpZqRJaQ[^I;e|T7y'F_x[ϟPVfW,dɒ断[M>8.] ;ծ. m=^\8+3VBB)#[`eԆ_ :hh@^^ޡCz={kkk{ܹׯر3~߾'N\.uM6ǵ/D2hʿuM-c}7nܰǸ#!˲q\˞sIC'Np%zV{B ȑ#Y7nڶeeeﯫ̪f/))ã^ 7'gA}}ɾGKAeef.:[Oʲ8ff̊}y1>sN"+*(..nnnV|wrdڑ*4!#JzX$7-LIIIaS .Hߝ?fACl$å{!D9A{1ϋcǢ\#W]?}98DF F"O^cяN_s-LR)#39gF fMk 1pno8šե8M*Vrh?[' 194/ܽt:Xn0X֚RI{7V(oG{zmnU"L WB0::rt:Crzb,} A!5/q܅ =]B/WsQQ4_pjBoXGn )[j춶 *4hdL:k_$ߛ;o,ˑT<|X̘Lcˌ"L ##k{gʉ{L]~,˲ ݻw׀aFٳx @b`yMMMG:]سtI=t=e2IS4$˗m6+)Sڀ wc:/_~Z$8Q>*OOqr_F]O65L02! }XTO@aL&ɦ&Qk"]:jp2wVN:Y}Ns/<q"QclpرGEwd$GPݻS2 a!h*/_^qQQUՖ8}:^jА.<ϛDqul6N3ƻQF4.M|05^KVvhhZI%ڀH {aZ !|V2D1BfF: 10*eYUzu,**9iWհ?ԡ2eFG3JEE>`aUi)9/?m=E7wӬNޓ4pAN$uU_Mn)Qj_V^^Xb. _loqjZZJHFzƈUĚ{ V1" (l"4 dM@$h"@HD2& 4 dM@$h"@,iFK5IKa3f4 &2/ť$ɥu 4&Lo业W]X(IENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-plot.png0000644000175000017500000016256113413640652022606 0ustar rubenrubenPNG  IHDREH! ؈sBITOtEXtSoftwaregnome-screenshot> IDATxwXٻKr4"K,&Bbl1h5Xc$bhb (b" TnwnNqH9Ng<3x٥__ΔIl?@{ӄV!"b-'1H@6ܽh} e¸ф|F'y% QH(45l =@HLMf!dL7:#X;]sI~a5{dV9!`%$qoݜ²}h’܂;WNasG*M{sxw=!& Bus ѩdfH/wT/Gddߤ.But Pdrŝ+' 41}.A=\9ߵ/ò  V]/2csY3V/K0XMMW\"%Z8SֱuJ@9:S9v¾!fEWEJSe3h9;F4ncca|z55x|>WAG,WObFe@CFě.]{[B2r_&>>ݿ@ tu\ơi&Y %hR7πY]QPGF\ߑr(* ٩N/Q2c*ڒ' BP EQ˲ * gbʵs;p| dB*!˧}}ڶhm<):{Ҫ{zӢ{tiG)(,z8eY#Cg{k 켔RYC[R!܎) tEfMD"!!;g˦iEEBQf&9s;={qƋ" Kq#C'iM~fEB, &#^O|䵟˪yg.'ZnCQK~ѿ]&R>Je=>qa>=*,)<}==H# B - roNݟ432\Z5IOxBH0{-z\MLIMƟuv"96s {9B?|j7erܢO^j{viOz,eق"Y';bn{h{ wޡðSs7H;8?J{b=؜"AƳȘΎ59tܮ(b_BۯBzwp;xr-˒ʎ(ۧt5 S݃r*{yF+ b=T =}]H$ bf\NX°:!dB{gJ 8LH]|cwn~w|z ZxP/ɫG5;/ffDB;u3?(U$]8NN(vI r?3s C:6zjhE[Ϲ8Mߌ0w97.|&7t e?+&XdʵˣـY|&Gy? pȫѵ z0e\N\=a(r&7yET{*쁧9@+tD"fYiatuA;?]JJƄ"W]a}}'/!b+cI36odfҔȵwf k'P])B:Ǘ?ޞ`a-O aYkR9'Nο/{cE[n i&6/*sɋZ^ά .vfό ʴoۚ߬ kFQDOOͭkUEHw ֡]T5;a !\EYN:=\zAy>ҵm]|i =JGciis{qW*h+|hk#~-"d=BH.4Ozs-gdۣo|7~>?n?Ҽ]=Sq;/ ̡N g67!^ڗa?Ic;ȘoFuٷځeٝ1Ivv6z譲۪>45yH$ʵ׻NET j+K 2yET^ a=x^I`7)211116oQдܼB_LhlvAmMyb{S7kJk"rKd7 :ϋ7l=(nlרU;. 2ŻOhb0,EQM8%԰%ݶE:216|Zh!=[m!$ɳEd vv5}Uqc~zBȀYܿ@+z\2O{vZ'CkoJS5>_{z%7o#ӳ@H5uoz^eRBYfM|_/WD˾EE4CD:Y[Y422dYVlorBG$2'd鱦#bK%:::|OXengk]XX[v@eUaZYJ(ZAW4XR5OOo+?;z;Qn\Zf^˗"6F2(bcmecm\<'f}}2\_ H q| !N޲fXVOOY37~K ~*Sص@eUZX[X0nli~+AʽA=CG~03_͎T(x^hF}^ ;SNylܽYRCHp-:6};BLq@arX|. 9ϟfHeB@__XAe#ޭf}>+hB,K.Tu0116y=7 4@%2 S~ênJ!D&WȔKB5s+(D-sFVƹ"BȾr F72А!n" \o 9V6vYOWnB!ƶ4zYqL~̥Ј?gk׸|attt@G'/DPZ-χ8yԊ+W,_0Co߹{PVeFf>Qޅ[Yfի[ U+Wϙ=v!ȫNׯEa_Q~Ժjs`VMSS*S֖}𑰰!!R!fΜh}QQD"ōCZڥs7E\/3 !@[d k;tkN5Rk|^PIFzmզV> Vhjy~+3h7hR>Tk\.;\~|N")`Fj}_,["H%t,EB==C#C4 6A>{^PvlMR)Phii£%Ec P J:%%%YY<[y& uK %K.ZXZً ݠן?(H$W[{D">D]qgNN#P.ln! uD"PTsՂ|G4(J( <#\P>426Q}ǎ^SR= mh@sOdvhm,aIM†={d&''ҥKS(ǢV/j|r0Gn73$K (B p+Wƍ50cY(>bYR\\̥ݻwJykE~88 `РA666:::E1 ckkޭ[snqgNi:Lwd_ wXܘ,YwSS{Q Q:ޫ;,E"Qi̬L>h;ABCC 5j/)**277:uEN]ŝhq4<>w)7vŇ&BEǁD%Afq:7rhw̩>A4p e(,0 fE>trEa ka{_CGf<ʙ\'~iӾ$l{ǀN..Φfܤ,uP(ӧOK(***XLiuGP&2EϗGv QyB˲k׮⎽:thܸqrݻU--h&?s|. (EifXa !!z"eY°N^~F t{YʲYO8zz.[7ʲ쉸;^:# f JL-mCNNN2,::J2@}Vã{ךۚ Fz"POhcn5 /ffvv_/XpɻX>}tPƍ_,KB$3g4sq)JJdRiTZJӴO2T*m֭+))}C'&h6fw&9Ivt76 =gn8=s O.3upktCcc{}B5kv~NyZyz  KnܸGazfem{~t]x}Q{Pb4蜺!ȥ2B͊?40GAW?\ނEV3dLn3IqDZ" ȏKM>~TW]JB !>~\9 s*[k 3sV( M B }{<|R)ݘqn_-f&rŏg|u훗ZXlLd S¾߫c=G{ɋDzE BBEQ@ ^5 \*9998{w;0ϟk$ɶTN( X%yI;q jV(0 g4_p|\^ZYƏѣ ԤY (_osP(XDX>Pa rYiѰa9>@M]9 mnN~^h*\ŵ[),a;;_;D5KH%) :sUަf׈B]%:+\y>Ō?7ʲ4o8j 5 ?O]V@uL?? c܊@ ڥ˄?300#@y}|e+]Y7k9?/O_?(vO_mcckmnٲXn;wlߡXף#]>S?6qq ߷g7t~~ȑ=z<;\"*BȿۣgQrseYe[oZNǞyͪ~\QS>w~tU~` ,kW^Bg-;Bne]? >Lٰ~ݪkٽosYO3;tȝvFx~`f>"|gnJtmߔ9bffv3)쬧qc='O._bŊ9|;?\AEuTk^t)).]`lhgg=%J1+W7 7Kʕs+@4gάظ ĝ]_7*hа.z~4lϾ= ҭడ;}'tث_?+(0`,X`񹪌7\R|cDď?жm[]??aoo/ Wtrrӛ0ϟZ߼t&6LΝMLL͛{)Q-^hĈ>…_-p 6Dle0kfo6:::WYFqoڵѱ\pӧk堕(UZx[g͜spolڴ:~<毿ob^]Z9r$?Z`~̟u۶Gmo˩_>k_F~X^ٿ6@BᲥKf͞MӴr;w;u 7;u u6ɉ[iԨQ͒n=55unMml]竈jΝ}>/^Xa{_͚ecccڵAvmʪ[TGݝ_733H$rP' 0Җ,];v?ΙղeKHdkg;{WvD崖-[ttZl9i\1}G+N+V3͢E_{yyttL&Op)reu>BBZyںuQ^Eyp!"z.s6>g?^mii0c_gia1lG|1segee=fúuBanJ235Am* U[A't-ͷm7{Ǿ܇%,R~<[z{y6>6>>Ύ65J&z^}ߟ/iѼs{m;ޣe˚u}{vB^Z}{ĉe ?<[>rGaa5REQ/37 }Qŝ9IQ())ި&/3 {p^~D7B:mEI֐D5C&N\x1_8vYs\IH(˯$$̚=gܸwTu?2ٝwTҞ[~ިM?NK5{NpPPǎhGejo.ڻo_DR,6|:Q? ϴs}0VrH(l}+l޼Yll\i\oܸo޸q_i%11oڤʖTQĂ ,X*9w/ |0ՍOr޽;wqrv&k֬.Sgϱk/\y.]6omjj5#?Yȫ͛7qҤb>7PCikkƷ1OG'K򕄙^N=2$tŪn߽+W(n߽rO\\Sҭr"핫 \q˗@uQ'_\BB.t۷wXXhEUs^|WpP׺O>jַ@ 5xv]}>Ճo9,-dR==MR5f˼MTso9P&ll-tD K$%(ϽBk=1Lݺppt|^Pp R' BMǢ M)9B>N(H5ԉ+k GKO~]TYh< @!n9|@i2a35; ~waie}2/^޽Gm4.cwذCu#BضL? y}B%^me_v#hwk۷O__?t`_mjڴ/_xs${ݧ37dRf줲}9:7ܵ8/\.M=zW=~6z̘-Zڵh1ng/\PAlmm-]Jٺ !>>3Nͪ^>gkk(+-400ƆmѼ9!ϟ?曅}Y(;;;77wń)'o3o\]] P(w7$A366&iS 9c@ ?+fLZYZBݻV> ع 6nzI]+ZVЏ?G֯ݻw6۷;|`->Cc}N<5|v/wONbI'4M$4@ݻwCmڧL&ܱ{\9;tJ-VРT{~+4@9|@!n9&VkeRy)0uh5J ӫa?xWٲz\IIIʃ.fgg4]rrraB̬yM7fWoTq59yiiFzӧ{;Trt^<˚ >=sƦbJKϝ}߶~uh/̈́ |~Tc>0Of]4ppr0T9qƲl {D>a@iY>'5Z,Nm9;hP<W]UQ?44l-y[w ~],+o֝>ʮ]-[1v:=Pgo:*#""!=9rdf͚4i2bĈ\ٞ={zդI-Z;6//JNNoѢK޽]=z488ťM6K.U(U1ddd4dO8+;5B}}}Q\\]PPPU@#RSSSSS/zVWϝ>}СC鄐#G;׮]sss[hl}ݽ{Ξ=kllW_qcƌѣG|||rrҥK_SNZ~HNN޿;wV\[n+1ܹO>! :tΝUũݽ_fffU] NGٳgjjrajjjϞ=G7yxers\RSL:9=-o{{2H$^^^|{Uz&M233U>HJJ˳۴iSeeTVZZڽ{Rn???n]u*NesuڕapРA\U]e OV4-/߯VKPUT%'o?~ߨ_ 'Tsuu=z4/^B`ίJ$n?իW߾}}}};wܸq2_~wDi9;;ٳK.ӧO'\RWW7&&ٹ|ʯ8qOlllZZU=x…۷owrr \n] ܸqiiiܵ]ݪsεkwݻWke85BȮ]FU٠rLZ~=t萮Ό3f̘s!;; d8u5>ƍ!$11Qͽ!?ѣǤIk RH(*3;wܝ;w/^YZZS Yd˗N٩ӠnSRCK9t萓ce-]]]m&޽$PmĈgΜH$űNNNe̘1cQQQD"ŅW٭'"w 9BqPPݻkxj"h̘1SL֭H$RlPGXV#:xAGGGշO|nժU5k>l0uv5jڵk[jնmM6iйs爈?u^^^k֬f0gΜɓ';::y^Ν; 2,9C>\A]aQ8:88:8n2L=E BƯ]K~^nM_vʹ_!ǣ֮]@v1}^Z*yW۶l0yJoÁ}{>=h?~oU6HOظ>{eee-Y?t jR|bCC 64w*cYWK:}cl-T|N(2y{q[k M3BVuT#;i g,<_ͱDPot|Hyf1ak6azja,Nf-tutؿ%+ ꟓk;PhnnީK{XR\\[jչJQ 4kּYx Ô"O՞*p) 0v܁}{.x]ox:26Gh:wE@msڭsx'@|@U;#hsu)h7?0>ݐh7@[K"x3 ݐh7s ![9@ uaEb8..N&ʼnbФ KsP'ZVXkjj|rа0uAs. Jk֬yrՐ!Ccǎ͟?’2f͚ŭ(EFFEP._\PP(j,,,rrr!SLQQ{pppR'A@y@j[ٳgYYYVVVϞ=+Sۮ] DEEUVlJΝ}T@J`|EǏ:uEN\5v.<<ѣ4(vgPfΜYXXFaY(Bƍ !\Kcc%EEE" 8-msCP%--- @KWW4Lx0vC>ݐh7sM2oxi !!! Ô)Hsuu5rhLSNQU9uN,X~ ko_)WEFFrU:uھ}rѣG]\\ڴitRB'''hťw @{U;֭ɓ'N<ɾ/֭NlllƌdɒUϺu֭[wyڵ{>O?mذZ~=שSVZ?޿wYr%W5f̘=z'''/[l=eMvm׮]pN ݵkWgȑ7nHHH(S/YWGGm۶K.ݴiWaÆK*k׮]jH$rppXbEdd$W֧Occcx|J%pM!B￟;wB!_~]1u[ڷoWuЁ_~z޽ !`!?W^}ܹsƍ7t .n2ضmcƍ?NKKKOOHOO.\}v''up Gr)ݢE ̛7oƍ|Iϟ?o?e˖ܺŋ .ѕ?_>f͚7JuVTTf!r„ ~-_2zy]zUP\zu޼ycƌƏ?wDjܹ^3fXxqTTD"H$qqq\Ո#Μ9#HcccT7NQMv>|;L81##C,O4>BBB Ǐ0qYfqU;wXjiӦU5jڵW\k׮?P \uedd(o *ke :tС#;ڵ.=zѣG"h|@!n9|Qb8..N&ʼnb*q|I߾}e2ى'lmm=XU;jŊ˗/W(/g˖-SN511Yre4Rt͚57oTX B޽{ VZhA7}U^Ε" IDATj9xGYXXBrssU76l`mmq|ʊxy!z|QϞ=ʲzƻw޽{7!o߾ (S;dnsαqqC"\9xG?~|ԩSN=EQ˗/!<iGV@( U&֮]yf>ӶmN4IA+̜93220>>>,,²,7 ʭPŭdffo?vs1ǎ~l^e R7稟I$M6EEE%gϞ]lYBBBFFr  8p̘1o<4Liii%2[+,h8z+M*9B>MwxСۻ%W;wnm۶VsܛHxzz;vS'矎;VO=Z9;|>giiyu???5zjPSos>G ݹs'sNQa666jv"$>{󹠠7o>}LaYVGGGԂ< ӿk׮~qi'O$##`-!C 9L jSW۟,sAAAWU|5s#ǧ%bX,+p>|x>}cՠ RTRHTL2eʔ)%cǎ]x12}cǎ!Ҏ|.0s Ee D"Q`Pj9yduUWҎ|.Wo Ny'x!n9!Q,ak+9|@!n1hGh  zUk׮MLLu^~i۶m'M~Ϡbqdd|||XX |Y|ʔB򬬬3Tմ#9ve*k J?G|N"lڴ)**e,X0p1cW?phVX7,_|ذa|)p|bױcǐz@5h0+((9sٳhVCoŅ/QQڶmT3jh===R5kn޼^;vlBWWWn BRRRj'V#P^^ޠA7o>cƌ {/_JJJO>}ر޽߿ѣGϽe,,,rrr!ҩS2ǎVTzU[mE ·`f̘1ɳgϮ0#XZZ>ߍw󳴴~rcooo'''ooQF]rEիuqAϞ=&XYY={L]-Zznd6snַ݊mvҥ#GN9wD"dO8qĉyؽ{~wӧOKBBB/^=O>YjUBB@ ;wϵ|˗ׯ__'Pk# RGRTpݔ)SL\b``0vŋsѣG=*o;v,^ vsA.P(*k zUO:UWҎ|i@T/Qb-BS@)4QQ$ P K570-\AD@@2\-w45@y^ 3s=fo=S/fAAVdBAAxAAMs  &9AAyzANJJ8\5  s  &9AAy  |NAA"1!>qwN:Cbٲeǎ+8/OOO[[[???[AA%ys{焄֪Uӿ~>f͚;w>uܹs#G?\2uTWWW//// UxZXXXb2wmoogϚ`\\}͋_| _lٲmBBBAA:ys%quu۱cGiW򬭭srrzzz0/88... ^AAS=|+333((h%177<.>><##ήxݻw_xq̘1϶ccc믿j6~AAMS>w){#Gxxx122 zׯ^tRFqfAAAdfee4klʔ)k9::8qkN<ٳgOf͚bcǎ3gN ^LII~JJe[E/+WXXXh,X 99,99944-gGj|||t  K6`eeajjiddԧOuj+9Vm۶2Wޮ];M>,YdGGGՅMLL֭[7l0& "甬m6`???##)** S|V\tttquuU]v۷1 A͛7ׯpHH_ݳg*>VZi*ZAAPAf`eesϩ_mٟ򊳳spp ڂYϟOKK[|yŢ֭[5jtƍ ޺uKuc,Z(**zmrxnkZZc} ixjhhX|9++&M/bnر/^;vJڵK,_eYUϞ={LLLݫp5ꞝZwW>9m. Oӌ J+`ddT6UotTLnݺΝ; rC G>KYA.]ԩS+ʼME'r;AA}  P  țAAMs  &CJAA>  |NAAD>'  ob jԮtS|y)8+ݵ .*f uJkPfpb%&'WQѩ\gH,[رc;O@ Om*Oz)ԁJ=Pʩ. A[e}gxj4| [ahՆIPA{Kx1U|#g jJ4H0D1dgϞ511),,T8{{͛k,Ē,^xɚme˖ mV0ë0OdH [a1uBԅpjC{x4iހcA`dH\rrr\]]vQZkkI~^^uNNNRRR^|''[*lݺ޾u%VT `۶movػw-Ztq˖-/^xW[h1|7O+pqqILL,YA*e_C0Cmʸ Bc8K ;C 47_w 4` uMҴHF&ϝ:uJ1<<ȑ#*EFF*tss^xEKK˗=:--ժUUT 5-]4$$w166n޼ҥK߹sgzO*7nP Ae Lx u s=sFFF˗/733uww{nPPZQQQ@TTT߾}iիWy󦡡sTWTJm׮]rrK.^XTxΕ+W,,,*߅ fSN8%HR#蛗!-ILl|D&"""LMM333N-wwwe|ڶmte}EDDnذTQQ.o8P5jTF۵kW^A( | : +Q~+$b: pG`* afe-9sնmիhdy666EEEaaaϊ111/^7n܊+ƍ_VQ.TT| _ .|駊-[ 3g&LP]E24}PށRSya:=| BgpŢג,]]]կ6{#gΩ.\9r-`kk;e//+`ii۔8s̙3g+Vox-[#F:ϧ-BVKa C rd"̅nPeʆ6?%*bnرcǎ-~v֭۳gO[8p`iPq,D[}yqvۧ?V|5k8B*MYZH4n'F=X ]\N@o`Oӌ JlddT6Uotdw޲ܺukRSS T100( ooۤDKa0D"u0.jx mц\/R#st٬S;S *҂ OZ"i++QTcW8,u0nB8N+u0ړ耲1<: |NOԭ*qppPնdɒ'NH+6 .+{{vA( oA*440ba9|gIDsB5ՠAl͛W@! 6Mi! Qи. y_ !ށ?FCf F7/^a.L:= 9uVFnܸѰa[nU)믿QOм VdNa;<{sؓExA#Wm9;m/u0RPMٳ' `̙{LS|K.|N {.[!ށFиzU׬Ϻ \FR"J`Pu;w(ַEEEO{P|000x4A  b bDB%@` ]*BIpz̋-jҥK:u*~E=Nn6K>F[P10:UaNp\`$"!Ae 1VH>(h D [HabԑHD PEKȅ~ dV:A4to UWIX,xְWw y]͑\bB|x uIJeˎ;VY~~w c?OvMbiIԩbG^nq/r Ǐ]5AxGT0 pA`*F Zښ-ye5~}yr6\̹s:ř3~l|4x^I0Hn#ۛ8'$VZϟ$5kܹSW\Vn޽{O6N:[SNuuu211S.5ltK/q8Mn.PӸ166 ̛or))\&cTL$q`.ĀL`g][dgٳ;Gj*99ӨMб#4iBZ?Ȟ=8@s}c`ԑ0q:G>WXXXb2wVZf\\}?~7G0aZlikkпJ? h]3x0ڱgh'OP#_}]qr"4L""ز,mYa {+h `l6C0p nϒ%<[x-wgR^~g&k &Kˆ2芌为ر:W򬭭srrzzhh$u$"|Ç^^^AAAǏ/]|wvvvvvv%ʪ[n+666*~9ɉ~"2~U++S{72IIXAZPCo٨;`5OxYHJanάY?Ok̚hbBڴaPdb,-5в? ! jJN?%8ur,<<ȑ#*)J"##܀^x* ,裏_qFe-x]RRXիyU.,pc*1 8v~4ߋ 0W0:zxEHT.3fp4/o3p k|m!,^LÆ沈 ,r T0tB6\AAOlllVVVHHHfͦL)c'_\vɓ={j,!c wQADGiVamZ_WTĮ]S0>Ӿv{,x>|;ԑPӴjEǎx{sV[]adɓ|9ZT]fLRG";aRG}猌/_nff~ݠ SSSյǥGEEWYXX\z«WNHH 32zbȕ+W,,,44B9ċՄ1_|=Wy11mKd$qq,]Jz:d=`"*8 elߤ mے71b,ܙn8v]u{bRG"SX mDdVVVFFF}Q2Slڶm^ضmbcc7n$ڵa``PmHKcG3+.:::($''_oUn;Wܮ]5ݺurԁ蚑3füy.99G|9|Ót6D×W%L܈6m8r6mxM֬ы Dbbx Ƞ{waҶ@8xӇ!lMSvY"`(l휗GX&SڷbHVD%yxYP3CD>'z79xpFB.dvtieA)@ԨҥЩ :wiSv/fhS! (,-}'9Azȑ#G :TꈴHLXXP*'&''O>hVw%Ks4֞17Ӧ ᆱTؽ{pAWխKl,5kһ7okAi2f ѤТy0KC %2C#yt-]&N8tЃ*~:tM{D룷B/eBzɳKtanb KEc eȁ! zhfF\'O2f Uh`ulnٓ\[.0@Uk!.Cԑh]fҞ/=ڴiJ6kiirKKKշ ={ve4YE`|wRɜBv6ݻӱ#WS2, b`; !*nGj*FUdNa*&Nd>*u*d pSc eS@-[R"ŋ)U7 ,HNN633KNN U}kݺuu;vڵkh._0Lp0=zT+x֬bo7#Q[7anEg{aWϓPl9*%d}̺>j֘v ǴHs͏?VdNQ]Ջծ6 C-&<\4@\bB|nU uIJeˎ;Vq^~~~,hܦM*=֭[5qFÆ oݺ֦M o>^{xGt2,%%Ȇ.A>|9w8;ҥ}ػYZ --wa.*U&[p2Uv\i"#]{ԉ˗Uad(6jz۷o{{{={Ĥ<7onnno޲eKffҥKwI"-[MH;J`.\Xzf ڵ;w}Sgo5jŊ_}O٭J9Mv`n_IC ȸq*,p\&A1n +Q9 iHeo lMPB'|D999qqq;v(bVJ^^uNNNRRR^V^/Ο?Yf5klӦ7|⒘Jk6lHKK[FtRN;w|e@y&쳷ZhaddԲe۷A8W w4!6 سG#"K8:2nJ;ty@UXyV(&}J?w.M2d L|}GL uRF%Tmr>|啙4 vvv'ٙgdd=~,/_˽`IИ%KiϯCgΜp'0 ^xⲩ)۷r%~+Q`zeYݟga'l 0 wƌٙ~ȭCӧΝ?_ [! S>w){#Gxxx122 zǿfϟ?nݺ5kn޼y;ƍ~:ݱcGkkvS`e 'N0otQy}6m1a4Q e[ '0q"}Vc: ϻhQ0 ,0JM>WPPҬY)Sxĉׯ׮];ydϞ=5ov^XX~gFEE:ujڴiZ}taÆGXYYEDDfffGZ|Nh۶mzc2;tPTBv:O={FFF>}^>|ի޽+u\tc @v襐RRa| xTl'n7_~I DzqqabU[A)mV^@##6ϳ)** S|V\tttQ0a…  ϟ??nܸ+ڵQ!e޼y{m޼Jb͸]ԡ1`ыPٳ1s&KH;}lO@.u4B%|vuuUٳssjj v 6˫e˖ hݺuppz'%gZƾސ:=V8poCyAm|ffR#TQ80??_yBG);v']wpp=zٺfCǼ0"ؤ$obK>ɜ>?KP77cG<*uLi9!X}wѿ?^"|ioOidd)骩D^AV?#?6@wXuX]5'F`VKsImˊ88 Q ѧ|vq$$0k'KP#st٬'j`zĉGFC*c{xS=|%O.b[Z=U>ь[lJ`[I/ L?*_P:ıcU4@~fLI۵>35Xإ\X04 a/q'5;vd˖'oL7֚V>̀,_N۶&TE"ݴi{WF5rHQSL7>y4vh M`eK3)T::u0` ;!@w~ yy)( n-[T8x)S2~=^ҽ(6/v@N 7ss&NwtP:''Fd J7_h2aA7#"ع͛< L*As;x𠿿_^>},ZI׌~GGf*0|kc8^j `f^|Q kڔ :*6Q;hDx ԍ0u:UQ U'詢gL6mT'3kV)r|`+TgAKRwqsEˁ sqcW5`%48[#9 ٺccm&fM-:Qv9'9AOEKժ38V.0bHzdC?/Goh\[q *4mJXCSʕR TDr*_ f\D%e, B.TAW_78%-`kwX 9BaBBfhw߱p!ekCG!UO *С̙ԁh{Iay63o8/4iZkٲmB3{ biirKKKշjԨ1cƌ+W<|P[K1>õҼ^Ynb0hD *i*wSJ/ccp*…ܺEp&HZ*w ys%quu۱cGiϻ˳IJJիuVe[۷nݺĊwl۶SN2,,ήɣ_P={l޼y͛WP웚KاHC,XlffˤgoM4iРANNNZ\qzBh՚?><##011Yn]hhhjj*pѥKܹK.%VT 姟~|2?.Zh111O^pͯ~˂ K,_dS={{'N(qp{nn O@ =1p4 w)#Gxxx122R[6++^P\\|ѣWZeaaQZEPߌ3,[lѢE۷Yf&M,XP|q7n(WBi4h ܼy~o5i!77… )Ms@C1Lj1QѮ̞<0jt=a :b~ X^-q QVF&+((񉍍 i֬ٔ<:::8qkN<ٳgOZ{{WWɓ'mVEEPy ##W^M6}嗛4iҮ]r&֭[56lx% ޺u֞={ׯTSL6g;୊!Znqe]6d*.h173}:Ok0^od=`|G<<Zi{}/@6/_nff~ݠ S2`566vvv[fMڵkK޼yܹs+߅jxǏ_.]|+Wa^j!F5dϞ=&&&{U}+)) Pl1ܸ6GZZl,?jxMεkZrZAXYYm۶^z_`ccSTTxGfcch/7nŊaaaƍ믿J~=Aッwܙ2b]v=5s_K.uظsΊAPgo]z[nƭ[]0|@&xh=gͣukUԫƍ.fyB_0mY:ր3袷-[HKc]Uyڠ)2++hWWW͞=șsjj Fgkk N2+//ĊwXZZ*62u%,,lӦMof6m,Yᡸu޽{Bհ\!II^dF"S8u3ؼrNsJd {kWvC=]uZa~%TGϞ0 xUf`ĈW<·044W`eeT|ucǎڵk{{{[nϞ=o 8pUT @ű[ϖyJZx3k,oooq8Dut ,a " "\>}1C`R)..t [`,]C0\ \iw0bѴo]+##Ù9?:mG>4cj###Grz=$f;!^зΰ>mt^T$$P4jʕs._:@5S  c:<4a4[z6T#g B.Aga<}XD `"C?8,Y7n0j6ЮwH|Zŷl-$[AɚG/Y |i$ IDATd1ȗ ~~TlX fC*C<eRص>}k>PHdy:mpCGNBPPa8޽KZ3n᷷CBV`<ă?HkɜS&MKFtOCxCS0's ɔ)lڄ\Yw6o: P4pt޻LXRzJn.Çl&00`~:b H Zd\¸rӥC>~ <ΐ ބ̎RǡCb|Nd7x ݰkMBF`T^]Paa|%'OJ a=ig-o`dN!&{YX8[׮|[u|N!WZ~ynjemOpqhDƌT&ii~0p=oLr>n_8U:]ܺ%u(%9A*i $ án]aWfծ0 K-Z0cX6 H9xm } ͅeᇬX /H^ !9X9 B7CsX*Ā/ò6!. ^85MqhĨQK10`ZBByQ8@ {G55[SU ruf8ƍ^-ukWϤC X;^ECCCGr!lٲcǎy- @D/C&kpA- p\8'#TNjwv=@30_[*''tfBi CG Si /A-0xA2WYpO1Çdz f6BWχg.*^Fw! vTnuYQݛVys{焄֪Uӿ~>f͚;w*~|Y5jb //He˖ SAA*Jn})Ν$%U -` |*́쏭 c0sŚPNV)3pF0t gzza3!F-DX.KBa rVWWڴJl s999qqq;Ja&'':??_y%//:'''))Wǃy?ۋ/hhhK/M<ѣʻ...{Am<=Y|vX -aɜ=?C^=.Vl-^LL0v) @PyŚ1cVs> ?~|e⋍ٙgdd=[ƍ=zP^W*ǎ|a:l}{9ya3aUiڔٳ*UxxC-:Q¨מ"X v ՚3nlzNNܩSÏ9r^⵩Bdd3K---4ibccw/Ryq7ncsAAo[%Pw(òvdSi]Pw*ymBN_~#Щo|.g |}}}||bccBBB5k6eյO8quڵk'Oٳ'PTTdd+W\tn֬ٴiӴ ^^}_K1qB*t K/鉹9 ,.A֭Tz&lU`QSa4Dҋn!$%|hfffw 255U]9** ۷o͚5 k׮=[FZZdr zFF]KMeJ֮Š3hpIU? ZRƍ;OO}=Uoox뭒X*)ޅ0fĉuNkidVVVFFF}Q2s{m۶UjNOOo׮]b􎥥eJJSRR,--U4hӧ|!oVVV۶mW^``/LKdccSTTSlȑ#>eddx]5,Xlffܹs#""$ Y㣏=Vօ!C.L̛'UPDGs ~Sv@^7W(5Y?'K^CZ#犳Vl&77ٳg+.\PlA7lذt֭[4SQiii˗/CsppPlgdɒ'Nj*,,rSMlRqƏsB̞ƍtJa!{wD?p3I-/h+VD"K-U RE9 .ZtUtZ xx J).=i6MӔ&}/֝<̷i3SW!2KfvXV;i۷^xz*^0@z:'O_ "|#jfپBCBBBfIsԩSNZ{ZZSO=u7x}OxxxAAPXXvdɲ jF#f}K/m`B ?VO9kCrp#|0\66t[̶r%_3e  LɓW혼os͙ei7Nܤ:Otb*..ˋ,pJ$IWZս{y۠Av-8/'ˌǏ~Gp#|y3tWh'|2xNR;!jl9s8[osIC\_U\cǎiӦ͟?ڴi;wt~hҥ ,lAAA T)-2?Y}N6A oBd(*b|cs#+KvLfTnw=>`UK|NO]_غeT A{=vxR/*zf;jZT ̽y9ҰZA(Vؼ$S;|A9nzf`FT!*ٓ ,L MM@|P/ZE|ҥ?pfd+hJQy ʥP@'JƌСs/^clrsO6jωX#_{\mѨ_HO0*Z4曹rrUS5Y`(>#?#G~s;W_el \[b<Pؼos;?ھ`bPPQQQJJ֭[7nP=zfԣG>hȐίrq.]\veiiiEEEbr=σ\g0~<C. .5q 6x+jǵ.-ZK}ѼŬ\M>FЦ|fM0رcammۖqСDgedd<3?={{1>}3 >7=ΝYk-*ye~sX U$xҋ`f.2g zr[`2` _pu_=jݹrofܸqS8;<55uڵ׮] GGG; 9r䦛ndYqBBB*+$׹fbBGwTS`4J  ρfwe^^xMy 6u6Vw|NeddL4iԨQ}n:`ݺu#Fbbbrrr"5S4;;;&& a1?0oo^Jgt]Po0ޅ87T&phɓIN[W2o?a)>ϸ&o3zꀀcǎtaÆr֨Qٳ{yAh{?wW\|ωgkCȀ5k^.j@ee}77.[l wW|)֯_4cƌ^ѧOYWXl+;6oԫoٲ%))g Qrx523v,7ڛgXLw,Rh(<{/$#UkK/o'Yg!«wu|,6lؐ)|޽{O8z%۾}) xuZTĸq5}W0d>je Ca+. … 5}…n>4osZ4r ̂i64M:533sjҞz)C|'y=a5 Nx*;vnM_s,\HYk.Q &[6x“Z3K4%n9kpU} NJ7gq\:npRrt>I}o4iA'nf͚~ݻwѵ_?䤰a􃋘 222&&&***&&&АPZVVVQQQZZZUUUQQqdy5|b383eppVX:.<ұ_bb%4((($$$,,f9s ?? ;; 777''N/! V\'%\̆o~hR興𰰰vڕUVVVVVl5]WӖrV y v*#"" 5**+HJJj߾}llb9}tnnSrrrN>}ԩӧOgeeoT1v>6ctA nDžz5>PIIF  ` Bjd] PWcZd wLI,Ŭk䭡g^X(!$CF/UKXdF,6RVIUUV|TSSj61[U|r~gL&\hL} nx߾}K.$:::>>>&&}Fў(OAAO?<ťez_x#oŭ-~^Kb"}^0?$IJ2۫W/{\V rrrO>}ԩ,: #[k "ڨl6/] >?p}?ψD9E#WjlZ٬M:[NٶUjmUZ+rZ)gu6oJVFolU ($/$E? sY%5f,hsjb`5盐jX4MJ'#I&,&IM+6khZcp:[$rU2X5`laj VAh V*mEkHzF_6Fg#t0!Bg3錑6KT`1[ͧ-g[+~S\]y&\Fku=m2yltkXБPSHI3i _Y8 Y> G68D7#~ݣtW^ . JkKk*-STTc*1X̅U5g?BV4@$Y٪ͬV'WkefaY4Tim&ͬ6欮Z#Wi-NVURFhՠ/t6IoEg6 d[Χ5 ȲT4r'mZ.lmˊ IDAT5֐5lf TkeFhj-V fͪJ+hUJTlՒ\+6 *X5+&Т14zoh6MEJzdj V5?t*Y3"t0?c3D a@\d5՘XLZO+T-՜E&TBwYpj#g,8WcUX*28Z v·?*rI5Fw E kXL|b.6X+ ,6) gOf"9 /(( œrR8~a41\zibA&JGykA c57{Es &p! 8v`_ dNEd"(cI`pG %ݱHGEEEFFu[€}5h5 fYmVզ֤m$IFhZFhFh4ffʶMF%l$IH $Hee$$IFy&ɒJ2(2Ȳl ٷe@|.P];h ~&2$!Do(ABtS@ס|SnHFj$F6Y(o\yϹ{gٌd`?羠ï|8_W疲,snCF>-d4' cQreYyќ0"~sBo6$- Fs9'9ڱcǴiϟ?mڴ;w:?0믿*ݿwޭ[K/y'O:y҇yyy[,VᱱJ6Pǎ/FsIdeeeffffffee:uܫͫa# @c^G邵I (Fl6 VeYt5fŤ5Wij6j X5U4V5~,=Ir$lZ\7"Z֘e JBWiV`1Zj֦4j,Y1iU\*%RrVsb.*6UWsZkƎtܹcǎʗԩSNz߽qʨ:DGGo>d2){)K BN\UQ]UQ]܁{RDIٴZ&k H6fi4~%m6/xAW I49$M&d|*LT*ƒx@? o>>>^c{y%UWW+c2rrrN>]XXtۯ?{zpQ!W옘ۇ(M^YYY|7[NNS!f]lxe9gr=]'K*ڌ`q.#.<+ ξ03Ku"X6 [R-[`+QTذPsg8|kcc=w!98p`=  ZK.wheZlllLLLϞ= CgΜ)))Qc+L&ٳg-KII,ʶZ688 Si22BCCgl?g}s-4Xkɋ.TR<@|~k>] 5gX+o߾”}qqq{GE畔(WTTTTTUWW+={f+-mڤ0F]vAy۵k׮]pe evȈB%U?(W¨Fx%9)=U*J5<ߟ/roD>'B]K _]]j^WH&LֱcǠ %߲^ZV<#*˲ZVRRbZKKKM&2IUyy8:uJNEEEk_if'> /d g/d4# Q{>GK[2YƑ#G*$Oaaaʳ֩Svڅ`^`C|L*%_T Rh>qℒP*OxAAASF* E;#Gx5\R28{T37|n۶IV;8)qqq_-[vAe["?~|߾}'O얐W •kɹXԙGQ9rnbv^ex!^Ր _W5ϭ+QDPg#qJ2^}rVT27ǧ[t̘AcXZB{Qos;?ھ`bAfy3 VYYoڴ6ٞ={-Z~OsIII0ahl,<j7sJ֓Y+t04- f=RySH=dYޥ-P0z5&L஻_Fs|kZ&s%%%iiiǏ7 'L[n߿Ν=^|ř3gvڷo?% Mjt2c#iO<~{=USj: aNgC<ܹk``,HmoslݺuƍN)}ѐ ;Zkԩ׮][Dٜf׬Yӿnݺ^d2ѣ~xʊK_ޕ EbŊxeoΝ;gf[nBB=50^ zʽnySG;Hz:s渿xu]`y^ٲ }tWN9tPbbb=//ddd,]t۶ 7xc{ۗ^ziӦM ]r۶mu.JI'DgmݺU;駟.Y;v͛^x^O>s F8SeQYWtȕ={:^z5҂[Xa<<#޺^%ȲZxUZQ5GZ#!yB&L`J۱)S׿p!_瀄͘1̨%%%m|rAf:p@MḾfϞ=qD!eTlff?|=zX>y$ЧOYWXl;%\k>}SO=iӦݻw;~t˖-III\ZSC,jGrVml'),Oʂ %[U;.Ӭ?'dxl9G|HHHذaCJJJSO>|޽{O8a3qI&u:uk7Lwɓ w&LP֠LMM}g\irsX2..N9nРA+VXjՕW^yW,]tܸqʡ~m߾}Cm4Ns kv$-';d*uҸr_!ϕ<ౙ [¬Yt 1_~qkXy>V5v4 5OKK{ꩧ۱Ꟶcǎ;G9re9N:յŊt,~W+/vxo-| ;imX S;f3&4 L&OxS;S*V;ZNLIb*7Lps͙d=N78)z\ܤPWAu9px jy4:F :};Soڵqǎy28ݰt:*^^k 2O>i-[Fh(w_璒8_UuߙzzmVlwa 9r[p'k'DO:Zcԧ[|K9uR}8?W >W;wn; //I,[x#>>|#~"u\1>ڑxa9 mu͖w/cưsF<NW.vLWCxaXv\w[r<F/|o< . +BQxY oZpSά]˂ ɜM 0$Y |Gh(}Lj HdePR!=}NZTjT;uia lՎsoOb,a.o_jڕn⪫xUƏYuc[MW%cpoN㊲2#XgzP;(-{8?mq"9, pmY@YZ㏳p!#Fp|366GS[ 4nv0*oHR;O۲-[Z  ;/T;6Fs#aܭv$j7Cb+2IC}TW^`Ta6R;kgD9APDC[]z [(l(#iyZX u# mN\\ݻv]gF?VWW1`M<`ٳgѢEorΜ9)))&L0-p9/d$IQQQyyyŵ9<$I7߼jժݻׯ|ݺue]vÏ?kzxOz,npc`8서jG"ej:LJJJҎ?n4Vǿ& ֭[߹sg_|q̖kڵk߾}?v1m48mڴTҥKu}'iy]?/vSVU7@ 5h4lyMBCEEE)))[ntƏ>hȐ VZu5tiWfvf999y͚5=k֬߿nf}dѣGQQQXK_~~N"ܾ}СCtrUWqҥ˘1c _[nپ}{Wl f̘qח]wuӧOV]C:x`II?~wx.j]C%wt ԎDP0@7#qojG"l &;v,==]ۨC%&&+˿KFFҥKmh|7/^w^o}饗6m4hР%mۖQrtw9k֬YfOk׮<ƍKKK;tw}w饗Ο?^U>}8[kԩSnog0W!˴[9*yaljG.v|ѣ7+Woƍ7eOϏgݻ_޽,X|:eddL8q߾}SLyWcbbRSSk7]655]/ِ"|饗-ZtΝ;/[L'\s5F1888==>Wפ -nG^#q/+Q;ovhTs|bL4-ZԩSٳg^,:?o0`ѣGտiӦ̚5gϞ@RRÇsss#GtMzɆ4#G333ǎ{eu̙3M N4V;fޅWH,l DHC3&Gs:.###$$dҤIF*//OOOp᫰Pʇz~Jou֍1ቮtI&k׮]YYYna@vvvLLG./p,;J`V;ۤn)ցƈڂ7|HHHXzu@@ct:]C5gϞﯽ]W_%$$??^z[oٻO5ʞ9zI//'Oh:T{dx7[n p'|v$wzxYbP wE`6_瀄͘1F%%%m޼Yf8pgϞ8q2*633^|y=VX|ѣa L|ˋhom TH 璒8_UuߙڬB[P7;uW#QUp 7^\za o6x&e F>D&x FnԎGރa Ԩ>aG`(o CBe0xR X E2'4OptO ^`dN"U!ó0^S))[a [ c0}!M"9A=?B?-~pk V ހ0;^ D>'8 !7 05mKf(k m =4yы5@\)f|m ?CߤG?]H0B>a#,obD>'B20½p;gZ 891 ]]gx =p9lwwbD>'Qx5a6̂k+7D*Mc%pdװ~6| x+g׉|NZp5S&$_+N;$+*y UpҡkaX R%V7lsR@NJvD\\}e˖-G$0  d(pwBju̘̕1#==K/Zϵ'R[n߿Νs/̙3SSSڵk߾}?[oUqLM(5С&% g MEp֞0 `UsEEE)))[nݸBqqqG}4d=zf{ԣG;)i6..nƍ]tj׳~: [nپ]jUƌóϪ/_S x2e˖Ç5qС+B(.ٱcG,{WVǎ333,__[<+:Բl÷l>ՎcƌyԎ|5l&L8vXzz]9СC@DDDbbmw۶m[bbbDDDS\,3{ z\O>p^qqqwﮪڽ{=/o\J B#|);z~l\o7nܔ)S\<=???::ZNMM]vڵku+ү_???s~')ߵkWHHȮ]/^!<5AF9bL4_]|y~-ZԩSٳg^,:ݹ7)))===77}999G馛JnݺٷCBB*++ -jkK>|CZO?4iR;?l iŊʇk֬_ yځ\j;v4^W\QQQU! ګB޽Wv3s͘1EIII7oاOYWc}qr%d˖-IIIMpv;vL6h4N6mΝ5t(44t֬Y[  x瀄 64Çݻĉ=+*w)55u/r8j%'!]>|xrrrHH… W^]ZIH j%'!]jhv*RD\ˈuD!皣@urI IҊ-[tԩB_ݕhUIݻtԩv_w`0~}]"!uFCnZwIHjݥ׵S.5}Ns"kժhVkXrReBRDGG/Z,$(yR.9 I]j߾}n;սKCR]R~j9sfx Ihҥ?0oj}վZwIsBs|9 !'[&$; I!;Q]r]ߥ~3fL*ޥBk?jԨcǎީ0G[l ~ע]r*?j_N i|(N LHLHNuw)--m>\r_|Q]]gϞxj5?TO |M&ӎ;wb!}.9 KRv.It>}j޽IHj=Hv#Q6ԺKNBRۭuUKMj<4qY+g_b{MC<`ĭӷo9$ m+IOZkM[biAAAMl"AA2Mm  w[AA|oUd~Ut '4m;h|-$&|O٨9U/U  V>W| 'g |~ZWu{r=YG1}aٖ:ZzMYSA6a2WRR2cƌK/f: oߔOTT/^WuÙ;ԉLEuΙ.1?>AAh;>+Sz`RRRnݺqF'M%&,4;j5j觩s[Li)cnOvVaSui@{nTUVYc/}W?nll|go%55r4n/oʕ+_xg}6 `Loef)ÙN?<~xHHHyyyzzzaa40ʺ}6EQ7nHIIY~}kk+EQɊaj5EQ555֭`$'D"Z* kGs8aYLLyYeee\\5%$$dee}ϟOɭ]vŊ<!HʊFoʂ=<<^yFr|.--m׮]}}}F_~ζ殜ʕ+Fs֭rʑ)݆ vQWWg4vرqq{y/]ZmEEEHHDG6m188xT[oYNG]"JKK5`vڵk?f1Fo߾۷Py-[{WFFhܹsgkkk.߾}{NNNww70Ceff쮮-[X^`oB\~! <:::Nbŵ|MUUUyy{-T`N~Qq_oϸU77MCL8^?Q˹m[0E+VXxqzz;_(:: u^cMRX˕xJbBd2>?V5k9^wv`FJ3}㩠`YɄ~FLg4Ύۑ1Rפ Q)Ro`08:"Tae:X_y岟Hk9NgDd7򎈌9.jV0f_?ɟ7רbbG߯/3^0$$tܚI%^#YN{\$""qqq|>_"\ٳ\K͒hH}!KySSK/-k˥3g$%%⠠\hgx6szhV}|f[N}fԪwTco tVӗ{<|=‡ߦh(ajpPh}<is_6,|=Pwڂ B$R/ZmEɓ999V;~}=R9w UVutt(ʢӧO/\{bJuƝ;wNH!6ϷR࿋ j/PhwTc47T.JGޛqsgBmOSB\S$_bO_ځ/n޼>$6, z} ^##̭۬o 5hϸ\B[[ܹsǭVPPPXXdBҥK vꫯBܹ/{zzBO:e%//СC'~r|S8{o%f$ͷ9V1q(_Ohn <. -M-ͱsmˢUnKև$KqGnxRݺu+--r`>~rիr˃嵵r L}dcR"tR}$EQR!DәʾkU?~ y Db1 =}k4ӁAַKxC BGaeFV4XFQ_}a#/}7}]bb={4M߹өV4uf`_cgxg6>5*H%=AӾ鈗[٫Y!_s-%,mˬ]iV#H9cT~V6qnpIDATHQ#Jp>".3smQQQII K؊Šs-]/X`;wmpsνk7Q6%sv484MT4T)e2U33j,kk}&ޞ 7[筯_͛zaNxe{6RTZ6 0pdw#w9n56 x3|,, B6 [-MMMARk֬Lj>ڶm[uu`޶m͛͗V^sEV;00pO2synnnnӧjZvm2%6>omnt=ؤRilܦƆA]$;cj,CBnU*xxxFFYPs-UWF/vEkDDYpR)"dfCHo\jnn|w,4T*e‚~6~N(;w>} 999+Kui 6޽{788ߖio߿@z1syZ;vl޽ C'%-޺5hN~Qq_oK~siˆN>vnW/BHM/oGbZTˏߟ_bO2PԩOnz'`08:iu_Kw`IIrG0 `iog뵹eGc`=3ӒS=7:a^?6r`Ƣi`0 C#-ª|zxxj4jwhpBjSB۱^& x3O,~kU/ )Zy<7/oo 3Mʾ榆EIɔߒ SÑJPO_C//og̪|/E-MM 3LXh_Vpf:0j|l__.wMQhy𠺺jab@0wrZ74=`<idpy܀%$\^QMO3&'J%̛.ro( s @M |0Ox>Grn;; د\ ύ/v;: 'S׆|!pm\9]:6 'g;lJG _IENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-Generate-List.png0000644000175000017500000013662313413640652024273 0ustar rubenrubenPNG  IHDR?I/sBITOtEXtSoftwaregnome-screenshot> IDATxw|ϝ$ZBBЛX'O}Oٰ?`QAE){/I(dwlrL,f7 I 3{ss;w/Xtva?;@ ZΔWڬVw^:3Eu߆g@ : ~(?ůYo[0>(1=@ MB Mva!C< 㒢 k@ +*lj}O?Rglц f; ə<_߻% u@h?fGkBXg L~[Q 1Fg{ۜgYKyzE^<6@a@ -KѲoGOWhn8!*\N4@IEލW k)TI bλP`2ჼvYˤ1Q)qB1>ӽLռ82\s=hpM|(zW=" ?E e':jfZ4Q7tUw#EV*̶/DMNضg>wy&=T Z8,pg^~\GШO)Ԇ&؂e߮i)!X0q<9&AN t4/ޡ;#wȻPC~vq<;{|Q*;$2E/ х%'2 }l~IYF;}NX1a<ӁXl.Fˆ}|⥢ hNq0k=b<3l-/VW[0*")>62"ܭPt)g@1V J, T@谸#,5&YJC~ݼS԰usLwLF3) p\|R!ռB{y&AkiT;nZ:2Vdr0 M4  , ,ȥ2? Hkg٣bZdRFyQH}CoZViwZg'?I K g{ťƅ/1󑾽{X^mvܬ c:ݖ5-gJ+㞝s^E3?;˶UnCzev9ubZɽ9oU0 B=vǠO}Qh'$?enwK*'|ĞLNN &PCRx"W0z==|O njWRdR\*ˤ aN˺ˤRJ%6`PgW'7 ׅ}HI.@FSU|`g˒QY6䫿һ"y/MwjCCijHg#3Br86>>>1_ ̸TP>ߧF !_,1M(7lNG`ZNłKE%ew~9Þ!2ٯ҆\H XmZ@lS{F4 awb 6+Yں6?k[M\,_?`A1 MKns\ D#:J3;@*ñ's@zM'b],p8+ʊ>Nz\*pRqD"(!>8J_2U(#l05ӯ[8ֹ^^Y,Ը0Pjg@Z\XЗʪ&$5[Z|88OUjtPs25s\(5M0$#au(4Tب?y4ݡC]@.xD!ֆj:\.@ x'cTd'/j!>N/`|.ssnHxX4:c.h:PbQ3 seJ MӍܻ0 ˿Þ` @؝~os\ !Կoe D8v cBo#ܿoO) ( P_jwXZq܉@} n<,iFVν؟YPvY4N>wGN XNx6l6{rL(lܗl): E&RQcpTJչ)eV׳,[]c)&Fikjj:ņqS'OR :2T@ս[_(' u9 VNΪ&<#B4M404JBUUU erW@&* Jn:eXW|sEErRY5 ʈ/*.wƌK.=>sMS?|/GhZ4cpKc Koc>iT'UN`г Yo7j1LEÇF07ԙ計5[O]JJ+Kӭ$p𕵕?[H^#E|r8E7y} _[׻gfN|j^cMz5rWPHHHFtNx <2ѷwVIa#3-#MNJ|=Oj-v'F>yb׉n{O9y<=9)}p:&&Zp7Jy?O$˲` !MI}mFf|$/6-^P/aJUawMw\Req?_/bjե7=ctOM.5ZTzr `PyOhBԟ5nf%˵5!jգ/ S5t.=S?ǵa22py.ϽvB.H" Ž.MfJ٥s(y67bvJJu޽L*TސN3nP]m)-+PcB4jO=El6{ib0ZW׍?}68$ ?x|BQyclJ%(ǼRI tX*_L>32,jlƵc'Veu r5tFъ%_#ޏƐOz.\wyd]uxOɴdϼgV/muWkTi?g*W;uJyD.\zb+1N01?~Ţh |5ڶԶ/1@ \UnޭSŦv-sFkuJ!0_wm\e)NڝM@V4[u  ۛ @ B馩`` m'@ `[vm8td͟g JMmmx]|:E BG#&g.V,[oCDPuAe<$tMҷ3@ 9W&C'A{ AddD>xb}73@ yc kWqXxX؟em߻D BC^j[B|3pӬȨhCYF4Zm)*Kj3׊@hsm5^i \ w-sr\By" ?Vѣfgg{&nݺ_-` |[v դKĝe!l/ ʙn*ro72k =kW_}=|pį^1{lK:4jp@ -Ts2GEcÆ #GOH /rY7OH4x_|iH >ƪ7'vꐨ@vh̘^;"vʀHECF}r뭷l߱hdڶ}W^gGf[f֝ѣ;l&^/r! fժu@ : Me^{W_=_N>ʫ}}{w}K@ln)+-? ~HVr̸|sc^ɚ(EJFe +,R)NQ'Z;e&MR<:󱱱N/~pȑؘ-{>7xs_[@ \ѡQZREx|͌t{F? ֭ w{_ի_1cf~FS #QsIcT]n%_fs<;]g?y~b{+3=mۺuo!6mۢn[+ػw^z?~\nz%?G3v,x:xN|['N4pA_J}ptczIį~v(68*n0 ۬,\w߾@ 3At5CߦOL$##}UvU [kj5qņ/׸pyEKSIUfv@_}MlZxJ6zryFzW^߯^HO+˛Сg3z]t@ ܴ0_֮[gl6;f݂͞=0逸>t0rSOח޹sP) fgW5˭dQ^^ec2Z=f̘5zXg~x+V@NNΊ+&JiW9޼@ .-ܡ3lO?Yo<Aӧy'&6+&MX]Sy%q=OzO=paYYXUF=N04'2DT۸gM jVr(j@Иp9/JǺMk$k?}泳3?SOsϛ7o bccyo'NlqOp.{++l2bȶ›-[6-}I@h_d2(*,XOJ7ZbvE|ܖ24Z4hugpPhҚwֱ%KyCh? @ cKHIIdYYYv/t"9/y7So&F#Ǐo0b^֭ݻL&yꩧ8k dM>sy@(<6^i5[m~bҡtŽ9Ҩؚ5k6mTUUu-L0/ذaCUUՄ |Mc͝8qBP(/bN| ˖-ٳ'$%%}'}y< &(F馛-Z4`ݾqӧ7tSCJGQRĻ.k5F8{vǛ#22ͽcܻwgW_:t!ǟc Շ ͨMHxXx\l}zNNO?t/tʕCh4^_m6[~;vTWWCã_8зo_(Qd*lڵL&:ujtty&jNQpњVYRUSvB&( wO.ࡃEݻϚ189.]>YVjTTVnS:vӹeVs5!GVԨ05, 㟻Fܘ-ɚL+jKz+e)(ay,87[,Q*bG;+?a\Gg;<6'V⒢a7d*9 ` r.0iVR*H81֏k㎛"#COƃ J#""bΜ95k^V:sq-[,""BD3 aaawC1p\?_ e vB/_Lق&BУG^֬Y2k'!=idq<в }ՇHdrYtdLjJ糹giaRiè!`KJJoܐ>`EeKfz~¸ O}͊ 4љV1>kԾ-c]yQIq) /^:TH%Yb\LX,'ϝ0Y+9nkhׄ˲uO.5ҔY kɍ' &"pb vHSW,׽{Vx|O.g#g9#(+-ȸqf͚մJd2SN՗9p֭[{޽tqcY߾}׮]{=4͓H=8o#O.Ji'Nӫgm54ih7%6ciMY{ۦ!%.HeG[o/Dڔ$`23:0qA@ IDATM+V~ew1СY-h^}(.օml6@7Dٹ{ǰ.\qQ7Q|!st2L# c\2йS|lfM9i'x3GV`?z IIQ1‚'.UXuњn=$WE%%ePJ$ VO 6!d>@H׽ ,d:悽 M|@ Wt4ٳk1 _Py˦dgg/X`z?ϤIj̘1-ZdVݷo߂ t>?~^^*$*T#24M>`?Ǎn.m-x#-e5d(eee֭[7apܸqѵ'7Z  x^910T 8'xbLv˗ϙ3']h?,Kg... ȑ#׬YxO.ZYy2{nE_6mZs;>?/?3()R5II-g|4>#px{I Ü9{?y={ᣋ\NT*]ޏ CAXH ½zoݶXY] r%UՖnH]{9V+CSΔx dV'ubcbv[őm-e+_cdddee} 7TU]1O> Bb0 1fYp &Jś#N,`7!D=c-Kg}f:Ux' &h4|weq{뷘bLwW3d pq… ōYfyu$ >|LC? &U7nud2)LRɝN匎=rw(+VJ?CϣMZ+A-WF7ͮOtҥKvÇ3cu73f̚:8~Q/">>6BW*7>]wÏ|UF'ƀF"zWVe)q򲦄&PPTyWQ X!/%e6-\iK q j@ƚ>|W.e%g v)% P4%Jj% # $:Dh"#Nǿd*9$b4ei25܄@lYma KZ䲾7=Z,t.77Tp8qkƝ.׉ Iw 8]`T-u2LR ]\\lX.W㙛h4"˽q谽 `X:o?9zv\C?}mPVúv (4*TÏrϞ-,O2>cqg υj%bncCXXXN4CԔҢ3gNr'ULBdst2BBb\>-#%GQ\h9~0ޮ2ZnC`!juN_V~zSRR/\:PQ|9֫8衃\0_z+5:'9B3^C"V9Wb y?Yzlw`&>6\)e*^Ѳ[ЖO!J=b<@k> ʔ ] FBO)*\85,eGJl#$N9R0N!@Yj;v(;XU_U`}XRV d tiE}D$dddgddEQ\rD*WV9p,\1ٳ;f| y ŚorII5+9fUI.c,֩r]AKT>?YSx2.6;Xy ]6$%&2hJETh-Bu9CUg0NI*1M>mQվu}:ͷ3 XPƚO_!B]ߖsN֥(64%`%_7TTLϳ,Jr|Z CBڟ! )`{J[)^UU#ĸdlja`W ?4gh @nسkGWTF4<̿R;i3gcuO2f/qU<V٬.#&M  ␎ߡAH (`0VQtR:{F>}W<Ͽ:#8~L~.p /xxe]rja|5fҜ6T*) !TVl߾kN CCCUM ǁftzŸ$==#]$#==#v@ ݒ:ooE44E=MgΤgef| ybN`P*U}z7Wg}w <0$$dСb'4MQ45\ c4*Չuڕoe;Wh[2(=Q8O[ |[aĈ^)bt":ڜ qdX(BT$ni]JJP:T"3`)$a'5!r]*B P? U*x-F4ӵ }F)\.Xsbf#EŕJK % RlOkf,VO?KCCc88-} 菱҅k+*r`XhsYnn:=$4 [;ww`Y@\*XR r96Ts#Xxuxc\;DqbiCt.SH:uj^:2Wwqj֟p\4MӴR!W q1Mm޶+c4tӇO*ɂZԃBt͈WvT16AyEzN8~]/)5& jC4LPRM<?]Js#GTO>Ē%hM9Ձe% 3dࠒҒKy'MfpJt:lTѪM}wCu(DL|ͳCQ;nfW(Nui9<7gTPИ ql3XaM7$T0T+OJ6448x8xq1nĤvO6}{))A:8vqٳqǎw۶mC '*-- uD$RS:~PIiyJgNOcǍ?~AI`R@\.Wx>7\Zj@f6杋t\RQyOfΘ:tLb .^A(( Lx 2"11C*4ɆaVj[ʝaqh 1gS&۲ŸQ. /~<1:](b ;fP%~Do5Bm\pP/=쳕eebtr[=ԩ:DQ4 # q'LiOIwܲr֖7M>cԕ+HjciL(qg,4iO?GA$J;t***n]Oum<yc(JT4QQA"tEd)*/w|rB Æ+]2c܄=nf$-尡ħ9S^N !=rrBC#""% #|PvG;VQQ\@FXx>{b~řS.XpamHHJ<HhyiYu: nqB\:z|w Uލ ; z(޵K().}T:jaڡ:w̲ .0:QTP'^"|\yn%oű( M+J*sw>%!tpV~6p{`"Iwu#ieuIiVO EpLӉs+JJ)W(( = >\|و<˻,2 haLQ]' ,r*SXMiҔ b!I܊eɶ s玳gOϞu𣤽@[MIb y||HHSd7PPG@~3w5>7>H|j3966]5|)λΝV:0D h|K![$JʍݍvoO6$#JA訨Ԧr-^pգ(Co{.J@A2'˵o`y_v\;C 4 ݼT@ڐ й ?BY(GSpU( WE]YnM[ިO\OĽ#bo)HT?fvo=3źʿBODî3Y7FA/9Y;K^tA O+Csm{"jY>P!.ꞔ-oPj̘1/?6w2[Yv-,:L*e(/1O+DtIҶW(68*n0 /yMqJ]1i-.8ܧ$M:]>}:uj%wNBrpc_9 r},FN/7Iɢ~/:Y>w}G~櫐˞dF^476]<pb'NЧK^)Wqc˱ zEN6[聼̵g:D 3 纷Kw1rN))4McAWXc`)++Lۆn$U'pKp/M[?ݭLR6i$N?gTUK$R+wdup#Ob~Q?.O9Pb[Ρ kϴϔ@`=zuڕ(8cYunl ׷B谡I |Ujʀ8BBS QJ]M7wU3b(SL-rf[dɔ)Sbtk?& )F(\-ks:[̏%y\ B M%U6gv!(X9=#宥H> yyX]%7k4/tQ$Pn[lHװѽPɱ?6-n VkYYo|7<|$%!øޑ-~9'S/v8OZk4z ^<t .t[PFL&y޿MX@蠡IK]sMsM V꧿.d%%%K.={U{dfɿIJ?X1'/UT~{4˖;{#Ԛ_N""鰡Is5<~K#"_NvJ(h4\[nYzO$RYs%#cG^)99%ݹZ<ϑUfi<:hh%߷ث,jZxX,?I~ϗ,Z\@ \`9d2Vv^TXIکe٢ǏL L(҆huةD"/ACS8.$$i鬩ٲe˸q~?2cہĘpЁꪑ<{Dr#FHJNZe/4C'&&Q~/h絟ab!A4T*CaQFmذ۷M[H :Q1=9^3{v\Ra~x9#G]U D֥MKv#**JTI2 Fd!14{6l˖-=7iο)M o4-\N\LĤNm%OL47,+AC];lk`AT*Rir1 1v\!//o߾l OfȠЁAnkG׶AC!%A0 72;yG M~sv2|D T*CBBaYiN ;yDFp鈡IBk"T*B8(ez}nnD"8qbCT@ -Hhp'HryHH8 >R)!::K^z] Z1cT*5 0YV V} @ \ߜv:y,011Ƽp9޽3X:}DeEF;e\jc=VVV5i!~n)gi(ii-H;y飍޽5k>K~'A( ajjjŸtqp5vU*kL2Z\geM/L&55[o]jU˓O>w5?ߣ$x|=z,_ٻ43*-ETS(r)t%"7rmk_s]R!M.?˵[d$(,D!KZT3s~34,g=9<93]}97QRUUUUUU< קP(߿{C΁H5R,>>ZnD?4>dB 1/_| oA8ʜ3v}_!tL¯SBZK8é:pa *h>r hߡUlp48;EC9==m\8{ d߾~M6}ݺ>>>*];w!\ySCCCæ͛W믽<8lذ@(ǎsΎEP_{y 8j`F˗WZ{nkkW^͛7r- ^!id~y s<so:B&VubG*bB9h?sdQ[W' 5%K,Y2{,8p`EMFѦO6sLD9k`Xw444>}' C_bŊ+v- Ͼcuuu>;w.cŊ޽khhHOO2e /tq&Ͻ 򍲲ĉeggc7qBZ.?u#Eߗ'31kiӦ|`,ZwFv팚3wkϞ5kMn„M&NUrLSBHEEEGG2$$ߟB[:rȦMf͚a;;spM=k֬իן;wΒ%KU۷o[pUCCC^͛³5kM yðO>χahP޽{$x$66V&qNYjqv NYqv2??gOݞP-N*߽e77o3f XxTM}.AA[ u܅Bi&݄&2KpbKpbKDJ}u9uW6S:48k$ꚴaFVQǏ>}b+V Jv27﩯M]C͠ P(tSSSb1 RDQu6%&HJwe m0$ HR& k"8 ,8 ,t"&@RuM00ac`l ؜o Q!0>PtzkP N>$&LHcbbR~żsg)*>ʷIT=47o*lڄJust6\Rxwܳs؂{. ^f$Da\ci՟ޡCOG˸..ITcCCY7{yy0 )Jp8/J]Qw!CjeNN.\W/% ٚ?r$ B{==}dM RSu_xt72lYsBj] Տs8?߼sg{}}|/_Nt R,)/'qb~@ % DS3lР^B [wvLnj͓?99vwdgGddUWs0 偈l6\igT(ӆ 5@`,JIIxjvɂ1cʘD-!xpٍF`$HHhA5q]S{l]P(7oTԴp7~::1gY,"n{fWTׇp|X [Ԋt!wute  #α-utB9u}d2#ɹ3 ߡCŭ!"""eejjjB $~sѭ|;~}% CC P肹FT}$p-5@a5nx]]&UTo4(dKW/@vTчSoGH:5:(5:}7>#<B,s؎%&&FD3L*721 ҥKnn0X]~⒒ #cFر޽:{ei_GWhcѣ- ɓUVJ댁EJʹ^ wsۚcǼWz{ˬOŀ;5LKK|^yȈ%ŗ.=zhg̘^Q=VZMu-{!tʕK}uQq[iifQQQ6m*..X`! f ++|@]=eXHφvsspptsgT}Bݻw߱c`U+W"nۨ^چhp Dݑm[]]]BL&sfcbB:׭/ RPF 40RRރo޼ٷBww@a_E/[~ϟB܅F̸J 8Pq{I,kii/[7C{ /={n9wBq.ӧp߹3J[[tFj'ʦ&2KpbK$!gሑ#;u4h;tW>={GDN:_kg126˸ Aj{?7nXwch )v B8p&f"9-FRo/CBюÇ>'ȿw`$  /@ 5 W 5@`طJp8'6-fJ5 ( Aj ðRm]ݖuMd'a'a[Ph&y] ~zn· t3WW]UoX^9Ϟ>i5@HS?N159w&4e]Cqszj.dn`q7`3Զ[R[Q.tR[h$D9ъ 'yhJ{ui!<'-ql̀Df!~٢ڻtJ6p8l ,clDχ=z lnw)uϪ:79NUq0lxF fO~9B'5[hJw#] U5H]U3~ˋ}k/c IDAT\s(f`p/;蹱 S!5?}U'=UXpo`E佋NΪFvjLok*ڪ9%`I[9C3Nt|Pw0WWR;{ tfΞbs8%%e_DRPB YJovPo?zaXFamewjUN(j?877J>V (3Fƃ7 `hw8!3_sJx8NɛjOۮp w3ిPTeefFaPX0F?[0-aXL:)Q/>6g~ɧ> lS2HT@WXzW b͎t!&U5 HSS@ b5_|bq0Pm=ww%]:Д Uc.>?؄FSjd ejnESW)9ik*`hB]%Va͝SBhd5Y KV]-4/>N/l{t4ߕШg\ Sr+^,q08u!C mT|mTSV~oO\+HP"Cjj*W4 9/ qt (!uvsqC㷼D]@c/ e*WSVױBF4;@]_pt^[Hzj75zU}_vwtUZɛ]V-9lXځk2KpbKpʭ AkMN34{6wܮv~Ǻzg|롍ajM-W9)EvۛtU|[iyͺ/|2.MYe cZv~PAHS@Ҹ ,=ݧt 1py$]_v턂3ΎPr kܖ\ҟ's#9{ [T;|w%gճKH{e^\6>գC݅2~ݵ;ߕR;wzߡu)`/!c=@wӮZ*jz@cT}Yt8'~D];8q8ؗqGh(m%A( ˨f#p1a'<0?mBwaw~l?WsB!BzojSr? ;HMiAOðjBZIen}zdRh9oV;:Aj  @N@jxY'?crtA(8HM9z8 $$rkw?RRɸh$񋊠 RuM@눷 ĎWO~9xHb6_xFMDW\Q\~DEEݻw!QV&nɓfϞ--v-___vZ@@ҥKkjjx6155.^xΜ9<[Ξ={2O~{U[[^z߾}_|ivK _$$9xm۶mŊ}͘1#//ڵk_|Yd NڴiO?7nG#GmܸY3g… NNN&&&.))-ş:qߓ{|.&h_kA]:ҩk" B666O>%"VJHHڶm[߾}U^9r,--&Oh``lII͛7UUUyVM>ߟ͛K1b㄄ݻw7 Qkt4͛7ܑ؉'"ƍ3pb``cǎ3go;v """f̘ rss#{ٽ{ӧOw޽}/lmmsrrZ}v 5Фp<XTѣ/\bwqq:tYXX>ak߼y 6667nܳg`TTT9Aj@jɭ^^^t:!ԩS'GGd]jkk>SCChhhxzz#>~jժk⫨T֭[,Y'bϟByYȊ+ݻbrrrV\9c bչsL'PDqv NYqv NYqB2 8|O>ą*c7/_ؘXկ_#F,_l޼yWddd3f̜9l̙s'"233־ uM@H ܹ3''/T/Ĕ)SlmmP I }֧O"|kƌ666_|qƌ36n%5Ef\rgϞ:uÇ;&ŋT[[͛77 pA'':hjj>|׮]aaa<@jk׮|d2mۖJe27o|2a2=ѣGdkkK HM@988`-؈/xnM^^ (%K좢 93S\\tҡCӧ?|ѢE,844433s̙'NLKK~Yf͚%" ~I.]-[F%9|||.]GTUUoP^^fMMMϜ9ӹsg|'FFFfgg+))YXXXWg5q]S{]S{\:/䒒5k(++qjiYYY֭SSS#vXzݻw_xY]]+b{\\ϟ>}y h)kA]:k"FW^]lYRR1p5@Fwޕu/@`@"DB)- rHZɊh0wd&:iiO>|wsDO#(MͰAz"u84T:=H&ȧV Dffᖺ/6uѣqνb,,4\)) <OMd$(k"8 ,=LmNDlWN~5!.LK렷QԾ>VE?8BA)}cv) '&Ds Y7>MIw񿻸03km[vOG::Ī7eeiK32$/uM’P]CI[jh/pׯog'Vϛֽj^ǎk ,/fg mC&66/]y=uV4Hk׮]v=}tΝQQQ !--PIIIBBBEEB]t֭B(%%%22r˖-O>={lAAADD/\V܈!uuaÆ:u|||r\ 5@zE`$Zׄb :ҥKt:ӧOC }6FC>zHYY2 |~tcO?xbwww|˫WFDD?!fCCÐumٲeܸq۶m=z ,ۡCfggG~z=D(={8ѣ!;wܔ|Ƕm۬N~ /EB:urttLNNnE; `03̰0!y޾}{{zxxyѣG\שS'+5Quˉ+_㪚?888;v &J @VRKb* EeeeZZZAAAWiii#G߿ի۷oӧjaanookaaaggGuleeΎd~=/%%LHM 1`/I_B$>񞞞DDCC3>>!4}gϞXk׮M0E:uʕ+srrX,VNNʕ+ǎg;v{.jhhukkkkkkSSS[ztGDD766GDDpxQWW6m'LHMh^ևqgu,޽>P1 b?,666 'ߧg``ңG}M4E3fo6k,33Yf͞={͍ <!4x`]9rH---o./ ͮ߰aÒ%Kztҍ7p Ws <Ν{v[P0wo5RZGCs$OȌ@ ){lFyI__:DvL ,4$I ?)) ?͙3pqJ} 2LH.)ogBͷRR"0Blgyy,M䚌$$ܝ/_tUUB:|AUDBG>x1c=5ṳ|$ \@HUЬiHeQ#"dr?:wOܵcNJ~5?B +)fjڂÁk@ztTU/ձX{ݓu_Bh/,,ccPQ/]D &H wPrW忚tB{?ד?[]]jFE(- wuAy3Ic̻zuGv-bbbLMMcbbx۷o1ţ&/jDYLLܫHKg2C?~]MMM[[{Æ IIIYhs-Z!ݺuĖ>|HMM5J$ F  v 2"Y^} .@.,q'(BllĉBƍ]SNmE_游]vڵӧ;wJHH@hii JJJ***BҥKnB)))[lyٳg """_~…/_ ɛ7oԛdz*++͍xꚙRWW6lةSGMME hEIMftkʥKȴS x#F>Zwu} 9bRSS}||BGp12QTTԫWf ,XG?֖Nم߿_zM˗)իWB׮]#RHkkkfhh~IX񇞞YW޼yO֭ۛ7o堠ǏN8WsCQPiK_5Y^vdKFF=nq}d;oq+8mOdjmK$k"!(99ˋN#:u(pkiL&sL&3,, ?~ŅѣG2$%%;OM^:h |\ooo##ݻZ[[Bȴcbbv IDATKE"geeС(;6R&xue7ny ùJBJ#P i #z?%%2k2e)C8p!}vKu > ÇUTTuuu}}9xU4djuuu//iӦyzzXQ&܃"!|W aDx.p/FwO;O0 `ݺu!!!qqq{ )))QVVN,D1f̘Yf1ٳgs:mܸq]ȏ?h"ccco5{Đϟ?c3Gijj _eooaÆ%KlܸƆ٠~i-:} r\RA$B&43'N\*@8p WQQYp… #|DŽ  ٳ';7rD䖮B4}bXtq2'N[&@x/ȅfLl*'ţ(uMH'a$++.Y*$.~IɓߕijCW  K-o\!{,Ѻ&5r}%R a&/Iϡ @Ԅu/%E ~G C!sXjBP YHs@*+d4$KJ;/OǕ!'aZPZю]N8|+pLDo8 T{$}"'//ŋ/_,++{(4j֬Y7o,---)) qWHkN/p|_>l ,& #?vppu떶6aii)X?> BظPYY!˳% ykBzS/]tsFyJ86xOOO"/Aihhxzz Q__`FhhukkkkkkSSS'LЖ>|fBQ$qԨɗ.?y""ѯxvB$%d*ځXf%-_|Μ9ݻwocbb9ҿKK۷O4-۶m'L0~4BL%& eo&3i߄ϟʲ@HO@b\8p 翆BDW9;;:u5!Yemm}U">e'HM)&<k=e# $bS :%&H%cS  $r No//-N. gJ%d%xPp Tפ}Z=!pGO']I$WP]8'Hn;% DS3lР^B' ֤=B[;mqSb#({lFyI__N&Oa$h8g{ &Xh(ùRRx<{˹sf!0N|)) yۋSR . C1ðo?YÆkj*Q(T E KJ٩h쮔pljn$FMH>OGܘ~qx =BCkݸRGֱXg=p`A>b ZYEm]]׎uVQ7zi??Kh'-KoX_ZA؞_bl=+ =+YxRuMdo.HXlqv*bNMEYZ>swO nBA eV֭pVW륥۷(- wu7ğ5I-?>557*@J `Fuww_x.{ }G d@3EMJ_;;;_p!22- N4)///;; lvaa [#P(RJM ?|>t:`zh>[D\SHđ/^n޼- Rԍ7Xfs &9~x&&@Iy=;w-(ۻ7ٟ`w.x @RDQGMT*dn޼ťM[XX>|xfijG$[C߾,srZ{6Bccfd,stD_Jx۷vܶp~D8 ,8 ,466+W۷ݻwR3kuԩw^GDPJxNKKx̙5%@x"-&HyşIwލU^kg#G233∺&M+|G@r2'uii l;w99imJy3xmi c 4X}}-[OJsGОH~FFZ**cTT|}2A ЊNm&dXJCCC*))?^}jpziXhh q 9UX8Csgڎ;wN@dKp") ]ׄB .9FF#{ ?|s I,/gvt{qի_/\xUSS؈b-Ztx/OnĉiӤjH\h"-Ѻ&<5Vqс¢gk;B۳fZ[co#ϛu| !YjgorBCkh8u&*` 8VI%kƒ~ɒ%o߾%lÃ59QWW'ʎMiʔ)gΜĘ~ժU555]@TפhN[C&2k`0X3gߞ=zSPP.~ɺuoG㍍o߾ΎӇ 6ܹ3&F366^zu^^^Yzݻ߿/d*ڻw;v\xE;ÇOHHp8Ī|55 SJk"""._,4"5!P<,ŋaaanDOO/88?lvKխDߑF =}48q"Bhܸq/_ $!i<7U )ݺuKLLlK&M6lXvv-wA&.l6ٳgׯnюBXXX,+55uժUѣG2d4wlvII]]][z, DbiJwىDJ99l6>jy;vA*q+V?gQT==aÆ-[LEA $''{yytPN4;MNNn遀pKaX,8_{#8xҠRL&s...mlÓ'O B+dGdL&E#RѣE=zt-87 p00S__lpg'aZGp modʕÇm&4l6{۶m~~~ʴ |ϟ*++]h4[O iK>~͚5cJJJw0`{#"•ZoHJii%%];wpq5!$=XƏעvDoP(J]]],JsU 5@l0D*"$]hwn7|:$kBߓj!(`8fBK)7 6,?,KU(**:l$[ׄF]"2Ck".VR\UYYfR6vv&&M5;tOV;ccsMޝEUfE!Фr)*s%ˬ{떡v]PofRSE-vQfaRK-Ed+0YMQ85w3s2<=P4*BiT@@ 6uęz !?0j.-%RᔁA_?KvJf|S-Dku@$SXSQEF5B:JC,<\Ptmێ;'Wk@]c,p,I/>t0&suw p͔rDŋ}RH̟/]D"FF5ìAir/oT1Z? )+kׯdTӏ>js˖"2)g!z4!,q7wÍ, !ˋj:})\\TrZ[,Ibt'N$}o}t\]{>'99^iDNpUWBϷmx4Kk ~M6BB+ZǎR@;7M˗/8Sƍܷot|Ӟ/ۿ薬lFs=bܹ+F?zȐBO>ٶwgffV;5/ `kҬACpzrΝyM].owisZܩw+*ҫ埩q1TtFk3A;STx믾=z!rwl߾}cbb[aw۷oM\7`+뮪 JWV;pf̈́,Km;~|H q={++kw8Y=FYܸgb޶`ql/۶.%?%ner3f?#FwEIRNB<,!D ׃?~W$%% HJJ$i5;tW,g&rZJ jZ,x.IDAT+hbEZnz0LMg`?x|n߾={tzi$i-.\h׸>}TJnB|%y fϞm7+W4C=TAbcccڷ?qdnݚ6m*޽{nnnLu=GkM /jsg| x: G(MkCT&>0%\9r ֚^R5SwG}eGK~Az/) Zx/) `Ai/K%:kR9_kKu?wwqu$*l"”ྺk›<|CJ_n*BiT PJ@u$l4EKN:kR͔WaJMZ|yp(I|!@@_@uhF}MPJ"&@E(MPpmߣ(MqĔ=WaJLq5T&PoCCiT PJ"&@Ek Sb0%wC(kvu;&Z%߳)GZD{Bz2(M;5uܺLF!J\RU&(Mp +>p7J e% Ci#=Au68”5Eڦwڸw碑K0T' >\&>TubEm=f_.`@-Jj+u}ڒ:ahpç\8\u+.*O8q :@E(MP 8G5USx\)1eǽs r PCA5^r n|f`ux ;,Y~lvtp5ޤ/pg;:hc8"5fH(Mu!}M|WaJL"IW}y=U˵{[lxw&R5CM >yjn5i12W\#ȲD|zK&.p( ](DJjK]gM~c{eK'w]=&\B9YllY j&>0% Sb{urދ'n }M|Ͼpx?f ;&\ Wp\pG;tpRdԮZqouA]RK5:Ϊ%&{(MpM-b)GOp#qmQP+BUE_USx\)1eǽs T&x6 5 PJ"&@E(MqĔ=WaJLq5rVR8hcX4*BiT PJ"5q\)1eUSx;}M@kz&h} ޽_~.nO@ig/{'f\*Bi@}&ISJgH*77SNBm۶ 0 ,,,222%%q\۩S'¸)//ҥѣGCZOlѫVu9D_USx\)1eǽseYv[n:tbɒ%iii%%%G=7''Gh4+-Zkƍ ׿瞻-Plڴ>И1c{Iɓ'njZ 5$ɾݻohҤɕ+WپO|Ս5r{}MP\\|رn&駟ӧvcZ[YY理<#6ml6o޼7 .g˖-;wK7n<7 ! 6y⢢S*</Zb.TY۳gO^^މ'̙͛7͜99{ n}III::xС)S\웕գGݻoٲŲN1cFrrc=:K/M>>uZVZB?,,Lϛ7oǎ6ׯ_titttDD閚zSRR.]4g屲D^}f͚5kW_׿׬Y$ܨQ l޼ZA&uֻ:矏1wޱ^&}׭[7vXرc׭[gŋ/͛~r>͛+OM:uٲeF`0,[r"''nkذ$IᥥJٳ5&M!k.FZƌ<(,,T9ssZVѴhd4!s!CX"?_-**ڱcGJJr#<}"'|r„ #G|'&Nh3ܹs]\رc=233333{ٱcG%>z'9sl6?r=e˖ǏDVTT(ʪ_ c8qByp͛[>uh4L,fq(MuhϞ=qqqBQ!Ē%Kf̘gիC9?l}͘1ckk׮HIIBL>޳gIiiiiii˗CCCCCCO8a}kرc'MTPPP^^>e%x7/^̙3Ǐl,^#?;cN:dʔ)Jp?O?d4|ڥq&ϰ4#Jbs5gڴiO馛,=E.^8]nݸqw3f̺uΝk[G?gϞU"sΝ1c7444,,o߾5kNޯ_?F3om۶\z~oPr^zY^"c&&&vҥ}/8` $'':^ҒҒukV)%gffH]}xh쵸 Sb0%57g9/ȷ{_B\T=;)u<}M@ }M4*BiT PJ"Kw}'q){-”*LL5 CiT PJ"&@Ek Sb0%wJ }M4*BiT gվN  7G*"\q\)1eUSx;-@ݑo]YUJ ZrǾ7 ߽r7_YRT׿=;)u<}M@kbj租IH\O?ߗ}g~a }Kݢ smyxUt۶ F_'%&b6=uTt:,f_'%,9@n H&Μ-:'k~)++˺G{yy|L{˜ЧІ|ysODDDxxw]TTd}˖-ᱱk׮ٳAѳf2 \бFi~&##[nwY ҥ…/:)uټHʨ&:wGO>ˡC?Õ.].:WhQ7$>8bĈz_~9sLNO?㧞zj޼yeee;vسg߱cܹs/_^^^#7X ~&((hYFF ˖xB+>ڬ tϡZJ ,!W* lּ鿶zhP7Lcǎ͘1cĈ6O}ʃ_|c̟??##cB:[o٭[7!DvV\?w\M> KW,_ʒ m|g\UcK6^:sxqaaHUr)B~P:NӅ2cǎ6?~|ᑑ:Nח*Ç~Аg^Κ_ JN~HC׹xhp}w̝: J7^tE FdIְAá.]h~r]wƲ(٬GXo~܏l>}TDD1!k Sb0%x]B˗/;;dtj:myBHvi*m`4fYf\Ue=vSX!{S4mToɵĻu{w[>hk^8k*e5o+;\59|ѣGcͼ(}MH`0j;XYe.zJdF7eh2~FJA}jsҨQ~p4S?v{ĉˣGQ|ԩVXާO ZJ矏;nɒ !꫌M6N~U5!C߱]Ȑeĉ rnWY TUUUQQqҥ|P~)Te4[٩1˗~-[{}cǎ `Yfljذ቉J;x k׮m>f…=gMٮ5YvOЪe}dF쓘تe+uVZL&<0LG8=%FE4*B麆!% urg<գG[?eaÆ6:iABBG}d3*M,gjӮ}v: UpDlVΚf.1B6=7䌜/]((wܡ3hZF#IVt,7nG>c8Oo lX$J4YQFHBtW&BSE3wPe2O}(-&UԘmir];?2Ti[< hwFo:s$iu|gM\7s~lh7pDm*M~9KNN};88n/k;OxﰁQmwx8;g|\\eNNNN.$80ִ֘u! jKT_!:(K\ v8O6˿]j],.Zvg6mݻ瞑ܝ' nQJҒ6mL&;*ƶ$&'&Yvq8;KEwY uUib2Z~>fyĉELPȲlygھ}{FFͧi={.^ 54Xa4LM=xPbbuň&Y̲27:{@bNxС'SSFoU$EDD\I7ޯ]D+M ۷%+K׻#e/!ξd^~[S'LN|i4]v;_B뚡ΙL梳pӍoOOlo,˿ IDATxwx35FB $ E ' M^^A"]E!@$$ɖa ɤAݐ6w93;gro,&g)L +n!<Q,Ͼ'V$g|iҳD1cpj Xr`m!-ګh?s$۫^ljNi=[+*x|O=w>ަr3{ cOɉHBDd_NLKHD$, ?א@owgzwK'p#!~NuֿgШDloe!-Ѝ z_h'+|}1I6Vɚ~>ȑk"/kX̼4ٶ~p(=r)>1É1jdB2N.U2yXvVk]U~gq7'$H:w䷹ch̍-տfٹg_)a fJ_n?l+ܝ.q\ELL Y>˓x#+̃ .,:sF{un+W]/((蘘}Ov(5s bosǾb޸38nO|"A֪SIۏ_9㈣XdиWiaCL^u`jr%[0H⭥H1"JOI~~}T^`8b8Adba/Z\aDvm}\>p:_O()-DTPT|1fcmlj03+7!zVgVz]O "D_B2R]ri^aRRKJ4qX[댳}z¸gOՔ@_OwZVWAQq..:٪.&fۉ]MJ}{~ͯ ;JvA gN54)pgz _N!9+~k{?O,yo+ڷ +A) tsN)y_ܧ7c׻GJZFo2 J6rIxh1ގro8,)l3}QmbSY UqI3١ek |RrNbZ{ЏVj[1lp $4;A6uli#^;ݚq%[0Akڕi/WGDX~}v!T/jY: =Bb mE6==;-ǯg sD4%2{i;x입g2O{q1g-iڄE홹]^Cs'>sѢ5krY68Ш]O;#q+[51:&6%[:ӽk{%^>apv2@Wn%1;\KIKNM_z燭gL0\]M) O&Q0JO88Gu"jTR=* Uyǫzϸ, KNMҬșo8BD/M:öq̍}f, >ؙgYYVrﭞCE*8L€>ѦTXD ]%ž2}k[+z:@0F>xqV+V ZW{Uuv2E\N(99m+)Ѵq".Dt9*8|SrfQ_ Qq&י>rSζZVAhSTL:{XWҸY NRFAwFT3se^JDA>N%%͞>GD4`'R~!1":3F.^|nxd> {.xybFd:WZkM$\Xg L[&hheK…Ev EEr''봴#Gy{muS8JM1&2"2V6-r=*ĩ7&!F7!3}vjzuΘ*|"c^SZ=zW65qN||9c/O9}Bϩ_5xj5ҋD_WЈ'?[KQD$y"yN/[0|dr|1-HadYꐐ[1ի\ggYdx+;V˧m5ӱ#ӑX[|,i۳/%7<Ƚc[f)닊Ksrc=Ex<єz9 lɨoY~Q4 t$|kk*v9scׇ.|lωy/MDY[[1.^o\a=V֐'\h\\ djUdDdLg܍[,`$kgM1THǘ#tނIm U*WRg >Kg@.o}5KsjޞsYD$Mp$Z7/O{.0&LHrX'ئ=<=+oI|=~y ,ӗ9s6#-g]8"zNi9O45R%gQLGԴuܥ3\R{UM԰NDe%O+'4._UAގSr<ܻudmep#8CgHM8~2 :hLwV9(TK _NQehh Dʼ߻DFt|>RVdqDt* Z(Xg4C[pTX;dogQ |p"JHYycL۞MN%{FѤՊ’+򴵵INMȄA?z0#t˾n8 _=^WT?qQ^գg-E=?wMNaMGek}}]7[ZZ[RK+i,rmM53F~d&9s4@~c PMx98Bdpc k*҂!VO7b/gbx8Qţxc$2bYfϐ!yz|_MY9YY<=</%[YY+ԹDTfZv4????FJr-N;ceAYyT98m<n(= %=J2c[d:\|\<E~#tꅄ?_,lYǞܱk_trj4?+BohOGL= [H D$tlƊW{w¢rj}3s8ZmFvZlRDo4J ֳ!Z8;بzV yU -AT4܂ނD<.ם0I]~;6/7ԸpZ2"Jb^X1FS^^& T*+kkcYB^O9wlvVci1d2kDN8׭=ede?~,<<<23T?*gsۺsg˜xw׈vK)S;GbxsGgtӭ[iw5yN򼝭ʛ˭UrkiļmB;:s|]gMnwqt/gRVTWqh2Au!x=/\OK5;ͤŜLJ+x?ڷ!:XWq1X)h TF -1N2bx^P/P(B:y"YVZPmDTPRT BJQNR/Z5;zЮgX)eVJy4\~M *\%.vz ٴsO[]nK]zn)؄_ k8NM`E8jwh^9~XVVߠ-={)װQ a0]Ś6٤RVJ GW3Jz;GYv^:AoVԒ]❝,Ld*9QvVЮޞݱb䩰V4:[s-YZ{ߝܜJ*O6R/v~c[#y+ U>Ŋr Vg\M.xz^KMzZDQL?{\- ˔WPz.`<7Ǜ/g0 Jt6Vr5qlrK3=2wrHQXqޞ6<ǽ7c:c{o8W9u+*,l%_88'rXZn 5 BvۡR)rX5hih}c4mԱu rh#U[.nny֊RN MP@ՌbGk9* ],][Y9%??pcw1zDw1bQ+bc*Rn.9|0϶%&+U:yc Ku.jmyYNVr5]9 `GVdK-dߩbw-(rVz`/w֟x}8>JF\V";{A6Y0>y9WJdc&aQ^璊.xssPexzX X!ɣOge ncŮ{ Y-:w&yxꪞ$"rQeed~d+[pqtq(.3x:?:Q@'(ZO:[nv GsGL|<41I1GŔ BFD%e mTv޷w/sG݊5^يo +oL1\-Lf[ť-?oi>ѩe::忋':)dj j Uʸ b; (z9[yN!;9Z(`縋*'Vt=.;.Ktp #=r=Z0vΜ='OU,{= G ݷ,/ #&q.?3k+{]$ioV#oM%=={khaTϜB_:{T.jtpWte<1tzEst%'s6L^~Y C%#‎6Ciyefekwn Ce ⳬL<̙3gΜ9/*C1jʈ3QYYYyyN'4*맬,nn⒒I##h4s݆,\|7Sfټ/ODTg112cG1{[=bemYNUyT>JWeiqƕ~1=90??..եkT5噿  bzD/΍=q`?mY=u5ab#vvv?yVVhΜsέ\6g9sV֏^*   `du2ODz^Yje2\.c喻\1(ѡΏ jָ'ݧerKl7_|1{nDԣ{/7gΜѣF;.3EeSŅ8;[;{6>>vvޞ^6mߣ]tqúMprKDl0lڷoܶ q<:R˯-X董={t`7[ԛo$9sj˵gED| .|sL㨆_DQVf%_^Z)"ZVe_?wȶ.; 9o.g޽pьx jBz& IDAT+]4&q Q7ѣ={tyx\TSoc"E&0Ge(rhS޸".1tD`ccȇ#&k4۴ZPFizɧzz̚&ʬO Mw;U|*[#,>TK}qܥ;ksE="ȃޠkТ̈B*>uֱd_Ө:Viss卩Sonn9!GzYYS֯_3nΒ6J;uΥ)=m۶]fE-5XVs^}=E*//oPGhz}kǎgk,Z2zY)~\ħz^ƁC5Xo|XH_}֭7we˖Evi,ٱc}v z}nNNHHhyY2&$$47'Tjժ=}|^fr*%Əj;`_A_KJz'7>';4իFujժ1T_<0[y#l׭7Yn_o~s̥sӺQM&՟%hA@ F҅Wo)1fXAc{̟Ybb7rqQӟO8u괩ĉ1ѷ/r$7Nr罸Z. xwϞ=k*iW4n^y0VcB }7<%JٻoΝ|޼y>OLLر}[\ܥ}ҽ{?m3mݻwwvq1iE\Ą%_5Ÿl{咉O?=p3O%$&|g{'&=?)⅋mλ^bĄK|$ ؠGŻ??i҇}\=BUjU+|6c_,Xzժ "0unZƁyOO땗,FbB(h0Wog{Q6*y{}%iig?hh>uz^~i_c0z܄_~rzg7p,[n*s>zg>N68ygL)~폎o#X*FD;w3{CzzkZKHo0\KNOY]YvʅOϤp9>)S~SG~^qm -\صKB` 7ј1c6lhdÆcǎ+>;7**JPtsxS NPtkPӻZ=5/[쳹svblsLԴ 3O=wɓUkjgeMz/4+<==9/YZ({믝.' p)?~VkpjW[J{ơ +~1blYcnjǯ[_ku?=k׭7Mr_9s=fiBB·~_e]tx1x𩤸8++k 1Q.\9rl_z￳gޞj\4\ks kmD{xon{lݺuѢQJ 4>/p1Cu Ҹe2<0mdz{vDd:mjvȐgHOOJKK?!C*^1٫=O?WgTOO8`ÇGuڧOooG+..J^x1::4y5-`d97ܹcG廃ki<&&_˗GFv\,mkP*Bڇ*C ϑ2s#jJKNӧ_?[Z-8J/^ڷOocɏkV+(U'6naaaD6_:8j5o͚ܖ<<=ޜ9g4gR:>}&lDDL.~Ll{_FVMD9vaקNQӢ}m_zѷ+ɺ A]'sr1պ+ӬyA5A)+#jэ<Ǚ^w񂣃CJoڴ)S6m8băJ>S_Wu>Q=p_NҔW^/Ҁ-ZEEo_:iϴFQn:vrgyggdW2gmAK]WMDQl>cxDKy*(:";Ao1I$FĄR[#"]]\ 3VNMM[hsJK5d]zSDN/_ȔQE6==̙ب..]::u_>'OݣJW\a*ܩS-ws㷳-//XxsoL"/>GLLRmf VBI:v1nƍʔW_2eM_-^\elhH!,ʪдI_ ;ED>L59{olQTDtiSy;ַo5oǎ6Ի=a#GO{{;o':GFw_?"86:s]jI dxf$Y*F?8&ǬY3o`֪|ʶ񫝝d &=f~>;}K\Ft'X=(>U)i|/jߕ$?no7 6/ҩeԌ{_T)h80ǍFE1b˾YNo瞛9kStzSf9kҤ猣?ǎŗLS0a}MIi|PP+Wk._:} //sOPg'!llLynݺQnޞ=g)++={_ Yjhf Tuuu=u&ߺ|wNټcƌ7Qz!/,2z_/Y8yjYGw?wxq<næ걍;zE. _TӢչfnq{G7Jhn+sEaƌ3f-J[iK M[To:lбcG;.j5>Hh*4=d!U.0-4qG6-cK h"8 p8UթT sfO=sw-LٹCBC*Zد Ÿs-Ӕჱ9HLG=~n\xwqqw__?‚sfCw3Vd?uٱC˕iJ4x<@ݒ ^zw׷$HGGfyy{^_KJ:yDvvdML5*M8 wÇ0MPL&cc zc1833 fZmp7۹m[dBBx :]yyYYFps۶"ALo0DEgvQo0T.AcLRYM&Wɠ<; )ڱ0RSR\jVE: 1@i$sg\O&00m-5qZ y!arsrby@ f:XcgO,.*0h ^gN&P2$^ޑQ """t:JU^VV2@k- 7d*JJVF  @.O? nvI0 1Q1icLo0#GW ~Ad( "EV3"\lWy8  @$$H H $ AH@  @$$H H $ AHhٿx; kk+W;j=ȣGn޼Q@6o޼j*sG-IDM1cTp#B S9gomkk еB_;WvUɯ^aФq R&S<9Ntp "As4sU7$HhB޶ZA B\^6n 掫nHд;V%u˭g M~r,#cdpBay@`=mR&{:<N!A@9.qҤW? R&3whCT8k rm>˖掫^ Z1(UQZPX(1’+=rKccN+@ dJ&916{ף@*նG5w.䬼paFSޯߓ;>f e9jTklvvqpxq(FNgp|BaᄰW ZH77[2KqRr%iҤ=ᮮ*?^޽`LJJH& jM e8zhGbmgwVr[t8bsx x*,jM eؕdPJJZԿR&//ӷoBo^hyȖ eWpWyy֯8NnnDRqpVTوp@K<&$ӣG=mlyzMI!W $@ 3+:z%%+MY h ?т+@ 3y鵟])Dck{gܭmZ[$HLqf ⮇C`~11$H ǎ5f;  @$?jɩStP%K' "]L Rq#}-%4c%'7gh$Eڷ֭Yb0VKTRrpzOZ!AX˗LJ)/DpN:FY3>4b,h]ΜsNRGoo%"ߟAv/ ~z(6:w&"Ջ޽ԩZ.0tE/+JK /")(6[ϯh!A@4b9ЪI_G3֖h0zM4d2"@JL@ڸ|衇w+R׮deUSۂRk(/"CaBF~`h!A@KG7PU(H"Zƍ(|qZfΤr2>\&"h(3<<'ki҅WEWsr~ݼbH-2֭[ wߥoƍBxvy#!V7b[$>[;934g\w7$HUKJz뭺!V H 2T1$H &4f;  @$$H!jAx3jJAVL%?^|QEK]^ /j!Yx05[C/>7=m:{!Z$HK~y..Dɑ#S;vd;v|3x6mv$&>k4eE9c`T*c"$7bN,fp6D4$0zqqRҋ_/SttբUi AzQȑz0Ύ#""6XXeK[G8ё\]ZjM e}{ ;^X] FoNϞM {fj(K-.6?eD%%~vvƚ~r,PH=kW^f0휜ܭw$&_;67~<{x`˖R\K*VKw.;s\|-#"o[SO>)YСm1pTn޽?=ztO?m}Q{.Τ/OjbքXGQt4 L{G'=͙CDd0DD= ሌMܾ=ΝavwbWRB+)iQJX_=5[OXW⸊= zq kvrs+t"EƞٱCd컡CF_WpWyy֯Ʀ Ex TɎDO%%쳤T6\\}8x-7 .krBDŽ|z 1c_{bkeGBhqZß߽;p򶎎%%]\=ww2"=ɝ3z BڵAZA7>`s p̝A0|x^YZnmmT6y~r&O6+2:+xήCB3Ml [S qCd3mw#4.$HۅxWC-Ȏw;$HO:w Ybwү1 A4Ν4kMJ@d+ү[ӧi„{SQ-%'OSO5[P&H tQ.4q"MJqq8z~Ho瓣-?IDBQ%$@^]ѡ'6=K{ h\:}f@3 HzzzbNx\ڿ?.>7hhrdt}‹cGjiP1~ăyw)m;6&/*J^^ˢ.ԠW#ҫRfe|KoYBNmBҌ*1O_^^dQuHVVDDvvTP@W qh2z]"ݻiByR(O0smE $HhUz)/uu:OṀ5vhMoYnvqO?D^DsRCVҥ=ڜj3;6n矧׈)'DŅt2|oYtˀ M`/Qq͢j1~gG"R|ۛjN˖ PQ9;Wy\T,쫠n`^.IfBUq 5KQ3\2ӼyԤDE+ʭ_Ⓒkfj,3ca89>q<}f͐-NQAA޺u|FՇ32>reuO777QFwo(ˎ6nDg`>ID\nn+2 qcbRe0<˿nZmqsn8IDoWW4mm`ho( ]Wb&w u9d*8II~~Kϝ;3sXVRB#H"jƵk<];sqft 22񈈐<2JAQle?gNcx@@x'2+ 0 J&֯T7>E+1sxk YY?MrjL3qrKM9dHftZGDD`[9:Ȳ|:iãFE 0ȑz-ID& %a| Q\+7: 7ݰAH *p NʺӨגxuxK4n,u5Aƅ 8~ii6m`o-Ѩ\\ cGc@J]7=r'+N$3nk{'+P.ݨW Hl~> ooxy[ 9ơS'+N|+W͋ꄬ,QRSm5r>t&vv^:z-#Hu!:66hTh8:"* {ĩ'p,f@ u入Kq,9ggR0mڂ=zlԾ!\._?-h#(H۳t^Kb@5@۷c|`2XTص 7G`JZuE>} àAM/?{G:hkj\8)SmmK-tJ)V(/VVh͛2}LL^pDVǣX[㭷Gxibmbm-uubPx;8^zǀ4h*HVWpoZ-r=dpOGXdd?ѳ'(70\^W^{h4طOc`@6xnyGD_~) >LbTJdf [vzXZJPT*D48`qxG$1 Qʁĉ[HǥuMD88 3С8r~VVh޼)+/1d4='ŀ4tgϊv_}ãAۦ^;~^AϞU9z \??)k=0x;r떍ّ[>\+=WK]IAX`>Sn%T/j܉+$.?1~ĕ1 ݻ{5n{Χ7vnNN;ë~zHVRIW:㭷g8wvvBa! L--V/>!!R -M`W2" Ȇ?>>+~=qi޽⩧h!mm$\̞.NGdt_Gf&n߆Bqv\ܾɓ! 6 H]Xأ֭wӶ(&ffFz'᯿`o/e9l݊I35uHOGkxheU;L84j Hnj޲ҽH\\p"Rk~yJn.}t,q?ң.\0 @L[s&CڈL ӱZ ri;0k0 TM;gg#Qu1K7t$uAvEMsv_*#jfK/1x@"H/":ҥ~kvljD8nCt)RRʴa|nK>vM"H/ĸ5sp aؼ2%:rrpvYÉP- xx`TI$=ڶ /F0k}/">t0UO۴kQ:= $' vR6l@h(p֮ĉеq#֮Exxs;8r>[r4fHV޽ӊxEoh<=qE^7 UMݻ?*} EDaaԴ)~#8t- 1>>CL :tc ̝( {ׯM KSZZ>׍?cn(dxX7 2HAX|^KYsF͟5HeQ%STTҎc`ժ_FCJk;7w ;_Tr_rΝ۩]y'ZZ믗DF._ߧLenX VH>ous;t8pL=z; *4ĖcFPP2Ԑr6...>>n-[Q^ԭ6ϾhaS{%U=`arrPT 1ckOǞ=94Ar2jغMT LҰ/TƽE /|LVv-Z2OkPUkd2/hj2ѱ_7yy y*%J.utYɩLc]1l))=܋/>x1.IQ-PA8;Wi\ ܸQf^O9y,\xstGѭ۔e˦H]:׬{ӦV_Εܼ^4ڬ,<|~cٳr%zl郣8qo)uM3`́}Q,dXb ?D'3i rzdmKaipj5-k0HNգƱc1lƍ{bfYD҈GRAza#H2y7299eZWe6 bE$* M-&։5ICd,}٠m.]tGmY/_Umc@aǫEJB*W2 H"2lm @r2Y"JĉKָͫo1Ac@6 ?V@p.WpaSoO{qxغ~ZY7SZ 41 !.w8++,_-0}:0AHt H"jF_}Ё|9-][h bD"b@6U*!R :%qT̛W}ɓ.ŀ4hsoir͚II%$,H2AA8|̓D3aBC꫸pA߾>=A{aV:)H"͜96m©SXi 1 ZO777 ꐃC9Kdо=~A+x 66 RVA{[9:n8Pa8ÀHHHs :<<dg׮Qm..y2I4 'N !Anߎ>}Ф%0 ^HB$={pxGsi;"I znMݛ#Ɍ>"d='OkעgOtc!a@Ѯ6ڳ#"GYP UyD:iiش v6}cW_ C Zx@@x䚹s/豰Gы"2$CMJ-[PXe X1 <uݡF(=ɓ~/$5|2ƏGv6lbtVdgo WURÀ$"cakW_E~>Ǯ]ptD>UlKKqD) ^x/L:ePXpp4dd2\]ѯƌF*IDFC`ȐⷹHOGv6rsao8:BD2h H"2 ְjHx>HHH v+uDd*`gŚHDDDDDDDDDDDDDDDDDDDDDDDDDDDL% W[#u Dd î|`*i,u Tg={7quIK/טK]TNI] 9 ȡ{n|h'g9SVW՜Ǜoڤ\|R(eRYJ%ƌ>I] 3 I~~[\)y{ms))S, Ej5{yy%F^?bbhχ=RRRDDL)u޺G< +W& K5R4]\MIMI?8nnm툏G7RDD&t\nn+~:7GOO'R$Qmжԥi1݀0o=u\NZ:8T e['%펍]3n{7Ɔ pp+?D*dLDˤ11s%(ɪJU HO{k* Hc`b.DDpr~bh%g`PdFj¤$?9U+k1~yy?T1!+KT=srBh(⣏p֯Gǎ:7־13Ӿdr#Ր ۸s3gok͓'wTӧ3#R*MO⫠58y>BJ BBвeERSܺ2e˘dFÀ$2ހ{|l4o-0oRR[`e^g+9sJo[ܹ%ٳgk_$R*k9 8?) 8deO,=wѺuمkGT6(2LB{r3h|}x1`chbb;6J}ÇKnyY.%w!"gD#X88ݽL#6ΟǂWš4;~g4/b IDATݺX OZSL`aQr|xG_B&5dh&P(r +0KncHHLG㭷xY^^?6`ķB˫蒤R.4СwZأǕ8OjX2/J%:2Z,T75dHz~؉QQ ߿}={waeUIf2gxg  % G~u(w.ApƌߢHJm# . nZ!~8QBvڹsJ&"e,y&Cppel"*gf[B#;mVċ/{wGDT{puȨjH.]j^z ض aaZH'"!cFVkya!vő}:!AiƦic2999|`2XRY3ܽ[{NPݱGn^NNJgJ]0cY(W/c7?O>YՐ"z'LXӷ喝m/M3*u 3l׮~ѵkUCnge:9|xƦMF VEDTc9 ];BݻZZBg.Z)MBVֵfտ ID$.# d //x2n.aʴ|)-{y&AQQF~>-W|u꺀K΍""CeD?OJ%xx8V>5]jdg_OKީv7"" 5H]>qV}.,|q֭^~#=}7.󪈈̈FZt /OG%tl܈}ѫř7ӧ8QnxF~~/ѥ 0Х Zx2p~QQP(0}:҄<(*.&diYT  _''A rr;t/u!w1w.q"#Mx{@.5c&/<8Ǟov?OR*wu,֫=[r1Ue*k6XZ:Wo {.# H-[[Q 4+WJ]jle. ÇO,(b@Eoٟw:ʥV׺SVxzzCXP;3$1u[K]Q] H]ĸf$$$$b%""ggTi4ZF4k4Q& H""2r{p-b@1 бBşΗ~k* 5~IH ;.+S #].<=Fq0$""$$$$$$$$$$[[,^w<>̓ˢEpu jDdt\\0w.֭ 7Se`2-IIX[__Z`@QQq`e1cRT x}  H"2 ع+WLꂨc@QWT;;Le$u5Ų 6\@^F~sN}ف^^ h4fcs68 |*䕿p!Vd~^hǎ|Czb@Ik: YY*^¬YHL޽:1׸\&lW[ $'Ogu^}fNHfYĀ^7g؛e*` XK]Չ @Aq*(|{ EaҤKM=rV#Kˠ-c5M=-Ejubv-F3ԩ\Y{Nrt4+3ݜd=2\Q8 uT'3€@eX)=jej*v@\:toWʝiw\5Z.Se}:hп OtРuOGM˷'fg70>J@QC0mZę3ppر#+ukߕWm\ڻy=5[Xh&4[/;77y#۴)isZF8I~Ddz>j5> *z@̨ɓ?Bͭ~QlHV[|EZ]/;fذ[xy>^vN%DdXR r<0x ,Y?~i94Z_}o8qBZՔOp&IDeDvv5L 8yf!<;Fho#]|}ׯ{DDL:q玦w @@5H"24732\mlurrBh(h )):YtIϝWL:tH!MWe+DdP ۷ߜ:Uv޽ YY׿LXh4iyiS.pI4{WŽzEg11YgѾc@Ij`pq;s׺uRJ711صx JqUHjE^n_d1 Ȁ(s[5bVI `޼Waժm$'ˑ+$vvjK۵;p*!aVR?Dx80c$'!:-^_G  !C&:43:-,,KQIc $&bX[cb;W@>>5Jkr  WBBt&dҩS[jcrB=WC 6m/][ufNY$̈́ؔ:&#H"2,/i}9xڱ# FcT.ٳ%Q-0 Ȱh/yѿ>5f]|~S2B5 \4vss(B=yyHOGL䝳gHNyߏY= ݟ3tI7 ?wQT3o#2R]Ž7ct"q駳FT*L=|*  ȁ1pEPݴj.$h( lq^/9RV&B$5pd9 P#=O--txPۇ+0mD*ĢC#Ixr+:1#FH]('"rQwK #a#HwV'"}"0PjȠmI{Q0tuK]OxHHHHHHH ϟ.u!$c_(LHʪIBL}U`@Q=[k&c(dDD5ХKE(x HHHHHHHHHHHHHHHHHHHHHHHHHHHHHZ򤮂$"C47$""$""$""$""$""$""$""$""$""$""$""$""$""$""""گ\AN}Ebb@D~RW@"a@ $ *uNCH|}E*DĀ$"T` .$SDDD8$"0ܽmϞ1BjHDDkRW@)V""" 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""" 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"""J ""ңĤIwk!4%jFHa&"bCDDdjZ֨i4|FMx HHLw}V6===** H""22t6#_x?ǎ3LExxxǎ>·++̀$""S!ׇ{ zZf\^a6""2!r<|ݺO>s#QO"""\.[ر8IB&UM*d[DDd̔ʋ?Xea,sّIDDlq"{7o4xpvN!""c̭ٓOx_RP({7skV]6+t7$U*AKL IDATxwx357RBBO"]PĂ((]QQEK$M}ذ,df3lܹs̞3\^n٘gmIwjOnB]{nŻXJ-zT",I@M:YhdetI ^.j"Z;Krs|MM+od[/>#{pq͚[T߿~|a9;cvsIyf. !>΍ I J*wc;7X\jMGtDD.v]I_S:v)i w8Fc2@pP.@ں}? ׌5Z삲;7:FI_<{ߞFz8I DW*kr|RۏĩUÉrW8רd*9/b$x=H.@Dcz[}ٴ5/]52hjf/R kLx}gҝ'svSD8t& &1sV {}8V :e†m{}lڈm%-XU%]RA Guw-yfT͌Gqg%_NI/-1"g'MOwW˨wQiYefyP^DTTRVRRs8 6V7h6~'eB"JMϺBĩrO`\fWTvee:87vam451sVY^X6Lq]EZ xֳJJGz ;pq8lWbrS}On $d=8$5[dZ'p\jaӿ{--XA}j-ւU퇗Jqi۲!:x&si믧M& 2@lh;Gt)pնS)mo9O{~0U]X5Ϝx}X"zvo7MF^ٚg޻r~R3" +*<˶3v?lׂ{=&Lr78뉳Za[ؘ oށy!1%<$*-+?tMrvq@DgS2>DԥsǷ]T\j 8Ht܂m[d ѵYjӵP)xgjΝ+. ]2TXnXU|L bWGJ{ f?Glg^Aڨ~>`Zn$ta*/xAgf|./=gyrL¿xܹ_4kcf6et q_/ϭޙhsK~;Wrgv^o-688=jߵ+(jL}&5 ǽ|Wn~mSe%Ytna}D4fΪ${ @^=]ZK di˒8ӭXR6Xnmq`[cײz:+]zML?<=efZG r$r9-cN-p?0008ha]?wt9mҰ(}pnN7.ߘ@DE^NHIϼw`G"ZPwYayy%!3h6{8zvϷ9ѽK(,\W:e67Yr)՚ur8{_ ogJi㾋c3gՀ>=jDze6rJoWk {pX`-lL g,\7l]1+T՞h#Qr,^ȡs6KU K^.J4v8i\NR"(+ӅQrVQW`":w_ZJvIlPd&2]x-yamSZJ^o0\ _H))eϜгc[/GҲ%:kT&Z'9FTi0sg jdcϞDDee4{"⭫4&eSID9C]a` YϧW:eխZ-lzւU}St=z{%[KJKy{PwH'1BUo uzv9tI~oxk}?گz%g#[ Cl-9IgO=Xw%(dUGd-wj:x8=版9YقU~6 ծƲߵP2dᤖ 97l .]=<Ε3,8\J/֭֫#VFD 5eWonj]K5RB}:xgs>^^F,7/1fm0׵T3:]E}01M4֨jnYZǶѺQbzFl1cju]ˆ%o;zyWQdv:"j\Tߵ#"K\f ƴpqk RYn5[JY=XiQ]˵myͥKNOj)##cr32[Vc[' ],p9WY6êA2rQc[5p3g;jʶV~e{~RBLt診J`UeKrVRx8Q-c$0鐜]vaȺ wIIٻ?UTO֥.ݺt]K==u:k\prrpr0]wjhR^j"/S)jztWEeBODUmi&0,0ט zmzAPi}j*Vs5:tc il[ڦj @4+-S"l{k#kPHxyFu s:p YÝCmKd(R m귏TKNNy>?o>v)E5mL7"Ӿ>c*}0$ kΫZI=qVapdl@"J(tppThDncz6ɠFLqkXlL-ʲUPcRIIۂUS2 (3(53A2KkdsyyU Кqcohu͉>12_ҳN8~j Yşvwpspph3GBaM`Do7׆ST\vv;5J;i^Ut3 oR\\[QZtuQZO"jUP4jB.۶F|Xɬլ=MҽȆDRYYo4W+8 ةނİ<9-n0_s.PGDj\Ь*+*(=-uyU40Jt O j\R9h5[4 $]YQQQzZssrՐd^#";r>$9]>fHEEE^NQQQ1 ;m󜮢2>@`Ah6$]\N;zhLtZ%yp4W;wLIܴ977Sd\&SL&uDB9]h^H73Lx^&Cm*B9]_hC`A.]LOMMK&"//@?mPP_ԡԴ̬" ߼nRiHJ>E9ွ`#;/+(..-$"Wgw/Wo//OOCKMc{QIIHn=#\9{ mJj@DueAaQB}ݝ(,'`n.N7e[ã|ԱI7OUHh+~i~~Rl2336lkd"I%r9bӗ~\ӝo^Sk\nCwvեTA֩%^_q#ƕ G2 \ 9(eƭ 9]CmU*u#^aۆGwg31FfƊڣE}۵ nز'Lw{;$Ӿn;{L6_A1F$HFC#pf^^⃽hTBilhhśȿ;w+7+:+f\tzEy4P'(Gs6wnta~..EFNɺgA:)+AicM~nKyRZsQH-4TYŕJuyR*J0V_w5¡3>ײ1bNM`1te ޓd~jFSj ~Yn۶ooh%zXاy*Crӕ]R7˟f|R\'wwֽԱ4VPpuN񬾲RpĪsIo%nly{cB':;s.).EpODFDjN!]27NR7 FLo$7ƘNob/q &!YuʮoZwz.44XD:e*X7'Fq;Ly{M°E/g8F J+WFV-"]dqDE߼6Q1A#l;v-#"Vizs^|m0d<-9Gv–[EŮEq`&]T7_cJ4J;) =]n//ܢrW27w?a4x𙁌S*rZ_Y[y:IF7bf*W#ɪN?ɶS9]bRuvq/*q(JO/.(鵕'jFoOU`A^PTj_{-Lַ ?bN#wpֺhdw%2Ke; 3G<)ZCDDʊsZ[ZaҺL3K;GpbfٺC Y]X*u" ޹{Qucnөš**Lӊ=fRG;okӀ~}Fww]3 9 M5JJfɸ%x(OXn6pyW 7f,QFGܠjoa kޮ}W7weŕꧺN쬐q-DzUr8G`/ R.p:ꐧ4oܙyfƄ/ͺ.e?H̬{ǹ3'=ܵ-UK;;;:;YkTrJ^/ۥQ%רd*y\I.ڛN,\(T=ߡ(W'GWdJ!3Kfi={5* &}W_{mŏ?s!CEQ)Ϝ:ޣ`ác2Sk f=:ӿOs'ʅ^fFF pcڟxk&1΃3vС2 t~_\wwP佃";{jT2O'Ep٨?A]QQ!uͦ5ݑlto4?r7FMfFL&LFCavCzEJ5 բE^yf^[FSKfff^=k5oFS۬5 ԱC]Hoq۳'Ƙh&F8C١O8VPX iW]ߛۤAP1bĎJ>=W"LE#qᑑx˝<<,|?;'G͹J5lȐLI-HApW;<enZe eJj}JJ_/Huӭv^ M&=]l\>\joݻ Pueuۧkn/Rswpss9Ɇ۷6\&Ϧ_3O :9Pa};z^:ǟ*,dZx Ź\P٣C`/Ns?~*2gΞdgKE7{c37l\_Zl-k-sWV  IDATgmWœ>Yn&ۥ/\?ϟ?6B*Ƙl6͂ X]=lfDTQQ!xd2LhWm<{R~:hvЗN?NgY,/V-Zo>0ucG͸+*,ps(*,' #F6nsqr+ŋ]<.օ BQII~V9UŅ){ֽ+|$w{f3#x&7?ݣG>pq>/nu?Jr@~IOIo{kQa.[+_^3Z6ؖ4&]K"1&d2Yhx"2͝zL&c1~\j.,ͱ m3o?g@ee%r٭|_~ {ADzÅw}R%A]HHqiIn '3✝]]8;;k~Yj߾]vYϷB޵~i6LN۷ 3A`8 zJx-Y|`^c:/\p[q޵^_o7wl2MW?L&I&qM?*>6-<4L8_~y͟@_7"z[xsXF5]_He{rE2'rIEEE--˿fθ7tۿe{fn#gg~N:-a'<8ɗMAFdnlj6Lc:&/͗lA`f, f#F2x^r~=qq;G߸q¸qmkq<''2bs<Lj4^G12")9nY,8xz12z}ppwb{=kLA"ziYf6)aFJ%]h-{rKW(6ZnسwA,ٻ722Rڐ$W%{Ls$0N&Y>3yi +]oN:ffgI}˳\ia{J Eyyu[h4/4營~?ppؐaR~,GkM,缬{O*A4F`ptt4amwKK/ͮuҵmRGa|ӦҜ*:'4We1qr1Ƙ 1":$R)'?i?[;г{ uA...<5%ֿ3R,wjqqqUL#­z[ ˋtIit'|2---00矻{ʥ1y7,'8L.{HCТ}Эw}V+ʲuuzjVɮkܜƴ܄0`q7vo^c>v L&j}Gܹ-Xs}|vy&۳>oZ]UABQn)VPͯB]yrgAs_~lp3y,WWo C9^&dd\s/tRl\Z"+D]G 68a羏|ZYY٢7~bbRwwXK/0ӵersSS.\#SZz^Mx枛߶=4Wxc} ,%>_~eL.>ZK͛o48 STwyd4uQYQamB!"?/ZسW?h-SO8xȐ?I_NNXp7oxٳg7Z[XqcϞ==<=׏|%%%~٧-Z:wےGL2xȱG?׮kRL~pΜ>u^Rڵ~ҥ_'%%~~uZ;ؤMx<1m{f6R~gDpѢ>';r,}U2p<5"ّD _Zhjlw,Q~YV*CBC^{u;-%4tĀۇ0svAau?5v܄k6sLpF_js=p c~hG%k2߰s+5"??؀ۇ >r][RbDFrJ}7665)i֤ܶ [b8_|9/YJT~_ۥK9rVu_.]8d^[2'%|x)~ggf VMl6;~Ƴqۋ/xn]*E>e*"?~/N/&LoK`Aݕ E=_믾n0ԑ#pvvV*ݺvnٷM ~׮S.../uji&y)O8|p /zz7KjF~z]B٧ri]l>{/+W ^/u8oWZ]ۉh햡 k16߷?7gppO>϶~^ضuӛ+8l9gnۺiW_$&&~Ͳjsֵg,JKsrryGNNnQQ1&ͧN%6;v.ᇷ|mMo:oŊъ?sl/?9j4|PJj-@`6lNj-ٔiVs^cA/^z}RZm-SE}R~>\h3>>H^z) OOϷ|kǎY~ky;e2ϝw9Aaa LJ FD{Y>|^h#͓d,41k;uC59}:k `02 5Z`ڳZ&msoD󼗧mr>^rĉrY1FD/]em0sgkΝ21J?5f׫b{;нkbk.G8Gzŋb;[ DGӵ6AWW~g'Z~oId<kpSӬj~+N{ɧ^P``KOF|7絅\#KHy'L9gjO,66C{ tϽEvhyPT\l]M_`;atΖ-9%%mkMu9~?~WTDtQkyu=QO^~1G7mʕ[6mz~@"8:v:u&L&VrVv'T~;wcmmZWvنtvv5^sʈK=EFԵK{o#:|3ӟv]s}VBMOod3OMܳ3:[ϧz=nny!U=^=7sr\۹kפ&[Fuޝ򫯩5?s=|h<|ȜNe[1'z:&m߱\++/߱sWppp nzsf~Z'xG Fф9s_Ft1m0Lo7x3}/7K}))OݳwW- 2Ժ7.Y@ TkBƈsO4͍ٳ֚a'NV;quTw]W֡m`Fo68Zlaa W/NH8VgjvZu!1)i#FԳ)iZXτ5̙;w]Pz>USY֭U,lٷc#;}h#S?nyg5'7O?ۆ>}vرQ ?gؐа}f֩Nx":ty-kRK>^?OL3':а'|S(`S=xEE#S}vƌ=zQ=^7oʣVTT̛7o3juNz "k'בc M&ǟCbR ??~>>sd:s܇>:>_`[ϧz=nn܌\yDd2N?q駧Պsn^L***~YS\ls<ѕÌ޵}[­WKcժ:ř3g[AJj /Zs+~9/?_;{?bu,!?>s11b{$]3yz}UOXj˖ڼ֌mM"//O{ ?ZTkjvZɞ={frA^^rR~5n?3c/=wg3zO7h٢Nw~D)Hn߾}f۶mt*ɬn}􉌌\pԁ4`&M;vlٌC p oHHԁ4 ===TRٌRI@$H"A .HtD $] I@$H"A .HtD $] I@$H"A .HtD $] I@$H"A .HtD $] I@$H"A .HtD $] I@$H"A .HtD $] I@$H"A .HtD $] I@$H"A .HtD $] I@$H"A .HtD $] I@$H"A .HtD $] I@$H"A .HtD $] 13&u-B.uW?VZaOȄɓܤE`On=] I@$H"T`Gٶs**\A.O{I#hNH`G><2HtD $] I@$H"A .HtD $] I@$H"A .HtD $] I@$H"A .HtD $] I@$Hb:XC@bH"A]|<](u $]]HYYRKѿ?ZMGS.RGR+%K@jf3ܹ4}:=J.uL-IWRgJԖ-ѣihrv&OO2||hNheNFdYZszӦ)-ѹޔNd(7 (agg[.~-䐟 5diu6MY f%K bLPnT0r͚BC_%"nB6kȘaCkbqwߟ IDATd*%Dq%]";:w65z)(RS)(jԷt]?r} -.Lݲ!C ٘g}Ҟ|rf .>t!pKRHmt䓫?\>xm{4Pl;6>+k̲!!DtGhhfy"Ic)݊{vdB#FCC_~IZMқoIsic,8;[89I!HITҳϒS~RGso߃@ Hj ;:7#3cOl^?v*@g+3 b!n #!χ _PWWfKrm&'h4~*/O.)@h6~t7n8[Pȑ.\vtnHbK@T: 0ԩ)%%..*Z!4s5_5M+V3>##U2Y;wuqn5.HtD $] p.U!Ξ:i I0֨Z">@D 2Ν.^L3fT/׏[NA Ie,[FRY5OSe5%oO7=![74~jar2mK]RBixbt:ô#iilA8$]4u*C{^-\&Oiʫ[С4v,a WN륎nw?6jPTPRcJDDd4BA99Ir9OO>I'Wx1ee54F;rMᱦM2;$] ؈I'uH9 T>So7h.߿pHڸƌI8(%q*/9 ͢ DH7ms[&{ vٙj{R){pp1ƌӧ 'O+W/hBrtlmYZD G{ 'U @7LFMU\Nu+uzZ۶L ޘ{qr"'ܬ h'M=(=~hdڿ_셇vA8$]@F}^Sةyx\SxTZz+2tZ̙*ttEǎ!u9])-I@$H g:i ""@ e1Ԓ" tv9Np@JhA.] Q1rIIzY% '>L @4h)zy k`"*5dQ(gCH {-X/7XtV*5 ܹ󅅒F.@Khi3c۶i11^m\\,ZGOr尶mˍFi1aO}8p˗ݶCz{'DDLֶtذ Ђڴin[x,''A$p+.@ *4͖ו&兏FSj0@`O}8pഭ[?8x,f)S(u#~81c \Rɂ\HEDzճ;f2tZR&k^(p*[ KYRGũ˓:%Cn۾+uP]hi)IYn4\hN\҅f;Q4? :(B*hŖ~5K5?.\rl{Њ)x~͘1=뭾}Ӆgnh[A"bfI@Ðt992R( IZR" vqics' ҞǷn,+wr" go:4:!B7ذaÆmk"#ڔxNU<>I))1J%"hdhhkzi ILG6nق-F)))8ٹEh7bںQ'NPe%=[(E:O+VcCрUd?ؖ-:%˦jN[{v&]#`=w Z(hJESC?wTx~ ֫Ċ:ݤIw: "k#cSR(-d2JkڹQv&M FuB11}GU&lgH# "M* ,JQQQVkCpEED"" (X@EE!P ̼BIBz2L׏3D׫F vƌ1; 8̃y>\Vuhv0 ̘w)6V[Υw/$gf6 ) xЁ[WE>8}>thᓻt1;鯿Yomv~|`f&p fp>V{.Zt}Ӧvnvew8cBC_ܲǣGj^'I3 ?WU-ɇ;wޱfMIIQcDB))Eҍ͚Z5k>Xy$uͶzMXTJ$#۴٦)܉w3}W*twUZϿ5*j238c]Py-MHM5;Kkcvx[~߾!~~YN6PZڮǭWƖn)9|돤7 t8=qp;}tih.ajxykXWlGY^\]C|EPU(ݒdl#V~nh4o!ݿO>s=>V!ݞ$̙:u|E^{{m}}_m8*X %8UNs+"k޼yH4'twOH}*g_ޟ??~۩^~YKz#kuĺ|8?%%<8؉!ӧ?yK.?8Kⓓsrٳ {S'-X5ktݺF yyu23ZpZZoH23#uQPб̠Zі#G.ͭgҍON>zihh5˴@~j\#Fo%L*"b=~䡴4I5kUJ2{{Oʵ۽Rc;u~]cs8-X)U T3gfd?ns88j]Kpܼrʁ}[nMCB:BϞ({.T\v+ZծݪvB5jІ \sM_|quƁ>>Nt|}5EbL6[rNZzذl5ktGCӺnۢovF]N;j]t%->9޽.ԩA04uSnњ5z!խ#]* p{JaHܸtԨR?ypD֬Y_a>>8P1-XW^Q>\opuuNc֯7Nžon=z?V-5o~aMJM ĉ6vBܸt]ѠÃJY^=j ͘%5N΀.\HaRTu^1/޼ú칾iӼs/̽K@JJRffz|fdS~mڤedj`JXK-Rʇ<آngiQKֽE I6lX{wrVVccN ʍKw?N _'uamQQG=A͟CԵ^xAn %C@-22Ɲٻ7':s}~aam6G4kK.ќ9jҤ\!2||^2dw8K0I}5iӒaszyk՘1ZJx 0I(]UCwt biwk^&'ᲜB#Zkp;|}6o.eΣZ֯۵۩e]v-ZQFwNWJ.lEHxƐӔ)Z֯;|ƍ5˖yŚ1҅tǧ#Q =:0,^uuktp.t0 \}uIop"ZV~\Y]F cp}c}sOgoE\ Q ￯{V~~kԩ[Wgv>p-.*O՚0AGդV0)"J> 7H)S4cNUVօ9{tYT]7d)_g oCC5uWl-(矛\P+L)ߖ-֭`L_ը;Ԗ-Ե^F:ڵoS>\),LN \ UR j\{OaaJNVX*rvoJr+ ^`OtƌٴI=x^_5&az'ef^y6[ڙ3z7zxTHNZBܩգyG7_p1}ĺVC$~n˖y)WfpAX>\ JҔ)ZT.иk>}߬07zZ,>rHӮ][g܆ >ݼyٺ𤀡(]TT ܹ]ݸ115k&yHHVn͐9(]TNΚ1CW\kZ^i$5n dٞ=G32/\x޻n'}޽bb{aXx"NBUh^2DSuރ7=0:!]dɋ={ߙzDD46/`&tz4eo[=FZ||>z/>@Bi]HG8r$ĉ_?W³Qp&ztd.w1;\ wQ B(]-zfɓJJRZQx&YQzT:޽5nnAEΖoW_)5Uvl6s22bQֺZ]r aնm20 ݻ5mzK￯O!+KVi&[7UEv5K5kjPmkHPx,%%&ta;jMӬYSb;4gRR4h^]݈XmڨMIJIҥz]]{ (7$J&݇OOiZ55fdeiիW }I҆ 5pٟ(ЬYf 8 fK}uz9SW]uzGpʺVsi(=D7޽kJKӔ)p=MjjA8|SN([0I@Fھc߲$p_`Y/XU0p^ӧ?4Cm\Y֭VjeٲeN]-Z4~7zj}оua(]}/`՗4=zT3gj85hPzd~}lf,AKP'֞ IDAT?nIVm煵h?k ZQus-Q0_HHȴ=ԼӒ%zY{fl"oor:*Pj^%_Tͯ䧟vj ѥKG9V=P3I1]x{'2鍛Y4i$hx,Ns ϒ+3\&M4txC?lJ+oqXLJ$=]oˈu}bbԼƖ-u7OFkiDfc2^#={ni ׶mFD)Ö._\"#4{v& ԡ3quP5eT'|7bESzU][uNd^Fq5o&i|_z؏-_ 1t/e|Ks`~~ [ t=QnӒ%f*(]_Uvf(Qtv6; lGn/N6Pξ{YF >5afyyY-1S;捏e{$}7bD׆ -]Դig`_v];!C[&}eBJJm?٢7 w挽U.wh{,33m׆  023}GFtF?RS?=p <(Czf\ gZ4;DX*Jy>!!g}BkzVOtRRT!ʦZݻDŽ>qEW7n-vKN1]p| WWDUZ}GS֨ Kv[Zi8X}?{ǭ˳c?ΝYS7cMK~}c_.>>UneJ.1ΝÃmذl䬬˗{{'ƚ0T+uיԫXz|xի/"eW{LK~穧4kVKj-b^ұc*}S>`iը??OcG$:vLKΖ㎒R~*˿[t.whev 3;GIAkT\rvVB…[(+KgAխ{}&/8 סvVf9 Cav3\sR~/ bjU қo74n1SPpg׌RNi^]q9`A}񅢢. ֯|}/ ^~[%X< r9r`VnnI4lm:tpVr1C!sEtvjXժNEBµn UxJvv)K}|R-Z(8R *0ݥKuuz-:ZхS/`@uPp-^KDpaoPM^sbxA*8<[oԗPӅ˹UBC ,RHƎo8%VY$&jժE(]zumذ޽˴pd֜=rD}ԄUp.\CڔXhV{kڴq={4o&Oq+n8 p8XktL]^ڨ n(B6 Ohխ[/fה)N_7ǖ.\b90f[_|={lƍz m\_z5},{P.\E9_ؿj֭g 3Q=˺e~\Ç˝ @Du3K&5k}{eM/ԩIeht5jT5 .\Ԏy;v߱aP蘘[WBBJLԫfӭ]|OVV?sgM9S9^\3ms8 Z&}s6mJ҅yk۶ o!C:Th#"JIъ;Wk몫ԽKYAmؠ ILKnĈ/ddXmlX҅gtZlǪ}&u4eK_glJhh}yFYYZ`)>^S)eeIͦMիƒPۢٹsEJߨrvoPp-^˚[n1bM!!0“l6*%E۶;T{8WoEnرOw__u|޺Nn$I^^][kfM0PIk\)1~7o7v̐?dn&`U[ދ{۰|^x:W3!f622!%~L4YK~|2(]d߾Ĵ4IY99y v ;v;;֯ŊOeUo܆ vN|wblɛ6=ףGDpь. 4 Iεۗ|seݣNjwٲշRפp J@՛ٻOc5*Eñii>VkD'潘ҥ˔.] I `YH)qLP .t0 A(] B`J( 3 < 01_fG(] B`JP .t0 A(] B`JP .t0 A(] B`JP .t0 A(] B`JP .t0 A(] B`JP .t0 A(] B`JP .t0 A(] B`oU1%$_M*84P ObJ)2R99ZHO;tef'(]M=kssڱC#G .ԩ3FRnqooH.t>HW^z4|.LcO L*ˤ|p 7az:kWNwk sƎ՜9(]STVEÇ׵t&NTr$խ$S@~Hwv4)b<(H<5ezҰa%7Y:}v}|}թٷ`6J,2R1嗺5o7T˖d .e5dٻW/4wjάp 7wz]Kήr8U`nݼe(iZmެQ _Wb/6/(PCn7( ?+6V?_8`.v/#5g&//9Q 8Qӧkb30 OQƒaa>]>{a`v/ã.] $.< eP]E@p. z(]T'.SQf>ƍ&eP]P~.ռ-3/jEԯ:w>ۻ˗k=f'(]TWsgqvД)4j39F_?d=vTfnv,E֩^]>ut}}Ş={̎3@SGKZm۶K.L<[ Ww-bv-]&M4k<[ .t0 A(] B`JP .t0 A(] B`JP .t0 A(] B`JP fTPnnovR%UmƠt][Ef)7<.e˖tO޼ysBCCkǏY_hJU׮]͎PV7tSgZjժU_THA(] B`JP .t0 A(] B`JP .t0 A(] B`JP .t0 A(] BnpvLOwTpfPVgZ,cBN;vWfUyY>Vv_Fdݐ!1ۓ:~ZlRkAm֕-n3;&{p?‚|}efJ k\ImΜ15 o#5ƒ:ԫ-[m֬lJEd}BBz:?nw8F]UNl&P2Jp'vĉ]ݸq@IvO?;k1;!pLp?QuKrHcׯOə߯\[[ҥKsYYŅG̞-QPwiv:Et_7NyaIAA ؽ A(] Bp=Ӧp J9qSP\Xn%< eeOKK3&lѲef J\YxfM%& @P KM!vmFz}&L4f'*\؛oԳ6m0rUH0p{L8/dv(][ӧOD?TLٷ/3'Գtmٜ @mv)6>įzgϰ%-v.T\.T=3ʲ.ezLM_ (]x\Ej׶?RS'}պX 'GkZkpWu=opCی~˗o6?Dy[/]uպ7z44ToР"f^}U>>XWܖ-Otz:7wʕ75o^Gty`˖}vuDc]4un+8P={*߾ⲘۧOᓻtTtౢx뭵jԸr#γXtU1C>u}zy6ۂ-j*4]< dw8G|rĴגbBCXNwԩ:yR_eDo6A``fUP@%ffɒ#_'?`IKmSr8ݫU[ZJHM-TC*tၼ,RʵdqqڼY>>7ƕ4Wg]Uh.pαcZ@2MT#Pv.YuTFf(]T{Cp<})>^6gv MӵnoX.pN`&NTQ7*A`JP .t0 A(] B`JP x@̎cQ .t0 A(] B`JP .t0 A(] B`JpKg@y@)9r`VnIT 4mjO6%ʠteDo6A``f @qLpujZhpHT)aTIDATT[ѫŃ3{6> JbK(qfG(tnn(7t䊇K_ٺ-[NZ-G17t7ʏ?n!!fgPq^܀h]. ;t7P? Mݺ׷iS_//6ar5|f0hJpv_~/'U* o\G&m۵*mӏo\ȱ.F7nid'7o}=xGǏ7% t6,:zXtX#pҦDSl.pܱf蘘.QPP;vLի89&2tfXy#Yv}z%5m{5,9B8 cbtҤfͷoz-Mb$hSNmL;qS v옿cGà11#Z>A\6nԓO[ڷWx^O?-WizECU\[۶?%ex֟ҡ^ %%PG&UyT%tfs8V7S-[qzriDZƍT5%'+3Sfte喡QQE4mEw }xٵK72.pݮ_~ :G͎R6 h o33K o;u?8%bP$i>Mm۾+Vá])1Dk oך5N$csbQzvқoj8?*{V-:UEi T [Y,s]v@bbwٱJt5엸f*Jk<+\lʔ*X-z(]@U#Gڷo߾}{ICgvEFjZC(J$=fݮufg*QX DGHhhy*NT',J$ըqtͥoJ_hv2Ko?HS9 e wi\I=fe))I͚Ui `Kp[aa VB6-fz޲K@UbKpg=w)|7HUJpg^^4I?'˺W_W?[ t7'kKyxCǏ IV <cOkrM^Իj(0a}WlZ4)%J  ѠAڰAO=UZe+"BN Tw.Aէ1;qLP .t0 A(] B`JP .t0 A(] B`JP .t0p3=|ht(G<8nw89rsrޟw̞=+R.av~a.4Xh`st'ObʪaÇ7;E].\e&00裏zq~KԩS7oo"']C q8tnno?H[鎉㓓Y$[S?ZBN<5tm۶-t9 @͜9]v\{ӷoLL/O-n2 @Y7g޽o֭+LZV.BcXq X֙o+A.RLS.˫Ik0;O`ZV6ntQ=޵k [׭ۦn]p?%+++zl%hWu6~@^kvn꒧ܱǻ@ϲ{TIޥBcG{v9pu/8[$ńf5lt=OV}l+|L//uvѣQF nF>uΈ ku{Y5iڴIӦrv`[gyX3P-?WIIENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-simu-settings.png0000644000175000017500000004043713413640652024440 0ustar rubenrubenPNG  IHDRsBITOtEXtSoftwaregnome-screenshot> IDATxwXS$ADT8Wkv8;mmVکuwZ[օnŽ Cƹ"QP79;|𒞄*hZ>%M^NM05f1+1sɖc?ݼUNMx!B7Ҋsv]f 8ؠy !Bi3BKwoʹIGv+ڍڔrB/KLݺ~E !l-!Dr#)=>1_tzV%|nІQB2^BcZ {>O3n`:ƜWU;˻j͆B}ލtڸHٵ(&N^>F-:{;7h7=7  2Sg/\o4 ! FgBݸ}ǽ݇oD\q>nLF#lӆLE!xXmk@ϣB(J+`GMpQ_{6GidtmZEdC?/Wg^>jftuyM;ql⁂oo($ٴ!߽]U뢅]G@qU'kk=Ԭg_hC̱.]syO~=(3;ԭWKRЩk: B/5_m¬ct':dp2z^(6jf j3:9J#fuBq϶>}枑irvrvIDr}~751_w氞FLrkϪP|TljX}_li-W֣^,t^L--j1z}.Q[>?U6fG nM7o//'uy.l "j좦~.*lV?VsyO;U{&NozE'SC1'G jZb?ne׺!;G~}td<d GַLMM\=k߇M\ޮeV9tNsqv6:;]]]\ j52LfuqvvwwמૐEj'/ٝYQ>ӥSM&_?~FH1ٿY#dዪ*ۿƴPs~9>lQX,Bhl;9w1w:Z/bŊfگ(J6u_fnw2 #Wo?)3.m_WS.+.1-d~!D$s.{b/]~Ub֪}A*}MRRS !RMVj?u}-uk/%Yk6О MyysL5ZE1z'(ii.ަS;ǯSſu* kps~nEa/{nrFjj.+7R+WsVmBBP_*IiW/w*Fgb体 BW B;~JQor?}Jbʪ-G 9%z2B/_u2~ dIJ)E=~}773 +||[Of8;;v y ˹VQl_id2S zBjS}FQ)㓔c_,ٿc#-jխpYj739ٴ):G8qUXf=kw2[ԥΰ|Oʦ9ْs|A>e[&4js?ϵsNNU*lkTtގ'^X5ȧjOX3@(-2l]zF}Q^BtE띔6͔i)^7gxb1\IɊP!N^JpwsMNIcۜKx\׭Pj٫JlNJNpITp9dMT uvrJNN[y(ݴI'}~r=`O|W_7.~.(9Iyyժ)zN zAw͠ ]z qZ H̉4vOqGO>^Iq92>"jss5MBt|GL />~.& !ԩx) ΑUNTb׮g;D:sD+W.u-l T*-V஑zs}^)k=y̱9'X`6!w |96>ǎ1zx2 nnKw?wsB ~D?_ڒ|IٶMˬ7E611G-VٷXAA'CʹV׾jS\O窇Tz-Vپ~ݬZ%~8_;xO69T!v9ނyJ37jSg[]c>Z m9Գ,G@Qt߮U{̳݌N7S2j_l T1i=1o/.6o{vuWn.SjYMU|`vjRm# <]LijUy*/le="nnKf96ťyeO>eor #w %ǩ3L&bE8վ;(hY/oL /Bu5=}gd;w1=#ɩ\.W߸tbmII)W^MKBp87K !ү\jY 'e<N2i;OZ,d0{'R\_V3%%ZԔTj=<=*:9ҫ ݍZԫwpWMku mb۹vʟu獭|>\?f =:{mߩˉe]>Ұ~I vf$Ph=d+d>]{H2Uie=O}PQ+pwyxGV 6cՌ A*}R0[uy|ECc)o\<]3l_P.$$;mSzIF|J/%-ܦcV/XMtz̔iII yyyzye{Bj{GzplIM ꊠPb]OL) K|(AB= BeqԥMݠ 28\EM(:bcB,_sP"8s3Wa6-tZBhwrrqKܺy͛7{.N^V@ +z!gNQFD =`ݽT_qOub ]Tp~khLIN*/FcX:GnڼEqt)i ^K9 %N jݨĠ=啔)28T<ؼdY_k%f;~=';4-1Ԋbc!ҵ"Bt:mJ2NԬRnڋڥu>WڶC"ª=lh !yjԼzZMj>vlXjHQ[87?WBj̟ڷ_s~g_Nu~7_з3Ͼp0#BBMX4}?+.n߱ϐ}۴i{ѓc?K۷Ү: +`~k6\z3a/[hS;u~-7wO]lӶ|Ma~'8y92q¦^KB^K.y9x\~cƌeѢ[>uz?fR?pЁfROMOOW- BglPŭ*b6lйkWU}ǯ&mbil(Wfc7m\s7w1xzyȍo s/ 6ժ-\0য়U;wt78"ԟYc@֋}j>vȫÆv5Y?òe6/*Wrvq~nIvn׆}'}Md'}&|y?g[AFfRw<˿zr\>(B9|}y˖-pа:_xڪ=suE8hp|\\q|ȔaOjJ=pĉAGԯZn\~ Jn^M^ZX98ؠWqUT>}}osiնf~r!D%qUmΜ9ZY+U6s+ȃP٪J$glyT?~oױIww5#|ҴgϞ~oАJ|W.{nҴۚWB=wMUQmZ̟{I1d!*TZ1oǪTOUՐV)8Xfzzv}۶ .W)Lruj^z5ȬSgݧ^8|h~}ڳgEg}wF|o޿wGh~vwnߺc[tU}8޾IUԩt2~VM(o/^xU˖[6m8oFWVڕdՃ ̶pAVm}:>f'B<~Td=%KL t'Nl|̖(= UfuY0wW>].^`mB)KCh1zKO_SU5ۀg6X0wOk G㜅+U^vmV;4)V 6_N8s1~_-Y UgCͶ3^~. bo8$Y⟗b zSf֭:ow}lӤ?mP`}[UWh...-Y{=di3fl6m%K?OUՋ.k`0׫W_f|n:w|5-U{`z CxxFL6=ہݜÏ?2""`0DFF?jԬY? dT%wR !_6!۶n9|쬇?'ܤQx|5??%웿h=YGjW:u:~wm߲yWk_[n:u !.?׮CϿr֭s9;5,#_g>9'(fn#s<;;)fs[UBڠ~?XצMRJM\]ӵ.\7={h33GkѺu /lD^y}6y\rih1 +ٜfPU""#GF9uz7ɓ 4jؠ7s{ 8[j?/]Yxa=<=<<=ڴmt¬rnXZO?02[gy|V p@^7eJmsywVjXn7_s#W,_ezkoߺEUm̶e_u}=o}I|k4nPwoL1V p8̪rC-'O5֯[?}rm[V l; !5UUVPo$صk׎mч.;EڵFN>|!tʡÇuCW\ٷo;ڵvXA>ɂs&O.珢\sС?m?ءC{}ݻkժ]WC4q޵˾|]5jTiげ%36?glT!Ī56kjUUO_϶ʾ$,4`iyvgzf]l;rʕZlf_ֲe+W=d?ԖTRy{p:RwޭN}PUu۶+TȶUS3C<}̳gύ}q~чaGbbƌ_VܹQOi˟w̸|a#11cƎy؋A(l)ϱQw/ +s?WUhozݻugO*}oڒ1?9O?Pv?>~G=̾o>M~Ag' Ll[1ht5s) L|||ٲe۷k;stgg5{mh^}e{ڵKZz߉T!;we{ 2[dR0o&߸o_4o!eff !~^CuC*uss6:ܽ'~>d,l`{v荛6Yf1숚ګ%ā}{;uVܳnt´SBEMQև˟w|QUٟO/7ޛ#fř oytJ =NUmbW}&ed~4~\`rT(W^.8 IDATu[#..*%{ڥ])kߊB7S߻w*oJ/EoEa!*@Vy)w\=ˋ{ t:/o5k ȹq=n.7`pqO=~̩F6hm-gli_Nz1G4iPU J=gggOϛ 9WQy( 9&*2 3*2 3*2 3*2 3*2 Zɔa2(w E^>B= _nڴ1zi杻tTO %P+jtnjwqqq81tc'&c"2鼼j-Bjz^>^>,iۮ}` o[FZ/Jrrr˖/oۮ}@A<ةSϟ8pPHeר9x[n˺۶m kѲՒKM!{ȶ7(^%o7__dƝs+cG1><>p;~Ymy/YŤIW.nټSnjy[tl1ܹS 8w|a^D@Q+_ԬYSQ7Pطo!o~/UOB۷O[~!K```Ϟ=[:>C2 +T3zbĉ9@%򡡵mb/]]e [|ʇ !V\qF,ݺu_rU||A9񞳳;{!r9sб B;vUヒ|n6}cͷ\`A |{9k95idB~[@6mۮ[~8yw|}}5~wR(9 [QB^op15ed w:|?b:7m`!Cf͚7kVCׯ_م pC(.(M5;zbqk- @ޝt &SF(Q2@IP^}+TdF@fTdF@fTdF@fTdF@fTdVO802L&ScEB{ؽ} 0z}GbS _yUU?f1C+Ž:?<܇t^jx!hZwر\`r;t\~}OȺDxɒҖgd۶ݻ?Tbـr-ZZti]eJ{^߿o 5佇o7__Y-[tjwqz ;w^7ҢDT^{lh ?6v̘1cFl?ľN⋚5k:aZ, LXǘѣ&N,PZ),߿OQNve߾}mhhVٳW`ӦY9s@iQ"*_t_ 罼r[PܐEDD !9<|"22RVkFƭ?*{$&_?  !ީ@Tr+t:݈#^7j:n[oik#""3fb{C,ŋ̙۾C;7XGEE-^b[^ɴ藅QQQӦnzر*Vz^y&M]{XXw (ئmu׏9.(NE:/M.Fõ !&Ũ({ֳ^Krەf[X~9gbVP4m| (EW{zzw-002 }@匍ǐJ+<Ǫ̏<Ǫ̏<Ǫ̏<Ǫ̏<Ȭp`2eL(-ZF[:?""|@:t6?1cݻtE,̹C4~G .|^ ڜ$@n[3SFƘFBĄ&_|e^4io {ʔ)?U [m1}]ވSNy'L[Dw "Z%^b4:ێ׫7c?>gϞ-;wޔ)SzW_899<ҽg…BGyӵk##79pBUՐ5BPUU/o 샷m޽#A* (עe%Kf=Pk}}Ν&e""ϟ?Y%a^B̘9S9mt!K/PfKF믫m׮bBijlҵb޹sǙӧ 0pyY矖/[zJ+>s[(W0!ÇmaAL2e:|IӧrO>ԕ+W۵BlܴIǺuu !6ml -˄O&TPcB 'df1cƌB|= P%*n^z?vtŽzX,Wh֬hZ֭^nj6͚5FٳW`ӦU !Μ9S:uhWj׮-ؿE#=yS=8;;GEEM6ShmYf[ر3u֭رu۶f͚/^8t3~Iqk$(q˯Cn>3BtoþP;'3v8ܾ}:dff7Nd9]#OÆBZ͑#G^(]"*)7L4hK}<1tЅ 4lةS,K||+~4[jwHKK[dW۷oW]ڵUem"KB#svv~w:dX.^8g:dcF^z5..nQBW_y>\P@Ew_622◅ ڷou'ԱC3gv%>>^ӕ]ʗ:m1cSSS CժU}_{> $$jժgΜB4h௿ZjHH}X&M֮}ĉ?-))lYf͚9 k5}ܥٳg2sNw+Rz)#ht֔a09PTTTTTTAFΛ;71z_ٳsIk}۷OWicGX,wm0<ԼE(Wӻsn~ɔQC(gl<>~VPp*2 3*2 3*2 3*2 3*2+'L&)1xzz ((|333ۻi͚w-ߏ |4房3w].ea'W^U-p)#c#J!?HII={+u[ߞ2eJOjUpppBBmfLQHVknBV5ߝY̘>]QgR̝;oʔ)={BBB}ŊE9' 79sU˖:ul٢ӧ7nd_;mt!K/P|R+Cb_mBbn\k׮נ;uBt9(Uwb bϳge}^6?k׮-)i@iUWUu֬E9t@DrEQfA{ gB|ͷ8O(ٳg[ll_ܲE3glذAѧC]pKÆ:ubǯX&8+?sBz2B|GK,NHHԹK@аo=-F(!^7edך22 ?9\ޣG=zd]Uy}WicGX,wm0<ԼE(Wӻsn~ɔQC(gl|? Pw_wQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQyQy(TUU*twyJ;j)Ns}|Ο;abIHKKM9sQX: S[Uջ?I@!)(Jjr"49A}|ԫw񤛉<NyyԭWcBkq׮] ]7roҴ=m(x<Ǫ̏<Ȍ jX>ENEuz}NzfŋLH-:;4,,J''|SyjvmϞZn]j^/]fܙS6nu_*tXjӶj˽Tf^-zKr\ϫJ9UMH\Jq㞪x3l;J=ͦ5 VMU@Į<Ȍ36d]=cc0,O@<[222Ǝ^L:Z'UTTd2kٳKHH8}k6yWQQyP? 6mZXXwVXa?d9uԚ5k֬Ys111]v-S[Fϟo_| UXw1EZSTb޼yÆ w?㏉?ΝѣGNΜ97/5k֌3fɉ[l9||p<!ɓ'k׮ﰯ믿~4iW_}ڪsuٹQF ,Ж?~5rrr\w}?{r;c‘#GZliٲeCiן{ƍ?裍7X|Ϟ=7Y(r&Ll6[,!$$d} 02Wt:%BǍ۳g 6Z7xWׅ6ܹ>>>vqbf7yԩ] ݼy}[ԩm+/ì͛7}Gȕ+Wu~TT TO8/dff&&&]'UϿvܵk믿 /h}ק_gU;/RSSSSSs(lW36/琋ʕ+bғO>uYj߭vwީC<}…J*C[sN0a׮M6矴-[駟>_|QUm 嗇qG_=͍2|Çg۳"11A 4(!Dvڵks[!C5]bUw UUU[Û2~yMq{.vT"=;q=>}Od<jPyNKII[6^_T@)(>>>-;7|}(J?ب>u3OnUVBŪW^Stg'ѵ < NnEIt$ !*2 3*2 3*2 3*2[Q.^(ye C{}ԉǁIENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-fourier-settings.png0000644000175000017500000006527713413640652025147 0ustar rubenrubenPNG  IHDRsBITOtEXtSoftwaregnome-screenshot> IDATxw\7` NT[',[QiR['ZEPTTlHBr?BIH']\ O.o.w$ P+ނXWID(TI.҈ @8v._fB.x˒ft{SjlL5*!-u%P <) ek|z[]O5w. R -o뚪kr3LXJݸg꭮⹝4wKXlnk܆bFCURi{zki#daL7am[WF׻]Uf$ 9I}{AW 7|(߇ycE%Ul!@Uц3B$]~Bhʆ?ƹuMBD N3! 3l OH$݋7VEDD2PľЏJjxͪuu=eeLv3Ҏǰ&ΛڦmR ܺG1[w8vp;~*q춰!ϷY>F Bs3Ѧm Quo {q?/P( L!D"0 󱖖7{7o;艞ө_T\zbK*e%BchaS6:a !yYR樨(YWziRUЯO/Ur0bCmKRIY勂bH4foE*Һ[wG!]Z/3CM z ЯH$z~}MU>55`ljd[`<0WUo K%%S# 筙/(y[[Ң@j0Ԍut5"WՄ;?F8q#_ho/K+)*R*L[<>J!s-}WoB)%ښꪵR0 LG"gﯝ:N\iz(]U&*.55eB0 W4P [4 ðS7r4퉍eI9]e$qIQqOlǀc9EG.g &zBq!ƚT UĜgy/*^ Rtr{(\1VR^p6)'}_ǡE_{ 6VSQcW}C@cyW]m$d2YQ@UR) L"|r_(;0>B!#xV͓*%f@Bẃ|;i7/_]1c#! x-<-W_a7^1}LV1<4)>ѱm ]e'ՋطsqV4ΤWTy:izưb;Pg^kڹhtNQM\/syWy E-:0Sc=uZ ^w(DFp8'o7NzKyp_vĤY[xA>'3mĊxfoW]6Uۿ22?c֑Ɋ4MAIHRy<r0>OFSUU1 /:^3r|ۗ <9l/gk~/_=wewb2c4 DaɿVT7ry- E ޴N,-5fD%>$iA%DgU齙v6WB} 5Y ,j` tBC_ڐ ۖb/YF1YDFs P]#ׂ5yl=l;w`gXqV]:h8cy׺3I$J(PI$p!H iki z.QZ? 3QC̘{)Ѩd m"|hjNBL"HKU,`fZJ4u"zV_C PQe B|F}㇟sU 50j &o`YFX3u/޽ Rľ LpHDwFCasyT]L)!S֒H$Wk$*1:$;455zf5ϳ}=拑 maXC|i!hQs?ۂ3aN[ǰ6gm/30{[ïLH$Pm0 Z5 ?ug@ ] 5>>fZ[ `ކ@O@7 ^~s5P-J!Bd2EDI6DP(d2Q饲pܚږu=ӜLZ N'z?kzSQQ/{7LTQW_OB!WNUEQD߶%"e%%o r^W$-sLt|>23pAB}/&v1 ʱ>jG9@׌GDo+6!}LJQ<LP JPeeMMZCW/^~i) Os^^jcUy6̗?ik_!4";)ݲiCX!4bQYy7**2QP`z:xaI_WVV|=ð?o<m?'n'QYY*KjSwsy6HaLOWlbB6կ+dK>{eyo5%E(}=/Yw[Ϲ#V]n=G4^cǸ^%Hjt6q5[ : 5bʊT|{{/-yUU-G`?3~l*ks7 dߟwWzuMgo0*}}kپ6&6`UT68vkAOFqVU=¶/uD>$1w-P/YzMl MD-:0zqYEĩ Ϋmc\R>|>F"tN=q/)X[Y/_{b6nk3 ppB\~A>WÞh%dG~Kv3I$H`h/Y!vˢWlvIiEcc#0e%%]킢b457|Yܤ]RRNTUW- +VS3BHYYI_OW]؄ XWU <>JUKU[w/UUAr絴p- T]з^ׯ Uo[x<*K|*Jǟ9kN^1RVix ?EZV{{ʸʆ 3_QMW^Roߟw Z4ڟ@r_ό7}P30aWaV!~#RW>/:~ދ_2l.]oy 0k\8iğ5rd;,eMmCin8i\kyyKm̦JJJZZz+X*J1޸W*^19-6gЋ: uj_ _Bc7]ul46 @ zS Iw|ZowQHdZ5!tYo?@UVZ}8qC=Uhi󊳉DdL2aLuԗv, $羬>Б9x6 = U>z9k& }B|Cl f>B ,Sk0l.yYfwV6f1HOJ/]svRmmcO IjI; $VYχLii[7կ2ө {kJ;>"$ShRtY룕ҀAr>f=TU9C=zH+))#tUiSiii o/WUx9B(7'Ofbz##o<͙=EGGW]>b?Ok$9rQ)))o_ ee~uu!-5䉓[ӝ_<ApaÆMM6op!%%e!eېqQGo5cgnUWWkn'gW~]wYls/q ? `6[#_UV>VWS[l^5mڴe˗,*zYTrDKKK;;'97ӓ`xxx<ի9{/@ON/~=ƆΟ;w%>{_y_k||jjj>i=|Ҋ<{۹kE)utrLjjj qBHE׃V-kjjY]J`e5``" +W>xc„PkkޚZB@hcŋ BUUs~ދֱDl8;ڱ?v Osrv^_|}GFE9G\w޻woPIIɮii---#F &W}}oޠhij6j?ٓf[ZZ.Z0s+3P^~yyE.\ju˖.G۽kGceee+/6u*^޺KgvB:u8hyy |fI'ZPjJޢi6e%ч !!aSWsMCAwrr_,e?%Aollė :MWO_EΛ7oZOL:_!ðփ1-X0y'N(-+m;^o^*XXݷ_QYX%F_KU`b˙YN.j^jꪽWVV ݲuH80 $`ٸ9_}a،Ϟk}۶n~pZ^U.;{iwBt1gР_ Ɖru̘tuK%J|`mWvUo pш쇙"~1k0 {{?Zoܹ?t8",4afxިC.\ Np,d 0' SUUyxBa֍w!jkk޽0L+##a|tɅ !!LMaak CC}}C}}mMͳܽUQV0*"#tU>Nh-[$Ύc|Q˽s'c8 ü&}%Ӿ!T*UCCc ))xK#WTTի5kn'xaܹs_oaeeƎQUUR6?p@ ˷נ/[Z |Y\LcVkk*jcc}ۖG6$˯m߾ֆJn߶_~I'Z@6 +BHWQշn߮(/SSvTWj۞(ʺzB(=-1_Lٺmݻi77lXO"^6lX5{l C[FI[s D"aݲ8\@ n!.<cƌk.*MMMjIIIPȞ2ȉf\.NYI^RZr}fbqcmllG %hEF`kgK,O#B/ BT1?{XmI3ZdP{gRb?c jj5^'N? .XXX9r)'ʕ+[wJ,]dcǎR)xS&$$4n޼ijj&ЫBbh0OjMΞ=͚8mt@ﰥo_ϝp86#s'[zn8xР+/f?|ms`v>>xoS[:=Q^5hٳϞ=711mT.'Z LjLJD°'Nj@ᜯ8a$@QӡCv\Op~~s]VUU}3dѢ{CLL,|9>I^5Cۇ8Q߬U77'N=ӧO_33.ھ} [ .Ύc߿$; MMwoEO?yto45{ɤOjYYYiw;a+oG졟~nNq@᯿1AFQ޿|vw,M(~_? >!-`dSRrOIIVWW+PE a{7(_h!^޺^^^:DƏz@^5C[D%~3.Η/_jY3g?/i8v˗F媪*nn#/_%ffs̙%%wj_ MSd2^x2}l1 KMM324%k9~n_0@ȱcEE/wA4VVOsrv]WܻwPbZ /ߜv>xOsrvYb@lmq@6s"uׁIEEϜ9m[/IY֮(6k%vغu{x>~~!{'Z SǃOJ|5{G=ʦ)( 2d_d@/ JJʿ;z觟Z[[{ǎ~_~wzzz;f ^zՊ_~aXLb'{6l ,/00П?ĉmHI'ZdO0o WUTTb8qb7lxiW!ݶ[]{Wmgc7Qփnި2|y ;_yX"uׯ8\=[l fNHӣu]D8(++ Յ, IRݖ33 Rɶ! {E:!Y8 \$+ ,dyj/˳r9OH;/J;C&~u jK;@7inj**m7d!P 36 ޤOdm'g*8z<KM]* B?<3 <, <3 <, <ȳ_nf٢ېH$55ߴH@}8ȏgy(+֭P('I"gضzb΅w |0,%%yEEEٵc$Oo9Q)2@I4/ڦb//M6e+o IDATܹ[ӢwHl755mʔ/ utG;^ $ F }={vaa-[$0*P+ˈ#nVݴʊ[7lh>""?  _͍;wn}ɷoMsζ9y2{‚|k?~M,H,mܸqŒ:%D"JXYY)))}l_Qﯨ8}zqq;%@&WyS`իʚwoBi E8u̙MMMiW_Ғb|{FM 49::fggvIdB=~!hbbr$JcbC p`2B))w(^.8=h"aBKl˗㫫BC il˖4-pӦǏ[ZZJKKcc1AMhii!={&~Tu96{1bI ؞n%N&xÆ[tٌ3~%m#Fsutƌ{#!aVN6m :l8I UBBB]vs3*m>z>Ao%%sWWq6moo{d'?_hGgy{֖CSή#;=>u>˫'yzBn&HHLe<3 <, <3 <, <3 <, <3""96fnC"aI:!n'핋!6=XK[uٸ8ʕ..Z:,o߾ӧO542j_A fjN6"6}:xʊFqƝ=shp,&^SK_'BЉ'ml4iKt۪ۢ={vaa-[:=Μz󴼬t_dĹsx7Bٿ_EyYOsrCD/4toYiìL5uV~jkG몙|.]Z_?7ʙ3g.Y^S"""D(/>shhڋҥˡaa1ǎ"# +"m 堠7.^nGqq^jjj4d8q/ :d2ؓ96bpSMs9RYYI]]}m "XYYWuȈChaÆEF:ag24mСbF-B&njSRRJMMuww_|Λ:rڵ噙Y#Gidh34,YVV=%`0X,1N1XM'vJ>}?vtyso 2BӧO/..ޱcbpp8[455h4|9$88SSk׮999GDF{ښwu55DoD"}>!м Cd>Ȩyj u>h߾Ϟ=܆:avTD )++stt155c~d.ςX]j/JJx]|.!D"f𬬬5kV̶ Z6mZ)VVV))jrr; l`;jJJwn 2D//ZH^K/YzuJʝUW/_Tio޼bo&&ݦ͛űX,4}L 7׿6WZXX=z9''wժբYlY^^+rss\nmmקM.]xmt.6`ݲK: lŊkedd֬ ?m R>_5___MLL5JݸqB--̞.^04,tt {Yl9+W0۷-\ðg:tٲ-[ZD uQQ})q֍O#5occ 3f0/LMEE5W^#fb{O;@*H+.>p7Nz?5ruue.E%%JGGhnn޽sPuu7O7e%чKXD"9޹%QTgב )gy55$O/`f7n@(c0cs, <36p|2@%| dyIyU/Q(]]NvvAB.)+y}d@.⢛7uLMM9N,/6t۞ɔv,blb҅JWrVdbfn^^^F&K!KD sP(Ydygl6{ [;{M-mS_}Ws\||իW?MجX ðsqgMMM߽{w{I1$eddl޼9**dfdd,]TOO^qy,")/!TTT4GP[Gw_GP30` ѶTDGG8::h4GGǀhi #;;m9~S9gҥy/.pFBBbښwm{IEFF;斞.`@363g=zذ66Æ Rsn}۶A=!xU}}*)S35*@kk4- ϘihdNgy󆨲x|}/_xqҥY67c{kjU*TVV:XP7vlyy9L"0 #֬YC&333AT0Db5))Az뤙'yzƝ;WUU񊋋L o'')c99Vno@^R14.`)f߰aٳgѝ8ɓNGEīo߶pBFoCQ;Ѵno@^R{[XXlذ!((NH4Ft9RhլYf͚E2̻i]h pƤ@/ivLr@AyY^R E{P<BH8dyd}}RiCEGBMAk9O%qx<^nSNN%JW8h h_9 %(/Z4% DH$oe5F֮|>ˑ0#]fs}?@AyYdygk`s\~ Bd2YAF)HY^RƼiw^zBdgg/$dyp9쒲7oxxL70"I !|~Iq͛ :CAINmdJ;\161տ|Šk%D|~EE!3s2 WY^R<&jB> shhӧ8z$#{nۅ222݉U77Oj&z. w僃gO?ݹ^˨C?EF:F 6,2"`!62"dh4}wKUUUUUULD㣣򒓓Nxk׮} ifiSf5jT~Aw6iB[溸O>%VeggǏ|>111Çh'OCBB@I ZZZ×/\dҬ IB:::FFFjEE_Ɗh&!Cv /?nr|D"aFTYYY$$VSS)))[`d2դ$Oj&l8 4$Oϸs窪x<^qqڀ xd"/]xmt.6`ݲKq V\!yoiii\.7---<<|D-E4Qwf-[lٲnA@" 6>|x5 '{U۷o[paEE%au5>>>,ּ JJJΘ1gŊ旔)R!rppؽ{_|iffdyDTEDD8yYdyg@]as9, dH"I4dyIy/ EWWwG%KJn޼1A${. %E7o&hk똚r8NY^"l'9閧=)XrDWW +V$÷:: $]=dyIx<| Eo>>44lÆ 'N ZJܓ;vPTT  /.Y4+Af3.=zh„ x0Nh/hɓ'kkkoܸq]+@^ıoHHHYYcvvi'7vlyy9L"0)vvvW똚zXNII<غ[....)))---+++--ū [ATVV+**ty!C ?G YOE53ܹ*W\\6 `^e;9Hmڼl\bXIIg$Y.##妧 Xr劮۳llloU0D6))AhVAV{C̟GbryuuS/uܹŋ;MrrЖOKKriii ,ܹblvRRҲe˖-[9S(vsB8Lȑn#G 5k֬YZ8_|Ihy?9vqJKtttDDD@@Ϸ_dv޽~/_U~~~<  GYD"9޹ T<.DR ٶ|ѣG|p)gy55$O.`@`'3R^;ErL} KBHx]Q( ,/2oPMЅ %<,/rsJ~.xܜN9zIמM0j MW嘣ѐ]B{OҼE,/[Y >r9xYKplNG(Og@AyYdyg@AyYdyg+$IMt!6pJ.Ν;n^.%55mʔ/ utG;^`(u񷯵g.,,ܲe$C%$$L6B<~HJ:mzDO"Du(emo''{Nm޻w o￟;]?\8((hƍ/ؙx{wڥkN>޽Bzﷴf7аW^vDz InjSRRJMMuww_|' RW[>|4h/dee?U ;^#6raܼycܚݼcjjp:=dypnyzz3Ҏ c]]˗.XV,߾>_QQ#@]ܼL(QC7<&j Eo <,LY^xH19ehhض*>>իWdϱnӧO(ؼysTTXt}2Hfl錃 Hgh%W\uqqg---D'Niji9C|huI{Ovukhduuuu^#ܵutoǟ?ʊf Z{K.pGGǶ41 ::Z* ,xBƍ!{߿,99!xK.;ZQ^}}b }{JKfe\ /v^ZR|KKK[[?{I&jhhteddnnnTdy=!rhXXTA&`llNƞīd2i4СC##٢B11FAѴn1]QQ?!VXq0 hѢxVIUU_UU%I@⼼5rB{8lGG'8[1 BҒXf0, _~&0իM40ʼn,شa޾y]]m >I\b,XINee%ZQQG Y_Z5xujb5%%XVVV)ٳg (ͭ[ږ1eJiiݻw>uXb2jRR$U$Y>0M7cX,+1)ixՊrkƌi7opܻwΛ7_EXv͚Inq8T*u% -3f4.64.N|\@zbrws;q={-[a|ʕ+/LMEE5W^W߷ok[cտի_"L8)3== U~~_ f.C _(++Wv޽~/_w H+.>p7N z?Z)9tF꯿;w?Fj#742v,.nʰ$人'N&JJKcyWQQ}ǎ3OK;|***1ǎ3@VU@96SQ(  <BH8dyB& KK JxY^]ܮ߸T<=uD퓫yy@S`5@+rhHP E_O{ʗ}-X Y^H$>j}Hr9xY^.ql[x{ <, <3U9l.G# 4Moa'a56fUŧ((['dB6ѥ{:s+dy尟=uchkRyz&>Ưzs==-M+3- 6lDIͥ @2i _/[$Y /xv .`wM O&?+L"$=32pY~ipY˹e'w=ݢrRRR gs"sfÆ #˾@iGgϦMahd:l\QNgݏkjiĘwAŽ ĠNgmckwdl']̙3]5g,O?_rs8w?ү]N:y$pEyYCCN>-K."aGDW;z{/]_fɓh4tP6lذȈQPL&F988DۿSG@d7ϛ:rڵ%77ŕXuuu}iwщXvvv~8SG@d7ˇǝ=cjjz5''HƃagD d:6/_>b5!aIص8RRǎ&''8P&DtQVVa0>|LjCjѣG)))[wb cӦ߼yb566LL433 o'' =(^dڀu\.7==}meKފ.cƌ޴y7o\ݻw͛Ojڀu +WA_N4l}E COhNNN'O˷o߶pŠJ Ιid_PRRbll<<^{L d!!@@J hbJՀB/U[KYVa \kN@" KU J%$@lf=sSɐ!L̜s͛7'̜8qB@53{ ;tLm۴7O=}96'O6oC] W~}?7|sFPi9G5sg郟>9N+47s]FűƵK{oӜg| e۷%C-ߜ:hbɨ5POkrT^nr~mͺLV͢JKhۯz(\-%{.ټp6 6gΜO=~ng(*/j39Q照KHaM-E=_ߗ5ԵMnWq:sv8~&^Qy6ןxt$ ɨ<Hg_.&$iI7zU dǩ8ts8zd2EDDCV--K n۷Ėj&8QPcvnJl X.ׁq_fbVCP0-I6[,{vjҴin!6ay e2,Rm*osg[HKYߗW|s\an.6ն}6mn7>2-.˨lv۶mfqOuksMg;4iҴnP/lv;yΝ=g6[n6lޛATˋvO@O5<>lW <-B PPf] ʏ}Yss̜ t haf?~|Qko6WxJ5jUP`Zũ9s愇ϙ3Nl_u=>FI0UjXb˗/D'Wj C 4w-[n kӦ… +Y.ω .lݺuXXX֭sss-xG8vX߾}4hХKk^iQaaaaaۯW,_|ȑJaÆU>߰aôiVZUZZ|_ݗ]^Rjʕ3g\bQӧO_z/3*((())?@lo7fdd >J'~KcsFT4-QĠ'n4-**j[dñu3f(عs3gz.ơ7K.J]Λ7o߾GUsΝ7o^׮]Rݺu;w:pxĉ~5jH)եK{Ƈj/زeKbbRĉ]uEc_8?}ڌ[ 4j< Ø7V=VU)u]wO)uС=zxٳv5qѴ4ݴÇ#F>é< @JLLܲeKFFFϞ='No~cZѯ g# oRyfp۞v%_l٦M</^zsn{쒍W(ύi^06O4iqկpAp8U,6m$//wI&)6mbULz*֨a_N%[JӴE/~jҤ%#ܹo6lr…6mtp{~~O$ݻ-Ui4ɻvݵkW\MnHIIIIIQJHMM0aNW\UOHh[)ТN_^*~o%[FzbhV}ܥQ5knz`͚cƌ?~’%;vxq{GfWeqqq;wٳ'ģF?~ҥKRRR<8~^zɗ?#ct0m۶&&&z_2>`T)W-6{n+|,Ty\9ovݑR<\$Е\?T?~v~~0PQ EWlҕ &YoOj740?:{lL? <ii󧼈Z P<5 O>|3|5X-mY-7oZx -g]ףN'.>_ߗ3T +o2M&^Y34Ms]mڶCG??@`ngU+iZTTsōjA\ɹƚolv;T+zJN{vqLL ot܏~bz:L+oj,%Ӂ|%GFEĄz:L55not9ɛ'dZ,a H<@e ɨ<HF@2*QydT$ YwjUji F( 0j_y~;wwѳw./1""R&)$$$&&&%Cöm۶x}W\|d2ƶm]>f>}{֝>}Z]W$V)CBBC"";q{?'qomrw=oP UQDdիפvsslJ;֮]zkNX%K}:O?;vxZz/{=]-~fć~XU>99Y)u] F_~чysLl'?>Ԏ;Rٲųq˖-JvyPJM6tz}V|S^}U)57|1uʔMNRoήQ*oJ)U0` qQQQNG=z w\[lغe ѣ?WJ{wKbVJ_zos]vJ;Ի='D;vVkzzzǿ{v… {|ɧޛ~ɞ{/\УGC:eJΝ}/o5W)5|0g~Z)5oj1dIJpFϚԩ9￿W^v^SkR?Y)ʑq7RRRj-Km6C Æ}≟zȑ#׭[76'믿v:7nz_vϽαcJ{<ky_f}ٳWUzU)⋿Z_xÇNS~z?w}WTTK/+=5qgFDFܩSu>s_dIV>&昘vY :ejyylnժ /L0~VZ*>UVIIIúugo} YwkUy]m!UUT5ԗ/ˑkV>|w-Uvw~ժ+ R^ԠA XdNվus/9Ϊ6ywo0wjVQ/?+6F5! A}y .PydT$ ɨ<HF@2*QyW8*l6[hְaRF n?t;w\]׻ٻC5^mr;nZvhLL%l۶m%dm۶֯Q)CBB!px$ulv܆Q%9ɨ<HƊ ètּ^q.VQQ1uԎ;tMѽzڼys'/*J)e233 ׬YSRRrǿہ<! III-JNNX,zڸqw-{… [nֺu\cǎ7::A]tYvw|йs O}znnn.],Kbb;SbŊ:NpѴ4ݴÇ{n1"55NMMMOOl߿jjiu0 p:tN:]{d*okS޾}͛'M4nܸ'(nUVX Offg?:jHNnkn]vo{7%%g|]vΜ9óSN6mw~UMTonj5fcǎ?Ϗ<7F0a¾}v}&L0zhϮ~d֭/^ܺu[bbKɓ'O(/////߶mf9[ʳb@_BBB6m4g'\XXyuԨa=7{ß:yd-&N5b3fڷV{+Wٞv;cƌ1csg9~wTWuz{%!??JC:t%(233333/RꮻoA a^ITtj;[+Sy~KEH`Wz&r]^ru]H* iZdd٢coTsEQQњV/6* &COMTnQ|̾}tN5ɨ<HF@2*QydT$9u2-g@PWY44VIENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-main-window-5.png0000644000175000017500000013203513413640652024214 0ustar rubenrubenPNG  IHDR sBITOtEXtSoftwaregnome-screenshot> IDATxw|ϝ&$lB"XD,Xl=ŧ vP@D: =@dceIn6$Ɲ;){-c}'s?+4e poo4(l]$puc{2@ O5>x\Ds5 Dzڣu&+ ^&fhJQ `9|ɧof0[[|WYKY@ *LFˉ^7 $ݳj Fg_3>xAac,@ zZ-_? .% 78pH6+z17~8;kTy@ RUoٱ)s"C^rtɃ[]5#"TK$@EmMqUk5<^~yr&LgΕ4`U՛YˤQaI1B]QivRM "Cռ7  : P \s;^{c&BmGz KL6<6XZRybF6ӭS%JYѺ-܆Yi};yy~UjqONuZIXOg͜4S .!q1 yVev M4M!0Ƃ9yg %\?ڃ/3Qz3Ϝ+mڑy.1rJ!~I b¢b$2PmxOUT wlg>&-_m: #nWf55 H ш)}K*|ь1V) a.UuEťvS)'F8U u+)06X/9Awj'Sڍ:#xJ[ o?6S\뮥# %,]vzvP LF3) ,tz3vDEx;ap§MLJC|=1F#'D6B򤡓Δ51oy*.*ehϗkdܓ G$ń 3e 7?WlI޺k._Lȥ̜'VKNGf14U\ea[~pكK'i|cwdνE]/E#C1 J܃` NZg i:c\ {v%b(J&J 4MS ˲A\*p:pLצ6@ddRFy1 ^PUgjpҹi ~濿N I *3$DŽ0~!\̖ptPH]tFzq2Q4o &{Ϋ]:A/W-dGmѕ욱1A9Kd矫]A[8oUT2 LNJjz  saB[m933qv`g(i7zGZڻH;sܾ)G.]VL\;ev%i>FQ2T.eRL0 eXeRJј@5m pՍ \ܯׅ|pE-SʀWmΐQiV;? =;"gϟ h4Mu$ʤ'">[w(:666>uB&sԚò=Sh }`ju? Kʋ*n;C#\iJ:dPƆ 9&lz'U/5\J+/L7ϵ 'ʵ/]vҸـ[ۺkдAYmV)@4-P8LSTN Z'91fH'ڪGKWɥb R8Hdrp'Le$Rpfv]},Uf59&UG@37&ra%q,@76zjwQjp:/³4M֎ s9WiN( a=I Bߵ؝(IhWN%x8퇲 ?a9Qi5Z^N ZN,6yX_ϊF!6F/`\Xt; pM3,tg n~G"aC2i90\x0g[DB7{-^ a  m%h龳S 9A&7t)ANM\QkZۍFDZ[Bf8YxSj)&ZmQZؔShmN٬b[hh?ΦLY4-͍M lv{Ne9};5-C T*gR"MMpH-.kP)M k.GTԥ%&UYP^ϲlccijju `XGNij +Oc E-SJi{#` Dbdl\Q?VƸϿ1rTl\VC" ,ۯl\)S׬Y믿n]2аc믿.~ W_16WuN~Dd1rظ#F~zu` ˝ںuʕ\lљ <ʊ~7x̻;J t*+Qw߿7;=;4yR^Eg^y5k]VϜ9co5kJrOѝjp>Z{޻g^{7@AK[ֻKr,QȨV{*+#++ţ9^SS b)SɦDu0s5?؄[,Xi%a괫|o͛W| =r I蓸wH{ȑXsvqs|###?cccY?\+V,Xp󫯽f2~wtk'ꫯ@ \YH$h^CoAK#GL6 p #Gpm9RPP0zhѣ!v۔)Sg͜5xܸqQ7R322rÆJR+O0O?g~xM7o޼`[l}j h\˧ ?~3J 8~LVeͲe͝{Ν;ؼ>w}-]B-eժ/W_-ZtKQX`MMÇ??&fWWW8qbԨQ\OǐO ]LJQٞ?2226lmy]4#KRS {u Q޳gO[B Ro׀޽{ĉݻSRR IKKKKK x~_kWXYQY˞{ݼN\.O5^~eŰCz}ʊC ~x~[=TM .<[k֮ZVu],Z@KYSObY.77ɧn&22r=,]O=Lnntzłl߱jZ,;waZ:uO2հ/w~_}W_|O𩧟wɒ[B /e;~k 5%!'*:՞25kfcS=KTVV>p{V)y.gusZ,66\urqםw[d#F gƭnv^WG= &‹ ;{s˖0]9]˧dɒ,::9sf-!˗Fe;p[^VVBB&Ocb]]ݪѳ"=uC|z"+,s{|~{,!+.}]@ @E3@ b&qQ3=e@ oI1~_njpm!=j""9frɍ!p/I F0Zv˦Z&S(U.~7@ t%c[dT6d4=z:ii)))@сN Zq)rJH1_n3 nTWOKKLπk) Ymt:}tL fM D.e^5UU99REj٧ӷ_nL±Z23Ra(*SÇصcͷ,"@>.e^Zu`OŎ WT 0|Y*VWW!H"K{ܸ9 ^PQ t nKmABل`Ƙp$.k.e^rÇPf=Yx\hNyM0@j Fr1n42ܑ|&gߞ記9vx=k^!xϸn2risZ1¡)Y=mNk;w- cQyЌZ  JߤFyEYqiiiEU]m5QJ&]=;ЕwЁùh,` hDC{[b1 1q]ӵ;;-qiY!jj0Wo߽OxL1XW/P -ahvR&xh670FOlr܃B+ eLh0q1Af5 ]"a*%*V1ԁ:8(1nDX槛nwY]]#GI zg \1]gB.]Ac>Y?97UcǫTcǏgT΁'sW,T[d254>Uy>ڪrq3&FW5=S1-/$5=hׂyY_5ٌնjsչ/ `tz^5&pcBᑳf^ò!C9;:PbL. JNWXXu汣IR?5ymsEEM gN>Vf=Q/6"g\=#ęU|5cʴ(?ĺˁ.cg"cb@JΟ/>TH%Y|L_Ta6Ooq,ع[̞y!IJlKމ J2 B !yq*K!9C|qߓ"~=%{⤅7/Ix`Kʜ[ek X).)vu*/>ܯU0l6+7*RUYE]yrE4EQ4M<4M!I(ܝs)ʌ1X!Baaaz(,h2{Wyȡ*mŒ;q~TJӠ Ҧ^3sF֠@^xG8*8-uƪ{]U^Y: ~7x3X7{MzzF^3g۶M0n;@-mC?:FCA9nx1M86((l63 1fYnw J!Z] ec"0.Dzf{`,f+u+jE}}ӷ|9ͼvD믻!$v۞6)bھ}ɂTv&Xcnjx.,"f۷ofl2wsVa7Dһq\^-怣 Նj7R|\[7z/tر#rnCzamML&IRʤ*p8گvW_K?B?MIӇ<@5k}\Hv@&?~< @G=z[ny~[n&8~~yllt^T*gϝ t_XfDo[;# H_~b6_3kNtdLuM? JJK+U@ `l9: X!+M/)-YK quu7yСC5YH${EM;% PMMMv)TV+1X1.=#\IsF</p bgBihе@)[WWWef 8v抳\c@b5=P֧Oҩ‚nu bn2 蟲wޒҒؘآ3 AjuiYBys`i]rwbUIJJ:|pFfἃ57_w4 ^yuJv!@@',ٹfks,uG)i{N`YT}|zL*S11QO0aByylq80An^nDD3;n fN/k;"N_IK!p=M⒟~k?yD@C/*#*>4XVXR[PaAX `2BX.K =g#]{d]<޼ypС;wE~/s[]c !Y'KQqN'˱456Niɲ}̝6 V@ƈfbn,8/ 6JbS12,t:t^'yy QPՆ9o|h\)HY'n o[:Dw 2|Rm 8zH}}CIٓ7o|r,ia]m\8Yp*L] CK8@QBQ QBر{記ٳfH̹vחʔAΟLS[2Jùj(-+o9Z_r=qDz,wvj?ڀa7}J6$~zHF1$$ăaS{c wz#UcYuk³U3%%e/YGp<@+BBJRsNA}+1.R䑺ښ p ſ_1G4J0jk{fk^{`}]{f͚oxeU+]Sa v;0rhxAtX30ϡl,1VbD3jCW-^ktD~dR*U,= oLzRPuآ8ɐO+F>v]i03#{B&NZW_hWl4j(c9356̽a^u1 3zh((ZxirVS^^+\k瓓zN| Fbbe 7wľʫӦd;*dZ,K]]]YYiiY1˱u]q85""FhD1oJfW2԰6 ?s/V0Ų鏍!!!} wpHP'=v>૊6!@ 7P^!6|NLvc[v,-BPa08R.S'q0`e-KN`'kj)Yyy9-<~9&_3Dĩ)B0bBm 'XMa`zaKF_N{botLQmdŸWtßi+@Aioۇ Ċ! @ *dƓLzXL)ߊ8s_GV[Wò MlG|oybzʏ?9d#˲Ea ,DžGDetmhjܾsǔɓO7wށٴyaCCBR343n8D4E]LQ.ǜj8zxy;YĂ`j4 9W|0$4DLv q]^Yqf栅7/R^R(?|t$$y+zͷۯr99xuwzۦZ0#$RiSSF1&ff m6o0l:]80%%)19P*b;YsԨQv /Vj%úa[-8:cڢSyo. hlj F4B Jߓh4S}--6uG/ycC}=Txe`H5 ?C5Ձ\>pk1Ϊ[oYT]]s҇u:L&w]_iJrCz|r̭C ^ [_K711h\n &&zo3fuZJ!)*T)EOu6$Z"^-]憆vŀ_}UoZ̭tasJd61"blN69<Yd1Y-NjsŮ aQT1[8cE'9GR|U<Ͽ'-z9}ꐡNfw /}< <ϲNBi1?5K&cBBnYJJDiiCw BRYY[WnӅ꺵RXXBao %lVJ !$+2|N;)ڳgO'Pd7obl2m1w]\ϟ??{lW&JiBEG*2U_ܹk@> Cpbh2գ>AL143ďxsrF5hNg}}%, C1,*N'MK& 4Mb ];w>R FLǪWodnج#7N ^OVuuf15e EQ@QK>3 '0g P[S7ơ6)bi>'N(*Y6v5F^ٕ#x]s|BHǂ-'}̨Q?1.&rl_UA€Ё :GH{m Z Wc:E]bV=<=zԵGlu~oIFSEu-bereX]#`%ˍ9$).%3-|bDR"$/S4yf3<1͋ 1tO>9r=?YV#ˆd ]0bn9jCCBe>/}Y wu`E](zT7,B5U@ \[n^XYUqܯ~}G^y7o^Pڵ+<"Ґ2@;γEg܋{0F}P& 8$>p05߳_ZnϺd~_SF֘~}ꭂՉlJ%:yܾ["#ív /-v6'uC^vc޺u+1=zt߾}<6N*>Yi,f;wԅ7+Y[Tn3>1b%콚?}*J cl;0xXyb,J+$1B@Cͤ~^hZ/6UyKRjww,<|cDᚱ/ʫN2 hE|c ^hBTHH}8M{:[wj۶mXJJf;rHFFNWjRX؟9aڪꌍWͦFcA=v|;mէY c! :gC! zep&OeY ̚9Ï?5s0~{` ~C3M*a̿l$+ AjU7˯Ξ0.%55/ ƆzrK~GY$<,bά9{-*<1D*lw9B ?gvǭw$'3TRjMy<攔q?˲1O݊ SMMz{Ledʪ*͔)4t̊SRykf ZEmw:WuO>ک `@THZcBrO?wns%7 :jaBBCO:nfr<'<P4ЌT*dr\PU*JeICBi||uU"u9ޤ,y0`DDdUU听! M[,9BC7nNw]wƪT*\.J}my=>;{ d6[ʖ/駟j46X}e˖q< @kZXy8L2m%';oOHJLɤK׼\]]})8nӦMs?cǎѣG TVVWoW;WQYx9v邓?˴O>stokN34TLa~D1Ƨ;N_p?O^Q毜@h ƀ) b(4^vLyO VQhB!)9n8]\ Qݷ;yЌ<ϗWTM(H"K/.Ce BH;N<la0'Bwp)2BHsF}Ś@449hpN! (;2fUv@yA=Wn>f}d =|]y3EtcMJ&yg .E \8'f7L Zq)rLjY-=m@*2/Tqc>s5@ CŎ8fЋ5:II4Ms9c,vK"FGEB!ӥe330(,˲Nn٬V!q6@1 !~ZC2Cj*A3@ dNt;9"./c&%㲒 Wd3@=r||Ĥ6x#k_1 DMwvc&#JK ObOxX-+-=~hCCCOB*Ei5SRH$L .3lj4M2Cϟ-|5չ'NB.%,˞?{f4C'P(q2#"*:sPA(:=sdvە/:=iD" MK+""BTyHLˌȨh0oiLt8z֪qCC}|BHb㍦dFi1BoDɰ^Ş?w=! q'$-f@ z1Ћh;C͗_z,!.%[̫WmrgoNF, =/%EIga})S?yII';zQq{ذ[CHa:}X+|7b}╄RXXϠ-yj5?z|G1?_3ޙŜvtH$!J'AZm6WK̹k7%&:'B$:)+*t8\f5/\3_}yy8d0q&ol38gwl_xϝ;O {#wLCkj3ct:&--mƌMD 6L  rʯwefflݺ!BK\L8qٲe^*++\fͱC\8JLLtpp@988$&&:tua̎+))988矑ImۦG\nd9REEECCcMقٻ$:u*0P$N<666OL6݌bkdlR g..ݺuKJJB8>h@$%m+77wȐ!***JJJFFF>}:ammmEEEMMMr*+ S^ : }-% zpa\mmm&K7W3x?߯D^d)tzڏlo\bevPG=zଓرca2=$qWUNn0M?.( k-kРA\ݻwo庺rrrwUWw~g_|Bl:=44[[[.,{ݕ+W" K&u[2[aQD^``26?*ohpsȽs޹Qa̚rss[ZZn߾vڥAA\755ZWm ,Xd;,nnn.++;{78/^L7nܸqqqKMM2ŏ,lhhxe$wwnnn$L&+=gg777۷oΞ2K }9}mSĈ.l-Y`዗/ VZ-J ^|֭KoYBo={5d˟r Mu`)S`F=zԱcǶoLe˂Y- qoޠ͛_,xuDΝZڦ_~˗/???`A`yy߿ksI7l_J@@q_TT fMc[c W+RH\̝3͂723Ay{{~5 ;aЬنw9>3ݻd6{{{I I:::Ga-Vߟ]فf"Xrοfv[0_v*dSU 8\3g:;;w+p)DM@N:s^>+\'g'4dM?-BBP?."p)i`QSS7NaA0YY?~6å`*@btQ)`>:-ELد R0 }+[&$~`2@=zTU (*syS]^ٲ),9[ovb]j u=JbaaħlMv֍ ,`0+h())+w ~S'nw榿|7aXX".$ YqBV3\L!//٣e_}5xel:+1~0q֙c}XNd  taz09%E6sarf:j~!$֡W/#u-(r'3q<˹/aB ;[ @܀a 3ɥ3/^$ 3aY~YZnysرpWnn[eLD:8WaBH]Cw**~ =TTƘׯ]ɦPGG'},띭p VXpiw232Gz;0b g桊5@0 "//;1!zeWW6:NKJKg 015300:k`]=w1m?AQ̝[]S#']MNa^BgR۔pRcc9r6q-+\M%XA:%vbT=/ǟ;""Ÿ\I\XX?3f.ZaQQQŦMRi׮&WWU"$'Y6?+yv6 }g99wr*2 V@ ݈58OBC2¥ ?fZ7WW'''kk'GGOky~$n\ `kkaBH[G7;ַo_"+W~xne1b޽y)ZS]) \R .Z* 47;;鳧6mwξI$ݽwC^/]^~M$=+)6m\[Gؤ>}F.iB=z'oyYe@/?۷VVZ:Ç[QDvSӲکߪp׏1TWlOhkϜ9>[!Lfâ=zpYpݑL&~o2`kk3|c}|>,[~ \%!ii#42Z}pSSSQQѪիyUb5Ϟ=[$H xeˮ&R0/593ܹHRRQWᅣMc*BHGUMC؃K]׽ݚ|sφ2] Κ5!g9M8QSScwd$4jԨ=#k/,\2xeҍl| `eUwoܹu{]_?᪠ ,,LQNxsi R-]WvW@DGKZeNSӝo7;o05% &ͽ|̣G7xeWи8園GO=^-+{Q(I~~>/>~\no a iSH13ދ ;<r3$yyy&Z„`$0H ~ﲗ/;[@<{TA \Jv5:y ůup&9uWEIQe䈫W 0V( fKbtYq\^^ٳi׮U,w3:^وp)p80 c2pSn@a2|2 f iO?@ f \Jv5:y ůu)KK Ku.¥ kC"?.l Ғ۷s攗舘``jfƿN0]Ax2U7WhLO3ssyyyqG883k?~|]v#SQYɠj0 f)1۸ H)ICۯ`L&d80LBIJL;o>0 Rnؤ\}@i e2Z Ͽ*ʖ]MNa^Bk"u]'L1Gt {(/#0Bʾp.XqHd˖/[m`0Ld2 sm]]I!<~EV^RZHGxj)<n/sw:|^jbF` 8V7HҰȁzjM-o7ӿ8~8I7TI.FrԌ94if0i/B϶aSTPIAe߉Ox^)_M[L>ـN{w޾7 E` 8휻^}ؒ[dܯ3|7|coUX{ dһGLz24zfՎӿ~dҭrc(^H){18i^ZY;־W.md|~m啕>Z¥dWSPH]I¼O xv*VCq~hh_yei؝LzW۬M+JRtR]K\gI#Yu? 24U󊸝jd%9cef|q gp IDATG>fVs&!B t4ڢ0#3}5EyVm_5 N>Rl;AйIreeuqimcp/R y򆼝beu]Nq '#nڪ&?!M/[Ԕk>~>ڴj[0 t PP(Z0 xLrlVY]U r?B%-Tk!+MnK"RUp&qdgM- l0 pگK G0?89O'ªI.&*GgUjio򧸬o]y`3wbR!tәovo) E_'`%tg2 &dt&g~-H¼DN%.Kd59lItCc^g|Iztl燯<&ow-YT󥩅rŘ-y][L޲m>r'-8nEs mH+J^ـt^]ze߬ 3[>2g܇6Gٴyr! -a@&Xf@: L A.` .fd1RCE8TWTW9t 66#\@$gM\\ d%9irO){wa-Z /?8{hzW<;?8dG?Wb%>(ɻdK Kua.Ka6n"K@1ilq̂e NF dΜ>z6ne0HwBeee\͝;aҥaNeKfRh"u _:SPܸqАMonnnccnݺ: Ѭ5k\t5kkC ĩU}}6߼y H H7݅Wի؆ӧO :thcc/B˚sɤyҤIӧO $ǎ;uT||k׮533[d <...))|FsNӤlaUOڶmXS {,l֭[͛gii9eʔ_~ӧjW^^Pɲ^z  \Jv5:y ůu)K(6.^xRXSSCъZ)**h555Dׯ_;!xݴ4˗Yeܼyζ"osssmmmDRtR]b} Vyttt^^ݻY666޽?~|LL)t~!99YSS,_<==uF\\ܥK:DgffwA"7Bh޼y~I >RDpWR0 BLG^S>|@QTP%bpaÆ)SV!4hР &lذ+WcB޷n*))!%-ZdI>},Yl2*?{,''oio 1@+}Es{ MÆ4!}"d="03 QC~p [+m0W1,FEEE\ۉ9߿3uӦMOnS+UU_~ؒP :t 02_yɉ),<ֺ?|ؖMfY!!t&3tŋ sqqE _P$'W t=0 %ư:s'a$kP=g0 !ID!.ƚn^$yp#.d/?~гp5b8>HG)򊺺)EzxtV tWQ`8d2p3qE9A@j"u  nmFݻyڭ0rظW^naB>_h5z6^BdΜOx%!1kI.%_qv#+MkK #<'TQOOk~e6 Qsrdԩ=6ef?LK@+JKȯrt0L5469;틸yF*(,ݜc+q&}\\V@ 0a2I[:ZM.:KYx@ adIl}p $l`+[v5:y VLR,tW:Sdvb-'`H6 H8"ʆC,Y21B۷ wf&>iӦk=C^Bl1ЀQWWyW^Xb„ !֓tuu׬YK?~^zy{{Z{D*kq^eW` H ZZ},s14CB%py-ٜhhjj޽{ѣ]v]pL-kɓ'ϟO$544L<Ç?ჟ_cc#gqq? a$Cn"vma2wܺ~>1 Cm a[@A}K-QQQ񇩩8)((n޼9?? EQQBS((>e Hz!Xji9ʌX`,p m7 m5m .F(۫9NhٹsΝf6:!/\pBl-:VK#Nst R2}Z݌ekז0gϞ\rĉ٘LfIIɺuƍGH.\իW%KfϞM뛚Ӄ`#f"ilUUE騪ml*A{K~~vzzmckk;s?zgϞׯ'S1uj\\Ν;+** s紴 gώ͕ڸqj+[v5:y ů٘fJ'$Z**U bcTTJB._puuGzjii;w~gҟuo/^ܾ}_~QSS# v}srrjkk_zE=} `3Y`qݻ񣍍_&rv]@ykVֳO}- 4eK;o_:c>~srEJJ듒A3 #W6H"at&s81z5n"|BӰM$pww:[ ņ,afF-*F{v T} 'y)CgNs2{?&vw͘_B{w^K "E 3B 3ɥ3/^$ ŧOu;ɴ Rv=`֩εBA 3j0Y]Q=:~}Պֽxp@ (chAmqHi d≪[͙=uٳkGKDC\\ܞ={ݻwGFF# zQTT*--5B޽{={ݻ7B(---""?|狊ɚ_|۷oGA?ӬOz.5 "jf kr$V& 6tzff7Bhɉٳg Fqqʕ+ɡC~w{{{EEEЃIG@]rðPjj*i ####""lmmbccɶl٢בggR__ݻwee%qC&:uj̙j 3a_|Lbzc#VրpUOOOEEE!Cw EPf̘APBCC Ç]\\l΅5iNJ攔QF򼼼LLLlmmIc277o=666***nBݹsGIIɦu@g_ d1OfU塃  }niecاN xms:&lkN!l@@R"##IICC1ޥP(ւmUf&˗/w=<<*++ 5`&ɵ0g:***rx@@'N< e!p/ rJ GT6 gO q-O!&BXM #<&#%!RH`9 ![ٯGR0/hEEEehĉivӯ_,6++kĵUXXUxx*&)) CZZyH~ڵk%>,qȡx@G<6v-6@t.CҋG 4ro̿w<RYk>pҥKٚ[tpoll^zÇ[ZZ޿/O>윛Ғ;lذ3gΐ{522"222ڷo1pseddiQ8nݺekkܜekk˚a͚5&LXvm B|EO%4%1by'1w@/@ PT6?1LWVV300 prr:p9s ??ŋ'((hҥ#NWWW&rssc2G&SG}ر[[[ܹS։o֋6m۶vZ uovvvrrr`[H!8 #rM™ȑ#IʪUVZſ ̳f͚5k$+++l߾}9qvvf UE>| tشcRnj0m; HaR}w"W6 ab1xor׮Ԝ)\W42u0?į /!<ĢS6 m,,LQNxq෉do!k™8K<4cb8:b! &ͽ|̣G!2:zm&Z/q^뛍e)6̜.لVO… 4,,S e6 t5nP '5R\J>_5gЙ#dW<_!H9~|;9Bzu~UAADҀ9sQR#p)%g^& 21A=HG)dsLLxB[TUB:oc}ώ^8R^χ>!!˗Ufw0|͚OJUCBAKE2W.fͣMMM;wtssP(6mիW9bbbe˖(΅Tsssu x񢫫KWzz:[| H{p=抚⟣G~]SBB.'Oe8cǧ_815yv#mSS"Kܽ۷og[nnnyTTTqq`#Gpٳgǎ+..ްaX-ZظvZAn߾iӦ@ IDAT7޹s!pI&bbbG12 Klm7gfɃ}FAS>>/^hDF^"`b))rsš)((PSS0GEEEDDXZZ***jhh;vOUߵk9D?~ĉիWd`qrʕ+fffvvvt:FGG;::m۶$AW^쬤zjbƍo޼!s}633Ti@Dh`$q /n[טB4nE=T*uӧSԭ[g_>Gٳg߾}yyyK,֭ۤI zQTTԿM6޽{={ݻ7B(---""?4hPEEŏ?n:D=k <ؒ3y;zHO>VSSkG_K6W$O$^VI]׵qjl$(K(Dtzff7BhɉٳgX"`\ˋ:tWTTtpp =x 4z茌 Е+W0 KIIA"###""lmmbY-[07GIm޽+++뀀2ԩS0-.zRK$ p˗/߻wfܼPYYM yyy==ǯ_[nD%>'ʙdjjN[XX^^^ӝ;w6n:Q ) *~?!N'::m4^VCf@ LgARi[0S(bkbʾigg˗WUUݻwoD&ɵ8|qN5IOO\.//g8qɓ0\wꫥE-*"%\ -xb!: .okjjh4ZQQQY+EEE4!4qDrڹ/++0`qjee訫keeࠪJda/9rFަ;::iii_v} xe:tkVB-L[ZGXXدYY=vٻ('$̘d3gΌ;{{cǎ=s Bh…O< )..>|HMM5kW51o޼Ν;t:Ν;?ѣG#Nu[RlBLYY9.. 00s&/^ԧOK8]]]LB͍dn KC1"::رc޹s ޽{w'>|h3q۶mk׮XnofggZm@@@NNcaze,:tCr.UUPPy5c._khs8p'dqIфPX$''9M8rdZEEeժU%%%>ଇYh4Zii)Fc3lVVVeee}YYYfpvv>}G>[؁pgihEa=mp)} #]y苎d514ma2kڴ iZrϘ1&prtb!0K& t,\m|z+Cgp`{{O1#TXS3/))׈ڌ'&ULDi()1px1,Q@ǑHZ/A (\;OL e߼#d/?|4bFhK |NwyII!'{GS3ޞ(_i` :1Ck̨u= \@Mmիz4k]c!lǎ9.!iw4y Xd+6Ju:|&ˉ7L^6&e seS2OGk֠5k;?wBXXmÇ>r[l:(++RUF̲myV6Ȉ&טOz{/NN^Hxz~:-mX嵵d=* Nx{nÏ8 8pz o=<Ă+P6qW6udG8N1Һ߰b9o.onOR+’u-$\Qmnn-`~CCCH;L&`0t:P_____WWW[[[J-5Ln,, C-fd xAzI ^ٞϏ&ϕ⏡!{ ?2 &3?̦O׭Ǐ-\kʖIkႇ0CBΛV:555 Ha||q(J,XPSSZD+Wxzzم[xU?tΜ9 % ZlHbTB J={6Bhl3{ݶm[qq7׮]ZB&4FEDD矏?>|QQQxx8J'͙3'000/////O>[n}7ܹso߾%o߽{(xfA3A`htzff7Bhɉ`!~'''EEEmm\+UPP022 eqS Çt}"yx@$%%}Co}JJ;+R2 I`~A; |ի!MM!C\zˋH sjjjs$//(Bb,k||*TZZiӦ[n}}~u)cϞ=,qusKÆ#\*"׹kBR"Y6ihh dkjjrMS 77mmm&ijj*!''wϞ%AA{1cFxd Z= 36HraFi'uܣbl&᧯l%TXBN%5554\0.**h/0 Y$%% QK f@ٽUb^`]"D:3e]Tttt^^ݻYrDGGHgggbțhѢ}̘1ܨcǎ!nUOی3BΒd$,\ @jRlB66l666&¥F}ر[[[ܹsΜ9Q쯿5k֌3:R f0 khhh3AosDHXH\9r$!)SL25ӜOmJJ )> A(*(ܺ5|h(*aya e?dcו={6nxU?n ˈ,ڍ  gyyymmm# z0s]z\ g6kn҄+'uBaTj5HD $M$<8@蘚uazeKK$}"L-[Hڳ + 3H`@ f q_$yO|1d㊄wNM̆#LB4%Y¥D !lf]따˄Ki"j:[@!¥`/@J -x,$'@ƒ@QQdً/$f H<i$q7tꪚ{wP(fiWdZE@ 3 0b͐ͱ}H^"!={7MLuvSL(cΝK nn:_ LH8NF&!4D[G7}|m]G!" @ H Y<uN^xbll`;rb{ƍڍփ~7/66!0!C%f5ħИ1̌LP~~~uuuuu5a !0@F|x%}8cg>ԇ !Ƿh-ǣZ-4T ٻO)])EDX<ÇV=rji=t.ϟ?G ۷/}t:}톆[~!BOYYZJJUUB2%5UEEÛW1!"f&.233 @¥D+'uxH5f f 1`,ز!!M+W3fQr2! y3(Ϗ${$ĄЄ6cƢ(sԷ֭X%tqqχe˖OpABDۭ訬ܰq#BhΜ٬~޹{!4r(bjڢ%B!9LJN>:G'hjjŧЈÕiYY #%%USSSSS355`вG.$ aKIZD}5`aalj()_=ٮ\ȑ_))Yx Bf3ܜOstwSl~{LqJ(E~?p 0iK?|}Tɂ_ " b]UPP0113gŋ1'#cgOhhhpVxƍ }>rԨ Ν>|8[m+AOzZʹ~ Bҥq&zxs6.Hɬ??̲֭2?K~~vzz󓒈A::[g_~xnvOysLL7zVS#nTT/NKH={ҹnʹsȹZ&$;- Yƍ,q8S]\\(JAǎ=xPHP\\\1׮2vX C%nG0-3 詩J9Xcwr._jl\^[KHTTƘ ;fL+\]JuuoXH.UUPPIQEopr'W88Lӧc-zXڸ~~ܸQIIi/_:uj7aX 6"fͿu1f òx~ `klܜ11B0i˗}z*177!llltuuuttB33sK3@/!؎5=TTbcO,($???*(,ݜ#uŋΞ58%&?߸l1?!S M΄|+qqqosɑ1Il^ǎUJ__u6 rrn&_IzWhqEBDoC֥_<$V:ud:{paǏYmlv{xPTuSWz<xss5PԩS}\ ChãWz4IpOb|Nhx %E ΄/2X^ٰ D֘e>ւ D;$ W@21 f`:Z?тdWl't0h/B /Dāt&5t&&9`MNa^B.S" \z:W+.f޽GQ =d!!B $hZ}Ai(brb?*Q9)"Ibǀb !ݙynviwfɽ3^{efkP3Ÿ`h|By 5F$ad[YNslZDU6 Uh!1"$fT .H4p m4i.`_.]]JhB] !1"$f@p-VEb@Eo$ ۶l{4A@ʆ.PETekP P3*Bb@EHY6.H4p m4i.`_.}Ch >_ ]aJ25,=fޣ$"1HuwOd&"1jajJ&77UDspVMso5Pj3-l ͮATe^@V3M,-Һqa+jR j\%7k a?lmkKnn ח _ @cH@3-C~#\Vi&j*w5޼'7ڥR!}Y]4.P3@^<73*Bb@Eho$ X=0R@ۡ] J.՚zBʁ7ueuL.ŕ@}F_68ޤP3*Bb@Eo$ X=0U)_WRTe|>Q*ЪJDBciţٲqػUrk n<ڤ#+3KG]ǁ]Jh.`DBK3t2v)*ET9@Qnq<.hhPf sm L&dϔ+VuM#<^{)6m2eM4'OtvvEFF=f)+ٳg'$$XVI_g Z֤N:%%%ڵ#BD/rbbbLL~Qw::w\tϩ|}pFTe@*++;v1k׮7oNm6atIDAToޜCmڴεZnnn^^ކ 6o޼xbynzwc<''gÆ /^T~ڰaCNN cǎ5kVYYf۷9su{C4u PVVVRRhѢ,vE##GlgyF/ m6[ttO>[GiX><{7xzlw7&'''''8p֭5-˼y󲲲~a^x'OHH\g׮];a„AsNewy^KNNZJ3^瞋ή~gex꫉_WeRn߾K/)Zֶm.}{{V]~ɓɓ'_޵+W^x?𩧞꣏>ҥrۜ9sVZt:ǪU\~{v ClllEE2~Ԧo:u!22}td^zΝ;,9s7&)))B 1@r8{3fkdƍ>͛333:6mΝJ}C=cͦ=f[piii7xƍ7n8hР4e>}3g$IxHr׮]O81lQ+++o ?s+ 'Oҥ+SN9NQeY$Uh9VO$LUv߷oD˗ϛ7o7tSSjpۿ/>{ѤI֭'l|kݻw !Cyƹs.[lٲesu FEEEEEsO>bUTT(_}հaü',,,̌HNN>{l_qXa&ƬJsc 6U7U^^_:uu1_l28SLFh8_u]LDSUW__^*!!A8 fe%I:}jmpN$f`0jkk#"N.4 )dY_~Zj|ocNI$Y%Y[&HyСC}=**J/,tgdѣGylu 7۲ hl]ۢ"YV1{wsS~߱mf\]ڥ $ aas|%3G]өˤ?ok5k־}?#(O?=6m޻w vG~#\ꉄɨ1cc:+˲V\\}{Nee&{",=zSRP=Sz uN$I$IJVv:,>;Y+ "##;FXGTWJϽhAݎj#@-l6L&`6-eYСsu۳oYZ |sG%w0 $f 1BI KdYql|g933~<6<'?޳hf^ݻ&TlkfDJu Μ=`G Ɂkcw^}gkwcGYm%ҳ7gμH? Gj-?vx<M;sܓO=gښ -ݺv Z`"ό5deϨ1{+%xu˒|ּov(sO@dYs1)7ԆFQTY{J\QQ|5(Oe2y^hMeQjcQ|"?1+%'WT' U/1h6$M>}ԨQ7 KR^aIeק;//oǎ+Whl>+WLzu(ICU|,'Cuop.QDI |!ܿgzrrNg.o`Z++*TV89_Yѱc'A/x%f?ә3mڧ~5//..,ɒA|-[8pۚ3mGnujd23|j;wNPg6'ܹIr8lY~6lΘ1js Q+r=Р(^>t{F5n̘;W\5۲&003]v럞~P᥋pd2Y'GEG: LNǏm9c^z^5aO @sܿgApj۶fee?} 9’ڽ{wS dI9@k~䲥K|~>})'k‰LUUկ}m/[D`dĘ-m>Y|d13lԽ|*K3K, aQod2]|h0a◅V l ,ڥ=ѣoYu!K ++*7,5rlTB# *s歷|=RzgLM,ڷf9;iK/1ȑO:} Pzٷ[n EE6Zm(jukx-7tz>=>:+$ٳȑk^:s @hHl'!1"$fT P3*Bb@EH!1"$fT Plh2 ! 䥋;ĶhkO$ x$摣 U@ U|A0șU 餩IENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-page-properties.png0000644000175000017500000005205713413640652024734 0ustar rubenrubenPNG  IHDRsBITOtEXtSoftwaregnome-screenshot> IDATxw\GgR8@(Jbk& ŘX_5Q1*bT0F^bA Ditw׸;~3<] $Ġ K .[E>}pMv)n&4Q_΅nݺ1ЯgL!T9hW :H BhOz~>k)Fj[ϕok&iɻ6Ҋ[W,Гdw@ o*ӓ6j,M=BzZd&C^0iz-'sW]*7 mcM AĄs>Gș+>_ORXVuR̻1\-t_z]o9nU\vZh9yE%eBdhX<]IK?ouR Ol3C.ҙ#aJ 6nTLxҒ_$Z@m x;vq"Qڰ>FzZ8A5W-s촔# w/gn"Eو E8|N4:0 0 p8.-9e3bQ BPWkS3Sr -9WEϳ^"iFV LU\R2FSڒ4# !ק+[:e۷AhѲ47a]C{xR\&lgۑNSU ug!޹de+(d!( jnbZN;0/L4f`)(>v-M] y83bi/+ŧ={ho-RnQiy_FFzzڕ ؆.SQZV 9^!t=͇ΘޏcSVQ{Y/lsEKu *P؆a$vQi4&`2t:N08pdiH|FM BHOm B|qyOvuӰ YƆmh?*] FC | |A//-,t:=7[X\fqwq:Z37Yazn6 \UJZV:v#i^n&"a3y݊|>`LWG]/-cdh4hAPe1o I .| Q41h4 K`iih0 @x .`n/ ޾"Ö`06j²%9!d^QBQgSYr-M3șN"O%VryQRB:z~NNo휕mJ^&QgS-Y#sBzK>ȾӍ2x'FeB62aA3644Y`t:N#Fm%&Z j~!{'mUmYN6ښ,Dmk-"r*Z!xMeUU]`i2wpf:\ f``_zg:zxvapd16} ;+Vƙm32Bvmko Pc5 2c1 9C$)>` z_0"A@k0DgS:8=Mߔ^_JkGc2@w?,?^[aV8aޞn'Q[CCo/=8roב>LVUQ6[--Nhh'[pw(=ڛ*<ޏz{t !Da5- qnat:Fèу6:mMTQQ;{ZZrˆ066E .%fZV}x|MWolLp٘n<Τ-316xoK%]OӞӱ[tO:.Fkijʙa4Ƥ۪jkS} VUa63@ezӦM8[7͒kaaAYiݨX sat^MJâ<{6?I{BćiWOj]ô\!=524",MS hY!4ãGOUoBFyI_N!tZ)[P?,]\~ }۶j%d=Ld}ߍfEopP9<.=fٱ~/ O=pz@yzƬM-|mIii]=Nijj6SKvh6h zr[_P+43 Pzzz+l?\;O騩kи)B!._S8 Co$՟ft-;yẊ\$Q:.uyYs;*?oWd nݸəL@9 \57T |>Zz0 Wjiit--Ҧ(.ӦMT *WDEE544644DGG7]A@ dgg-X`73k. ߏaخ];d{2dBݺuG/\@ӻt"Dڹsp)Gݻ]pCĆ*ƍ 200hӦM׮]X D\\\ffСC}}}_xq*Lve˖]tiAL>!~ԩS1cƈ"‵5B@8vͻv"Id翛ɄAߟ=|- `߾}2PDFF"d0;wtrr ߿ 044}5B 3gh~BB"t0i$!+V-[kNWWwڵ]۴>}!4|p SN+!rhUSSs<ȑ#䂂~YXX.hܹiӦ ;99N( $''# 011Aeff*T6@p(+MMM+%l&m3((ð N>;vH\~}XXp,Hu+:Z^^*T6&qĉNB{n ^xAҋ/0 ۽{<@vvvuVNNΩS[diiikyoooכ(hF^xD9+#FlEn5ꀴW싎./kr嬬,???*7333..NLONĚ5k||r߾}>>> T޽{+ho Q4q ~+yslҤI"ɓ'_r%22DB bmmMVرceƊ+.]Jx|ػk7ET9cǎ17PVVwo%vAMp9i">Ey<^LL BF!BѦNbك Vx> vcڴi"6G-**ݷo_>}qZ&QQQ/sN||ŋE|:ÇGDDرenmܸcTq/;':th@b=r$';k 6cƌ xdRs]^VJ.G)O `ˆI߽{s<==BΝ۽{w}} KQRp%>ˋby{{߱c'd!͛6Y[[ihh ܴq#y]}[dիWrR!Z&׿qFhh诿ׅҥ555UX*p{EmkӧԦG"WtttD6윜?/snUUBH{ 2G/\.2wĬ̠nbdd㸩yi>G= @ ۸JQt[͛:u)Ι=fh*0yT LJJ_1+iaaa</999lQXppЧdhoog^.>o|*ܼyQU4#OzFB[[GO '>"99 GL8QCCCF!ѣG緳3gwF}Jn:k+fx1t31r@&tuD,6'2*O8f?nI8~8A;9uLKK߸ǩDUFpehI&K*,qV7o|xxtԟȕ?MN$(XTئ>0h AQ>GUqA̚=gKfr]*< \o<2!{^W7wC#cW7QT۶utr7I{^7.F.nW uBzB 3: Ќcn6Q%ީȘq<>_{{"9&3טmԩs}je߻]\{{Cܻx}{٨ۺzݧ1reedqKQߙ[X{9z츴.,и㓒Ǎ/ORO,:!aG7nܸkWdAȝ]zjE"""{WAݻ^ngʰ!TYYA.A0c/ox/E˗}͛ ^]~4m͚w3Mi&*nΛ7yy/Ϝ9}Mi A:u̙yy/ 6jw>}D0p/ g5= ?o!TAۇ).-, o:w,*,A{wvHFUTT8u\XJ\S3sT9UPt٧J>\KU~ޮHxTTH֨XH}zSƽ~: i`/GϞTT^==zDً-}t +,*))>}!prGd%qxO_A< &׵utD6qc{j]VdILǧ^^^}YȀҀrZXj&Q6ieL4I%W קNڿ[466q6/Zqŋr2nKv̥9#2_f_p_~u֬9s戻 dP/ AJȇ!@7:w$; u-j͛ΊfafJJ9M4 Ky(wwsgI, ]\\'$禥U 왰ϲI?6mZ^^~vsɇ2x2#dԩyy 64?eK./֙/_aff6sf?/EeקOtTCCg89sLq2vg͚7~n<-]ٳ 33 %ٸq thhhqVh贠 Nf#nKA6m?#))ѣ?͆ګ f)rӂ*}Z#c6O'=H#E,槩1B W|hEޚ@pU A&hRZR,J>%j>w~HU=VS]_@w)~pJ$Uf``P^^n̆7Umb½+\@]\\ܺٵ[wc ,q$]wKC Fq8..)xs{.FFZ&U 1XL;;; >_@ eBh SSSK `a0 Z(pK@M \5 &@pRP%@u %at:NWFUc x)JTkd&S3W7%Kթܳ/ Ɨ#{uvv޻woSdByYiyYiaCӟ-XZ\F IDAT2طo߶mۢţ\ "##"ݻ744-44)4ptdHNnر㬬m-FFh/fsOO ۯ/©SUV|*;\\݌&"Egddq-|8qJB,1RRRttt&LaXJJH… Gխ[7ih $ֽ{.^8>>Ν;/޻wE7̈́粍3688(YzzzÒ%K?sܜȝ6l8{,~u7nen iiik׭R]wRYiH&N8`9l?yꔈ'ݿ< 벪FM2E{ԩ竼P~ΝDyzz;wn*, eenL /^,[h_Dݻ<{N&9z䰯/we}xa׮[ܹ3UZZGd;oo^s D#7[o/[c\N1fΞ^}=OOgϞ>|KBL&)Q4r=(QE5p}rڿ'HMMM t2<;'gϋܽ[UU>уZٳǏT?H{/^ LoD Î!նT>|9j۶m^Ν;7bФIlB-%W0u###MD{8,@b,&ycUZB¥˗,]6sfȜٳEl'OqXvq?FE￳k׮B2!'ld2k1ir@T<)55S Gݾ}Ru붳3v|?*Z+B(7e޽Ezq˗/suqW8y  ]%$\/(xE:vt*)-566z+VWW-x@]7CndHJJϞOSSSU%I3{{={ry Z</999,,lfHE˖/?qdmmmmmmBBB`4: >>Z5kkkSàEe7111C ѡBttt #bYP 'N9r HNN9rĉ444d(*uK+V433TTHȌiӂ-,ϛ? ڻ~}ٳq93тNq㦤$FEG\rʕaarD棚ؿ5kVرc~u%&V'4H7nAt1==}Æ ƍSmTf4j05xzCCCs@#<~ҽgjIL?g͛77NF{vc/[RRhn/ uر=zkDԌjkkD YM/Li%2 =\Pk7Tg ghZApUFKy4cO%q:DB\aeel7@uyY۶p W5it;nvݘmB)eZ28N$޻bi(W54%/:o`lld;@pUa ‚.|0R"-*3m RP j@M \5 &@p.UqqWF~󭹅e_PSS#{C3gѳܢG^gϞUy܆+Vv17. edY;vPWe}̐n޺Y[W7w< ˖.O7lް!|aآdՖ_==sTܽ{ٳGdTyY2aЙJ<ઌcG _[[hΟ=}T^SعsѢ^={jXz\(lǎ~B8z9K?v_۶3 {{͛7/qOsr.M'(#c{=<=9}||>ݵܢYYY @I(..ё211ח{/1Q@SSvݻBǿԔ" c*v]T׭%gw쬡Cp(#Gr0lf:m֮[)XQYIIed޽{Nhߌ:34;;[ dee͚5X$ɳgnݾ=iDiyn޴JCCcfHHee妍ͻB-N@pUώ;Ν<{t>]lB]?0pM;@];{, /T"WȾf]]f:U1QQ \411)**6 LLL$ZLEKXrG ݽcog`o/ÇƎaWĜ9`ի]._K.޳ʕ{o)oϟ7b32]=1jkk˟*hZкuoݾpu̜+rK=3CCss__)S=~rs_.XhT{/23W2&M[;{*$+󅾾>N=@]zsج_S8ۺ &̙=!|҉'?NxF҇ 27|3'kuf[r)`3l)hd*?oWd$ ) \5 &@p.P j@M xkSXVxshciZ Oƒ\#=/*.8pO*rHwƭ /aOmEG`)۬eBhLc.4#뤤ܼƫKOϲqC4@Ԕ::  }L7o\r:{K!'vpt YVrZ5gD<.A8@ wx<zT)}3'~)PM)PMBm!fAXXXWb❴4ksxݪQh4 TSke@nhjjiYYZXxB:BcV?UWgYx!FljY pmh680Ig04,Kڐ 5c =r;Bݺunw55Ahkk{]&AͱsSص3{ AjMN ޞh4Fh4.g^ h.]vZ̕@I}3g+..655>?lB]]]:G"1m9mUz2M)1:m31)8{ṔꚚꆆPqq kKt:쫡.B<|t4UU5=M{/1m,&[OU DMMMeK(ϗOl-Fz1KKÇ86ˁhPPRT|)(s KЫkW:t)T "wj[RRJ-IbRb`NNIK CZwIK|D@ |U˖q{'iRHD(WM"U4xߏ@UD|ECO;cۖ=Jc󶿶n:u8zB3-F-&X@?M7Ǡ{޽~eEKL\Wxj[[{i6ڶ;,Pb162ٳgv662܄[脉ajnNO:%D~ȝ;^DFܰan}ۯ[=PFp:w,عs第ljs&&&"67nܺul׮]Dfÿw֭+262ZIuF>}455.YrU>ˋby{{߱c g{D^nQQQWF;9)h%SjjӦM`@ 0l6@ x<#lެ"CZf{O&kuQ?_G[SSSWWo~دׯ&(TMMf1nx x5effΚ=O ܎<(ÞD|rС,#:j _b<==ׯ_e뻑٭OJHUշXjx`Jj_᫶SsY;wVUU!KOOݻٻWOS?/+-[ Ν;׷o_*ܹsk֬psss HBVjcm枙!dggocm$`mlAC.޵{/*mO6ml텳)B8enΪ&%ޭ~W/X2+\MVM"PԳg7o;X&7zQ[*6}z) 2xGaO"BLo!wg?&e>*!1VVbQFptpInG}"!oFsF?</--m֬QQ '5 k𘘘9s1|ŒaO"BWZ5%$\|ye3g̙=>*!1VQfHams#GX6sff4-%%EEǎo޼Em޼ySN 'L:6),x믅‚W68.6KA.]x>~{!6e$m䖙ý{wo;vp 0|JRGN52fc4ÇHLiUUՙN w yK=ڵݻuIF"bz"pZ-&63$ Ik$Z[n6mΜ>;|HvV#F~{)pݡS{8)t3&u a(F=3tfPPe;9s|7j{-,GG+ZZZk֬yÇ׬Y͛ 77wrGurr?<)1X0;ĵ݂!AgVba.7ޢ-G<a'o&I+*D6uԍ798r}Q2cڴ vVSM7o02\'Hkr&o9`3l=Bo*b/ϲB(?嵫qU'MhN;O$}ߝ\?ytϢp =𯌲.5r8WsD5 kO$UM.;oن? RLV)Ӛpǚ)U~ޮHo5=0N)ArsE!3W׆f, AVdͨGRQa5 TT^ ~bPXp[ʃ@ qӻkw!8ǫpf1 aa! 'ѥK}\ٷ}a&jN4$)9 !WCEF%jj x <9?N t:}Էߍ;{b{BjVp4aˮ/Op&? -! 8 ㉿_UD5c '0ԩJ \ qO_6 -90fKKIɉl^4%r7c@ E@ 0 a=}xUt%90 h4ǃV9݃FA0 'a!ûP_0 ٌ ^( Fc$_/ g* Hpm~,M^ڵc0Nc?R>-Ny툒hJt}6o#4 y5#n@pm-M\ \5 &` {IwJճk| -{ImF}bYsy{y7{ T)_~7{ ޒ!tMh_ 8o8 ü<ݲ &Smr 8# c F}"KJ`HF3&y<=&\O0óKӭ՞( mUz2M)hee%%eVV\__cgg}&gɍ>CU$Mm (---.)WBMMMeKhkklW47_fG|3!*?/ci1ǼkG9{ 4\I#tuummm !³ \6\GbjJPz%g5 ;;{/رC L S%WWU_ݭۄ?ڱX,ekg?qO^].0Y2Xf|Cc-YYV,xwkBu{u[D/\:WZVr};v耀wߵ32f=vnkoIDATeTzzzq̽FEGS6vs _'Nbcc07psՌcu!accc[8ujj>/RH jkk)=y?j***sN;88l8Wwc򧗤cʤ.#c;\\݌&3J~@pU !33̌W<֧A['RL<5Z x<ޮݻ\nCg 5SKK؈LOSO Q1ce΂j!Zr=zz>e~~===|||}ѣG>}(TH?&SRS;NܛUXMׯ_r/a"3"Ul6}z)m`BSPPɰ'֥՝՞QC *Eڒanb;uAA]<$޻[ZR\\T(|izժ#c.]ӷKKJKJKJ+bQQ5hK:F䬦Ң‚WLM>iJ} kPLGX,$¯Vw{F *alIa+imlq\o$_ [kW\9glxo߾Mm޺u[85tw H L?M$PU5hH3YWtuu};##%pP BCGb)z[%? ܾݍϓ zϻ3;v\N>}bU {{={ry˓$dƌa߿񒓓-F\KfmmMϙ3{ׯ_ohhΞ>#҅ .ϋ-[ĉ ?(H4vXKKK*o׷5AJTSvzu1rS{yy}rQ{՝՞QcDCt+>Db⯼yS^]]%-j,}jϿ?+.) "Jܺ%t+W yF3>۷?SaaY_@FM:uMIII, ݻ"Ç .],#t{{̘6-(/?|pׇϚ=qOOϙ3Aj200\ii-Bw}䱰=-%~'U'M_%VwV{FRP1|ME셳}YB罼v5z)4'D&oc)bSJʻ~[0KTUMk רT'8x`UgD yf)4 &Ôc:姠ɉb 8n^^]0dǟݻWRRlmmӹsgöGu}QU5IۦMiSQ\\ԾcTC M@ qӻkw!8ǫi)htD%UQTĿk[[[ʂjjՀ6 AxbdL&pH&Jo0U4jj  ܖI]45HN'* @p[ ]R ?(3 ]āj>ܖ1o|>$Pמ'0 1 * @p[ Fp\1> 0d&Sm)@ ^5 &@p.P j@M \5 &@p.P0P\ |,t.U+Uk /`b164]ox<~͛ɡhzll2_TE~ayS?t:ͤvgZ#[ %%'Zixٙ ׮t++kW +?ʔNG)y<~Zv+YLb'.(_ x7`}sLcG:y SSS6"exܱC<ۘ5jd:chx~?GbVV6ZlgUQGDjv&q6-|](DDX DcÀDoN@tږp^I}~ÛyyxwECCC#"">JΟ?AL&nkk#9b0rrr|~bbbcc#___F_wp8׮]Gd֭ 4 kjj;KANwq=hd< CZ-Hȣ ThʕT[,[Vߟ=wt@ }_JE bx---T433joذa`` YYYfAG=, cqJLL￝1Z\\[[kJ.K$loȐn5 lo/r=~H$-L3̙F窪*gjjRLm7Rm= !VVWWoڔؠєc|p`i‚ZoѾd("3.n{l(ιSf[a?y}xxhrrnXȭwuݤ߸ѕL%F"yyyCC*j(0v)0//{nomm/ ˗/;wZ-C=p@o߾_l6ۃ4d^뿺tjZf?d&ɤT*B!# Jd"nݺe{zzt:V 4999}0o\X`'f\S\Ett̪UI558Qk4cb%%%WTVUUZIoܘuنG6 355+*6h[S9r땕;wZc΃**15UII_.4ѷޠ{|[݋lM4{v{s ߫xVWo~Sů "=?_&4ӕ+W?烈={vС LraC$돨f}HO_g(0F" tdlm~5l,\sln`A|f0 igr:]ޞOcSS8qVtqC1\@QH46jdN;/,bq$zxhtp2t ʰerY`p W(RovT`rG-#=v-Ac[֭8#,\'Z~n B Ǣc}^9}8!%+ T0wDM>Z:SNg/T,\:A!z>B . (Brà b!O EQ)O(FI#p!(Qq8&c^m(Bxb@QD-aS>4~ ((((((((((((64$y@C+ tA`J7SoIENDB`oregano-0.84.41/data/help/C/oregano/figures/Screenshot-zener.oregano.png0000644000175000017500000012142113413640652025055 0ustar rubenrubenPNG  IHDRHEsBITOtEXtSoftwaregnome-screenshot> IDATxw|ٽ$.@ %j UA@`EQ"ґ!%;Gr].t3<ݾu,@ ,Ss 4}ovy?"?ǚ_K׿$_˶N2 ʵ:@ Rkb9;# hJ! JO |f-ѵ+g.6}R@h!Uj˫4?s?OOJTDX0v"%P^+U/gУB}b_'[ #F&>iZcpOF]Ҩ\L) dgd@ \EQ:Fۙ쵂:B$@Ai=?:-dF]2B;E/Y.i`ރ@;|<. TZ3flEЇ+Y"^ݑ_zanC @hVZ yUGŽH5_F%XFb)LKTa6nJ4MS4EB!1aIJGpPri*۹UUjL*$2a\t;yjtoJ&3mltTn^ZcY֬LYEyj-p Vxm'rn FD*$;Wx56 06mI mEGBOR_'sGXM2k6K- Iص(/amX #k3BMQ48c40&lS  ܺdLH%Hj^6T!E?}VVK6nA^/,!n{.S KD^ـ[wbӫF{#y?pUhPCDjH#\q;O<{V_/i~烗[2|w c$˟1V 7ӾoӆvѴV,4*ᓹ#f-wxj%S%@@4M!qq sFr>ҧG0ć1FUTV.,.4+SVn9QPTjNX:UPZ5{&xFړvxv[R͚>=:3HyE\lZ4S8~iew`>Y &(1VkI{kh8c/jmd7/d_Q5ƻ"| sjmiQޜ1[+e_nxH&mڶwB<M`Ue`l#kd4Y($i1^rB)H&'Zya>Wu0H  0]Vϊ|PējZoۮcDtP<2m2& Wsn9GTꭙ{ү3&묻h6mI; kqqFɉ@SPbX3uN-q1~\73Aqg0(h(dKRUx ^b޷G4PeR;eq~ET2 SU.)-Kv4mzƙ:''Jn*[+[xUUW#Z^LVIިF0yuu5A /V{s[kS6mI;M5_;PT Yg6XNrrDŽKfYPi)hB ,..z*\˹5B ɼRWq&= 88s&4hN>['W^Yf^eHSb~{cĒ‚'$`W?y|>n@ 5q!*l☮U_JnhY m'i$ZWן,mΪڽ\,!1!PH flu\S󷭿1 *Io2cPxkU[ϪcW.1-E5=-VUYL$0c\?2 ࠀk.0&@KL-$b1a^' }6lF 8y3?c#p\%,2r.wɲwmO'FH1!1~.qnf*2S iJZpEyDX~F5޼y)8}@)22 ~ϗX,miNTv-ZXj`KP7 D ZʪP/hɯ~ʵ"}pP6@hvdnڳݽIUν|l[88O\2RYYU\RhH$JBx2_T" 轻~3~eLbpK1X~G*ufM|a[*Ƥ,CZw)St Go7@ MG.S^V L ½oj@ %"Xk@ %8 @h!L BI~E`U=-A@ #ƣr!uΕV:9?`믽ַo_{cwK .VrQaAE$VGm&c? [s38a sG~ 뼂{Uu@&m4`sw׿HhX|B;k2>6oҵ[HhX)W_]nCBúvav^zqڴ 0`֭[R裏>rTTT:|G_'`3} c_PD}׭{JHhX6`ӻ?|˗-s}._^l ܹkʏbՍ}'~Z'ߺ-*,\O>S^銕+F/yI̸s}%[msHСC~a=Æ dzAAA^^^.][n˯p@ZlP>|ȹŪ?pΝ\h@ oܾ7n|NSGA_JZZwe?cNۗBZ?~X`={쌙:ȟMM `ߓ_HHS|zo._lܸ|a7;d7jټywݱ'B B!l]P[ٳ \"pB]ͧݻusBdggOSRR.]zKf~:4)c^o&$$H$]:wD?ƓOwuOxb޽{Ǎo9/%`՘opf¿\=pwy\Z41jck[ƌg͚騐'l}Ν߸q #xݻw9kvIIə3gVEԴ/vݙi )80T[ !!a׮?ƌD$66ǎoB8ZV h׮ѣGSSSӣGFGGl\o6s Gyᇗ-[^PXxҼFD"YtYNJelLe;%'K$'fA~u`ll M ]][mjZ#&NtO]`aVi1eff`a8Gsa)ܳ,|-33W`k=ľ?CZV>|8,, 8) 3ӷƍ1ﴴ7Y|opצMrKA׽z>×_q\RRiS9!'0(NHA~ 6S BCfΘubpY0|&2j(V7cܼٳf>#^23yҤ>8##C,we7_;gƓ' oe'߷o߷~'--RXO>V4;ԩSϘ/ :ƒ]3 /'(8$?/~[A -X ͸ LU]ͪѶ?qh@ tr_%{(-ǰc @ +iҗG˽C~f`d@ ZL B @hJy@  1q\r^}-@ %k{n @ oI D0jz5.M hM*6K'qy̸&Tr;wصiV(q @ѮN ˤLJO%'K:} 2(8e]_s' yb̰, E!W׬QAr2&'1H <:\M4 0D=i/9xˑRN!@p0@8s:[J/˾8*,,(0gϟ9~ؔg6 3-x}A>k5UamN];Lw'n}VV&B߸аC-pww  ixF~A܂bP(BBBl$NLyفKW.Lcf se&\n4oUdR2o@eG9j߷M~s.t3 !af_>vM&;-7\UUq 㟲c&3+C(νUNJ'8(xGo\ ːy/4rؐ&^s;49WeY %{zޕe*ЃܤPdfe͍0n|YY&}'[jy,jjF]ZV?۷ m:W`0?t@U KHv uqi'Bq,{UuƜSz2&#% h&?ާtx4o":9Uf*ƸOp3mn`3u:UX]t3g熈ƻP JR==U*mu"||| 0NɝL&cpk!9!$q_`dDW۳{/H&m.((عgwdL!)ؓU]L+=Cɼx}C tҘ{ټZB+6,!30"FTwA.;FbܺDa ! Ɏ[)/]:k-j_j~ǎsH X`r g.hvyqX}#}Md:=`j:fNZMQa~ueNGME4M,K4("6Q%{/Xӵ6H{eX.OϞv:L뇋D"W|\C:$6 f tŚmyaU}Y h4 X/\l7 YYCظiRĄjWrFƈXRG%uLp8z^=t3~y`0ܳO@5K-y{b\ifzis϶ c6z/uYj^Kਜf@5j!Q <۝DH1pDa <06[ꮁ' 47oٷ8׹d4hZZrݽcbS ;~tЀVSXӈ((Dq(Խ{sۦ{2˓-ue=[ \`Vj5Umź-\Ҷmsgܸ/^1eRppis^c}a:=s?MZcV,krՋcJ%J].ZbK/)t+;dSsd-XG=㣌Mx?]mc\rc㻚VR4?""TU'ҏu.;}ߡ1]( md'My.c6!^#=#c;tpR't! r*]墢"?qm۶ 27gϞyyy!!!6Jc8 `Pd4rHԛA'kRNA Ght_V^^͇8qjLSrIJ;w/ X~:PHHC:6mzh1F:~븸x;eMAAeE,"D5E tڕh.iʼKq8OL 7JibZrNiL tRtt^7n\Ϲ+|EQZL}1ٜ/ŌAR}<օ/:..h`Ri~~~me?F9ȑ~.>6N  :U:L d_䋯W,}Sg4h0D_Gny0 @X$b#wHxо2bО{/̯R5K&H. }aW{b>2+U$Eu9 /( acc*t9k+++{QYyą$ .Vp3eMoFA>@XMRN6@q&Wo8Քq.>c!Xmz~$|:xp˱1N+m\]]ͱ&_><m#ZA+-rnd:eZ8=MpWj:d񧈈ŝ=rccv9`>bH@SRH& tgl$Z1ˢU[Iӧ9?XbFS VQ(}@m۶}ӧ @Ν{rS,ˎ7ǟ &ۿ_kև*RtĨ1J2c}f#f)k2F1 @A }iF>ldP@pqI3.FşՆ(e@a1Yf1v jC:&xfYB] aO^>}t5] Bː&8{bE`u:}2&E`dl IDATϫA[\\db&PSYe4{/H8skZr5Y]rBBK:''+۵>~;!!99[pwϽsMqLԴ&jRq7~Ø5+晵K`3g$$&pt sZ]^QqZWdAiiiaX㸱Fa Ťj0a DrE+ H,ӷo߾`46 `̬LkׯSǩjBgϟCAF3!-uv2F@)iݹ}~yG/_>շ WXu_S]3Øa9Xض£s6j_C0`׌JUlUV=N>}a}0-Ch.ٶ}5W_` B4F qmQyX+ XƜћXۇyt켅((@#c^qO/+-H.g_U* e[Zx)BBÈBzGXsA#pZ]GCKufn:GQ;FZTKDDDVVVbǎ3O@5oڲsdL&a¢!9^˂AЫQ\~_x;(0󃂂T* ìP䯾jʴ):,[ǟa÷ l߱/))]~;wfLDOym0#0 nRi44$9+/wĸKMJKORyHSy`FcaWGJ ,+-qu7 j$Pyyڴi|4wm!Æ [rd ~x0SCp51b,DYYd0H$nK{;dYgv*N/WVVJ21h?VŅ/2GlU &V[zS^rf !WCC¤ޭ;kbL&SeUUQn.@#()8hOB%m:øT'k ֽY~ԩI qԩ~0h@>.!@Fє 3&d25] *1V&`O?G\Rj ={De6hUƒw BFޭ[tfVFrR'#c:w˳g:^y*(QN~N+YeYEQnZv57t||]vݳoC,Y^R`28`HzG h}I(yz2z9.0Y{ˢ"(*""ɓ:ee4JȈVyM&qu~1M/0衼 BCc==\"DZ11cX'zş~ Fc@@M&;>,TUDoC<1dOwwrBBB4ݧ_|ܤ"""o޾٦9$^y <=c4׍76m@ZxDk(0?7JoJ#w\-P{y{A1Q}0/'1" $G*)%%nHM7\*veˑB-^[+_?(wde?vBS_$FP ~qXyoT\ξ*s!UjV|"5lU9j LhtJ_? x]pWZR JKlmgM'&v?v6JDEo UoM>=y'VVWH$F><o^yXħ&| ;M6O><ȉlO@?߲PoA% G!~qS)²@?_޸U]B5 %ٵk0L7x9-]lݷ@EE+͝;~ s;)Dy<1DSt+qX &bN!j.$c'+&/zӞ\2ןaAԆY?'^B ĔP$2 JRU j zݎ];+T:TƩ+׮tF޽ '|a\Vx&ڵ6Xy7#>.z8vihF)>Ws#[+Wrm+ C",Nhe89㘘ؘؘK%Ů܁fN3oYT\䄉%z\PŢiS&䜗g4%{YC.Ny+O?{/5cZxx8/"iX7A3 vԨ5bBB27M!IER1HEIv:ӭs uM>Meyr,X2!C}<+`eʼys8qy|AH   XFѭߤc ,~Z0>40SѨrǚXe(qjϿ0/ UUz^ɽS^>%O<7"Nn<\&sgciY5:kޝh^^ @W~&}(㼓ھG\sZt`-EQǎs(m.F1;[nݺukĈ N$ ]%k7l<|H6/U&hPZryBDkK> ^P9o"MhҤit9;;*2* ?!>vFv-_VnnaqT*K^!`8y<=##sNݺwٳ'Y %"P@•ݣZRQߚСmL,3]WnxҪ. 3jZ'ʼ.2cpp5Վ uP  ȋD5dz ;h4XaLqtlcYe9hie9R_PЫg UÇ;w}T*RD?e::sJ׏:VWjtZ3g{Tگ!S#FDE% @QPKrg5%.=]zfȑ0@iII֨;L{=>.>>.2u_ϟsEh6q`Nh+sͫ&lJ2+Eawꫯ?zNl0L"77~DfЇ\)BvNT$y!i nUژEuMҗCY0zcmb[bbbbqllLlLlL,BPIU?m-66J؟7u KS" ܤRR.x}5E ;3>E HqԜ]_}Zeh@0l?L߼-Z]oY^s@"i׾}L۶|3n.4eQb9Vps鲢j4:0''رc'Ntٳ_}n)}tr%wwP~~^rRqc+).}Nn?yf[)kFAρbq"DZF(  Ǝ/,*2L/xǟc1?v?vh4ȹ7y|}r/ܱ/Xb}D,=s(~w}oʔͻ V,_z$i]Fc8 R21xn8/ O׼޻|}|AGDz!Z(2UU*Rh{yFRnRuv,4Xε?FE9c̱^U$Fa Z8t庬FڀG}nܸ"N3LZ_|bԣ; iiD*R4Љ: FEi5M;:=žz&a`Y`900ஈQ/׿f?y*)*"A\p'fYv kLMM֍[~2 MDN[ۂ ڱPC:}vdFMіm_PˢRkB..t|9tY  >|?17WUM >> ثgN ȘXDz@ѴDBX,H$nn2L&kp$ `bh ODfFgBK%E?ԫKprJ3#3?09)\@|1c2 dڹ{otۨ'd2D"~yHM듖R5yy… TE-^؉Gmg a`Re2IJ&d2E ?Z:~|1k[SDG8dҽh^...r L;w4CRRR X&{kFGyը6u8 ~Fow7~/Ie S$8Lxb[XXM`Bф(DSqz>..`0ŶFKjz'O:;irii,\y3BaO&8wδPXR:sF2eQO`H$Jh4庬SSv8M5 \.˛"Y׻W"څ&Mqp7Dq0 uhwnnܴ!4qZs#Mhy(   }-ZTVRTVR{O&ÏR]DQ4rw!Ç ߾s{+hu2#æ^}Ky/z-[㺴X8p]e--c(J&uy;4(P(Fx_۟gԈpTЃvH"#"Xz;AVqA˗3 }&D/X|9V*$s(v9sˢESD"d2NcL&>>Bi޴n/=n/^h[9ٗfL~iP ibYV@w}ca .ʡrt9g-ԊoؒqP(ڴi0  QC7' ?X},ٹfMKRAu!/LRR1F#`bM'=Tj5% EBWL2wQ1#G0 1 |g/D(J,7hF9 !PH "8/1aaa){Ps?+p5= EN=õܞ-!- ww`g(zbEӌ=E%oXPnnRL*qshr-'[hyvԾ, 4:*P40(ݢ1Rǟν{1lrm^vqp@$:ۻxu(n) eS>bj6mڕ95T(پ2Sn"z<&7_pmͼg##~;v𠠐{ljq@y9óݲadD8ȤnDW70 D @.]jBXMۜyٙZlv~{Fߏ1tnMߝqM /V2?Ni5 Ty.|e@ Acw%oݼq[}hQ([n}#ONzA f֯|_~itkbLc9uuuQQѿŢh6D"(ТٽsgbB6Qahu:V"wy%qEØL]򟁱-&619]A\2@h`bqhLj q7nrNBKK&͜5;t˗os eMd 4EӍ;\ q3f]o\˗ر|i{SZR ƍ:+ٗ/_$1!-?÷n6ޖ5#-ZysM?|뭷VZR9r…ŋ0ȑ#gϞ׶my٩RG7;wLNN;w~7z}#[tـd@XliRRH$JNN^tǟ|joG>ҫW/D_߿h3f ͛7?\lpu;w, [j__~gϦ~{Ϟ=aDr;C:vxaDL rSJJϛO###7n|≱#JߐаzHݻw[0qJ˰80aq2C|6$"(u?%5R{[l?vOxM~S ~fԩs_~7mj^(OQgó2eQF^>SǏ/2OAA>߹֏G|r]K䞞JUS6|p9-N5C}:$!O3gΎ[^jfϝ[ ~ڢ6>Xn ϝkxOj1(up3*Q2?33aW^yeVEFFY`0\|9s&2eiifl.qm4~ma ӦM.\pk?Fh4xQubkNwٳg/[RxI&Ŏ%APPCb|3331?SO=)mH q!E%< -ך݅BTo2MFuQ(}-\1c)χ=7e/<|}G> ֪'N0ц'<ԓNk@{zʃCi{D|>}zwk֬ _tN65֯_c|I+WTVV'^xEM򜗗 [0aŋ ܻwZx lK *E]o+ﻎS*w<CǧW:<Ӎ&LJJas=ې:t?] qfh=zl߾U-))رcSL/)뿵L;jԨ:G=zz;Կ _|i&oc!.Ep] N0̫J%|^޿V?<ˏ-OS_ئ޼iskךDh:V_wWF\}; Y*{:P ,ҪX[EԺP?UA^8uCHU@EA 8$$2.yx{{{3.]m[U {wۿUcx r7⋯LRu015kԨQtN[[ڶ!NP~)r}!$',L[Sx\۶;vd %ii-MLX?(KAHVb`po]]% u9q]g%B2uQKAH` %IEZjCԪ@)j*K+ucǜ;G.=Z؎iܸqQa|nvIYH yqNkh4@@㦛D 5qE445۹ܿw7|\QVsƍsigjbR]_݁:40ԩk|XH);K{ΐQp95ʹ/+=* 5e߰$Ԭκp>_6\QsYvVB¥kfWQQ!j@RAfڞ-A:n&+K U^Q8hOOU䣙ǦLCHV]efT)!^Q; dF U'G'W/5=p!Y=^TpY~1D zFSSSiʥIJ؋Ԓ @KV..̆'&fd%9DB аWT Сuի8quK4klBQٽ..NޫW/U *YN8訩ijb2l'3kϝ;memƹUy<]=vl_&f;v̜iO_kknƴ|߽X[88:}EE:bPWP5n?ĮOXLjgY=|p1cMxEK,eJp‚|B _òYǎT\n]VV۷ gϞì•fKRH1*Ȉ T R zժ1cN޹3Fr23&DDDlr5kyҫ'SWWh% VkVfc޽uwlTݹs'mmmSU+W^|YG 5!_儅 THSRɓrs;ZZԠN0ᄚ={UEEqRLuv~~~Ν]t&~JpH}pofV&߼;BSnbjV|m ==*{415+,Ԭ@걿{vKsJ j$dw~ صH r@Gb&0BB._ik{/Vܸ1|djb2vzSg̸}B@ x޸qcML eK@ bVIDC)\KV?0NXƍm~e͛OCݽ[;"mϞ٪YZZ<=/KzͭٳV{3444߿_]k...Qhxn}|C1~~onSTշ>|0#AU` 2ر|>ٳ/_`?=zի_}5^ռy_~]^^>g5kfHȼk׮UTTdffN &K0 BHVW\ O _ ؓq*i_;SS]--_{{}.WUk[PVF),+kn0 9rhݬml jll%2^իWoiպg-[GL8^uK~wU׮Yt2{#G]%M/\#}|TեkMw۫={ٳݻu;~hkI?s9ՄKd Bz{R\lϼի/OZս͕fb@ػ'OݺEϸVN7duU)YX8ҥ۶KSR$&4Һhfh4f:Po $%NXmwHN>a廙3 TwEj !YL%zϗ \*HņNEITPZaiiⅪ;oZH)H)/x'&j"yօQ_|YV |1f*+*VCBMjs[l>{h>AhjjZZX~7ɩyY "G l٪m;i  $Pyyyyy{ʆ`  P:.u'&;+Ν⟹^3$XTZA*6tR-*HņN*SJ 4(N3/_LJJ䤩I EQU((AɻwyyI:VEBM9PPH Qh^ZˇL &POt)Ѐ5/Obvs.]{>_ \>|IbDBM5@ cOC2 R{(T%٩@ $9m*)dp8<$PEQ:::RkjjISDHf5z4ȑ B2(EQ9ϟtCdVBBWV~꫒SSUw@- To_B: J)~r/EQ)_<˶spttj^mNлw;YY5QuwԏV-5Z'Ea϶fgozU3;_Ln\Mkτk~Ӯ/8vkWLRѭOgK>y)_/P T^SԪs΋{G7GHVzZZnnK0z9@D#\Wsw^h^eUwgk1gѼɱ/;&;H=bZ6.H;Ͷmh팲7if Xrܻ|>;ٙOe%n]]E @cΨOĮ9)PNn,YuSJljD?ety%<9Ee6&zޮO]351nictfh433 SPۯMsK ܒثJ>Uif|)B2XXYK{ meel ViWMn<,(VFG&97KU%1WGd} ug~Eٹ6&zq|_7^uC_ $g!K+k?MMM }PQՐ(_wˤK iami`_K{f知ey6͍u-.ʰ֛ e|W㗕~ƐYU\RaԈ+h [ccc%o 2bC'բTl$*(PHXգyLIfFiEHi9?3}fF›p4M>PKKCl*ЙԬbMoN75K3X^½usjr?,^|_J@)Ty%($M!$@='w"v"rB5OdjNY9s+ӣIϪ`x7xTXY J]EO]xl~K 3n}4K7Ӟ.TJ\OPω&o)h1 !1bڦ?CڣIIC,?x5[g2!Yy%k\rJ.0[bou #NGJ B2ˈs,{!?PX Wx8# :p8qrƟڬZ(ܾBu&w@@] $O*L.PSni8j$#6&3SSxH-C2B%?2bïVA^"fpIejH$!&ȝ#-z_rrrm 5Jt I8rKCe!D(Td_U%˾-nĎ"1P%hE<`7"##߿/Blllrro===OށLp_gccS|Z B2487n\hhΝ;RSS>|0*:nݺ*wTYӧcJݛfرcE~̙Ν;;88Hg\\Ԛ|G<{̹?}٣5'9| Wvww^k׮mCm߾Kjj͛O8-k׮p€K۷cǎ/^̚5ߟY5dȐZ딠8q g%Ǐ'=@zϟ?:u͛6'*%%C%۷o߶mǏm۶iӦg2<<<ݻWvBBMeS\8aaޅ2O IDAT+HņN*VXXi</11q#F9s ֭[ 6`ݻm3###99yܸqb盛 q\ww5kl߾YeccWvBBM9PP)&R!!¡G'%IW_{{NX@.)')W^ݽ{ǫ{Ν{ ӦM>\ZZ:a„+WN6ĉb'Oѣ_-vNNNmll|={0SBHQQQRRRzz:3k:===))K ˗aÆ3grVz]ᒛ7o2˻wﺹ8O#_.5jj;]{} 9rА)144=r!xɒ%+VWijj SO>/$ɓ%->ǻwŋUN@}fx<=4oNLEQ"jP["Kd:9rR>ABMdQITPZc~_y#wc_qU  rjԚDiH "  T!>22ɓ/_trr5k֐!C!O233ӧϼywޅ9s&//bsa(9[Q24,_|Eqq͛7:uYɓ'O~w--I&ѫFۘǏļ}vԨQ>|ݜc5 KTT\Ν;Eiii/]455.駟Zhr{Po!&@Tl$*(?~oZ={,44SNtɩS~`=$>…ݻw?yСCײe˘egϞ%&&zxx_^jݻ;wmddoݺ544TGB24,`---GGǍ7=zTϟ?O8::>|JۋݑGff|;B24,;vjr^UݩT3 $@8,>9{CVYYY ,߿?]2eʔOΝ;7++eeeܾ};880~+WL6mڴi;0PH رc'M7mtذa=jhh}G'j*<<<88ת %R>}UX 5EbC'QAi$Ԕ@ShBMCBM !X!X!X!h''*6mvttlݺW_}uEm>رʔq_'V>}ٳt\R+W(nC:thݺuU2UTT?{,***##?}+)MM֭[o޼eB׭[7{{nݺot˗/ܘ:3f̠(ruu}spppww xtMtttlmmEq]auΝ۵kWmm]Ν;>g0lذׯ?Lׯ_'&&.>ȑZ&䄅B48#^["zhyR߯_;yyW^- $L M#DQ BBѿ5BH!/uwII+ԩ,'N?6lYYY+V}||6n*666W.,,޽G! ۾}KJJJppO3//~uݻws玅g͚ueB˗׭[nݺv.^y#""eU;vrHVo޼)SUя?^~Է@BBBgڷoЅ tɡ?}7cSQ!!OҘ1A+wR +4F!tvn*te8x`BȈ#Μ9ÌD333[}(#>1{%?ڵk=<<\ghh]U{v!'>>EWpssҲ a|r ---VVVr@@UYkPאLp8.~TWK^S!H&9yaaqcBo5Iӱ<ބs~{ȑߏ<~=EMw1":իߺx)P_EFF2%eee1##Ev;E,A׮]gΜYPP;v?|+RSSn!Aynn.sիWC~cǎYiuL̜լ٫W?sH*웺:d7ן~bMm %t,9 70+STTIzzzRRRQQ!dСIZkժՍ77nhӦ ֡C333ggpOOO===k\\\; #OOO6ʕ+> v弼K.abҨkH&sz^pjqy9!$:%(_ggUwM \}GQ.USs:t~wUʫtL7|.#G }444=r!dʔ)O< xo߾MHH7n\v1qŋ߻wݻwoœ&Mb{}!g̅dBHHHʕ+O8QZZZZZXӽnҤIɕ၁΃300ׯɓ}}}Uq.aR4=-`7[||&?O0̙\_驜} nVl15zqj$66vٲeU W\s۷fggxxxTY5lڴi999666ӧOezyyYۛbŊ޽{3k{1w\@>uTYvdOWCW?~vvÚ5k;$ `VC]MPlv7Aǂ`A}@&( !P/S* %ˁʯʔL U.+Z2%CdM&JQS3Br}Pd%%OQ'XzD1b` 蔔%{ P3WdBzM>Dq*@RQke$<*RMH~!G#nUw2[~qv[3҉U%BUaOOL+::)::JyyyM[nW_]xQtsO:v|2t\'''WW ^UӧO{yy988xyy={.0`+Wʕ+T􁀤GOctURʶT?P?LM-C2BLe}#&>3,NVP uСuUCEEgϢ222ɓ'ٳGl 999999{XpR:.Ν;RSS>|0|YVݹsgɒ%-w!$ `Uvqc*p2q 5ECHO\v#ԺBEuCM}(TV޸] ȠiiiK,9zh~6nضm[|˖-?޼y?G=_۷oMF/_4t3flٲBQT⬬!ϟ hҤy󴴴=._<***77ŋuݻw?*((GLo^RRҥKW6mڔ^={޼yS___;@(1f>)(̇`bC"1>|z7Ŝy3&==n(  66vѣG ;6qZ4([nݺuǏlyQBuƍ !G#}!}ٿ+W8q411Q_vm%aդIÓ+++n``Я_ɓ'bbҨk`ʶ60FB5V`Š*.[Jʕ+utt>}l*QFM6 j£L//5kx{{BWXѻwofm=#""Ν+ݧN*u޽cℐI^աCիWϟ??;;a͚5 8pժU5:| dPfI(Xx;Cpž={2庺s̙3gv$_H7n\u[gggf>L] ߀$j2x`zX^uנHH)ʛ$d5J(R}`y\ܤ+9Mb *44jʾN1 kYbHJzZ\lb^L%՞&v[ypL)ejG 5HO4o8%H:Z^KqCsӸQ5:WNN r(aXE׏?bcbfW(ūѯ?S?]r;ZlNMUuGA썌48MǦ*$dEaPp(T|ox˖+j.@M >x<^eeeeEŇeee߿/)))y'%$'5]Zz m{fHUEQ'(M^mĉ!ϜYgOQFϝjBΚӧUYl_m6oȢQHE gi}6(T 'ܹ#ꎨRBB5@0fW%%NNƹߋFՠBL;~ׯgΜ}s bpt5jf|wU;p53s[㏃~~2n%1ćxV aLoO߼ɒ()Ϗʯ_||웫d/t)ST#2AgYcڼuvˀ㜝rS=s5cFr54^o5u֩^8sl.]6lX/j9Jij5{fٮ]?=7+;ޔ%Sڷo/L5mݻo۶k׮aYZ.jpՖ_UǷm;m[zyq.->>[||?zACCc-ݻu>|!D `[ 뤦=ܖ 9PIE9vҳjdYRYI/+pualm*XAeocc@}1f?n(axmOk#wx m>+?_~<Or#Wegg7-[ttt (,,TڻuҺujq%&$r}+nܠo~uN )_48nԨYJg:7jw៺bccǏO=ztmV^quO*r刈 6<~ɓo LIIIIIi޼+6|4(-Ͽ31_˪(*/?/33AӓލСڍm^:7U_פ՝ڂz,7J> J!]O-;+;EEE|q555MLL==kMQOs.|Ѳ庛7Eva65;A@ގCr;ƺNh+Bv<رCC0%iIEcP Zt IDAT#c6A }cUBM"ej~U-T">Tl$*445/ U>֫+o.II+>^ay"E5oፒF%ޗ,62, vn[+1kRߙB TP%d>>$0p; }&;ui82`Ϗ~V^k(,_115c~,;u} _d5:z[o;Z@&&Oc U{K-(ed%S2yYLnǼQݻ͕_9=b]h(!CУcǎ8=}|sQ6}|?~.cbjvJO8ibj݇iYU]#;'!V۴j݆uGB31Pf1#rI|mrV!Of!ZSTԖϲ1ׇƫLť݄cbb!c !`TّF!}B%BRSS M~a,A0~GI}1]ncǍ/xMA@0fgϞB,-- 7Fg׭[֭[gccc``! !Fѹ_PP@ϏOH5rdIhק/!ڵkx^HLLd*@&qu݇ك"K:cuP',c_h!o jJ !={.";tC:|>ظʾ$4BѣNҍ|>?>>Ftuu{~R7ukРg%''{ǧn ԏlӻ/ 1!/}3cFO[y/-ڞ&(*$|}]@~4nԨ7}K0˽nynqsZp0GÃtصݺusttLK׽{롣cnjtjzmhheeo_~Z7u H(#6t p p1;{,OSUJ.dg l!2 :Np_ 72pn޸q-ף`[XhҥLKx/^8xOS(8N1 BƎ%7B>MyӷO߾}9΍d] Ąu0%78aaXY3ݺv溶w),,,Ķ&BH3ڷo"!ķ_w::8ܾ}KqZaBM^]݂2F ʚ)p(BÏ 6I6_ THHwɓqO=innn{SVybίҚF!UBq*CSe]`toӝ;>bJ(R1wor7rBȬRBBaG!q\)8 sV^BB~˓'nݢWBDK8?Hq8we_zZZnnKkaYA??E 'kwCdDnfh4f䒏[Q!dwJ/LpqRp_hpn @v7(_:~T]NM2P !2dJI_e&CHfȐ ,Fi$|: ȜI3$6pƇ*٭DH bU Kِ iITP}Z+jUPS$I)H#5p+?i脚u{ B2+ $B2+ $B2+ $l 5Ep\Հd4d8 FPÄTɭ٠~>F?2bC2K6Thh$|MC! #z @CSkɸ F5?גX!d2@H`dV@H`dV@H`:%DT@TP\3#8(rێ !zB ݯD>t8|Q\mmMMM[ݺlU>A2aYIyΝ8q  |4\y4e\QdAtt wq8xz\ $@d8)Tc3rM $8u gA6q "J+ $DT@VQYfH Tx,{} 5:XYdl"!!?&(vVYZ$}QY2d H (K  2uX 5QP$ABMeSI >(j&(zM L5 \^P dzM((vZ݆bkT]  )3}GÛn-;Lijtk!iC8s 5Bj>ğ GvkPPXZJ#Z:*#[̐PX 5Usd/1&N\p5Ej$)dDI]6CH!+=&[V(7AJz_E7D< F ʨWLn(ĩn+#d 9t@efVB2q a ի.* [h`\+ *1 âbU[H ,EO/ 5uPu8-F$P'    H ,,R]-5 BPX 5ABMu   4, ̲7W.R- $(Uuq)g3$DT@VhhPX 5A.8ŎH $ODWݽ{e˖s陘ގm[lI۪Uϟ3%ڵ{.hMܹ/혿Ν;J#ꊢFcN !!!!>466=zH6))ISSSSSƍt͛~M6.hF }} &Ӆ|>…5ꫯ޽{'B2gddٳJ vZ6-//ƍwa&B֮]{6lmĉm۶R|7o/8L5kV~~~^^^V̙CY|yZZڽ{233_xQ"xbcƌ{ի0ѿ3®^l2pڵwܹ{n^^ނ jgBHP3gۗ ޿QQQhʶǏ𰵵uww?qSΟ?̘1&Ms5k͛'Znjj:bΝ;GijjJIKKӧڵkϟ?O_lbkk۸q7h˗/xeexmڴ|ӦM gÆ֭;rH]v!Grԩ \|yС%#m]Yȑ# .,..ٳg-,,ˢ̙m6WYYm6fԳgO_XXHzɩ#iӦeW6\z9''m۶ZZZbکB2BTVV^tiРALILLرcN:մ5mΟ?@_U7n\\\\^^vԩӦM>|)SO^UVI8[ۢE OO-ZӧOo޼aY=}J#ZZZrQQfff&eaat8;;|\Qw qVZ/#""ϟ:Դ)ocǎA_fҀBȼy:lxEӽ{w {  a tuuuuu333j?~ƌ/^(..={6]ؾ}Ҝ ru5ҸqG9s fϞ=f0((hOLk$$$C[$=zkdʕtߣGF3fpIIP;fS PZeee΋i~Z}Q8 c#m98p\UwGIPPXZ wx{{;6LUVVfg>z劦F}?^j \}Q̧On$&zk(j?vvR6+~󺲒( B2z|u\.P@QLP'Tn !$y^(B2݂)@@QE(^%~)@ $|DQ*#Wtv  ˷-6uo9ah&FzP@+B2@}b89ٸQ/(;6kp-$1:hjjZ[[9rʕ5RJ.j¹$Ϝ9?oJWPՕh?+N|i/_?kajɩ$x<^iiSҦO7dBrllQPWAT\\~~tT~/jڈ$ [Z+)kIY5jmkָ˂hi|VeյHCCyGӧÆ kܸO8ѩS'}}}''_~EӳQF-|8PXG8fO;,\Ǜ8p3gv7p>MڷoT>sl/FީO_xYjڸч;;K=7& Y>JϜy\Ŷr+++[Wn޼K.+V(**ڳg!̙3ӦM۵kW=^xzݻwBΟ?dɒm۶|r̙...V|۷l2ĸqajNk6444mWyWnnaB2gdd̟?СUV zzzWnЭ[B7oNc|׮]{{N:I %:غeO;vl'XU_zܹx !fF[ -46Щ,76HBS\.4E[nRӧC 111rƅtE{nNtuuuttmmm_zU#W0J51fhdUExJ7 yuhWnwUV5*{wy91//AMxIA})B"Sx sJN#Cc0TlM?Rډ iPuM!iQDŽUmJhق @2y3c})}ӽ,;#%*ɔt: AWr=Tq|nݺvڃ߳X,RIA㦔޺#buA$q7::j0 /Y8MIqXg\[k]qqpZqRJaQ[^I;e|T7y'F_x[ϟPVfW,dɒ断[M>8.] ;ծ. m=^\8+3VBB)#[`eԆ_ :hh@^^ޡCz={kkk{ܹׯر3~߾'N\.uM6ǵ/D2hʿuM-c}7nܰǸ#!˲q\˞sIC'Np%zV{B ȑ#Y7nڶeeeﯫ̪f/))ã^ 7'gA}}ɾGKAeef.:[Oʲ8ff̊}y1>sN"+*(..nnnV|wrdڑ*4!#JzX$7-LIIIaS .Hߝ?fACl$å{!D9A{1ϋcǢ\#W]?}98DF F"O^cяN_s-LR)#39gF fMk 1pno8šե8M*Vrh?[' 194/ܽt:Xn0X֚RI{7V(oG{zmnU"L WB0::rt:Crzb,} A!5/q܅ =]B/WsQQ4_pjBoXGn )[j춶 *4hdL:k_$ߛ;o,ˑT<|X̘Lcˌ"L ##k{gʉ{L]~,˲ ݻw׀aFٳx @b`yMMMG:]سtI=t=e2IS4$˗m6+)Sڀ wc:/_~Z$8Q>*OOqr_F]O65L02! }XTO@aL&ɦ&Qk"]:jp2wVN:Y}Ns/<q"QclpرGEwd$GPݻS2 a!h*/_^qQQUՖ8}:^jА.<ϛDqul6N3ƻQF4.M|05^KVvhhZI%ڀH {aZ !|V2D1BfF: 10*eYUzu,**9iWհ?ԡ2eFG3JEE>`aUi)9/?m=E7wӬNޓ4pAN$uU_Mn)Qj_V^^Xb. _loqjZZJHFzƈUĚ{ V1" (l"4 dM@$h"@HD2& 4 dM@$h"@,iFK5IKa3f4 &2/ť$ɥu 4&Lo业W]X(IENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-transient-settings.png0000644000175000017500000005331613413640652025472 0ustar rubenrubenPNG  IHDRsBITOtEXtSoftwaregnome-screenshot> IDATxw\DaDGŁ{ªu+*ցuAPAPT, (陆"A~޽랜xspGb|ƯDobd?} S]nʈ @8|)SI,Y&# >V+3:}(Er6Q),u!vW\bU>U,z(BnՒHҪ:BLv! z򱼦ebdCۙUNI͋VZ-B~3`}W8ͺͯ,3ZK=fk߯| }7!գ)-i{zQ C [iiZȮ >w)(x!qϯ,Z29}F3@DxzVλb.RS1ΝBD_}BhȒ3}='I??Q!ͷ K"6P%B4"y+K0L2Y^@;wX -;hD"<9%ukkg]"}(Y}8S']ƘF? cwZynaCoE|xD,BȯwOMSI{gPT*BPaH P8f`HTWwx;ܫk&UQ;YR"v6d{7G{mmN>SWgXW{'kToߦFKu۽%)'ݛl0Jۦ9Fooon >ΫP47aS69yô4X[`~ ڔWff疗W8R1[8D]o` ?ddrp$EL:CFw"JAm+U˷g2[rx\]j{qluId El`̧qaUD8.z:sBoPh8 3&={v}Dv,XbVx<,9\$:c⏥da^wO((.si3~nkw (+`5{fެ rXyVJ684Ԯ!c3=z:'n=)( Y?ejkAðƦfGß`6w|ٞ -YnƧ!Mt*dӉJ\I,*x؎YDv`yü#' O&TVUY ʫB^>IP}v sybޝ8'n۽;ـ($ Dɧsy_(ޙhT ðjG Q" ޲-r^/'KvFtNL:m$]bw,GQ(~WT յ^K&xk3A*+MtBYJ B^#lLt*|;]iWc !O@'1#PQYmc !kA?^48.50d]3KlL[ *e^^Yšh.y*OFڵIӤP`<.G(bF"p"c2RfMWWU+ʿy~hɊ]^Q!=3&1?S8OHCMFֺ6\yϣtid+J㵮l^#0fjΗo`a—s~m`$G8%jm-~0w;Mfkc-Vؾm];ͅS>Qy=IPB Md]I)<.èT*3ӦN,--ï4S/RhiiXZ L Eɣ] OPE".oM D"BԨPP^Qia:NuuMk#m?2Z[ռ7uy%-, +*0[j#JZѷv#Ђ|ckU[OWT} X"4&kjj5°j jlkXF5~L⟾!D^j]I)k^^(bQ(JR)4Fh[VVflbTXM^o1-ES[V~|4˴vfQp N3=!&%dRa`d/Gh3iYFUqBlGO$vad>{W0~g#%bGP0ЁʯJN~.?Zn{ꫴA[v`"+(/.*4}:}ĞZi2xBQ zyosW|!}gGs&J깒OoOM ô4Y\.?5@(8 &NTMV\V=fO PPyX~_X,Gbγ i|?w\+6T5:UFF'o j]Yf葽;X<!_pta24e꒗<p!xZ/uZY%Yfd#W"Hs3SaWz:~lNG~cŨE"0#C[){XIVT^H\/oo׉Hv*!;J>&a`^}W.gu FyIH|pP(0`ut qr BɡĺM.[PUU#iʖ:N mn FMM@?''*.P +wWpB-Z0 45&D#yJ(hj-Zil)5Haihz,_U,#CU*B!J056TS^U%Vƥ}F F?W|Uq@3|ֻ֚ k[U~ DSVV]O/9TbOΎm w}Q(Щ{ V~ޣ)^.ebd?V|L(VSrT.;|[,mֿҐ 3KBI{116Oq¾~ `jͪe/ zJ))_]R)&kld?*Τ?4\?T׺^֕Ғ~ZU5V%g{._PU#u A&Ci"݉hŗok4!4ЕG} :hT^nN؁hhRK^\2уJLCl);@ %˿|[|8sޞ 7'"^>5]:Y);I'o?s֭n2-ݕ!,_XbkǪA+FKV~Q{Qeeeʎ@`ZZ6mڱ  dy e>,`x'{=}6̹}"0)!֪?dy*F4jqɬ(Wv ? &پcǗϟ{(;CJQyGj݄Biڶe QB k;*/)2ԑ?4}c;ÿ)D =Nu@(p %c 36!pP^aiw{k 6MZ\'}~j<!Tǹv3'BhBȻ cGL6+%5tkk5+]l_8s>h'OۻOB˴M_|E@|o3X_TQw"n޾LvW^:=AF=wԩ_ۯ fw#ݶy;2 /Uꋭ6 _X/,'-k$녋%2.^ ^w3ZzequucˏǏUV^>zؚ `s!}E|nLH7¯\ !.ݺVV]ITݹݝdhji,]*N$G%…D3'LÑ(';? ͖4:1d4_!իg?ިoglfft}9eeCwvns#Mjbje3K&OKdp5ӗj-ϟ?WWWOž?N[YrAClww5k·b*۩Swlo۾IEED9B(--ť'!ǩҵ{IIɛ7o&Lwlga_NXv4*| $G;yd/>m۵>FfL t:-|xH2^T &d…Ǝq|Ĉ.\? ϰիV_E 'Gۛ533#hQSSCllqRee%9ٌ;::`2^rrsE"5=jcggң]Fq|>_{|>8=2xxzDV9;9zܬ -MP]89/O\xw M JCSwω7ݱqׯR[P0eڂ3=zhTp¸TWWUUU܋23Uw)1^꫚յ%֭vbuuUuuUlLDQDQRbp/KK^|@%K'[z'.Yکcׯ>zA\dbyѣ%e~Ŕɓtu[Q(سZ~Zݻ&G6`҄m[7=sr?k*׷_-Q=NL$ڵkGcF߯u£GdGm}Z~n@R eG߾K\~\K|\o??]==īW^}UW1&OT7٭뉳k9d!CGRbp/W===ZT'[T~=qH$J,--N9;jȜܜ5k[+ qc.[>d` BΘ9{x{MML$zh@0L`ll_pᬬג7l}/RS7-OTuڅ#76xC7vhEjj%b}`/o|!G>w#dyL" ]ru…C8"KF[j՚m;l&llI { 6,;f̟a>M999ؾM$&Çs>}>|Ng'xoӧMӻ7Q5^e+pOyDw@Ꚛ%KM0گH -M8kƮ=>~(&N2y8:~oNnf;vq+/c'Ϲ8}]GE߻}m;'S&irR8 BBAþ3r?a y.=<\TTs.Gq0slu~, <K[}ҥ>}} ɳ{iuZiny\ڧQM8ڦN+]6m&O?N#߸!C~261gxxz]|Y"$ G ?}-++3fLffʕ+]]]p}{.#ϸk>Wjʣx#'~2uQ>~ċ.ܱ]A~̽|{11~dfu0aS^yY)qh:!WUU6lZt3!kζmbF, e2cǎA~v1)S&#O"tuu #wfmܸQ lټDCC#x:Ж[4Afcǎ;''!wI//9s4Fl!dkN|3==},mV?7Ա#":w}ҥwqBՕxl̔g5¹|nnó׮]`06nܨ$ ?LrV,_V]iG2M**uc5rH))3vl];&&^yvMY?$$$//%%%eTϞ=Cg0_o^=r09./(Y#X>}!t+Wq!ׯ3 -MMSf+W˖/OyL j$U4N9].\Iӻ8;Ϝ9_?<`PaJ8Ƭ a0Rp9+}Vԕ4\CڴVVV555>o7x@ӤyyPXWG1LPذ_z5lS3=}煋ɪ7n۴mfںjHbi;wCm`bj?/%QG ^TT$cGiݺ={lmmt:۷wpӷwp<_D:~#G{a{qߟ3_/S_z%<"""dӦ;wEF"5uCm߾c˖y9O44Λ'^KxQg͚Mߖ-Ϛ9ӧOn?v ?/[l=w/"v[>Dھ}İ2o:P,=p MMM:|1|֭{qvvVSS333Ǯ'Oȑ=zzzz7l#g {zxhZzudduݷ{趮]nݺmݶgz#ܱsmt:k׮CyXa(忩ɓ=< ܥKO/Occ<))!aڶmKkkkWWWCff毋UTT ݑ /_tss'7_7gR\\\ɪ={~=uJѼ8xIM N!7^pۮ=Co'qH/cYiIyYiYi58;O2)qbiǏq\V^j؎Ѹ{yg6ml?N/ILLlƆܴ7oѣGf!~ryWM]FW^^o+W3L u7n>@3U^^v7|4/7'%c~ݪDz{|@e(9kj \.GvR)}^v56d, <2˫.D" F ޾}oTAwWG !+ܹ2 D"QNv֝;l  +DE vtvVv,bfnn``tڕ BD"QAA>@**??BQ(QCWP(@R<2ʔ\u-,nj{7*bi7`jt^^^^^^7oTv82 ;K/XXXD߻yf/OO%+Vݻ911q֬Yʎ R+wneeERp\M,QG ^TTD޳goX:{)EXXXPP Nwqq SV0,Rx(]yY) F=k֬7ml98"2;e%{)Ebb限`@367n9jtoonݺw֕FJ5Wwԙ{+BCCCrȨP~p<6thb£^zgdlYvqqR[fff1Lm`h{ ͏p ~ՙf%'=l}ٻgH$jGV)Ff߽{gjjJlᛱiB)o>:a8U g %))$z)ݻwͨ.](/NY~K Bavv ~Dѽ2e:tᤦ7o~]JR)Sl۶->>o۶mԩJSf_dɅ t6?bݻZfiӴuZDۻc>|„u (K)t~ŋ,YdÆ p<@9/!jԨQF"7`vĊOQBMj^@, <2R >{ T*UA +B*; 066Q<Bj 7O#nL}  _8}D<W|N޶]GA4 *jdh4xV65U Y^!Dv:5;5HL|q߀4" F8U]U zy@R]\<,>sNo?#cSL߹BH$dgݹ϶x  B<^LT`GggeP)fFׯ] P,*D$,^=dyE B| T*UO *,LY_QWOrرw*-SPxx͛7Ь*Ze^c8w.^())wo^J Iq+VػwsbbY o&{͙2\sv+++*7o'Z,mb!>r8wp<_ Z,G88:;8qR)B]\\¾#<嵵SRRj%ӧCC ;Pv-[;wlsC :׮]n/D///r3!!᫚. 11ef75: `ߏuܻom]vݺum}dmt:K.۶ع/]aa!iddTXXUdT :tƌo&/* W^-[ֹ]\\Ԗ/_tss'7_xAn={|Lȑ#ݻwZZZܽ{wHH4iJÁ/WgΚX!)f{Ԕ,((`KffrrrrlP-Mz}8NVƐ111:t 7뱱:uݻfTTT.]# RRRbJl.^TXX( %Đ~ %$$AfϚI0hQbb"Y5wn^gSLٶm[||<Ϗ߶mԩSZ2)h&j„ ߯rQQQgϞ={w~E36K,9p *++ۺe QfiӦqtUՓL133 Z8br9䘘,!+!P.]֯_xoZZZnذɨ0aBhhǏ)J-[6hР8kƮ=>~(&n^:nB@EyÒKR)˶oۺ hithDݺ}< nĿ~9 ;p ht@5,h}W:*w@*PHRB(q~n cc#!+p7? BeӧOqJw8hjm; ~P$z@RFFlemSS]PaH$lgk۩Yq")dFry\oN?@AUYTdyPek#| hD EMN30Lq +*--AFAR :88*x Y^!|7'/Ν_~FƦs!H$κs'R_maa<dypyh?ʎR _8"Y>}UH$*(g@YZY)z 0QT)yƆ{o 45Y'$P%J|irRttT] TRnrlzܖ-[:}t/OO~@,xll̚!QUZZz1G]9os8~ {6oLdy%ݴiǏ;;{РA˗/O|Xƴԕ+wneeERpK/oܸ殧nӶݚ5kQ>|䈃É'|E۷o_l"#$&&X"$$!!!˖-KJJ"kKhMY1cdff\UFKmm픔\MyY) """B6mڹsGA~^dĿ/RS7n !ܹÇyk...Rn߾ciiBB]\\ j*Y˝7lؐt3fqƑFL޿qu%MЖ[쬦fff]'N knsvv]t ݶuΝ޽y洴k׮|r۶mR[&&&zyy 䦝]@@@bb2D?vX޽srrBqqq'O3gN W^-[ֹ]\\ԖII:tuZulڴ}=Y/={>{&ڵ+44Fnݺ̙3R[FFFĺOXXXZZZLLСCg̘qo-@54>ܹsk׮e07n/WgΚv333ҵ-~p#G:>p@}}K4rU$CBB\\\RRRFmaaрq铟Oc_.wppQWǸzlllNzD윜ܼ\D Bf{XPPNNN"ZjhY}N5KB0;;{aPP?__^L -m.^5|HrA|~BB Es6+֭[R$qvv{.YեKSRRj_[ B6mѣ],Yr….] cX{!֬Y=m4mVĕ^Ǐ;rMk+-L2'0pN)F&hѐ/WТE֭[wU7MLLԖSLٶm[||<Ϗ߶mԩS &ܿFEE͞={"ZjP~Btaٲe jGY0W7Vu$F.=7Y2r9y]?%gyMMurO<b>cK 75&+FY^QT*UgTBJ*8dyP(##_nFally$dynF~BwA(L}q~yz'?}mjm; ~P$z@RFFlemSS]UAWa"mv >gĉD">`G˭p <2 *, <2 *,}p9~0MMBx҈|3C?gy>49)::T*}`O"2HXqY`06r8kWLW: uxTN$X/]Ș(?dO&lOK/K %kddaéT䤔OhÆ'z dwᄑ{v>7p _AfF] &:uZ\4,O; Q"h}p!^'~߼Uwٶm[ 6n(lbjbnBh֭rvI_^';Jrrڶ$xaffhY^qR?d?7'[KKZx@4DfozsIRB!!6_~]B+Zhn_d1BYrV^CP,^L#:޼y3w|t:})Ϟ ܓ'OkJt }Ν9\缽ڃaz~i͛UFIIDAT۷ڷ4h0w>WIyy*pLZ.C3ɴ.Ku %uXBGGǓ'N4 *hF1 sus_n@ >4ݣP\ó&kzo`r Rdq2MA *, <2 *, <2 *k8\˕0MMBx@ |irRttT] T2nwC<˛B0 ==={{ J4sΡC%<*.@PljrCB6=wJX,cc{u Yؘ5! Cj.ve7D|r^޹s׈&Mڱc;Yx#<ܼ~\ܡ|ر}1\.'&&?l мP(+#LԇnKo`u|`a9rIԩ1b?VSSc? rU;w!O?h8OKiJ Bqk66mpG=yTD62'cS}ץ˗w$V>ut=gΜ8@jrA:| ;x!4g,9|իܸqBo߾{BO>-*****">QH4@݋8/?| 3#ή O:-O-cW\~i5"\o߾=B&BcVZ={|njl/޽#j}AEEG# #""B B7n[6o151^!eVyj 냃 lvp:P ; &q!0 kX#G~#GW]1ӟnnL&366V(FDDX,) cccL;$+1ba!)O-cǎJBO6l؀ĦkB]B, {{PPS\.ӧ&\|9`Ҥ_~G3zƌΝ.]>h 4=z矩/9NuuKB#G cַo}`v~!r :lgAnnɓ||SͪZ!4޼F<\ 'EhX:L&COO>>>ⵛS(}=:H@u뫪h4Z֭/_pu֭333l6B)11ud=zs֖[ \^^z*yj cǎ70++ X PR\dJr84Z=㗗ʳ#ooooooyZ>u6O7DFHmxĉ];vرc gy \ׯ[%Mth,7pe܆G&4|MdyPe@AUYTdyPe@AUYTdyPe q`Bo^(Y=MNJuus7۶tzzz ܹsG ?P(6mkk{?gyccc0 Nڕ޴!t QYYyy.^t777/))wG?Ba])!`2Ba8~Q ??K^~~?:t@*5Lhq?z/ Þ<-/+%g)O1 ;z/3iS"v٫8RfsNVV9Yhnnᑙy]И1g̘qܹ9ڵ&efÇ (?ޟEm}KKJJcڶxb5:;G QÿR\dJr84?&|Ç/npjx0}U@4ZOw@q 򚚬~뽁i.(HېP.YTdyPe@AUYTdyPe@AUYTdyPe@AUYTdyPe@AUYTdyPe@AUYTdyPe@AUYTdyPe@AUYTdyPe@AUYTdyPe@AUYTdyPe@AUYTdyPe۹خ{?mcBM#XʑJX64Ġ].NƐS4!\]xHIDùulK7;(t GwjFg{.4TR ~~<$Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Syd*L<@2HT $Sy)(r_SN:uuXK}碌to'VF|^ $Syd*lSN}hhpht!g\V SӓJ<ֹ\8~Щ'-2dO4NǟZ:wXW偩mph#Gn'{[ VCW^y匙}~O_)(zz>;ɞ㢚3wn鞁1wz^V/mhh_(Z $sHPńޱihh&WkyGn.l+Vؿd5^*P*JgϞ<~ݻ{zzy۶m=x<||w|EX9_ŋ?mٳ#/*/ӟ>ukX_*kڨgh0뮭[~ƣGF5mڴ}gOP׬i_}}}}?῿{W_}>z{455-[l׮gח/>裏](K˽NL>mÆ 6lęKRooWZjժOl(JnT⨇& (c i}g/|I@b\W}g{*s qߗO@(*?JrL_z }4|h^V/dS\\>TKryTڪj[ /::~+F{ U^|pdwtSSӴ1<0Uo|㟮ok;rO)j\]v.|cWy`j+ M^{UW]588T/JrqYՆƙ =W%HT $Syd*L<@Uԟor`"ɞ:8IENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-simu-param.png0000644000175000017500000013762413413640652023705 0ustar rubenrubenPNG  IHDRVsBITOtEXtSoftwaregnome-screenshot> IDATxw|ϝ&FZ:^Bo"X ^S{ ATT@@Dz'C %=lrL,fY ~0ܹsΙr9p^`x>L @ -  a&'pq{}+m!@ !|v[V"@9ٞu+m!@ B'hx MiDœ ⫯sgVcqWVcR@ ߐZ|,o]A z~U3M@ n5Xk 7njv(߰}F@hHyx+o`$ڭL5, HwmܶSUVGClqiC cR*b"CgKmvR.O>v z0LԕڭdB`uDBޮ* AS`JW-mIXq(a׍6'e2% MQU^bY. S+3寷z;s̞̞uC]2-FcɞWXÆBF"1"etEee`6wXJl_ygvfN]M+wؽ̴=Z{K52cC@QY Gc6m+~94r)s˺$JxrLJ14U\e\SC Ƅk5[ pFߖavuxs&hb ;/%cQ@%iWOLYh%\SS(\*a$ C4M!$/, r ;yM✝C`mdRFy1o `ZB˶)!)!ò;=WlJl ×;)dJ{u5;Oge 3=&\Woȸ=ٚyoA{_m38]?GV7+'g{QjleᄒS㞊nxLlD<1׳Üyn*j& vGn7;$z3 fˏ( 4H]7WD7({ c\h[hJpBӴdR\*ˤ av:ˤRJ%1@qZѓ\ J \Lׅ|`E幍@Ԙzcj7is&d(~,}c񎴞]$"EggN5NkZڒY[ghaB߬>ӋKʝ/yjM~9={tָ B_mX7kQiKʋ*n ߬>פ-Üy>ZO +kb2[_jJ.+ 8D&Qh>\ VJJHN5DcgOtݳVL8Wi'N@ؐF%'&K׸Px B6p\$ᓧ:44Z2̙\_L"98(1l'9 g?-S4ݮ̽@< X fh6_Xl3B_} E<v c#ԜՅnxA=d'hB,/Ŧkbl1D(ZO`w)h(lUs`0rmN F\nc⠮,'3X,֤h-;di0|ɤb'd7ڞpc<\Vf q,'DBvew`E~}JEQY}j]be*taK騔S%IUfӱ,h;&DjhB<֥l'9 j(aC ֛FCN\^`Y%8<( 4EQ(00]x]?RW/H}s)7y;Jq\!+jHL?Y، ;+~롱4MoA_>́OuNTiiRB+B90bA+計eawN~]'fhTTD鳮1~uȻ'zsBԙ nۢ"×o.|ۯz=49){ZxԜՅsFT6n%Gz/,Z;;SVv&3z&B(8888Hc9gCzsX pu\H[Y[ 4Mpg37)10mTڿT%FoVRUeo{،˖´pA! kg;H \]կ`^'-fk^#2D Ymp!efyq5U^~[Kљ"6]F"nn+]{6VU"DF{ϝ/7URĜ'O1̡!.`w8@ieRd:qjSeUjBv5bқLf^FVumO8e9 4OXVRdXvJn3f.Bun6mDw2AhE _, JɬN) .׽2{gzXh7!!.!!5gה$c%IvVF ie:qͯRu J`yrKgt\S/@Q!4X6iӱȈpc kNp!F*LO kVk{\Y Ng+D $cCM޳KgWm?yuM#B.aմ7Mwt3 fHA5gʉ H  jNS\.4AF 6(R CoXG_7x,}Ap! L#IHH .`C57h?+Ylw6 ?:{O>~w֬Y@@ xZ?D\ eٶEEǴH((?n_{-==MS]]=vܸ>Z&M'*qӦYfoZH7~3O?5j(qsÆ 5w9$vIڽ{WtT} СC_mqsQnVVxw_?;?W-\8k̷~h0˾^zw~a|뭷Wʷ+B w$ 4-A5C?p3v\ѣG4p}ĉvn<rrw;nI99sss}eeeyyϗJ犇+?rĈ澹scݭذaìY37ncj 5N˻=z3@ t\@o#&bj^~in޶m_6_/= UȜ9-^}~_dΜZgp 4COG;6h Χm'j?֮cƌ4-Kvk׮6 A/ր=zܹsȑΝ;SSS v #G͟t .׆_zռv\.OOK{ͅtiio.\ԷO\(]<LOO# @x8ȓO>+XbX,m۷6gNϻo޳>WPpeg}u;wЫ<g{{.'f߶eVb6mۖ jzܸqs;fAD<_#/YD8jԨ%Kh0 xy]=y@ g;t⭷~A}" &Op߼yqq|𩧟n瞝`AUUX8Ҳ؇̟zMrrwdgsn?W_۽#^}QFQ#_z#{JKbbbyI&@ hDnqbbJ@ dӈظ։EV%YW@ x^η$:y <@ >&:NYi y@xD0@ C@ ;H@ oEQsg@ KJjZE.@ eAZ"b1_vc@ /G tF0X,6˦Z&S(UJP: ppMI$RLFek2"pc4JK>TV2MaaT 't,fsYYɑG+(MgzjbbR kYIA!Q@5jŴ~sSXmy{bbcy>•u8#FNDӁ|aswܹ-6҈NJIH~q9˲d"ᚇkr ;L.<RP۷nyR_{ F%)9Iڕ۷nԆ\ŵ,ˤ $ k竫ii0*QDW!H P_WxT eYIA;pq_+ep)y !BkAaxX O\|9uNR`1`1OU,ˤ \lZ:^QQ.4eÀ&j Dt:5#9@X2 88JLHm+á#w5:f5댛\ [E9: Ԝ+mNK+;̽cܻwsnw#f6)(-)n0F jCtd]]oWVT L&Kʗ6t8` Q,7O&L^Y#h1 µ ' b:j9f+r؋-ť(J X_ZV:{ׯ%m։|Z%-R`/_TtwX//JKK*oߞ}y0&{@]&aJJJDOK `mzU䶒3'-"K_Td~s=|XXh~A~IiiZjmf}_~rp~tdC[h6jjkV9;ORd/~s{>nߴuzn=`a#d2/"NXu7S 9ghβJyB^͐A24 |WQo8c,MDTJUIK#7!8("0n@`XY[DD\/08pOQԇw)hൟ;Uo'r>~8q|aյ' {v 7lpJu8ۗyj4JΉk>y>rq36FTqs{N'}A4zTiਫqX^o:wffPEF a:.,lw[}ЈɓgYoc w_\rnzc>bL.II~Uk~?fWΐ[󼶹bu)i'N9Rf9V-6 &NhK&˹^9]@Z˱[ҢȈd狏+RDU&ULc֛k9khlB{^UZ‡eڭg^{kB>ry*EyY%$'wo0nרhnsحCѻW/oFFfJ-Wyy!M 0h. MӔs@}b X0=n t7)퀩III~z^>{Lљz@WĄD~|Qvyi*83>yIed;R,//ֽ[LtLlLJo67Edwdg0 s}&3 s>;o;,x .JgGEFzvca@c0@€e5{glںQ_߆rciȐn1 *8QC }#.2Uɶl)'ee1Q1u[0cqxi2hiNNsѣG8 2L `Y/hCR)B]$FHB84kU FE`"_n1!K `ogy:#cG##§t3BH&l]K:۝-Xaaae˦']4ScsᑱsoٲISܾcIS,fzu㸂}',T>_BPrr#G222 ikovnd2LДR&UvGE|8 @<>|mwx`Vv5q4LuNywT*9l6?f:ft87'MV6Zj@5^ Ie*:66z#F(//7v;Ƹ!/ȏ:]tzܽ `2ta?VhllA@B "BGӨߖtͧs *rCeJOTXm,`00~L&TeD3-]zJ[dpm۶k^ua)g,EQ9,rv:XrRk4:-l!)X HL-3oH{>苚zNK1 `qqow^B[i!膴GTJCS;YۮoTwW/va 2j}Rm=8|P]]}ѣlشᖩͺuvmM\8~d.,,L*%( !((D!j\1'?&:v)~(XmvceʠsL&Koñ䂂޽ j(-+_g98cYhKXnzXה@)Ն?ڐh(//1 !!! sO՛`;eDz+z}DxDNNJ}TIIكQA\B7}#  R(Uqʄx;ZizcXmMudzyCRWX?`o=8\5JLTwMPezE?k2yw}+Z˜Bclk ۂcQ{n%.;>7cc l)v\PcYs s-n{ohT*U,G?5U iRZLכȜͦ {BG^ǚ&4r_8X 'Nvbf4EQMQ E弪-&ycQly>%EE;' III'/-7?v}KR!@fl6֖vq\5zj[qP98D;< EP@;A`2.0BWDck>sdz|^j5Fb2.$$Kb `G<|uԇ#0~bc@!:.m[vijBPa_D!,˖P;Xc}5Mi )4+Pl{BH !`l?mO=E$WcS]o3) _1|_ JK5m/x+]^y(J!&Ͷ6`7^7viyR+8ߺ}iڃf{"DQT5@qh@NsghDH}HFPsRfuD(*99y޽rogvcݟ)ɉe'N8Nة. 5 vB||zppT@$_zZ0=? #**iimO?6X ӭsm\\l/sgtԊ $Y1B D!$Qi!gϞ]1cG&%ws%[X^m0k̩ 6$,G!#lK%L\LR$F.%0.xY]{UCź07ZL2u1Zhj0m1ц wg(L\z~}i2XFT#uG2b #@Pb&1|{!9WM/?x}Ʋ,+EV>?kTLzS8[=m[ogʏ>g˲Ea ,EDFz@Rbra˶cnj9~iۓԥ \D4E].`AAA"x^yn&cyl] 3mfA9 ܻ={o9~Jmr5mb٬61C+8ϢcVƸ F0 kר tB%v0Aj>U_[Sdm{`^g~׫P('&vy?/]<{>mcc\.XLokK,sBަP6}<=sK0{bizsuaF6(28!JlsJHF! 'Ij몣#nuQK@,uڵkpK9;)4뢍7dʒegϝj*\ֆVYW4 Kk` Q;` `} Zl 5l 0p'z6yٲUp_+>|t ,먯xn/\(.=l:Σ\&pQnt:soeYW]SWoZm;yT䤔@ig}Ar>BZm3ܚ_T-] 7=m@CcC6iPXX3%BrRFs~9 9w#T=yAf/----=-=-- /qW>3N{;3om^_}߂Gd2s>{)F˱z!7E4AAw5'KR Ecy&66fw'qXJ!)*T)EL)E]#ρ)nu5GPD[X) t ;ݎ}Eڵ+87mbl4F;ϟ??efU*S* e2y^%۶mѭ %q;>&9&&+˓(iii"iii տ8s!@p485kyEyVfKu8etKK+zR!-!`ػ{8pppUUոqƏ0uT\ ɳvuB!D!ϯv@Q*#F$+<VEEn[]sDHuu#GH@Ў0!ZP= cbzv!PRkjD2%RHf434uzA!1/#Z: <#-hl(ۛ $Zv8uuϳ,' FEu8hZb0y^i'Co֯)mOvΟ;~cMz}j:x(77W^QY.bkkM!kלc):UXX퓏 yy=n .vKq#332332]SO?ܱ)0MC;gF. ѣΙ~IxD$ѿt8($L^j0lϧM qi,޴y#gͼoGSPGQ)UJ}Bԅ,˳/,CZAѲ(++ >lnvszzO֊us2hF :wY31)DƠVwsn=,BF7Ցܢvmk] +9Io0Vk+ d4,ƅ3Vb:}S˪kIaHp9!X|k@$C (P!O6E#Vs/X:LƬ1/XW&vC-f%(HknŤVKZYUaj1w}gƨ~wtmo<eٵ/M/Ç J“Kv68LVluXV}۶QQa'U+vHn΀}[bV uRlv煦0yawp nǡae]o @}n^hKV6lLNOчwED‚~aϷWU;vѧ#n먏҂v_TA q>Uvbo֦ؼy(55j:t(++on6lm;vJMcao,Vb5446@  zl6Fހ Vi V`;! 8--=MtD5.<5S{/>;3aɓ&'Mf;˯gMǟehlJ%̬SM&0͍rBh1ڣ%9ׇ_èCSӳb<ȲeƌwKP$"<7ڻ̩#Y}txLkma} j#w~'g6yi#G}Œ8vTdWlV$up|Q}R&_?董\#檪 4y=VgaXQYYQ\t`]JUDNP6eoҨO_5N_=˧eY .Hi%ߞ&[Vgjj;zpmuӧ٫$>vA$\1. 1+B cMmxAn~],cuufǎcdʪ*ر4t⤊}2SS}kdYjjݻiw_a ;}3Q0h`Íp>)rn3܎mYʹ4g йW4Ä_7~\!6fvxNyhT"r\PT*&a' ~L>],JWU?GNk` n^nȨ>9}Ys,Džj׬ېڽ{STr\"zz92P@@a9jبQW^yb@EE_|1gΜe˖}Y37 IDATy.tZ8x8xE3Ǝ_ {vO>ᄍ뎻sYuZzɓ'5k֌?u֭[,NYYY ^ukސHS*¯?/>rf%ȑCOU'L OHRx]p8Et}c|TxxJ}xٟiAaĈ_|^A(( Lxu2"!!אIccS>MBH(DS/)6-##nglBt7jϝ{$;_?Z"1 ԼjcccPPP hw_k J|K<`ضN4}\:RgFh48&[PAQs2*G| v]9bAxW_|EqN%˹sK.A;uVpp8ף }4?4=_]on8]tkJwReZU*EQuuuK.馛~K2D5#CE4/]?UkV%B޼7peKN%mȋW\T4(zkb|ltx$}޾ecZZZT/ :7D+G0.`}e[u"Օ?G<^B!<^]]]o08쎸6<<<44T0@1ޚ~x\]]C!m[]CCe5 EQ<ϛL}ɿ߱r Rizw3)  (\{1b̲nW7N鷕 UnKY޾e,K7`Av wyLJ}"JnjfNXo{OjkTIe}KI"a|KC4RyWiRx:s<ljb؀b$DjuO|}s_ ˲,b%I(ְEd2_A_Ywma nbagy@1ꙺK!o/O>{bb}/q"]@o„x_v0YVbZĮ RR* a{eλ핕,˶uԀx?S vɤhjժT<A x&;+mDl)-+-ϽJ%oOhGtaa~N]n=j)a]"{;3⫸W:q)dwnj~ ))7s11qT}ŏQ>_"KDPPp[!:p-vJ AH T* ;v3fݺu_~~Wחcǻ!\;Ґ@Q.9Ӌ/m4w2BcՈ!烂d2BHtf޽klzOy~gY"È`*($6>_4-I &(b1R4M;q EEE}ٰ!ng ٥p CjBa^@j! ߮!8\<)A$2&&CDPT3 ò8nw8!!!ǎ6?! Ð65M3ٽz8yp Dဂ#YW\ {Ғbe~0 2LRiڐFV{Y^^V3w5+ HaKrL!߳kgmmm;EQaaa#Go0(I@c2h0n8D"˃l6ƸGEV&ͫ]ql d_E]86A⾀$Lqqq ]owXS aY2d[(8RZ[qo[WPjGE*XPAq!q5MB3 ~<}{˹0\nyYgm,LM\/\ȨEZZZ***xӳKMUUMMo%/ͲHsk?B(+-)+-v X,ͦ7b-->QGGSMMuAD @s|uF3M׷w~~ׯ=zcǶnݚb88SUUB/ޘΙ3iDfQ`DJ8qьg6mN]_@FƳVX1^EEpv~EEe#==q~];͛g=}rݺg vڳg 5Z&ܒj iUU~"" vٸ_ic0ĉ^L{X݁xt}8O`!!Q/__[CkN2[>@}UVUY1kcb\YUU\\zNTTӻw U^[Y߾x@5BC7nǒe̜Сe R~͛gufvmk 9z)S޷/HMM5-iXrXҩS[ >|c/zĚ2,l}֬+(h݁b72bh?\hoo~T/%9>dĜ.脍޷ouZSO9@gc>@x(??@QDE?J_x<^iii~~~}_}|cc=556Fѕۂe H7?gtɯNICyz} B<=NC]\f=~_C=;MLRO޽ݖF2##_VV^>*2gSZZѩĜ"~٧Ϝ+{zvn]{0!a|8K@.Wy?R]NU]>W7:9@D% EQ<۷ٞsZTO?~XCYå#S_`DEEw..>)EѣCLM$|4/0p{RҽRBOu} ?U6 c$G'ÑxK@8m+.J@'] RVVnѢQvڵk&;V*7G={㉢'KJN u[eiiwWG$+3[7'viiEE'?|j#SI? h@ и!Jޜ:).s"ջ۰X,z\V!6'O&qK{m !=zL[w֢ź->&5ٳ&޼"S't'ebbz.MLщpgtj|͞~||FdvffUƍs.ޕ+"Ą,[6n %%%%GYx3/]jaѺD!8.^cU'9w Ns!ؘFD./| g֬-5ԌzC7o̙jUuG'HF1ksOIyTUIIy4oh@&!`Çow ?ٳljw?(Ąo_~98}&׽{sG o6mڐO*w.Krl`uF ͶiQY}jF M1q7.{RԻwo-,8!hߟ~WUD3EQDm(@xé***uSݗc@"ƦN\Sᴍ=}+ nX!!*0 s]_cɶW~QQ׺anF'UeAAA`ٳgϴiӶm6qzv@"[jתUTFƨ閝ii.T1 BF D(.EQ<"R}nINNjLwQH_ׯ_߰a޽{cbb_6IPG{5kVnf͚Eg ZԫkxE~qcQϞt 1OH5GVT)*|,|,PZ]qʷŕo* *& =}{vѳSCl]7}CBHvNθq&&~FyF`3=}.]m+*+JJJ:tث iafff#Gx6l`urrjѢْ%Kۈ{O>}㣫흟mD#oMC|Rۚ(8_={/^x={A<r222k22#޽ZuoݚQ sTsٲyˎ<ޱc{HHȩSХKpBرN0##きͲe6+|󺛝ݑ#L^Zj_q6=~Сsέ^z۶m߿OLLwʕ+ !UUU'Æ ={˗/sss۷o?JvϡAڵNNN''ӧOڵ}D0@-,kߴomt㦔7ryUy4zGGGB7Zf!ͪ6"bޟҍ<9)?BB;+wss]uuX]uthQB·s.|)\\޽˼lY٣G70kc^f]\ZhGɡ(k.D6.=dS]]]MMMUU,//OxO:TOOf0'9 X!!T` ;3ԩ3gB&'С]rÏ;2totOWnJI!sr9) o 3/܈!>Vqy(*xZjIf{6T"g&suuu̦]υw5`'x<"o+s4&f׮]N\;tP""gr89٪RH`Ν|-NG}#`$}}}ۊ OQTK-mVRSn~ҷ=ܱAp"=ђͦ_F>p`W}&NF[ٻ޽?EѵkII׺v*r;w=NOMIICZn$$$.X 4?Z\npp7'N7n}SSo>}.o0-4޾{T{OX,ǫf@*˽ Fܾ}gNd-L Q ]x#EErrZlhcs?~\RUUu֭ Μ1Cfm۶ݽ{OEEEFFk;)'O>͝E_MjgWVV;vk0EiӦK,Ydit%%%%%%.ŏ+/EQ666;w,++ٳ%Ky󦲲299'|w'$\x Ogjjj&|㓒BQԭ[|||&LVMMML@ϙӿMb@ wf>p`9ZujEO߀!1cSژL<!CDߗzena9jż_Om8"~kkhk똚 y0 `GۿݻZYY_~Ҥ}~n}߾}&&#G~Lh >|366?9sP O?MJ[[UB\r ~\\_|D0 M6{=u<,,!&98b,6P"b0}W㎎W?Ͼ T]W >ך7DoCȿY.'N G߿lx5fɓ'!}}}+Bm zΝqqxQ4MO;n8gggkk(@Ϯl?j2zhΨh""bYS@UZYY540 ؼ5Zs=0 ؜5AEQDm(!d7}F2{Āo աx Vh7#XVi*+*D .w᯼:LRb~c`X͛V`j% 4f9#))+)%_ڳJJrpgLh<ƍj7F  gM޾.jh նF k3,KEmmmmjjp) % KVWרqK Ä@1([+$P8(@V{,VZ@(VAQXyH} _Â~ԭԎߑT uX@b*^&Z pbuk AdVfGV &GQUU. fj/4Ma@ i٦¥(RQl%-%WZVSPreeeC#Þ=֍˭oЌaGOI;棪27EBeOO/S3B!<YNK300oc^YY)fc k;IZ@f (VUUVVM\LJL{sܨc3f_0r^344v" _TRC  \.Hʒ\@f"ĒE\جH;P\XQD:*|.{ݻ|> 99>>RϹyGkA u뤺PEe/ݻhml֦o/ M^nw gg],NHx=cp˘'-ut~rv^yZ·BJ;O$ 'H>#ًAuJVNMA(j߽x%qݱuG7o`Yg@~ (:N2&-BN\''uNNsr}/޺uWzԲF3nߨQo޼333Gmiemlb> &4X blll26 IDAThh0ٳve5G|z۶akM}@nnn&&VMQ>)!(@n*)yx"[ޖhhB54ޕw[[ jqSN|fٲt80=NNvVhoǎ'mo^tuu޽'].^Bd;u*>BȥKpBȹ\ӊYYb^MJb6 _n]vv͛7͛τp 4*?yyN\ݻжmERW]VfԢśV6?={OkJ7&՗/[fo@|왷!q{j|cǍs߿Gv=wWQWdXX]t!ifӦܗ-]J.B5km Օbeemf;#"ڷoO[j]0u@DZڲ_}iiY]@ n֭tcΜ1];i$ Ix.+;{ׯB}nC qrrׯIӷ_߸qwGED嗽!qw@>aި!m?BIOO׷m[ZZ*xJ@ϝ# _͙#'oѺ!Cv/+8_!11ϋ8:J#Op F0e7oxF5W}億.,[bs̩7}=qO89s֬7!ẋ'@qmn ҂^ᖖlvر>2QisΉjjj!$'Y>}b1`SΜ9;fZ%JbG- a:ȫm޽"##cLߨQ񥥥%%%.[|0ի֡C;v\.ٳ?. 4ȓ- ZO11JKKKKKF#>s ʕ+YYYӦϐ0J@W[6/s Qnjϴmiץgn_|i  <󥳋att7ӡ~?бSBBþ{ 4藵k/_aai5b>{7P7XQD:*l挨,D)"\jc"rn+N l1p`l/sFFdff}7 {۷ᄑ>y(UԔ_֮mٲ%rXg9/?Ɯҭ.Ky/sSSR+7othTX@j c$iAV:@?<OY,r5^qAPRƹ/^H;EYO66/rFҷυ qs\if<(+**oA [ݡ}GUꙓ'G rk_jmݶD( xwVňAAx?@NUTTx:XQD:*l挨,DkAaauA: % A p0#bj<} dsoݺk[*++dai)O lz[)HuU˼IIxZZ[+++S<EQ8U(W\T*?j"[MDL(@PQHWӽz}ٮC.px<ǣ(^EEbZYYŝ>=IbB /K4T*ǩg/'] % H@%F!Eո*Jd:*tT<Qy E(#\PrxC/뒭4548p)G6n_^+zR'(-hR.(޹Yu[(޿?e4ҫD0ԆhhkӡuK7P{ه7*9< zwhwq[Y)3-G5b^B~`'@iw͡{*J.8X̙ySzM'f31(JmaNs_<'XXZI;J@[y^mB;_[d١ 9muڋޝ}M~1eM_\XHꠧ̿?w2J:kg痼X!p^(S;Yk>xQRo}0c561r+'U J@cj<~RAxǮ.ݙ/4*x7uoJ2C=ݻץeznvF[O=Rmo{=C8Nm|`ڿR˴mJJsН;ѹ% ԑI7\)))vsTUS+/+dw ĜWP3mZ]{6r2ŕrƸZ{2ᄜŕ":nAeYz-cq@^u1[YڻɡI{8a3Ykc󏷲ZeE # Vz8NzH%֩r)Jyv>eѽg}w_HWHȕg"Wʇ'C~oC|dT&R% Ԭr J@b B}*N>A6}(BHi7UI6ws>0(iDyuzj>_YTg+ө2!hT(@TqȐQgsgq6_ZfĴ(Re^w1Offw#WobTOO}(TS.,dW?u)b81jk},s\b7J(@Dpݬ[m=sRCD+hwJyU4Օ8:-wB.y5Df?UӸ[y°ś6-6Ϡ -40)(`_6H?XQD:*l挨G놪pV߮N=,;y_VaZ*8r;Q:"FZj*3[i]d(J~o e] TX[gut@Qٶ<8dkV&.;O4Aom+3*ۊ7AVӰ(&иyzOC?Y?IC?p׭ "1I`=|]݉6N8m>3{X7<|Cr}?B, 5ǹ[(_jo_ :Oy#: P~nĐAKpwqq4hWޢ#LNN?~hAA!Kpp=vppXv֭[i~~~>:*tT<Qy6bI.\dل={^pһwFFF^|Ld!!!3gTSS(ѫW/_~y~,P[X@auh}7߈yw'N,Y'55uҥSNeB'O+N}f'4zSN=?~H! Ϗrq#G`B]v:tŋ_u޼y**}ƍleԩӧOo۶gϞMOF!deeݼysuTk"ϟ?/طo_}۶me˖zhӦM'OdÇ׷\xwZS@ "Qd3gD= o޺u_‚fرCx3 ˗-񇍍MXXͶ ھ}{c S:B xuu}Ԕp8/_ܹsgffCCCCw}v`` ޿۽{3f899Z#k@dee,_<++`ȑl6 \gllةS':uꔕE?:uCyyyBBԩS׮]p- .{={ 0`o欥|˗B꫗/_Qwwwww@D042|qF844t޽v.M BGk?h5:/EȦv޸ϻw#vٳG5,~ 99 sD eBBCCFDOF!&*kD0 2o Zz'zf;<=m }&9y!ĉ64I]g`g'ШP@#(*а0 "QjsTT'MYAZa4 /Ob۶mǏVSS4iv755(++y{{ihhH~ ի֭KII͕}/xu֭3/]]]o޼IiٲW_}u#lf% ԏ?̈_M1bӧ:Ԫ7.9o(ZԫkxE~qcQϞu自GGQ$&k+@?NFFf-[FfdBݻ׾U|79 <{D'jJ@WUII\%tf@.몫ꪫv:P{$- W{~ؑO@!\`BiSJ@ycc#P5N(rCuAETfQeQd'+QsDFm'22ia2- xA[3ˢǜ|8- {cuA$T^N^ə䤮2|Nf[JO^ 0#@&-/7 kh+/B3RF9iV!oZl!plXh7ntssرѣ/\ '=zʚ$q.]gmmmggTRR"Irԩ[ZZ̙3t˗˃ny@0K2圾٬2gER-,6޺UlukBHϞ=TGYnJ??gϞm߾=33%fj-$ӧmPQ!D7Wϟk'<*ee;M))R_ܻwOSSϏbݻwi߾}eXXXltܱcM61hXXX_t˗/mf͚E?(.//~y9OOOKKK`CFDDtL HwwwMMM==5kIX` 1QW}ݻwÇ ،ր$?^f:+%“d't2K/lj&s-cŷ{>23}QQQ&L 3&**jʕtc6lPY|DGGoٲe֭iiiӧOoѢMLLtuu322:v옓l2##;w|ƄwիWK. {|ӧ Ş/((hٲ$!zyNiٲW_}uȑ)~T555@Q@hDV{%_\u!0Wr;($&&z{{BFqif-++CfffΛ7ˋnٵk/fwI\]]\B9wźx"!ҥK7 WQQ133 9|0^?BW5 Znͼ466.((GFF2C,0C ͚¥5,2… l6ӳgO>jDO;vUpp0Cf3ggϙ0..nԨQt x~yyyiޞ)!S(..fN1Kfgg~ BHjj$;PA nCCFDOIIwW.$$y>IɳBT QQQ̔cǎ1ojee)a?tgϞݼysժU-Zqggׯ_߹s'(('gܩSogΤoz54&&D0\ . djKm[A {} ---GW^ ɦMj477Wdh .tss_^x144ԩSQFYZZ>{,22r^c !틌bԩSO~xҥ-~ᇥKr8ԥKN4-[}""",XMV;uԉiyP׬YpœKK˵k:88w?xիWA(V HTU-JH+.'P̿t )ja,5q)”jaϟn۷/Ӯ>G9YBܹ3ovqvv>rH1##!Bw&(,* !lzWW{목>|'_)r ͻhZ@Bt{剉N@l) C S \,?k6&"Q@ETS"c@ |B ͋B-,;W3)ZT|*Md+zFW$z$ϪO>+DkIWzRAS?d!(P=҅+ J@ XJ@sY搛lfyMSw8@Ի.ODDuDDۛ6j>r~% "Edx> ]oi^X,y#B9n:܆Qf5*J~1R?4Mwźwnjj3h ++;N<|4ܹsG|'C999}]߼yd@m5 /_f@ԣ{|:,Fte TF>,bXrnw 9"B%j)\j/\Q QQQ&L 3F5kdff^ze˖ .$B֯_'NdddD| HKKKKKk۶ʕ+czbd(b8֧qJ&ZlH;j՚lfVPuu3hРgϲ> 8ڵk***SSv[~{=CtG1bĚ5k:wL|ARRRj줺^zIQH=#",EQ,fy߿'B? rOOO6Mٳ 訍 NiiN]OIue˖ݸq4+pYG H>UL`OL ȼp)%x<^zzȨN ͘1-,,LOOYXXHTԯ$PTs5kV &%%eddhii-EEE=z(,,#ߓWpvvvqqq~~~ XzzF}vCu  N1G`?BѣGغuk׮1Z*66411qIz߾}>> = R!k︈PTTԊ+VZ nRŋg͚OQTnnn>}""",XMV6l05kM:u @XnޫܼW J@9$׭TI K1-#G9r$ȑ#½DLŋL/8"hRfQESš_jc~P4w,Q(޿(WQQ!Xc't-VHS+SЄYiIR}2 2UDœ͜(STV6D"YdA=VaY!!T`M#]5W[ݏQ Ш(Jx)xbb飣C~mbb`//DL=^DO.޺uWz&ĜF2ݻwwŋ$]ѧmr__CCiP'M9+ NLP [l6}z7N>*> ٳay%7@ H[߷:;;()բS0vg}HډԕTA =JJJ[6oc۶ aBfnC?'xYYy^T4QԙT1JJJcǎ XK>2E4QH*++SUUa?jE? L05 %lׯո{*5 h. D =޽2r8P_5諯w%щਨ(??Z)6MT<ѺDoҰ[s43; !<216qqs-\.Wxeee===>}LMwp(&|G Dvf1upuh@ 4@ߺq|% @3jowtf33((dfKf_h~e wtwUh0 %d])Xu@9SR;?Bh7~LyB5xԉ7^Ѻ!CL[lă&Q@E +2pSO~={ɗ_>yR>|J}>̚:r^%MWJ,2%nN.urRWQt>'֭0D0v?5r@c+u|1#-/7 kh+/߿69aH J@yETU-JH+.g8O?uѤI5tQVʌZxSVJ]nc>>VB ߼v" IQQQu~"4Q 9#*Qd3=5(!y\Ts@q5s iQ諡hVKDT VYj~'5MӬ=Eik3s\Ɓf`V|= w`ޜ{9EEB1۷ !Tt6nR:ݜ~5dC~oӦwBo?\ $+`3V \$8+RS8/s:=yׯSg>ԨQSR\W_xkDpDprƃ99֥{ :XoSW1 [n{c^xcpJxmvn\QQ +;v_rr(gDK(88=)xܸ=II3 ?3th+խ[wiBgR~$4jD{O4i٠AqoPʻuV端CaWauunTӽѡauBVwλ_ h(ۑwpרQ#!DVViG ӧN*{裺=iGjkժUBB+VU%J%B8!D4!ġCP)Tv<) *cӧ3-|o;CҦOWM>aÆ5jxׅf'x'mߞ+پcG``FU[D/ؽ{bJf_&L4ICL[je큃?rc-'OBh>:n5Bkt>Z\V*Bv H۷jZvǎz>=## 63~@0) c7g~֠ZݸqzsQnǏլYtAɫ׬YjW\)n.Jccn۶=##%$<"M{zj\\[nG/ n?/r/fgF!YݡC!DzFFјߖ-_o###cbbDܺ;uڴ...6m.0< ) %'*I_}_33u:ٳgW\Ы$)y`bIBIe&+|$I$)c^XxץfNܣ W~wٯc #Ȏ;'Olᩧq㆟߀*VIf"6Bm۶N:aaa۷BD6mڬY3BXt剣.[§V5XKSX,*_Qǧ֍Qc !efUsu fْŶA&v/W7 DLl0(a8+|E dNִt tXA`5Ԙ7KZ }֏?y[Vm\PY%IMk֜Jy#=K M}b8o"4`~%+1[gǸrJJرm٢>ztUbѣGu0`F~XDI&|tۖc:.ڡn LV:|BgϞ㏧,_\;/3]Lc1֬,YCY&,lڵ7itD6*: >u ӕT?y&~ҍ=hB%#۷Ҧd9?پOfȭ[M;az 3 z]ZLL]-X9 :|u .a_2),`ƿ"dp!! Fmڪv`c BH3g !$! BpaH[uY=rJJAI˻vv͘'7nҵ+U)-1$ tq:=reڀ._>}{Ye!]K33n i43|0Ϣ X/Җ'$_ӦN Iꔑdei#"JW[ {:,IBCBܱx;p/Z=]W=yǚ5J /԰D .6zXy:,qJyVJUkk7Ko!IBY TϳmZT %so-yJG <$ !3%!8d3IDATe npRdrt\ XGG4dx&nq@ 虳B({ZED6UmTy>\8o+o @d  bs XGx ؖVV7ϻ愸LC^3QD6uT!_ήzb?goZ @f cK˜t?9o,ޱ p"~A|NKq>b:y<) 2׏UFMD:IHlLMArA@ TƝ\,*:=A|"jgf_kA|ȧy6{#'Y*p/# ! >@Z=?Yg6) <9Sxr*".cG l|>_Ke۵3\<',ܮB  iL/4l))BQ0VWIRӚ5=@V^ocjF,mM ! 8yr5'wm8Pޡt U:j۟)+SRtÖS~Z?~Zϥۙ__?^jgÇWU+W޻WIl:'j{kTBxkמrXԩz~8lɒRetgY$!D j 6WQ֍l^!N;7le6wށfZU?lauzU|T9%z7v1+K!O0uo+49% /<Ԩkؤcbޜ}}Ϟ:Ѯ]5gddna5G~ ?21cUD~QԽ{ۅ !37?мj4>Ү]EEj!%ENIQ:rΞrpn*?Fo6m:3s&G@Aa8hʆbݩ]40>x32`vvugl Z=]Wŕ>^{رOopʕ&5kNE)w^u].kޡt6c,j~fP1tR #Mm[KuVim;|RJBرt*IgpK|Ô(wf>BG٘:[r1nG T]{ QlՌib xR@*e*# ~;ҟr#MH80Tf>WetV̱D]3LQۦ63L(Y8>F 6۔ ?qVʌz~],7kwޡl\{E%dk0O*{ R@`?ӉLͺ< TYge^@Fz;S@|\#?Sxٙr9=ǦIaPTY@|\#`YR@59`uDzr:LQr0ߏyv '#9*B$Eh݌Y x)V!JG/V.Ib*OIuT' |'7,cu-l\*Be![R@vwBرøݭ[7ʝWn"#XK(wMF0!i) #R:-[ !6mWZ䜜~l˖-S(ZjucI~~~6m>lz V5jѢEO>dѢE\vB( F6Oe 7nݻb)))j +Ǧedd(%{~icU>믿~]wOXfs=gz޽ɓ'OLKK26a„z?~…G={v:wvچ [.]z%cƌ]kv1cر[nK. BK˗/t'O?~|WaJ)Sf͚pT˗Ǜ|Κ5ڵkO> z~kx`K?p xGf[lҥK4=/HNN4hК5kM:u+V/f̘Q 6n,B1bŊ/_V_bň#cƌnժոq}x8qٳ{]BgϾIII٧O~g1R;+=vuС'NdggkJԩSgggWV^p=) 7k4ƒ;v…w!"""""}6l0h^|ŤgyF.cnwyg„ {1-z„ݻwVV:u͛}-[6w܈C{AAA|ȑ#7tQF6e+w?[hѡCUVZcǎ-ZP?jԨs ˗/֯_fBe… W:O8lxKfffN28:Xe˖ϟWJL/ZE111ժU1~ƍ ֭i8s=4k֬qJŋKV۵kWі풒ҩS'Jmڴiڴihh[o˱qqqիWOJJڸZoǤ0*Ia`XҲeUVo Ad0e sQw7`uDV4jg'Dxn n:nn () !9>R@C sX(QB6(O *A`n () !9>R@C sԶߟ(QDmm& Xd3|(VU_C:"9>Ǧ |$W3H؀nzm_#: K zN_RIST %J(QFp%%%ΞХKSTښ;ﺫqӦb~H a볲֭[]IIɩv}}7nAD`?>c٬ E;4{֭[z[ 7K.6npƍ/_*)ѹ!^f0_3F7Ȳ b*yB 8ݹYgF p&" ,B֕o}[ R@  neCQQYsu$SzQmً+6gU~*^0<$kTf AVt 6ω%J(QDF׋7#]ۖ'Gb5o3݆.ßkPRXXñX,hK_ubccZr#ŋiiiC wo˽KqQVzal/>9qea =څW J%ժQ?4kLJR%Ʈ>^￧ԯ_ɒ%彀?ا6Xe(0/ މj.oFUUz)4$k׫CwFhWn3ﺫY_\/TD*O֭[g:~>ԫWl6l jْ֬%KL;vXzI&X9%7o^۶mmI=zlӦ͌ﺻQUm\. }vD^΅ӧ:x(YO{zBmHpPPmV*b}=z_uܹ-[N0A)oF=u .l޼y׮]J͛L`7|!V0R*jy#F?äY32clѺ}u]۷ õJ_WykAH!n\Z^gzzѣ/b߾}BQZ~EʷӦM7o^\\y|w۶mM4Ypatt)SQ6zR͝т͞RI gvlUo+?!D:5''+O[#z>Dt+Ui4FТEyp>}j4Vݺu+]#""Ο?_Wr pJ4@m tC1<.))2 լVpC' :ORWkT/kf%E? 3 ZmjrS!!!e '!8$Iׯ_/;0ue>[rr9k֞7w&VkW/ ,dl(.wP KpGeDJ~M``⧟۶]={0;]v_}19y@;4j2L)wxZ5bkW ,=C Bj9"!F-/ѣGǏ?f̘;w;vgU_yeҤI֬YSPPPPPcǎF p q􈥛,gd8qGBV5(Ņ=:7Uguzk7ouXg8{Rg%\e˖կ2dgϞӧO4iR *>য়._dIddM#g̘3ϐ:?[˖,vK;UX bbb3lj^/_hhhyUBYNtzD]yB/ !ժ[Cct_:/_ηt"cC{sIL의۴F׮]+cFEݖq4mڤiSwʲc`0(At:0f^z@@@ `쿲VdCZ #xr!j$IjZ(,5k|_1ԒȱSz֔$ # $Fsa,=}}ն#zøm﨧ĜTxɓ۷m).)YTU&N`s糬 IZm_к{MuB=x'%V{w;Qm)3ԟ%OSyk.s|K_?i2#[ZZ"Hhּ#5g #.8Pmeʒ?ԭQ&wz ]Cq}m)`^^nDFzޖg^Gl*DD度= LݖzZ}N0jԨ=zJek>ʬ CewSn[kO*nER]+CdvQ7#N7|Ĉƚ[T/ Az K<'Ell쁃n_wW y.Q\˫U$PpR@_mN7b={lX^-d/! K_Co+*BnX>--mȑfY+T~QQmf>ܝ9^o>7#λ>t֙O # YoޮXb??*$Dk,EQF h2jHS~R!BB ̛7kLLR767T7hu+/z i&,44ZS@]B=k~~j^,۳-aBp*O !ĥK7~ԯߣp If͚5lPeTJ xR:s'xbCBl`i3?t2+uTWkΜ9#***--͞g֣ K "---**jB?n&knzJL %!fxW332"QMT*xY{RGz|gOQ3BeR@C sH|) !9>R@C sH|) !9)`Hj*f_|%,N*Uy g[-n/Ϲ x.#=?b,nIENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-simu-param-2.png0000644000175000017500000016524213413640652024041 0ustar rubenrubenPNG  IHDRI(LsBITOtEXtSoftwaregnome-screenshot> IDATxw|Egv..AZ!HQQ_|bQQA@*= Xr.~"nΒi>w,y3qR: B!|xxʉ U&ZgM~|MyOK!BF׃Ka+MZ>՛3= %ږn!B!kM`f(=wI 땫?Nt&!.8XB!(.זTh`xZF-XBAYJ~ϿwyQ2v@)u,B!oPRQUT! 3Ҿs2x%%̧"N.o4 ,W Rd9!B+FŔ tw)*ՙ_ҾsŔSz.ؚ@êר.|,W!T72K*``VK+FL*  " iHunU5B!3B]9h"!˻3sk[$ sk!(-0iK#^~ͫ'lrKʴ{Soq\BLTc߿,F!dxNB|hU¶j؀u`.2snh4ݰeYeXB!R&qyBȎk7>nIy$!|%I^oi&8iHܘ.?Sn df]@3uH^|-7U޵S4W5Fe[7=Y5"jel|qi͌J[)ÂUo``tmCA~y~jHNa8: 2seKC)-S_YH,1ˀ~G#'ξ;_D_ǯ|ZRnRO= s9$ReFoW3!5gB /]s724a!{xha2hk?sOhLF~.]6" ^>?OyNzӾ ?#^)OvHPk=y^Q֓Aarv64,Y'sd I,^/0RD,D,˲ !&ͬư jsJaV7~N;2|d`Hp@`Ъm'-ߓf٦ q A^j~;Dw,{[FV_uJ0_n1':R}[γlз{mmտnn\p"XDVi PaY>*\9BՃՕR8sEQJ>o0r:(?1];R)dz&L&X*vtW'Z<W*~ieQޮ:^o0Q \7穨0sye](`!Rċ6BA KMm%,2lkUb8G"bY@)O=<=TJL&9BՃՕKykkr+ Ok77wdWSwO7o) >^`0qtVPdYg;\Xc'N@.lRS26n/Zќҵs7 %vv18R7]K8iPj7WTtnb+6h)U:?eO+[zs'ڴm˲LVVޓ;B:N2H$\iRs{rh)׃Ra9ʫ-3 A~kvygZҔ:y2G3{DϦxCm82q=ͅ80ċ6BAӝ֥f Eώl1VX0h:3{`@˗wwww7xE:dAPRN[>QܫڹS\n^e7k#m|Gu{qLM{.tn dHBrp¨>SG$|b@Ldq/./}vʴD)U-X^rJ_P nV Jw?$L\֝^ݶAܥ돌jCy%_]jxìo'ƽ!՜ fVV?wK#1.n Ƹ'gdYʲ~6~-I/ BzUJB|lm,Vt7ofUbOff̒2Wm!jg /\ QJ%k+sPQVEjr*/@p<']]>*o[/^j2FX$RyV24r':uaV)vډBPvl4z̄n"ݿka#50c~}shb+B1*|-rT*m6œֆ[挌hmX,cU2͍ꦈt w\dZܣ72^k's˼ݥF$=|}xJjUv"#ּ((]kn^-q B"ē<ֿ}+SWuA-4пE&1m nӣY6h5Uy8[ |BŔWV,d2JVf!2Xi-fսJnu;|B[e]ASP dLY@o4iw[ OgB!Pq^/A(,jVێ l B!BwnE""~_B!tz2jev9wӾKyM]0#!Bג拏E+߱W/4󴠰pSITMZB! 6PwGfSON?:~M[B!;x L #+ˋ6#o/&VB!B-9ԁ)!9{ !C!B u/ϳ\pVW<ݞ˅f~OZ^i'B!cY?2QݯSk&֠\0%9NA87112q޽ޮ;16W jB!tOp7?/*s~^yuֶշ-rr,_ֻQ'Mf͏Lǵ&NiBՠm̉cǎ<w3LvJOmO^~O%.Pa _xz@czڽG5k~tpʕ+Ol68$t7oTՏ=聃KJJ)xGΏ;g3s,aR{3 W?+8$[qB!TFaϞK|dؾŋ/ SJ|dv)YwΞ%[3 _we ?6 wƍ?'k}ɲ:W=Ԕ HKM~-}Ѣ6oTÆ >|BV;yy/N hy8+>/V|th6 BƉVy9 ˖/_lYtt-pj+{ Jrg&ĵr;p4LyeJ& `0!!:w /G\HFf!C\]] >>oq6~bҤY͞>Yk~ro߾Iٽ{wRbb=ȧo@N.|2f B9ˉ̄H׾ӧO?8hXtZN\Smq;2m+]ŹzV9%zBj.4K.W^.B#fC0hi oB!}M5R5etk]= {ZB!TNZv~CegeB79 C B!<!B+po&E!BYw77¬ tsmx:|+EtB!*Ƽ|GۻobscƍFjٸqc3!]ExZW4{cBM kBHc|B!QJZ3q^8+bRBNiBͦgu@55<},;+̙Ӆ[2˲J*&6CT`f !lD!G說 ?16aF;~R ҨV5~2B6LK7qt~;::Z&yxx 8p֭un1bllԩ'NJ0aԩS ZZɴqrq#"knDzls+B.wޛ=Oz~ڵ۸qcddV=|'|2|nWh#nO?o߾_~>+|W\9p!+<DGEYX$f d% Pӝc|[ t҈+W /%ɐ!C "C)B?7nFfyB.]tl睪H*nڴw]vMHHHMM}w:$JlG6opCI4--W6bjXwP`0Ӏ;dgdgeRT4s]VkH+Ryʳ,(1rZKXaQ5Bȉ._ ӫ:/6q%:]AʹW(@^@)m#tOj۶mD{8hv9~zK.ۯy˼vY[[1ˊzT\)JwjZjfvVTO(..2uʷ_G6ټqZQBrS[V KrRuAQɾG=I Qm5(W$bM'bY(JMWVRa}׻G/Lf̻p79㛓ݷwbiyd!jtN`ȴ?gΜ9?|TTĉΝQ_-EQ7* J *o\۶&|1TTJM=*˜.șӖ?|CFK.&G)4]D=J$zpsssmhܱ2*eUnO_~Ё٘f־SJG4P&AWy3+78,(xz#͌rX, J\j+J5&o%c|9'o~ * c2O'l"DVr]I$n<رc/_\+KKK.\0 z6a>CK/u}ǎ GQt}ͪMq$2?SW(Q'_X#wľKKK6ٻ7)1q؉ii)qXK!_g0$tp;t`މ—MDoߵ3"2/ (r=9wVwm8f\Cb.q1qΖsz%bXu\FP׾cېₒܫbOE.E8DbjR:6xS(cIɛI>s6;F J!!g}ƇjX̙s6݈ IDATgyF?:t;wnQQh sZmA[q:.޲2Z˖-wO˱ 6&Og2~ߺu֌ٿoj2Uqys~'NyƜx9h~ yYE)G=~ٺƈdGk#✂-.n1+B*b<,"5íYLJŬXĈQ겹oGߚ#|͛7FLΝ;YYYBQ5qتŅ~hpHtyo##YiaaAJ1yyyAR"CD$uK$%Ŷ.99ꄨTuM>\@+"+99dm%3,CrgP}oq޽{SΝs0M&&HD"h4tz===%sS,,81T8E)J{S>PeIvqZJ\\\ϟ?|}}~V3wN8s;GafK~e_fEk+IO) L\jT @h۶mjw;s's7~QƊ"{`_>88G?>FRu3OM/?Ϲ{p(%@) @A$nF~h@|R{ Y!g*Cj PV8r<(ufiC"c3.^(GP;kɓ?FXlrc[BuŠE)((XH$r |nnnEEyX"[gSBɉRڠ@ GzRB-<1R2"džW"oƲ?ՠ7% ED#*R**AA'&&&hиYi~~Wӯ؉<ϫjR+++O=C 3 Nbu=[=% Xdfd/>;jˏKzrBu7UMBIF4bŊѣGɓ' ZouQJBx3 ØL&h2CyE`dY`0&_2wNgf伵V &RŠFi} i ą-T GxAY@UqAi)='2oc/^M/W`@ w:USi3QJ;wxXӏ?ӚFm[ |}|:*\_̞5}nu=uE ]`yHphy#yY&O\y6<至R >./TEk nЈuպ0cƌbn5S|rZeU !SN'd2YYU <<5unnn@0]VPpza)SؘL\\)j#Bjd ~~<7JBK>Zl j[ƚZ0yzzEbF^^^Z"65-sBt9?l5ԓi'k.J2((dRYPPdjԽ$JzLB%<5ܲ*7i#L.ќuՏe[[J}bx @ƜFTz{xPe999uwwmg#͙գ!DE SZUz^ 4Z7 %>M>!EZ:()hw?IΒFGEذ1Bҋ {ϲ @xٛ᎝H:hRcMէ_|;u##sDzS%׸i]i'g͜yu?00ux+Bn= v@),x=_thbDJOPJ%bQp\" U 5*OE{.,F8:Ʒ:YqZ KK|==r#w@o@Yq3XapBw;_ aL0B)@rJ5LЋ%HCc 1]yYW2<=8# @v ly^SJ+5`24j>ͭ*_B] !E󘐿޻PgRJ;v0v$,tqqٴ~ޠ kK6[3)+>YV^Y*(<ب>ָw䉟}b^ 7nuϜfo#(}rˍn~ޣWxг04T)..) 'n.!B7xces+L&B950p ! r%8Ja%|Y\\\n]) !Jo__P>|nһgM T`]w0c{۷ij]\\mLmu17X}7/fqܙ3g)"E[]TTN29Cva80DYupz_bE%R~@TnIg*zى9Ak)ؘI )Pz-^a! @;H_(24Uw/L7!/?d2mݶ_Zѣ{ϘQlW~5|pH쓓?v#7i$b1Uj+++]\\x޹o?]طCt,!]^yyo/rS_}}F qkWuVy{xZ[U\\v ͍3fwOF+mκ Gz<:tҍF<<%K_bcn۲ycnfM6m>^:mUEYe#G>Z]- |:C,^(Hjnwz#*Tb$uƍ7%D<e 'ktѲ;w'8nVy~:0Mxxjչy%zM&XBsgeֽ{+*^{>XZڱM;"Q=rr3ϝ*)-+wwwW[z_U^Z:zUԤƣWz[k X,;5ԡkU* ;tWU\Xx>{FgdfU 5;JPJ !RavR=y;nt(iڍ}C8|z粉 LԺkG=Z8 , ,q }UZp5:yZ?? KJJD,gM&^o4=ݡm)SBBB L&K$NG?99Q59キUj*+ϟ`znBxJy R<==M&h8d28aaEcaaǎ=z̪V?5N5y6bAA˗d2m߾}РAk߫W/HD)Z@,<6j,왴ܼigEN_t~4xȐ!Cߒ5'G: oo+m,׆Rz5`H$ kdt:ŋׯ_.Ju / >EAظmCv--Tt?]H´j@zf5 <΂w|MJRjF捵B&0T/?Hh-0,B`0x+]==C{o w1ލfL5e)ax^$!A }AرG躟?kv gruP 2OZ&¢Çu;:th!CnwCC-~SJa]VTTg h׮ƍ###ZÇ? |Qi􃰶X>YSPxtcO"qc}Z[.¼>okkBD,;ŗ K zCpPX$fc[ 7L]<\,X0׊.]5sS'=ݝxPce@ba8,o9FQ׻\y߶WTT84_]:.Tm6S=sszr򧟭K$ `N?G:(6m}(J%a&=.]rJD"2d0?/\xqFFFhhk6uT!_,Y͛!!!oO>y\vM* juxxŋ Ǘ.]tlg頻hjFޏx~VWǻHpMOF*yy{K2oRx \\\;?g˷pժII3uqqqNL@JaYB)0HT3yh4 B>vn߽p`hjIqx@ֽסC/_8iXmN!"Ԝš ҷ]nݪUj[?֭KHHHII7nB?~vk׮OKK?~ǣ>f͚~ZȳqƇ~^d<2qΝǏwv\敹ҭ[V{fd*+>{={z-sw wg-XG;wӧL"t^>j]A*aM˖-G[@{qɷ6!j 4Wwq(n;81=ܹs旉gΜ1۷y_~N+vcǎdtk۶mDo-_6}y^'aD5ò;R.۷ /0k֬k&$$Κ5w1o;k֬SNªE "^x'&O,<!;AAA{MLLtjzT}L$b[K]dG*..vvFQ*II!!YW#ӝc|/\d2ٞ={-Z4rHa=z I&i4 &ܼy3,,l޼y;_?~0o1rHgyMkI}ApI&=MWMyPM>884NL0tU !l?lEIq?F՜5Z֭[7l7gj\7nۻWK!j12;z|ӯPwə7o޶m9Bw{F!KfBk\BBXn]hhhP3k!4|ģ7n(,,eYosBVqY߶:.**jl-h1~Ҝ'5B(UrNnΡC xUx8˲)hRʫ++sP,`3C!B;oߦ];a8d2FUUUiZ-!׷u;pb!P0LuyQFZп!PJ:!<0E! 4;3\Z > !j3Ofe mպuxDK7^sx@aYek1E!Ғv2 UnԽh4fge;{ۂ x{!U+Xl?3!P;RYQ>` Oܼ~ c_WXP:)&EF"644{``B59p&yac;v2 TWUMg8ɓ"ȒX,l۞eŇ9"WɌ7!6jZ |On={o7!ըi) xu[*@EEʷM IDATԔ<<=w k%#'+SeUxDlz-o.\PuH<6!>˥竴ZzZ9uRכg7y]/=B.U+ K;K}<ɓ'צm,[VZrVB8b;{K^޺Ξ>۱Sdܼ^ 5-8xLT-"88$Ƶvׯ5!>XnK7!t}˒RZYQq*-%(8DHܫWFFF6$D&\\CBͱZ]vxQahѦ?**?f%%%&,PzԸ\k&ZM`adElQaǷaX/oe6!:S9<L*9Z"4Yͭ6ȖG #\K~ ֆr A`?zeV^믿oMvvv=VZ5{;Ξ=dbU^:DoΞ2'+YZya/_1z\Fi׮}S?Oɜ"Gw^-[fγe˖Ν;_h4RJE"pڵGySP 6,??_VXkɜ"T-t9QT/6?UV͛7o޽GٻwyVZe=eR1߳;?/d2L\W"癳Evls'L/ Z~{ k}M\\\zzpo&..¾nݺV>}ZXpqqywV*2):uJquܐ✲aÆF)NT eVZ LK0Qډ{,FE\euhY6a񱗷9Ojoj&^^z={2""¼|ƍywJs޽z;v <͛Ҙh;ڭ[7]׮]{矊 N t|!(6nXwXo >$5W~Mh=g'+Jlf{Y|ׯ_O7u MFd=ĉB:7oxzzļ0q℁~٧*yOyZsU6zh-B!Ç'%% ˇ5S~߲Y!55~cǎ߿/7E-U}|.\8jBz||[N0fmNn߾]&@Jjy\RRZj/^h@x;tÆ ; )'Oz嗷m*|Lp܆B!+ZjjhLIIyW5f+W/Ω=DN6sdMws`0mC(3f鯿7i4Fgޑ#ږR7TUU?7JN-**2 G2e X(+;@KBDܜcwe: ;x  E[[;** {J"M6m4a~BP(NBRI0NhT:d!:N/zV:Nommkmk$AHHDDN$ә ܹsʕX4sΈccwޭ]ߟqNeH{1YB(---//OQQtͅK}ei޽{UT*HW;gѣ f=ztii)5zh#GLLLBU^t$ ^x{nz1:X7!D"yws{IZ[kkeۛ7LUVw F{]Q>DNNMUKa |!w^t$l&2]EOy- ~ښ=Դҥ~ tfÇǶi4ZMMM{{;Jht:ul%/e:[ Ç/**⽼S./u`tÇ}4>?,# |T]wRi&/e!!!r{tVKJ߸[D"aUVV?!~z,}ΝgϞmhhhhhHOOcڗKL|DDݻ׬YT2-"طL^j LPUUuttPSSP(X._ &KVnÇB655UTT$&&:;;37nܨollh8quu}-6{I0`>{.--˶'S0/:+\ r!w!C]SVKk란31J:]-y~Wn>,2X ^Ƹrާ3b4dܧ5?$.^͛7}5VvTTTRRVWw04d*Æu{AulsPzG@w*pqqUSPVVq?ǏXzII 44U&YY'$\D߻{9u'%%jjjġC̚51z$%eQz~~۹7`P Gk2SxΟ4JYYECSke?}W > ]VZY򼸸_m/Yj3yǏ*˂_LLDa}>`ddd>-d{72B z]Qzٳg{PFfFkkBi׮mڼw nBCC[^^v~ ^x=J;@ǚ6L_FFׯ_IJJ"LLL_Jn?..,-njc`h0LX r`O!UUB,'Y!N @ލϳK& ;;-3t] Gw+ USR%K!۵##3,Еe*L 6޽Fnڲr>w~ 1o,'Y9ۛV>{NL铳qqՑ8PGVVֈ2ƷѣKI<`244444DUT/==#y5VZmr媳N5)6687z 3UP&![\:QX++keѽ7qO:G[[;*XKKKqqƍx Y7ձt%%۷oaŋ555T*76o:u u˖ o޼`30Y{ӭ[Z[[V6У uܸ]99T޻w%x@-"BB<{ô?s0Sj8/r]S(::2rDq,}۶V^#'Sn}!!g*fΔ:eǏ;=b#(-{Nm548:2aB7t ?ײ@B` 1(H;2rX"NߑBd=*+552ynR <{/֛7{z&͞vsy%{`{[U?*x<9))ݻW̜{16N'>EՇs'x1ʷo/853fdffW1mG\4ڵ k"ssO;8ڛw\,-}b\]], 6ɡ{{8nt] 0w7ǰN`wI`O#?>4yOCr3f0;'LgD@VUU]n]}}=;vc10577diii˗/cYx uj}(9++KyA!!'m`}^_^}6zGKKuYYY|||]]]EEWXXX++ޏн==-UU~"K&OVWnݡɓy;D"Fu+?R)BbD#=ĘC"ttt"##D,B^rpp$ӦMf[ !dll,**ޛ B֎#H222ӦMKIIA.!Llqb͛_[ZB6!OI?-+71[BBJouC?*{JQIEGLݻɓ111O+1"ׯ__]]]UU5b///RSSwQ__S__>9M?bcc===f^Bn鷀OLXxѶlP<er#4MWwO?2T aԋ&‚'O,_<""b۶m6**JNNF|~ FF2|"˳r-W;S--- 'rŋ87,Q__?++ /e``m3[nUPP>T411g7 , 3ϵ rN.mQży&OrJPLL̎;N>mbbggݻwcc|UUUO8aiivz/_.\XLϟС3f rss)Jrr迚---'//Ç744憆b;0]BLW,۰Sjg+B Rf Om9DE6m2h ζED,9vѣG%%%OT rrrw^fM"/d29##CUUQBBBMMBxxx`LPbq0?_')?7k) ~s.4`} -t91@_b1d)>1V2guS*jXtjj_4R|TZLRJ+^B } {gWGĕl6Zʿ1P,FxJb>7amk솿iԤ2DlBXv6ITbVRzZQ$ُSV"Pwu}s;Q ]<ԌNhBBDƭ$Q&^v@ `J-G]>wW@o(/)0gK??yN|2ёۈg}o={BHKgK7+ַvͧխmlW2J{K&k&y{F9H1V|&+mL2E%e7HmmO:9nQ~~~d2YZZXV7w` s%N+< /t:A4ٽݷ׵g /-}mҢ XJrpmc+4wZ۩M-WUijַJ x0=_/PϽ|vPзZZZGxΝΘ1kr SD}yQ1Q^`Tv!B-0RUiE- IXHyX҅4y6T*N7Wi謟i(EXS,zG@a!""b$I[[v9} i7wܚ C"ttt"##*$$tPNs\bl_z^z ))I&MV]]z.***- 3"B֎#H222ӦMKIIA; XS>8e7TOMhjiKk;h3zX[Dg0^vc3WpejdDU.Ԟ6qQ"B?" '8xL H/i##.\PZZz٬6f̘-[X"!!!wX|gggqq b{)**2V3w1l{Ul@ә>a?JV˄C.0} x~>\~a;tlm뗕Q# 2u8XԎS$ B(9F *~SX1*9AA]~ǺfAa q֪ˋWT7oVwK=rƎK"ƍwСm3gL0D"]v K?p@XX?L"BBB𽂃17o <{,/UqjB+++111ii={-^ntՋ/y/k?W_빿#Q(FN`J^Q%6V$(>o`rǟ dJU|xV*cΐŠM-xJSK{aWS!t:]D ,Jf-# rҢw9{RH{0yAQ-¥*0VmkF٬֝j I+4-ܕdL~R1-5Y$c,֬ =GĄſЧU||y~N Yg6 bbbXơC666H 11ϟ?30dȐ& Jfjճg͛waÆa)ܫj_|ggg;-off}vW^-[,++/1ؗ/_d2\%w} ӥKuddN>{sfkҾ;ܩ==cZZz"*r!rbhH$r+n.rbB^hăk2>]vTl>BSBoF =^moeSt4U22W >sdn{?"HB;Q.6#]dȵmϝSNa(ߘGlh 6~j]cFhTF7htƔ9Oa[a7|xQQ ^0L1.Cq؆n)+*.[F^oj8'.70>`lKn6=7XzT ܄,vFSJBU[X.lcxՌl'Dw ֭[SW7oe;}},[[[iVVAG}o>cc }8???33bwΝu֜m۶ux  , 9q\ C٦|nnC #css̝k,/'m}M_ap{xxܻwݻޝIݻx ׯ˼y-[fggU!TTT233?ͅ+W䲣ŋN*,<//77_^zuX.{{ߛ>A[m,\Ԅ$}W)x Gpƍ.\8h gg?ѱS/ZhӦM... rqqa$55Ã>.T XhH9vѣG%%%O}_77+VvdrFFB0w@E>~lac㪧)ezH~~s{{H~:4{W/`4h:jժ'Oddd477o޼@||޽{&ɓ'񔘘2iY)))ƍZZZ:ƹK^36wmll̘[XX(..tȑB}}},D"EFFΜ9sO<9p@RRDb=DEEō7nݺŚu5[[[Ɣ'O}VEEeNNNxCZZ̙ #0U{]ޱo/0x֙3gw]%$$S,YrvvfUVV>p5k޼yz(++6((hժUbbbY?633cL ;tPiiCBBB\g<|gӷ ZZZmۦC"677diii˗/cYxa5+XiooζC͙3'%%N:k,[[ دWRRh")FFF"""aaaxJUUU! +5 ,ܛ˯^ uUVVwXSbmm]VV_WWWQQ羳DܯyFQddd}}=-kׯ_2eBHZZzرׯ_gܥӧYYYMMMl \v(\:Տ7n?tO/Мc"""N"?TfСơC EEE|||o!88XUUUHH;c?c쒔dffF&Տ=%zARRL&O6UTTZZZzyyϟ?#XΝ;D999''L<&&&X_ܹs}ND E[[;**JOOD"L6-%%Mw,zWg!r0'...44ŋLΝ;/_k.j77ӧx<KNNػwommmzzzVVnoo~ꪪ#Fxyy6{ȑ&&&7;88 <;^!++#N;x`]]]iiԊ+sY;^Szzzb[!~X?pqܹh2'~)''8''ӧOX7nTUU  0'S.#CC0ܽ{ß>xȨ aaacǎ%Hƍ;tT`Ō=ǏFJGEE;VDDD]]ȑ#ł7?<<|ɢ:::'N Ĥٓvwoo@>>'N7o6!Fe׏ tqqh\~K޿CttG(~7l˖-{GT ZfEEE&&&<@psJ?4NKMgĉpܿi|||swwߵkd1HS@37 H/g޾y&N%KDGG#/^%&&&rNQFFkz~~֭[߿ϥsy&'''==}Μ94f}mBй`nEtz[zZvm/\q޽wzxxx{{tzpp0%ܹٳ 7LTTT233YCիW߸quuuÛ W\ɥž/:u*_,KK˸**Z^^1cƌU}˫ͭׯW^>}z+@7pƍ.\8h gg?ёmŋoٲMBϟPPP۽{7B-"L?ۇlܸK?vѣG%%%OƽnnnUUULϜ93j(2lii)##K[G.drFFBtB!:xI A"2$Y iiIL3![*POBxwv;qqqp^@ OӀ1s6}91pD$w7 + 'b+)l+߾<|X@VnF,k\Q޽ٽ{w_7'V\ r!kdް^gV'kk~,66^ ^@/̡Ǯ![tG oԋy/OBh&|/ `@X:ZCCChhK޽{~z ^FXXXNNjӦMrrrXo߂RRR켼$%%\1rB>|@2o<Xeeb/bU+++#""BMMMs1008{a޾}?̝;711L&3)srr\Zs߾? 9EDD(**۷{j``pab۶mR_ = ZjUDDg/>1Vn`OYfmmcǎ'֠ݻ#G9s1((Ȉqooׯc2ׯ222fff8m heee۶m+++sttr*))%%%;5QFaSLYjqss͛7WZ?eʔ>!zT*ڵkǎ{e|||QQ^~mbbR!qرqƑH$))3f?=x&|AAABhjj kjj'$$#KKKR455={Tٳgldbbw H 1c;3½ ۰`ʍ4ɓ' ww͛7SԲ 6̜9F+//߲eԩS+Wzjƍ_f V`ɒ%999---YYYwb \\\^x1xYfmݺhlق;w.$$ÇT*UKK+11QVV+d !!!==?޾^0p_Щp|\/U5kzOHJJn۶m۶mO>ݻwXU~#CZZZmۦC"o=zDУ~O__L&KKK\|k&$$DLL,$${ JJJAAAk֬K_^SCݽիMMMϟ?_p_O&---eeeuuu^^^aaa]{~o_rǟm܁˟ݻu` TSS#..67))׷hK.FqS,k׮]O>UPPؾ}˙__z~I&EGG#0<{ĉY @P( F*\*֭u떱cǘVcb+zt6ZM:>zmVjjΝ;#""sss>}{d{֦gee.;ׯ__]]]UU5b//n>[bcc9-yIKKˣh]8DZ{/_K/`P(ΡnjoodzƎ+""~(Kɓ'cRXXhee%&&&--g|Bҕ IDATp ^x{`EE.-==!r|Np!󋋋mllJKK455|SSSaaa"($${ݹ)((]/_&?~IWW5)&99D"!dee^k6 tfrrr}e˖x!Djjj \\\lmmh4HT ËLLLx,/$k'Nc|?g""BAAANNn8.eCBB6n())icccii,ZH$δzرGJJJN>ͭO2(!!FP\3rK2%.]v:$c|/haaq tƾ7NeBs̙3gS+cǎ})tݺuLI|/ya ^l X'O6a6A࠯4\ Vn܁ rmm>>>mii OLL,//522rssD>}pllK7SFaa@(,,#""444(ULL Dȑ#8zǫ?.ݻwFFFxW UҦLall/iff6l0f;wܜm 9eEFFnܸܜD"oܸ122!4k֬۷o/˗ٳw_߈[d Bٙŋ˗/B7;wJKK<RVV)..FUTT$$$TUU!=z4x`%%%Pff&BKKK/]T\\לϲyBӧOg<#;;;qqn9.C{{{vv669sRRR^ղ#Ft6*ZRRa[[[,ѣ{111155 8reaaq-PZZ@BP bdd$,,$Hsh/<@455a%%%:IB===kjj=znmm]]]3| .F{䉴4݅M^^Ç3v':uj̘1O^z|~ӧO999ŕ| !4sL|XB1Ν;;w5  433 255A344LMM433eff?5kVfffUUUzz:@ .\S$%%mll.\Zr˗/KJJ222-ZԩC,_?|a{{ÇO777sm? \n<̙3ׯ FX ^ +0ml۶MGGD" >>\ߌIJJ233#GEwLUӧO`}~sέs#""Hl}E^J o(NVNo1' E[[;**JOOD"L6-%%fBppjצ)((Xt)@(((B $Gfܹ3"">77ӧINNػwommmzzzVVAH;x`]]]iiԊ+{&&) +q~1o+XOOOYl+LKKˣh}>zދ⺥ٳg {zzṙ&M|2TN?ȈD"ihh=zKQQQ~:gj pmmmaaammÇF\.0o1qǎ#G$Hl+dmlG}5k׮=mSW8裇ywSEE%22lذaLm2dݻSSSyɊܸq9ƍYfݾ}x/_dggϞ~' d3cŋ/_ޅ N9w??|H" y r \ˊWnG87Յ:ѣ$ E1$ӧXzǎ(sFݔK $##7?Θ=UۍBCCi.^ZSSz^~}]v 4]>|XSSѣ-[ܽ{ٳgXɓׯ_y۷̳͒ɮӧOCw/`SCs߾?̚K?̌ ^4{_Rr޾ך8_WmFѽ[6lgzDWӧsrr>}9s&>,Fq;wFma ?ݹs璓d2YӬ,333Y233<$ x _]|o.ÇIg Җ9}e=a[D׍{$&J-UUM.%wMp.\S/\rJGGGoo+Vhii566GEEq؁C`b ^0Iϟ:5/_0A[- mm[o|__oxAvN ڇmx׮]cM8q"N&SYY%wѢE-b;|pz~rDlf!-244~`YE:pxcÚ?ad* C "(U(::VjV[;ukjk8+nEm-VŁBAS q6f\d$ss=~䜣W23e e7\w߾uݻhҤ0xQǎ3Μ++c ?VzU_%.fﴖ-5466W_w8!O?uL_;hbXU]2$"Q:u}*T9"dJDĔrF9Fs*BԒZ6Ui`dH|4 l`rع s/+~*VSG&Orڜ,B`Ѯk.sۖ4/Qe^eƤX^m޸Okܿ/$F(rx<ۊe7e^Kd2ա"9Z/JK%vv~MCB*4w>Pegg[nHhPm r#@ Y/5W.;ZS%ŷn3x*pI!3M׮\|7ZU A `u,!sիɩU6ܹuIwn,).o,4 ~HOSSo$]+ϳ ܶ%,7KKJVݽsfIIC&M7`cl1lhga_K3YMo ٯbKOpƕ mArpɌgV7|nnnئM9֘:kͥ,a~t䮺֖C%W#~CZLʨ,Q;UNW<S֨Q!u׬Y߽{ٳ9! !?\l٢Eݻw۷o/]ѣG;ׯ_Ww}gt0tPH$ܭGOQZlѩ[E|6jrl|qqC!/@nסcr4fu|| yvvJa-.;ˬVqd2مE4ct#ZڂAF7o$ege w϶omp_k]]}F ڦфW[4MPښթROu5TWСC;(yEU |굠G2`q IDAT,>>" 8[ngiڵ 4 }7-[ʕ+-[֤IB%Kz9cƌJ;Vui@"|[6]KK؄ "gz U7QW5WW=W⸢UVihUW RV[ԮSiڎ4u둇iP@Q _~|Nm^-63S\\\=}IRiddd\\\^gJҒW~:ӄ~EmU)))_}ŋ ^`0fV!;GN,wDA۷7n999յwKSRRl^BΝ;;rJM|u8 ERRT폣mU&Mܹe .a'kܹmc7hEN…5%?섄۷o;ZUVnnn )R =vg$%%ٳ֖rU}u `C 6w^޵MV?Kݺ.XƄ̑zK ޽{wRSܹsT9sƖǏY͛7ݹsGp~F|*rwS|&  bQK`\xBW"Ծ7: yoׯj3fZvB3͟sZQ;\|wL߾>LɅO[שÔ7*nyǯ\6';rp?kkt;rV(fOL*q4T9 JisR^' }`\lcF/g[ +z|)1RlXs|i0$ӾJ0.RRDDHD)'RR4gzӯII ԫ:}|xagGq}Bc !d͛??d&ĉu&J6` J$KKJK]%%YˆP@5pe V錼OtA:OJwPx agBv;aG??3ߴiK!:rdm40i`LὪ]#B+م/dbAmW۰Ǵ_O.]F|/qup ݪԿDQ/O6K:uqLުICJ=;sŋ̪BHcݷIaᦊ:xmLNBJVT!.98{;/VW"l/j$fU_"S>\Dd'jR"OsJ)-WKs憸T再}B%¢k o +贜۹/AB]DLqi w |$¢R]V.7^R)]{T 腶|{f5ښB6մ)so=ʩ%L0O'}d|WW(j93ʹ/iwrVIES *'ٶ,m!%A0g Tzo4p9u#gq}ןHUoؠ}I9YN⮡n2ޫ̵yŜ պC#ײun@ofT 7r ^8bmeN.!VCݒ#SNNʹ8@5=5^Ԧ˰u\l7>DW*7EBJ|GNV QJl۲7k9攱i9e99ElՋrwfQ;qrǣ~$N/2UAm7v `A_eҴ.mזܗ/խf1W-[~ϟ?gkUQ[޽ Jʵ۪֭UoT|TkR[V!%JU3vuTK\KMTxdYZ.5w@(13t !rtEO)Pǻ1IYɏm|l4r|?ҽ<1ZMsjj[6*DZr3ǘ*-We2YZZںuƌ~!>>>7m۶mĈג9sfΜ|r]%LuP(N~Ϋr}S&mD[(VSjs2v¢Qߏ뜕XrZM`%*(;We42G kڲ]mO+t/mgR[7p4l0 83qiL{ $gϞTfϞf͚sBaFVXqȑ*5!'zܶNv6BBsg%짦*7SM"RUUVzE!Bh5ԃ-/*=}t;<ᚯ>Ogwqr(Ŷs{|ah,ᾃn٤VpG (?7lA7?.,onTJGdj١IK򺄸3gnB>Cٺu?}5|Byz^bFۆ)B羸t/WDDYMG-Z(Q}Zz9J;5scG6p]K"WЩ/L]1 |_s2vڱ5pQQQZXߟ;wn^LR<׼֒?p,~!Orc/|\@)))ӧOI:Lε!W_}G $enp;'Xl#3)20f}R m۶]lٲI&7o?r/q4-KEgdd\>ڱc/s>{GC\n ѭ%ԑ:JS/cY  RQQQN>}}˴F|aÆ#GFboЪ#QAңӾ1,BxyzY&N8w\50 'RTii@ پ}vڵiQ3׋mlM'Ġ/'mӳw3fKÇ߱c1ivn,a4mI? T*J]\\<اO[O*(3yC~kZCT~t9;*-)/+V9\%iJQP(BayyH$i<33Ǐ/++3uş)à/51q˯akiBaoo,***B\./+++//wuuyfxx; /-ĺfVĉ5jBuppd޽{ϯ_TjYߖ5aė6u@&bDP(h~MO>k׮-HL&_}iI$dbL[ooԑX$ԦM={888HR77:99iŅYԑXf~O:GNNNsνvX,(8"" qqV*v>wƩ}?B1f0&F|jZ PN/^dgg.^8444777 ],:F:\J*]s/j_gPZn3:蓭BP(CWƍ}Hy&WV( GGGP(H5jDqqqqssÈ/T{,<<i˖-IGNJJJLLv\.{ԩS{U4i#X&ݛ2pÇ}1رc5.ėW/^P(!ǎ֭[WTTt7n|7_̰1iwXpU ݻ&kwޱӧ!˖-;tPNҙfΜ9a„}?3g3Azkڴim۶i:..`9h\H-ۂ'''W_mV)/:tر#v߮]ٳgݺu^^^uEv `ƌ"0Oiҟ+O|\n!0C3f~I iB*dW?_0X) BA+^iEYYJaXm ?V.k.U@m51f0&fkX-~A;ĪCݹ z(v/ry#[nh2;r ߏxR5|^ecW#x۷o/JyyyocsxmJ)H,;/O19vX}sss !yC =u͑0 ;K̞ɶˣ,hFzN;Ϝ5g^͚5[hͱUF& PT7ڰ!!$o5qs[ҩS7fg5I-sgZy{h; ֬^=qҤ5k~6l% !90!,ttL82!&==ܿY&>>H$ҥ=<<ڴ4sTv@\Ȝ# z=c ;;JjYc?M .]zጌ iӜT w-;@zժvm6!DUkk4`w%(1Z&ĥLDS""N({ӯII&#ƌ&S"((h۶mz-[޽;sLҁܻw/&&`/^nr  {OO/]"%KDK~_ R.QI{)yΎng*r'O<Ð}SDgNAB?{5kp# 5jbŊ#GT.pׯlٲ@Xtu-EQ&˨ʦ!㡣>_zQraɔ)?w>Сʻ7Wyi)!$U"a ?$;yvkW+W*BH۷ !]][z{+*O5**LU¬>-̟OML 39?z+ʯ?;<|֩ӥkcΝ{8p36G]TmBZtsHqBtF6jL4!zRGV}(t/ZP./p֭Uj'ىD$<+ŤL #<{LuV\83^{o-H8f|aLL !dĈᄐ۷m#G\BHn] !B<)dN$/u[E""tW`ј|)/ǏB_eK4h]`L&[`|CYGBmmmO:sBHffӧ%AT. ![nr)9gO$ٺgDV ]effΜ52z( *߼r*!Ûo2S7&2s,BȈ4ܝW__puڭ[7Ν?O6+۹MyQ"bp/{v7[mmY᯿ݲyl|g( =3G;/mwowWFG5Zn3ǘ u#5jh>~={u_}{»+ _x! {u@ pwwoѢ!$0 H?yWe樶r+]%K3СÇش~1[NjbTf/tOj&M~ON_+sgP;Y[3(4bvn֩`e,:TQL0D0Ug˙`Gs+=̟E'+2^KdSUڍ_r$0 P/ +JY/L}-D `^e؝TkȫLQ[]ˍ1V_*/St9r3ǘ,w6n{x}f6/~c3vn0 wn9`.c/X=$`U@ X-U@ V/Xٹ*rg̨W-M!fkf11YmY5s|1f3;Y5Z.wnT H|* _ "S`Δw*f_!"LYΌ^E'H|tKF\#fVZn冘wNc`~t|2 ƁۀY5s|1fs;Y,]~*= ;R$`BJXt0xIA~{i ;2/0$K|Ny| I*r_A |?tZr_S@ !^BO }M_n^/61rY3,r_S/ d s@GGkRUYR˻\@Q|shÆܗoKH`Q.k$ͱUI21q͕+:;5o7))G*0'ZZz>)'RR:$ܗݥg_繧O=xPn]֭}xx<.(y&WgRU f{X[-#ˮ%HWt\޽)la\JO?߸lM#=SEq/T_d=޽k?޷oRjɒιZfdʕz+K,sqW/ݣB1f0&+ݹ ,;>}[>!\NSNJFDs6-mݵkKÐӓB-^|ztpu8̙2}WvLj[xz FqwLBq?/G3_nCaGL::@)Da' w߾':oca'M kW|s씈v2eK!E M)(wvMpa $`(9[*G>zYeUcCCYʽ~mU_"dJDzLW+m1Q*x }0)ҐJ'!>y@u/ikJ'!~/hT~g@gH|5}%菕ƍ1[[-7~ƌښ2+2/ҭ?cFqj?s#kfϾln#,vn37:܆`Tu _j"/,PSɵb`Kn`{#yT~;qYA_)s|Uz|}gt[3gV #!wM F|-?ypMHH !7nlӦ Sxŋ1 !C:d ٳ/fK^x>zm۶}!Ǐ뭷===/^|Y;hiӦQF6mb {l2BȺuԳ^BȢEL\"HƏb ˗?^"zyy988|eeeL\.9s[XXX $` wСJ'٪Rn[VVgϞ#F9rlbG7oo߾gϞE۴iS'n߾=??}'B;eʔ̌ N69oMNNrÇSSSw!a222?~߳Wa14M2{̙fdd|Ly._agg7cƌjH|>ܭ[7X\xթS[ݿxxo-bcc3b>lذ1cƈDrO^>p@vF NINNҥT*7oǙs6o޼j*___:881믿fն|rOOOOO˗o۶)_,Xwޚ\1Uz;w._>S>tЏ?8--MP3 j׮ND"QII s]iyMpCѣG^^^l)))2L.4P(?!;sLÆ ===˖-ZlYծ47|pZ|qƒ#FBOk.!Cv8tҥKFGGD"<|pܸqlQ&O7uTyK,)))IKK?~<{*qqqs.}N6ϟ?:uaØǏ72,))w߭^f/€R*>Ǐ7i҄]CH~ݴiѣ3k;$''ϝ;fܼyٳәs~m۶ήm۶l᯿:m4Ν;+|Mƍ7oTn]pÆ T*m׮].]ؓWIttt˖-ه7k, mΜ9L_|Ѿ}]6lE+u|а6111-Z0u `/?A-jQڪ҄k#~ƌZsݻwa |0 `ع ?H|* _ H|* vnC-jQkE3jͽ;5m``ع $sU@ VAd V/X($:Lu_h&600 `5EC^ `6ԢE-jsUm`<`0 ;9D mi.'rV/X$`U@ V/X$`sjQZԢع,)2)/e~vnTTT&H5u,'F Ŧ,a60K yffbΝ;֫O sWQQu ,_032ի]v gXA,n$ϝw0uD _nsCӹ9uLQ֭[QՇ̏B*b\i1c抦iS/A?KKf(?H| e/iBA4MhYL)U@ `@ BPЊhZQVVRhNY)5mE-jQZb6DW'zۄ_ Xbتt%TB&ͫmzsۺΘ\.tw-`KyYΘ:U\.J lkk#WдBW$-Y%Szwk]P(SΠA̙cooTd[_l}ٹ ˙w;| 9%oy]P"8/ZkO'?-7_74+OzݏL&d%%%LNN㏍?_;vX}777oȐN6uP{b\;wm_¢R{!]E1WZOrll%כPqi9@ 4i~۷oJՃ~m޽{gddccc###6nܨ\aoo;k֬ Lu04$zN;Ϝ5g^͚5[h|{O/s%y[7o=~;E4#D[:vKQza?䓧OO>)?|'|2o޼Ǐ9s)?~ܹs׮]w^|ի'NfOÆ [d1!z~EHrW,zSʔ?}^0f^\m_Uyzyl;z^w~W~:s`ggׯrW^ݵkWBHz~7_~ %[.22rlۇ IDATܹzF|A ^k\T 1@EQ66)\.8g*Eӄ^?̗ݸ]̱}LP(hB+hEyuLվ%5^rʑ#% !D<44䯿SUXX؁G}G-!.^8Wi7"CUO jZq\۾ڴIrBBABuٹS+7şWKY`ׯa/7oO>lʔ)gYYǎ˔Yf޽Ӄ ªPZԢ5HmϨ޽x323>|3*ІՅ\.////)))..ڿUCϔG2"Ԃ2{ ٦#]͛7׮]gAFϖkfͪ]N߾ڷoϔwq-7n \hј1cm;BR=JL- nnn-""E`vn7abyy9r9e2rJj9{eff ˋ7} vnfמZ*Ԑ@@X * fWP0YL&#QSV':;ظ8d<})UK߿i8T6BH$ ED"Xd4M;;;ao~=ߠ~"7)3EQH|-_0S4!I_kFӄ.ҔҘwiE6f *jѩ'+VcV)9⠷*տh+DbQ.0t6O <\tl^kZ4iBB|6ohp!U OWu:C{ $-ٌ_rPZZr!!!!!^lkSvfh}u_HJsBQA1[5M+ׄDB4vk66:ugo>V؊`I^K|r]~Pu=B iZ ;eznx6e%r\$__g[P|={߿ 9M;zj}A"+!_&sed '^z}ںD+]A?N}W^0qL&{mC3BQ...ϳ*̒de֢(+N-{id&={6v~T V ~!* <@T*ݿ?>>~I*ôB0$$r3RΟKhԤ1Mu934u}-[L-VV!QӗICM"zk5ڶ6onz8;/dhmd0aЪpøҚ6$@\XO`ꗐiniI%Qcb.ꮤPຠ(sApgws̹],,2`yR{խ#>_,TFJB9š;㩩K,.ߜxvQli3 Qӧ+7gff._'azCCC[1玴L nr6j+LOO߸y>yAԯ+++/pntj:%˟σ67WsJV6h˩$~}jJZ iv^v|z& /AP4wΩ[b# aQqfAEӦ!JOvvZE1^`\* $Sp ~p3ʛlsoQpl$/+nmm޻{bUҐn˃sY?= hwn/v訆;6>٭:3 v|~akQZl.IENDB`oregano-0.84.41/data/help/C/oregano/figures/oregano-export.png0000644000175000017500000005245613413640652023152 0ustar rubenrubenPNG  IHDRJsBITOtEXtSoftwaregnome-screenshot> IDATxwXIITTAQ{YPTzXzA,JT*HG^! =y|3nΐpG|Mو?Ox=pŌ*o=p93BK:Bj03Bh !V!tY"I8[\%$WR^]ZQ.6T]yoۚpPї谻O",B()R5pz, !Ծ H5 ͯf`f=dWIjkMe [}o#"?|N>HE>}*8r+֮^'a{|=znbҌ#BH}.&i\iWMED d^x )f^tŁGg\kz43^ _awPhBh+/ObAHޘdٗݦP( B&#D"8a8r 0L⠡?9}b6uB*ffa/B]:e\]SL752PRVGHM+#} v,bYr+j\.Տ#^xr axQ"E^5 !xߝ=ĄTVRP)4*LbŸT siޯ{PKn䕞[N6A_ql_ۃ^,߇ѦKGocnjND3}uBeWCr Ÿ}[詓SSyͦћpxհ_xy$s_2LQiT*BI$ øf0S+Y4Bz8u/z}uw;wzwW{IlNf[~&X}G@dQIDj<=9x WOy3ť_xu8z#SW.C| v\ªo!B?ӷww}D" Fko2DөT*JPVSSd1\.Jtz֭C:\{KW'zߢؾIЍhGLRdLb;Vq'1YL2DPdDWM)'ȴAvŅ?Od4UWG}54i ?Odd]]my͠QULv$w4wk Φ uI߷me$Yu|]fQS\C=t۷..9xEv@!9f뙈^V Aem=Q o&=r Q;qdJF$hvD෿]v%E%EO&>lڠAnݼrN|r>b&zz^޷oA$l6Bh۶m đ=KRt:1+**j6;:YZ{3g^zU @!$m߾}rC'M6ibwެٳdr@Y"e=gmڴٲy3BhY4DEcF>lXTTիݻwׄ 5{L8Яo_"Ub"B;ά,Y4$Ft ölzر(9gΚM&Ο?-x=3#m۶2j$MϽdBmT D2c,2|Evpp@EȺ(*wӧJMMe2շnF=n3f.^~::q㦷ӧOW\4x, Bɹ_?Tt钺9Y,BhSqAȊ MMM7W 6Ȣ($?/opԚ/^)@aAx PXzpb,Hd2FSRRbޒHeaa˕wsDBWb‚˕["l+7SD~H$yL._rb2̌'a54tutM-&٠q\,*ڱc'*,gDfcX~gmmmy7pkpPL os.). $$$XY['$$'RTց9`8'$ 80==} [ObU5 zb-NpBB7lX_ZZa'$$\U-&޽u=^JZZS7g Kkx3gq=lTPPP>}LLLs} ǿoܸqWQQ?Ν;6n;?nr oO/а0dTt3."""P}ݻq .;sLbV|| vڕk׮uֽzY@};x7L;2yʍ@ޤt[x{{{&cc/_ޑψ̗.]vtte9us8e2"@Gzxx雘M>D}1ctuu) Xn]||<1+WѣNѣʕ+O>],p[|S(dkmV*斐PSS*//˛8aB^^^II)Bðx7WWEN>u1"8z\%wޝ| hY=ㅅĹB(>>O> {wPls[[EE!**!3FsqvF}REEG|}:88t'''߽big:}۶'Ob- vw^"PWW`; (8[ug-^a^11nnn!W7gQQCV۷=zMֱcGw55jٚxaaXff֭[7o|Сcgh()SBQ~~Bn/AEFFn߶)7OPdrOmmt+so &1' !dccWPPשS'1|FGN"~b l6F>}T,pT(ε7s=ݜR(g#G8 ypk&$$kVf1FlFZ9s/jjjlׯ.\8qDb֬Ys6Ϟ=Y@wfS[_)}dÆ 9kK,Yr1k /qyO87!!D"7n,'';vY&;;dΝ]vwPlDt#&N4|㿝_|W\E =^ZR,׊\e3۷wל9󫫫Bo޼0qe}]|CW.cccCx*˛XcOBh.?aMjjjW/_ѝʥK&&&W.}mż  RR ( }FspP()8S() '!ɺOq0/eR<@xKNԔw 2h\o1 +).d2U)KFYt=[p"4.q7)F{ >} U/DH$a:YXYH#Kx0 cXRm-9ǿV|A DTmprDAջtA)~a"`B^!jvL+:٠!CMHb~Ȼ!gE߽!_߽|ӧ҉qll~}}}⋹۷::ߟB$jPpȈûII^yaݻwMGCTohӦMQ  B$aiS]B E D!5 (_n"ŋIbb"+B$knڼ[>>,?5l6;11q,~" o Da~Apww8wK1 stt\h@~Q^Q>m bnظޒ2b BD.3kϞogԩӦN%~XTἔcƌ3AS<"þ1}&LHF]ܓs ͟ ##yv'Nwܛhy' .sVӇwcN}ٰ~ XGDZ`%R,T̵_xCW^y׽Kн{EFtYXSZ}CP\KSSS. Ʌq\m] i#OO:IIB]IKbb !M#xظq/ˉWJKˤ2Z1?HM1;{ܐ}mnj;lB) {@I&)R&?իV[oݶL&ZR*[ZX o޼B(--M*Shv hgߕɬz劇T ?v옝…{׿]]]GOWx0~2s/yK o7 K18/g|0ϧDBt2RoMSWr oڲ/UO_\RAx_4[9vd`(KXwvEEՍGdDɫ%]- T(:j wWN7cٺ9ʫ JtWG"y[nX\RͶsY58ZVRߵ78i2!{^5FI4..?ix ’GG?iy7&8kT^ CIJ֖'>>ҕ^(Ǎrv|jUQ/\į822:4gK|r2;o鬩@w'Of#|I>nCC $>ݫG#JkFqp1\}= 5Xv26eӧOR-:v?vt_vضsÇjjjY Em 9^8 I "[kuVjy8޾kllRVVdiB 6mg</;;m83i8ev[[:])瘘=voڦ;zt533#ozy7;Fmb@p[]<nՊ6vV,EM2y![k81sMMM$F{#F ~ț|n:-;8K$ffdnԈaD:BH|6Gw蠮߆cF< /.*楔<}6zX z:ko۩M,橵QFQ&>D3jEK]M3O8NR/]ңJk*j``8fo,+fuJK]޺?@]zEG!C{D"Rwѿ 7dhko۵{1<$ސ7~#G߻WGcs7 ~Y]8 iiq'jjjo޼zU+m޺#S{E>cG[9ӳ;v5b2>{UR^_Q6C|"/ʕKC֪uG{vy&=z:3El fYUuӛ];>* IDAT%f=}’kKO j ==Q#V!=듊J+bR̎%!6mlWP*&K|޽gjvKXԑ&*MlI譥^#F~WFz?XD޼yݫwddfN*:%%%1; Oξ18Bqqt:ξ+PW=hhܸ ?_|V3%5͝7ݻzۃ8)۪ˊY=\yz}7˼oV;5*U3fݫK/_+j(T$;ZƗd;WEη8l6#_][6cƎ3vB(ޝEfGG!g1:ϙ1kC2XZbEL%m&O 8sk׮5ib &~hƟ[i"=Y,&Lox`!U/sQB.tYqDtl/-)j7mQO^ǚ ,^L NvV1/E%Y::?l%Ǫc8᝗K|yY7ąKkhj#911o/f>rLxh?>r hkg~G"մśŪ6zuEUebe-ZG GV6v.9~Gﭛ־k\l$;ZƗd;`8wpw%?9d`$^JRRҐjjbJy7C޺YTXp>d[ʻ_b_"*)H_pnfٿSS֬\Sv2iݺ_sfN۷VUk~߶y[7E<nU̫=̫ob)\:N$2##㺫з_oJEm|߻sob ?(&N0vTҫ㉯&5a%:]\ R"_!\+V9vJ]]FM uƴutuXE?td;mѝ`Ѧʔ0(LϓPO7Sgۻrb ú:8]H|~_qy8/9zlUUsr?}70\dF vguKcs8::N. ]V*ϙ`ٹ>2._9p1 f>t`B|]ԙu8x322LLMhQ_퐙Sr|Q'mؠNiSw;~B4Owf76#h(#Vg zW =/*fM`RU!Fv+HW/_c]{?AL sy1?2" `RY7d]E>vxg&&6yws keM626i/ۜ2>J ?j ]sxc8('-&VVҨy61ы9\2 )(%t2bhJMhɸR?iv[xkxX]l:Ѩ~as7i9c3Fwh-X[xkVԪ<\ dh[?mZɝt?+x8(9 WAz{5~sN"!=u%=u96EW(,o7 o M- M-y1~ޖLn5h4^6_+B]R\TR\ai/_1s%VZ͞5 !*xI M--m]/_WެYgwbxF2_55렡0r\z|~b`ho`8hp^uOx36##ڵkiId9rtt%DG=1g/\c:"իW}%$$  8{Ⴧ>}tUUUXx1BÇKJ|uF 6ɓdg!ǎ)qTq>Nw?t033c5s'߿?B}Inn1E&}սѣ.]: s\m] i#~9*""kB3f"N:9db֠_xî]"""XYdDkXo{w{E(JaA@ y =B(11˻/oYG)!r?-[dO"=##cI;jjik"JKu=ٳ2Md?΋mPRkP++bں?#%11I҅ҪU+%&߼y\OΕ,Y$RfϙTTXyI$}oՊ?& }k /Z$Z<ß>~2txq/ tmIOOwvnnnȓ|[[ZNfs~Њw?R2zԨ+V{NYYs w3 C :|JP7  ’5ØL0 HT D) M-Q/i"ћU*-.}yv`@逳nݼ[YQasD--w#zV।9us Pl9zjYBhii mB(Lj72B#=-O/а0KKKb2*:YTXDD ~r8zV2ih7)gt:njaYݜCCJBOѽ¾|(^JD3ooo`ٴӋKJt>}<zXm߾y@'fֲtu=jjj֯_okkkkk~>j$QirsKHHAM0!//!aX||+YYqq/~p {XX~~s>IIIٽg#fX{Ϟ;vx{{ر!->.F***QQ]i4stt4B۷**aig:}۶'Oo4С/_Ь2BaF F1zY7:<=CBB11nnn!W7gQQHo ;򾫩UWWoXbRe.MYSKw~ׅghhB(*:!J\~GFFzyyӰlO-,/*,(.*,).*.*lP (ro*9/!$^19/Ä9GYXX0̔99VV!ܼN:I͛!X#Z&97MfiyLBhÆ ӦMИ6mچ Bc9us٢Jܵ{O7ggD |QgIx FTT/_v7oު@JtzN "ܹׯ_޹s'aee_Y,xwBngΜ?3ƍ_C<sww8pe玝,1sFWOgL6KٗAmT{{x!>}yrd2- I>ZҨ: 澊}9!гwb1!h:Rr1 wtҝLpfWWWI>@ 1l-7  ‚@aAx PX(,E)ѽB@-Y_SS32KJBZf6v*T4 ޔJjkk{{y[t{ ~R ,cǧLz?8ZO')UJ551ٺuKRkYY'N226;n\qWBBB<^ObXY9{k |ɹԺs*dgl۾{&L8oܴ)6l$>zz͛6ffe޺y#*:Z`3f:ybZ?Z 9=1RTn!AwmlEm"0^}3gee6w%&ۻwocGΝs綩I G= %T9yaA~;%'3+gQIi)^gCl R7B133ۿ?$D ĹsuuEQaAAgI!wsuȌy\ɹT*Tݎْ-]E&y666Ϟ -K.qUbɹT)ð+W8P`VΜ9d2SSSW\K_lU###Y,Vff y#p˖5phqSjݹOG1tpq@#/󏑱8'Mϝ;6ndlb:r(V =r!&%=T ‚RPX7  ‚@aAx PX(,E)*O ?fMsOCS6vZHtOZzxx雘M>6Ԍu-"9use9::]|WZ ǃ߹;8)W_)U@Ǐ RBwʌUUU]|>e괾o^'ege{m"G9uDNv֩S'D1aa{z $%%e=Czk}/w>b YY!Aw͘]]]%s M1;v޾DN:|bck1'!o`0Vk3 Z3d{v[[YEEE}<<߾&S(:t}?xW>jjj36t/[=x{zkoLbRB$~RWGLOwl~U#cGsСzkS c0 K{ZX_TXP\TXR\DoM$7TQ')wn+))!$\!lR"=&&wrcmmݠZ?ާA@"4SzJcqO>~͚5.lP-]i7oUWWWWWGDD= #** S* Q=1{l?m?.7ks504=gΊ+ҠZ;gaٹc'}f̜Qo{6n0o-mx0zJ?)=9I(,o7  ‚@aAx PX ou߿w>{9/["` +&75j8qbʻwǏ߹QF7=0d'NYp9۶m۶my.??:&DGT^ /?ի=]zNNݮ]^wY KW  D;?qܸ7x)!ƻn'sI/xaSJ@$?|HGגY&7[hiimݲ!t;FbB} w!6M&mn!ɟ2!MIx5 !tuīW!FILR(.d2ɔTIJNyMSJ@$͛ף{#G>WEEEEEɓ?޳GyϜ9b>| JKK(y󖭅[nC-Y)dJtzupe.sKӉ<'OӧϟvΛ`E%=z <3n699ǎ0`@SJ@ɧF "l ԟ9@r(,y pZ@C ‚@aAx PX(,o7  ‚@aAx PX(,o<ǰښڊ/_J|)+b28˨:h^{J{ћWS*lK{[wZ׊%%!M -3ssk;V*T1Çܸy3+30w5WS1JZ--}7S/XZZwޛ6}zٳC!R&LR44|›U*/x@KKko B>F< xu: QC0Yfnn~ߦ555q: ȍ#/ӧǎO:~pp3^ԌNtSSrFW5$cLLL[XXvy{{]r!9'n ='n/\Z<ZǏҖZdz?*jjbu떤'Nddl?vܸ󆄄xzywxu>sejhjᩧobj6mR.]vtte9us8wnu^aaɘ˗EEER""y{ oQPKN; ǃ߹;8-$rof-+==MWۣfׯq㩦>MFxUk:tǏ70AyŸ>~T\T()s#8Nvvζۻw.0k„M{bnnaF"G׬ݼicfV歛7 >c橓'fL.a!ݻwgeeŪF ;}TNv։E/7Pyyyn^ JJJBǻ@Éiaa{z $%%e=nƑCxX{߽gOЎ;jjjKJJv؁K cJO5u)߽NNNt:[n{O8٠<;w!6JA|G']{A 䉎z֫W/eemnܰ!<}{VMMM;ʿk;wnխWTNvqq۷m{ ^:׷n***QQ]i4stt4B۷***+afhhx˗_2BaF F1zY*&\]7,y:PqPѩ ? GGȓ3LCSШH{^Bݳw￁MMLfU&Bcǎjjjoу7gyyz"bcY\\EE!""#.EU$JbRe.i4y<ׯ_O:^W'\j"_9(!!!Νա;IDATkE%yꚑ bʔN^^ahW7W1wddg+0,}jaA~QaAqQaIqLP?" ?klbaӎm:<9!**K.KX,@JRRҲKdrbb"/&3^rye7nATbX[[&cf`2)))srvuI${{97MfiyLBhÆ ӦMИ6mچ Bc9usB_`~zze޿fCCs͝f͚x6fy I_ o%~0,33sʕաC3g2+Wҗ-[jH9Boܲe[ܢc׬MHH 5Eܵ{O7ggℎB8;9zYx FTT/_v7oުߠ%'V;u\_$LEEeΝ_~Ν;UTT> ++bgg_o+)ݹ}K_OF&vǎ9s&1wر/;wܹ-[6z($KQRG΍oo 6`8'acdl2gIys玍75wGݻG=T.26l貥KgΚehd#r؜/e_BQi`h1ixʩfd -j>G~zFa̘5U\샐y!]S7g Iq;9Y7\.0{Gn. ! 8lvuu*b|#ݜa(y8b ˀ@aAx PX(,o7  ‚@aAx PX(,o<_ৃq.IxB!S(Fo$fs?}J~LZevmYvldbB`n ޘr43-*,LH06@4flvvfzӧ*Ș,b -%+**޽{@GGgذkVVUUwAB kp=MM9 F3dIb=QiZ[k555C+//y#0';aÆʻi"WeFF&(Ky-B[Dx9rctCf̎=Fd{5VsNݜuzNI^HfkQ]`&sr4pn-"o߹`|ą ܺ}KuGWE9|9YNܷo_PPP# i ȰHlDi]H;97種@pِES[ʭ5)۷M,PC:1+Mkmfflff*4TĨjjjR,&j'Ç ;v@G A|WQQ oVZZ!]QHC5種HE… Җ,]f333.[!}DM7/c>^!]׬YhFP9+)ZDxj;Æ004>7UU;wn+++ppt426Yf%y Zp9s fϙbŊC4jQ]Ix,A2YZ2b2]hzC1uܝ75U4Zi͘Y./Qm$tNM]*(nPةEmX>L&̍i'(S6_㠧UX5ۑQ)*́|bNtڼKG_9\<оm+.W8bYlI4LhJJ¯y^{s1|ў;:N>Wr8B^PifnYXewgNû&#C˗\.k@ Ύmg㱇U?WT||b$.W[TaٺOgYÛb~xگ=}&h90 224bX/{GU)4OU-Ӵ-Wg'jfXϞ <ѱ9@FF:wn-\Dp77QR?Yv`8>+g^JYY[[9+@rffdI"uΖa#()S8QZ֛k ={cLWƸ\.B%Y,&I7e㵪*L\1ZN-jࢳxEXOH S8ιjO3YlI5,%R( @#(T{V oLaI$Z992; -[TU/Co2l&I..{mjjlEכ洴;ߺuK,k4/3olΝ;ju\\ ޳gOkk+:k2rrr8N```ffWqԔ7<<"(00Aƹ bzz~rw.=;;cccj@ `2>&&ٳXmƕ+Wz}ZZ~`w-o2hnnJfe2ً/nZ^^MUVV?~||?((t2ĉccc]]]x{{{EEE]]ls΃;CUKKKiiA\~չ#Jŋ111X ǻC7l6KPx<^eeett4:~ɚt 5 6АHP.\ ***yX3BpޠP(4؏Oj~_M~&)+++$$nŦmۆms\뇯MMM]x( X,_dd˗/߷Z[[}]' MOOL/V|>'))飳_eddք:kC_MlA&˭|I5Mtww$F{,Baµk~=~* ƓŘ|qmm{r9ǣR2䅋:P(Zx$VjAȓҗ^InQ*Je^^.Vܾ}{[5 |'ěXNOɓѣGvl6߼y3/O d2>|foqBP|jZow&<&Tqqh4v( <)))jC7NVUURSox'OV^PuXXx\\RYSXxUj/]!8pF{)Bk.t|._؈ 3g< ft y'_mhkkcXXmQQQ7nV7TUUXWMn|lt}6/?7*eUYYqhJ2ֈt:g@ƐEf'VVy7-7oV IYW^޽7MK^A]Hu Y 78N<瀆ě@h4ڛ7օLBbE>Bo R9oץ.w# SC\7d DAхĿ+ ݴF"|9{Nڱ]ѧ;Cy!#q@F'==IewNs8 „Аpr!7QPTAYo}.Ѩ4btrob3 |9@CVbI@ -7 ҂x@ZoH iA -7 ҂x@ZoH iA -7guTi!_ſ|ʷǏIENDB`oregano-0.84.41/data/help/C/oregano/oregano-C.omf0000644000175000017500000000161613413640652020334 0ustar rubenruben rmarkie@fi.uba.ar (Ricardo Markiewicz) Marc Lorber Lorber.Marc@wanadoo.fr Oregano User Guide 2002-11-18 User Guide for oregano user's guide oregano-0.84.41/data/help/C/oregano/planner-C.omf0000644000175000017500000000206213413640652020335 0ustar rubenruben acs@barrapunto.com (Alvaro del Castillo) Kurt Maute (kmaute@yahoo.com) kmaute@yahoo.com (Kurt Maute) sorrodp@alum.wpi.edu (Pedro Soria-Rodriguez) Planner User Guide 2002-11-18 User Guide for Planner user's guide oregano-0.84.41/data/mime/0000755000175000017500000000000013413640652014176 5ustar rubenrubenoregano-0.84.41/data/mime/oregano.png0000644000175000017500000000375713413640652016352 0ustar rubenrubenPNG  IHDR00WgAMA a pHYs  ~IDATx[hUW-'LKn5XJ:q}Tha)C1S0A f^*30N*hVVT,&1hФI9{siR6,cX2 ӶdPrG@۷%[_A,+W"LbdM UUZH:eqK @m6ZZZBʔ}IR$DAܹk @ee& *cہ*1"[j%PVVNCC叺^&%H8  ٱ㷩/OXz* `llBxH\L\9~tvHIIb%@`6d֭LOOH$p]q<!|~yqoSs22oDC-EϣIFt'8\pGH966(47d[甉lAW&Iʭrܙ t؊EgϞe޽ܻwN^H +O8͛^oE~ڼBaΛ#z?mmmܽ{7g~ [[[s-CT};;൧^Hlƾ os>9.ZCfϿBI& $gz[.^7#9.bԩSlڴ)QiB갢Iti\|\Z !L&qe,---| /ҥKr?*8yCGGGtBkkktooz[C,+I4Y2*>$Y0IENDB`oregano-0.84.41/data/mime/oregano.svg0000644000175000017500000010476513413640652016366 0ustar rubenruben ]> Adobe PDF library 6.66 2004-09-25T17:14:19-03:00 2004-09-28T15:08:54Z Illustrator 2004-09-25T17:22:43-03:00 JPEG 256 224 /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA4AEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYqslmihjMkrrHGv2nchQPmTirHtR8/eXrOqxytdyD9mEVX/gzRfurkxjLIQLFtR/MnV56 rZRJaIejf3j/AHsOP/C5YMYZiASO38w6rHqcGoyXDzzQNyAkYkEHZl9gRttkuEVSaevaXqVrqVlH eWzco5B07q3dW9xmORTURSLwIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdiqlcXNvbxmW4lSGMdXkYKv3nGlY9qP5g6BaVWF3u5B2iHw192ag+6uTGMshAsX1H8yNZuKr Zolmh6EfvH+9hx/4XLBjDMQDGrzUL69fnd3Ek7djIxanyr0yYFMqY7rvnPytoKk6rqUFs4FfQLc5 SPaJOTn7sBkAgkB5xr//ADkTpkPKLQtOkunFQLi6PpR17EIvJmHzK5WcncxM2G2f54+cj5htL/UJ 1bTopKz6dAixxtGwKtStXJANV5Md8jxm2PEX1L5H87R2qQahZSi70m9VXKqdmU9HWvRh7/I5bICQ bCLexWV7a3trHdWsgkhkFVYfqPgRlBFNJCvgV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KoW91PTrFeV3cxwDqA7AE/IdT9GEAlIDHNQ/MnRYKraRyXjjoQPTT72+L/hcmMZZCBYzq H5h6/c1WApaR/wDFa8mp7s1fwAyYxhkIBjtzd3V1J6lzM80n80jFj+OTpkx3XfPHlLQgw1TVIIJV 624b1Jv+RScn/DAZAIJDznXf+citNi5R6Hpsly+4We6YRJXxCJyZh8yuVnJ3MTN5xr/5seeta5LN qLWlu3/HvZ/uF+XJT6hH+sxyBkSwMixe0s77ULtLazglu7yYn04IUaWVzSpoqgsT3yKGYXn5P+b9 M8q3nmXWY49Ns7RUYW8rcriT1XWNKRpyCfE4B5sCPDJnGQLKaYvpfl/XNWhvZtMsZ7yHTYDdX8kK M6wwr1kkIHwqMghmn5U/mhL5Xuv0dqTNLoNw1T1Zrdz1kQd1P7S/SN+s4SplGVPqjyr5un00JdWM i3Wn3Kh+AasbqwqHRhWhp3y0xBbCLep6H5l0vWYq20nGdRWS3fZ1+juPcZTKJDUY0muRQ7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYqpzXFvAnOeVIk/mdgo+84qk17528t2lQbsTuP2YAZK/7IfD+O SECyESx++/NAbrYWXyknb/jRP+asmMTIQY7f+dPMd7UNdtCh/Yg/dj7x8X45MQAZCISSWUktJK9T uzux+8knJJYnrn5peRdG5Lc6rFNMK/uLX9+9R2Pp1VT/AKxGRMwEGQee67/zkYfij0LSv9W4vW/5 lRn/AI3yByMTN55rv5m+eNa5Ld6rLHAxP+j2x9COh7ER8Sw/1icgZEsDIsbtrW6u7hLe2ie4uZTx jhiUu7MeyqtSTkUM/wDL35D/AJiawFkls00q3cchJfv6bdaU9JQ8qn/WUZZHFIpES9R8uf8AONfl SyKy63dz6vKDvCv+iwEEdCELSkjxEg+WXx046shF7T5O/LW0tIBFpWnQaRYNx9R44ljaTiKAmgDS Gn7TffhM4w5JsBkfmr8p/KnmjQoND1UXB06O4S6uIoZPSNy0YYKkzgc+FW5UQruBmNOZlzYE2nGi eVfL3lfRxp3l7TILHT46l7SBAPUBFGLk1Z3p3YknKyofH3/ORn5CN5Vun82+VoDL5RvW53EEYr9R lc/Zp2hY/ZP7J+E/s1IKHn/5ffmrrPlJhaMv13R3bk9o5IaOvVoW/ZPiDsfbrkozpkJU+ivKHnfR 9ftk1HQ7w+rFQvGDwnhY9nWtR8+h7HLwQWwEF635Z/MCOcpaauRHNsEu+iN/r/yn36fLK5Y+5hKH czYEEVG4PQ5UwbxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvEtR1rUtQuXnubh2LEkJyPFR4KOgGZIAD eAx7zF5r0PQoVudbv0tVkJEZkLM7kbniqhnansMSQFJpJD+bP5di3M/6bh4Dtxl5/wDIvhz/AAwc YRxBjmrf85B+UbYMun211qEg+y3EQxn/AGTkv/wmROQMeNhGs/8AOQXm275Jptvb6bGfsvT15R/s n+D/AITInIUGZYJrPmvzJrRJ1TUri7UmvpSSH0wfaMUQfQMgTbElD6Voms6vOYNKsbi/mUAtHbRP KVBNKtwBoPc4gWh6L5f/AOcdfPeosr6kbfR4OQ5es4mm4kV5LHDyX6GdctjhkWXCXpXl/wD5xw8k 2AV9VluNYnAIdXY28BPZlSI+oPpkOWx046p4Xp/l/wApWFhEbbQNJito2I5raQqgYgUq5QCp92y3 0x8mWwZZY+R9Smo1062ydx9t/uG345XLOByQZMm03yxpNhR1i9aYf7tl+I19h0GY8ssiwMk2ytDs VdirH9Vt7WEz2l9At1oupK0dzayKHj+MUdSpqCGHbKyeE+TMbh8nfnd/zi/qegvc+ZPI8Tal5aYG ebT0Je4tF6twqS00Q8R8SjrWhbLGDwnR9a1TRr+O/wBMuXtbuL7MiHt3VgdmU9wdsQVfQv5c/nDp vmT09O1ThY63sEFaQ3B/4rJ+y3+Qfor2vjO22Mre3eV/Ot3pRW2uuVxp/QL1eP8A1K9v8nGULWUb em2d7a3tulzayCWFxVXX/PY5SRTUQr4FdirsVdirsVdirsVdirsVdirsVeOebNJbTNbuIQtIZCZY D24Oa0H+qajMiJsN0TYfOX/OR1lcjUdGvtzavDLAOtFkRgx+lg34ZXk5sJvG8rYOxVln5a+VfLXm jzHFpOu6+nl9Jiot55YuccrE0MRl5BYWP7LMCv4AkUr6x8uf84neRtI4SSRJqU6kkTXzNOCD2MQE cJ9qplgMB0ZbPQ7D8tLKyto7aCdLe2iHGK3t4VjjRR2VQaAfRk/HrkE8SZQ+RtHShkeWU9wWAH/C gH8cBzyRxJjbeXtFt947OOo6FxzP/D8srOSR6ospgqqoAUAAdAOmQQkHn7znpvkvyhqfmXUQXt9P i5rCpo0krEJFGp8XdgK9uuKvmTQPKv8AzkD+dU8XmTVdak0HytNIGt4I5pbZGhDb/VoIg3Kg2Ekv XxOKszP+PPyq8+aRoR1mTW9J8wmSPQ3u5CBJNAB/oNzGS0cRfmqxTwqvxEc1ZaqFXvei6tZ6xpNn qtmWNrexJNEHHFwHFeLr+yy9GHY4qjcVQ9/Zpd2rwN1YVVvBh0OCQsJBpjFhqdzpszQuC0YYiSI9 iNiRlEZGLYRbx/8AO3/nGrSvNsM/mnyGkdprprJeaUKRw3TdSUGwimP/AALexqxvBtrIp8hXlnfa fey2l5DJa3trIY54JVMckciGhVlNCrAjCh7B+WX51tH6OjeaZeUeyW2qud17BZz3H+X/AMF45bCf ezjJ9C+XvMl7pE4ntXElvJQyQk1R18RTofAjLJRBZkW9X0XXLDWLQXFo+4oJYj9tCezD+OY8o01E UmGBDsVdirsVdirsVdirsVdirsVSDzl5eGr6YTEv+m29XgPdv5k/2Xb3ycJUWUTT5/8AzE8or5n8 sXWl0C3i/vrJ224zx149enIVQ+xy2QsNkhYfJ08E0E0kEyGOaJikkbCjKymhUg9CDmO0qeKuxV9L f843/wDOR8+mT2vkzznd8tIakOk6tMd7U9Egmc9YT0Vj9jofh+yq+vQQRUbg4q3irsVdirxz/nLL TtQvfyav2swWW0uba5u0UVJgV+J+hWdWPsMVS789/wA65Pyu0jy9o3lexR2vIUa3nYfuIrK34IEi 2Kl2WgGxCjehqMVeYeQbrz/+dn5waT5y1mD6n5Y8sTpdxlQyWsAt3EqQxu395K8iKZG8PAcVxV9P /l7R/KlvcovCC/nvL+1UilLe9vJrmDban7qVcVZJirsVY55lsOLreIPhf4Zf9bsfpynJHq2QKUWl 5cWkolhbi3cdiPAjKwaZkWxH83fyU8t/mpYNf2Rj0vzlbx0hvDUJMFHwx3AUEsnYOByX3GxyIytq MafE/mXyzrvlnWrnRdcs5LHUbVuMsEgpt2ZT0ZG6qw2I6ZJizf8ALD83bvy68WlawzXGhEhY33aS 2r3Wm7J4r2/Z8DOE6ZRlT6T0HX5ITBqmk3KvHKoeKVDyjkRt96bMDlxAIbeb1zy15ostbt/hpFeR is1uTUjtyU91/VlEo01SjSdZFi7FXYq7FXYq7FXYq7FXYq7FXm/5heXfqtz+lbZaQXDUuFHRZT+1 8n/X88uxy6NkC+Wvz48hCGT/ABXp8dI5SseqIvQOdkmp/lfZb3p4nBkj1RMdXjGVMEZo8FlPq9jB fu0djLcRJdSR0DrEzgOy1DCoWtNsVZP+aP5Xa/8Al7r76bqI9W0dm+o3yiiSotD0/ZYBhUfdtkjG k0+hf+cWfz5bUI7fyB5nuK3sS8NBv5WNZkUf7yyMT9tR/dnuPh6gVih9OYq7FWmZUUsxCqoqWOwA xVjWsX8erxyaRHEs1neK0FwsihlkjkBV1Kn9kqd8pM7NBsEa5sQ1H8pdQGkw+X2isPNPlixdZtGs dYlmtLyweM1jjivoI7oyRL9lQ8XLj8LMw2y5rZIfLfmTW7dbHzAbLTNBACzaHpTSTCdB/uqa6kjt j6J/ajSFeQ2LcSVKrMFVVUKoCqooqjYADsMVU7q7tbS3e5u5kt7eIcpJpWCIo8WZiAMIBPJIFvPd d/5yA/LPSWaNL99SmQ0ZLGMyD6JHMcR+h8yYaPIelNscEixHUv8AnKLyxPHJBDol5JC4IDyPFG3X Y8QZB79ct/k6RG5DYNMe9IYP+cgNBZv3+mXUa+MZjc/cSmUnsqfQhs8Esk0T84PJN7Mnp6ibG4qO AulMVD/r7xj6WzHnocsd6v3MDiKb/mF+XflL82/Ly2140dtrsKE6TrcIVyO/EkEepEx+0lfcUOVx l0PNx5Rp8Red/JHmLyV5iuNB163MF5Aao4qY5oyTxliag5I1Nj9BoQRk2Cd/lr+aGoeUrkWtxyut Dmas1tWrREneSGvfxXofxyUZUyjKn03oWuwXMNtq+j3QkicCS3uIj/n8iD8jl+xDbzeueVPN9vrM Yt5qRaii1dOiuB1ZP4jKZQpqlGmR5Bi7FXYq7FXYq7FXYq7FXYqoX1lb31nLaXC8oZlKuPn3HuOo wg0oLxDzJ5fSKS90XUYxNC6tFKpHwyRuKV/2SnMgbhv5h8geefKdz5W8x3OlS1aFT6lnMf8AdkDE 8G+fY+4OY8hRaSKSDAh97apoOkfmf+Tmi6nqMYna906CW6dac0l9MCSRG3o8UvKh8K122y3GQfSW Q7nxV5t8r615K8zvp9wzR3Fq6z2N5HVOaBqxTRnsajt0YU7ZCUTE0UEPtn/nHj85ofzE8sfVtQdU 80aSqpqUWw9ZOiXSDwfo4HRvYrkUPWSQoJJoBuSfDFWK6zrDXbmGE0tlP/Bkdz7ZjznbbGNK3li2 53MlwRtEOK/Nv7MliG6JlkuXNbsVea/mn+dejeS1bT7NV1HzAy1FqD+7gBHwtOw+8INz7VBzK0+l OTc7RbsWEy36Plnzn+Y3mXzNeGbWr6S8cEmK1U8YIq9kjX4V+dK+ObOIhj2iHLAjHYJT5c0LzN5q 1u30fSLeSW5uGAIRW4xoWCtLIwB4ovL4mOV5MxAs7MZTLO/Mf5iWfke9byv5CtrT0tNb0dS1+6to rm5vrlNpWrKJAkIcUVV+YO+YwiZbyagL3KD822mk+bfJh8/aDZx6XqenSx2nmzSrQFIA020F5Cg2 RJW+Fl/m+ljKEjE1fuSCQaYHZTXr05DlH/M2x+jxzMxykW+BLKPLfnHzF5cuRNpN48K8gzwE8onp /Mh2+kb+Bw5cEMg9QZSiDze1x6t5H/Pbyz/hfzIi6Z5ot1L6bdihdZabvATTkpoPUiPUe4DDU59L LH5xcLLhMdxyfJ3n7yD5j8jeY59B16D0riL4oZlqYp4iSFliYgclanzB2NCMxmhH/lx+Y+oeUNQ4 tyuNHuGH1yzr07erFXYOB/wXQ9iJRlTKMqfT2ia3ZajZ2+q6TciWCSkkE8ZoQR+Ksp6g7jMgG23m 9a8oeco9VUWd6RHqCj4T0WUAdR4N4j7spnCmuUaZVlbB2KuxV2KuxV2KuxV2KuxVh/5i6H9asF1K Ff39oKS06tET/wAanf78sxy6M4F85/nP5L/xB5Za9tY+WqaUGmhoPieL/dsf3DkPcU75PJGwymHz PlDU+3P+cPPMyar+V02iSsGm0K8lh9M7/wCj3P79Cfm7SD6MVS78+Pyqj8wabcWkCAarZcrjSJj1 ZW3MJJ7PTj/rAHMsjjjfVnzD5X8jec9e8iebbTXtMJivbGQrPbPVVljrSWCUdaMBQ+B36jMRg+99 P8/6X5t8r6dq+iuxsdShEzctnRgSrwt/lI6lWpttttlWSXRsgOqjlLNlnlyIJpqv3kZm+48f+Ncv xjZqnzTTLGLzn86fzPHkrQVhsWVtf1EMlkpo3pIPtzsp/l6KD1bxAOZWlweJLfkG7Dj4jvyfMflP ypq3nLWblRcpDHFHJe6tqt259OGIGryyMd2JJ+n5VObbJkEB9zmykIhO20P8lLUm3bzFqt4/QXdr YxxQV8eEr+pTKxLL/NA+LEGfcHpP5Rab5Y0C113zD5Y8y299ygS0WHV4G0+OK4kflCss7Fg3Lidk 65i6mUpERlH5btOUk0CHlPm78tfzEOsTXuqaLNez6rO8/wBbsoxcwyyTuXJR4OajkSSBsfbMqGTE RV8m6MoEM4/Kv8p9T0a9v9P8zXFlpcHmfT5dPXSbi4R7x2kHOKWO3UneNkr8TAjMXNkjziCaPwaZ yHMdEPb6V/zj1p3lnUYL7UL3VNXtpdpY45bW5YghQkEb1hCVry51PX/Jy0yzmQoABneQnySJvJnk DzFp9/N5J1O/TUtOt5LyTSNYjiEk0MIrIYZYPg5KP2Tucs8WcSOMCj1DPjkPqef21zcWtzFc20jR XELCSKVDRlZTUEH2OZJAIotr6LsIPLP57fl3+ifMYWDzFp9Uh1GNR6sM/H4ZU6VSQD406NQ9wGGh 1GLw510PJ1+bFwnbk+QPO/kjzF5K8xXGg69bmC8gNUcVMc0ZJ4yxNQckamx+g0IIylpR/wCXn5h6 l5P1LmnKfSp2H12yr17epHXYOB9/Q+0oypINPqHRtZstUsLbVNMnEttOokhmQ0IPht0ZTsR2OZAN twNvV/JvnJNRVbC/YLfqKRyHYSgf8bfrymcKa5RZdlbB2KuxV2KuxV2KuxV2KrZI0kjaORQyOCrq ehBFCMVeKa5prabqtzYtuInIQnuh3U/SpGZMTYbwbfIv5o+Vh5c843lpEnCyuD9asgBQCKUn4R/q OGX6MokKLTIUXpX/ADh75v8A0P8AmXNoc0gS18w2rRKpNAbm2rLCf+A9RR7nIofXXnXTPrGnC7Qf vbU1bxMbbH7uuX4JUaZRL4v/AOch/IY0vWo/M1jHxsdVbjeKooEugK8v+eqiv+sD4454UbWQRP8A zjl+aS6Bqx8ratLx0jVJAbOVukF21FAJ7JLsD4NQ7VY5iZI2sTT6qyhtZnowA0u3p/LX7ycyYcmq XNG5Ji+JvzS83S+avO+o6nzLWiyG3sFPRbeElUoN6ct3PuTm/wBPj4IAOzxw4Y0yn8i9EHmSHzX5 YNz9TGqWEVLkUZ1aGdWFI6ryU1+LfKdXPh4Zdxa80uGi831vS5NJ1m+0uSRJpLC4ltnljrwZonKF lrQ0NMyoSsA97cDYt67o/lbSNP8Ayatl843kmh2d/qzai0Kx1vLqGO39OKGGM9OR+LkwoNj0OYUs hOX0b0KaDIme2+yRt+eGo6LDFpnkWwh0LRbd+fGUC6uLg9CZ3k5AcqdEpTs2WflBLeZssvBB3luU 58oeYvy/81+c9I1W7iPlfzZHewTM8FZNPvWEg5JxY8oZJB8I34+NcryQnCBA9Ua+IYzjKMSOYYJ+ aXlvUdB886xDdWj21vcXdxcWDMPgkt5JWaNkboRxIB8DtmTp5iUA245XEJ1+WlqdA0TW/Pl9+6t7 e2m07Rlbb6xfXSGOig/aWNCS39hyvOeIiA959zHIbIi85zKbWffkprkunedobYOVh1FHhffo6AyR tt3qtB88wO0cfFjvrFryi4vcvzN/LXRfzV8rNp93wtfMdipfStS47q3dWpuY5KUcdvtDpmmhO3Xy jT4R8w+X9X8va1d6LrFs1pqVjIYriB+oYdwRsysN1YbEbjJsWQ/lx+Y+oeUNQ4tyuNHuGH1yzr07 erFXYOB/wXQ9iJRlTKMqfTuk6rZanYW+padMJrW4USQTLUbfrBB6jscyAbbQXqnkzzmL0Jp2ovS8 G0Mx6SjwP+X+v55TOFbhrlFmOVsHYq7FXYq7FXYq7FXYq8+/MzSXE1vqiCsbL6E1OzCpU/SKj6Mu xno2QL5r/wCchPLkl3odlrkC1bTXMVzQf7pnIAY/6rqB/sscg6rMPEfL2uXug69p2t2J43mm3MV1 BWtC8LhwDTsaUPtlLW/THQ9Y03zH5estWsz6un6rbR3EVe8cyBuLU7gGhHjiCryH8wfJtvrOlar5 avNlmUpFKRUo4+KGUD2PFvwzPPri2cw+KNZ0fUNG1W60vUIjDe2khimjPiOhB7qw3U9xvmCRTW+r fyA/NUea9DGiapNy8xaVGAzuatc24+FZqncuuyyfQ3c0x8ka3bIyfROgSB9LiHdCyn/gif45Zj5M Zc1DzleyWPlDXL6IlZLXT7qZCOoaOFmFOnhl2IXIDzWA9QfCWdE7REadf31hfQXlhM9veQOHgmiJ Dq4OxBGCQBFFSLfRcmg6dOU80TaNaXH5qHT1vJPLMkyiNpAaC8NsACZioDGPl/w2+avjP03+7vn+ hw+I8r9Pe89/NLVtZ1T8vfI9/rEskup3k2syXrSji3qR3SRheO3AIo4hQABmTp4gTkBy2bcYAkQP J7R+VPl3yLJ+VFhBwttR064X6xqclyilTdnaXmJB8JiPwKfAAjxzB1E5+IehcfLKXG+cbmz02D80 TaaHMp09NYWPT5UJZRH9ZATixJLBegNd+ubQEnHZ505gJ4d+57FdvLqWreb4fPKRr+XNve3C2l/d lkngugxWmnsoZ3LMDyUAj8VOCNhHg+uvxbj8gOH6vxzeefnc+qxarp9hHFFB5Qt7cHyuto3O2kt2 A5S8/wBqVj9uu/zryOTpaon+Lq24arz6vK7m/iiqq/HJ4DoPnl08oDOU6ZH+Vr3E3nPRnr8ZvE7b cRu34VyjNK8MiWN3Evq+GaSGVZYzxdDVTnNg04rCfz//ACdtvzJ8s/p/RIlTzhpUZCRjY3UK1ZrZ j/N1aI+PwnrUZMZWGkinxA6PG7RyKUdCVdGFCCNiCDkkM2/LH8ybzylqIguGabQ7lv8ASrcfEYyd vVjH8w7juPoyUZUyjKn03YX9re2sF9YzLNbTKJIJ4zUEHcEHMgG216j5K84/X1XTtQcC9UUhlP8A u0Dsf8sfjlM4Vu1yizDK2DsVdirsVdirsVdiqD1bTYdS06eym+zMpAb+VuqsPkd8INFINPDNb0aO eG90fUYuUciyW1zGfAgq1D+o5k8w3c3yB5p8vXfl7X7zSLrd7V6JJSgeM/Ejj/WUg5jEU0kU+sv+ cNfzA/SflW98mXclbzRHNzYAndrOdqsoHX91MTX/AF1GBD2Pzto3rQDUYV/eQjjOB3Ts3+x/V8sy ME62ZRL5t/Pj8tDr2mf4i0uLlq+nRn6xEg+K4t13O3d49yPEVG+2TzY73CZB87aDruq6Dq9rq+k3 DW2oWbiSCZex6EEHZlYEhlOxGxzEYPvX8ifzR0nz35ee4tisN/Dx/SFhX4oZiKGldzG9Ko3hUdQc hEVsyJtnPm6xk1DyprVhEC0l3YXMCKOpaWFkA/HLsZqQPmsDRD4QzonaM+/Ky0sLBNZ87ajCtzb+ WIo3s7V/sy39y5S2qO6owLGm42OY2oJNQH8X3NWQ3Ue9iV35i1u6119emvZf0vJL9YN6rFZBIDsV ZacePRadBsMuEABw1s2CIqnsmqax5c88/lt5dvPO15JYakLq7srfW4IuUMc/wOfrMKdRKgUkrShF dhXMGMZY8hENxts44iYyPCwy7/LL8z7KL9FaR62r6Fqrq0c+lTtNp9xxNVeTiQi8SOsoFMyBnxnc 7Ed/Ns8SPM82TeQ/y/8AKegecdHs/MV+uq+aZLmMwaJYMHhtXQ+oXvJhsTGFJ9Ne43qpynNmlKJM RUe/9TCcyQa5MD/MvztrPmnzNey3t00tjbXEyadbjaKKEOQvFRtVlA5N1OZODEIRFNuOAiE18rXM nmX8vPMflC8YNJo9nLrmhTtXlC1sQ1zCp68ZkY0HStTlOoHDISHXYteUUbHueO5Bi9g/IXQHuPM6 3rL+60uFpGbt6swMar9zMfoyvXz4MXD1LPJtGn0NmicZG6VqDWV0H6xN8Mq+3j9GSjKiiQt86/8A OWf5OR2FyfzE0CEfo++dRrkMY+GOeQ0S5FNgspoH/wAuh/azJaXzRir0T8qPzPn8sXi6bqTtJoNw 246m3dj/AHif5P8AOv0jfrOEqZRlT6TtrlJEiubaUOjhZIZo2qCDurKw+8EZe2vUPJnnAakgsb5g t+g/dudvVA/42HfKZwprlGmW5WwdirsVdirsVdirsVef/mToXF49YhXZqRXQHiNkf/jX7stxy6Nk D0fNn59eTP0hpEfmKzjrd6aOF4FG72xP2j/xjY1+RPhhyR6rMPKvyt8+XfkXzzpfmODk8NtJwvoF 6y2snwzR77V4mq1/aAOUtb9HtPv7DVNNt7+zkW5sL2JZreVd1kilUMpHsVOKvP8AzHoraXfFUBNr LVoG9u6n3XM7FPiDYDb5U/PT8rDol6/mXR4aaPdv/pkCDa2mY9QB0jkPTsG27qMozY63HJjIPP8A yR538xeSvMVvr2g3BgvIDR0NTHNGSOUUq1HJGpuPpFCAcoYvvz8pfza8u/mR5dXUdOYQahAFTVNL dgZLeQj6OUbUPB6b+xBAVfMn5teUJfK3nnUbH0+FlcSG609qfCYJiWUD/UNUPyzfafJxwBdlinxR t3kLzRoNhY6x5e8yRTPoOvJCJ7i14me3mtnLwyorbEVajDw8emObGSRKPMLOJNEcwy6H8rfylk8p S64PPZ4RzBTP9WoUViFETWVfrBkrX4gaU3pTfKDqMvFXD+Pe1+JO64U10Kb8sV/LbWrCyhvPNMHl 65i1iS2uybFZHlH1YtEYucnpovxOrZCYyeICfTxbd6JcXEOlsNl/PHznA0UWgraeX9NgNY9OsLaI RHt+89RXZyR1PfMj8pD+Lctngx67s1/Ljzr5cvjq/nDWPLVrp135ctTJJrWlloC0t0DbpGLYn0jL Lyb4yevzzHz4pCoiV8XQteSB2APNKLfyj+QV55SutTj8yX1lcrKOEd36TXkdSFCG1jH70HryQ7dy KEZM5MwlVBPHkuqYrqvnbyP5W0LU9I8lR3t7q2tWzWWoa3fhIljtJSPUit4ULbyAULNuO2RyCciO KtuiJ2Tu850fTZ7u5iWONpJJHCQRKKs7saKAO++XY4/xHkGcI9X1d+XflBPK/l2O0ehv5z6184oR 6hFOAP8AKg2+8980er1Hizvp0ackrLJ8xWDsVSXzJ+a/5aeX7C60LznqFvJZ3UbRT6bQ3EpSQbq8 MYdgrdiQMuxktc6fEPnSDyjD5huv8JXVxdaC7lrM3cfpTop/YfchuPZu/cDLWCR4q9S/KX82E8vj 9C67K36FNWtrjizm3bdivFQzFGPh0P05ZCdM4yp7hovnbyvqcqHStXt5rgENGiShZQR0IQlX/DLR IFnYL0qx/M3UYlRLu1juAoALoTGxp3NeYr9GQOMMTBkmmefdAvWWOSRrSU7cZgAtf9cVX76ZAwIY mBZGrBgGUgqRUEdCMgxbxV2KuxV2KqN5aQXlrLazryhmUo49j4e47YQVDxTXdGayvLnTLxBIm6MG FVkjYdaHsynpmQDYbwbfIv5jeTJvKnmWayAJsJqzafKamsLH7JP8yH4T9/fKJRotJFPov/nD782l uLV/y81ab/SLcPcaDI53eL7c1sK903kUeHLsoyKH0pqumQalZvbTbV3R+6sOhGShIxNpBp5Zreip S50rU4FlhlVop4XFUkjYU79QRmcCJBs5vkf82PyxvPJererAGm0G8c/Ubk78GNT6Eh/nUdD+0N/E DDyY+E+TWRTHvJvnPzF5O16DXNAu2tL6A0NN45Y6gtFKnR0am4/jlaH1pB5l8p/85A+ShFaGPTPP ekoZlsJG3qdnCMaepBLQfF1RqV/ysjTZ/Dl5NuLJwnyeD6npmoaXfzafqNu9re27cJoJQVZT8j49 Qe+buMgRYdgDaGySWdfk7540jyf5plvdXt5LjT721eyn9OjcFkdGLNGdpF+ChX/azH1OIzjQ5tWW BkNky86/lT5pvPN9zceWtIF7oeqzNcaTdacFazEEjVUFxRIuPQhqAdtshi1ERH1Hcc7RDKK3O6H8 +XeneWvLNr+X+l3Ed3cxzfXvMt9CQyPeceKW6MOqwDY/5XgajDhBnLjPwTAEniPwebTzCJK05Odk QdScyJSpsJpS03RL7Ub1Ikiee5nakdvGCzsfkMo4K9UmsR6l9Fflj+VsXl5E1TVAsmsMtI4hRkt1 PZT3emxYfIeJ1Gs1viemP0/e1ZMl7Dk9GAJIAFSegGa9qTG10DUJ6Ep6KHvJsfu65MYyWJkEl89f l5q2rWS2tt5uPlyydaXUkFupuZDXcJO0q+mKfyry9+2WwxfFiZEvD9Y/5xY8lAObTzZfzXTEs0r2 scikmtS1XiY7965kjBIo4S8K89+T9O8saiLOz1601o1IcW4YPGRt+8A9SMH2EhPtlco11QQxjIod irsVZl5T/Nbzf5dmRVumvrAEc7G6YuvHwRzVo/am3iDkhIhIkQ+k/LPmKw8xaJbavYE+hcA/A32k dTxZGp3UjLwbDcDbOvJ3mq5028itJ5C+nTMEZWNfTLHZl8BXqMjONsZRt6rlDU7FXYq7FXYqxbz5 5e/SOn/XYFreWgJoOrxdWX6Oo+nxyyEqZxNPAPzL8kQ+bPLslsgVdStazafKe0lN0J/lkAofoPbL JxsM5C3zBY3uq6HrEN5avJZapps4kicfDJFNC1Rse6sOmY7S/QT8lPzc0v8AMjypHfIUh1uzCxax YA7xy02kQHf05KVU/MdRirLfMOgxarbbUS7jH7mQ/wDEW9j+GWY8nCfJINPLPMflyy1KyutF1q1E tvKPTngk+8EEdCOqsPmMzCBINnN8j/mV+WmreStUKOGuNHnY/Ub+mzdT6clNlkAHTv1HthTgYlrI pjOja1q2iapbarpN1JZajaOJLe5hbi6sP1g9CDsRscgh9Q+S/wAx/IH50Wlv5f8AO8cejeekURWO rw8Y1uiPshSfh5k9Ym2P7BFaC/DqJY+XJsx5TFLvNv8Azj35+0OR5LCAa3Yg/BNaf3tO3KAnnX/U 5fPNnj1kJc9i5kM8T5POr7TNS0+Yw39pNaTDYxTxtEwP+q4BzKEgeTaDara67rdnaSWdpqFzb2kv 97bxTSJG1f5kUhTgMATZC0ERo/lHzRrLhdK0m7vfFoYXZBXuzgcR9JwSyRjzKDIDm9O8qf8AOMnm y/kjm8wXEOkWp+3EpE9yR1oAh9Na+PM08Mw8muiPp3aZaiI5bvRvLnkjy55YR4tKt6SGqyXcnxzO Af2n7DbotB7Zpc+onkPqLVKZPNmGn6Bc3IEk37mE9Kj4j8hkI4yWsypMri60LQk+MgTEbKPjlb+n 4DMjHhvkw3LG9S876hPVLRRaxfzfaf7zsPuzLjgA5shF4x59/PvyvoTyxQznXdXBIaGF6xo3/Fk5 5KKHstT4gYyyxjsFMqeBecvzb86eag8N5d/VdOev+4+1rHER4Oal5P8AZEj2zGlkMubAlhmQQ7FX Yq7FXYq+o/yd0G80byNaRXimO4u3e7aJhQostOAI8eKgkZfjFBtiNmcwQyTTRwxiskrBEHizGgyb J7xmK0OxV2KuxV2KuxV5b568tfo29+u2yUsblug6RyHcr8j1GXwlbbE2+a/zz/LosH816XFuAP0r Cg7DYTgD7n+/xyOSPVE49Xm35e+f/MHkTzNba/okvGaI8bi2Yn0riEn44ZQOqt+BoRuMqa36A/ln +Zvlr8wvLsesaNLxlWi3+nuR61tLTdHA6g/st0YfSAqm3mDy9BqsPJaR3iD93L2I/lb2/VluPJw+ 5INPMPMXly0vrS60XW7NZraZeE9vKNiOoIIoQQd1ZTUHcHMvaQbOb5W/ND8ntW8nTSX1pzvvLrMO F5QGSHkaKlwFAA32DgcT7E0zDyYzH3NZFPPASDUbEdDlaH0j+Sf/ADlffaOINA8/SSX2lCiW+uby XMA6ATgVaZP8r7Y/yuyr63sL/S9Y02G9sZ4b/TrtA8M8TLLFIh7gioIxVcmm6dG4dLWFHU1VljUE H2IGHiKbKJwIUrqb0baSQblVPEeJ7D6TgJoJCVaXokNqn1m84mRRyoxHFAN6mu1chDGylJJ9d86M S1vphoOjXJ6n/UB/XmdjwdSoi8p89fmb5Z8pRGTVrozahKOcVjEfUuJK/tEE/Cp/mYj6ctnkEUk0 +cfPf5zebPNZktlk/RukNUCwt2ILr4TSbNJ8tl9sxJ5TJgTbAcrQrWtndXUnp28TSv3CjYV2qT0A +eGMSTQSATyTGTSLSxQNqdwfWIqtpBQybjbkx+FevgfbLZYhH6jv3MzDh5pfdTxSvWGBYIh9lFJY /wCyZqknKi1qGBWaeUfym83eZOE6QfUdOah+u3QKBl8Y0+2/saU98kIEshEl7F5W/JDyloskV1d8 9VvoiHWSf4YlYdCsK7f8GWy0YwGYgHo0MM00ixQxtLI2yogLMfkBk2TO/JPk28t71dR1KL0vSFba FqFix25MB0p2r3yqc+gYSkz3Kmt2KuxV2KuxV2Koe/sba/s5bS5XnDKvFh39iPcdRhBpQXjnmHQJ tLvJbG6USQuD6bkVWSNtuh+4jMiJsNwNvlz82vyxl8tXrappsZfQbl9gAT9Wdv8Adbf5BP2D9B96 ZxprlGmMeSfPPmbyVr0Wt+XrtrW8j+GResU0ZILRTJ0dDTp9IoaHIMX3Z+TH53+X/wAy9Kb0gLHz BaKDqOlM1SBsPWhP7cRbbxU7HsSqznV9EstUh4TrxlUfu5l+0v8AUe2ThMxSDTzzXPL1zZB7e9hW a0mDRlivKKRGFCrA7bjqpzMjMSDYDbwj8w/+ceLC+Euo+UitleGrvpbmlvIev7pj/dHrsfh/1RlU 8HcxMXz/AKlpmoaZfTWGoW8lreQNxlglUqynr0PYjcHvmMRTBmn5WfnT5z/Lm/D6VP8AWdJkflea NcEm3lrsWXvHJQfbX6ajbAr7d/Kr83/Kn5kaO15o8hgv7cKNQ0qYj14GPQ7bOjU+F1696GoCrOcV WyGNULyEBE+Is2wAG9T8sVeeebPNiXKygSi30uAFpJXIQMF3LuTSij3zMx4xEWWwCnzX+ZH/ADkL xaXS/JxBIqkusOKivf6uh/4m30Dochkz9AgyeE3V1dXdzJc3Urz3EzF5ZpGLuzHqWY1JOYzB1vbT 3MoigjMkjdFUV+k+AwgEmgkC2RWXlSCCM3GqSgKnxNGpooG32n/Db78zoaMAcWQ0HIjgoXI0o6h5 kjiiNppKCGEVBmAoT2qo7f6x3+WV5NTQ4cY4R9rGWXpHYMfZmZizEszGrMdyScxGhOvK3k7zB5nv fquk2xk4ketcN8MMQPd37fLqewwgEpAt775J/Jny35eCXV6o1XVBQ+tMo9KMjf8AdxGor/lNU+FM ujjAbBF6JDDLNKsUKNJK5oiKCWJ9gMmyZnof5b3EwWbVpDAh3FvHQyH/AFm3C/jlcsncwM2c6dpO m6bF6dlbpCvRiB8Tf6zH4j9OVEksCbRmBDsVdirsVdirsVdirsVS3X9CtNZsWtpxxdfigmHVHp1+ XiMlGVJBp43r+gPA1xpWq26yRyKUlicco5I22qK9VOXgghu5vm38y/yevfLxm1XRg11oY+ORPtS2 w/yv5kH83bv45TKFNUo0wXy75i1vy5rNtrWiXb2Op2bc4LiOlQehBBqrKw2ZWFCNjkGL7u/Iv89N I/MjSPq9xwsvNNkgOoaeDRZFG31i3ruYyeo6odj2JVeoyxRSxtHKgeNtmRhUH6DiCrEtc8lgBrjT B03a2Jr/AMAT+o5k48/QsxJ5N5//AC20DzjZG31GIwahCCtrfotJoj/Ka05JXqh+ih3y6eMSSRb5 S85eS9c8pau+m6rFRvtW9wlTFMn88bED6R1GYUomJosCFPyf5w8weUPMFtr2g3Jtb+1Ox6pIh+1F Kv7SN3H8cih+hP5V/mXo35h+U4Nd0791OP3Wo2Jbk9vcKAWQnaqmtUam496jFUr/ADY/MHR/LmmS m/uhb2kIBuWG7yOd0hjUbsx8P4A5kYgIjiLId74t/Mn83Nc85XD20Zax0JG/c2Ctu9Ds85H2m706 D8cryZDJBNsCytCb6P5dub/jNLWG0r9s/aYf5AP6/wBeZODTSyeQbceIy9zI5rjSdCteCKFZhVYl 3kkI7sT29z9HhmdKWPAKH1OSZRxjbmxPU9XvNQk5TNSMfYhX7K/1Pvmsy5ZTNlxJzMjugcrYPT/y 6/JfUNdEWp65zsdIajxQ0pPOvalfsIf5jue3jk4wtlGNvftJ0jTNIsY7DTbZLW0iHwRRigr3J8Se 5O5y8Cm0Bk/l7ylqWsuHQehZg/FcuNvkg/aORlMBBlT0zRPLml6PFxtY6ykUkuH3kb6ew9hlMpEt RNppkUOxV2KuxV2KuxV2KuxV2KuxV2KpdrehWGsWnoXS/Eu8Uy/bQ+IP6xhjKkg08o8w+XLvSLk2 10okgkB9KUD4JF77Hv4jMiMrbQbfNf5tflK2kNLr2gxFtKYl7u0QVNuT1dB/vr/iPy6VThTCUXm2 ha7q+gava6xo909lqVk4kt7iM0ZWH4EEbEHYjY7ZWwfeP5F/nppH5kaR9XuOFl5pskB1DTwaLIo2 +sW9dzGT1HVDsexKr1TFUh8xeWYdRRri3AjvVHXoJKdm9/A5djy8Ox5MhJ5H538laZ5n0i40XV4S hqTFLQerBMvR0r0I7+I2zKlESDMi3yD5x8oat5T12bSNSSkifHBMB8E0JJCyp7Gn0Go6jMGUSDRa yGSfkv8Am1qX5beaxqcStc6Vdr6Oq2CkfvY+qutSB6kbbqfmKiuRQk35g/mFr/njXZdU1WQiPkxt LNTWOFGNSBsOTH9pj19hQCUpWkljGRQyXy/5cEgW8vl+A/FDAf2vBnHh4Dv8uudpdJxeqXJycOG9 zyTDW/MMNipt7ekl10p+zHt38T7ff736jViHphz+5sy5uHaLDpp5Z5WlmcvI5qzHqc1ZN7lwibdB BPcTxwQRtLPKwSOJAWZmJoAANyTgV71+Wf5LW+miLV/Msa3GobPBp5o0cJ61k7O/t0Hv2ujDvbIx 73riqzMFUEsTQAbkk5YzZ15X/L8sEvNZUgdY7PofYyU6f6v3+GVSydzCU+5n0caRoqRqERRRVUUA A7ADKmtdirsVdirsVdirsVdirsVdirsVdirsVdiqE1TS7PU7N7S7TnG/Q/tK3ZlPYjCDSQaeReY/ Ll1pF01tcqJLeQH0pafBIncEePiMyIyttBt80/m7+VH6FaTXtDjJ0l2rd2iiv1dm/aX/AIqJ/wCB +XSqcKYSjTzjQtd1fQNXtdY0e6ey1KycSW9xGaMrD8CCNiDsRsdsrYPvf8j/AM7dG/MnQwrFLTzN ZRr+lNOrSvQevBXdomP0qdj2JVenYqkXmXy4mpRGeABb5BsegcD9lvfwOXYsvDseTIF4R+bn5fL5 u8tTWqR8dasOU2muwAb1B9uElqUEoXj1FG4k9Mvyw4hsyIt8gujo7I6lXUlWVhQgjYgg5hNa3FU+ 8saMLqX63cLW3iNEU9Hcb7jwX/PvmXpNPxmz9Ib8GLiNnkmXmHzD9W5Wlo1bk7Syj9j2H+V+r59M jVaqvTFtzZugYgSSanrmscNE6Zpl/ql/Dp+nwtcXdw3CKJOpP8AOpJ6Yq+kvy1/KvTvKkC3t3xu9 dkX95cdUhBG6Q1H0Fup9htl8IU2xjT0O0tLm8uEt7aNpZpDREUVJyZLJ6f5W8l2ukqtzdUn1Aj7X VI/ZPf8AysolO2qUrZNkGLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQeq6XZ6nZSWl0nKN/ st+0rdmU+Iwg0kGnkHmLy7c6VcvZ3iCWCUEI5FUlQ7HY/iMyAbbQbfMv5t/lW2gTNrOjRM2iytWe Eb/VnJ2Hj6bdj26eGUzhTXKNMG8readd8ra7a65od01pqNo3KORehH7SOvRkYbMp65Bi/QL8n/zZ 0T8yfLC6lZ8bfU7bjHq2m8qtBKQaEdzHJxJRvo6g4qzzFWL+bvLv1hG1C1X/AEhBWdB+2o/aH+UM yMOStiyiXxF/zkD5RXRPOn6St04WWuK1yKUAFwpAuAO+5ZXPu2QzRqSyDzOKJ5ZUijHKSRgqL4km gGVMWX6vqEejadFY2285TijdOK9Gkp4sa0982ebJ4UBCPNy8k+CPCObDiSSSTUnqc1jiI7RNE1PW 9Th03TYTPdzmiqOgHdmPZR3OEC1AfTf5eflzpnk+wIUi51WcD63ekUr39OOv2UB+/qe1L4xpujGm daXpV7qd2traRl5G3Y/sqvdmPYDCTSSaeseXPLNjolvxjHqXTj99cEbn2HgvtlEpW1GVpxkWLsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQOsaRZ6rYvaXS1Vt0cfaRuzL74QaSDTx/zD5e n06eWwv4llglUqCwrHLGdjsdunUZkAghtBt8vfmv+V83li6Op6arS6FcPsNy1s7HaNz/ACH9hvoO /Wmcaa5RpIvy4/MLXvIPmm21/R3q8fwXdqxIjuIGI5wyddjTY9jQ9sgxfof5I856J5y8s2XmHRZf UsrxK8Gp6kUg2eKQCtHRtj94qKHFU9xV84f85deSIz5G/TluqrHY3cUrbbr6xMLIvgGaRW/2OWyn cd+YTez5BsJkhvreZyQkcqOxG5orAnIQlUgViaILd9eS3l3JcyfakNQPAdAv0DGcjI2VlKzavomi anrepw6bpsJnu5zRVHQDuzHso7nABaAH0/8Al9+X2meUNM9OOk+pzgG9vSN2PXgleiDsO/U5fGNN 0Y0zrRtFvtWvFtrVK/78kP2EXxY4SaSTT1rQ9CsdHsxb2y1dqGaY/adh3Pt4DMeUraSbTLAh2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpdrmh2WsWTW1yKEbxSj7SN4j+IwxlSQae OeY/LrW73Gk6rAssMqlHRhWOWNtqjxBzIBBDaDb5X/M/8t7nyjqXrW4aXRLpj9UnO5Rupik9x2Pc fTlEo01yjTOf+cUvzQn8seeY/Ld5LTQ/MTiEqxosV5SkMor05/3beNV/lyLF9x4q8g/5yvvrW2/J LWIZivqXs9nBbV6+oLqOY8ff04m+jFXwViqK0zTL/VL+HT9Pha4u7huEUSdSf4AdST0xV9Qflz+X lh5P0wqCJ9VuQDe3dNttxHHXoi/j1PYDIjGm6MaZ/omiXusXq21stAN5ZT9lF8T/AAGGUqSTT1zR tGstIsltbVaAbySH7Tt3ZjmOTbSTaPwIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdiqVeYvL9prVkYZfhnSpt5u6Mf+NT3GSjKkg08V80+V4biC80LW7cSRSDhNGe46q6MPvUj L9iG3mHyf588k6j5Q1trKeslrJWSwu6UEkYP4OvRh/AjKJRpqIp7F+Wf/OYHmHy/pkWk+bLFtft7 deFvqCSCO7CqKKspYFZfDkaN4lsihhn55fntqf5nX1rDHanTdA08l7WxLiR3mYUM0rAKOXHZVH2R XxOKvL7e3nubiO3t42lnmYRxRIKszMaKoA7k4q+mfys/La38p6d9au1WTXbtB9ZlG4iQ0PoofYj4 j3PsBl8I02xjT0nSNIvNVvktLVas27ufsovdm9skTTImnruh6HZaPZC2thVjvNMftO3if4DMeUra SbTHAh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpF5r8sw61Z/DR L6EE28vj/kN7H8MlGVMoyp4L5/8AJFv5i0e60a/T0byIk20rD4oZ12B+XZvEZdIWGwiw+TtX0jUd H1GbTtRha3u7duMkbfgQehBG4I65jkNKDxV73+R35dmxth5m1WGl5cLTTI3G8cTDeWnZpK7f5Pzy 7HHq2Qj1ez6fp91qF5HaWqc5pTQDsB3JPYDLCaZkvXfL3l+10WxEEXxzPRriY9Xb+g7DMeUraSbT XIodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirEvPPlYahbn ULRP9OgX94o6yoP+Nl7fd4ZZCVbM4yeMeZPJ3lvzJAsWsWSXJQUim3SVO/wyKQwHtWmWmILMi0i0 b8nPIWlXi3cdi1zNG3KL6zI0qqe1E2U07cgciMYQIBnEUUksqRRKXkkIVEG5LE0AGTZPW/KflmHR bOr0e+mA9eUdu/BfYfjlEpW1SlafZBi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXnfm/yPcrcSX+lR+rDIS0tsn2kY9Sg7g+A6ZdCfe2RkxCLTtQlm9GO 2leXp6aoxb7qZZbO3ofkzyYdOI1DUADekfuoeoiB6kkdWP4ZTOd8muUmYZWwdirsVdirsVdirsVd irsVdirsVdirsVf/2Q== uuid:5b2fe784-0f30-11d9-85f1-0050e466842e image/svg+xml oregano-0.84.41/data/mime/oregano.keys.in0000644000175000017500000000013613413640652017132 0ustar rubenrubenapplication/x-oregano: open=oregano %f view=oregano %f icon-filename=@icondir@/oregano.png oregano-0.84.41/data/mime/oregano-mimetypes.xml.in0000644000175000017500000000062713413640652020776 0ustar rubenruben <_comment>Schematic file oregano-0.84.41/data/settings/0000755000175000017500000000000013413640652015107 5ustar rubenrubenoregano-0.84.41/data/settings/io.ahoi.oregano.gschema.xml0000644000175000017500000000130113413640652022211 0ustar rubenruben 1 The spice engine: gnucap, spice3 or ngspice. false oregano files are compressed or not. false oregano provides a log window by default. true oregano starts providing a splash window at startup. oregano-0.84.41/data/settings/README0000644000175000017500000000026213413640652015767 0ustar rubenrubenThis direcxtory has been added to manage the new gnome settings. Therefore the file "apps.oregano.gschema.xml" has been created. It is installed into /usr/share/glib-2.0/schemas oregano-0.84.41/data/xml/0000755000175000017500000000000013413640652014047 5ustar rubenrubenoregano-0.84.41/data/xml/properties.ui0000644000175000017500000002245013413640652016605 0ustar rubenruben 400 400 True False Properties False center normal True False vertical True False end gtk-cancel True True True False True False False 0 gtk-ok True True True False True False False 1 False True end 0 True False 5 vertical 6 True False 6 6 True False 0 Title: 0 0 1 1 True False 0 Author: 0 1 1 1 True True 1 0 1 1 True True 1 1 1 1 False True 0 True False 0 none True False True False False False 0 True True never in True True True True 1 True False <b>Comments</b> True True True 1 False True 1 cancelbutton2 okbutton2 oregano-0.84.41/data/xml/view-netlist.ui0000644000175000017500000000656013413640652017047 0ustar rubenruben True False Netlist View True False vertical 500 600 True True 8 in True True 0 True False 5 3 end gtk-save False True True True False True False False 2 gtk-close False True True True False True False False 3 False True 1 oregano-0.84.41/data/xml/oregano-main.ui0000644000175000017500000000220513413640652016761 0ustar rubenruben False True False True True vertical 0 0 oregano-0.84.41/data/xml/plot-add-function.ui0000644000175000017500000002540013413640652017736 0ustar rubenruben Substraction Division True False Add Function dialog True False vertical True False end gtk-cancel True True True False True False False 0 gtk-add True True True False True False False 1 False True end 0 True False 8 vertical True False 0 none True False 8 12 True False <b>Function Type</b> True False True 0 True False 0 none True False 12 True False 8 8 True False Second Operand center 1 0 1 1 True False First Operand center 2 0 1 1 True False 3 1 1 1 True False 1 1 1 1 True False <b>Values</b> True False True 1 False True 2 button1 button2 oregano-0.84.41/data/xml/textbox-properties-dialog.ui0000644000175000017500000001216613413640652021540 0ustar rubenruben True False Text Properties center normal False vertical 2 False end gtk-apply False True True True False True False True 1 False True end 0 True False vertical True False 0 none True False True False False False 0 True True True True True 1 True False <b>Text</b> True False True 6 0 False True 1 apply oregano-0.84.41/data/xml/splash.ui0000644000175000017500000000466113413640652015707 0ustar rubenruben True False Oregano center-on-parent splashscreen True False vertical True False False True False splash.xpm True True 0 True False label1 False False 1 True False 0.46000000000000002 0.17000000000000001 False False 2 oregano-0.84.41/data/xml/clamp-properties-dialog.ui0000644000175000017500000003702113413640652021134 0ustar rubenruben 300 False Clamp properties False center-on-parent dialog True True True False vertical 8 True False end gtk-close False True True True False True False False 0 False True end 0 True False 12 vertical True False 0 <b>Type</b> True False False 0 True False True False 0 False False 0 True False vertical Voltage False True True False True 0.5 True False False 0 Current False True True False True 0.5 True True radio_v False False 1 True True 1 True True 1 True False 0 <b>AC Analysis Options</b> True False False 2 True False True False 0 False False 0 True False vertical Real part False True True False True 0.5 True False False 0 Magnitude False True True False True 0.5 True radio_r False False 1 Imaginary part False True True False True 0.5 True radio_r False False 2 Phase False True True False True 0.5 True radio_r False False 3 True True 1 True True 3 Use decibel scale False True True False True 0.5 True False False 4 True False 0 <b>Clamp Reference</b> True False False 5 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True True 6 False True 2 button3 oregano-0.84.41/data/xml/settings.ui0000644000175000017500000004365113413640652016257 0ustar rubenruben True False Preferences center True False 12 vertical True False 12 vertical True False vertical 18 True False 0 none True False vertical True False True False 10 False False 0 True False vertical Show the splash screen at application startup True True False True 0 True False False 0 Realtime update of selection (slow) True True False True 0 True False False 1 Automatically show log windows after simulation True True False True 0 True False False 2 True True 1 True True 0 True False <b>User Interface</b> True True True 0 True False 0 none True False 6 True False True False 10 False False 0 Compress saved files True True False True 0 True True True 1 True True 0 True False <b>File Format</b> True True True 1 True False 0 none True False 6 True False True False 10 False False 0 True False 6 8 8 True True 1 True True 0 True False <b>Engine</b> True True True 2 True True 0 True True 0 True False 2 end gtk-close True True True True True False False 0 True True 1 oregano-0.84.41/data/xml/part-properties-dialog.ui0000644000175000017500000001223313413640652021004 0ustar rubenruben 300 False Part Properties center-on-parent dialog True True True False 8 True False end gtk-close True True True False True False False 0 False True end 0 True True 6 True False True False General False True True 4 True True False 1 True False Model 1 False False True 2 button3 oregano-0.84.41/data/xml/splash.xpm0000644000175000017500000074002113413640652016073 0ustar rubenruben/* 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 #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 #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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "

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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", " , ' ) ! ~ { ] ^ / ( _ : ] ( < [ ! } | ^ 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@'# #'#{$)#;@'#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# =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)/)(!_!:!)^!}),'*,/,*;#>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^`^ /./+/@/#/$/%/&/*/=/-/;/>/,/'/)/!/~/{/]/^///(/_/:/;'>',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:`: <.<+<@<#<$<%<&<*<=<-<;<><<+,<'<)[,['[)[![~[{[][^[/[([_[:[<[[[}[|[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},}'})}!}~}{}]}^}/}(}_}:}<}[}}}|}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#]#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}o2t2u2u2u2v2v2c3,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}o2t2u2e3c4,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/:24t2v2c5r}n264n6,6'6)6!6~6{6]6^6/6(6_6:6<6E,r-[6t4}6|6162636465666768696a:06a6b6c6d6e6f6w!g6h6i6j6k636l6m6n6o6p6:6q6r6s6t6u6v6w6x6y6z6A6B6C6D6E6F6G6H6I6<+J6h#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<68,8'8)8!8~8{8]8^8/8$[(8_8:8<8[8}8|818283848586878889808a8b8c8d8e8f8g8X>h8i8j8k8l8m8Vw8M_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<03d0,0'0)0!0~0{0]0^0/0(0_0:0<0[0}0|0102030+~40506070809000a0b0c0d0e0f0g0h0i0j0k0Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03da,a'a)a!a~a{a]a^a/a(a_a:aD~#)#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:bc,c'c)c!cH>~c{c]c^c/c(c_c:c#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:de,e'e)e!e~e{e]e^e/e(e_e:ef,f'f)f!f~f{f]f^f/f(f_f:f#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:gh,h'h)h!h~h{h]h^h/h|5(h_h:h#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:i80j,j'j)j!j~j{jr6]j^j/j(j_j:jk,k'k)k!k~k{k]k^k/k(k_k:kl,l'l)l!ld<93z[z[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d;,'^!/)9!m]O;~lc}{l0i]l,e^l/l(l_l:l('('),])>)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;1%8m/)4)(!<~s^a]8]9m0mambmcmdmemfmgmhmimjmkmlmmmnm2lkhompmqmrmsmtm<+umvmwmxmymzmAmBmCmDmEmFmGmHmImnmJmKmLm;aMmNmOmPmQmRmSmTmUmVmWmN6XmR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d=;[,<)~'[)}~|{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:nf=->];9~mnM*4!0!9!1~5~a{i^e]g^~*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{;)-)>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*&,^'^'/!9!2{o]i^j(l^p/~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)>^>~q^!()9!9!n#0{{qo^q^p/t/]qn(wo^<^qG7c3/q(q_q:q')<)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{'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;-,'>M*~'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*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<03dB%|,^'<,^!3!_!0~a{8]i^r/s/r/n(^t/t(t@6x}q2D}G|J1F1x2k3_t:t>*:;]'2)!)kt2{[~=og^m]b]wor/ltz(mt9^~{!3,`(2{8~Vtm]Wtm]r/Y(p/L(-oXtfQ$'>')_)kt4{8{9]g^zqp/i}p/ u.uq1+uu[q[B|@uI1}of3t1647<#u&6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03dul2M6#u&6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d565j[#u&6S6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03dv%&u/q^O(,v8u64@6$6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03dw,wx 'we )w!wIiR6R6jajaR6R6R6R6R6R6R66m*wIi*w6mR6R6R6R6R6R6jaR6R6R6R6R6R6R6)tm3-.~w{wN ]w^wR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03dx,x'x)xjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d5_x:xttTxUxVxWxXxuxYxZxAxBxBx`x yZx.yzx+y+y+yzxzxzxzx+y+y+y.yZxZx@y`xBx#yAxCxvx$y%y&y8x*y6mSx&xbwt1u2d5;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:y53y4ymx5y:y$y6yAxBx.y+y+y@yAxBx ~7ytx8y9yqx0yaybycyMx*y[ydyeyeyey*y*yfybxgyhyiyjykylymy7y ~nyAxZx+y.y yAx.y(y8yoypyqyry|yn3u2c5:xQypyRySyzxAx.y+yZxAxZx(ylyJxTyUyIi4yVy|y-xWyh3Xyhz,zb@l 'z)zR6R6R6R6O6m2o9ja!5q}z[)5u1lv!zSx~z{z]z!yAxZxCx.yAx^z/z(zay[y6m_z3yj[`ww2d5R6Ii,5ibR6+6:z+6R6)t,5n9IiKw)t&6>595ozpz7wqzJwn9R6ja9<#6jaja7<#6htcy:yhzny.y ~BxzxKzLz|xMzk[v1547r&6T6R6jajaR6R6jajaja7rIin9IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03dAvvjaR6R6R6R6R6R6R6R6jajaR6R6R6R6k0n9R6jak0$685u|jt:x0By|NwjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6mv,BD.(t'BR6R6R6R6R6R6R6R6R6R6R6R6R6R6jahay[F}vv)B!Bib9t[y$y#y ~AxIx4B5Bt}busBn2IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6ja&6tB#z)5haR6R6jahahaIiIiIi6mja%6%6&6Q6N6&6IiIiIiIiIihahajaR6R6n9uBk@2,nzhaR6R6R6R6R6R6R6R6R6R6R6R6R6ja2wvvvB|.^+wBhcR6R6R6R6R6R6R6R6R6jaR6Q6P6ja2wKwIik[v1#x1BEABx]yAx+AAzKw:uzrIiR6jaD7j[hak0q})5k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03dtqxBx]yAxlyeB5Bv1n3k0ha$6j[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6IiJ1b3n2IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6O685s}lvh3@6IiIiR6R6R6R6R6R6R6jaz[IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja9tjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d5r}IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d5p}Q6N6N6N6N6N6N6N6N6N6N6N6Q6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03duD1&Ciaj[#6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03dC,Cz[Q6:u'Cz}!5Iij[#6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d5Ii@6@6R6N6R6R6R6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0hcN6iuj5Q69<9<0 =D3C&6/:Q6IicD@6b3t[6564m2[DaBj[6< 6,5n<6464iuL6m265ruXuk0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03dAn2eDqz:zR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03dAlv<+<+<+RDSD<+<+TD75WD<+<+x8yD<+<+<+<+d38ER6jaR6R6R6R6R6R6&6~56<03dE<+<+DD2wxv<+<+<+w|nuv}q[PvdFvExEYE5<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<03dGja,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:GcFrwXFEEE7QFF}wvEuFuGrw-)93ZhjGvGdGja7FwGZhXmg[NFxG;FyEyGR6ln.FvFP6zGAGBGn95s-GuGl2rG'F>FCG7FIiR6R6R6R6R6R6R6R6&6~56<03dFibibR6R6R6ib)FIGE7JG5sNwKGLG^:5sdF5GgG_GgGVEib%6MG Fl2NGGF$6OGOE2)[GPGN6*FwG2CXt_!6HvGrF-)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 False Oregano Log Window True False 6 vertical True False automatic in True True False True True 0 True False 6 6 end False True True True False True False True False 2 True False gtk-clear False False 0 True False Clear True False False 1 False False 0 gtk-close False True True True False True False False 1 False False 1 oregano-0.84.41/data/xml/page-properties.ui0000644000175000017500000002163413413640652017522 0ustar rubenruben True False Print Properties dialog True False vertical True False end gtk-cancel False True True True False True False False 0 gtk-ok False True True True False True False False 1 False True end 0 True False vertical True False 0 none True False True False False False 0 True False vertical Fit to page False True True False True 0.5 True False False 0 Center Horizontally False True True False True 0.5 True False False 1 Center Vertically False True True False True 0.5 True False False 2 True True 1 True False <b>Alignment</b> True True True 0 False True 2 cancelbutton1 okbutton1 oregano-0.84.41/data/xml/export.ui0000644000175000017500000006175513413640652015745 0ustar rubenruben 1024 300 1 10 768 300 1 10 True False 12 Export ... dialog True False vertical True False end gtk-cancel True True True False True False False 0 gtk-ok True True True False True False False 1 False True end 0 True False 4 vertical True False 0 none True False True False False False 0 True False True False 0 Width : 0 0 1 1 True False 0 Height : 0 1 1 1 True True adjustment1 1 True 1 0 1 1 True True adjustment2 1 True 1 1 1 1 True True 1 True False <b>Size</b> True True True 0 True False 0 none True False True False False False 0 True False True False True True 0 True True 1 True False <b>Format</b> True True True 1 True False 0 none True False 12 True False White True True False True 0.5 True False False 0 Black True True False True 0.5 True bgwhite False False 1 Transparent True True False True 0.5 True bgwhite False False 2 True False <b>Background</b> True True True 2 True False 0 none True False 12 True False Color True True False True 0.5 True 1 0 1 1 Black and White True True False True 0.5 True color 0 0 1 1 True False 6 True False True False 0.05000000074505806 Output File True True 0 True True True True 1 True True 0 True True False True False gtk-home False False 1 2 1 1 1 True False <b>Output</b> True True True 3 False True 2 cancelbutton1 okbutton1 oregano-0.84.41/data/xml/print-options.ui0000644000175000017500000003000513413640652017231 0ustar rubenruben True False window1 True False 8 8 True True False 0 none True False 12 True False vertical Use colors True True False True 0.5 True True False False 0 True False <b>General</b> True True True 0 True False 0 none True False 12 True False 6 8 8 True True False 0 0 1 1 True False 0 Components 1 0 1 1 True False 0 Labels 1 1 1 1 True False 0 Wires 1 3 1 1 True False 0 Text 1 2 1 1 True True False 0 1 1 1 True True False 0 3 1 1 True True False 0 2 1 1 True False 0 Background 1 4 1 1 True True False True 0 4 1 1 True False <b>Colors</b> True True True 1 oregano-0.84.41/data/xml/plot-window.ui0000644000175000017500000002203413413640652016672 0ustar rubenruben False True False True False 4 0 none True False True False 4 vertical 2 True False True False 3 0 1 1 False False 0 True True in True True True True 1 True True 0 True False <b>Variables</b> True 3 0 1 1 True False 4 0 none True False True True 4 in True True 0 True False <b>Plot</b> True 1 0 1 1 True False True False 14 (0, 0) 3 1 1 1 True False center gtk-close True True True True True True False False 0 1 1 1 1 oregano-0.84.41/data/xml/part-browser.ui0000644000175000017500000002132013413640652017033 0ustar rubenruben False Parts toolbar True False 6 vertical 6 True False 6 6 True False Library: 0 0 1 1 True True 1 1 1 1 True False 0 Fast Search: 0 1 1 1 True False 1 0 1 1 False True 0 True False in True True False True True 1 True False 0 none True False never never in True False <b>Preview</b> True False True 2 True False 30 spread True False False True False True False 2 True False gtk-jump-to False False 0 True False Place True False False 1 False False 0 False True 3 oregano-0.84.41/data/xml/simulation.ui0000644000175000017500000001174213413640652016577 0ustar rubenruben False Simulation dialog True False vertical 8 True False spread gtk-cancel False True True True False True False False 0 False True end 0 True False 6 vertical 4 True False Progress: None True center False False 0 True False 0.10000000149 False False 1 True False Progress: None True center False False 2 True False 0.10000000149 False False 3 False True 2 button3 oregano-0.84.41/data/xml/sim-settings.ui0000644000175000017500000022533313413640652017044 0ustar rubenruben False Simulation Settings center-on-parent dialog True False vertical True True True True in 450 400 True False True False 8 vertical 3 True False True True False False True 0.5 True False False 0 True False <b>Transient</b> True False False 1 False True 0 True False False 3 True False 10 0 False False 0 True False vertical Use Initial Conditions True True False True 0.5 True False False 0 Analyze All Currents And Potentials (only ngspice) True True False True 0.5 True False False 1 True False 5 10 True False Start 0 0 0 True False Stop 0 0 1 True True 1 0 True True 1 1 True True 1 2 Step True True False True 0.5 True 0 2 False False 2 False True 1 False False 1 True False True True False False True 0.5 True False False 0 True False <b>DC Sweep</b> True False False 1 False True 2 True False False 3 True False 10 0 False False 0 True False 5 10 True False Source 0 0 0 True False Output 0 0 1 True False Start 0 0 2 True False Stop 0 0 3 True False Step 0 0 4 True False 1 0 True False 1 1 True True 12 1 2 True True 1 3 True True 1 4 False True 1 False False 3 True False True True False False True 0 True False False 0 True False <b>AC</b> True False False 1 False True 4 True False False 3 True False 10 0 False False 0 True False 5 10 True False Output 0 0 0 True False Type 0 0 1 True False Points 0 0 2 True False Start 0 0 3 True False Stop 0 0 4 True False 1 0 True False 1 1 True True 1 2 True True 1 3 True True 1 4 False False 1 False True 5 True False True True False False True 0 True False False 0 True False <b>Fourier</b> True False False 1 False True 6 True False False 3 True False 10 0 False False 0 True False 5 10 True False Frequency 0 0 0 True False List of outputs 0 0 1 True True True True False True False 2 True False gtk-add False False 0 True False Add to list True False False 1 0 2 True True 1 0 True True 1 1 True True True True False True False 2 True False gtk-remove False False 0 True False Remove True False False 1 1 2 True False 2 2 False True 1 False False 7 True False True True False False True 0 True False False 0 True False <b>Noise</b> True False False 1 False True 8 True False False 3 True False 10 0 False False 0 True False 5 10 True False Source 0 0 0 True False Output 0 0 1 True False Type 0 0 2 True False Points 0 0 3 True False Start 0 0 4 True False Stop 0 0 5 True False 1 0 True False 1 1 True False 1 2 True True 1 3 True True 1 4 True True 1 5 False False 1 False True 9 True False Analysis Parameters False True False 8 vertical 8 True True never in 150 True True True True 0 True False 8 True True False False 0 gtk-delete True True True True False False 1 gtk-ok True True True True False False 2 False False 1 True True True True False 2 True False gtk-add False False 0 True False Add new options True False False 1 False False 2 1 True False Analysis Options 1 False True True 0 True False end Discard True True True False True 0 OK True True True False True 1 False True 1 oregano-0.84.41/data/examples/0000755000175000017500000000000013413640652015065 5ustar rubenrubenoregano-0.84.41/data/examples/CC-test.oregano0000644000175000017500000001776313413640652017721 0ustar rubenruben CC-test.oregano 0.84.13 true true false 0 0.005 0.0001 false false false false VM(1) DEC 50 1 1e+06 true V1 1 -6 6 0.1 false 0.000 false 1 DEC 50 1 1e+06 TEMP GMIN ABSTOL CHGTOL RELTOL VNTOL ITL1 ITL2 ITL4 PIVREL PIVTOL TNOM TRTOL DEFAD DEFAS DEFL DEFW 0 VDC Source Input VDC (270 260) Refdes V1 DC 10.0 Template V_@refdes %1 %2 dc @DC Reference designator @refdes (25 10) 0 Resistor Passive Components resistor (360 200) Refdes R2 Res 2k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Resistor Passive Components resistor (460 270) Refdes R1 Res 4k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Gnd Ground Ground (370 350) internal ground 0 Test Clamp Default Clamp (450 270) internal clamp type v ac_type m ac_db false (280 210)(280 260) (280 260)(280 270) (280 210)(360 210) (450 210)(450 270) (400 210)(450 210) (450 310)(450 350) (280 350)(370 350) (370 350)(450 350) (280 300)(280 350) oregano-0.84.41/data/examples/simple.oregano0000644000175000017500000001665313413640652017745 0ustar rubenruben simple.oregano 0.84.13 (null) true true true 0 0.02 0.001 true false false false VM(1) DEC 50 1 1e+06 false V1 1 0 0 0 false 0.000 false V1 1 DEC 50 1 1e+06 TEMP GMIN ABSTOL CHGTOL RELTOL VNTOL ITL1 ITL2 ITL4 PIVREL PIVTOL TNOM TRTOL DEFAD DEFAS DEFL DEFW 0 Test Clamp Default Clamp (140 220) internal clamp type v ac_type m ac_db false 0 VSIN Default VSIN (130 270) Refdes V1 Offset 0.0 Amplitude 220 Frequency 60 DC 0.0 AC 0.0 Template V_@refdes %1 %2 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) Reference designator @refdes (15 10) 0 Gnd Default Ground (270 430) internal ground 0 Resistor Default resistor (270 210) Refdes R1 Res 1k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (15 30) (140 220)(270 220) (140 220)(140 270) (140 310)(140 400) (270 400)(390 400) (140 400)(270 400) (310 220)(390 220) (390 220)(390 400) (270 400)(270 430) oregano-0.84.41/data/examples/Fourier-test.oregano0000644000175000017500000002212013413640652021026 0ustar rubenruben Fourier-test.oregano 0.84.13 true true true 0 0.005 1e-05 true false false false 2) LIN 50 1 1e+06 false V1 2 0 0 0 true 1000.000 2 false 2 DEC 50 1 1e+06 TEMP GMIN ABSTOL CHGTOL RELTOL VNTOL ITL1 ITL2 ITL4 PIVREL PIVTOL TNOM TRTOL DEFAD DEFAS DEFL DEFW 0 Gnd Default Ground (230 350) internal ground 90 Capacitor Default capacitor (340 290) Refdes C1 Cap 100n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Resistor Default resistor (210 240) Refdes R1 Res 1k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 VPULSE Default VPULSE (140 290) Refdes V1 DC 0 AC 0.0 v1 -5 v2 5 td 0.0 tr 0.000001 tf 0.000001 pw 0.0005 per 0.001 Template V_@refdes %1 %2 dc @dc ac @ac PULSE @v1 @v2 @td @tr @tf @pw @per Reference designator @refdes (15 10) 0 Test Clamp Default Clamp (330 290) internal clamp type v ac_type m ac_db false (150 350)(230 350) (230 350)(330 350) (150 330)(150 350) (330 320)(330 350) (330 250)(330 290) (250 250)(330 250) (150 250)(150 290) (150 290)(150 300) (150 250)(210 250) oregano-0.84.41/data/examples/Full-wave-bridge-rectifier.oregano0000644000175000017500000002117313413640652023513 0ustar rubenruben Full-wave-bridge-rectifier.oregano 0.84.13 true true true 0.0005 0.025 0.0001 false false false false VM(3) LIN 50 1 1e+06 false V1 3 0 0 0 false 0.000 false V1 3 DEC 50 1 1e+06 TEMP GMIN ABSTOL CHGTOL RELTOL VNTOL ITL1 ITL2 ITL4 PIVREL PIVTOL TNOM TRTOL DEFAD DEFAS DEFL DEFW 90 Resistor Default resistor (460 260) Refdes R1 Res 10k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Gnd Default Ground (170 370) internal ground 0 VSIN Default VSIN (140 280) Refdes V1 Offset 0.0 Amplitude 15 Frequency 60 DC 0.0 AC 0.0 Template V_@refdes %1 %2 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) Reference designator @refdes (15 10) 0 Diode Bridge Default bridge-d (330 250) Refdes D1 Template X_@refdes %1 %2 %3 %4 @model Model DiodeBridge Reference designator @refdes (-10 -15) 0 Test Clamp Default Clamp (450 260) internal clamp type v ac_type m ac_db false (380 250)(450 250) (450 250)(450 260) (450 300)(450 320) (320 320)(450 320) (320 250)(320 320) (350 280)(350 370) (150 370)(170 370) (170 370)(350 370) (350 190)(350 220) (150 190)(350 190) (150 190)(150 280) (150 320)(150 370) oregano-0.84.41/data/examples/simple2.oregano0000644000175000017500000002107213413640652020016 0ustar rubenruben simple2.oregano 0.84.13 (null) true true true 0 0.1 0.0001 true false false false VM(1) DEC 50 1 1e+06 true V1 1 -10 10 0.1 false 0.000 false V1 1 DEC 50 1 1e+06 TEMP GMIN ABSTOL CHGTOL RELTOL VNTOL ITL1 ITL2 ITL4 PIVREL PIVTOL TNOM TRTOL DEFAD DEFAS DEFL DEFW 0 VSIN Default VSIN (120 280) Refdes V1 Offset 0.0 Amplitude 220 Frequency 60 DC 0.0 AC 0.0 Template V_@refdes %1 %2 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) Reference designator @refdes (15 10) 0 Resistor Default resistor (400 190) Refdes R1 Res 1k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (15 30) 0 Diode Default diode (250 190) Refdes D1 Model 1N4148 Template 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) Reference designator @refdes (0 35) Model @model (-5 -5) 0 Gnd Default Ground (310 390) internal ground 0 Test Clamp Default Clamp (280 200) internal clamp type v ac_type m ac_db false (310 370)(310 390) (130 370)(310 370) (310 370)(490 370) (130 320)(130 370) (490 200)(490 370) (440 200)(490 200) (280 200)(400 200) (130 200)(130 280) (130 200)(250 200) oregano-0.84.41/data/examples/highquality/0000755000175000017500000000000013413640652017415 5ustar rubenrubenoregano-0.84.41/data/examples/highquality/PowerAmp.oregano0000644000175000017500000025152613413640652022536 0ustar rubenruben PowerAmp.oregano true true false 0 0.005 0.0001 false false true 100 10 40000 false 0 0 0 0 0 0 TEMP GMIN ABSTOL CHGTOL RELTOL VNTOL ITL1 ITL2 ITL4 PIVREL PIVTOL TNOM TRTOL DEFAD DEFAS DEFL DEFW 90 Resistor Default resistor (710 170) Refdes R10 Res 47 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (570 170) Refdes R9 Res 47 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Diode Photo Default photodiode (290 180) Refdes D1 Model LEDGREEN Template D_@refdes %1 %2 @model Reference designator @refdes (0 35) Model @model (15 0) 90 Capacitor Pol. Default cpol (220 180) Refdes C3 Cap 100u Template C_@refdes %1 %2 @cap Reference designator @refdes (15 0) Capacitance @cap (-5 37) 90 Resistor Default resistor (360 180) Refdes R4 Res 680 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Gnd Default Ground (860 220) internal ground 90 Diode Default diode (570 210) Refdes D2 Model 1N4148 Template D_@refdes %1 %2 @model Reference designator @refdes (0 35) Model @model (15 0) 180 Diode Default diode (890 230) Refdes D1 Model 1N4148 Template D_@refdes %1 %2 @model Reference designator @refdes (0 35) Model @model (15 0) 0 Resistor Default resistor (890 210) Refdes R19 Res 8.2K Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (960 160) Refdes R20 Res 56k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 Resistor Default resistor (860 270) Refdes R17 Res 22 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 vertical BJT PNP Default PNP (680 280) Refdes Q8 Model BF470 Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 5) Model @model (30 40) 0 vertical BJT PNP Default PNP (330 280) Refdes Q2 Model BC556B Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 5) Model @model (30 40) 90 Resistor Default resistor (220 280) Refdes R3 Res 10k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (710 290) Refdes R12 Res 1k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 Resistor Default resistor (960 330) Refdes R21 Res 330 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Capacitor Default capacitor (840 320) Refdes C6 Cap 220n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 0) Capacitance @cap (-2 37) 90 Resistor Default resistor (570 310) Refdes R11 Res 2,7k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (400 310) Refdes R6 Res 22 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (320 310) Refdes R5 Res 22 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 Gnd Default Ground (210 320) internal ground 0 horizontal BJT NPN Default NPN (940 320) Refdes Q10 Model BC546B Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 5) Model @model (30 40) 0 BJT NPN-DAR Default NPN-D (1040 270) Refdes Q12 Model BDV65B Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 -5) Model @model (-30 50) 0 BJT NPN-DAR Default NPN-D (760 330) Refdes Q9 Model BC517 Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 -5) Model @model (-30 50) 0 Test Clamp Default Clamp (190 390) internal punta type v ac_type m ac_db false 0 Resistor Default resistor (130 380) Refdes R1 Res 3.9k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 Capacitor Default capacitor (90 380) Refdes C1 Cap 1u IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 0) Capacitance @cap (-2 37) 0 Resistor Default resistor (470 380) Refdes R8 Res 33k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (1070 350) Refdes R25 Res 0.47 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 vertical BJT PNP Default PNP (290 410) Refdes Q1 Model BC556B Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 5) Model @model (30 40) 180 BJT PNP Default PNP (410 410) Refdes Q3 Model BC556B Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 5) Model @model (30 40) 180 Gnd Default Ground (630 420) internal ground 90 Resistor Default resistor (1070 390) Refdes R28 Res 0.47 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (710 410) Refdes R13 Res 470 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Capacitor Default capacitor (250 410) Refdes C2 Cap 560p IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 0) Capacitance @cap (-2 37) 90 Resistor Default resistor (200 410) Refdes R2 Res 22k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (460 410) Refdes R9 Res 1k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 Resistor Default resistor (960 430) Refdes R22 Res 330 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 180 BJT PNP Default PNP (940 460) Refdes Q11 Model BC556B Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 5) Model @model (30 40) 90 Resistor Default resistor (640 420) Refdes R14 Res 1.5k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 Gnd Default Ground (450 450) internal ground 0 Gnd Default Ground (240 450) internal ground 0 Gnd Default Ground (190 450) internal ground 0 Gnd Default Ground (60 450) internal ground 90 Resistor Default resistor (1160 390) Refdes R29 Res 0.47 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (1160 350) Refdes R26 Res 0.47 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 BJT NPN-DAR Default NPN-D (1130 270) Refdes Q13 Model BDV65B Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 -5) Model @model (-30 50) 0 Resistor Default resistor (860 490) Refdes R18 Res 22 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 vertical BJT PNP-DAR Default PNP-D (1040 510) Refdes Q15 Model BDV64B Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 -5) Model @model (-30 50) 90 Diode Photo Default photodiode (620 490) Refdes D3 Model LEDGREEN Template D_@refdes %1 %2 @model Reference designator @refdes (0 35) Model @model (15 0) 90 Capacitor Pol. Default cpol (660 490) Refdes C4 Cap 47u Template C_@refdes %1 %2 @cap Reference designator @refdes (15 0) Capacitance @cap (-5 37) 0 vertical BJT PNP-DAR Default PNP-D (1130 510) Refdes Q16 Model BDV64B Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 -5) Model @model (-30 50) 0 BJT NPN Default NPN (680 520) Refdes Q6 Model BF469 Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 5) Model @model (30 40) 0 horizontal BJT NPN Default NPN (580 520) Refdes Q5 Model BF469 Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 5) Model @model (30 40) 0 horizontal BJT NPN Default NPN (780 520) Refdes Q7 Model BC550C Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 5) Model @model (30 40) 0 BJT NPN Default NPN (480 520) Refdes Q4 Model BC550C Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 5) Model @model (30 40) 0 Resistor Default resistor (890 550) Refdes R23 Res 8.2k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 Diode Default diode (860 550) Refdes D3 Model 1N4148 Template D_@refdes %1 %2 @model Reference designator @refdes (0 35) Model @model (15 0) 90 Gnd Default Ground (860 560) internal ground 0 vertical BJT PNP-DAR Default PNP-D (1220 510) Refdes Q17 Model BDV64B Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 -5) Model @model (-30 50) 90 Resistor Default resistor (1250 390) Refdes R30 Res 0.47 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (1250 350) Refdes R27 Res 0.47 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 BJT NPN-DAR Default NPN-D (1220 270) Refdes Q14 Model BDV65B Template Q_@refdes %c %b %e @model Reference designator @refdes (-5 -5) Model @model (-30 50) 90 Capacitor Pol. Default cpol (670 590) Refdes C5 Cap 47u Template C_@refdes %1 %2 @cap Reference designator @refdes (15 0) Capacitance @cap (-5 37) 90 Resistor Default resistor (960 580) Refdes R24 Res 56k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (320 580) Refdes R6 Res 2k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (400 580) Refdes R7 Res 2k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (540 580) Refdes R15 Res 47 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Resistor Default resistor (740 580) Refdes R16 Res 47 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 90 Diode Photo Default photodiode (610 590) Refdes D2 Model LEDGREEN Template D_@refdes %1 %2 @model Reference designator @refdes (0 35) Model @model (15 0) 90 VDC Default VDC (1310 630) Refdes V2 DC 65.0 Template V_@refdes %+ %- dc @DC Reference designator @refdes (25 10) 0 Gnd Default Ground (1310 460) internal ground 90 Resistor Default resistor (1320 420) Refdes R21 Res 1k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 270 VDC Default VDC (1270 150) Refdes V1 DC 65.0 Template V_@refdes %+ %- dc @DC Reference designator @refdes (25 10) 0 Test Clamp Default Clamp (1310 390) internal punta type v ac_type m ac_db false 270 Gnd Default Ground (1310 640) internal ground 270 Gnd Default Ground (1310 140) internal ground 0 VSIN Default VSIN (50 410) Refdes V1 Offset 0.0 Amplitude 1.0 Frequency 1.0 DC 0.0 AC 1.0 Template V_@refdes %+ %- dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) Reference designator @refdes (15 10) (560 140)(560 170) (350 140)(350 180) (280 140)(280 180) (210 140)(210 180) (700 140)(700 170) (700 210)(700 240) (350 220)(350 240) (560 260)(680 260) (280 210)(280 260) (210 260)(330 260) (950 140)(950 160) (930 220)(950 220) (700 280)(860 280) (700 280)(700 290) (210 210)(210 280) (310 300)(390 300) (350 280)(350 300) (1000 220)(1000 280) (920 280)(920 320) (830 280)(830 320) (780 280)(780 320) (560 240)(560 310) (390 300)(390 310) (310 300)(310 310) (900 280)(1020 280) (940 340)(960 340) (950 200)(950 340) (700 340)(740 340) (920 370)(930 370) (920 360)(920 370) (1060 310)(1060 350) (1000 340)(1060 340) (1060 140)(1060 260) (390 350)(390 370) (310 350)(310 370) (930 370)(930 390) (410 390)(470 390) (120 390)(130 390) (60 390)(90 390) (170 390)(290 390) (700 330)(700 410) (450 390)(450 410) (240 390)(240 410) (190 390)(190 410) (60 390)(60 410) (1090 220)(1090 280) (920 390)(920 420) (1090 280)(1110 280) (240 440)(240 450) (1000 440)(1060 440) (940 440)(960 440) (500 460)(760 460) (1150 430)(1150 470) (1060 430)(1060 470) (1150 310)(1150 350) (1150 140)(1150 260) (610 460)(610 490) (650 460)(650 490) (390 480)(810 480) (700 500)(860 500) (900 500)(1020 500) (920 460)(920 500) (1090 500)(1110 500) (780 370)(780 500) (830 350)(830 500) (1180 220)(1180 280) (1000 220)(1180 220) (700 450)(700 520) (580 540)(680 540) (310 540)(480 540) (610 520)(610 540) (650 520)(650 540) (560 350)(560 520) (760 460)(760 520) (500 460)(500 520) (810 480)(810 540) (780 540)(810 540) (1180 500)(1200 500) (1180 280)(1200 280) (930 560)(950 560) (1000 500)(1000 560) (1000 560)(1180 560) (1180 500)(1180 560) (1090 500)(1090 560) (600 540)(600 590) (660 540)(660 590) (310 410)(310 580) (390 410)(390 580) (500 560)(500 580) (560 560)(560 580) (500 580)(560 580) (700 560)(700 580) (760 560)(760 580) (700 580)(760 580) (950 440)(950 580) (1240 430)(1240 470) (1240 310)(1240 350) (1240 140)(1240 260) (210 140)(1270 140) (310 640)(1270 640) (310 620)(310 640) (390 620)(390 640) (530 620)(530 640) (730 620)(730 640) (660 620)(660 640) (600 620)(600 640) (1240 520)(1240 640) (1150 520)(1150 640) (1060 520)(1060 640) (950 620)(950 640) (1310 390)(1310 420) (510 390)(1310 390) oregano-0.84.41/data/examples/highquality/GuitarSoundModulatorSim.oregano0000644000175000017500000007203713413640652025606 0ustar rubenruben GuitarSoundModulatorSim.oregano true true false 0 2 0.0001 false true true 100 10 10000 false 0 0 0 0 0 0 TEMP GMIN ABSTOL CHGTOL RELTOL VNTOL ITL1 ITL2 ITL4 PIVREL PIVTOL TNOM TRTOL DEFAD DEFAS DEFL DEFW 0 Capacitor Default capacitor (630 150) Refdes C5 Cap 6.8n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Capacitor Default capacitor (670 310) Refdes C4 Cap 1u IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 270 VDC Default VDC (910 250) Refdes V2 DC 9.0 Template V_@refdes %+ %- dc @DC Reference designator @refdes (25 10) 0 Test Clamp Default Clamp (760 320) internal punta type v ac_type m ac_db false 0 Capacitor Default capacitor (470 320) Refdes C2 Cap 3.9n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 OPAMP+P Default OPAMPP (560 300) Refdes U3 Model TL064 Template X_@refdes %in+ %in- %V+ %V- %out @model Reference designator @refdes (20 0) Model @model (40 40) 270 Gnd Default Ground (950 240) internal ground 90 Resistor Default resistor (530 370) Refdes R3 Res 2.2Meg Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Capacitor Default capacitor (790 400) Refdes C3 Cap 3.9n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Test Clamp Default Clamp (950 400) internal punta type v ac_type m ac_db false 0 Gnd Default Ground (520 410) internal ground 0 OPAMP+P Default OPAMPP (890 380) Refdes U4 Model TL064 Template X_@refdes %in+ %in- %V+ %V- %out @model Reference designator @refdes (20 0) Model @model (40 40) 90 Resistor Default resistor (770 440) Refdes R5 Res 49k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Resistor Default resistor (860 440) Refdes R6 Res 2.2Meg Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Gnd Default Ground (760 480) internal ground 0 Gnd Default Ground (850 480) internal ground 180 VDC Default VDC (590 560) Refdes V3 DC 9.0 Template V_@refdes %+ %- dc @DC Reference designator @refdes (25 10) 0 Gnd Default Ground (580 560) internal ground 90 Resistor Default resistor (770 350) Refdes R4 Res 1 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Gnd Default Ground (250 470) internal ground 90 Inductor Default inductor (260 420) Refdes L1 Ind 5.3H Template L_@refdes %1 %2 @ind Reference designator @refdes (20 0) Inductance @ind (20 30) 0 Gnd Default Ground (330 430) internal ground 90 Capacitor Default capacitor (340 400) Refdes C1 Cap 180p IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Gnd Default Ground (90 400) internal ground 90 Resistor Default resistor (260 360) Refdes R2 Res 7.4k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 VSIN Default VSIN (80 360) Refdes V1 Offset 0.0 Amplitude 1.0 Frequency 1.0 DC 0.0 AC 1.0 Template V_@refdes %+ %- dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) Reference designator @refdes (15 10) 0 Resistor Default resistor (180 320) Refdes R1 Res 330k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Test Clamp Default Clamp (330 330) internal punta type v ac_type m ac_db false (540 270)(620 270) (580 240)(580 290) (580 240)(910 240) (500 330)(540 330) (540 270)(540 310) (620 270)(620 320) (620 320)(670 320) (700 320)(760 320) (520 330)(520 370) (760 320)(760 350) (870 350)(950 350) (910 240)(910 370) (760 410)(790 410) (820 410)(870 410) (870 350)(870 390) (950 350)(950 400) (760 390)(760 440) (850 410)(850 440) (660 160)(1030 160) (1030 160)(1030 400) (950 400)(1030 400) (910 430)(910 520) (580 520)(910 520) (580 350)(580 520) (250 400)(250 420) (330 330)(330 400) (250 330)(250 360) (90 330)(90 360) (290 160)(290 330) (290 160)(630 160) (90 330)(180 330) (220 330)(470 330) oregano-0.84.41/data/examples/highquality/GuitarPreAmpA.oregano0000644000175000017500000022621413413640652023441 0ustar rubenruben GuitarPreAmpA.oregano true true false 0 0.005 0.0001 false false true 100 10 20000 false 0 0 0 0 0 0 TEMP GMIN ABSTOL CHGTOL RELTOL VNTOL ITL1 ITL2 ITL4 PIVREL PIVTOL TNOM TRTOL DEFAD DEFAS DEFL DEFW 90 Resistor Default resistor (750 630) Refdes R27 Res 2.7k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (800 580) Refdes R31 Res 5k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (520 580) Refdes R22 Res 5k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (580 580) Refdes R23 Res 1.8k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (-10 40) 0 Resistor Default resistor (420 580) Refdes R20 Res 1.8k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (-10 40) 0 Test Clamp Default Clamp (410 690) internal punta type v ac_type m ac_db false 0 Resistor Default resistor (470 580) Refdes R21 Res 5k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Capacitor Default capacitor (300 580) Refdes C8 Cap 150n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 90 Gnd Default Ground (350 840) internal ground 90 VDC Default VDC (390 830) Refdes V1 DC 15.0 Template V_@refdes %+ %- dc @DC Reference designator @refdes (25 10) 90 Gnd Default Ground (250 420) internal ground 90 horizontal VDC Default VDC (250 410) Refdes V2 DC 15.0 Template V_@refdes %+ %- dc @DC Reference designator @refdes (25 10) 90 Resistor Default resistor (850 150) Refdes R13 Res 6.8k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Test Clamp Default Clamp (890 660) internal punta type v ac_type m ac_db false 0 Test Clamp Default Clamp (630 590) internal punta type v ac_type m ac_db false 0 OPAMP+P Default OPAMPP (830 680) Refdes U3 Model LM324 Template X_@refdes %in+ %in- %V+ %V- %out @model Reference designator @refdes (20 0) Model @model (40 40) 0 OPAMP+P Default OPAMPP (540 680) Refdes U2 Model LM324 Template X_@refdes %in+ %in- %V+ %V- %out @model Reference designator @refdes (20 0) Model @model (40 40) 0 OPAMP+P Default OPAMPP (340 680) Refdes U1 Model LM324 Template X_@refdes %in+ %in- %V+ %V- %out @model Reference designator @refdes (20 0) Model @model (40 40) 90 Resistor Default resistor (850 330) Refdes R14 Res 240 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Test Clamp Default Clamp (930 190) internal punta type v ac_type m ac_db false 0 Gnd Default Ground (740 790) internal ground 90 Resistor Default resistor (750 750) Refdes R30 Res 2.7k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Gnd Default Ground (810 740) internal ground 90 Resistor Default resistor (750 710) Refdes R29 Res 50k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Capacitor Default capacitor (820 710) Refdes C11 Cap 6.8n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Gnd Default Ground (520 710) internal ground 0 Gnd Default Ground (320 710) internal ground 90 Resistor Default resistor (750 670) Refdes R28 Res 50k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (450 680) Refdes R19 Res 100k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (540 640) Refdes R24 Res 100k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (330 630) Refdes R17 Res 5k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (370 630) Refdes R18 Res 1.8k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (270 630) Refdes R16 Res 5k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (230 630) Refdes R15 Res 1.8k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (660 650) Refdes R25 Res 10k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (820 650) Refdes R32 Res 10k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Resistor Default resistor (660 580) Refdes R26 Res 5k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Capacitor Default capacitor (750 590) Refdes C10 Cap 6.8n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 VAC Default VSIN (140 300) Refdes V3 Offset 0.0 Amplitude 1.0 Frequency 1.0 DC 0.0 Template V_@refdes %+ %- dc @dc ac 1.0 sin(@Offset @Amplitude @Frequency 0 0) Reference designator @refdes (15 10) AC Leyend AC (15 45) 0 Gnd Default Ground (150 340) internal ground 0 Resistor Default resistor (170 270) Refdes R1 Res 330k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Capacitor Default capacitor (230 270) Refdes C1 Cap 220n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 90 Resistor Default resistor (300 310) Refdes R3 Res 1Meg Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Test Clamp Default Clamp (290 280) internal punta type v ac_type m ac_db false 0 Resistor Default resistor (320 270) Refdes R2 Res 100k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Gnd Default Ground (370 340) internal ground 90 Capacitor Default capacitor (380 310) Refdes C2 Cap 22p IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 90 Resistor Default resistor (440 330) Refdes R5 Res 240 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Resistor Default resistor (440 140) Refdes R4 Res 6.8k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Resistor Default resistor (530 190) Refdes R6 Res 22k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Test Clamp Default Clamp (520 180) internal punta type v ac_type m ac_db false 0 Capacitor Default capacitor (520 310) Refdes C5 Cap 8.2n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Capacitor Default capacitor (530 170) Refdes C3 Cap 1.8n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Capacitor Default capacitor (540 240) Refdes C4 Cap 1u IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Gnd Default Ground (590 370) internal ground 90 Resistor Default resistor (600 190) Refdes R7 Res 56k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Resistor Default resistor (600 260) Refdes R8 Res 6.8k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Resistor Default resistor (600 330) Refdes R9 Res 4.7k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Capacitor Default capacitor (560 500) Refdes C7 Cap 4.7u IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 90 Capacitor Default capacitor (520 610) Refdes C9 Cap 1.5n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 90 Resistor Default resistor (680 250) Refdes R10 Res 6.8k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 FET J N Default JFET-N (410 260) Refdes J1 Model BC264A Template J_@refdes %d %s %g @model Reference designator @refdes (-5 5) Model @model (30 40) 0 FET J N Default JFET-N (650 160) Refdes J3 Model BC264A Template J_@refdes %d %s %g @model Reference designator @refdes (-5 5) Model @model (30 40) 0 FET J N Default JFET-N (820 270) Refdes J4 Model BC264A Template J_@refdes %d %s %g @model Reference designator @refdes (-5 5) Model @model (30 40) 0 horizontal FET J N Default JFET-N (860 210) Refdes J5 Model BC264A Template J_@refdes %d %s %g @model Reference designator @refdes (-5 5) Model @model (30 40) 0 horizontal FET J N Default JFET-N (450 200) Refdes J2 Model BC264A Template J_@refdes %d %s %g @model Reference designator @refdes (-5 5) Model @model (30 40) 90 Resistor Default resistor (770 310) Refdes R12 Res 47k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Resistor Default resistor (770 230) Refdes R11 Res 200k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 37) 0 Capacitor Default capacitor (700 200) Refdes C6 Cap 1u IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) (620 590)(660 590) (560 590)(580 590) (510 590)(520 590) (460 590)(470 590) (410 590)(420 590) (270 590)(270 640) (370 590)(370 640) (270 590)(300 590) (330 590)(370 590) (1010 130)(1010 840) (880 670)(880 840) (590 670)(590 840) (390 670)(390 840) (390 840)(1010 840) (560 730)(560 800) (360 730)(360 800) (850 730)(850 800) (840 370)(840 420) (430 130)(1010 130) (840 130)(840 150) (850 670)(880 670) (560 670)(590 670) (360 670)(390 670) (670 130)(670 160) (670 200)(670 250) (840 190)(840 210) (840 250)(840 270) (840 310)(840 330) (900 230)(900 320) (840 320)(900 320) (860 230)(900 230) (840 190)(930 190) (670 290)(670 420) (740 710)(810 710) (400 700)(410 700) (410 590)(410 700) (320 640)(320 690) (410 690)(450 690) (490 690)(520 690) (510 650)(540 650) (310 640)(330 640) (630 590)(630 700) (600 700)(630 700) (580 650)(630 650) (630 660)(660 660) (700 660)(820 660) (860 660)(890 660) (810 660)(810 690) (740 620)(740 630) (700 590)(800 590) (840 590)(890 590) (890 590)(890 700) (150 280)(150 300) (150 280)(170 280) (210 280)(230 280) (260 280)(320 280) (290 350)(290 420) (290 280)(290 310) (370 280)(370 310) (430 180)(530 180) (430 310)(490 310) (430 370)(430 420) (430 300)(430 330) (430 240)(430 260) (430 180)(430 200) (430 130)(430 140) (450 220)(490 220) (490 220)(490 310) (520 180)(520 190) (520 230)(520 320) (520 250)(540 250) (550 320)(590 320) (570 250)(590 250) (590 180)(590 190) (590 230)(590 260) (590 300)(590 330) (590 510)(930 510) (930 190)(930 510) (230 510)(560 510) (230 510)(230 640) (510 640)(510 690) (510 590)(510 610) (560 180)(650 180) (970 420)(970 800) (290 420)(970 420) (360 800)(970 800) (360 280)(410 280) (760 350)(760 420) (760 270)(760 310) (760 210)(760 230) (760 290)(820 290) (730 210)(760 210) (670 210)(700 210) oregano-0.84.41/data/examples/highquality/GuitarSoundModulatorTra.oregano0000644000175000017500000007542313413640652025606 0ustar rubenruben GuitarSoundModulatorTran.oregano true true false 0 0.005 0.0001 false false true 50 10 10000 false 0 0 0 0 0 0 TEMP GMIN ABSTOL CHGTOL RELTOL VNTOL ITL1 ITL2 ITL4 PIVREL PIVTOL TNOM TRTOL DEFAD DEFAS DEFL DEFW 0 Capacitor Default capacitor (650 70) Refdes C5 Cap 8.2n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Gnd Default Ground (390 340) internal ground 90 Capacitor Default capacitor (400 310) Refdes C6 Cap 180p IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Resistor Default resistor (270 300) Refdes R1 Res 330k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Resistor Default resistor (350 330) Refdes R9 Res 7.4k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Test Clamp Default Clamp (340 310) internal punta type v ac_type m ac_db false 90 Inductor Default inductor (350 370) Refdes L1 Ind 5.3H Template L_@refdes %1 %2 @ind Reference designator @refdes (20 0) Inductance @ind (20 30) 0 Gnd Default Ground (340 420) internal ground 90 Resistor Default resistor (800 250) Refdes R6 Res 18k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Gnd Default Ground (790 400) internal ground 90 Resistor Default resistor (760 400) Refdes R5 Res 2.2Meg Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 VDC Default VDC (480 470) Refdes V2 DC 4.4 Template V_@refdes %+ %- dc @DC Reference designator @refdes (25 10) 0 Gnd Default Ground (490 510) internal ground 0 vertical BJT PNP Default PNP (770 380) Refdes Q2 Model BC560C Template Q_@refdes %c %b %e @model Reference designator @refdes (0 0) Model @model (30 40) 0 Capacitor Default capacitor (700 350) Refdes C4 Cap 3.3n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Gnd Default Ground (670 410) internal ground 90 Resistor Default resistor (680 370) Refdes R8 Res 1 Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Resistor Default resistor (680 310) Refdes R4 Res 22k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 vertical BJT PNP Default PNP (510 330) Refdes Q1 Model BC560C Template Q_@refdes %c %b %e @model Reference designator @refdes (0 0) Model @model (30 40) 0 vertical VDC Default VDC (520 170) Refdes V3 DC 9.0 Template V_@refdes %+ %- dc @DC Reference designator @refdes (25 10) 0 vertical Gnd Default Ground (530 130) internal ground 0 Gnd Default Ground (220 370) internal ground 0 Gnd Default Ground (530 330) internal ground 0 Capacitor Default capacitor (600 280) Refdes C3 Cap 1u IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 90 Resistor Default resistor (540 210) Refdes R3 Res 18k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 90 Resistor Default resistor (500 350) Refdes R2 Res 2.2Meg Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 Capacitor Default capacitor (430 300) Refdes C2 Cap 3.3n IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 VSIN Default VSIN (210 330) Refdes V1 Offset 0.0 Amplitude 1.0 Frequency 1.0 DC 0.0 AC 1.0 Template V_@refdes %+ %- dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) Reference designator @refdes (15 10) 0 Test Clamp Default Clamp (220 310) internal punta type v ac_type m ac_db false 0 Test Clamp Default Clamp (670 290) internal punta type v ac_type m ac_db false (680 80)(890 80) (410 80)(650 80) (790 310)(890 310) (410 80)(410 310) (310 310)(430 310) (220 310)(270 310) (340 310)(340 330) (890 80)(890 310) (790 200)(790 250) (530 200)(790 200) (790 290)(790 340) (790 380)(790 400) (750 360)(750 400) (730 360)(770 360) (490 460)(750 460) (750 440)(750 460) (670 360)(700 360) (670 350)(670 370) (490 390)(490 470) (630 290)(670 290) (670 290)(670 310) (530 170)(530 210) (530 290)(600 290) (530 250)(530 290) (490 310)(490 350) (460 310)(510 310) (220 310)(220 330) oregano-0.84.41/data/examples/capacitor_charge.oregano0000644000175000017500000002012013413640652021712 0ustar rubenruben Gazer capacitor_charge.oregano 0.84.13 algo loco true true true 0 0.01 0.0001 false true false false DEC 50 1 1e+06 false 0 0 0 false 0.000 false DEC 50 1 1e+06 TEMP GMIN ABSTOL CHGTOL RELTOL VNTOL ITL1 ITL2 ITL4 PIVREL PIVTOL TNOM TRTOL DEFAD DEFAS DEFL DEFW 90 Capacitor Default capacitor (370 230) Refdes C1 Cap 1u IC 0 Template C_@refdes %1 %2 @cap IC=@IC Reference designator @refdes (15 -10) Capacitance @cap (15 40) 0 Resistor Default resistor (240 160) Refdes R1 Res 1k Template R_@refdes %1 %2 @res Reference designator @refdes (15 0) Resistance @res (0 30) 0 VDC Default VDC (120 220) Refdes V1 DC 1.0 Template V_@refdes %1 %2 dc @DC Reference designator @refdes (25 10) 0 Gnd Default Ground (240 320) internal ground 0 Test Clamp Default Clamp (360 230) internal clamp type v ac_type m ac_db false (130 170)(240 170) (130 170)(130 220) (360 170)(360 230) (280 170)(360 170) (130 260)(130 300) (360 260)(360 300) (130 300)(240 300) (240 300)(360 300) (240 300)(240 320) oregano-0.84.41/data/models/0000755000175000017500000000000013413640652014532 5ustar rubenrubenoregano-0.84.41/data/models/IRF433.model0000644000175000017500000000042613413640652016430 0ustar rubenruben.model IRF433 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=2.514m Kp=20.56u W=.33 L=2u Vto=3.783 + Rd=1.014 Rds=2MEG Cbd=677.2p Pb=.8 Mj=.5 Fc=.5 Cgso=1.709n + Cgdo=152.1p Rg=.5011 Is=61.41p N=1 Tt=585n) * IR pid=IRF433 case=TO3 oregano-0.84.41/data/models/BC846A.model0000644000175000017500000000050513413640652016403 0ustar rubenruben.model BC846A NPN(IS=7.049f XTI=3 EG=1.11 VAF=106.8 BF=182.9 ISE=85.16f + NE=1.709 IKF=.1196 Nk=.5227 Xtb=1.5 Br=3.988 Isc=10.68f + Nc=2.417 Ikr=2.721 Rc=1.374 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=9.485p Mje=.3333 Vje=.5 Tr=10n Tf=662.3p Itf=1.577 + Xtf=14.27 Vtf=10) * MFG=SIEMENS pid=bc846a case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/SFH400.model0000644000175000017500000000020013413640652016410 0ustar rubenruben.MODEL SFH400 D (IS=234P RS=.555 N=2.51 BV=5 IBV=10N + CJO=40P VJ=.75 M=.333 TT=1.44U) * Siemens 5 Volt .3 Amp 1 us GaAs Diode oregano-0.84.41/data/models/IRF233.model0000644000175000017500000000042313413640652016423 0ustar rubenruben.model IRF233 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=93.46m Kp=20.73u W=.67 L=2u Vto=3.37 + Rd=.2829 Rds=666.7K Cbd=933p Pb=.8 Mj=.5 Fc=.5 Cgso=2.819n + Cgdo=117p Rg=3.492 Is=114.2p N=1 Tt=515n) * IR pid=IRF233 case=TO3 oregano-0.84.41/data/models/BC858C.model0000644000175000017500000000050013413640652016403 0ustar rubenruben.model BC858C PNP(IS=336.7f XTI=3 EG=1.11 VAF=29.03 BF=462.2 ISE=1.648p + NE=2.405 IKF=.1165 Nk=.5254 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.791 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.4p Itf=3.088 Xtf=41.48 Vtf=10) * MFG=SIEMENS pid=bc858c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF130.model0000644000175000017500000000042713413640652016423 0ustar rubenruben.model IRF130 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=74.91m Kp=20.8u W=.9 L=2u Vto=3.412 + Rd=26.95m Rds=444.4K Cbd=1.115n Pb=.8 Mj=.5 Fc=.5 Cgso=679.6p + Cgdo=197.4p Rg=5.286 Is=2.522p N=1 Tt=125n) * IR pid=IRF130 case=TO3 oregano-0.84.41/data/models/2N3393.model0000644000175000017500000000055113413640652016356 0ustar rubenruben.model 2N3393 NPN(IS=12.03E-15 ISE=8.195E-12 ISC=0 XTI=3 + BF=154.1 BR=4.379 IKF=0.1072 IKR=0 XTB=1.5 + VAF=37.37 VAR=12.5 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=8.307E-12 CJC=5.777E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.971 NC=2 MJE=0.384 MJC=0.3199 + TF=385.4E-12 TR=783.8E-12 ITF=0.17 VTF=3 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=500M MFG=NSC) oregano-0.84.41/data/models/IRF232.model0000644000175000017500000000042413413640652016423 0ustar rubenruben.model IRF232 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=93.46m Kp=20.73u W=.67 L=2u Vto=3.37 + Rd=.2829 Rds=888.9K Cbd=933p Pb=.8 Mj=.5 Fc=.5 Cgso=2.849n + Cgdo=86.79p Rg=5.64 Is=114.2p N=1 Tt=515n) * IR pid=IRF232 case=TO3 oregano-0.84.41/data/models/2N4917.model0000644000175000017500000000053413413640652016362 0ustar rubenruben.model 2N4917 PNP(IS=1.41E-15 ISE=0 ISC=0 XTI=3 + BF=219.7 BR=4.894 IKF=80E-3 IKR=0 XTB=1.5 + VAF=18.7 VAR=6.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=2.5 RB=10 + CJE=8.063E-12 CJC=9.728E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.5 NC=2 MJE=0.3677 MJC=0.5776 + TF=179.3E-12 TR=33.13E-9 ITF=0.4 VTF=4 XTF=6 + EG=1.11 KF=1E-9 AF=1 + VCEO=30 ICRATING=50M MFG=NSC) oregano-0.84.41/data/models/BF904RW.model0000644000175000017500000000342713413640652016557 0ustar rubenruben* BF904WR SPICE MODEL OCTOBER 1993 PHILIPS SEMICONDUCTORS * ENVELOPE SOT343 * 1.: SOURCE; 2.: DRAIN; 3.: GATE 2; 4.: GATE 1; .SUBCKT BF904WR/PLP 1 2 3 4 L10 1 10 0.10N L20 2 20 0.34N L30 3 30 0.34N L40 4 40 0.34N L11 10 11 1.10N L21 20 21 1.10N L31 30 31 1.10N L41 40 41 1.10N C13 10 30 0.060P C14 10 40 0.060P C21 10 20 0.050P C23 20 30 0.070P C24 20 40 0.005P D11 11 41 ZENER D22 11 31 ZENER RSUB 10 12 10 MOS1A 61 41 11 12 GATE1 L=1.1E-6 W=1150E-6 MOS2A 21 31 61 12 GATE2 L=2.0E-6 W=1150E-6 MOS1B 71 41 11 12 GATE3 L=1.1E-6 W= 6E-6 MOS2B 41 31 71 12 GATE4 L=4.0E-6 W= 6E-6 .MODEL ZENER + D BV=10 CJO=0.6E-12 RS=10 .MODEL GATE1 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=140E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12 .MODEL GATE2 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=100E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=1.5E-12 CBS=0.5E-12 .MODEL GATE3 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=140E3 RS=400 RD=400 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.1E-12 CBS=0.1E-12 .MODEL GATE4 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=100E3 RS=400 RD=400 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.1E-12 CBS=0.1E-12 .ENDS * *$ oregano-0.84.41/data/models/IRF152.model0000644000175000017500000000043013413640652016421 0ustar rubenruben.model IRF152 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.624m Kp=20.53u W=.3 L=2u Vto=2.831 + Rd=9.538m Rds=444.4K Cbd=3.229n Pb=.8 Mj=.5 Fc=.5 Cgso=9.027n + Cgdo=1.679n Rg=13.89 Is=16.21f N=1 Tt=288n) * IR pid=IRF152 case=TO3 oregano-0.84.41/data/models/BSW68A.model0000644000175000017500000000047013413640652016467 0ustar rubenruben.model BSW68A NPN(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=315.4 ISE=102f NE=1.261 + IKF=.8199 Nk=.7642 Xtb=1.5 Br=4.824 Isc=159.8f Nc=1.705 + Ikr=.3971 Rc=.2572 Cjc=52p Mjc=.3767 Vjc=.5 Fc=.5 Cje=240p + Mje=.2501 Vje=.5 Tr=10n Tf=1.05n Itf=2.639 Xtf=36.17 Vtf=10) * MFG=PHILIPS pid=bsw66a case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/IRF731.model0000644000175000017500000000043313413640652016427 0ustar rubenruben.model IRF731 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=27.94m Kp=20.5u W=.43 L=2u Vto=3.474 + Rd=.8665 Rds=1.556MEG Cbd=701.9p Pb=.8 Mj=.5 Fc=.5 Cgso=1.33n + Cgdo=168.3p Rg=47.04m Is=34.73p N=1 Tt=515n) * IR pid=IRF731 case=TO220 oregano-0.84.41/data/models/BCY79-10.model0000644000175000017500000000047613413640652016576 0ustar rubenruben.model BCY79-10 PNP(IS=55.58p XTI=3 EG=1.11 VAF=35.7 BF=523.4 ISE=161.8p + NE=2.89 IKF=70.98m Nk=.5 Xtb=1.5 Br=2.429 Isc=34.94n Nc=2.499 + Ikr=1.387 Rc=2.829 Cjc=16p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p + Mje=.3333 Vje=.5 Tr=262.5n Tf=763p Itf=5.411 Xtf=180.8 Vtf=10) * MFG=PHILIPS pid=bcy79-10 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/TIP115.model0000644000175000017500000000074213413640652016442 0ustar rubenruben.SUBCKT TIP115 1 2 3 * TERMINALS: C B E * 60 Volt 2 Amp PNP Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 60 D1 1 3 DSUB .MODEL QPWR PNP (IS=2.4P NF=1 BF=142 VAF=139 IKF=2.4 ISE=168P NE=2 + BR=4 NR=1 VAR=20 IKR=3.6 RE=.45 RB=1.8 RC=.18 XTB=1.5 + CJE=382P VJE=.74 MJE=.45 CJC=99.3P VJC=1.1 MJC=.24 TF=85.3N TR=3.68U) .MODEL DSUB D (IS=2.4P N=1 RS=.45 BV=60 IBV=.001 CJO=99.3P TT=3.68U) .ENDS * TIP115, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/BDP947.model0000644000175000017500000000065513413640652016433 0ustar rubenruben.model BDP947 NPN(IS=0.650E-12 ISE=0.178E-12 ISC=38.669E-15 XTI=4.900 + BF=237.934 BR=25.0 IKF=3.900 IKR=3.200 XTB=2.400 + VAF=135.0 VAR=22.0 VJE=0.800 VJC=0.730 + RE=45.000E-3 RC=0.173 RB=0.250 RBM=0.200 IRB=10.000E-3 + CJE=0.430E-9 CJC=88.500E-12 XCJC=0.723 FC=0.500 + NF=1.004 NR=1.015 NE=1.649 NC=1.062 MJE=0.350 MJC=0.435 + TF=1.010E-9 TR=0.100E-6 PTF=1.0 ITF=0.900 VTF=0.350 XTF=0.900 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/MBR1545C.model0000644000175000017500000000023413413640652016615 0ustar rubenruben.MODEL MBR1545C D (IS=31.3N RS=15.5M N=.769 BV=45 IBV=15U + CJO=309P VJ=.75 M=.333 TT=1N EG=.69 XTI=2) * Motorola MBR1545CT 45 Volt 7.5 Amp .5 us Si Diode oregano-0.84.41/data/models/SFH421.model0000644000175000017500000000017713413640652016430 0ustar rubenruben.MODEL SFH421 D (IS=11P RS=1.57 N=2.18 BV=5 IBV=10N + CJO=25P VJ=.75 M=.333 TT=864N) * Siemens 5 Volt .1 Amp .6 us GaAs Diode oregano-0.84.41/data/models/2N3391A.model0000644000175000017500000000056613413640652016463 0ustar rubenruben.model 2N3391A NPN(IS=12.03E-15 ISE=2.953E-12 ISC=0 XTI=3 + BF=427.8 BR=4.379 IKF=0.1072 IKR=0 XTB=1.5 + VAF=37.37 VAR=12.5 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=8.307E-12 CJC=5.777E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.971 NC=2 MJE=0.384 MJC=0.3199 + TF=385.4E-12 TR=701.7E-12 ITF=0.17 VTF=3 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=500E-3 MFG=NSC/FAIRCHILD) oregano-0.84.41/data/models/2N6806.model0000644000175000017500000000042713413640652016362 0ustar rubenruben.model 2N6806 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=.1722 Kp=10.45u W=2 L=2u Vto=-3.345 + Rd=.5117 Rds=888.9MEG Cbd=783.8p Pb=.8 Mj=.5 Fc=.5 Cgso=1.984n + Cgdo=41.82p Rg=1.03 Is=759.7f N=4 Tt=555n) * IR pid=2N6806 case=TO3 oregano-0.84.41/data/models/BF621.model0000644000175000017500000000053613413640652016300 0ustar rubenruben.model BF621 PNP(IS=4E-14 ISE=8E-15 ISC=8E-12 XTI=3 + BF=105 BR=4 IKF=800E-3 IKR=55E-3 XTB=1.5 + VAF=300 VAR=40 VJE=0.65 VJC=0.536 + RE=0.1 RC=0.1 RB=9 + CJE=80.9E-12 CJC=16.9E-12 XCJC=0.75 FC=0.5 + NF=1.01 NR=1 NE=1.38 NC=1.3 MJE=0.382 MJC=0.382 + TF=0.7E-9 TR=1.6E-6 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX GAMMA=0.85E-7 RCO=59) oregano-0.84.41/data/models/BC107A.model0000644000175000017500000000047513413640652016377 0ustar rubenruben.model BC107A NPN(IS=7.049f XTI=3 EG=1.11 VAF=116.3 BF=375.5 ISE=7.049f + NE=1.281 IKF=4.589 Nk=.5 Xtb=1.5 Br=2.611 Isc=121.7p Nc=1.865 + Ikr=5.313 Rc=1.464 Cjc=5.38p Mjc=.329 Vjc=.6218 Fc=.5 Cje=11.5p + Mje=.2717 Vje=.5 Tr=10n Tf=451p Itf=6.194 Xtf=17.43 Vtf=10) * MFG=PHILIPS pid=bc107a case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BC807-25.model0000644000175000017500000000050413413640652016522 0ustar rubenruben.model BC807-25 PNP(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=340 ISE=288.9f NE=1.568 + IKF=.4118 Nk=.5241 Xtb=1.5 Br=6.333 Isc=262.4f Nc=1.87 + Ikr=32.84m Rc=.3998 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=71.14p Mje=.3333 Vje=.5 Tr=10n Tf=704.1p Itf=14.26 + Xtf=1.332K Vtf=10) * MFG=SIEMENS pid=bc807-25 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/MUR7015.model0000644000175000017500000000021213413640652016527 0ustar rubenruben.model MUR7015 D (IS=12.9U RS=1.73M N=2.01 BV=150 IBV=25U + CJO=480P VJ=.275 M=.133 TT=76.4N) * Motorola 150 Volt 70 Amp 60M us Si Diode oregano-0.84.41/data/models/IRF513.model0000644000175000017500000000043113413640652016423 0ustar rubenruben.model IRF513 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.4508 Kp=20.68u W=.64 L=2u Vto=3.697 + Rd=.1211 Rds=266.7K Cbd=366.5p Pb=.8 Mj=.5 Fc=.5 Cgso=553.6p + Cgdo=109.7p Rg=3.599 Is=362.4f N=1 Tt=135n) * IR pid=IRF513 case=TO220 oregano-0.84.41/data/models/1N4148.model0000644000175000017500000000010313413640652016345 0ustar rubenruben.model D1N4148 D(IS=0.1P RS=16 CJO=2P TT=12N BV=100 IBV=3.867E-10) oregano-0.84.41/data/models/RC18C6A.model0000644000175000017500000000020213413640652016515 0ustar rubenruben.model RC18C6A D (IS=5.43U RS=201U N=2.22 BV=600 IBV=7M + CJO=8.22N VJ=.75 M=.333 TT=17.2U) * IR 600 Volt 200 Amp 12 us Si Diode oregano-0.84.41/data/models/KBPC2508.model0000644000175000017500000000036513413640652016616 0ustar rubenruben.SUBCKT KBPC2508 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC2508 D3 3 5 BPC2508 D4 4 3 BPC2508 D1 4 2 BPC2508 .model BPC2508 D (IS=679N RS=2.22M N=2.06 BV=800 IBV=17U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 800 Volt 25 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/2N4401.model0000644000175000017500000000070613413640652016347 0ustar rubenruben.model 2N4401 NPN(IS=1.75E-12 ISE=5.92E-14 ISC=9.42E-14 XTI=3.00 + BF=3.03E2 BR=1.00E-2 IKF=2.11E-1 IKR=1.00 XTB=1.5 + VAF=3.60E2 VAR=1.64E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.00E-2 RC=1.07 RB=8.63E1 RBM=1.00E-2 IRB=9.62E-3 + CJE=2.64E-11 CJC=1.37E-11 XCJC=1.00 FC=5.00E-1 + NF=1.10 NR=1.71 NE=1.26 NC=1.00 MJE=4.09E-1 MJC=4.89E-1 + TF=5.16E-10 TR=233.7E-9 PTF=0 ITF=5.09E-1 VTF=1.09E5 XTF=1.64 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=500E-3 MFG=SIEMENS) oregano-0.84.41/data/models/BC384C.model0000644000175000017500000000053013413640652016400 0ustar rubenruben.model BC384C NPN(IS=1.8E-14 ISE=5.0E-14 ISC=1.72E-13 XTI=3 + BF=325 BR=35.5 IKF=0.14 IKR=0.03 XTB=1.5 + VAF=80 VAR=12.5 VJE=0.58 VJC=0.54 + RE=0.6 RC=0.25 RB=0.56 + CJE=13E-12 CJC=4E-12 XCJC=0.75 FC=0.5 + NF=0.9955 NR=1.005 NE=1.46 NC=1.27 MJE=0.33 MJC=0.33 + TF=0.64E-9 TR=50.72E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/BC369P.model0000644000175000017500000000066113413640652016425 0ustar rubenruben.model BC369P PNP(IS=2.105E-13 ISE=3.766E-15 ISC=2.789E-11 XTI=3 + BF=281.1 BR=45.67 IKF=2.834 IKR=0.344 XTB=1.5 + VAF=44.23 VAR=7.259 VJE=0.8827 VJC=0.1427 + RE=0.05919 RC=0.0262 RB=1 RBM=1 IRB=1E-06 + CJE=2.046E-10 CJC=1.378E-10 XCJC=0.508 FC=0.309 + NF=0.9952 NR=0.9869 NE=1.4 NC=2.447 MJE=0.448 MJC=0.3018 + TF=7.919E-10 TR=1E-32 PTF=0 ITF=0.409 VTF=2.332 XTF=1.397 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=500E-3 MFG=PHILIPS) oregano-0.84.41/data/models/BCW61A.model0000644000175000017500000000047713413640652016447 0ustar rubenruben.model BCW61A PNP(IS=26.39f XTI=3 EG=1.11 VAF=106.8 BF=166.5 ISE=249.1f + NE=1.806 IKF=1.217 Nk=.5 Xtb=1.5 Br=8.744 Isc=82.16p Nc=2.283 + Ikr=29.82m Rc=2.543 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 + Cje=8.397p Mje=.3865 Vje=.5 Tr=10n Tf=590.5p Itf=.603 Xtf=225 + Vtf=1) * MFG=SIEMENS pid=bcw61a case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BF421.model0000644000175000017500000000070113413640652016270 0ustar rubenruben.model BF421S PNP(IS=5.35E-16 ISE=9.81E-17 ISC=1.00E-13 XTI=3.00 + BF=1.40E2 BR=1.00E-2 IKF=2.41E-2 IKR=1.00 XTB=1.5 + VAF=1.49E2 VAR=9.18E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.85E-2 RC=2.22 RB=1.99E1 RBM=2.41E-2 IRB=1.10E-2 + CJE=4.20E-11 CJC=1.65E-11 XCJC=1.00 FC=5.00E-1 + NF=8.73E-1 NR=9.84E-1 NE=1.03 NC=2.00 MJE=4.13E-1 MJC=7.00E-1 + TF=1.11E-9 TR=0 PTF=0 ITF=3.00 VTF=9.99E5 XTF=5.76E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BY396.model0000644000175000017500000000017513413640652016333 0ustar rubenruben.model BY396 D (IS=22U RS=42M N=3.35 BV=100 IBV=10U + CJO=94P VJ=.75 M=.333 TT=590N) * Diotec 100 Volt 3 Amp .5 us Si Diode oregano-0.84.41/data/models/2N3646.model0000644000175000017500000000055013413640652016356 0ustar rubenruben.model 2N3646 NPN(IS=1.017E-15 ISE=34.11E-12 ISC=0 XTI=3 + BF=85.99 BR=3.587 IKF=0.2617 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.75 RB=10 + CJE=8.359E-12 CJC=4.256E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=2.048 NC=2 MJE=0.3504 MJC=0.1053 + TF=289.3E-12 TR=5.32E-9 ITF=0.35 VTF=5 XTF=2 + EG=1.11 KF=1E-9 AF=1 + VCEO=15 ICRATING=500M MFG=NSC) oregano-0.84.41/data/models/IRF123.model0000644000175000017500000000042713413640652016425 0ustar rubenruben.model IRF123 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1284 Kp=20.58u W=.59 L=2u Vto=3.762 + Rd=.1113 Rds=355.6K Cbd=640.5p Pb=.8 Mj=.5 Fc=.5 Cgso=573.4p + Cgdo=215.9p Rg=5.309 Is=120.1p N=1 Tt=137n) * IR pid=IRF120 case=TO3 oregano-0.84.41/data/models/IRF320.model0000644000175000017500000000043113413640652016417 0ustar rubenruben.model IRF320 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=44.6m Kp=20.94u W=.23 L=2u Vto=3.710 + Rd=.8832 Rds=1.778MEG Cbd=435.6p Pb=.8 Mj=.5 Fc=.5 Cgso=1.705n + Cgdo=149.2p Rg=1.351 Is=325.9p N=1 Tt=535n) * IR pid=IRF320 case=TO3 oregano-0.84.41/data/models/IRF121.model0000644000175000017500000000042713413640652016423 0ustar rubenruben.model IRF121 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1421 Kp=20.62u W=.7 L=2u Vto=3.762 + Rd=82.05m Rds=355.6K Cbd=640.5p Pb=.8 Mj=.5 Fc=.5 Cgso=503.3p + Cgdo=181.6p Rg=4.962 Is=16.64p N=1 Tt=137n) * IR pid=IRF120 case=TO3 oregano-0.84.41/data/models/IRF244.model0000644000175000017500000000043113413640652016424 0ustar rubenruben.model IRF244 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=777.6u Kp=20.58u W=.54 L=2u Vto=3.405 + Rd=.2214 Rds=1.111MEG Cbd=1.689n Pb=.8 Mj=.5 Fc=.5 Cgso=1.946n + Cgdo=308.7p Rg=5.18 Is=3.523n N=1 Tt=300n) * IR pid=IRF244 case=TO3 oregano-0.84.41/data/models/BC414B.model0000644000175000017500000000053013413640652016371 0ustar rubenruben.model BC414B NPN(IS=1.8E-14 ISE=5.0E-14 ISC=1.72E-13 XTI=3 + BF=400 BR=35.5 IKF=0.14 IKR=0.03 XTB=1.5 + VAF=80 VAR=12.5 VJE=0.58 VJC=0.54 + RE=0.6 RC=0.25 RB=0.56 + CJE=13E-12 CJC=4E-12 XCJC=0.75 FC=0.5 + NF=0.9955 NR=1.005 NE=1.46 NC=1.27 MJE=0.33 MJC=0.33 + TF=0.64E-9 TR=50.72E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/BF370R.model0000644000175000017500000000061113413640652016415 0ustar rubenruben.model BF370R NPN(IS=1.519E-15 ISE=4.063E-14 ISC=2.05E-09 XTI=3 + BF=84 BR=0.3731 IKF=0.15 IKR=0.01 XTB=1.5 + VAF=44.28 VAR=29.6 VJE=0.6785 VJC=0.4973 + RE=0.483 RC=1.57 RB=0.5 RBM=0.5 IRB=1E-06 + CJE=3.753E-12 CJC=1.809E-12 XCJC=0.4 FC=0.9027 + NF=0.994 NR=0.979 NE=1.6 NC=1.931 MJE=0.2947 MJC=0.191 + TF=2.13E-10 TR=50E-9 PTF=0 ITF=1.834 VTF=2.3 XTF=107 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/MR852.model0000644000175000017500000000020513413640652016326 0ustar rubenruben.MODEL MR852 D (IS=3.91N RS=14.6M N=1.67 BV=200 IBV=100N + CJO=124P VJ=.75 M=.333 TT=520N) * Motorola 200 Volt 3 Amp .2 us Si Diode oregano-0.84.41/data/models/BBY31.model0000644000175000017500000000025513413640652016336 0ustar rubenruben.MODEL BBY31 D IS=10.01E-15 N=1.095 RS=.2082 XTI=3 + EG=1.11 CJO=27.36E-12 M=.9 VJ=2.099 FC=.5 BV=45.12 + IBV=92.44E-3 TT=145.7E-9 * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/BY254.model0000644000175000017500000000017613413640652016325 0ustar rubenruben.model BY254 D (IS=22U RS=42M N=3.35 BV=800 IBV=20U + CJO=124P VJ=.75 M=.333 TT=4.32U) * Diotec 800 Volt 3 Amp 3 us Si Diode oregano-0.84.41/data/models/BCX42.model0000644000175000017500000000047513413640652016344 0ustar rubenruben.model BCX42 PNP(IS=211.1f XTI=3 EG=1.11 VAF=100 BF=171 ISE=1.975p NE=1.629 + IKF=.7668 Nk=.5103 Xtb=1.5 Br=24.68 Isc=109.7p Nc=1.588 + Ikr=3.115 Rc=.463 Cjc=29.15p Mjc=.3333 Vjc=.5 Fc=.5 Cje=87.45p + Mje=.3333 Vje=.5 Tr=10n Tf=1.461n Itf=8.247 Xtf=568.2 Vtf=10) * MFG=SIEMENS pid=bcx42 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/GI750.model0000644000175000017500000000025513413640652016311 0ustar rubenruben.model GI750 D (IS=3.60E-08 N=1.67 BV=6.66E+01 IBV=2.50E-05 + RS=1.84E-03 CJO=9.28E-10 VJ=.29 M=.55 TT=6.91E-06) * General Instrument 50 Volt 6.00 Amp 5.50 us Si Rectifier oregano-0.84.41/data/models/2N6788.model0000644000175000017500000000042713413640652016373 0ustar rubenruben.model 2N6788 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1555 Kp=20.84u W=.38 L=2u Vto=3.011 + Rd=54.91m Rds=444.4K Cbd=722.7p Pb=.8 Mj=.5 Fc=.5 Cgso=542p + Cgdo=142.9p Rg=63.13 Is=6.454f N=1 Tt=315n) * IR pid=2N6788 case=TO39 oregano-0.84.41/data/models/IRF742.model0000644000175000017500000000043413413640652016432 0ustar rubenruben.model IRF742 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=8.563m Kp=20.59u W=.78 L=2u Vto=3.657 + Rd=.5215 Rds=1.778MEG Cbd=1.419n Pb=.8 Mj=.5 Fc=.5 Cgso=1.392n + Cgdo=146.6p Rg=.9088 Is=29.18p N=1 Tt=570n) * IR pid=IRF742 case=TO220 oregano-0.84.41/data/models/HP6510.model0000644000175000017500000000016613413640652016402 0ustar rubenruben.model HP6510 D (IS=.3N RS=9 N=1.08 BV=5 IBV=10U + CJO=.13P VJ=.65 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/MPSA10.model0000644000175000017500000000055313413640652016460 0ustar rubenruben.model MPSA10 NPN(IS=61.01E-15 ISE=76.83E-15 ISC=0 XTI=3 + BF=193 BR=0.2195 IKF=97.79E-3 IKR=0 XTB=1.5 + VAF=57.37 VAR=19 VJE=0.65 VJC=0.65 + RE=0.15 RC=2.14 RB=10 + CJE=5.928E-12 CJC=6.072E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.305 NC=2 MJE=0.3333 MJC=0.3333 + TF=316.3E-12 TR=1.573E-6 ITF=0.2 VTF=5 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/TIP120.model0000644000175000017500000000074613413640652016442 0ustar rubenruben.SUBCKT TIP120 1 2 3 * TERMINALS: C B E * 60 Volt 5 Amp NPN Darlington Transistor 08-03-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 3 1 DSUB .MODEL QPWR NPN (IS=6P NF=1 BF=116 VAF=139 IKF=3.2 ISE=376P NE=2 + BR=4 NR=1 VAR=20 IKR=4.8 RE=.33 RB=1.32 RC=.132 XTB=1.5 + CJE=676P VJE=.74 MJE=.45 CJC=97.5P VJC=1.1 MJC=.24 TF=85.3N TR=3.68U) .MODEL DSUB D (IS=6P N=1 RS=.33 BV=60 IBV=.001 CJO=97.5P TT=3.68U) .ENDS * TIP120, TEXAS INSTRUMENTS POWER PRODUCTS DATA BOOK, 1985 oregano-0.84.41/data/models/BFP181.model0000644000175000017500000000071613413640652016421 0ustar rubenruben.model BFP181 NPN(IS=1.0519E-18 ISE=1.2603E-14 ISC=1.1195E-17 XTI=3 + BF=96.461 NR=0.87757 IKF=0.12146 IKR=0.24951 XTB=1.5 + VAF=22.403 VAR=5.1127 VJE=0.73155 VJC=1.1633 + RE=2.1372 RC=2.2171 RB=9.9037 RBM=6.6315 IRB=0.00069278 + CJE=1.8168E-15 CJC=3.1969E-13 XCJC=0.082903 FC=0.99768 + NF=0.90617 BR=16.504 NE=1.7631 NC=1.6528 MJE=0.43619 MJC=0.30013 + TF=1.7028E-11 TR=2.7449E-9 PTF=0 ITF=0.0010549 VTF=0.12571 XTF=0.33814 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/2N6769.model0000644000175000017500000000042513413640652016370 0ustar rubenruben.model 2N6769 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=28.45m Kp=20.65u W=2 L=2u Vto=3.31 + Rd=.3639 Rds=3.6MEG Cbd=2.941n Pb=.8 Mj=.5 Fc=.5 Cgso=1.812n + Cgdo=192.2p Rg=1.145 Is=1.354n N=1 Tt=275n) * IR pid=2N6769 case=TO3 oregano-0.84.41/data/models/2N6800.model0000644000175000017500000000043313413640652016351 0ustar rubenruben.model 2N6800 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=80.1m Kp=20.62u W=.56 L=2u Vto=3.206 + Rd=.6937 Rds=1.778MEG Cbd=823.8p Pb=.8 Mj=.5 Fc=.5 Cgso=1.623n + Cgdo=191.7p Rg=.7082 Is=1.334n N=1 Tt=1530n) * IR pid=2N6800 case=TO39 oregano-0.84.41/data/models/IRF9230.model0000644000175000017500000000043613413640652016515 0ustar rubenruben.model IRF9230 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=31.21m Kp=10.39u W=.47 L=2u + Vto=-3.323 Rd=.4053 Rds=888.9K Cbd=820.8p Pb=.8 Mj=.5 Fc=.5 + Cgso=6.43n Cgdo=179.5p Rg=1.234 Is=168.5E-18 N=3 Tt=555n) * IR pid=IRF9230 case=TO3 oregano-0.84.41/data/models/BF245C.model0000644000175000017500000000062013413640652016377 0ustar rubenruben.SUBCKT BF245C/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -5.0014E+000 + BETA = 5.43157E-004 + LAMBDA = 2.71505E-002 + RD = 1.20869E+001 + RS = 1.20869E+001 + IS = 3.64346E-016 + CGS = 2.00000E-012 + CGD = 2.00000E-012 + PB = 1.24659E+000 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BCW60FN.model0000644000175000017500000000047513413640652016567 0ustar rubenruben.model BCW60FN NPN(IS=26.39f XTI=3 EG=1.11 VAF=35.7 BF=449.2 ISE=191.3f + NE=2.138 IKF=1.969 Nk=.5 Xtb=1.5 Br=9.116 Isc=14.45p Nc=1.778 + Ikr=3.14 Rc=3.154 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=596.3p Itf=2.629 Xtf=282 Vtf=10) * MFG=SIEMENS pid=bcw60fn case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/KBPC801.model0000644000175000017500000000035413413640652016526 0ustar rubenruben.SUBCKT KBPC801 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC801 D3 3 5 BPC801 D4 4 3 BPC801 D1 4 2 BPC801 .model BPC801 D (IS=18.3N RS=3.2M N=1.72 BV=80 IBV=5.5U + CJO=330P VJ=.75 M=.333 TT=4.32U) * Diotec 80 Volt 8 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/BC858B.model0000644000175000017500000000047713413640652016417 0ustar rubenruben.model BC858B PNP(IS=336.7f XTI=3 EG=1.11 VAF=62.37 BF=277.7 ISE=1.966p + NE=2.123 IKF=.1686 Nk=.545 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.891 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.9p Itf=2.133 Xtf=23.02 Vtf=10) * MFG=SIEMENS pid=bc858b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF542.model0000644000175000017500000000043213413640652016426 0ustar rubenruben.model IRF542 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=21.34m Kp=20.71u W=.94 L=2u Vto=3.136 + Rd=42.52m Rds=444.4K Cbd=2.408n Pb=.8 Mj=.5 Fc=.5 Cgso=1.153n + Cgdo=445.7p Rg=5.557 Is=6.196p N=1 Tt=142n) * IR pid=IRF542 case=TO220 oregano-0.84.41/data/models/BUT50P.model0000644000175000017500000000061213413640652016472 0ustar rubenruben.SUBCKT BUT50P 1 2 3 * TERMINALS: C B E Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 100K R2 4 3 15 D1 3 1 DSUB D2 4 2 DSUB .01 .MODEL QPWR NPN (IS=9.59P NF=1 BF=270 VAF=402 IKF=2 + ISE=16.9P NE=2 BR=4 NR=1 VAR=32 IKR=3 RE=.143 RB=.575 + RC=57.5M XTB=1.5 CJE=886P CJC=192P TF=200N TR=450N) .MODEL DSUB D (IS=9.59P N=1 RS=.143 BV=500 IBV=.001 + CJO=192P TT=450N) .ENDS * 500 Volt 8 Amp NPN Darlington oregano-0.84.41/data/models/IRF131.model0000644000175000017500000000042513413640652016422 0ustar rubenruben.model IRF131 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=74.91m Kp=20.8u W=.9 L=2u Vto=3.412 + Rd=26.95m Rds=355.6K Cbd=1.115n Pb=.8 Mj=.5 Fc=.5 Cgso=626p + Cgdo=251.1p Rg=3.514 Is=2.522p N=1 Tt=125n) * IR pid=IRF130 case=TO3 oregano-0.84.41/data/models/KBU4D.model0000644000175000017500000000033613413640652016367 0ustar rubenruben.SUBCKT KBU4D 2 3 5 4 * IN1 IN2 + - D2 2 5 BU4D D3 3 5 BU4D D4 4 3 BU4D D1 4 2 BU4D .model BU4D D (IS=10.7N RS=3M N=1.67 BV=200 IBV=5U + CJO=165P VJ=.75 M=.333 TT=4.32U) * Diotec 200 Volt 4 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/BY251.model0000644000175000017500000000017613413640652016322 0ustar rubenruben.model BY251 D (IS=22U RS=42M N=3.35 BV=200 IBV=20U + CJO=124P VJ=.75 M=.333 TT=4.32U) * Diotec 200 Volt 3 Amp 3 us Si Diode oregano-0.84.41/data/models/LD261.model0000644000175000017500000000020013413640652016274 0ustar rubenruben.MODEL LD261 D (IS=599P RS=.667 N=2.51 BV=5 IBV=10N + CJO=40P VJ=.75 M=.333 TT=1.44U) * Siemens 5 Volt 60M Amp 1 us GaAs Diode oregano-0.84.41/data/models/BFR181.model0000644000175000017500000000071613413640652016423 0ustar rubenruben.model BFR181 NPN(IS=1.0519E-18 ISE=1.2603E-14 ISC=1.1195E-17 XTI=3 + BF=96.461 NR=0.87757 IKF=0.12146 IKR=0.24951 XTB=1.5 + VAF=22.403 VAR=5.1127 VJE=0.73155 VJC=1.1633 + RE=2.1372 RC=2.2171 RB=9.9037 RBM=6.6315 IRB=0.00069278 + CJE=1.8168E-15 CJC=3.1969E-13 XCJC=0.082903 FC=0.99768 + NF=0.90617 BR=16.504 NE=1.7631 NC=1.6528 MJE=0.43619 MJC=0.30013 + TF=1.7028E-11 TR=2.7449E-9 PTF=0 ITF=0.0010549 VTF=0.12571 XTF=0.33814 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/2N5210.model0000644000175000017500000000057013413640652016345 0ustar rubenruben.model 2N5210 NPN(IS=5.911E-15 ISE=5.911E-15 ISC=0 XTI=3 + BF=809.9 BR=1.287 IKF=14.26E-3 IKR=0 XTB=1.5 + VAF=62.37 VAR=21.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.61 RB=10 + CJE=4.973E-12 CJC=4.017E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.358 NC=2 MJE=0.4146 MJC=0.3174 + TF=820.9E-12 TR=4.68E-9 ITF=0.35 VTF=4 XTF=7 + EG=1.11 KF=1E-9 AF=1 + VCEO=50 ICRATING=100M MFG=NSC-FAIRCHILD) oregano-0.84.41/data/models/DB1506.model0000644000175000017500000000037613413640652016363 0ustar rubenruben.SUBCKT DB1506 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B1506 D2 4 1 B1506 D3 5 1 B1506 D4 2 4 B1506 D5 2 3 B1506 D6 2 5 B1506 .model B1506 D (IS=45.3N RS=1.92M N=2.34 BV=600 IBV=6U + CJO=618P VJ=.75 M=.333 TT=4.32U) * Diotec 600 Volt 15 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BC550.model0000644000175000017500000000066013413640652016274 0ustar rubenruben.model BC550 NPN(IS=2.24183E-14 Vceo=45 mfg=Fairchild Icrating=100m NF=0.996496 + ISE=1.90217E-14 NE=2 BF=228.4 IKF=0.211766 VAF=161.939 NR=0.993 ISC=4.7863E-15 + NC=0.996 BR=12.1807 IKR=0.3423 VAR=123.229 RB=167.033 IRB=7.079458E-05 RBM=1.12256 + RE=0.036 RC=0.79 XTB=1.65 EG=1.1737 XTI=3 CJE=1.87E-11 VJE=0.732 MJE=0.33 + CJC=6.16E-12 VJC=0.395 MJC=0.251 XCJC=0.6192 FC=0.5 TF=518.15E-12 XTF=10 VTF=10 ITF=1 + TR=10.000E-9) oregano-0.84.41/data/models/MR856.model0000644000175000017500000000020513413640652016332 0ustar rubenruben.MODEL MR856 D (IS=3.91N RS=14.6M N=1.67 BV=600 IBV=100N + CJO=124P VJ=.75 M=.333 TT=519N) * Motorola 600 Volt 3 Amp .2 us Si Diode oregano-0.84.41/data/models/BSS229.model0000644000175000017500000000036613413640652016445 0ustar rubenruben.model BSS229 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=2u Uo=600 Phi=.6 Kp=1.076u W=.12 L=2u Rs=20m Vto=-1.66 + Rd=77.03 Rds=2.5K Cgso=4p Cgdo=1p Cbd=14.47p Mj=.3502 Pb=2.061 + Fc=.5 Rg=0 Is=10f N=1 Rb=1m) oregano-0.84.41/data/models/DB1501.model0000644000175000017500000000037613413640652016356 0ustar rubenruben.SUBCKT DB1501 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B1501 D2 4 1 B1501 D3 5 1 B1501 D4 2 4 B1501 D5 2 3 B1501 D6 2 5 B1501 .model B1501 D (IS=45.3N RS=1.92M N=2.34 BV=100 IBV=3U + CJO=618P VJ=.75 M=.333 TT=4.32U) * Diotec 100 Volt 15 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/2N5134.model0000644000175000017500000000054513413640652016354 0ustar rubenruben.model 2N5134 NPN(IS=44.14E-15 ISE=116.4E-15 ISC=0 XTI=3 + BF=61.88 BR=13.33E-3 IKF=0.3498 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.06 RC=0.6 RB=10 + CJE=4.5E-12 CJC=2.83E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.389 NC=2 MJE=0.2418 MJC=0.862 + TF=227.6E-12 TR=1.097E-6 ITF=0.3 VTF=4 XTF=4 + EG=1.11 KF=1E-9 AF=1 + VCEO=10 ICRATING=50M MFG=NSC) oregano-0.84.41/data/models/KBPC810.model0000644000175000017500000000035413413640652016526 0ustar rubenruben.SUBCKT KBPC810 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC810 D3 3 5 BPC810 D4 4 3 BPC810 D1 4 2 BPC810 .model BPC810 D (IS=18.3N RS=3.2M N=1.72 BV=1K IBV=9U + CJO=330P VJ=.75 M=.333 TT=4.32U) * Diotec 1000 Volt 8 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/IRF9143.model0000644000175000017500000000043513413640652016517 0ustar rubenruben.model IRF9143 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=70.6m Kp=10.15u W=1.9 L=2u Vto=-3.67 + Rd=.1307 Rds=266.7K Cbd=2.141n Pb=.8 Mj=.5 Fc=.5 Cgso=596.5p + Cgdo=650.1p Rg=.2166 Is=202.1E-18 N=2 Tt=140n) * IR pid=IRF9143 case=TO3 oregano-0.84.41/data/models/BF511.model0000644000175000017500000000061713413640652016276 0ustar rubenruben.SUBCKT BF511/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -1.9058E+000 + BETA = 1.54719E-003 + LAMBDA = 1.72995E-002 + RD = 3.06677E+000 + RS = 3.06677E+000 + IS = 7.02360E-014 + CGS = 4.18000E-012 + CGD = 2.37000E-012 + PB = 7.16850E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/HP9XXX.model0000644000175000017500000000020513413640652016561 0ustar rubenruben.model HP9XXX D (IS=.16N RS=5 N=1.2 BV=5 IBV=10U + CJO=.04P VJ=.65 M=.5 EG=1.43 TT=72P) * H-P HSCH-9XXX 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/KBPC800.model0000644000175000017500000000035213413640652016523 0ustar rubenruben.SUBCKT KBPC800 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC800 D3 3 5 BPC800 D4 4 3 BPC800 D1 4 2 BPC800 .model BPC800 D (IS=18.3N RS=3.2M N=1.72 BV=50 IBV=5U + CJO=330P VJ=.75 M=.333 TT=4.32U) * Diotec 50 Volt 8 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/HP5812.model0000644000175000017500000000020413413640652016377 0ustar rubenruben.model HP5812 D (IS=62P RS=8 N=1.08 BV=4 IBV=10U + CJO=.13P VJ=.65 M=.5 EG=.69 TT=72P) * H-P HSCH-5812 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/BD137F.model0000644000175000017500000000056613413640652016411 0ustar rubenruben.model BD137F NPN(IS=2.3985E-13 ISE=1.0471E-14 ISC=1.9314E-11 XTI=3 + BF=244.9 BR=78.11 IKF=1.1863 IKR=0.1445 XTB=1.1398 + VAF=98.5 VAR=7.46 VJE=0.67412 VJC=0.5258 + RE=0.01 RC=0.1 RB=2.14 RBM=0.001 IRB=0.031 + CJE=2.92702E-10 CJC=4.8831E-11 XCJC=0.5287 FC=0.5 + NF=1 NR=1 NE=1.2 NC=1.45 MJE=0.3300 MJC=0.3928 + EG=1.2105 KF=1E-9 AF=1 + VCEO=60 ICRATING=1.5 MFG=FAIRCHILD) oregano-0.84.41/data/models/BCW65B.model0000644000175000017500000000050113413640652016440 0ustar rubenruben.model BCW65B NPN(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=364.7 ISE=44.99f + NE=1.337 IKF=1.029 Nk=.7096 Xtb=1.5 Br=5.792 Isc=1.332p + Nc=1.307 Ikr=6.716 Rc=.421 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=71.14p Mje=.3333 Vje=.5 Tr=10n Tf=707.9p Itf=5.32 Xtf=23.35 + Vtf=10) * MFG=SIEMENS pid=bcw65b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BSV15-6.model0000644000175000017500000000050013413640652016512 0ustar rubenruben.model BSV15-6 PNP(IS=70.49f XTI=3 EG=1.11 VAF=100 BF=78.81 ISE=795.9f NE=1.5 + IKF=.9977 Nk=.6579 Xtb=1.5 Br=18.45 Isc=715.1f Nc=1.23 + Ikr=1.222 Rc=.8335 Cjc=47.58p Mjc=.3333 Vjc=.5 Fc=.5 Cje=212.4p + Mje=.3333 Vje=.5 Tr=391.7n Tf=1.983n Itf=11.92 Xtf=64.06 Vtf=10 * MFG=PHILIPS pid=bsv15-6 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/IRF9140.model0000644000175000017500000000043513413640652016514 0ustar rubenruben.model IRF9140 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=70.6m Kp=10.15u W=1.9 L=2u Vto=-3.67 + Rd=60.66m Rds=444.4K Cbd=2.141n Pb=.8 Mj=.5 Fc=.5 Cgso=877.2p + Cgdo=369.3p Rg=.811 Is=52.23E-18 N=2 Tt=140n) * IR pid=IRF9140 case=TO3 oregano-0.84.41/data/models/BFN24.model0000644000175000017500000000067313413640652016335 0ustar rubenruben.model BFN24 NPN(IS=1.59E-13 ISE=3.62E-16 ISC=9.06E-11 XTI=3.00 + BF=7.04E1 BR=1.76E1 IKF=1.00E1 IKR=1.00 XTB=1.5 + VAF=4.51E1 VAR=9.11E1 VJE=3.00E-1 VJC=4.64E-1 + RE=4.19E-1 RC=4.11E-1 RB=3.23E1 RBM=7.75E-2 IRB=1.30E-3 + CJE=1.31E-10 CJC=1.56E-11 XCJC=1.00 FC=5.00E-1 + NF=1.03 NR=1.11 NE=1.21 NC=1.47 MJE=4.02E-1 MJC=5.80E-1 + TF=1.73E-9 TR=0 PTF=0 ITF=1.33 VTF=9.99E5 XTF=1.00E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/GI756.model0000644000175000017500000000025613413640652016320 0ustar rubenruben.model GI756 D (IS=3.62E-08 N=1.67 BV=8.00E+02 IBV=2.50E-05 + RS=1.84E-03 CJO=9.28E-10 VJ=.29 M=.55 TT=6.91E-06) * General Instrument 600 Volt 6.00 Amp 5.50 us Si Rectifier oregano-0.84.41/data/models/BDW94B.model0000644000175000017500000000070313413640652016447 0ustar rubenruben.SUBCKT BDW94B 1 2 3 * TERMINALS: C B E * SGS-Thompson 80 Volt 12 Amp PNP Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 1 3 DSUB .MODEL QPWR PNP (IS=14.4P NF=1 BF=102 VAF=161 IKF=4.8 ISE=808P NE=2 + BR=4 NR=1 VAR=24 IKR=7.2 RE=53.3M RB=.213 RC=21.3M XTB=1.5 + CJE=1.14N VJE=.74 MJE=.45 CJC=165P VJC=1.1 MJC=.24 TF=71.6N TR=2.72U) .MODEL DSUB D (IS=14.4P N=1 RS=53.3M BV=80 IBV=.001 CJO=165P TT=2.72U) .ENDS oregano-0.84.41/data/models/BSX46-10.model0000644000175000017500000000050413413640652016577 0ustar rubenruben.model BSX46-10 NPN(IS=66.19f XTI=3 EG=1.11 VAF=100 BF=367.1 ISE=752.8f + NE=1.418 IKF=.1276 Nk=.5462 Xtb=1.5 Br=967.1 Isc=3.662n + Nc=1.779 Ikr=2.449 Rc=.5938 Cjc=48.58p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=94.85p Mje=.3333 Vje=.5 Tr=10n Tf=1.372n Itf=1.216 + Xtf=16.64 Vtf=10) * MFG=PHILIPS pid=bsx46-10 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/BF721.model0000644000175000017500000000070013413640652016272 0ustar rubenruben.model BF721 PNP(IS=5.35E-16 ISE=9.81E-17 ISC=1.00E-13 XTI=3.00 + BF=1.40E2 BR=1.00E-2 IKF=2.41E-2 IKR=1.00 XTB=1.5 + VAF=1.49E2 VAR=9.18E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.85E-2 RC=2.22 RB=1.99E1 RBM=2.41E-2 IRB=1.10E-2 + CJE=4.20E-11 CJC=1.65E-11 XCJC=1.00 FC=5.00E-1 + NF=8.73E-1 NR=9.84E-1 NE=1.03 NC=2.00 MJE=4.13E-1 MJC=7.00E-1 + TF=1.11E-9 TR=0 PTF=0 ITF=3.00 VTF=9.99E5 XTF=5.76E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BC560.model0000644000175000017500000000044413413640652016275 0ustar rubenruben.model BC560 PNP(IS=5.11839E-13 BF=200.0 NF=1.00811 Icrating=100m Vceo=45 BR=0.66 + NR=1 ISE=1.32082E-12 NE=1.5 ISC=5.24807E-12 NC=2 VAF=211.586 VAR=20 IKF=0.0448 + IKR=1.31826E-4 RB=200 RBM=0.496 IRB=1.584893E-5 RE=6.09 RC=8.05 CJC=9.014673E-12 + VJC=0.3068755 MJC=0.3580011 TF=1.06e-9) oregano-0.84.41/data/models/BCW89.model0000644000175000017500000000053413413640652016352 0ustar rubenruben.model BCW89 PNP(IS=1.149E-14 ISE=5E-14 ISC=1.43E-14 XTI=3 + BF=330 BR=13 IKF=0.1 IKR=0.012 XTB=1.5 + VAF=84.56 VAR=8.15 VJE=0.65 VJC=0.565 + RE=0.4 RC=0.95 RB=0.2 + CJE=16E-12 CJC=10.5E-12 XCJC=0.75 FC=0.5 + NF=0.9872 NR=0.996 NE=1.4 NC=1.1 MJE=0.415 MJC=0.415 + TF=0.493E-9 TR=73.55E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/IRF511.model0000644000175000017500000000043213413640652016422 0ustar rubenruben.model IRF511 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.4508 Kp=20.68u W=.64 L=2u Vto=3.697 + Rd=21.08m Rds=266.7K Cbd=366.5p Pb=.8 Mj=.5 Fc=.5 Cgso=553.6p + Cgdo=109.7p Rg=3.599 Is=202.9f N=1 Tt=135n) * IR pid=IRF511 case=TO220 oregano-0.84.41/data/models/IRF133.model0000644000175000017500000000043013413640652016420 0ustar rubenruben.model IRF133 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=61.8m Kp=20.68u W=.73 L=2u Vto=3.373 + Rd=76.21m Rds=355.6K Cbd=1.115n Pb=.8 Mj=.5 Fc=.5 Cgso=729.7p + Cgdo=310.4p Rg=3.648 Is=763.6p N=1 Tt=125n) * IR pid=IRF133 case=TO3 oregano-0.84.41/data/models/TIP146.model0000644000175000017500000000073713413640652016452 0ustar rubenruben.SUBCKT TIP146 1 2 3 * TERMINALS: C B E * 80 Volt 10 Amp PNP Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 40 D1 1 3 DSUB .MODEL QPWR PNP (IS=12P NF=1 BF=125 VAF=161 IKF=8 ISE=779P NE=2 + BR=4 NR=1 VAR=20 IKR=12 RE=.115 RB=.46 RC=46M XTB=1.5 + CJE=2.06N VJE=.74 MJE=.45 CJC=297P VJC=1.1 MJC=.24 TF=98.5N TR=4.25U) .MODEL DSUB D (IS=12P N=1 RS=.115 BV=80 IBV=.001 CJO=297P TT=4.25U) .ENDS * TIP146, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/BD132.model0000644000175000017500000000064713413640652016276 0ustar rubenruben.model BD132 PNP(IS=2.171E-13 ISE=2.423E-14 ISC=3.626E-13 XTI=3 + BF=133 BR=18.54 IKF=3.09 IKR=0.35 XTB=1.5 + VAF=91 VAR=23 VJE=0.9472 VJC=0.1708 + RE=0.19 RC=0.04082 RB=13 RBM=4.441E-10 IRB=0.0005946 + CJE=3.968E-10 CJC=2.687E-10 XCJC=0.75 FC=0.78 + NF=0.9918 NR=0.9926 NE=1.274 NC=1.193 MJE=0.4214 MJC=0.3977 + TF=1.354E-09 TR=4.6E-08 PTF=0 ITF=3.692 VTF=7 XTF=7 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=2 MFG=PHILIPS) oregano-0.84.41/data/models/IRF330.model0000644000175000017500000000042613413640652016424 0ustar rubenruben.model IRF330 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.702m Kp=20.47u W=.33 L=2u Vto=3.6 + Rd=.6483 Rds=1.778MEG Cbd=665.2p Pb=.8 Mj=.5 Fc=.5 Cgso=1.623n + Cgdo=191.7p Rg=.4921 Is=139p N=1 Tt=515n) * IR pid=IRF330 case=TO3 oregano-0.84.41/data/models/IRF432.model0000644000175000017500000000043213413640652016424 0ustar rubenruben.model IRF432 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=2.514m Kp=20.56u W=.33 L=2u Vto=3.783 + Rd=1.014 Rds=2.222MEG Cbd=677.2p Pb=.8 Mj=.5 Fc=.5 Cgso=1.725n + Cgdo=136.7p Rg=1.159 Is=61.41p N=1 Tt=585n) * IR pid=IRF432 case=TO3 oregano-0.84.41/data/models/BFR35A.model0000644000175000017500000000070113413640652016434 0ustar rubenruben.model BFR35A NPN(IS=1.213E-16 ISE=1.2955E-13 ISC=7.5557E-16 XTI=3 + BF=94.733 NR=0.8983 IKF=0.46227 IKR=0.01 XTB=1.5 + VAF=30 VAR=14.599 VJE=0.70618 VJC=0.84079 + RE=0.29088 RC=0.13793 RB=14.998 RBM=7.8145 IRB=1.652E-5 + CJE=1.0416E-14 CJC=9.4647E-13 XCJC=0.13464 FC=0.99545 + NF=1.0947 BR=10.729 NE=1.9052 NC=1.371 MJE=0.34686 MJC=0.4085 + TF=2.6796E-11 TR=1.2744E-9 PTF=0 ITF=0.0044601 VTF=0.32861 XTF=0.3817 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BF861C.model0000644000175000017500000000027413413640652016410 0ustar rubenruben.SUBCKT BF861C/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF(VTO=-1.145 BETA=0.01522 LAMBDA=0.04494 RD=15.2 RS=15.2 + IS=4.157E-16 CGS=6.581E-12 CGD=6.581E-12 PB=0.7395 FC=0.5) .ENDS * *$ oregano-0.84.41/data/models/BC556A.model0000644000175000017500000000050113413640652016375 0ustar rubenruben.model BC556A PNP(IS=1.02f XTI=3 EG=1.11 VAF=73.79 BF=174.7 ISE=10.73f + NE=1.644 IKF=.1023 Nk=.5033 Xtb=1.5 Br=4.432 Isc=14.74f + Nc=1.296 Ikr=2.237 Rc=1.039 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 + Cje=30p Mje=.3333 Vje=.5 Tr=10n Tf=830.3p Itf=.8981 Xtf=10.32 + Vtf=10) * MFG=PHILIPS pid=bc556a case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/IRF743.model0000644000175000017500000000043213413640652016431 0ustar rubenruben.model IRF743 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=8.563m Kp=20.59u W=.78 L=2u Vto=3.657 + Rd=.5215 Rds=1.556MEG Cbd=1.419n Pb=.8 Mj=.5 Fc=.5 Cgso=1.371n + Cgdo=168p Rg=.2796 Is=29.18p N=1 Tt=570n) * IR pid=IRF743 case=TO220 oregano-0.84.41/data/models/2N4141.model0000644000175000017500000000055113413640652016346 0ustar rubenruben.model 2N4141 NPN(IS=14.34E-15 ISE=14.34E-15 ISC=0 XTI=3 + BF=255.9 BR=6.092 IKF=0.2847 IKR=0 XTB=1.5 + VAF=74.03 VAR=28 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=22.01E-12 CJC=7.306E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.307 NC=2 MJE=0.377 MJC=0.3416 + TF=411.1E-12 TR=46.91E-9 ITF=0.6 VTF=1.7 XTF=3 + EG=1.11 KF=1E-9 AF=1 + VCEO=30 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/BF840.model0000644000175000017500000000062613413640652016303 0ustar rubenruben.model BF840 NPN(IS=4.948E-16 ISE=1.08E-16 ISC=2.118E-16 XTI=3 + BF=105.8 BR=2.665 IKF=0.08 IKR=0.05 XTB=1.5 + VAF=125.5 VAR=5.34 VJE=0.5956 VJC=0.3305 + RE=0.447 RC=1.9 RB=19.38 RBM=2.549 IRB=0.0009481 + CJE=2.171E-12 CJC=7.61E-13 XCJC=0.811 FC=0.9221 + NF=0.9871 NR=0.999 NE=1.26 NC=1 MJE=0.2307 MJC=0.2596 + TF=3.062E-10 TR=5E-08 PTF=0 ITF=0.1344 VTF=1.48 XTF=54.94 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BSP31.model0000644000175000017500000000064213413640652016346 0ustar rubenruben.model BSP31 PNP(IS=6.330E-14 ISE=8.576E-17 ISC=6.121E-15 XTI=3 + BF=191.4 BR=11.65 IKF=1.3660 IKR=0.2553 XTB=1.5 + VAF=106.1 VAR=13.41 VJE=0.7589 VJC=0.7124 + RE=5.555E-02 RC=0.1597 RB=2 RBM=2 IRB=1E-06 + CJE=1.036E-10 CJC=5.025E-11 XCJC=0.3899 FC=0.800 + NF=0.9938 NR=0.9976 NE=1.045 NC=1.021 MJE=0.3930 MJC=0.5012 + TF=7.518E-10 TR=2.25E-07 PTF=0 ITF=1.9360 VTF=1.806 XTF=8.402 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BCW60C.model0000644000175000017500000000047613413640652016447 0ustar rubenruben.model BCW60C NPN(IS=26.39f XTI=3 EG=1.11 VAF=62.37 BF=331.9 ISE=278.6f + NE=2.004 IKF=2.57 Nk=.5 Xtb=1.5 Br=9.451 Isc=15.74p Nc=1.797 + Ikr=2.344 Rc=3.117 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=597.1p Itf=2.501 Xtf=233.9 Vtf=10) * MFG=SIEMENS pid=bcw60c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF423.model0000644000175000017500000000042413413640652016425 0ustar rubenruben.model IRF423 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=57.8m Kp=21.11u W=.26 L=2u Vto=3.827 + Rd=1.93 Rds=2MEG Cbd=394.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.577n + Cgdo=117.1p Rg=.2379 Is=978.4p N=1 Tt=560n) * IR pid=IRF423 case=TO3 oregano-0.84.41/data/models/2N2219.model0000644000175000017500000000062013413640652016347 0ustar rubenruben.model 2N2219 NPN(IS=3.0611E-14 ISE=7.5E-15 ISC=1.06525E-11 XTI=3 + BF=255.9 BR=6.092 IKF=0.2847 IKR=0.125 XTB=1.5 + VAF=74.03 VAR=28 VJE=0.65 VJC=0.4089 + RE=0.02 RC=0.12 RB=10 + CJE=22.01E-12 CJC=7.306E-12 XCJC=0.75 FC=0.5 + NF=1.00124 NR=1.005 NE=1.41 NC=1.3728 MJE=0.377 MJC=0.3416 + TF=411.1E-12 TR=46.91E-9 ITF=0.6 VTF=1.7 XTF=3 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=500M MFG=NSC-PHILIPS) oregano-0.84.41/data/models/BC264D.model0000644000175000017500000000053613413640652016404 0ustar rubenruben.MODEL BC264 NJF ( + VTO = -2.3085E+000 + BETA = 1.09045E-003 + LAMBDA = 2.31754E-002 + RD = 7.77648E+000 + RS = 7.77648E+000 + IS = 2.59121E-016 + CGS = 2.00000E-012 + CGD = 2.20000E-012 + PB = 9.91494E-001 + FC = 5.00000E-001 )oregano-0.84.41/data/models/BC637.model0000644000175000017500000000070413413640652016301 0ustar rubenruben.MODEL BC637 NPN(IS=3.06E-15 ISE=1.62E-16 ISC=4.08E-14 XTI=3.00 + BF=1.29E2 BR=2.92 IKF=9.06E-1 IKR=1.00 XTB=1.5 + VAF=7.24E2 VAR=5.46E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.26E-2 RC=3.11E-1 RB=1.65E1 RBM=1.73E-2 IRB=2.38E-2 + CJE=1.17E-10 CJC=4.85E-11 XCJC=1.00 FC=5.00E-1 + NF=8.55E-1 NR=9.10E-1 NE=1.00 NC=1.00 MJE=4.22E-1 MJC=5.09E-1 + TF=1.42E-9 TR=0 PTF=0 ITF=5.64E-1 VTF=9.99E5 XTF=7.75E-1 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/TIP2955.model0000644000175000017500000000034013413640652016532 0ustar rubenruben.model TIP2955 PNP(IS=4.66E-12 BF=360 VAF=100 IKF=0.25 ISE=3.339E-11 + BR=2 ISC=5E-9 RB=3 IRB=0.001 RBM=0.4 RC=0.04 CJE=5.802E-10 VJE=1.2 + MJE=0.45 TF=8E-8 XTF=1 ITF=3 PTF=120 CJC=2.121E-10 MJC=0.4 TR=2.55E-6 + XTB=1 ) oregano-0.84.41/data/models/2N6770.model0000644000175000017500000000042213413640652016355 0ustar rubenruben.model 2N6770 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=28.45m Kp=20.65u W=2 L=2u Vto=3.31 + Rd=.264 Rds=4MEG Cbd=2.941n Pb=.8 Mj=.5 Fc=.5 Cgso=1.832n + Cgdo=172.7p Rg=1.385 Is=289.1p N=1 Tt=580n) * IR pid=2N6770 case=TO3 oregano-0.84.41/data/models/BDW93A.model0000644000175000017500000000067613413640652016456 0ustar rubenruben.SUBCKT BDW93A 1 2 3 * TERMINALS: C B E * SGS-Thompson 60 Volt 12 Amp NPN Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 3 1 DSUB .MODEL QPWR NPN (IS=14.4P NF=1 BF=119 VAF=139 IKF=4 ISE=636P NE=2 + BR=4 NR=1 VAR=24 IKR=6 RE=46.6M RB=.186 RC=18.6M XTB=1.5 + CJE=700P VJE=.74 MJE=.45 CJC=101P VJC=1.1 MJC=.24 TF=71.6N TR=3.74U) .MODEL DSUB D (IS=14.4P N=1 RS=46.6M BV=60 IBV=.001 CJO=101P TT=3.74U) .ENDS oregano-0.84.41/data/models/HP2723.model0000644000175000017500000000017313413640652016402 0ustar rubenruben.model HP2723 D (IS=.3N RS=7 N=1.08 BV=4 IBV=10U + CJO=.1P VJ=.65 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky Diode oregano-0.84.41/data/models/KBPC2501.model0000644000175000017500000000036513413640652016607 0ustar rubenruben.SUBCKT KBPC2501 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC2501 D3 3 5 BPC2501 D4 4 3 BPC2501 D1 4 2 BPC2501 .model BPC2501 D (IS=679N RS=2.22M N=2.06 BV=100 IBV=12U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 100 Volt 25 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/MPSA18.model0000644000175000017500000000054413413640652016470 0ustar rubenruben.model MPSA18 NPN(IS=33.58E-15 ISE=166.7E-15 ISC=0 XTI=3 + BF=236 BR=5.774 IKF=0.1172 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=7.547E-12 CJC=4.948E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.579 NC=2 MJE=0.3765 MJC=0.4109 + TF=310.1E-12 TR=800.3E-12 ITF=0.6 VTF=6 XTF=35 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/2SC2240.model0000644000175000017500000000042113413640652016450 0ustar rubenruben.model 2SC2240 NPN(Is=99.13f Xti=3 Eg=1.11 Vaf=422.2 Bf=352.8 Ise=1.179p Ne=1.782 + Ikf=.4704 Nk=.9631 Xtb=1.5 Var=100 Br=1.663 Isc=555.1p Nc=1.796 Ikr=5.85 Rc=.2032 + Cjc=7.561p Mjc=.2472 Vjc=.3905 Fc=.5 Cje=5p Mje=.3333 Vje=.75 Tr=10n Tf=1.295n Itf=1 + Xtf=0 Vtf=10) oregano-0.84.41/data/models/DD300.model0000644000175000017500000000020513413640652016263 0ustar rubenruben.model DD300 D (IS=178P RS=477 N=23.2 BV=3K IBV=100N + CJO=2.14P VJ=.75 M=.333 TT=50.4N) * Diotec 3000 Volt 20M Amp 35M us Si Diode oregano-0.84.41/data/models/BDV65.model0000644000175000017500000000067613413640652016353 0ustar rubenruben.SUBCKT BDV65 1 2 3 * TERMINALS: C B E * SGS-Thompson 60 Volt 12 Amp NPN Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 6.67K R2 4 3 33.3 D1 3 1 DSUB .MODEL QPWR NPN (IS=14.4P NF=1 BF=89 VAF=139 IKF=9.6 ISE=1.32N NE=2 + BR=4 NR=1 VAR=20 IKR=14.4 RE=55M RB=.22 RC=22M XTB=1.5 + CJE=1.6N VJE=.74 MJE=.45 CJC=231P VJC=1.1 MJC=.24 TF=89.5N TR=2.21U) .MODEL DSUB D (IS=14.4P N=1 RS=55M BV=60 IBV=.001 CJO=231P TT=2.21U) .ENDS oregano-0.84.41/data/models/BFQ181.model0000644000175000017500000000054213413640652016417 0ustar rubenruben.model BFQ181 NPN(IS=2.8E-16 ISE=1.95E-15 ISC=1E-17 XTI=3 + BF=100 BR=1 IKF=0.018 IKR=0.5 XTB=1.5 + VAF=35 VAR=360 VJE=0.85 VJC=0.75 + RE=1 RC=4.5 RB=35.2 RBM=1.9 IRB=0.25 + CJE=1E-12 CJC=1E-13 XCJC=0.3 FC=0.5 + NF=1 NR=1 NE=4.95 NC=2 MJE=0.33 MJC=0.33 + TF=0 TR=0 PTF=0 ITF=0 VTF=1E30 XTF=0 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/HP2272.model0000644000175000017500000000020413413640652016374 0ustar rubenruben.model HP2272 D (IS=.3U RS=9 N=1.08 BV=10 IBV=10U + CJO=.25P VJ=.5 M=.5 EG=.69 TT=72P) * H-P 5082-2272 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/IRF250.model0000644000175000017500000000043113413640652016421 0ustar rubenruben.model IRF250 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=4.484m Kp=19.93u W=1.1 L=2u Vto=3.804 + Rd=50.32m Rds=888.9K Cbd=3.481n Pb=.8 Mj=.5 Fc=.5 Cgso=1.461n + Cgdo=401.8p Rg=5.545 Is=40.52p N=1 Tt=340n) * IR pid=IRF250 case=TO3 oregano-0.84.41/data/models/BC850C.model0000644000175000017500000000050513413640652016400 0ustar rubenruben.model BC850C NPN(IS=7.049f XTI=3 EG=1.11 VAF=29.03 BF=462.4 ISE=57.19f + NE=2.002 IKF=.1609 Nk=.6124 Xtb=1.5 Br=3.988 Isc=10.68f + Nc=2.417 Ikr=2.721 Rc=1.374 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=9.485p Mje=.3333 Vje=.5 Tr=10n Tf=663.1p Itf=1.423 + Xtf=14.94 Vtf=10) * MFG=SIEMENS pid=bc850c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BY397.model0000644000175000017500000000017613413640652016335 0ustar rubenruben.model BY397 D (IS=22U RS=42M N=3.35 BV=200 IBV=10U + CJO=100P VJ=.75 M=.333 TT=585N) * Diotec 200 Volt 3 Amp .5 us Si Diode oregano-0.84.41/data/models/BCX71K.model0000644000175000017500000000047413413640652016460 0ustar rubenruben.model BCX71K PNP(IS=26.39f XTI=3 EG=1.11 VAF=35.7 BF=464.5 ISE=227f NE=2.108 + IKF=.1247 Nk=.5 Xtb=1.5 Br=7.094 Isc=90.49p Nc=2.24 Ikr=.4226 + Rc=2.604 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p Mje=.3865 + Vje=.5 Tr=10n Tf=591.1p Itf=.7698 Xtf=230.9 Vtf=1) * MFG=SIEMENS pid=bcx61fn case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BCP51P.model0000644000175000017500000000067413413640652016455 0ustar rubenruben.model BCP51P PNP(IS=6.1530E-14 ISE=1.382E-16 ISC=6.480E-15 XTI=3 + BF=150.8 BR=8.074 IKF=1.225 IKR=0.3627 XTB=1.5 + VAF=105.4 VAR=18.20 VJE=0.7300 VJC=0.6591 + RE=5.562E-02 RC=0.1449 RB=2 RBM=2 IRB=1E-06 + CJE=1.157E-10 CJC=5.264E-11 XCJC=0.4401 FC=0.9427 + NF=0.9911 NR=0.9965 NE=1.089 NC=1.022 MJE=0.3751 MJC=0.4533 + TF=8.666E-10 TR=2.75E-07 PTF=0 ITF=0.4581 VTF=3.008 XTF=1.231 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=PHILIPS) oregano-0.84.41/data/models/MUR1615C.model0000644000175000017500000000022113413640652016632 0ustar rubenruben.MODEL MUR1615C D (IS=179N RS=42M N=1.64 BV=150 IBV=250U + CJO=200P VJ=.775 M=.377 TT=52N) * Motorola MUR1615CT 150 Volt 16 Amp 35M us Si Diode oregano-0.84.41/data/models/DB3514.model0000644000175000017500000000040013413640652016350 0ustar rubenruben.SUBCKT DB3514 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B3514 D2 4 1 B3514 D3 5 1 B3514 D4 2 4 B3514 D5 2 3 B3514 D6 2 5 B3514 .model B3514 D (IS=300N RS=1.67M N=1.93 BV=1.4K IBV=9U + CJO=1.44N VJ=.75 M=.333 TT=4.32U) * Diotec 1400 Volt 35 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BC846B.model0000644000175000017500000000047613413640652016413 0ustar rubenruben.model BC846B NPN(IS=7.049f XTI=3 EG=1.11 VAF=62.37 BF=279.1 ISE=59.16f + NE=1.81 IKF=.2201 Nk=.6305 Xtb=1.5 Br=3.816 Isc=16.17f Nc=2.394 + Ikr=1.859 Rc=1.508 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 Cje=9.485p + Mje=.3333 Vje=.5 Tr=10n Tf=664p Itf=4.664 Xtf=147 Vtf=10) * MFG=SIEMENS pid=bc846b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BDW94C.model0000644000175000017500000000070513413640652016452 0ustar rubenruben.SUBCKT BDW94C 1 2 3 * TERMINALS: C B E * SGS-Thompson 100 Volt 12 Amp PNP Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 1 3 DSUB .MODEL QPWR PNP (IS=14.4P NF=1 BF=102 VAF=180 IKF=4.8 ISE=808P NE=2 + BR=4 NR=1 VAR=24 IKR=7.2 RE=53.3M RB=.213 RC=21.3M XTB=1.5 + CJE=1.14N VJE=.74 MJE=.45 CJC=165P VJC=1.1 MJC=.24 TF=71.6N TR=2.72U) .MODEL DSUB D (IS=14.4P N=1 RS=53.3M BV=100 IBV=.001 CJO=165P TT=2.72U) .ENDS oregano-0.84.41/data/models/BFS17.model0000644000175000017500000000064713413640652016345 0ustar rubenruben.model BFS17 NPN(IS=0.480E-15 ISE=7.490E-15 ISC=0.200E-15 XTI=3.0 + BF=99.655 BR=38.400 IKF=0.190 IKR=93.200E-3 XTB=1.600 + VAF=90 VAR=7.0 VJE=0.700 VJC=0.610 + RE=0.500 RC=2.680 RB=1.500 RBM=1.200 IRB=0.100E-3 + CJE=1.325E-12 CJC=1.050E-12 XCJC=0.400 FC=0.890 + NF=1.008 NR=1.010 NE=1.762 NC=1.042 MJE=0.220 MJC=0.240 + TF=56.940E-12 TR=2.4E-8 PTF=21.0 ITF=0.700 VTF=0.600 XTF=68.398 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BF622P.model0000644000175000017500000000066313413640652016422 0ustar rubenruben.model BF622P NPN(IS=7.974E-15 ISE=2.266E-16 ISC=4.33E-12 XTI=3 + BF=122 BR=6.235 IKF=0.01029 IKR=0.02746 XTB=1.5 + VAF=25.51 VAR=19.43 VJE=0.4581 VJC=0.197 + RE=0.3814 RC=0.439 RB=1 RBM=0.5 IRB=1E-06 + CJE=1.742E-11 CJC=5.045E-12 XCJC=0.1041 FC=0.8555 + NF=0.993 NR=0.999 NE=1.18 NC=1.397 MJE=0.3092 MJC=0.1947 + TF=7.073E-10 TR=1E-08 PTF=0 ITF=0.1495 VTF=6.144 XTF=289.5 + EG=1.11 KF=1E-9 AF=1 + VCEO=25V ICRATING=100M MFG=PHILIPS) oregano-0.84.41/data/models/IRF523.model0000644000175000017500000000043013413640652016423 0ustar rubenruben.model IRF523 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1459 Kp=20.79u W=.73 L=2u Vto=3.59 + Rd=.1002 Rds=355.6K Cbd=622.1p Pb=.8 Mj=.5 Fc=.5 Cgso=480.6p + Cgdo=174.6p Rg=4.374 Is=3.322p N=1 Tt=137n) * IR pid=IRF523 case=TO220 oregano-0.84.41/data/models/BC856A.model0000644000175000017500000000050013413640652016377 0ustar rubenruben.model BC856A PNP(IS=336.7f XTI=3 EG=1.11 VAF=106.8 BF=180.6 ISE=2.666p + NE=1.944 IKF=.1094 Nk=.4986 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.791 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.1p Itf=2.326 Xtf=20.43 Vtf=10) * MFG=SIEMENS pid=bc856a case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BFG198.model0000644000175000017500000000071213413640652016414 0ustar rubenruben.model BFG198 NPN(IS=1.8998E-15 ISE=7.1424E-14 ISC=2.0992E-15 XTI=3 + BF=132.75 BR=11.407 IKF=0.44125 IKR=0.010016 XTB=1.5 + VAF=15 VAR=4.1613 VJE=0.85909 VJC=0.81533 + RE=1.1351 RC=0.27485 RB=1.2652 RBM=1.0893 IRB=2.8135E-5 + CJE=5.0933E-15 CJC=2.3278E-12 XCJC=0.14496 FC=0.92887 + NF=0.89608 NR=0.91008 NE=1.3235 NC=1.4602 MJE=0.69062 MJC=0.46849 + TF=3.5786E-11 TR=1.2466E-9 PTF=0 ITF=0.062059 VTF=0.10681 XTF=0.44444 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/SFH409.model0000644000175000017500000000020013413640652016421 0ustar rubenruben.MODEL SFH409 D (IS=215N RS=.466 N=3.85 BV=5 IBV=10N + CJO=25P VJ=.75 M=.333 TT=1.44U) * Siemens 5 Volt .1 Amp 1 us GaAs Diode oregano-0.84.41/data/models/HP2830.model0000644000175000017500000000020413413640652016374 0ustar rubenruben.model HP2830 D (IS=.2N RS=6 N=1.08 BV=10 IBV=10U + CJO=.4P VJ=.65 M=.5 EG=.69 TT=72P) * H-P 5082-2830 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/GI758.model0000644000175000017500000000025613413640652016322 0ustar rubenruben.model GI758 D (IS=3.62E-08 N=1.67 BV=1.07E+03 IBV=2.50E-05 + RS=1.84E-03 CJO=9.28E-10 VJ=.29 M=.55 TT=6.91E-06) * General Instrument 800 Volt 6.00 Amp 5.50 us Si Rectifier oregano-0.84.41/data/models/MR850.model0000644000175000017500000000020313413640652016322 0ustar rubenruben.MODEL MR850 D (IS=3.91N RS=14.6M N=1.67 BV=50 IBV=100N + CJO=124P VJ=.75 M=.333 TT=518N) * Motorola 50 Volt 3 Amp .2 us Si Diode oregano-0.84.41/data/models/2N3859A.model0000644000175000017500000000056013413640652016466 0ustar rubenruben.model 2N3859A NPN(IS=5.911E-15 ISE=5.911E-15 ISC=0 XTI=3 + BF=393.6 BR=1.372 IKF=12.43E-3 IKR=0 XTB=1.5 + VAF=62.37 VAR=21.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.61 RB=10 + CJE=4.973E-12 CJC=4.017E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.271 NC=2 MJE=0.4146 MJC=0.3174 + TF=818.2E-12 TR=4.761E-9 ITF=0.35 VTF=4 XTF=7 + EG=1.11 KF=1E-9 AF=1 + VCEO=30 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/TIP112.model0000644000175000017500000000074313413640652016440 0ustar rubenruben.SUBCKT TIP112 1 2 3 * TERMINALS: C B E * 100 Volt 2 Amp NPN Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 60 D1 3 1 DSUB .MODEL QPWR NPN (IS=2.4P NF=1 BF=142 VAF=180 IKF=2.4 ISE=168P NE=2 + BR=4 NR=1 VAR=20 IKR=3.6 RE=.45 RB=1.8 RC=.18 XTB=1.5 + CJE=382P VJE=.74 MJE=.45 CJC=48.7P VJC=1.1 MJC=.24 TF=110N TR=4.75U) .MODEL DSUB D (IS=2.4P N=1 RS=.45 BV=100 IBV=.001 CJO=48.7P TT=4.75U) .ENDS * TIP112, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/IRF9512.model0000644000175000017500000000043613413640652016520 0ustar rubenruben.model IRF9512 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=.3715 Kp=10.54u W=.2 L=2u Vto=-3.923 + Rd=.6523 Rds=444.4K Cbd=331.8p Pb=.8 Mj=.5 Fc=.5 Cgso=2.547n + Cgdo=311p Rg=4.087 Is=3.748E-18 N=3 Tt=2250n) * IR pid=IRF9512 case=TO220 oregano-0.84.41/data/models/DB2514.model0000644000175000017500000000040113413640652016350 0ustar rubenruben.SUBCKT DB2514 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B2514 D2 4 1 B2514 D3 5 1 B2514 D4 2 4 B2514 D5 2 3 B2514 D6 2 5 B2514 .model B2514 D (IS=24.5N RS=2.67M N=1.97 BV=1.4K IBV=9U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 1400 Volt 25 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BC550B.model0000644000175000017500000000050513413640652016374 0ustar rubenruben.model BC550B NPN(IS=7.049f XTI=3 EG=1.11 VAF=59.93 BF=375.6 ISE=56.03f + NE=1.553 IKF=87.07m Nk=.4901 Xtb=1.5 Br=2.886 Isc=7.371p + Nc=1.508 Ikr=5.426 Rc=1.175 Cjc=5.5p Mjc=.3132 Vjc=.4924 Fc=.5 + Cje=11.5p Mje=.6558 Vje=.5 Tr=10n Tf=417.3p Itf=1.512 Xtf=39.51 + Vtf=10) * MFG=PHILIPS pid=bc550b case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/TIP102.model0000644000175000017500000000075513413640652016442 0ustar rubenruben.SUBCKT TIP102 1 2 3 * TERMINALS: C B E * 100 Volt 8 Amp NPN Darlington Transistor 08-03-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 1.8K R2 4 3 70 D1 3 1 DSUB .MODEL QPWR NPN (IS=9.6P NF=1 BF=447 VAF=180 IKF=5.44 ISE=161P NE=2 + BR=4 NR=1 VAR=20 IKR=8.16 RE=.112 RB=.45 RC=45M XTB=1.5 + CJE=1.07N VJE=.74 MJE=.45 CJC=155P VJC=1.1 MJC=.24 TF=62.6N TR=3.06U) .MODEL DSUB D (IS=9.6P N=1 RS=.112 BV=100 IBV=.001 CJO=155P TT=3.06U) .ENDS * TIP102, TEXAS INSTRUMENTS POWER PRODUCTS DATA BOOK, 1985 oregano-0.84.41/data/models/DB2501.model0000644000175000017500000000037713413640652016360 0ustar rubenruben.SUBCKT DB2501 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B2501 D2 4 1 B2501 D3 5 1 B2501 D4 2 4 B2501 D5 2 3 B2501 D6 2 5 B2501 .model B2501 D (IS=24.5N RS=2.67M N=1.97 BV=100 IBV=3U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 100 Volt 25 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BC337-25.model0000644000175000017500000000064213413640652016523 0ustar rubenruben.model BC337-25 NPN(IS=4.13E-14 ISE=3.534E-15 ISC=1.957E-13 XTI=3 + BF=292.4 BR=23.68 IKF=0.9 IKR=0.1 XTB=1.5 + VAF=145.7 VAR=20 VJE=0.6752 VJC=0.3523 + RE=0.1129 RC=0.25 RB=60 RBM=8 IRB=0.0002 + CJE=3.799E-11 CJC=1.355E-11 XCJC=0.455 FC=0.643 + NF=0.9822 NR=0.982 NE=1.35 NC=1.3 MJE=0.3488 MJC=0.3831 + TF=5.4E-10 TR=3E-08 PTF=90 ITF=0.665 VTF=4.448 XTF=4 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=200M MFG=PHILIPS) oregano-0.84.41/data/models/DB2502.model0000644000175000017500000000037713413640652016361 0ustar rubenruben.SUBCKT DB2502 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B2502 D2 4 1 B2502 D3 5 1 B2502 D4 2 4 B2502 D5 2 3 B2502 D6 2 5 B2502 .model B2502 D (IS=24.5N RS=2.67M N=1.97 BV=200 IBV=4U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 200 Volt 25 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/HP0013.model0000644000175000017500000000020413413640652016363 0ustar rubenruben.model HP0013 D (IS=70N RS=10 N=1.08 BV=4 IBV=10U + CJO=.15P VJ=.5 M=.5 EG=.69 TT=72P) * H-P 5082-0013 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/BC857B.model0000644000175000017500000000047713413640652016416 0ustar rubenruben.model BC857B PNP(IS=336.7f XTI=3 EG=1.11 VAF=62.37 BF=277.7 ISE=1.966p + NE=2.123 IKF=.1686 Nk=.545 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.891 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.9p Itf=2.133 Xtf=23.02 Vtf=10) * MFG=SIEMENS pid=bc857b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/HP2303.model0000644000175000017500000000021213413640652016366 0ustar rubenruben.model HP2303 D (IS=7N RS=10 N=1.08 BV=25 IBV=10U + CJO=.7P VJ=.64 M=.5 EG=.69 TT=72P) * H-P 5082-2303 400 Volt .5 Amp Si Schottky Diode oregano-0.84.41/data/models/BC848C.model0000644000175000017500000000050513413640652016407 0ustar rubenruben.model BC848C NPN(IS=7.049f XTI=3 EG=1.11 VAF=29.03 BF=462.4 ISE=57.19f + NE=2.002 IKF=.1609 Nk=.6124 Xtb=1.5 Br=3.988 Isc=10.68f + Nc=2.417 Ikr=2.721 Rc=1.374 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=9.485p Mje=.3333 Vje=.5 Tr=10n Tf=663.1p Itf=1.423 + Xtf=14.94 Vtf=10) * MFG=SIEMENS pid=bc848c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/D44H11.model0000644000175000017500000000057613413640652016371 0ustar rubenruben.model D44H11 NPN(IS=7.079646E-14 ISE=2.92884E-11 ISC=3.98107E-13 XTI=3 + BF=392.02 BR=67.165 IKF=1.72 IKR=1.58489 XTB=1.77681 + VAF=63.5 VAR=58.42 VJE=0.785 VJC=0.5 + RE=0.034 RC=0.2 RB=271 RBM=0.361 IRB=5.011872E-6 + CJE=8.49E-10 CJC=3.66E-10 XCJC=0.54505 FC=0.5 + NF=0.828 NR=0.825 NE=1.72 NC=1.07 MJE=0.387 MJC=0.352 + EG=0.958 KF=1E-9 AF=1 + VCEO=80 ICRATING=5 MFG=FAIRCHILD) oregano-0.84.41/data/models/IRF421.model0000644000175000017500000000042513413640652016424 0ustar rubenruben.model IRF421 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=57.8m Kp=21.11u W=.26 L=2u Vto=3.827 + Rd=1.595 Rds=2MEG Cbd=394.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.577n + Cgdo=117.1p Rg=.2379 Is=267.9p N=1 Tt=560n) * IR pid=IRF421 case=TO3 oregano-0.84.41/data/models/BC546B.model0000644000175000017500000000047413413640652016406 0ustar rubenruben.model BC546B NPN(IS=7.049f XTI=3 EG=1.11 VAF=62.79 BF=374.6 ISE=68f NE=1.576 + IKF=81.57m Nk=.4767 Xtb=1.5 Br=1 Isc=12.4f Nc=1.835 Ikr=3.924 + Rc=.9747 Cjc=5.25p Mjc=.3147 Vjc=.5697 Fc=.5 Cje=11.5p + Mje=.6715 Vje=.5 Tr=10n Tf=410.2p Itf=1.491 Xtf=40.06 Vtf=10) * MFG=PHILIPS pid=bc546b case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/HP5832.model0000644000175000017500000000020313413640652016400 0ustar rubenruben.model HP5832 D (IS=46N RS=8 N=1.08 BV=4 IBV=10U + CJO=.13P VJ=.5 M=.5 EG=.69 TT=72P) * H-P HSCH-5832 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/IRF221.model0000644000175000017500000000042513413640652016422 0ustar rubenruben.model IRF221 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1196 Kp=21.11u W=.23 L=2u Vto=3.077 + Rd=.3174 Rds=666.7K Cbd=650.2p Pb=.8 Mj=.5 Fc=.5 Cgso=3.971n + Cgdo=227.4p Rg=9.256 Is=2.4n N=1 Tt=610n) * IR pid=IRF221 case=TO3 oregano-0.84.41/data/models/IRF034.model0000644000175000017500000000042613413640652016425 0ustar rubenruben.model IRF034 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=31.69m Kp=21.5u W=1.3 L=2u Vto=3.441 + Rd=1.139m Rds=266.7K Cbd=2.857n Pb=.8 Mj=.5 Fc=.5 Cgso=579p + Cgdo=456.3p Rg=8.548 Is=184.5f N=1 Tt=365n) * IR pid=IRF034 case=TO3 oregano-0.84.41/data/models/BAV70.model0000644000175000017500000000021413413640652016330 0ustar rubenruben.MODEL BAV70 D IS=4.856E-9 N=2.01 RS=1.358 XTI=3 + EG=1.11 BV=162 IBV=2.587E-3 TT=4.184E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/BFP136.model0000644000175000017500000000070713413640652016421 0ustar rubenruben.model BFP136 NPN(IS=1.5813E-15 ISE=4.637E-14 ISC=8.0864E-18 XTI=3 + BF=113.32 NR=1.8047 IKF=1.4907 IKR=0.033605 XTB=1.5 + VAF=12.331 VAR=31.901 VJE=0.71518 VJC=1.1381 + RE=0.22081 RC=0.01636 RB=1.0078 RBM=0 IRB=0.00083992 + CJE=3.3904E-14 CJC=2.9774E-12 XCJC=0.02899 FC=0.99886 + NF=1.0653 BR=86.718 NE=1.4254 NC=1.8821 MJE=0.36824 MJC=0.31461 + TF=2.0691E-11 TR=1.0033E-9 PTF=0 ITF=0.0045579 VTF=0.10174 XTF=0.31338 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BCY71.model0000644000175000017500000000047213413640652016344 0ustar rubenruben.model BCY71 PNP(IS=22.48f XTI=3 EG=1.11 VAF=68.32 BF=323.6 ISE=291.5f + NE=1.906 IKF=.1158 Nk=.5113 Xtb=1.5 Br=1 Isc=1.181p Nc=1.234 + Ikr=9.81 Rc=2.019 Cjc=23.19p Mjc=.2354 Vjc=.5 Fc=.5 Cje=9p + Mje=.3117 Vje=.5 Tr=809.2n Tf=275.3p Itf=17.79 Xtf=214.9 Vtf=10 * MFG=PHILIPS pid=bcy71 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BCY78-10.model0000644000175000017500000000047613413640652016575 0ustar rubenruben.model BCY78-10 PNP(IS=55.58p XTI=3 EG=1.11 VAF=35.7 BF=523.4 ISE=161.8p + NE=2.89 IKF=70.98m Nk=.5 Xtb=1.5 Br=2.429 Isc=34.94n Nc=2.499 + Ikr=1.387 Rc=2.829 Cjc=16p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p + Mje=.3333 Vje=.5 Tr=262.5n Tf=763p Itf=5.411 Xtf=180.8 Vtf=10) * MFG=PHILIPS pid=bcy78-10 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/2N3390.model0000644000175000017500000000055313413640652016355 0ustar rubenruben.model 2N3390 NPN(IS=12.03E-15 ISE=1.842E-12 ISC=0 XTI=3 + BF=685.8 BR=4.379 IKF=0.1072 IKR=0 XTB=1.5 + VAF=37.37 VAR=12.5 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=8.307E-12 CJC=5.777E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.971 NC=2 MJE=0.384 MJC=0.3199 + TF=385.4E-12 TR=685.3E-12 ITF=0.17 VTF=3 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/MPSL01.model0000644000175000017500000000054513413640652016474 0ustar rubenruben.model MPSL01 NPN(IS=2.511E-15 ISE=2.511E-15 ISC=0 XTI=3 + BF=213.4 BR=3.24 IKF=0.3495 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=18.79E-12 CJC=4.883E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.241 NC=2 MJE=0.3416 MJC=0.3047 + TF=560.1E-12 TR=1.212E-9 ITF=50E-3 VTF=5 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=120 ICRATING=50M MFG=NSC) oregano-0.84.41/data/models/BCW61C.model0000644000175000017500000000047613413640652016450 0ustar rubenruben.model BCW61C PNP(IS=26.39f XTI=3 EG=1.11 VAF=62.37 BF=330.6 ISE=285.2f + NE=2.013 IKF=2.498 Nk=.5 Xtb=1.5 Br=7.258 Isc=104.6p Nc=2.312 + Ikr=.332 Rc=2.694 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=590.8p Itf=.8403 Xtf=457.4 Vtf=1) * MFG=SIEMENS pid=bcw61c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BFQ31.model0000644000175000017500000000052713413640652016334 0ustar rubenruben.model BFQ31 NPN(IS=1.73E-13 ISE=241E-12 ISC=8.31E-13 XTI=3 + BF=200 BR=3.124 IKF=8.8E-3 IKR=0.02 XTB=1.5 + VAF=90 VAR=9.7 VJE=0.65 VJC=0.415 + RE=2.13 RC=30 RB=17 + CJE=2.27E-12 CJC=1.2E-12 XCJC=0.75 FC=0.5 + NF=1 NR=0.9705 NE=1.701 NC=1.112 MJE=0.145 MJC=0.145 + TF=0.2E-9 TR=1E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/2N6660.model0000644000175000017500000000036713413640652016363 0ustar rubenruben.model 2N6660 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=2u Uo=600 Phi=.6 Kp=1.047u W=.32 L=2u Rs=20m Vto=1.8 + Rd=.4672 Rds=6MEG Cgso=1.885p Cgdo=7.564p Cbd=118p Mj=.5 Pb=.8 + Fc=.5 Rg=209.5 Is=10f N=1 Rb=1m) oregano-0.84.41/data/models/LM555.model0000644000175000017500000000163413413640652016327 0ustar rubenruben.SUBCKT LM555 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 LM555 oregano-0.84.41/data/models/BF512.model0000644000175000017500000000061713413640652016277 0ustar rubenruben.SUBCKT BF512/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -2.3973E+000 + BETA = 1.31099E-003 + LAMBDA = 1.70958E-002 + RD = 3.03493E+000 + RS = 3.03493E+000 + IS = 5.66111E-014 + CGS = 3.42000E-012 + CGD = 2.68000E-012 + PB = 8.25674E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BAS19.model0000644000175000017500000000021513413640652016331 0ustar rubenruben.MODEL BAS19 D IS=8.402E-9 N=2.011 RS=.5125 XTI=3 + EG=1.11 BV=435 IBV=4.139E-3 TT=41.84E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/IRF730.model0000644000175000017500000000043313413640652016426 0ustar rubenruben.model IRF730 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=27.94m Kp=20.5u W=.43 L=2u Vto=3.474 + Rd=.8665 Rds=1.778MEG Cbd=701.9p Pb=.8 Mj=.5 Fc=.5 Cgso=1.352n + Cgdo=146.9p Rg=.8327 Is=34.73p N=1 Tt=515n) * IR pid=IRF730 case=TO220 oregano-0.84.41/data/models/2N6661.model0000644000175000017500000000036213413640652016357 0ustar rubenruben.model 2N6661 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=2u Uo=600 Phi=.6 Kp=1.05u W=.18 L=2u Rs=20m Vto=2 Rd=0 + Rds=9MEG Cgso=15.45p Cgdo=8.947p Cbd=108.7p Mj=.5 Pb=.8 Fc=.5 + Rg=209.5 Is=10f N=1 Rb=1m) oregano-0.84.41/data/models/BFQ182.model0000644000175000017500000000061413413640652016420 0ustar rubenruben.model BFQ182 NPN(IS=2E-16 ISE=1.3E-14 ISC=1E-17 XTI=2 + BF=70.22 BR=1 IKF=0.32 IKR=0.5 XTB=1.5 + VAF=32.284 VAR=3.22 VJE=1.02 VJC=0.629 + RE=0.45 RC=2.147 RB=9 RBM=0.9 IRB=0.251 + CJE=8.66E-13 CJC=1.2E-13 XCJC=0.495 FC=0.497 + NF=0.9 NR=1 NE=1.775 NC=2 MJE=0.353 MJC=0.734 + TF=1.11E-11 TR=1.11E-11 PTF=0 ITF=0.1 VTF=1.705 XTF=19.761 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/MPSA92.model0000644000175000017500000000070513413640652016471 0ustar rubenruben.model MPSA92 PNP(IS=9.53E-14 ISE=8.37E-13 ISC=9.99E-11 XTI=3.00 + BF=9.80E1 BR=4.78 IKF=3.49E-2 IKR=1.00 XTB=1.5 + VAF=2.60E2 VAR=1.40E2 VJE=3.00E-1 VJC=3.00E-1 + RE=1.00E-2 RC=1.00E-2 RB=2.76E1 RBM=6.66E-2 IRB=7.02E-4 + CJE=9.54E-11 CJC=4.66E-11 XCJC=1.00 FC=5.00E-1 + NF=1.00 NR=1.55 NE=1.49 NC=1.50 MJE=4.26E-1 MJC=7.00E-1 + TF=9.52E-10 TR=516.9E-12 PTF=0 ITF=4.12E-1 VTF=9.99E5 XTF=1.03 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=100M MFG=SIEMENS) oregano-0.84.41/data/models/IRF543.model0000644000175000017500000000043313413640652016430 0ustar rubenruben.model IRF543 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=21.34m Kp=20.71u W=.94 L=2u Vto=3.136 + Rd=42.52m Rds=355.6K Cbd=2.408n Pb=.8 Mj=.5 Fc=.5 Cgso=1.031n + Cgdo=567.7p Rg=3.842 Is=6.196p N=1 Tt=142n) * IR pid=IRF543 case=TO220 oregano-0.84.41/data/models/TIP32C.model0000644000175000017500000000067013413640652016463 0ustar rubenruben.model TIP32C PNP(IS=6.77594E-13 ISE=1.31133E-11 ISC=1.31133E-11 XTI=3 + BF=198.8 BR=25.4966 IKF=0.891251 IKR=0.410482 XTB=1.2648 + VAF=77.429 VAR=70.9603 VJE=0.59 VJC=0.5 + RE=0.06 RC=0.16 RB=161.0 RBM=3.097 IRB=3.548134E-5 + CJE=2.7E-10 CJC=1.07E-10 XCJC=0.589205 FC=0.5 + NF=1.001 NR=1.004 NE=1.98 NC=1.12 MJE=0.319 MJC=0.352 + TF=2.3733E-8 TR=1.0000E-8 ITF=1 VTF=10 XTF=10 + EG=1.0863 KF=1E-9 AF=1 + VCEO=100 ICRATING=3 MFG=FAIRCHILD) oregano-0.84.41/data/models/BD243A.model0000644000175000017500000000065713413640652016403 0ustar rubenruben.model BD243A NPN(IS=3.11126E-13 ISE=6.90683E-11 ISC=3.31131E-13 XTI=3 + BF=93.0 BR=9.78891 IKF=5.62341 IKR=0.0382066 XTB=1.9711 + VAF=174.5 VAR=122.381 VJE=0.6403992 VJC=0.4308133 + RE=0.701391 RC=0.701391 RB=43.8404 RBM=0.436865 IRB=5.2264E-5 + CJE=8.001919E-10 CJC=1.34699E-10 XCJC=0.5559 FC=0.5 + NF=0.973751 NR=0.980115 NE=2.0 NC=1.09387 MJE=0.339666 MJC=0.347066 + EG=1.2325 KF=1E-9 AF=1 + VCEO=60 ICRATING=3 MFG=FAIRCHILD) oregano-0.84.41/data/models/2N3642.model0000644000175000017500000000055113413640652016353 0ustar rubenruben.model 2N3642 NPN(IS=14.34E-15 ISE=14.34E-15 ISC=0 XTI=3 + BF=118.6 BR=7.134 IKF=0.2524 IKR=0 XTB=1.5 + VAF=74.03 VAR=28 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=22.01E-12 CJC=7.306E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.236 NC=2 MJE=0.377 MJC=0.3416 + TF=410.3E-12 TR=50.96E-9 ITF=0.6 VTF=1.7 XTF=3 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/2N3640.model0000644000175000017500000000053213413640652016350 0ustar rubenruben.model 2N3640 PNP(IS=545.6E-18 ISE=0 ISC=0 XTI=3 + BF=59.22 BR=1.438 IKF=50E-3 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.15 RC=3.75 RB=10 + CJE=2.65E-12 CJC=2.77E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.5 NC=2 MJE=0.3083 MJC=0.1416 + TF=118.5E-12 TR=4.123E-9 ITF=0.5 VTF=3 XTF=6 + EG=1.11 KF=1E-9 AF=1 + VCEO=12 ICRATING=50M MFG=NSC) oregano-0.84.41/data/models/BC818-40.model0000644000175000017500000000050013413640652016515 0ustar rubenruben.model BC818-40 NPN(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=407.8 ISE=333.4f + NE=1.692 IKF=.9448 Nk=.6041 Xtb=1.5 Br=6.39 Isc=268.8f Nc=2.125 + Ikr=.1193 Rc=.4205 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=662p Itf=3.238 Xtf=134.9 Vtf=10) * MFG=SIEMENS pid=bc818-40 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF442.model0000644000175000017500000000043113413640652016424 0ustar rubenruben.model IRF442 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.819m Kp=20.87u W=.61 L=2u Vto=3.873 + Rd=.8223 Rds=2.222MEG Cbd=1.365n Pb=.8 Mj=.5 Fc=.5 Cgso=1.78n + Cgdo=148.8p Rg=.6258 Is=1.406n N=1 Tt=710n) * IR pid=IRF442 case=TO3 oregano-0.84.41/data/models/2N6428.model0000644000175000017500000000064113413640652016360 0ustar rubenruben.model 2N6428 NPN(IS=45.000E-15 ISE=55.668E-15 ISC=1.084E-12 XTI=3.200 + BF=516.544 BR=7.745 IKF=0.708 IKR=1.0 XTB=1.400 + VAF=74.0 VAR=14.0 VJE=0.690 VJC=0.750 + RE=0.350 RC=1.445 RB=9.0 RBM=4.500 IRB=0.100E-3 + CJE=13.050E-12 CJC=4.100E-12 XCJC=0.650 FC=0.750 + NF=1.010 NR=1.015 NE=2.567 NC=4.063 MJE=0.375 MJC=0.420 + TF=0.620E-9 TR=2.5E-9 PTF=1.0 ITF=0.720 VTF=1.0 XTF=68.0 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BF256A.model0000644000175000017500000000062013413640652016377 0ustar rubenruben.SUBCKT BF256A/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -2.1333E+000 + BETA = 1.06491E-003 + LAMBDA = 1.68673E-002 + RD = 1.41231E+001 + RS = 1.41231E+001 + IS = 3.50865E-016 + CGS = 2.10000E-012 + CGD = 2.30000E-012 + PB = 7.73895E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BSS149.model0000644000175000017500000000036313413640652016443 0ustar rubenruben.model BSS149 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=2u Uo=600 Phi=.6 Kp=1.036u W=.92 L=2u Rs=20m Vto=-1.056 + Rd=.5 Rds=714.3 Cgso=4p Cgdo=1p Cbd=42.39p Mj=.6344 Pb=.3905 + Fc=.5 Rg=0 Is=1f N=1 Rb=1m) oregano-0.84.41/data/models/BD333.model0000644000175000017500000000070113413640652016270 0ustar rubenruben.SUBCKT BD333 1 2 3 * TERMINALS: C B E * SGS-Thompson 80 Volt 6 Amp NPN Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 13.3K R2 4 3 66.7 D1 3 1 DSUB .MODEL QPWR NPN (IS=7.2P NF=1 BF=138 VAF=161 IKF=5.2 ISE=443P NE=2 + BR=4 NR=1 VAR=20 IKR=7.8 RE=91.7M RB=.366 RC=36.6M XTB=1.5 + CJE=809P VJE=.74 MJE=.45 CJC=116P VJC=1.1 MJC=.24 TF=98.4N TR=1.53U) .MODEL DSUB D (IS=7.2P N=1 RS=91.7M BV=80 IBV=.001 CJO=116P TT=1.53U) .ENDS oregano-0.84.41/data/models/BD131.model0000644000175000017500000000064713413640652016275 0ustar rubenruben.model BD131 NPN(IS=2.171E-13 ISE=2.423E-14 ISC=3.626E-13 XTI=3 + BF=133 BR=18.54 IKF=3.09 IKR=0.35 XTB=1.5 + VAF=91 VAR=30 VJE=0.9472 VJC=0.1708 + RE=0.19 RC=0.04082 RB=13 RBM=4.441E-10 IRB=0.0005946 + CJE=3.968E-10 CJC=2.687E-10 XCJC=0.75 FC=0.78 + NF=0.9918 NR=0.9926 NE=1.274 NC=1.193 MJE=0.4214 MJC=0.3977 + TF=1.354E-09 TR=4.6E-08 PTF=0 ITF=3.692 VTF=7 XTF=7 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=3 MFG=PHILIPS) oregano-0.84.41/data/models/2N3055H.model0000644000175000017500000000100613413640652016455 0ustar rubenruben.model 2N3055H NPN(IS=2.37426e-14 BF=129.119 NF=0.85 VAF=31.1252 + IKF=0.990922 ISE=2.47498e-10 NE=1.89002 BR=1.01252 + NR=0.924456 VAR=254.624 IKR=2.70227 ISC=2.47498e-10 + NC=2.90624 RB=3.66609 IRB=0.1 RBM=0.1 + RE=0.000352673 RC=0.0764459 XTB=1.34801 XTI=1.07207 + EG=1.206 CJE=9.03089e-08 VJE=0.513954 MJE=0.59999 + TF=1e-08 XTF=1.36696 VTF=1.02605 ITF=0.987296 + CJC=5e-10 VJC=0.400243 MJC=0.410238 XCJC=0.803124 + FC=0.661216 CJS=0 VJS=0.75 MJS=0.5 TR=1e-07 PTF=0 KF=0 AF=1 + VCEO=60 ICRATING=15 MFG=Motorola) oregano-0.84.41/data/models/SFH483.model0000644000175000017500000000020013413640652016423 0ustar rubenruben.MODEL SFH483 D (IS=617F RS=1.69 N=1.84 BV=5 IBV=10N + CJO=25P VJ=.75 M=.333 TT=864N) * Siemens 5 Volt .2 Amp .6 us GaAs Diode oregano-0.84.41/data/models/2N5089.model0000644000175000017500000000056713413640652016371 0ustar rubenruben.model 2N5089 NPN(IS=5.911E-15 ISE=5.911E-15 ISC=0 XTI=3 + BF=112 BR=1.262 IKF=14.92E-3 IKR=0 XTB=1.5 + VAF=62.37 VAR=21.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.61 RB=10 + CJE=4.973E-12 CJC=4.017E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.421 NC=2 MJE=0.4146 MJC=0.3174 + TF=822.3E-12 TR=4.671E-9 ITF=0.35 VTF=4 XTF=7 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=100M MFG=NSC-FAIRCHILD) oregano-0.84.41/data/models/2N4275.model0000644000175000017500000000054613413640652016362 0ustar rubenruben.model 2N4275 NPN(IS=44.14E-15 ISE=97.82E-15 ISC=0 XTI=3 + BF=73.62 BR=12.84E-3 IKF=0.3498 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.06 RC=0.6 RB=10 + CJE=4.5E-12 CJC=2.83E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.389 NC=2 MJE=0.2418 MJC=0.862 + TF=227.6E-12 TR=1.079E-6 ITF=0.3 VTF=4 XTF=4 + EG=1.11 KF=1E-9 AF=1 + VCEO=15 ICRATING=200M MFG=NSC) oregano-0.84.41/data/models/BYX55600.model0000644000175000017500000000020513413640652016613 0ustar rubenruben.model BYX55600 D (IS=3.11N RS=42M N=1.75 BV=600 IBV=5U + CJO=48.6P VJ=.75 M=.333 TT=455N) * Diotec600 Volt 1.2 Amp .35 us Si Diode oregano-0.84.41/data/models/BC108A.model0000644000175000017500000000047513413640652016400 0ustar rubenruben.model BC108A NPN(IS=7.049f XTI=3 EG=1.11 VAF=116.3 BF=375.5 ISE=7.049f + NE=1.281 IKF=4.589 Nk=.5 Xtb=1.5 Br=2.611 Isc=121.7p Nc=1.865 + Ikr=5.313 Rc=1.464 Cjc=5.38p Mjc=.329 Vjc=.6218 Fc=.5 Cje=11.5p + Mje=.2717 Vje=.5 Tr=10n Tf=451p Itf=6.194 Xtf=17.43 Vtf=10) * MFG=PHILIPS pid=bc108a case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/IRF224.model0000644000175000017500000000043013413640652016421 0ustar rubenruben.model IRF224 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=82.55m Kp=20.12u W=.2 L=2u Vto=3.803 + Rd=.5132 Rds=1.111MEG Cbd=514.4p Pb=.8 Mj=.5 Fc=.5 Cgso=3.913n + Cgdo=354.3p Rg=2.916 Is=40.4p N=1 Tt=350n) * IR pid=IRF224 case=TO3 oregano-0.84.41/data/models/BCX71G.model0000644000175000017500000000047713413640652016457 0ustar rubenruben.model BCX71G PNP(IS=26.39f XTI=3 EG=1.11 VAF=106.8 BF=166.5 ISE=249.1f + NE=1.806 IKF=1.217 Nk=.5 Xtb=1.5 Br=8.744 Isc=82.16p Nc=2.283 + Ikr=29.82m Rc=2.543 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 + Cje=8.397p Mje=.3865 Vje=.5 Tr=10n Tf=590.5p Itf=.603 Xtf=225 + Vtf=1) * MFG=SIEMENS pid=bcx71g case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF255.model0000644000175000017500000000040713413640652016431 0ustar rubenruben.model IRF255 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=2u Uo=600 Phi=.6 Kp=1.04u W=28 L=2u Rs=10m Vto=3.686 Rd=1m + Rds=1MEG Cgso=43.18p Cgdo=7.89p Cbd=5.886n Mj=1.089 Pb=2.532 + Fc=.5 Rg=7.008 Is=562.2n N=1.833 Rb=6.906m) oregano-0.84.41/data/models/DB2508.model0000644000175000017500000000037713413640652016367 0ustar rubenruben.SUBCKT DB2508 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B2508 D2 4 1 B2508 D3 5 1 B2508 D4 2 4 B2508 D5 2 3 B2508 D6 2 5 B2508 .model B2508 D (IS=24.5N RS=2.67M N=1.97 BV=800 IBV=7U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 800 Volt 25 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BFP180.model0000644000175000017500000000070013413640652016411 0ustar rubenruben.model BFP180 NPN(IS=1.8519E-16 ISE=1.3093E-13 ISC=6.1852E-15 XTI=3 + BF=94.687 BR=20.325 IKF=0.025252 IKR=0.012138 XTB=1.5 + VAF=26.867 VAR=3.2134 VJE=1.1812 VJC=1.1812 + RE=3.7045 RC=0.56 RB=60 RBM=1.4255 IRB=1E-5 + CJE=3.2473E-15 CJC=1.8369E-13 XCJC=0.08334 FC=0.87906 + NF=1.0236 NR=0.93013 NE=1.9818 NC=1.6195 MJE=0.41827 MJC=0.30423 + TF=1.4866E-11 TR=2.2648E-9 PTF=0 ITF=0.0010202 VTF=0.22023 XTF=0.3062 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/2N3643.model0000644000175000017500000000055113413640652016354 0ustar rubenruben.model 2N3643 NPN(IS=14.34E-15 ISE=14.34E-15 ISC=0 XTI=3 + BF=255.9 BR=6.092 IKF=0.2847 IKR=0 XTB=1.5 + VAF=74.03 VAR=28 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=22.01E-12 CJC=7.306E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.307 NC=2 MJE=0.377 MJC=0.3416 + TF=411.1E-12 TR=46.91E-9 ITF=0.6 VTF=1.7 XTF=3 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/IRF351.model0000644000175000017500000000043213413640652016424 0ustar rubenruben.model IRF351 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=9.448m Kp=20.75u W=.73 L=2u Vto=3.234 + Rd=.2206 Rds=1.556MEG Cbd=2.206n Pb=.8 Mj=.5 Fc=.5 Cgso=9.503n + Cgdo=204.5p Rg=3.011 Is=19.74p N=1 Tt=700n) * IR pid=IRF351 case=TO3 oregano-0.84.41/data/models/BCW61FN.model0000644000175000017500000000047413413640652016567 0ustar rubenruben.model BCW61FN PNP(IS=26.39f XTI=3 EG=1.11 VAF=35.7 BF=464.5 ISE=227f NE=2.108 + IKF=.1247 Nk=.5 Xtb=1.5 Br=7.094 Isc=90.49p Nc=2.24 Ikr=.4226 + Rc=2.604 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p Mje=.3865 + Vje=.5 Tr=10n Tf=591.1p Itf=.7698 Xtf=230.9 Vtf=1) * MFG=SIEMENS pid=bcw61fn case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BFP280.model0000644000175000017500000000070513413640652016417 0ustar rubenruben.model BFP280 NPN(IS=6.472E-15 ISE=1.5596E-14 ISC=1.409E-15 XTI=3 + BF=89.888 BR=20.238 IKF=0.073457 IKR=0.012696 XTB=1.5 + VAF=25.609 VAR=5.6909 VJE=0.70035 VJC=1.1943 + RE=2.4518 RC=6.989 RB=15 RBM=14.999 IRB=3.1958E-5 + CJE=3.6218E-14 CJC=2.5299E-13 XCJC=0.19188 FC=0.96275 + NF=1.0801 NR=0.83403 NE=1.6163 NC=1.0651 MJE=0.69773 MJC=0.30017 + TF=1.1744E-11 TR=2.3693E-9 PTF=0 ITF=0.0062179 VTF=0.2035 XTF=0.21585 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BFP183.model0000644000175000017500000000071413413640652016421 0ustar rubenruben.model BFP183 NPN(IS=1.0345E-15 ISE=1.6818E-14 ISC=1.3559E-15 XTI=3 + BF=115.98 NR=0.99543 IKF=0.14562 IKR=0.013483 XTB=1.5 + VAF=14.772 VAR=3.4276 VJE=1.0792 VJC=1.1967 + RE=1.3435 RC=0.20486 RB=2.5426 RBM=1.0112 IRB=0.00043801 + CJE=2.3077E-14 CJC=4.6011E-13 XCJC=0.053823 FC=0.54852 + NF=0.80799 BR=10.016 NE=1.2149 NC=0.85331 MJE=0.45354 MJC=0.3 + TF=2.2746E-11 TR=1.0553E-9 PTF=0 ITF=0.0018773 VTF=0.50905 XTF=0.36823 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BCP69P.model0000644000175000017500000000065713413640652016467 0ustar rubenruben.model BCP69P PNP(IS=2.105E-13 ISE=3.766E-15 ISC=2.789E-11 XTI=3 + BF=281.1 BR=45.67 IKF=2.834 IKR=0.344 XTB=1.5 + VAF=44.23 VAR=7.259 VJE=0.8827 VJC=0.1427 + RE=0.05919 RC=0.0262 RB=1 RBM=1 IRB=1E-06 + CJE=2.046E-10 CJC=1.378E-10 XCJC=0.508 FC=0.309 + NF=0.9952 NR=0.9869 NE=1.4 NC=2.447 MJE=0.448 MJC=0.3018 + TF=7.919E-10 TR=1E-32 PTF=0 ITF=0.409 VTF=2.332 XTF=1.397 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=PHILIPS) oregano-0.84.41/data/models/GI754.model0000644000175000017500000000025613413640652016316 0ustar rubenruben.model GI754 D (IS=3.62E-08 N=1.67 BV=5.33E+02 IBV=2.50E-05 + RS=1.84E-03 CJO=9.28E-10 VJ=.29 M=.55 TT=6.91E-06) * General Instrument 400 Volt 6.00 Amp 5.50 us Si Rectifier oregano-0.84.41/data/models/BCX38B.model0000644000175000017500000000040113413640652016440 0ustar rubenruben.SUBCKT BCX38B 1 2 3 * C B E Q1 1 2 4 SUB38B Q2 1 4 3 SUB38B 12.75 * .MODEL SUB38B NPN IS=1.1E-14 ISE=7.1E-15 NF=1.012 NE=1.4758 BF=147 IKF=.12 +BR=15 IKR=.05 RE=1.3 RC=.5 RB=.3 VAF=150 CJE=14.5E-12 CJC=4.14E-12 +VJC=.515 MJC=.26 TF=1.15E-9 TR=75E-9 .ENDS oregano-0.84.41/data/models/MR851.model0000644000175000017500000000020513413640652016325 0ustar rubenruben.MODEL MR851 D (IS=3.91N RS=14.6M N=1.67 BV=100 IBV=100N + CJO=124P VJ=.75 M=.333 TT=518N) * Motorola 100 Volt 3 Amp .2 us Si Diode oregano-0.84.41/data/models/BF851A.model0000644000175000017500000000030013413640652016373 0ustar rubenruben.SUBCKT BF851A/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF(VTO=-0.5111 BETA=0.01519 LAMBDA=0.03593 RD=4.164 + RS=4.164 IS=4.102E-16 CGS=6.299E-12 CGD=6.299E-12 PB=0.6917 FC=0.5) .ENDS * *$ oregano-0.84.41/data/models/CA3096P.model0000644000175000017500000000034313413640652016501 0ustar rubenruben.model CA3096P PNP(IS=10f BF=94.511 VAF=100 IKF=1.1177m ISE=976.47f NE=1.998 + BR=100.1m VAR=100 IKR=10.01m ISC=10f NK=532.43m CJE=1.4535p MJE=333.33m + CJC=3.8474p MJC=333.33m TF=24.3n XTF=10.054 VTF=9.792 ITF=1.2571 TR=10n) oregano-0.84.41/data/models/IRF642.model0000644000175000017500000000043213413640652016427 0ustar rubenruben.model IRF642 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=19.61m Kp=20.73u W=.66 L=2u Vto=3.788 + Rd=.1356 Rds=888.9K Cbd=1.872n Pb=.8 Mj=.5 Fc=.5 Cgso=1.745n + Cgdo=334.7p Rg=2.954 Is=48.39p N=1 Tt=312n) * IR pid=IRF642 case=TO220 oregano-0.84.41/data/models/HP5918.model0000644000175000017500000000020413413640652016406 0ustar rubenruben.model HP5918 D (IS=1.5N RS=4 N=1.08 BV=5 IBV=10U + CJO=.4P VJ=.65 M=.5 EG=.69 TT=72P) * H-P HSCH-5918 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/IRF9131.model0000644000175000017500000000043513413640652016514 0ustar rubenruben.model IRF9131 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=.1602 Kp=10.21u W=1.5 L=2u Vto=-3.698 + Rd=64.63m Rds=266.7K Cbd=1.249n Pb=.8 Mj=.5 Fc=.5 Cgso=1.418n + Cgdo=189p Rg=12.94 Is=2.925E-18 N=2 Tt=290n) * IR pid=IRFC9131 case=TO3 oregano-0.84.41/data/models/BF869.model0000644000175000017500000000063113413640652016312 0ustar rubenruben.model BF869 NPN(IS=7.974E-15 ISE=2.266E-16 ISC=4.33E-12 XTI=3 + BF=122 BR=6.235 IKF=0.01029 IKR=0.02746 XTB=1.5 + VAF=25.51 VAR=19.43 VJE=0.4581 VJC=0.197 + RE=0.3814 RC=0.439 RB=1 RBM=0.5 IRB=1E-06 + CJE=1.742E-11 CJC=5.045E-12 XCJC=0.1041 FC=0.8555 + NF=0.993 NR=0.999 NE=1.18 NC=1.397 MJE=0.3092 MJC=0.1947 + TF=7.073E-10 TR=1E-08 PTF=0 ITF=0.1495 VTF=6.144 XTF=289.5 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BC849B.model0000644000175000017500000000047613413640652016416 0ustar rubenruben.model BC849B NPN(IS=7.049f XTI=3 EG=1.11 VAF=62.37 BF=279.1 ISE=59.16f + NE=1.81 IKF=.2201 Nk=.6305 Xtb=1.5 Br=3.816 Isc=16.17f Nc=2.394 + Ikr=1.859 Rc=1.508 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 Cje=9.485p + Mje=.3333 Vje=.5 Tr=10n Tf=664p Itf=4.664 Xtf=147 Vtf=10) * MFG=SIEMENS pid=bc849b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BCY59-10.model0000644000175000017500000000047713413640652016575 0ustar rubenruben.model BCY59-10 NPN(IS=64.04f XTI=3 EG=1.11 VAF=35.7 BF=676 ISE=444.3f NE=1.771 + IKF=.1013 Nk=.6259 Xtb=1.5 Br=1 Isc=38.48n Nc=4.097 Ikr=5.942 + Rc=1.19 Cjc=11.15p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p Mje=.3333 + Vje=.5 Tr=609.8n Tf=423.5p Itf=3.794 Xtf=108.1 Vtf=10) * MFG=PHILIPS pid=bcy59-10 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BFR180.model0000644000175000017500000000070013413640652016413 0ustar rubenruben.model BFR180 NPN(IS=1.8519E-16 ISE=1.3093E-13 ISC=6.1852E-15 XTI=3 + BF=94.687 BR=20.325 IKF=0.025252 IKR=0.012138 XTB=1.5 + VAF=26.867 VAR=3.2134 VJE=1.1812 VJC=1.1812 + RE=3.7045 RC=0.56 RB=60 RBM=1.4255 IRB=1E-5 + CJE=3.2473E-15 CJC=1.8369E-13 XCJC=0.08334 FC=0.87906 + NF=1.0236 NR=0.93013 NE=1.9818 NC=1.6195 MJE=0.41827 MJC=0.30423 + TF=1.4866E-11 TR=2.2648E-9 PTF=0 ITF=0.0010202 VTF=0.22023 XTF=0.3062 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/FE1A.model0000644000175000017500000000020113413640652016221 0ustar rubenruben.model FE1A D (IS=2.51N RS=28.2M N=1.42 BV=50 IBV=1U + CJO=42.4P VJ=.75 M=.333 TT=21.6N) * Diotec 50 Volt 1 Amp 15M us Si Diode oregano-0.84.41/data/models/BSR40.model0000644000175000017500000000053613413640652016352 0ustar rubenruben.model BSR40 NPN(IS=6E-14 ISE=1E-14 ISC=1.2E-13 XTI=3 + BF=250 BR=30 IKF=0.9 IKR=0.5 XTB=1.5 + VAF=270 VAR=27 VJE=0.7 VJC=0.51 + RE=0.08 RC=0.08 RB=0.2 + CJE=108E-12 CJC=15.9E-12 XCJC=0.75 FC=0.5 + NF=0.99 NR=0.98 NE=1.2 NC=1.2 MJE=0.35 MJC=0.4 + TF=0.8E-9 TR=55E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX NK=0.7 GAMMA=5E-9 RCO=5) oregano-0.84.41/data/models/BCW66G.model0000644000175000017500000000050613413640652016453 0ustar rubenruben.model BCW66G NPN(IS=893.9E-21 XTI=3 EG=1.11 VAF=100 BF=452.8 ISE=1.053E-18 + NE=1.21 IKF=.9479 Nk=.6981 Xtb=1.5 Br=5.401 Isc=1.897f Nc=1.415 + Ikr=3.105 Rc=.4201 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=689.5p Itf=6.121 Xtf=23.27 Vtf=10) * MFG=SIEMENS pid=bcw65g case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF440.model0000644000175000017500000000043213413640652016423 0ustar rubenruben.model IRF440 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.819m Kp=20.87u W=.61 L=2u Vto=3.873 + Rd=.6724 Rds=2.222MEG Cbd=1.365n Pb=.8 Mj=.5 Fc=.5 Cgso=1.792n + Cgdo=148.7p Rg=.4321 Is=441.3p N=1 Tt=710n) * IR pid=IRF440 case=TO3 oregano-0.84.41/data/models/2N4402.model0000644000175000017500000000055113413640652016346 0ustar rubenruben.model 2N4402 PNP(IS=650.6E-18 ISE=146.9E-15 ISC=0 XTI=3 + BF=108 BR=3.83 IKF=1.115 IKR=0 XTB=1.5 + VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.715 RB=10 + CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.86 NC=2 MJE=0.3357 MJC=0.5383 + TF=761.3E-12 TR=115.7E-9 ITF=0.65 VTF=5 XTF=1.7 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=500M MFG=NSC) oregano-0.84.41/data/models/BC178B.model0000644000175000017500000000047513413640652016410 0ustar rubenruben.model BC178B PNP(IS=336.7f XTI=3 EG=1.11 VAF=30.75 BF=271.9 ISE=2.821p + NE=1.925 IKF=.2462 Nk=.5416 Xtb=1.5 Br=3.009 Isc=1.753n + Nc=2.075 Ikr=8.143 Rc=1.803 Cjc=11p Mjc=.2223 Vjc=.5 Fc=.5 + Cje=33p Mje=.3333 Vje=.5 Tr=10n Tf=846p Itf=1.546 Xtf=18.27 + Vtf=10) * MFG=PHILIPS pid=bc178b case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BC848B.model0000644000175000017500000000047613413640652016415 0ustar rubenruben.model BC848B NPN(IS=7.049f XTI=3 EG=1.11 VAF=62.37 BF=279.1 ISE=59.16f + NE=1.81 IKF=.2201 Nk=.6305 Xtb=1.5 Br=3.816 Isc=16.17f Nc=2.394 + Ikr=1.859 Rc=1.508 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 Cje=9.485p + Mje=.3333 Vje=.5 Tr=10n Tf=664p Itf=4.664 Xtf=147 Vtf=10) * MFG=SIEMENS pid=bc848b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BFS18.model0000644000175000017500000000064513413640652016344 0ustar rubenruben.model BFS18 NPN(IS=5.7880E-16 ISE=1.078E-15 ISC=4.317E-16 XTI=3 + BF=115.2 BR=4.540 IKF=7.822E-02 IKR=2.986E-02 XTB=1.5 + VAF=79.23 VAR=20.64 VJE=0.6720 VJC=0.4244 + RE=0.7900 RC=0.7958 RB=1 RBM=1 IRB=1E-06 + CJE=1.901E-12 CJC=1.625E-12 XCJC=0.1200 FC=0.8118 + NF=0.9898 NR=0.9896 NE=1.516 NC=1.009 MJE=0.2981 MJC=0.1884 + TF=4.932E-10 TR=1.00E-08 PTF=0 ITF=0.1208 VTF=6.182 XTF=300 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/IRF9141.model0000644000175000017500000000043613413640652016516 0ustar rubenruben.model IRF9141 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=70.6m Kp=10.15u W=1.9 L=2u Vto=-3.67 + Rd=60.66m Rds=266.7K Cbd=2.141n Pb=.8 Mj=.5 Fc=.5 Cgso=596.5p + Cgdo=650.1p Rg=.2166 Is=52.23E-18 N=2 Tt=140n) * IR pid=IRF9141 case=TO3 oregano-0.84.41/data/models/BFY51.model0000644000175000017500000000046713413640652016351 0ustar rubenruben.model BFY51 NPN(IS=160.8p XTI=3 EG=1.11 VAF=281.4 BF=314 ISE=10.14n + NE=1.947 IKF=.3372 Nk=.5752 Xtb=1.6 Br=1 Isc=70.08n Nc=1.483 + Ikr=.9179 Rc=.5481 Cjc=16p Mjc=.3333 Vjc=.5 Fc=.5 Cje=48p + Mje=.3333 Vje=.5 Tr=1.536u Tf=940.4p Itf=28.19 Xtf=1.77K Vtf=10 * MFG=PHILIPS pid=bfy51 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/IRF841.model0000644000175000017500000000042613413640652016433 0ustar rubenruben.model IRF841 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=6.382m Kp=20.85u W=.68 L=2u Vto=3.879 + Rd=.6703 Rds=2MEG Cbd=1.415n Pb=.8 Mj=.5 Fc=.5 Cgso=1.61n + Cgdo=148.5p Rg=.127 Is=56.03p N=1 Tt=710n) * IR pid=IRF841 case=TO220 oregano-0.84.41/data/models/IRF830.model0000644000175000017500000000043213413640652016426 0ustar rubenruben.model IRF830 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=31.81m Kp=20.55u W=.47 L=2u Vto=3.749 + Rd=1.334 Rds=2.222MEG Cbd=644.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.297n + Cgdo=95.91p Rg=.7852 Is=312p N=1 Tt=585n) * IR pid=IRF830 case=TO220 oregano-0.84.41/data/models/BC559B.model0000644000175000017500000000047313413640652016411 0ustar rubenruben.model BC559B PNP(IS=1.02f XTI=3 EG=1.11 VAF=51.26 BF=289.6 ISE=9.846f + NE=1.845 IKF=.1026 Nk=.5413 Xtb=1.5 Br=6.124 Isc=1.113f Nc=1.97 + Ikr=.2035 Rc=1.078 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 Cje=30p + Mje=.3333 Vje=.5 Tr=10n Tf=612.4p Itf=1.287 Xtf=25.55 Vtf=10) * PHIILIPS pid=bc559b case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BFT44.model0000644000175000017500000000047013413640652016340 0ustar rubenruben.model BFT44 PNP(IS=7.34n XTI=3 EG=1.11 VAF=100 BF=131.8 ISE=7.34n NE=1.593 + IKF=.862 Nk=.7194 Xtb=1.5 Br=1 Isc=2.155u Nc=2.236 Ikr=4.712 + Rc=3.255 Cjc=44.37p Mjc=.3333 Vjc=.5 Fc=.5 Cje=133.1p Mje=.3333 + Vje=.5 Tr=10n Tf=1.576n Itf=9.045 Xtf=221.6 Vtf=10) * MFG=PHILIPS pid=bft44 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/BSW66A.model0000644000175000017500000000047013413640652016465 0ustar rubenruben.model BSW66A NPN(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=315.4 ISE=102f NE=1.261 + IKF=.8199 Nk=.7642 Xtb=1.5 Br=4.824 Isc=159.8f Nc=1.705 + Ikr=.3971 Rc=.2572 Cjc=52p Mjc=.3767 Vjc=.5 Fc=.5 Cje=240p + Mje=.2501 Vje=.5 Tr=10n Tf=1.05n Itf=2.639 Xtf=36.17 Vtf=10) * MFG=PHILIPS pid=bsw66a case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/2N6041.model0000644000175000017500000000065513413640652016354 0ustar rubenruben.SUBCKT 2N6041 1 2 3 * TERMINALS: C B E * Motorola 80 Volt 8 Amp PNP Darlington Transistor 08-02-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 120 D1 1 3 DSUB .MODEL QPWR PNP (IS=9.6P NF=1 BF=102 VAF=161 IKF=4 ISE=606P NE=2 + BR=4 NR=1 VAR=20 IKR=6 RE=82M RB=.2 RC=61M XTB=1.5 + CJE=1.65N VJE=.74 MJE=.45 CJC=238P VJC=1.1 MJC=.24 TF=16.5N TR=650N) .MODEL DSUB D (IS=9.6P N=1 RS=50M BV=80 IBV=.001 CJO=238P TT=650N) .ENDS oregano-0.84.41/data/models/BC849C.model0000644000175000017500000000050513413640652016410 0ustar rubenruben.model BC849C NPN(IS=7.049f XTI=3 EG=1.11 VAF=29.03 BF=462.4 ISE=57.19f + NE=2.002 IKF=.1609 Nk=.6124 Xtb=1.5 Br=3.988 Isc=10.68f + Nc=2.417 Ikr=2.721 Rc=1.374 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=9.485p Mje=.3333 Vje=.5 Tr=10n Tf=663.1p Itf=1.423 + Xtf=14.94 Vtf=10) * MFG=SIEMENS pid=bc849c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BAV99.model0000644000175000017500000000021713413640652016346 0ustar rubenruben.MODEL BAV99 D IS=4.858E-9 N=2.038 RS=1.898 XTI=3 + EG=1.11 BV=164.1 IBV=12.94E-3 TT=4.184E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/IRF512.model0000644000175000017500000000043113413640652016422 0ustar rubenruben.model IRF512 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.4508 Kp=20.68u W=.64 L=2u Vto=3.697 + Rd=.1211 Rds=444.4K Cbd=366.5p Pb=.8 Mj=.5 Fc=.5 Cgso=600.5p + Cgdo=62.71p Rg=2.977 Is=362.4f N=1 Tt=135n) * IR pid=IRF512 case=TO220 oregano-0.84.41/data/models/DB1508.model0000644000175000017500000000037613413640652016365 0ustar rubenruben.SUBCKT DB1508 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B1508 D2 4 1 B1508 D3 5 1 B1508 D4 2 4 B1508 D5 2 3 B1508 D6 2 5 B1508 .model B1508 D (IS=45.3N RS=1.92M N=2.34 BV=800 IBV=6U + CJO=618P VJ=.75 M=.333 TT=4.32U) * Diotec 800 Volt 15 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BCX71.model0000644000175000017500000000067513413640652016350 0ustar rubenruben.model BCX71 PNP(IS=28.000E-15 ISE=24.903E-15 ISC=0.125E-12 XTI=3.300 + BF=284.436 BR=4.800 IKF=0.380 IKR=0.932 XTB=1.600 + VAF=43.0 VAR=6.960 VJE=1.0 VJC=0.900 + RE=0.300 RC=2.251 RB=2.200 RBM=1.500 IRB=0.100E-3 + CJE=11.800E-12 CJC=8.700E-12 XCJC=0.650 FC=0.750 + NF=1.0 NR=1.005 NE=2.234 NC=2.074 MJE=0.435 MJC=0.600 + TF=0.600E-9 TR=2.604E-9 PTF=1.0 ITF=0.314 VTF=2.0 XTF=6.500 + EG=1.110 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=SIEMENS) oregano-0.84.41/data/models/BC337.model0000644000175000017500000000064613413640652016303 0ustar rubenruben.model BC337 NPN(IS=4.887E-14 mfg=Philips vceo=45 icrating=500m NF=1.002 ISE=2.552E-15 + NE=1.65 BF=207.2 IKF=0.902 VAF=184.8 NR=1.002 ISC=7.006E-14 NC=1.25 BR=21.85 IKR=0.1 + VAR=20 RB=50 IRB=0.0002 RBM=2 RE=0.119 RC=0.25 XTB=0 EG=1.11 XTI=3 CJE=4.217E-11 + VJE=0.6596 MJE=0.3434 TF=6E-10 XTF=2.1 VTF=2.4 ITF=0.79 PTF=86 CJC=1.734E-11 VJC=0.1419 + MJC=0.3484 XCJC=0.455 TR=3.5E-08 CJS=0 VJS=0.75 MJS=0.333 FC=0.652) oregano-0.84.41/data/models/IRF241.model0000644000175000017500000000043113413640652016421 0ustar rubenruben.model IRF241 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.466m Kp=20.82u W=.44 L=2u Vto=3.814 + Rd=97.84m Rds=666.7K Cbd=1.813n Pb=.8 Mj=.5 Fc=.5 Cgso=1.804n + Cgdo=663.5p Rg=1.741 Is=5.191p N=1 Tt=312n) * IR pid=IRF241 case=TO3 oregano-0.84.41/data/models/BC558C.model0000644000175000017500000000047613413640652016414 0ustar rubenruben.model BC558C PNP(IS=1.02f XTI=3 EG=1.11 VAF=30.52 BF=416.3 ISE=14.67f + NE=1.854 IKF=.2088 Nk=.8219 Xtb=1.5 Br=9.102 Isc=4.1f Nc=3.982 + Ikr=19.25m Rc=.9373 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 Cje=30p + Mje=.3333 Vje=.5 Tr=10n Tf=516.2p Itf=1.701 Xtf=35.24 Vtf=10) * MFG=PHILIPS pid=bc558c case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BFT93.model0000644000175000017500000000070713413640652016347 0ustar rubenruben.model BFT93 PNP(IS=1.0366E-15 ISE=1.6295E-14 ISC=9.4971E-17 XTI=3 + BF=80 NR=1.2907 IKF=0.47497 IKR=0.012081 XTB=1.5 + VAF=8.4866 VAR=9.5149 VJE=0.84456 VJC=1.0282 + RE=1.9597 RC=1.1393 RB=3.2133 RBM=2.0822 IRB=0.00046855 + CJE=2.0636E-14 CJC=2.6904E-12 XCJC=0.075977 FC=0.54298 + NF=1.0313 BR=16.116 NE=1.3702 NC=1.038 MJE=0.68352 MJC=0.5401 + TF=5.4303E-11 TR=3.4233E-10 PTF=0 ITF=0.0030573 VTF=0.19311 XTF=0.27447 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BCW65.model0000644000175000017500000000064713413640652016351 0ustar rubenruben.model BCW65 NPN(IS=0.180E-12 ISE=8.480E-15 ISC=0.102E-12 XTI=4.800 + BF=449.302 BR=16.919 IKF=0.820 IKR=0.663 XTB=1.500 + VAF=95.0 VAR=13.0 VJE=0.850 VJC=0.780 + RE=0.170 RC=0.289 RB=0.750 RBM=0.375 IRB=0.100E-3 + CJE=63.400E-12 CJC=16.600E-12 XCJC=0.650 FC=0.750 + NF=1.0 NR=1.005 NE=1.566 NC=1.764 MJE=0.372 MJC=0.433 + TF=0.810E-9 TR=2.600E-9 PTF=1.0 ITF=0.450 VTF=1.500 XTF=4.300 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BF256B.model0000644000175000017500000000062013413640652016400 0ustar rubenruben.SUBCKT BF256B/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -2.3085E+000 + BETA = 1.09045E-003 + LAMBDA = 2.31754E-002 + RD = 7.77648E+000 + RS = 7.77648E+000 + IS = 2.59121E-016 + CGS = 2.00000E-012 + CGD = 2.20000E-012 + PB = 9.91494E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BFN26.model0000644000175000017500000000067313413640652016337 0ustar rubenruben.model BFN26 NPN(IS=1.59E-13 ISE=3.62E-16 ISC=9.06E-11 XTI=3.00 + BF=7.04E1 BR=1.76E1 IKF=1.00E1 IKR=1.00 XTB=1.5 + VAF=4.51E1 VAR=9.11E1 VJE=3.00E-1 VJC=4.64E-1 + RE=4.19E-1 RC=4.11E-1 RB=3.23E1 RBM=7.75E-2 IRB=1.30E-3 + CJE=1.31E-10 CJC=1.56E-11 XCJC=1.00 FC=5.00E-1 + NF=1.03 NR=1.11 NE=1.21 NC=1.47 MJE=4.02E-1 MJC=5.80E-1 + TF=1.73E-9 TR=0 PTF=0 ITF=1.33 VTF=9.99E5 XTF=1.00E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BF775A.model0000644000175000017500000000054213413640652016410 0ustar rubenruben.model BF775A NPN(IS=2.2E-16 ISE=2.1E-15 ISC=1E-17 XTI=3 + BF=312 BR=1 IKF=0.02 IKR=0.5 XTB=1.5 + VAF=36 VAR=60 VJE=0.85 VJC=0.75 + RE=0.9 RC=3.2 RB=26 RBM=2.2 IRB=0.25 + CJE=2.5E-12 CJC=1E-14 XCJC=0.3 FC=0.5 + NF=0.97 NR=1 NE=2.6 NC=2 MJE=0.33 MJC=0.33 + TF=0 TR=0 PTF=0 ITF=0 VTF=1E30 XTF=0 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/2N5769.model0000644000175000017500000000056013413640652016367 0ustar rubenruben.model 2N5769 NPN(IS=44.14E-15 ISE=91.95E-15 ISC=0 XTI=3 + BF=78.32 BR=12.69E-3 IKF=0.3498 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.06 RC=0.6 RB=10 + CJE=4.5E-12 CJC=2.83E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.389 NC=2 MJE=0.2418 MJC=0.862 + TF=227.6E-12 TR=1.073E-6 ITF=0.3 VTF=4 XTF=4 + EG=1.11 KF=1E-9 AF=1 + VCEO=15 ICRATING=200M MFG=NSC-FAIRCHILD) oregano-0.84.41/data/models/IRF625.model0000644000175000017500000000043013413640652016426 0ustar rubenruben.model IRF625 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=55.64m Kp=20.25u W=.14 L=2u Vto=3.682 + Rd=.9283 Rds=1.111MEG Cbd=503.6p Pb=.8 Mj=.5 Fc=.5 Cgso=4.448n + Cgdo=405p Rg=.9234 Is=462p N=1 Tt=350n) * IR pid=IRF625 case=TO220 oregano-0.84.41/data/models/IRF643.model0000644000175000017500000000043213413640652016430 0ustar rubenruben.model IRF643 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=19.61m Kp=20.73u W=.66 L=2u Vto=3.788 + Rd=.1356 Rds=666.7K Cbd=1.872n Pb=.8 Mj=.5 Fc=.5 Cgso=1.628n + Cgdo=452.2p Rg=1.278 Is=48.39p N=1 Tt=312n) * IR pid=IRF643 case=TO220 oregano-0.84.41/data/models/CA3046.model0000644000175000017500000000033713413640652016357 0ustar rubenruben.model CA3046 NPN(IS=10f BF=145.76 VAF=100 IKF=46.747m ISE=114.23f NE=1.483 + BR=100.1m VAR=100 IKR=10.01m ISC=10f RC=10 CJE=1.026p MJE=333.33m CJC=991.79f + MJC=333.33m TF=277.09p XTF=309.38 VTF=16.364 ITF=1.7597 TR=10n) oregano-0.84.41/data/models/2N6766.model0000644000175000017500000000042713413640652016367 0ustar rubenruben.model 2N6766 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=48.24m Kp=20.74u W=1.8 L=2u Vto=3.064 + Rd=12.73m Rds=2MEG Cbd=3.662n Pb=.8 Mj=.5 Fc=.5 Cgso=1.461n + Cgdo=401.8p Rg=1.545 Is=2.883p N=1 Tt=510n) * IR pid=2N6766 case=TO3 oregano-0.84.41/data/models/IRF710.model0000644000175000017500000000041013413640652016417 0ustar rubenruben.model IRF710 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=2u Uo=600 Phi=.6 Kp=1.006u W=1.2 L=2u Rs=10m Vto=3.779 + Rd=5.631 Rds=1.6MEG Cgso=140.2p Cgdo=8.901p Cbd=253.3p Mj=.9417 + Pb=3 Fc=.5 Rg=16.66 Is=201E-18 N=.8377 Rb=1n) oregano-0.84.41/data/models/SMBTA05.model0000644000175000017500000000047113413640652016571 0ustar rubenruben.model SMBTA05 NPN(IS=9.744f XTI=3 EG=1.11 VAF=100 BF=104 ISE=96.9f NE=1.615 + IKF=.6711 Nk=.5215 Xtb=1.5 Br=7.835 Isc=6.488p Nc=1.471 + Ikr=1.021 Rc=.3037 Cjc=12p Mjc=.3333 Vjc=.5 Fc=.5 Cje=36p + Mje=.3333 Vje=.5 Tr=10n Tf=1.333n Itf=30.41 Xtf=484.6 Vtf=10) * MFG=SIEMENS pid=smbta05 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF422.model0000644000175000017500000000043013413640652016421 0ustar rubenruben.model IRF422 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=57.8m Kp=21.11u W=.26 L=2u Vto=3.827 + Rd=1.93 Rds=2.222MEG Cbd=394.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.589n + Cgdo=105.2p Rg=.7721 Is=978.4p N=1 Tt=560n) * IR pid=IRF422 case=TO3 oregano-0.84.41/data/models/2N4410.model0000644000175000017500000000055613413640652016352 0ustar rubenruben.model 2N4410 NPN(IS=5.911E-15 ISE=5.911E-15 ISC=0 XTI=3 + BF=413.6 BR=1.361 IKF=12.6E-3 IKR=0 XTB=1.5 + VAF=62.37 VAR=21.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.61 RB=10 + CJE=4.973E-12 CJC=4.017E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.278 NC=2 MJE=0.4146 MJC=0.3174 + TF=818.4E-12 TR=4.749E-9 ITF=0.35 VTF=4 XTF=7 + EG=1.11 KF=1E-9 AF=1 + VCEO=80 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/BF545A.model0000644000175000017500000000062013413640652016400 0ustar rubenruben.SUBCKT BF545A/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -1.7372E+000 + BETA = 1.16621E-003 + LAMBDA = 1.77211E-002 + RD = 9.01678E+000 + RS = 9.01678E+000 + IS = 2.91797E-016 + CGS = 2.20000E-012 + CGD = 2.20000E-012 + PB = 7.80988E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BSW67A.model0000644000175000017500000000047013413640652016466 0ustar rubenruben.model BSW67A NPN(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=315.4 ISE=102f NE=1.261 + IKF=.8199 Nk=.7642 Xtb=1.5 Br=4.824 Isc=159.8f Nc=1.705 + Ikr=.3971 Rc=.2572 Cjc=52p Mjc=.3767 Vjc=.5 Fc=.5 Cje=240p + Mje=.2501 Vje=.5 Tr=10n Tf=1.05n Itf=2.639 Xtf=36.17 Vtf=10) * MFG=PHILIPS pid=bsw66a case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/IRF9232.model0000644000175000017500000000043413413640652016515 0ustar rubenruben.model IRF9232 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=31.21m Kp=10.39u W=.47 L=2u + Vto=-3.323 Rd=.7053 Rds=888.9K Cbd=820.8p Pb=.8 Mj=.5 Fc=.5 + Cgso=6.43n Cgdo=179.5p Rg=1.234 Is=248E-18 N=3 Tt=555n) * IR pid=IRF9232 case=TO3 oregano-0.84.41/data/models/BC859B.model0000644000175000017500000000047713413640652016420 0ustar rubenruben.model BC859B PNP(IS=336.7f XTI=3 EG=1.11 VAF=62.37 BF=277.7 ISE=1.966p + NE=2.123 IKF=.1686 Nk=.545 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.891 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.9p Itf=2.133 Xtf=23.02 Vtf=10) * MFG=SIEMENS pid=bc859b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF645.model0000644000175000017500000000043113413640652016431 0ustar rubenruben.model IRF645 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=11.04m Kp=20.86u W=.68 L=2u Vto=3.389 + Rd=.247 Rds=1.111MEG Cbd=1.58n Pb=.8 Mj=.5 Fc=.5 Cgso=1.646n + Cgdo=244.8p Rg=4.97 Is=115.2p N=1 Tt=300n) * IR pid=IRF645 case=TO220 oregano-0.84.41/data/models/IRL80A.model0000644000175000017500000000020513413640652016450 0ustar rubenruben.MODEL IRL80A D (IS=3.70E-17 RS=1.76 N=1.25 BV=3 IBV=10U + CJO=25P VJ=.75 M=.333 TT=864N) * Siemens 3 Volt 60M Amp .6 us GaAs Diode oregano-0.84.41/data/models/IRF321.model0000644000175000017500000000042713413640652016425 0ustar rubenruben.model IRF321 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=44.6m Kp=20.94u W=.23 L=2u Vto=3.710 + Rd=.8832 Rds=1.556MEG Cbd=435.6p Pb=.8 Mj=.5 Fc=.5 Cgso=1.683n + Cgdo=171p Rg=.1829 Is=325.9p N=1 Tt=535n) * IR pid=IRF321 case=TO3 oregano-0.84.41/data/models/BC547C.model0000644000175000017500000000050113413640652016377 0ustar rubenruben.model BC547C NPN(IS=7.049f XTI=3 EG=1.11 VAF=24.76 BF=543.1 ISE=78.17f + NE=1.679 IKF=94.96m Nk=.5381 Xtb=1.5 Br=1 Isc=27.51f Nc=1.775 + Ikr=3.321 Rc=.9706 Cjc=5.25p Mjc=.3147 Vjc=.5697 Fc=.5 + Cje=11.5p Mje=.6715 Vje=.5 Tr=10n Tf=410.7p Itf=1.12 Xtf=26.19 + Vtf=10) * MFG=PHILIPS pid=bc547c case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BY253.model0000644000175000017500000000017613413640652016324 0ustar rubenruben.model BY253 D (IS=22U RS=42M N=3.35 BV=600 IBV=20U + CJO=124P VJ=.75 M=.333 TT=4.32U) * Diotec 600 Volt 3 Amp 3 us Si Diode oregano-0.84.41/data/models/DD1600.model0000644000175000017500000000021013413640652016343 0ustar rubenruben.model DD1600 D (IS=177P RS=446 N=23.2 BV=16K IBV=300N + CJO=2.14P VJ=.75 M=.333 TT=50.4N) * Diotec 16000 Volt 20M Amp 35M us Si Diode oregano-0.84.41/data/models/IRF322.model0000644000175000017500000000043113413640652016421 0ustar rubenruben.model IRF322 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=44.6m Kp=20.94u W=.23 L=2u Vto=3.710 + Rd=1.074 Rds=1.778MEG Cbd=435.6p Pb=.8 Mj=.5 Fc=.5 Cgso=1.705n + Cgdo=149.2p Rg=1.351 Is=1.425n N=1 Tt=535n) * IR pid=IRF322 case=TO3 oregano-0.84.41/data/models/BC818-25.model0000644000175000017500000000050213413640652016522 0ustar rubenruben.model BC818-25 NPN(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=294.4 ISE=318.5f + NE=1.642 IKF=.8311 Nk=.5663 Xtb=1.5 Br=5.855 Isc=199.7f Nc=2.09 + Ikr=.1075 Rc=.4196 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=660.8p Itf=2.569 Xtf=88.29 Vtf=10) * MFG=SIEMENS pid=bc818-25 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BC264B.model0000644000175000017500000000053713413640652016403 0ustar rubenruben.MODEL BC264B NJF ( + VTO = -1.7564E+000 + BETA = 1.18820E-003 + LAMBDA = 1.87821E-002 + RD = 9.84550E+000 + RS = 9.84550E+000 + IS = 3.20636E-016 + CGS = 2.15000E-012 + CGD = 2.20000E-012 + PB = 7.73534E-001 + FC = 5.00000E-001 )oregano-0.84.41/data/models/TIP116.model0000644000175000017500000000074213413640652016443 0ustar rubenruben.SUBCKT TIP116 1 2 3 * TERMINALS: C B E * 80 Volt 2 Amp PNP Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 60 D1 1 3 DSUB .MODEL QPWR PNP (IS=2.4P NF=1 BF=142 VAF=161 IKF=2.4 ISE=168P NE=2 + BR=4 NR=1 VAR=20 IKR=3.6 RE=.45 RB=1.8 RC=.18 XTB=1.5 + CJE=382P VJE=.74 MJE=.45 CJC=99.3P VJC=1.1 MJC=.24 TF=98.5N TR=4.25U) .MODEL DSUB D (IS=2.4P N=1 RS=.45 BV=80 IBV=.001 CJO=99.3P TT=4.25U) .ENDS * TIP116, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/BF622S.model0000644000175000017500000000067513413640652016430 0ustar rubenruben.model BF622S NPN(IS=6.46E-16 ISE=2.80E-17 ISC=2.89E-14 XTI=3.00 + BF=1.23E2 BR=5.61 IKF=4.09E-2 IKR=1.00 XTB=1.5 + VAF=4.15E2 VAR=4.30E2 VJE=3.00E-1 VJC=3.00E-1 + RE=4.41E-1 RC=4.08E-1 RB=4.64E1 RBM=2.17E1 IRB=2.42E-2 + CJE=4.19E-11 CJC=5.49E-12 XCJC=1.00 FC=5.00E-1 + NF=9.11E-1 NR=1.86 NE=1.00 NC=1.03 MJE=3.90E-1 MJC=5.21E-1 + TF=1.13E-9 TR=0 PTF=0 ITF=2.65 VTF=8.76E5 XTF=6.01E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/IRF9133.model0000644000175000017500000000043313413640652016514 0ustar rubenruben.model IRF9133 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=.1602 Kp=10.21u W=1.5 L=2u Vto=-3.698 + Rd=.1146 Rds=266.7K Cbd=1.249n Pb=.8 Mj=.5 Fc=.5 Cgso=1.418n + Cgdo=189p Rg=12.94 Is=3.381E-18 N=2 Tt=290n) * IR pid=IRF9133 case=TO3 oregano-0.84.41/data/models/2N3645.model0000644000175000017500000000055513413640652016362 0ustar rubenruben.model 2N3645 PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 + BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 + VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.715 RB=10 + CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 + TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 + EG=1.11 KF=1E-9 AF=1 + VCEO=60 ICRATING=500M MFG=NSC) oregano-0.84.41/data/models/2N7000.model0000644000175000017500000000037313413640652016345 0ustar rubenruben.model 2N7000 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=2u Uo=600 Phi=.6 Kp=1.073u W=.12 L=2u Rs=20m Vto=1.73 + Rd=.5489 Rds=48MEG Cgso=73.61p Cgdo=6.487p Cbd=74.46p Mj=.5 + Pb=.8 Fc=.5 Rg=546.2 Is=10f N=1 Rb=1m) oregano-0.84.41/data/models/BCY78-9.model0000644000175000017500000000047713413640652016526 0ustar rubenruben.model BCY78-9 PNP(IS=55.58p XTI=3 EG=1.11 VAF=62.37 BF=361.2 ISE=160.7p + NE=3.065 IKF=98.02m Nk=.5 Xtb=1.5 Br=2.429 Isc=34.94n Nc=2.499 + Ikr=1.387 Rc=2.829 Cjc=16p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p + Mje=.3333 Vje=.5 Tr=267n Tf=763.1p Itf=5.112 Xtf=203.8 Vtf=10) * MFG=PHILIPS pid=bcy78-9 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BCY78-8.model0000644000175000017500000000050013413640652016510 0ustar rubenruben.model BCY78-8 PNP(IS=55.58p XTI=3 EG=1.11 VAF=79.03 BF=272.6 ISE=223.2p + NE=2.939 IKF=77.89m Nk=.5 Xtb=1.5 Br=2.429 Isc=34.94n Nc=2.499 + Ikr=1.387 Rc=2.829 Cjc=16p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p + Mje=.3333 Vje=.5 Tr=272.7n Tf=762.4p Itf=5.969 Xtf=203.6 Vtf=10 * MFG=PHILIPS pid=bcy78-8 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BC560A.model0000644000175000017500000000050213413640652016371 0ustar rubenruben.model BC560A PNP(IS=1.02f XTI=3 EG=1.11 VAF=74.76 BF=175.1 ISE=10.26f + NE=1.641 IKF=88.84m Nk=.4971 Xtb=1.5 Br=4.329 Isc=71.92f + Nc=1.401 Ikr=9.634 Rc=1.071 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 + Cje=30p Mje=.3333 Vje=.5 Tr=10n Tf=822.7p Itf=3.991 Xtf=174.7 + Vtf=10) * MFG=PHILIPS pid=bc560a case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BF908R.model0000644000175000017500000000247313413640652016434 0ustar rubenruben* BF908R SPICE MODEL OCTOBER 1993 PHILIPS SEMICONDUCTORS * ENVELOPE SOT143R * 1.: SOURCE; 2.: DRAIN; 3.: GATE 2; 4.: GATE 1; .SUBCKT BF908R/PLP 1 2 3 4 L10 1 10 0.12N L20 2 20 0.12N L30 3 30 0.12N L40 4 40 0.12N L11 10 11 1.20N L21 20 21 1.20N L31 30 31 1.20N L41 40 41 1.20N C13 10 30 0.085P C14 10 40 0.085P C21 10 20 0.017P C23 20 30 0.085P C24 20 40 0.005P D11 42 11 ZENER D12 42 41 ZENER D21 32 11 ZENER D22 32 31 ZENER RS 10 12 100 MOS1 61 41 11 12 GATE1 L=1.1E-6 W=1750E-6 MOS2 21 31 61 12 GATE2 L=2.0E-6 W=1750E-6 .MODEL ZENER + D BV=10 CJO=1.2E-12 RS=10 .MODEL GATE1 + NMOS LEVEL=3 UO=600 VTO=-0.250 NFS=300E9 TOX=33E-9 + NSUB=3E15 VMAX=140E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12 .MODEL GATE2 + NMOS LEVEL=3 UO=600 VTO=-0.250 NFS=300E9 TOX=33E-9 + NSUB=3E15 VMAX=100E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.7E-12 CBS=0.5E-12 .ENDS * *$ oregano-0.84.41/data/models/CMOSnandGate.model0000644000175000017500000000133313413640652017757 0ustar rubenruben* EE 307 CMOS NAND Gates for F04 MoHAT Project * Vdd 1 0 2.5 VinA 2A 0 PULSE(0 2.5 10ns 0.25ns 0.25ns 29.5ns 40ns) VinB 2B 0 PULSE(0 2.5 0ns 0.25ns 0.25ns 19.5ns 30ns) R2 2A 20A 1n R3 2B 20B 1n * Standard NAND MPA 3 2A 1 1 PMOD1 MPB 3 2B 1 1 PMOD1 MNA 3 2A 4 0 NMOD1 MNB 4 2B 0 0 NMOD1 CL1 3 0 10p * Symmetrical NAND MPA2 30 20A 1 1 PMOD1 MPB2 30 20B 1 1 PMOD1 MNA1 30 20A 40 0 NMOD1 MNB1 40 20B 0 0 NMOD1 MNB2 30 20B 50 0 NMOD1 MNA2 50 20A 0 0 NMOD1 CL2 30 0 10p .MODEL NMOD1 NMOS (L=1U W=50U KP=200U GAMMA=0.9 phi=0.6 lambda=0.02 VTO=0.7) .MODEL PMOD1 PMOS (L=1U W=50U KP=100U GAMMA=0.9 phi=0.6 lambda=0.02 VTO=-0.7) .TRAN 0.0 50ns 0ns 20ps .PRINT TRAN V(1) V(2A) V(2B) V(20A) V(20B) V(3) V(4) V(30) V(40) V(50) .Probe .END oregano-0.84.41/data/models/BC847B.model0000644000175000017500000000047613413640652016414 0ustar rubenruben.model BC847B NPN(IS=7.049f XTI=3 EG=1.11 VAF=62.37 BF=279.1 ISE=59.16f + NE=1.81 IKF=.2201 Nk=.6305 Xtb=1.5 Br=3.816 Isc=16.17f Nc=2.394 + Ikr=1.859 Rc=1.508 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 Cje=9.485p + Mje=.3333 Vje=.5 Tr=10n Tf=664p Itf=4.664 Xtf=147 Vtf=10) * MFG=SIEMENS pid=bc847b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BU323P.model0000644000175000017500000000056413413640652016437 0ustar rubenruben.SUBCKT BU323P 1 2 3 * TERMINALS: C B E Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 1K R2 4 3 30 D1 3 1 DSUB .MODEL QPWR NPN (IS=12P NF=1 BF=99.8 VAF=160 IKF=10 + ISE=21.2P NE=2 BR=4 NR=1 VAR=20 IKR=15 RE=40M RB=.16 + RC=40M XTB=1.5 CJE=1.82N CJC=397P TF=5.00P TR=4.5U) .MODEL DSUB D (IS=60P N=1 RS=.1 BV=200 IBV=.001 + CJO=397P TT=4.5U) .ENDS * 200 Volt 50 Amp NPN Darlington oregano-0.84.41/data/models/IRF630.model0000644000175000017500000000043013413640652016422 0ustar rubenruben.model IRF630 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1131 Kp=20.8u W=.98 L=2u Vto=3.513 + Rd=.1202 Rds=888.9K Cbd=989.8p Pb=.8 Mj=.5 Fc=.5 Cgso=2.032n + Cgdo=59.27p Rg=5.766 Is=55.22p N=1 Tt=515n) * IR pid=IRF630 case=TO220 oregano-0.84.41/data/models/BC368P.model0000644000175000017500000000067313413640652016427 0ustar rubenruben.model BC368P NPN(IS=2.474E-13 ISE=4.403E-14 ISC=2.009E-13 XTI=3 + BF=196.2 BR=30.57 IKF=4.8360 IKR=0.3264 XTB=1.5 + VAF=127.5 VAR=17.26 VJE=0.8011 VJC=0.5995 + RE=0.1021 RC=9.070E-02 RB=1 RBM=1 IRB=1E-06 + CJE=2.2260E-10 CJC=8.735E-11 XCJC=0.500 FC=0.6153 + NF=0.9998 NR=0.9995 NE=1.400 NC=1.500 MJE=0.3833 MJC=0.4009 + TF=6.469E-10 TR=1E-32 PTF=0 ITF=0.3542 VTF=1.735 XTF=1.257 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=500E-3 MFG=PHILIPS) oregano-0.84.41/data/models/BC212A.model0000644000175000017500000000053513413640652016371 0ustar rubenruben.model BC212A PNP(IS=1.149E-14 ISE=5E-14 ISC=1.43E-14 XTI=3 + BF=330 BR=13 IKF=0.1 IKR=0.012 XTB=1.5 + VAF=84.56 VAR=8.15 VJE=0.65 VJC=0.565 + RE=0.4 RC=0.95 RB=0.2 + CJE=16E-12 CJC=10.5E-12 XCJC=0.75 FC=0.5 + NF=0.9872 NR=0.996 NE=1.4 NC=1.1 MJE=0.415 MJC=0.415 + TF=0.493E-9 TR=73.55E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/IRF462.model0000644000175000017500000000042613413640652016432 0ustar rubenruben.model IRF462 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=2.341m Kp=20.84u W=2 L=2u Vto=3.402 + Rd=.2603 Rds=2.222MEG Cbd=4.169n Pb=.8 Mj=.5 Fc=.5 Cgso=1.805n + Cgdo=129.1p Rg=1.695 Is=126p N=1 Tt=480n) * IR pid=IRF462 case=TO3 oregano-0.84.41/data/models/IRF452.model0000644000175000017500000000043113413640652016425 0ustar rubenruben.model IRF452 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.456m Kp=20.2u W=1.1 L=2u Vto=3.635 + Rd=.3843 Rds=2.222MEG Cbd=2.693n Pb=.8 Mj=.5 Fc=.5 Cgso=1.832n + Cgdo=172.7p Rg=.3993 Is=95.36p N=1 Tt=765n) * IR pid=IRF452 case=TO3 oregano-0.84.41/data/models/IRF644.model0000644000175000017500000000043113413640652016430 0ustar rubenruben.model IRF644 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=11.04m Kp=20.86u W=.68 L=2u Vto=3.389 + Rd=.217 Rds=1.111MEG Cbd=1.58n Pb=.8 Mj=.5 Fc=.5 Cgso=1.646n + Cgdo=244.8p Rg=4.97 Is=72.45p N=1 Tt=300n) * IR pid=IRF644 case=TO220 oregano-0.84.41/data/models/BC109B.model0000644000175000017500000000047513413640652016402 0ustar rubenruben.model BC109B NPN(IS=7.049f XTI=3 EG=1.11 VAF=59.59 BF=381.7 ISE=59.74f + NE=1.522 IKF=3.289 Nk=.5 Xtb=1.5 Br=2.359 Isc=192.9p Nc=1.954 + Ikr=7.807 Rc=1.427 Cjc=5.38p Mjc=.329 Vjc=.6218 Fc=.5 Cje=11.5p + Mje=.2718 Vje=.5 Tr=10n Tf=438p Itf=5.716 Xtf=14.51 Vtf=10) * MFG=PHILIPS pid=bc109b case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BSX61.model0000644000175000017500000000047713413640652016367 0ustar rubenruben.model BSX61 NPN(IS=377.1f XTI=3 EG=1.11 VAF=100 BF=3.39K ISE=1.529p + NE=1.314 IKF=1.57 Nk=.8664 Xtb=1.5 Br=13.35 Isc=153.1n Nc=2.243 + Ikr=2.079 Rc=.4756 Cjc=19.04p Mjc=.2126 Vjc=.5 Fc=.5 Cje=45.81p + Mje=.3426 Vje=.5147 Tr=10n Tf=300p Itf=3.281 Xtf=51.95 Vtf=10) * MFG=PHILIPS pid=bsx61 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/2N5771.model0000644000175000017500000000054513413640652016363 0ustar rubenruben.model 2N5771 PNP(IS=545.6E-18 ISE=0 ISC=0 XTI=3 + BF=76.77 BR=1.365 IKF=50E-3 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.15 RC=3.75 RB=10 + CJE=2.65E-12 CJC=2.77E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.5 NC=2 MJE=0.3083 MJC=0.1416 + TF=118.5E-12 TR=4.033E-9 ITF=0.5 VTF=3 XTF=6 + EG=1.11 KF=1E-9 AF=1 + VCEO=15 ICRATING=200M MFG=NSC-FAIRCHILD) oregano-0.84.41/data/models/2N3703.model0000644000175000017500000000055513413640652016355 0ustar rubenruben.model 2N3703 PNP(IS=650.6E-18 ISE=189.7E-15 ISC=0 XTI=3 + BF=66.92 BR=4.197 IKF=1.079 IKR=0 XTB=1.5 + VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.715 RB=10 + CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 + TF=761.3E-12 TR=120.6E-9 ITF=0.65 VTF=5 XTF=1.7 + EG=1.11 KF=1E-9 AF=1 + VCEO=30 ICRATING=500M MFG=NSC) oregano-0.84.41/data/models/BAW56.model0000644000175000017500000000021713413640652016340 0ustar rubenruben.MODEL BAW56 D IS=4.858E-9 N=2.038 RS=1.898 XTI=3 + EG=1.11 BV=164.1 IBV=12.94E-3 TT=4.184E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/BD138F.model0000644000175000017500000000057113413640652016406 0ustar rubenruben.model BD138F PNP(IS=2.9537E-13 ISE=1.8002E-13 ISC=7.0433E-12 XTI=3 + BF=201.4 BR=23.765 IKF=1.0993 IKR=0.10 XTB=1.4883 + VAF=137.0 VAR=8.41 VJE=0.7211 VJC=0.5499 + RE=0.01 RC=0.1 RB=1.98 RBM=0.01 IRB=0.011 + CJE=2.1982E-10 CJC=6.8291E-11 XCJC=0.5287 FC=0.5 + NF=1.0 NR=1.021 NE=1.5 NC=1.38 MJE=0.3685 MJC=0.3668 + EG=1.2343 KF=1E-9 AF=1 + VCEO=60 ICRATING=1.5 MFG=FAIRCHILD) oregano-0.84.41/data/models/IRF332.model0000644000175000017500000000043013413640652016421 0ustar rubenruben.model IRF332 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.702m Kp=20.47u W=.33 L=2u Vto=3.6 + Rd=.7248 Rds=1.778MEG Cbd=665.2p Pb=.8 Mj=.5 Fc=.5 Cgso=1.623n + Cgdo=191.7p Rg=.4921 Is=251.7p N=1 Tt=515n) * IR pid=IRF332 case=TO3 oregano-0.84.41/data/models/KBU4A.model0000644000175000017500000000033413413640652016362 0ustar rubenruben.SUBCKT KBU4A 2 3 5 4 * IN1 IN2 + - D2 2 5 BU4A D3 3 5 BU4A D4 4 3 BU4A D1 4 2 BU4A .model BU4A D (IS=10.7N RS=3M N=1.67 BV=50 IBV=5U + CJO=165P VJ=.75 M=.333 TT=4.32U) * Diotec 50 Volt 4 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/BAR74.model0000644000175000017500000000021613413640652016332 0ustar rubenruben.MODEL BAR74 D IS=4.739E-9 N=1.849 RS=.4418 XTI=3 + EG=1.11 BV=99.08 IBV=25.88E-3 TT=2.02E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/BFY55.model0000644000175000017500000000050713413640652016350 0ustar rubenruben.model BFY55 NPN(IS=3.367p XTI=3 EG=1.11 VAF=310.9 BF=94.46 ISE=33.05p + NE=1.483 IKF=.5451 Nk=.4767 Xtb=1.5 Br=8.334 Isc=34.05p + Nc=1.468 Ikr=.6541 Rc=.6467 Cjc=28.15p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=93.85p Mje=.3333 Vje=.5 Tr=49.58n Tf=1.782n Itf=49.71 + Xtf=9.095K Vtf=10) * MFG=PHILIPS pid=bcy55 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/IRF360.model0000644000175000017500000000042613413640652016427 0ustar rubenruben.model IRF360 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=360u Kp=21.24u W=1.4 L=2u Vto=3.820 + Rd=.1429 Rds=1.778MEG Cbd=4.086n Pb=.8 Mj=.5 Fc=.5 Cgso=2.245n + Cgdo=229.5p Rg=2.633 Is=958p N=1 Tt=560n) * IR pid=IRF360 case=TO3 oregano-0.84.41/data/models/2N6784.model0000644000175000017500000000043113413640652016362 0ustar rubenruben.model 2N6784 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.3735 Kp=20.86u W=.23 L=2u Vto=3.274 + Rd=.5583 Rds=888.9K Cbd=304.5p Pb=.8 Mj=.5 Fc=.5 Cgso=517.7p + Cgdo=61.68p Rg=26.49 Is=478.4f N=1 Tt=1070n) * IR pid=2N6784 case=TO39 oregano-0.84.41/data/models/TIP31C.model0000644000175000017500000000070513413640652016461 0ustar rubenruben.model TIP31C NPN(IS=1.62181E-13 ISE=1.75416E-11 ISC=4.36516E-14 XTI=3 + BF=83.6 BR=20.607 IKF=6.98433 IKR=0.997156 XTB=1.5301 + VAF=110.5 VAR=159.374 VJE=0.636 VJC=0.408 + RE=0.56 RC=0.96 RB=164.793 RBM=0.100291 IRB=1.24287E-7 + CJE=4.77E-10 CJC=7.29E-11 XCJC=0.589205 FC=0.5 + NF=0.9899 NR=0.989511 NE=1.95 NC=1.014 MJE=0.327 MJC=0.339 + TF=2.3733E-8 TR=1.0000E-8 ITF=1 VTF=10 XTF=10 + EG=1.1605 KF=1E-9 AF=1 + VCEO=100 ICRATING=3 MFG=NSC-FAIRCHILD) oregano-0.84.41/data/models/12AX7A.model0000644000175000017500000000042413413640652016417 0ustar rubenruben* 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 oregano-0.84.41/data/models/BC178A.model0000644000175000017500000000047313413640652016405 0ustar rubenruben.model BC178A PNP(IS=336.7f XTI=3 EG=1.11 VAF=44.61 BF=187 ISE=336.8f + NE=1.459 IKF=.2059 Nk=.5081 Xtb=1.5 Br=4.068 Isc=1.121n + Nc=1.953 Ikr=10.05 Rc=1.86 Cjc=11p Mjc=.2223 Vjc=.5 Fc=.5 + Cje=33p Mje=.3333 Vje=.5 Tr=10n Tf=845.5p Itf=1.701 Xtf=19.04 + Vtf=10) * MFG=PHILIPS pid=bc178a case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/2N5366.model0000644000175000017500000000055713413640652016366 0ustar rubenruben.model 2N5366 PNP(IS=650.6E-18 ISE=90.78E-15 ISC=0 XTI=3 + BF=166.3 BR=3.649 IKF=1.105 IKR=0 XTB=1.5 + VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.715 RB=10 + CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.853 NC=2 MJE=0.3357 MJC=0.5383 + TF=761.3E-12 TR=112.8E-9 ITF=0.65 VTF=5 XTF=1.7 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/BD140.model0000644000175000017500000000066713413640652016277 0ustar rubenruben.model BD140 PNP(IS=1e-09 BF=650.842 NF=0.85 VAF=10 + IKF=0.0950125 ISE=1e-08 NE=1.54571 BR=56.177 + NR=1.5 VAR=2.11267 IKR=0.950125 ISC=1e-08 + NC=3.58527 RB=41.7566 IRB=0.1 RBM=0.108893 + RE=0.000347052 RC=1.32566 XTB=19.5239 XTI=1 + EG=1.05 CJE=1e-11 VJE=0.75 MJE=0.33 + TF=1e-09 XTF=1 VTF=10 ITF=0.01 + CJC=1e-11 VJC=0.75 MJC=0.33 XCJC=0.9 + FC=0.5 CJS=0 VJS=0.75 MJS=0.5 TR=1e-07 PTF=0 KF=0 AF=10 + VCEO=80 ICRATING=1A MFG=PHILIPS) oregano-0.84.41/data/models/BF550.model0000644000175000017500000000060413413640652016275 0ustar rubenruben.model BF550 PNP(IS=5.565E-16 ISE=4.594E-16 ISC=2.38E-16 XTI=3 + BF=114 BR=4.5 IKF=0.034 IKR=0.00056 XTB=1.5 + VAF=42.41 VAR=5 VJE=0.7931 VJC=0.9168 + RE=0.4 RC=1.4 RB=21 RBM=0.73 IRB=0.0005556 + CJE=1.536E-12 CJC=1.066E-12 XCJC=0.828 FC=0.9297 + NF=0.9971 NR=0.9989 NE=1.4 NC=1 MJE=0.3515 MJC=0.397 + TF=2E-10 TR=1E-32 PTF=0 ITF=0.06 VTF=3.7 XTF=7.5 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BCP68P.model0000644000175000017500000000062613413640652016462 0ustar rubenruben.model BCP68P NPN(IS=2.474E-13 ISE=4.403E-14 ISC=2.009E-13 XTI=3 + BF=196.2 BR=30.57 IKF=4.836 IKR=0.3264 XTB=1.5 + VAF=127.5 VAR=17.26 VJE=0.8011 VJC=0.5995 + RE=0.1021 RC=0.0252 RB=1 RBM=1 IRB=1E-06 + CJE=2.226E-10 CJC=8.735E-11 XCJC=0.5 FC=0.6153 + NF=0.9998 NR=0.9995 NE=1.4 NC=1.5 MJE=0.3833 MJC=0.4009 + TF=6.469E-10 TR=1E-32 PTF=0 ITF=0.3542 VTF=1.735 XTF=1.257 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BFV421.model0000644000175000017500000000062513413640652016423 0ustar rubenruben.model BFV421 PNP(IS=2.508E-14 ISE=9.673E-15 ISC=1.695E-12 XTI=3 + BF=256.8 BR=3.903 IKF=0.17 IKR=0.03 XTB=1.5 + VAF=114.9 VAR=15 VJE=0.9 VJC=0.6865 + RE=0.5 RC=0.69 RB=64.07 RBM=10.57 IRB=0.0001398 + CJE=1.572E-11 CJC=9.067E-12 XCJC=0.5 FC=0.8 + NF=0.9935 NR=0.988 NE=1.469 NC=1.3 MJE=0.4352 MJC=0.4535 + TF=6.868E-10 TR=1.2E-07 PTF=55 ITF=0.1102 VTF=1.488 XTF=19.57 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/IRF9240.model0000644000175000017500000000043613413640652016516 0ustar rubenruben.model IRF9240 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=80.81m Kp=10.53u W=1.9 L=2u + Vto=-3.807 Rd=.2515 Rds=888.9K Cbd=1.436n Pb=.8 Mj=.5 Fc=.5 + Cgso=4.933n Cgdo=51.23p Rg=.6716 Is=179.4E-18 N=2 Tt=325n) * IR pid=IRF9240 case=TO3 oregano-0.84.41/data/models/BFP23.model0000644000175000017500000000067413413640652016337 0ustar rubenruben.model BFP23 PNP(IS=9.53E-14 ISE=8.37E-13 ISC=9.99E-11 XTI=3.00 + BF=9.80E1 BR=4.78 IKF=3.49E-2 IKR=1.00 XTB=1.5 + VAF=2.60E2 VAR=1.40E2 VJE=3.00E-1 VJC=3.00E-1 + RE=1.00E-2 RC=1.00E-2 RB=2.76E1 RBM=6.66E-2 IRB=7.02E-4 + CJE=9.54E-11 CJC=4.66E-11 XCJC=1.00 FC=5.00E-1 + NF=1.00 NR=1.55 NE=1.49 NC=1.50 MJE=4.26E-1 MJC=7.00E-1 + TF=9.52E-10 TR=0 PTF=0 ITF=4.12E-1 VTF=9.99E5 XTF=1.03 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/IRF615.model0000644000175000017500000000043013413640652016425 0ustar rubenruben.model IRF615 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.3142 Kp=21.18u W=.19 L=2u Vto=3.828 + Rd=1.6 Rds=1.111MEG Cbd=261.3p Pb=.8 Mj=.5 Fc=.5 Cgso=2.279n + Cgdo=194.6p Rg=.514 Is=85.75p N=1 Tt=330n) * IR pid=IRF615 case=TO220 oregano-0.84.41/data/models/MJE350.model0000644000175000017500000000062113413640652016416 0ustar rubenruben.SUBCKT MJE350 1 2 3 * TERMINALS: C B E * 300 Volt .5 Amp SiPNP Power Transistor 08-16-1995 Q1 1 2 3 QPWR .67 Q2 1 4 3 QPWR .33 RBS 2 4 6.5 .MODEL QPWR PNP (IS=36.8F NF=1 BF=365 VAF=311 IKF=.225 ISE=96.8P NE=2 + BR=4 NR=1 VAR=12 IKR=.337 RE=.663 RB=2.65 RC=.265 XTB=1.5 + CJE=39.1P VJE=.6 MJE=.3 CJC=25.4P VJC=.22 MJC=.2 TF=7.65N TR=294N) .ENDS * MJE350, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/BU806.model0000644000175000017500000000064413413640652016324 0ustar rubenruben.SUBCKT BU806 1 2 3 * TERMINALS: C B E Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 44.9 D1 3 1 DSUB D2 4 2 DSUB .01 .MODEL QPWR NPN (IS=9.6P NF=1 BF=854 VAF=254 IKF=12 ISE=17P NE=2 + BR=4 NR=1 VAR=24 IKR=18 RE=80M RB=.32 RC=32M XTB=1.5 + CJE=1.07N VJE=.74 MJE=.45 CJC=155P VJC=1.1 MJC=.24 TF=22.2N TR=130N) .MODEL DSUB D (IS=9.6P N=1 RS=80M BV=200 IBV=.001 + CJO=155P TT=330N) .ENDS * 200 Volt 8 Amp NPN Darlington oregano-0.84.41/data/models/RC184A.model0000644000175000017500000000020113413640652016407 0ustar rubenruben.model RC184A D (IS=5.43U RS=201U N=2.22 BV=400 IBV=7M + CJO=8.22N VJ=.75 M=.333 TT=17.2U) * IR 400 Volt 200 Amp 12 us Si Diode oregano-0.84.41/data/models/2N6804.model0000644000175000017500000000043113413640652016353 0ustar rubenruben.model 2N6804 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=.153 Kp=10.46u W=1.2 L=2u Vto=-3.68 + Rd=66.52m Rds=444.4MEG Cbd=1.281n Pb=.8 Mj=.5 Fc=.5 Cgso=1.798n + Cgdo=134.9p Rg=4.931 Is=5.477p N=3 Tt=295n) * IR pid=2N6804 case=TO3 oregano-0.84.41/data/models/BC808-25.model0000644000175000017500000000050413413640652016523 0ustar rubenruben.model BC808-25 PNP(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=340 ISE=288.9f NE=1.568 + IKF=.4118 Nk=.5241 Xtb=1.5 Br=6.333 Isc=262.4f Nc=1.87 + Ikr=32.84m Rc=.3998 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=71.14p Mje=.3333 Vje=.5 Tr=10n Tf=704.1p Itf=14.26 + Xtf=1.332K Vtf=10) * MFG=SIEMENS pid=bc808-25 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BU323.model0000644000175000017500000000056413413640652016317 0ustar rubenruben.SUBCKT BU323 1 2 3 * TERMINALS: C B E Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 1K R2 4 3 30 D1 3 1 DSUB .MODEL QPWR NPN (IS=12P NF=1 BF=34.8 VAF=336 IKF=6.5 + ISE=21.2P NE=2 BR=4 NR=1 VAR=32 IKR=9.75 RE=.1 RB=.4 + RC=40M XTB=1.5 CJE=1.82N CJC=397P TF=3.25N TR=4.5U) .MODEL DSUB D (IS=12P N=1 RS=.1 BV=350 IBV=.001 + CJO=397P TT=4.5U) .ENDS * 350 Volt 10 Amp NPN Darlington oregano-0.84.41/data/models/BFX34.model0000644000175000017500000000047413413640652016347 0ustar rubenruben.model BFX34 NPN(IS=3.31p XTI=3 EG=1.11 VAF=100 BF=361 ISE=465.3p NE=1.745 + IKF=1.936 Nk=.5128 Xtb=1.5 Br=1.239 Isc=62.67p Nc=1.486 + Ikr=.9787 Rc=.1321 Cjc=87.45p Mjc=.3333 Vjc=.5 Fc=.5 Cje=521.7p + Mje=.3333 Vje=.5 Tr=10n Tf=1.489n Itf=17.31 Xtf=13.82 Vtf=10) * MFG=PHILIPS pid=bfx34 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/BF904R.model0000644000175000017500000000345713413640652016433 0ustar rubenruben* BF904R SPICE MODEL OCTOBER 1993 PHILIPS SEMICONDUCTORS * ENVELOPE SOT143R * 1.: SOURCE; 2.: DRAIN; 3.: GATE 2; 4.: GATE 1; .SUBCKT BF904R/PLP 1 2 3 4 L10 1 10 0.12N L20 2 20 0.12N L30 3 30 0.12N L40 4 40 0.12N L11 10 11 1.20N L21 20 21 1.20N L31 30 31 1.20N L41 40 41 1.20N C13 10 30 0.085P C14 10 40 0.085P C21 10 20 0.017P C23 20 30 0.085P C24 20 40 0.005P D11 11 41 ZENER D22 11 31 ZENER RSUB 10 12 10 MOS1A 61 41 11 12 GATE1 L=1.1E-6 W=1150E-6 MOS2A 21 31 61 12 GATE2 L=2.0E-6 W=1150E-6 MOS1B 71 41 11 12 GATE3 L=1.1E-6 W= 6E-6 MOS2B 41 31 71 12 GATE4 L=4.0E-6 W= 6E-6 .MODEL ZENER + D BV=10 CJO=0.6E-12 RS=10 .MODEL GATE1 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=140E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12 .MODEL GATE2 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=100E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=1.5E-12 CBS=0.5E-12 .MODEL GATE3 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=140E3 RS=400 RD=400 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.1E-12 CBS=0.1E-12 .MODEL GATE4 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=100E3 RS=400 RD=400 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.1E-12 CBS=0.1E-12 .ENDS * *$ oregano-0.84.41/data/models/BC307A.model0000644000175000017500000000053513413640652016376 0ustar rubenruben.model BC307A PNP(IS=1.149E-14 ISE=5E-14 ISC=1.43E-14 XTI=3 + BF=330 BR=13 IKF=0.1 IKR=0.012 XTB=1.5 + VAF=84.56 VAR=8.15 VJE=0.65 VJC=0.565 + RE=0.4 RC=0.95 RB=0.2 + CJE=16E-12 CJC=10.5E-12 XCJC=0.75 FC=0.5 + NF=0.9872 NR=0.996 NE=1.4 NC=1.1 MJE=0.415 MJC=0.415 + TF=0.493E-9 TR=73.55E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/2N4122.model0000644000175000017500000000053513413640652016347 0ustar rubenruben.model 2N4122 PNP(IS=1.41E-15 ISE=0 ISC=0 XTI=3 + BF=219.7 BR=4.894 IKF=80E-3 IKR=0 XTB=1.5 + VAF=18.7 VAR=6.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=2.5 RB=10 + CJE=8.063E-12 CJC=9.728E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.5 NC=2 MJE=0.3677 MJC=0.5776 + TF=179.3E-12 TR=33.13E-9 ITF=0.4 VTF=4 XTF=6 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/2N4143.model0000644000175000017500000000055713413640652016356 0ustar rubenruben.model 2N4143 PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 + BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 + VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.715 RB=10 + CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 + TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 + EG=1.11 KF=1E-9 AF=1 + VCEO=60 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/IRF350.model0000644000175000017500000000043213413640652016423 0ustar rubenruben.model IRF350 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=9.448m Kp=20.75u W=.73 L=2u Vto=3.234 + Rd=.2206 Rds=1.778MEG Cbd=2.206n Pb=.8 Mj=.5 Fc=.5 Cgso=9.529n + Cgdo=178.5p Rg=3.531 Is=19.74p N=1 Tt=700n) * IR pid=IRF350 case=TO3 oregano-0.84.41/data/models/IRF635.model0000644000175000017500000000043213413640652016431 0ustar rubenruben.model IRF635 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=48.25m Kp=20.44u W=.32 L=2u Vto=3.888 + Rd=.3491 Rds=1.111MEG Cbd=824p Pb=.8 Mj=.5 Fc=.5 Cgso=2.386n + Cgdo=304.6p Rg=1.085 Is=16.72p N=1 Tt=250n) * IR pid=IRF635 case=TO220 oregano-0.84.41/data/models/2N6429.model0000644000175000017500000000064113413640652016361 0ustar rubenruben.model 2N6429 NPN(IS=45.000E-15 ISE=55.668E-15 ISC=1.084E-12 XTI=3.200 + BF=516.544 BR=7.745 IKF=0.708 IKR=1.0 XTB=1.400 + VAF=74.0 VAR=14.0 VJE=0.690 VJC=0.750 + RE=0.350 RC=1.445 RB=9.0 RBM=4.500 IRB=0.100E-3 + CJE=13.050E-12 CJC=4.100E-12 XCJC=0.650 FC=0.750 + NF=1.010 NR=1.015 NE=2.567 NC=4.063 MJE=0.375 MJC=0.420 + TF=0.620E-9 TR=2.5E-9 PTF=1.0 ITF=0.720 VTF=1.0 XTF=68.0 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BCX70K.model0000644000175000017500000000047413413640652016457 0ustar rubenruben.model BCX70K NPN(IS=26.39f XTI=3 EG=1.11 VAF=35.7 BF=449.2 ISE=191.3f + NE=2.138 IKF=1.969 Nk=.5 Xtb=1.5 Br=9.116 Isc=14.45p Nc=1.778 + Ikr=3.14 Rc=3.154 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=596.3p Itf=2.629 Xtf=282 Vtf=10) * MFG=SIEMENS pid=bcx70k case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/FE1H.model0000644000175000017500000000020513413640652016234 0ustar rubenruben.model FE1H D (IS=2.51N RS=28.2M N=1.42 BV=400 IBV=1.5U + CJO=42.4P VJ=.75 M=.333 TT=21.6N) * Diotec 400 Volt 1 Amp 15M us Si Diode oregano-0.84.41/data/models/2N6728.model0000644000175000017500000000055013413640652016362 0ustar rubenruben.model 2N6728A PNP(IS=9.348E-15 ISE=12.45E-15 ISC=0 XTI=3 + BF=166.8 BR=8.369 IKF=10.29 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.38 RB=10 + CJE=105.6E-12 CJC=48E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.459 NC=2 MJE=0.4351 MJC=0.5152 + TF=685.2E-12 TR=1.021E-9 ITF=0.3 VTF=4 XTF=10 + EG=1.11 KF=1E-9 AF=1 + VCEO=60 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/BC368.model0000644000175000017500000000047613413640652016310 0ustar rubenruben.model BC368 NPN(IS=14.06f XTI=3 EG=1.11 VAF=100 BF=187.6 ISE=137.2f + NE=1.468 IKF=4.103 Nk=.5507 Xtb=1.5 Br=4.541 Isc=44.13f + Nc=1.471 Ikr=1.701 Rc=91m Cjc=52.24p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=156p Mje=.3333 Vje=.5 Tr=10n Tf=964.8p Itf=595.3 Xtf=1.001K + Vtf=10) * MFG=PHILIPS pid=bc368 case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/KBPC2502.model0000644000175000017500000000036513413640652016610 0ustar rubenruben.SUBCKT KBPC2502 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC2502 D3 3 5 BPC2502 D4 4 3 BPC2502 D1 4 2 BPC2502 .model BPC2502 D (IS=679N RS=2.22M N=2.06 BV=200 IBV=13U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 200 Volt 25 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/IRF254.model0000644000175000017500000000040613413640652016427 0ustar rubenruben.model IRF254 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=2u Uo=600 Phi=.6 Kp=1.04u W=28 L=2u Rs=10m Vto=3.686 Rd=0 + Rds=1MEG Cgso=43.18p Cgdo=7.89p Cbd=5.886n Mj=1.089 Pb=2.532 + Fc=.5 Rg=7.008 Is=562.2n N=1.833 Rb=6.906m) oregano-0.84.41/data/models/BC807S.model0000644000175000017500000000064213413640652016424 0ustar rubenruben.model BC807S PNP(IS=0.230E-12 ISE=39.284E-15 ISC=0.118E-15 XTI=4.800 + BF=504.327 BR=23.0 IKF=0.780 IKR=0.195 XTB=1.700 + VAF=26.0 VAR=4.500 VJE=1.0 VJC=1.0 + RE=0.203 RC=0.262 RB=0.800 RBM=0.400 IRB=0.100E-3 + CJE=57.177E-12 CJC=28.600E-12 XCJC=0.650 FC=0.750 + NF=1.0 NR=1.002 NE=1.944 NC=3.025 MJE=0.470 MJC=0.520 + TF=0.664E-9 TR=2.600E-9 PTF=1.0 ITF=0.250 VTF=2.0 XTF=6.350 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/TIP127.model0000644000175000017500000000075013413640652016444 0ustar rubenruben.SUBCKT TIP127 1 2 3 * TERMINALS: C B E * 100 Volt 5 Amp PNP Darlington Transistor 08-03-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 1 3 DSUB .MODEL QPWR PNP (IS=6P NF=1 BF=111 VAF=180 IKF=2.24 ISE=330P NE=2 + BR=4 NR=1 VAR=20 IKR=3.36 RE=.33 RB=1.32 RC=.132 XTB=1.5 + CJE=1.03N VJE=.74 MJE=.45 CJC=149P VJC=1.1 MJC=.24 TF=110N TR=4.75U) .MODEL DSUB D (IS=6P N=1 RS=.33 BV=100 IBV=.001 CJO=149P TT=4.75U) .ENDS * TIP127, TEXAS INSTRUMENTS POWER PRODUCTS DATA BOOK, 1985 oregano-0.84.41/data/models/IRF333.model0000644000175000017500000000043013413640652016422 0ustar rubenruben.model IRF333 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.702m Kp=20.47u W=.33 L=2u Vto=3.6 + Rd=.7248 Rds=1.556MEG Cbd=665.2p Pb=.8 Mj=.5 Fc=.5 Cgso=1.595n + Cgdo=219.6p Rg=.1103 Is=251.7p N=1 Tt=515n) * IR pid=IRF333 case=TO3 oregano-0.84.41/data/models/IRF9243.model0000644000175000017500000000043413413640652016517 0ustar rubenruben.model IRF9243 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=80.81m Kp=10.53u W=1.9 L=2u + Vto=-3.807 Rd=.4515 Rds=666.7K Cbd=1.436n Pb=.8 Mj=.5 Fc=.5 + Cgso=4.915n Cgdo=69.19p Rg=.6812 Is=1.825f N=2 Tt=325n) * IR pid=IRF9243 case=TO3 oregano-0.84.41/data/models/DB1512.model0000644000175000017500000000040013413640652016344 0ustar rubenruben.SUBCKT DB1512 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B1512 D2 4 1 B1512 D3 5 1 B1512 D4 2 4 B1512 D5 2 3 B1512 D6 2 5 B1512 .model B1512 D (IS=45.3N RS=1.92M N=2.34 BV=1.2K IBV=8U + CJO=618P VJ=.75 M=.333 TT=4.32U) * Diotec 1200 Volt 15 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/2N6782.model0000644000175000017500000000043013413640652016357 0ustar rubenruben.model 2N6782 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.374 Kp=20.85u W=.28 L=2u Vto=3.201 + Rd=67.85m Rds=444.4K Cbd=371.1p Pb=.8 Mj=.5 Fc=.5 Cgso=600.5p + Cgdo=62.71p Rg=36.61 Is=229.1f N=1 Tt=370n) * IR pid=2N6782 case=TO39 oregano-0.84.41/data/models/BST15.model0000644000175000017500000000053613413640652016356 0ustar rubenruben.model BST15 PNP(IS=4E-14 ISE=8E-15 ISC=8E-12 XTI=3 + BF=105 BR=4 IKF=800E-3 IKR=55E-3 XTB=1.5 + VAF=300 VAR=40 VJE=0.65 VJC=0.536 + RE=0.1 RC=0.1 RB=9 + CJE=80.9E-12 CJC=16.9E-12 XCJC=0.75 FC=0.5 + NF=1.01 NR=1 NE=1.38 NC=1.3 MJE=0.382 MJC=0.382 + TF=0.7E-9 TR=1.6E-6 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX GAMMA=0.85E-7 RCO=59) oregano-0.84.41/data/models/IRF612.model0000644000175000017500000000043213413640652016424 0ustar rubenruben.model IRF612 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.5804 Kp=20.77u W=.45 L=2u Vto=3.886 + Rd=.8781 Rds=888.9K Cbd=220.5p Pb=.8 Mj=.5 Fc=.5 Cgso=517.7p + Cgdo=61.68p Rg=.2597 Is=5.254p N=1 Tt=295n) * IR pid=IRFC210 case=TO220 oregano-0.84.41/data/models/BF410B.model0000644000175000017500000000062013413640652016370 0ustar rubenruben.SUBCKT BF410B/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -1.9058E+000 + BETA = 1.54719E-003 + LAMBDA = 1.72995E-002 + RD = 3.06677E+000 + RS = 3.06677E+000 + IS = 7.02360E-014 + CGS = 4.18000E-012 + CGD = 2.37000E-012 + PB = 7.16850E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/IRF220.model0000644000175000017500000000042513413640652016421 0ustar rubenruben.model IRF220 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1196 Kp=21.11u W=.23 L=2u Vto=3.077 + Rd=.3174 Rds=888.9K Cbd=650.2p Pb=.8 Mj=.5 Fc=.5 Cgso=4.029n + Cgdo=168.6p Rg=9.084 Is=2.4n N=1 Tt=610n) * IR pid=IRF220 case=TO3 oregano-0.84.41/data/models/MUR1640C.model0000644000175000017500000000022313413640652016632 0ustar rubenruben.model MUR1640C D (IS=179N RS=42M N=1.64 BV=400 IBV=500U + CJO=320P VJ=.775 M=.37 TT=107.4N) * Motorola MUR1640CT 400 Volt 16 Amp 60M us Si Diode oregano-0.84.41/data/models/BC177.model0000644000175000017500000000047113413640652016301 0ustar rubenruben.model BC177 PNP(IS=336.7f XTI=3 EG=1.11 VAF=55.46 BF=154.4 ISE=412.1f + NE=1.429 IKF=.2994 Nk=.7028 Xtb=1.5 Br=3.99 Isc=1.03n Nc=1.958 + Ikr=9.726 Rc=1.833 Cjc=11p Mjc=.2223 Vjc=.5 Fc=.5 Cje=33p + Mje=.3333 Vje=.5 Tr=10n Tf=847.7p Itf=2.198 Xtf=23.26 Vtf=10) * MFG=PHILIPS pid=bc177 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BC108B.model0000644000175000017500000000047513413640652016401 0ustar rubenruben.model BC108B NPN(IS=7.049f XTI=3 EG=1.11 VAF=59.59 BF=381.7 ISE=59.74f + NE=1.522 IKF=3.289 Nk=.5 Xtb=1.5 Br=2.359 Isc=192.9p Nc=1.954 + Ikr=7.807 Rc=1.427 Cjc=5.38p Mjc=.329 Vjc=.6218 Fc=.5 Cje=11.5p + Mje=.2718 Vje=.5 Tr=10n Tf=438p Itf=5.716 Xtf=14.51 Vtf=10) * MFG=PHILIPS pid=bc108b case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BD332.model0000644000175000017500000000067613413640652016302 0ustar rubenruben.SUBCKT BD332 1 2 3 * TERMINALS: C B E * SGS-Thompson 60 Volt 6 Amp PNP Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 13.3K R2 4 3 66.7 D1 1 3 DSUB .MODEL QPWR PNP (IS=7.2P NF=1 BF=154 VAF=139 IKF=4 ISE=347P NE=2 + BR=4 NR=1 VAR=20 IKR=6 RE=91.7M RB=.366 RC=36.6M XTB=1.5 + CJE=1.24N VJE=.74 MJE=.45 CJC=179P VJC=1.1 MJC=.24 TF=98.4N TR=1.78U) .MODEL DSUB D (IS=7.2P N=1 RS=91.7M BV=60 IBV=.001 CJO=179P TT=1.78U) .ENDS oregano-0.84.41/data/models/BY296.model0000644000175000017500000000017713413640652016334 0ustar rubenruben.model BY296 D (IS=22U RS=42M N=3.35 BV=100 IBV=10U + CJO=73.5P VJ=.75 M=.333 TT=620N) * Diotec 100 Volt 2 Amp .5 us Si Diode oregano-0.84.41/data/models/TIP145.model0000644000175000017500000000073713413640652016451 0ustar rubenruben.SUBCKT TIP145 1 2 3 * TERMINALS: C B E * 60 Volt 10 Amp PNP Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 40 D1 1 3 DSUB .MODEL QPWR PNP (IS=12P NF=1 BF=125 VAF=139 IKF=8 ISE=779P NE=2 + BR=4 NR=1 VAR=20 IKR=12 RE=.115 RB=.46 RC=46M XTB=1.5 + CJE=2.06N VJE=.74 MJE=.45 CJC=297P VJC=1.1 MJC=.24 TF=85.3N TR=3.68U) .MODEL DSUB D (IS=12P N=1 RS=.115 BV=60 IBV=.001 CJO=297P TT=3.68U) .ENDS * TIP145, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/BY255.model0000644000175000017500000000020013413640652016312 0ustar rubenruben.model BY255 D (IS=22U RS=42M N=3.35 BV=1.3K IBV=20U + CJO=124P VJ=.75 M=.333 TT=4.32U) * Diotec 1300 Volt 3 Amp 3 us Si Diode oregano-0.84.41/data/models/DiodeBridge.model0000644000175000017500000000017513413640652017720 0ustar rubenruben* 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 oregano-0.84.41/data/models/IRF640.model0000644000175000017500000000043313413640652016426 0ustar rubenruben.model IRF640 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=19.61m Kp=20.73u W=.66 L=2u Vto=3.788 + Rd=95.58m Rds=888.9K Cbd=1.872n Pb=.8 Mj=.5 Fc=.5 Cgso=1.745n + Cgdo=334.7p Rg=2.954 Is=16.39p N=1 Tt=312n) * IR pid=IRF640 case=TO220 oregano-0.84.41/data/models/BF861B.model0000644000175000017500000000030213413640652016377 0ustar rubenruben.SUBCKT BF861B/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF(VTO=-0.6391 BETA=0.01393 LAMBDA=0.04702 RD=3.577 + RS=3.577 IS=3.769E-16 CGS=6.025E-12 CGD=6.025E-12 PB=0.7072 FC=0.5) .ENDS * *$ oregano-0.84.41/data/models/SFH480.model0000644000175000017500000000020113413640652016421 0ustar rubenruben.MODEL SFH480 D (IS=.123F RS=1.72 N=1.34 BV=5 IBV=10N + CJO=25P VJ=.75 M=.333 TT=864N) * Siemens 5 Volt .2 Amp .6 us GaAs Diode oregano-0.84.41/data/models/2N6045.model0000644000175000017500000000066613413640652016362 0ustar rubenruben.SUBCKT 2N6045 1 2 3 * TERMINALS: C B E * Motorola 100 Volt 8 Amp NPN Darlington Transistor 08-02-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 120 D1 3 1 DSUB .MODEL QPWR NPN (IS=9.6P NF=1 BF=85.5 VAF=180 IKF=6.4 ISE=917P NE=2 + BR=4 NR=1 VAR=20 IKR=9.6 RE=89M RB=.25 RC=64M XTB=1.5 + CJE=1.52N VJE=.74 MJE=.45 CJC=155P VJC=1.1 MJC=.24 TF=17.95N TR=845N) .MODEL DSUB D (IS=9.6P N=1 RS=50M BV=100 IBV=.001 CJO=155P TT=845N) .ENDS oregano-0.84.41/data/models/IRF520.model0000644000175000017500000000043113413640652016421 0ustar rubenruben.model IRF520 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1459 Kp=20.79u W=.73 L=2u Vto=3.59 + Rd=80.23m Rds=444.4K Cbd=622.1p Pb=.8 Mj=.5 Fc=.5 Cgso=517.9p + Cgdo=137.3p Rg=6.675 Is=2.438p N=1 Tt=137n) * IR pid=IRF520 case=TO220 oregano-0.84.41/data/models/BCV61B.model0000644000175000017500000000063513413640652016443 0ustar rubenruben.model BCV61B NPN(IS=45.000E-15 ISE=55.668E-15 ISC=1.084E-12 XTI=3.200 + BF=280 BR=7.745 IKF=0.708 IKR=1.0 XTB=1.400 + VAF=74.0 VAR=14.0 VJE=0.690 VJC=0.750 + RE=0.350 RC=1.445 RB=9.0 RBM=4.500 IRB=0.100E-3 + CJE=13.050E-12 CJC=4.100E-12 XCJC=0.650 FC=0.750 + NF=1.010 NR=1.015 NE=2.567 NC=4.063 MJE=0.375 MJC=0.420 + TF=0.620E-9 TR=2.5E-9 PTF=1.0 ITF=0.720 VTF=1.0 XTF=68.0 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/IRF243.model0000644000175000017500000000042713413640652016430 0ustar rubenruben.model IRF243 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.466m Kp=20.82u W=.44 L=2u Vto=3.814 + Rd=.1378 Rds=666.7K Cbd=1.813n Pb=.8 Mj=.5 Fc=.5 Cgso=1.804n + Cgdo=663.5p Rg=1.741 Is=7.07p N=1 Tt=312n) * IR pid=IRF243 case=TO3 oregano-0.84.41/data/models/BSV15-10.model0000644000175000017500000000050113413640652016566 0ustar rubenruben.model BSV15-10 PNP(IS=70.49f XTI=3 EG=1.11 VAF=100 BF=118.4 ISE=681f NE=1.558 + IKF=.5245 Nk=.525 Xtb=1.5 Br=18.45 Isc=715.1f Nc=1.23 Ikr=1.222 + Rc=.8335 Cjc=47.58p Mjc=.3333 Vjc=.5 Fc=.5 Cje=212.4p Mje=.3333 + Vje=.5 Tr=304.6n Tf=1.977n Itf=11.86 Xtf=55.69 Vtf=10) * MFG=PHILIPS pid=bsv15-10 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/BFR183.model0000644000175000017500000000071413413640652016423 0ustar rubenruben.model BFR183 NPN(IS=1.0345E-15 ISE=1.6818E-14 ISC=1.3559E-15 XTI=3 + BF=115.98 NR=0.99543 IKF=0.14562 IKR=0.013483 XTB=1.5 + VAF=14.772 VAR=3.4276 VJE=1.0792 VJC=1.1967 + RE=1.3435 RC=0.20486 RB=2.5426 RBM=1.0112 IRB=0.00043801 + CJE=2.3077E-14 CJC=4.6011E-13 XCJC=0.053823 FC=0.54852 + NF=0.80799 BR=10.016 NE=1.2149 NC=0.85331 MJE=0.45354 MJC=0.3 + TF=2.2746E-11 TR=1.0553E-9 PTF=0 ITF=0.0018773 VTF=0.50905 XTF=0.36823 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/DB2512.model0000644000175000017500000000040113413640652016346 0ustar rubenruben.SUBCKT DB2512 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B2512 D2 4 1 B2512 D3 5 1 B2512 D4 2 4 B2512 D5 2 3 B2512 D6 2 5 B2512 .model B2512 D (IS=24.5N RS=2.67M N=1.97 BV=1.2K IBV=8U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 1200 Volt 25 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/PNP.model0000644000175000017500000000003713413640652016211 0ustar rubenruben.model PNP PNP(Is=1.0e-16) oregano-0.84.41/data/models/BF510.model0000644000175000017500000000061713413640652016275 0ustar rubenruben.SUBCKT BF510/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -8.8094E-001 + BETA = 2.01845E-003 + LAMBDA = 1.50475E-002 + RD = 3.57223E+000 + RS = 3.57223E+000 + IS = 1.05515E-013 + CGS = 2.80000E-012 + CGD = 2.27000E-012 + PB = 6.18391E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BC547A.model0000644000175000017500000000050013413640652016374 0ustar rubenruben.model BC547A NPN(IS=7.049f XTI=3 EG=1.11 VAF=127.9 BF=253 ISE=96.26f + NE=1.556 IKF=77.05m Nk=.5305 Xtb=1.5 Br=1 Isc=130.8f Nc=1.602 + Ikr=3.321 Rc=.8766 Cjc=5.25p Mjc=.3147 Vjc=.5697 Fc=.5 + Cje=11.5p Mje=.6715 Vje=.5 Tr=10n Tf=409.5p Itf=1.994 Xtf=40.12 + Vtf=10) * MFG=PHILIPS pid=bc547a case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BDW93B.model0000644000175000017500000000067613413640652016457 0ustar rubenruben.SUBCKT BDW93B 1 2 3 * TERMINALS: C B E * SGS-Thompson 80 Volt 12 Amp NPN Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 3 1 DSUB .MODEL QPWR NPN (IS=14.4P NF=1 BF=119 VAF=161 IKF=4 ISE=636P NE=2 + BR=4 NR=1 VAR=24 IKR=6 RE=46.6M RB=.186 RC=18.6M XTB=1.5 + CJE=700P VJE=.74 MJE=.45 CJC=101P VJC=1.1 MJC=.24 TF=71.6N TR=3.74U) .MODEL DSUB D (IS=14.4P N=1 RS=46.6M BV=80 IBV=.001 CJO=101P TT=3.74U) .ENDS oregano-0.84.41/data/models/2N4125.model0000644000175000017500000000053513413640652016352 0ustar rubenruben.model 2N4125 PNP(IS=1.41E-15 ISE=0 ISC=0 XTI=3 + BF=85.04 BR=5.576 IKF=80E-3 IKR=0 XTB=1.5 + VAF=18.7 VAR=6.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=2.5 RB=10 + CJE=8.063E-12 CJC=9.728E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.5 NC=2 MJE=0.3677 MJC=0.5776 + TF=179.3E-12 TR=35.25E-9 ITF=0.4 VTF=4 XTF=6 + EG=1.11 KF=1E-9 AF=1 + VCEO=30 ICRATING=200M MFG=NSC) oregano-0.84.41/data/models/2N6040.model0000644000175000017500000000065513413640652016353 0ustar rubenruben.SUBCKT 2N6040 1 2 3 * TERMINALS: C B E * Motorola 60 Volt 8 Amp PNP Darlington Transistor 08-02-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 120 D1 1 3 DSUB .MODEL QPWR PNP (IS=9.6P NF=1 BF=110 VAF=139 IKF=4 ISE=562P NE=2 + BR=4 NR=1 VAR=20 IKR=6 RE=80M RB=.2 RC=60M XTB=1.5 + CJE=1.65N VJE=.74 MJE=.45 CJC=238P VJC=1.1 MJC=.24 TF=15.3N TR=750N) .MODEL DSUB D (IS=9.6P N=1 RS=50M BV=60 IBV=.001 CJO=238P TT=750N) .ENDS oregano-0.84.41/data/models/2N6845.model0000644000175000017500000000043213413640652016361 0ustar rubenruben.model 2N6845 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=.284 Kp=10.43u W=.68 L=2u Vto=-3.533 + Rd=.1672 Rds=444.4MEG Cbd=899.2p Pb=.8 Mj=.5 Fc=.5 Cgso=2.288n + Cgdo=138.5p Rg=7.701 Is=793.1f N=3 Tt=425n) * IR pid=2N6845 case=TO39 oregano-0.84.41/data/models/BCX70H.model0000644000175000017500000000047713413640652016457 0ustar rubenruben.model BCX70H NPN(IS=26.39f XTI=3 EG=1.11 VAF=79.03 BF=243.1 ISE=274.6f + NE=1.859 IKF=1.798 Nk=.5 Xtb=1.5 Br=8.91 Isc=13.41p Nc=1.847 + Ikr=7.019 Rc=3.011 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=596.8p Itf=2.553 Xtf=234.7 Vtf=10) * MFG=SIEMENS pid=bcx70h case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF820.model0000644000175000017500000000043313413640652016426 0ustar rubenruben.model IRF820 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=9.112m Kp=20.23u W=.2 L=2u Vto=3.858 + Rd=1.962 Rds=2.222MEG Cbd=405.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.956n + Cgdo=136.9p Rg=.9792 Is=248.6p N=1 Tt=560n) * IR pid=IRF820 case=TO220 oregano-0.84.41/data/models/KBU4J.model0000644000175000017500000000033613413640652016375 0ustar rubenruben.SUBCKT KBU4J 2 3 5 4 * IN1 IN2 + - D2 2 5 BU4J D3 3 5 BU4J D4 4 3 BU4J D1 4 2 BU4J .model BU4J D (IS=10.7N RS=3M N=1.67 BV=600 IBV=5U + CJO=165P VJ=.75 M=.333 TT=4.32U) * Diotec 600 Volt 4 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/BC337S.model0000644000175000017500000000070013413640652016415 0ustar rubenruben.model BC337S NPN(IS=0.180E-12 ISE=8.480E-15 ISC=0.102E-12 XTI=4.800 + BF=449.302 BR=16.919 IKF=0.820 IKR=0.663 XTB=1.500 + VAF=95.0 VAR=13.0 VJE=0.850 VJC=0.780 + RE=0.170 RC=0.289 RB=0.750 RBM=0.375 IRB=0.100E-3 + CJE=63.400E-12 CJC=16.600E-12 XCJC=0.650 FC=0.750 + NF=1.0 NR=1.005 NE=1.566 NC=1.764 MJE=0.372 MJC=0.433 + TF=0.810E-9 TR=2.600E-9 PTF=1.0 ITF=0.450 VTF=1.500 XTF=4.300 + EG=1.110 KF=1E-9 AF=1 + VCEO=45 ICRATING=200M MFG=SIEMENS) oregano-0.84.41/data/models/IRF251.model0000644000175000017500000000042613413640652016426 0ustar rubenruben.model IRF251 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=4.484m Kp=19.93u W=1.1 L=2u Vto=3.804 + Rd=50.32m Rds=666.7K Cbd=3.481n Pb=.8 Mj=.5 Fc=.5 Cgso=1.32n + Cgdo=543p Rg=3.531 Is=40.52p N=1 Tt=340n) * IR pid=IRF251 case=TO3 oregano-0.84.41/data/models/BCW68F.model0000644000175000017500000000047413413640652016460 0ustar rubenruben.model BCW68F PNP(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=256.4 ISE=424.6f NE=1.46 + IKF=.5694 Nk=.6383 Xtb=1.5 Br=13.26 Isc=1.56p Nc=1.654 + Ikr=9.432 Rc=.554 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=655p Itf=.8418 Xtf=10.72 Vtf=10) * MFG=SIEMENS pid=bcw68f case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BF517.model0000644000175000017500000000065113413640652016302 0ustar rubenruben.model BF517 NPN(IS=0.480E-15 ISE=7.490E-15 ISC=0.200E-15 XTI=3.0 + BF=99.655 BR=38.400 IKF=0.190 IKR=93.200E-3 XTB=1.600 + VAF=90 VAR=7.0 VJE=0.700 VJC=0.610 + RE=0.500 RC=2.680 RB=1.500 RBM=1.200 IRB=0.100E-3 + CJE=1.325E-12 CJC=1.050E-12 XCJC=0.400 FC=0.890 + NF=1.008 NR=1.010 NE=1.762 NC=1.042 MJE=0.220 MJC=0.240 + TF=56.940E-12 TR=1.000E-9 PTF=21.0 ITF=0.700 VTF=0.600 XTF=68.398 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/IRF122.model0000644000175000017500000000042713413640652016424 0ustar rubenruben.model IRF122 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1284 Kp=20.58u W=.59 L=2u Vto=3.762 + Rd=.1113 Rds=444.4K Cbd=640.5p Pb=.8 Mj=.5 Fc=.5 Cgso=619.6p + Cgdo=169.8p Rg=7.846 Is=120.1p N=1 Tt=137n) * IR pid=IRF120 case=TO3 oregano-0.84.41/data/models/IRF620.model0000644000175000017500000000043013413640652016421 0ustar rubenruben.model IRF620 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.114 Kp=20.39u W=.23 L=2u Vto=3.083 + Rd=.3209 Rds=888.9K Cbd=650.2p Pb=.8 Mj=.5 Fc=.5 Cgso=3.996n + Cgdo=168.7p Rg=7.473 Is=59.21p N=1 Tt=610n) * IR pid=IRF620 case=TO220 oregano-0.84.41/data/models/2N5401.model0000644000175000017500000000056213413640652016350 0ustar rubenruben.model 2N5401 PNP(IS=21.48E-15 ISE=21.48E-15 ISC=0 XTI=3 + BF=132.1 BR=3.661 IKF=0.1848 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.6 RB=10 + CJE=73.39E-12 CJC=17.63E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.375 NC=2 MJE=0.3777 MJC=0.5312 + TF=641.9E-12 TR=1.476E-9 ITF=0 VTF=0 XTF=0 + EG=1.11 KF=1E-9 AF=1 + VCEO=150 ICRATING=500E-3 MFG=NSC-FAIRCHILD) oregano-0.84.41/data/models/BC858A.model0000644000175000017500000000050013413640652016401 0ustar rubenruben.model BC858A PNP(IS=336.7f XTI=3 EG=1.11 VAF=106.8 BF=180.6 ISE=2.666p + NE=1.944 IKF=.1094 Nk=.4986 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.791 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.1p Itf=2.326 Xtf=20.43 Vtf=10) * MFG=SIEMENS pid=bc858a case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BCW60FF.model0000644000175000017500000000050013413640652016544 0ustar rubenruben.model BCW60FF NPN(IS=26.39f XTI=3 EG=1.11 VAF=62.37 BF=331.9 ISE=278.6f + NE=2.004 IKF=2.57 Nk=.5 Xtb=1.5 Br=9.451 Isc=15.74p Nc=1.797 + Ikr=2.344 Rc=3.117 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=597.1p Itf=2.501 Xtf=233.9 Vtf=10) * MFG=SIEMENS pid=bcw60ff case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BCW67A.model0000644000175000017500000000047413413640652016452 0ustar rubenruben.model BCW67A PNP(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=256.4 ISE=424.6f NE=1.46 + IKF=.5694 Nk=.6383 Xtb=1.5 Br=13.26 Isc=1.56p Nc=1.654 + Ikr=9.432 Rc=.554 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=655p Itf=.8418 Xtf=10.72 Vtf=10) * MFG=SIEMENS pid=bcw67a case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BF603.model0000644000175000017500000000070013413640652016271 0ustar rubenruben.model BF603 PNP(IS=5.35E-16 ISE=9.81E-17 ISC=1.00E-13 XTI=3.00 + BF=1.40E2 BR=1.00E-2 IKF=2.41E-2 IKR=1.00 XTB=1.5 + VAF=1.49E2 VAR=9.18E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.85E-2 RC=2.22 RB=1.99E1 RBM=2.41E-2 IRB=1.10E-2 + CJE=4.20E-11 CJC=1.65E-11 XCJC=1.00 FC=5.00E-1 + NF=8.73E-1 NR=9.84E-1 NE=1.03 NC=2.00 MJE=4.13E-1 MJC=7.00E-1 + TF=1.11E-9 TR=0 PTF=0 ITF=3.00 VTF=9.99E5 XTF=5.76E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/IRF610.model0000644000175000017500000000043013413640652016420 0ustar rubenruben.model IRF610 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.5804 Kp=20.77u W=.45 L=2u Vto=3.886 + Rd=.5781 Rds=888.9K Cbd=220.5p Pb=.8 Mj=.5 Fc=.5 Cgso=517.7p + Cgdo=61.68p Rg=.2597 Is=1.647p N=1 Tt=295n) * IR pid=IRF610 case=TO220 oregano-0.84.41/data/models/IRF711.model0000644000175000017500000000042713413640652016430 0ustar rubenruben.model IRF711 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1934 Kp=21.18u W=.2 L=2u Vto=3.553 + Rd=3.03 Rds=1.556MEG Cbd=232p Pb=.8 Mj=.5 Fc=.5 Cgso=1.164n + Cgdo=118.2p Rg=.5139 Is=22.24p N=1 Tt=510n) * IR pid=IRF711 case=TO220 oregano-0.84.41/data/models/TIP147.model0000644000175000017500000000074013413640652016445 0ustar rubenruben.SUBCKT TIP147 1 2 3 * TERMINALS: C B E * 100 Volt 10 Amp PNP Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 40 D1 1 3 DSUB .MODEL QPWR PNP (IS=12P NF=1 BF=125 VAF=180 IKF=8 ISE=779P NE=2 + BR=4 NR=1 VAR=20 IKR=12 RE=.115 RB=.46 RC=46M XTB=1.5 + CJE=2.06N VJE=.74 MJE=.45 CJC=297P VJC=1.1 MJC=.24 TF=110N TR=4.75U) .MODEL DSUB D (IS=12P N=1 RS=.115 BV=100 IBV=.001 CJO=297P TT=4.75U) .ENDS * TIP147, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/BC559C.model0000644000175000017500000000047713413640652016416 0ustar rubenruben.model BC559C PNP(IS=1.02f XTI=3 EG=1.11 VAF=34.62 BF=401.6 ISE=38.26p + NE=5.635 IKF=74.73m Nk=.512 Xtb=1.5 Br=9.011 Isc=1.517f + Nc=1.831 Ikr=.1469 Rc=1.151 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 + Cje=30p Mje=.3333 Vje=.5 Tr=10n Tf=524p Itf=.9847 Xtf=17.71 + Vtf=10) * MFG=PHILIPS pid=bc559c case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/HP2381.model0000644000175000017500000000017313413640652016402 0ustar rubenruben.model HP2831 D (IS=.3U RS=6 N=1.08 BV=10 IBV=10U + CJO=.4P VJ=.5 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky Diode oregano-0.84.41/data/models/KBPC2506.model0000644000175000017500000000036513413640652016614 0ustar rubenruben.SUBCKT KBPC2506 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC2506 D3 3 5 BPC2506 D4 4 3 BPC2506 D1 4 2 BPC2506 .model BPC2506 D (IS=679N RS=2.22M N=2.06 BV=600 IBV=15U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 600 Volt 25 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/MPSA70.model0000644000175000017500000000064513413640652016470 0ustar rubenruben.model MPSA70 PNP(IS=28.000E-15 ISE=24.903E-15 ISC=0.125E-12 XTI=3.300 + BF=284.436 BR=4.800 IKF=0.380 IKR=0.932 XTB=1.600 + VAF=43.0 VAR=6.960 VJE=1.0 VJC=0.900 + RE=0.300 RC=2.251 RB=2.200 RBM=1.500 IRB=0.100E-3 + CJE=11.800E-12 CJC=8.700E-12 XCJC=0.650 FC=0.750 + NF=1.0 NR=1.005 NE=2.234 NC=2.074 MJE=0.435 MJC=0.600 + TF=0.600E-9 TR=2.604E-9 PTF=1.0 ITF=0.314 VTF=2.0 XTF=6.500 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/2N5086.model0000644000175000017500000000067713413640652016370 0ustar rubenruben.model 2N5086 PNP(IS=28.000E-15 ISE=24.903E-15 ISC=0.125E-12 XTI=3.300 + BF=284.436 BR=4.800 IKF=0.380 IKR=0.932 XTB=1.600 + VAF=43.0 VAR=6.960 VJE=1.0 VJC=0.900 + RE=0.300 RC=2.251 RB=2.200 RBM=1.500 IRB=0.100E-3 + CJE=11.800E-12 CJC=8.700E-12 XCJC=0.650 FC=0.750 + NF=1.0 NR=1.005 NE=2.234 NC=2.074 MJE=0.435 MJC=0.600 + TF=0.600E-9 TR=2.604E-9 PTF=1.0 ITF=0.314 VTF=2.0 XTF=6.500 + EG=1.110 KF=1E-9 AF=1 + VCEO=50 ICRATING=500E-3 MFG=SIEMENS) oregano-0.84.41/data/models/KBPC804.model0000644000175000017500000000035413413640652016531 0ustar rubenruben.SUBCKT KBPC804 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC804 D3 3 5 BPC804 D4 4 3 BPC804 D1 4 2 BPC804 .model BPC804 D (IS=18.3N RS=3.2M N=1.72 BV=250 IBV=7U + CJO=330P VJ=.75 M=.333 TT=4.32U) * Diotec 250 Volt 8 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/IRF430.model0000644000175000017500000000043113413640652016421 0ustar rubenruben.model IRF430 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=2.514m Kp=20.56u W=.33 L=2u Vto=3.783 + Rd=.944 Rds=2.222MEG Cbd=677.2p Pb=.8 Mj=.5 Fc=.5 Cgso=1.725n + Cgdo=136.7p Rg=1.159 Is=46.85p N=1 Tt=585n) * IR pid=IRF430 case=TO3 oregano-0.84.41/data/models/BD335.model0000644000175000017500000000070313413640652016274 0ustar rubenruben.SUBCKT BD335 1 2 3 * TERMINALS: C B E * SGS-Thompson 100 Volt 6 Amp NPN Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 13.3K R2 4 3 66.7 D1 3 1 DSUB .MODEL QPWR NPN (IS=7.2P NF=1 BF=138 VAF=180 IKF=5.2 ISE=443P NE=2 + BR=4 NR=1 VAR=20 IKR=7.8 RE=91.7M RB=.366 RC=36.6M XTB=1.5 + CJE=809P VJE=.74 MJE=.45 CJC=116P VJC=1.1 MJC=.24 TF=98.4N TR=1.53U) .MODEL DSUB D (IS=7.2P N=1 RS=91.7M BV=100 IBV=.001 CJO=116P TT=1.53U) .ENDS oregano-0.84.41/data/models/BF470.model0000644000175000017500000000061013413640652016273 0ustar rubenruben.model BF470 PNP(IS=9.124E-15 ISE=1.672E-15 ISC=2.139E-13 XTI=3 + BF=198.2 BR=1.256 IKF=0.13 IKR=0.1 XTB=1.5 + VAF=465.9 VAR=13 VJE=0.8484 VJC=0.6298 + RE=0.635 RC=1.42 RB=5 RBM=0.5 IRB=1E-06 + CJE=1.447E-11 CJC=8.483E-12 XCJC=0.619 FC=0.99 + NF=0.9904 NR=0.99 NE=1.527 NC=1.08 MJE=0.3884 MJC=0.4561 + TF=1.38E-09 TR=1E-32 PTF=0 ITF=0.065 VTF=2 XTF=21.78 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/IRF713.model0000644000175000017500000000042713413640652016432 0ustar rubenruben.model IRF713 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1934 Kp=21.18u W=.2 L=2u Vto=3.553 + Rd=3.33 Rds=1.556MEG Cbd=232p Pb=.8 Mj=.5 Fc=.5 Cgso=1.164n + Cgdo=118.2p Rg=.5139 Is=32.99p N=1 Tt=510n) * IR pid=IRF713 case=TO220 oregano-0.84.41/data/models/IRF540.model0000644000175000017500000000043313413640652016425 0ustar rubenruben.model IRF540 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=21.34m Kp=20.71u W=.94 L=2u Vto=3.136 + Rd=22.52m Rds=444.4K Cbd=2.408n Pb=.8 Mj=.5 Fc=.5 Cgso=1.153n + Cgdo=445.7p Rg=5.557 Is=2.859p N=1 Tt=142n) * IR pid=IRF540 case=TO220 oregano-0.84.41/data/models/BC109C.model0000644000175000017500000000047413413640652016402 0ustar rubenruben.model BC109C NPN(IS=7.049f XTI=3 EG=1.11 VAF=28.14 BF=677 ISE=7.049f NE=1.38 + IKF=96.23 Nk=.5 Xtb=1.5 Br=2.209 Isc=250.3p Nc=2.002 Ikr=10.73 + Rc=1.433 Cjc=5.38p Mjc=.329 Vjc=.6218 Fc=.5 Cje=11.5p Mje=.2717 + Vje=.5 Tr=10n Tf=437.8p Itf=3.097 Xtf=12.85 Vtf=10) * MFG=PHILIPS pid=bc109c case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BC557B.model0000644000175000017500000000050113413640652016377 0ustar rubenruben.model BC557B PNP(IS=1.02f XTI=3 EG=1.11 VAF=52.31 BF=306.5 ISE=10.27f + NE=1.764 IKF=91.85m Nk=.5351 Xtb=1.5 Br=6.48 Isc=1.472f + Nc=1.294 Ikr=.5584 Rc=1.086 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 + Cje=30p Mje=.3333 Vje=.5 Tr=10n Tf=611.6p Itf=1.373 Xtf=26.05 + Vtf=10) * MFG=PHILIPS pid=bc557b case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BC549B.model0000644000175000017500000000050513413640652016404 0ustar rubenruben.model BC549B NPN(IS=7.049f XTI=3 EG=1.11 VAF=59.93 BF=375.6 ISE=56.03f + NE=1.553 IKF=87.07m Nk=.4901 Xtb=1.5 Br=2.886 Isc=7.371p + Nc=1.508 Ikr=5.426 Rc=1.175 Cjc=5.5p Mjc=.3132 Vjc=.4924 Fc=.5 + Cje=11.5p Mje=.6558 Vje=.5 Tr=10n Tf=417.3p Itf=1.512 Xtf=39.51 + Vtf=10) * MFG=PHILIPS pid=bc549b case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/IRF9142.model0000644000175000017500000000043413413640652016515 0ustar rubenruben.model IRF9142 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=70.6m Kp=10.15u W=1.9 L=2u Vto=-3.67 + Rd=.1307 Rds=444.4K Cbd=2.141n Pb=.8 Mj=.5 Fc=.5 Cgso=877.2p + Cgdo=369.3p Rg=.811 Is=202.1E-18 N=2 Tt=140n) * IR pid=IRF9142 case=TO3 oregano-0.84.41/data/models/2N4400.model0000644000175000017500000000054213413640652016344 0ustar rubenruben.model 2N4400 NPN(IS=26.03E-15 ISE=26.7E-15 ISC=0 XTI=3 + BF=77.56 BR=1.06 IKF=0.2397 IKR=0 XTB=1.5 + VAF=90.7 VAR=29 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.5 RB=10 + CJE=24.07E-12 CJC=11.01E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.204 NC=2 MJE=0.3641 MJC=0.3763 + TF=573.2E-12 TR=244E-9 ITF=0 VTF=0 XTF=0 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=500M MFG=NSC) oregano-0.84.41/data/models/MJE2955.model0000644000175000017500000000050713413640652016516 0ustar rubenruben.model MJE2955 PNP(IS=2.37E-8 ISE=1E-9 ISC=0 XTI=3 + BF=73 BR=2.66 IKF=0.8 IKF=0.4 XTB=1.5 + VAF=90 VAR=30 VJE=0.65 VJC=0.65 + RE=0.00856 RC=0.0856 RB=0.81 + CJE=415E-12 CJC=1000E-12 XCJC=0.75 FC=0.75 + NF=1 NR=1 NE=1.26 NC=1.5 MJE=0.5 MJC=0.33 + TF=140E-9 TR=0.75E-6 + EG=1.11 KF=1E-9 AF=1 + VCEO=60 ICRATING=10 MFG=STMICRO) oregano-0.84.41/data/models/IRF720.model0000644000175000017500000000043313413640652016425 0ustar rubenruben.model IRF720 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=41.38m Kp=20.58u W=.23 L=2u Vto=3.78 + Rd=1.489 Rds=1.778MEG Cbd=415.4p Pb=.8 Mj=.5 Fc=.5 Cgso=1.676n + Cgdo=149.3p Rg=1.217 Is=177.9p N=1 Tt=535n) * IR pid=IRF720 case=TO220 oregano-0.84.41/data/models/BC859C.model0000644000175000017500000000050013413640652016404 0ustar rubenruben.model BC859C PNP(IS=336.7f XTI=3 EG=1.11 VAF=29.03 BF=462.2 ISE=1.648p + NE=2.405 IKF=.1165 Nk=.5254 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.791 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.4p Itf=3.088 Xtf=41.48 Vtf=10) * MFG=SIEMENS pid=bc859c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/MPSA20.model0000644000175000017500000000067313413640652016464 0ustar rubenruben.model MPSA20 NPN(IS=45.000E-15 ISE=55.668E-15 ISC=1.084E-12 XTI=3.200 + BF=516.544 BR=7.745 IKF=0.708 IKR=1.0 XTB=1.400 + VAF=74.0 VAR=14.0 VJE=0.690 VJC=0.750 + RE=0.350 RC=1.445 RB=9.0 RBM=4.500 IRB=0.100E-3 + CJE=13.050E-12 CJC=4.100E-12 XCJC=0.650 FC=0.750 + NF=1.010 NR=1.015 NE=2.567 NC=4.063 MJE=0.375 MJC=0.420 + TF=0.620E-9 TR=50.72E-9 PTF=1.0 ITF=0.720 VTF=1.0 XTF=68.0 + EG=1.110 KF=1E-9 AF=1 + VCEO=40 ICRATING=100M MFG=SIEMENS) oregano-0.84.41/data/models/BCW60B.model0000644000175000017500000000047713413640652016447 0ustar rubenruben.model BCW60B NPN(IS=26.39f XTI=3 EG=1.11 VAF=79.03 BF=243.1 ISE=274.6f + NE=1.859 IKF=1.798 Nk=.5 Xtb=1.5 Br=8.91 Isc=13.41p Nc=1.847 + Ikr=7.019 Rc=3.011 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=596.8p Itf=2.553 Xtf=234.7 Vtf=10) * MFG=SIEMENS pid=bcw60b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BCW61B.model0000644000175000017500000000047613413640652016447 0ustar rubenruben.model BCW61B PNP(IS=26.39f XTI=3 EG=1.11 VAF=79.03 BF=243.9 ISE=236.2f + NE=1.831 IKF=.4069 Nk=.5 Xtb=1.5 Br=8.138 Isc=92.15p Nc=2.252 + Ikr=.3702 Rc=2.597 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=590.5p Itf=.642 Xtf=225.6 Vtf=1) * MFG=SIEMENS pid=bcw61b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/2N6786.model0000644000175000017500000000043313413640652016366 0ustar rubenruben.model 2N6786 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.3444 Kp=21.11u W=.21 L=2u Vto=3.906 + Rd=2.878 Rds=1.778MEG Cbd=215.7p Pb=.8 Mj=.5 Fc=.5 Cgso=1.179n + Cgdo=103.2p Rg=10.06 Is=1.034n N=1 Tt=2300n) * IR pid=2N6786 case=TO39 oregano-0.84.41/data/models/BF469.model0000644000175000017500000000063113413640652016306 0ustar rubenruben.model BF469 NPN(IS=7.974E-15 ISE=2.266E-16 ISC=4.33E-12 XTI=3 + BF=122 BR=6.235 IKF=0.01029 IKR=0.02746 XTB=1.5 + VAF=25.51 VAR=19.43 VJE=0.4581 VJC=0.197 + RE=0.3814 RC=0.439 RB=1 RBM=0.5 IRB=1E-06 + CJE=1.742E-11 CJC=5.045E-12 XCJC=0.1041 FC=0.8555 + NF=0.993 NR=0.999 NE=1.18 NC=1.397 MJE=0.3092 MJC=0.1947 + TF=7.073E-10 TR=1E-08 PTF=0 ITF=0.1495 VTF=6.144 XTF=289.5 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/IRF234.model0000644000175000017500000000042613413640652016427 0ustar rubenruben.model IRF234 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=39.46m Kp=20.56u W=.3 L=2u Vto=3.866 + Rd=.303 Rds=1.111MEG Cbd=841.5p Pb=.8 Mj=.5 Fc=.5 Cgso=2.521n + Cgdo=325p Rg=1.074 Is=17.23p N=1 Tt=250n) * IR pid=IRF234 case=TO3 oregano-0.84.41/data/models/BC548C.model0000644000175000017500000000050113413640652016400 0ustar rubenruben.model BC548C NPN(IS=7.049f XTI=3 EG=1.11 VAF=24.76 BF=543.1 ISE=78.17f + NE=1.679 IKF=94.96m Nk=.5381 Xtb=1.5 Br=1 Isc=27.51f Nc=1.775 + Ikr=3.321 Rc=.9706 Cjc=5.25p Mjc=.3147 Vjc=.5697 Fc=.5 + Cje=11.5p Mje=.6715 Vje=.5 Tr=10n Tf=410.7p Itf=1.12 Xtf=26.19 + Vtf=10) * MFG=PHILIPS pid=bc548c case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/2N6790.model0000644000175000017500000000042713413640652016364 0ustar rubenruben.model 2N6790 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=94.5m Kp=20.41u W=.2 L=2u Vto=3.016 + Rd=.3323 Rds=888.9K Cbd=612.1p Pb=.8 Mj=.5 Fc=.5 Cgso=4.029n + Cgdo=168.6p Rg=20.53 Is=62.44p N=1 Tt=810n) * IR pid=2N6790 case=TO39 oregano-0.84.41/data/models/BCX17.model0000644000175000017500000000062413413640652016342 0ustar rubenruben.model BCX17 PNP(IS=1.08E-13 ISE=2.713E-14 ISC=5.062E-13 XTI=3 + BF=385.7 BR=20.57 IKF=0.3603 IKR=0.054 XTB=1.5 + VAF=31.29 VAR=11.62 VJE=0.8911 VJC=0.62 + RE=0.1415 RC=0.2623 RB=1 RBM=0.5 IRB=1E-06 + CJE=5.114E-11 CJC=2.656E-11 XCJC=0.459 FC=0.99 + NF=0.99 NR=0.9849 NE=1.4 NC=1.295 MJE=0.4417 MJC=0.4836 + TF=7.359E-10 TR=5E-08 PTF=0 ITF=0.4393 VTF=3.813 XTF=1.859 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/IRF9510.model0000644000175000017500000000043613413640652016516 0ustar rubenruben.model IRF9510 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=.3715 Kp=10.54u W=.2 L=2u Vto=-3.923 + Rd=.4523 Rds=444.4K Cbd=331.8p Pb=.8 Mj=.5 Fc=.5 Cgso=2.547n + Cgdo=311p Rg=4.087 Is=2.896E-18 N=3 Tt=2250n) * IR pid=IRF9110 case=TO220 oregano-0.84.41/data/models/BC556B.model0000644000175000017500000000047313413640652016406 0ustar rubenruben.model BC556B PNP(IS=1.02f XTI=3 EG=1.11 VAF=52.31 BF=306.5 ISE=10.27f + NE=1.764 IKF=91.85m Nk=.5351 Xtb=1.5 Br=7.437 Isc=1.02f Nc=1.63 + Ikr=1.7 Rc=1.162 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 Cje=30p + Mje=.3333 Vje=.5 Tr=10n Tf=611.6p Itf=1.37 Xtf=25.92 Vtf=10) * MFG=PHILIPS pid=bc556b case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/DD600.model0000644000175000017500000000020513413640652016266 0ustar rubenruben.model DD600 D (IS=177P RS=446 N=23.2 BV=6K IBV=200N + CJO=2.14P VJ=.75 M=.333 TT=50.4N) * Diotec 6000 Volt 20M Amp 35M us Si Diode oregano-0.84.41/data/models/BSR14.model0000644000175000017500000000071313413640652016350 0ustar rubenruben.model BSR14 NPN(IS=29.13E-15 ISE=9.652E-15 ISC=320.3E-12 XTI=3.000 + BF=256.7 BR=6.590 IKF=489.9E-3 IKR=192.9E-3 XTB=0.000 + VAF=80.99 VAR=101.2 VJE=689.1E-3 VJC=662.2E-3 + RE=193.4E-3 RC=224.8E-3 RB=1.000 RBM=1.000 IRB=1.000E-3 + CJE=25.89E-12 CJC=10.11E-12 XCJC=0.5946 FC=938.8E-3 + NF=992.6E-3 NR=984.4E-3 NE=1.516 NC=1.608 MJE=366.8E-3 MJC=416.0E-3 + TF=293.9E-12 TR=320.0E-9 PTF=0.000 ITF=4.797 VTF=20.00 XTF=71.78 + EG=1.110 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/IRF832.model0000644000175000017500000000043413413640652016432 0ustar rubenruben.model IRF832 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=31.81m Kp=20.55u W=.47 L=2u Vto=3.749 + Rd=1.434 Rds=2.222MEG Cbd=644.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.297n + Cgdo=95.91p Rg=.7852 Is=459.3p N=1 Tt=585n) * IR pid=IRF832 case=TO220 oregano-0.84.41/data/models/MPSL51.model0000644000175000017500000000054513413640652016501 0ustar rubenruben.model MPSL51 PNP(IS=21.48E-15 ISE=21.48E-15 ISC=0 XTI=3 + BF=116.7 BR=3.728 IKF=0.1803 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.6 RB=10 + CJE=73.39E-12 CJC=21.16E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.362 NC=2 MJE=0.3777 MJC=0.5312 + TF=639.1E-12 TR=1.487E-9 ITF=0 VTF=0 XTF=0 + EG=1.11 KF=1E-9 AF=1 + VCEO=120 ICRATING=50M MFG=NSC) oregano-0.84.41/data/models/BSX47-10.model0000644000175000017500000000050413413640652016600 0ustar rubenruben.model BSX47-10 NPN(IS=66.19f XTI=3 EG=1.11 VAF=100 BF=367.1 ISE=752.8f + NE=1.418 IKF=.1276 Nk=.5462 Xtb=1.5 Br=967.1 Isc=3.662n + Nc=1.779 Ikr=2.449 Rc=.5938 Cjc=48.58p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=94.85p Mje=.3333 Vje=.5 Tr=10n Tf=1.372n Itf=1.216 + Xtf=16.64 Vtf=10) * MFG=PHILIPS pid=bsx47-10 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/DB3501.model0000644000175000017500000000037613413640652016360 0ustar rubenruben.SUBCKT DB3501 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B3501 D2 4 1 B3501 D3 5 1 B3501 D4 2 4 B3501 D5 2 3 B3501 D6 2 5 B3501 .model B3501 D (IS=300N RS=1.67M N=1.93 BV=100 IBV=3U + CJO=1.44N VJ=.75 M=.333 TT=4.32U) * Diotec 100 Volt 35 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/FE1E.model0000644000175000017500000000020513413640652016231 0ustar rubenruben.model FE1E D (IS=2.51N RS=28.2M N=1.42 BV=250 IBV=1.5U + CJO=42.4P VJ=.75 M=.333 TT=21.6N) * Diotec 250 Volt 1 Amp 15M us Si Diode oregano-0.84.41/data/models/IRF9132.model0000644000175000017500000000043513413640652016515 0ustar rubenruben.model IRF9132 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=.1602 Kp=10.21u W=1.5 L=2u Vto=-3.698 + Rd=.1146 Rds=444.4K Cbd=1.249n Pb=.8 Mj=.5 Fc=.5 Cgso=1.499n + Cgdo=107.6p Rg=11.87 Is=3.381E-18 N=2 Tt=290n) * IR pid=IRF9132 case=TO3 oregano-0.84.41/data/models/BFP490.model0000644000175000017500000000070513413640652016422 0ustar rubenruben.model BFP490 NPN(IS=4.5104E-16 ISE=1.591E-12 ISC=3.7479E-15 XTI=3 + BF=114.96 NR=1.3531 IKF=0.76939 IKR=0.090033 XTB=1.5 + VAF=24.664 VAR=16.035 VJE=0.93266 VJC=0.9832 + RE=0.32476 RC=0.10737 RB=2.1262 RBM=1.0754 IRB=0.00017683 + CJE=1.227E-15 CJC=6.1521E-12 XCJC=0.3 FC=0.75835 + NF=1.1472 BR=21.04 NE=1.9962 NC=1.339 MJE=0.36885 MJC=0.34153 + TF=3.9147E-12 TR=1.115E-9 PTF=0 ITF=0.0032793 VTF=0.27348 XTF=0.61664 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/IRF341.model0000644000175000017500000000042613413640652016426 0ustar rubenruben.model IRF341 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.186m Kp=20.79u W=.68 L=2u Vto=3.503 + Rd=.263 Rds=1.556MEG Cbd=820p Pb=.8 Mj=.5 Fc=.5 Cgso=1.584n + Cgdo=192.6p Rg=.1449 Is=27.4p N=1 Tt=570n) * IR pid=IRF341 case=TO3 oregano-0.84.41/data/models/IRF522.model0000644000175000017500000000043013413640652016422 0ustar rubenruben.model IRF522 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1459 Kp=20.79u W=.73 L=2u Vto=3.59 + Rd=.1002 Rds=444.4K Cbd=622.1p Pb=.8 Mj=.5 Fc=.5 Cgso=517.9p + Cgdo=137.3p Rg=6.675 Is=3.322p N=1 Tt=137n) * IR pid=IRF522 case=TO220 oregano-0.84.41/data/models/HP2794.model0000644000175000017500000000016413413640652016412 0ustar rubenruben.model HP2794 D (IS=40N RS=6 N=1.08 BV=5 IBV=10U + CJO=.2P VJ=.5 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/2N2907P.model0000644000175000017500000000056613413640652016504 0ustar rubenruben.model 2N2907P PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 + BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 + VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.715 RB=10 + CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 + TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=100M MFG=NSC-PHILIPS) oregano-0.84.41/data/models/BC517.model0000644000175000017500000000060013413640652016271 0ustar rubenruben*BC517 MCE 6/19/97 *Ref: Motorola Small-Signal Device Databook, Q4/94 *Si 625mW 30V 1000mA pkg:TO-92B 1,2,3 .SUBCKT BC517 1 2 3 * TERMINALS: C B E Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR .MODEL QPWR NPN (IS=1.2P NF=1 BF=245 VAF=98.6 IKF=0.36 ISE=26.8P NE=2 + BR=4 NR=1 VAR=40 IKR=0.54 RE=1.5 RB=6 RC=0.6 CJE=147P XTB=1.5 + VJE=0.74 MJE=0.45 CJC=9.48P VJC=1.1 MJC=0.24 TF=60.3N TR=2.61U) .ENDS oregano-0.84.41/data/models/2N4258.model0000644000175000017500000000053313413640652016357 0ustar rubenruben.model 2N4258 PNP(IS=545.6E-18 ISE=0 ISC=0 XTI=3 + BF=61.42 BR=1.426 IKF=50E-3 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.15 RC=3.75 RB=10 + CJE=2.65E-12 CJC=2.77E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.5 NC=2 MJE=0.3083 MJC=0.1416 + TF=118.5E-12 TR=4.109E-9 ITF=0.5 VTF=3 XTF=6 + EG=1.11 KF=1E-9 AF=1 + VCEO=12 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/2N3416.model0000644000175000017500000000055113413640652016352 0ustar rubenruben.model 2N3416 NPN(IS=12.03E-15 ISE=8.031E-12 ISC=0 XTI=3 + BF=157.3 BR=4.379 IKF=0.1072 IKR=0 XTB=1.5 + VAF=37.37 VAR=12.5 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=8.307E-12 CJC=5.777E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.971 NC=2 MJE=0.384 MJC=0.3199 + TF=385.4E-12 TR=781.1E-12 ITF=0.17 VTF=3 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=500M MFG=NSC) oregano-0.84.41/data/models/TIP105.model0000644000175000017500000000075413413640652016444 0ustar rubenruben.SUBCKT TIP105 1 2 3 * TERMINALS: C B E * 60 Volt 8 Amp PNP Darlington Transistor 08-03-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 1.8K R2 4 3 70 D1 1 3 DSUB .MODEL QPWR PNP (IS=9.6P NF=1 BF=93.5 VAF=139 IKF=6.24 ISE=828P NE=2 + BR=4 NR=1 VAR=20 IKR=9.36 RE=.112 RB=.45 RC=45M XTB=1.5 + CJE=1.65N VJE=.74 MJE=.45 CJC=238P VJC=1.1 MJC=.24 TF=53.7N TR=1.53U) .MODEL DSUB D (IS=9.6P N=1 RS=.112 BV=60 IBV=.001 CJO=238P TT=1.53U) .ENDS * TIP105, TEXAS INSTRUMENTS POWER PRODUCTS DATA BOOK, 1985 oregano-0.84.41/data/models/IRF822.model0000644000175000017500000000043313413640652016430 0ustar rubenruben.model IRF822 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=9.112m Kp=20.23u W=.2 L=2u Vto=3.858 + Rd=2.034 Rds=2.222MEG Cbd=405.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.956n + Cgdo=136.9p Rg=.9792 Is=494.2p N=1 Tt=560n) * IR pid=IRF822 case=TO220 oregano-0.84.41/data/models/HP2280.model0000644000175000017500000000020513413640652016374 0ustar rubenruben.model HP2280 D (IS=120N RS=10 N=1.08 BV=5 IBV=10U + CJO=.09P VJ=.5 M=.5 EG=.69 TT=72P) * H-P 5082-2280 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/DB2510.model0000644000175000017500000000037713413640652016360 0ustar rubenruben.SUBCKT DB2510 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B2510 D2 4 1 B2510 D3 5 1 B2510 D4 2 4 B2510 D5 2 3 B2510 D6 2 5 B2510 .model B2510 D (IS=24.5N RS=2.67M N=1.97 BV=1K IBV=8U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 1000 Volt 25 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/IRF532.model0000644000175000017500000000043213413640652016425 0ustar rubenruben.model IRF532 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=58.53m Kp=20.73u W=.68 L=2u Vto=3.191 + Rd=78.69m Rds=444.4K Cbd=1.151n Pb=.8 Mj=.5 Fc=.5 Cgso=876.7p + Cgdo=261.4p Rg=4.63 Is=4.033p N=1 Tt=125n) * IR pid=IRF532 case=TO220 oregano-0.84.41/data/models/BDW94.model0000644000175000017500000000070213413640652016344 0ustar rubenruben.SUBCKT BDW94 1 2 3 * TERMINALS: C B E * SGS-Thompson 45 Volt 12 Amp PNP Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 1 3 DSUB .MODEL QPWR PNP (IS=14.4P NF=1 BF=102 VAF=120 IKF=4.8 ISE=808P NE=2 + BR=4 NR=1 VAR=24 IKR=7.2 RE=53.3M RB=.213 RC=21.3M XTB=1.5 + CJE=1.14N VJE=.74 MJE=.45 CJC=165P VJC=1.1 MJC=.24 TF=71.6N TR=2.72U) .MODEL DSUB D (IS=14.4P N=1 RS=53.3M BV=45 IBV=.001 CJO=165P TT=2.72U) .ENDS oregano-0.84.41/data/models/Diodes.model0000644000175000017500000000017213413640652016763 0ustar rubenrubenM_@refdes d(IS=0.1PA, RS=16 CJO=2PF TT=12N BV=100 IBV=0.1PA) M_@refdes (IS=0.1PA, RS=16 CJO=2PF TT=12N BV=100 IBV=0.1PA) oregano-0.84.41/data/models/BSS63.model0000644000175000017500000000066713413640652016365 0ustar rubenruben.model BSS63 PNP(IS=7.59E-14 ISE=1.90E-14 ISC=1.72E-12 XTI=3.00 + BF=1.52E2 BR=1.16E-1 IKF=1.18E-1 IKR=1.00 XTB=1.5 + VAF=3.28E2 VAR=2.61E1 VJE=3.15E-1 VJC=3.00E-1 + RE=1.00E-2 RC=8.89E-1 RB=2.42 RBM=4.95 IRB=8.03E-2 + CJE=5.74E-11 CJC=3.90E-11 XCJC=1.00 FC=5.00E-1 + NF=1.01 NR=1.21 NE=1.27 NC=2.00 MJE=4.41E-1 MJC=4.85E-1 + TF=8.18E-10 TR=0 PTF=0 ITF=1.28 VTF=9.99E5 XTF=5.01 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BAS20.model0000644000175000017500000000021513413640652016321 0ustar rubenruben.MODEL BAS20 D IS=8.402E-9 N=2.011 RS=.5125 XTI=3 + EG=1.11 BV=435 IBV=4.139E-3 TT=41.84E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/BC549C.model0000644000175000017500000000050313413640652016403 0ustar rubenruben.model BC549C NPN(IS=7.049f XTI=3 EG=1.11 VAF=23.89 BF=493.2 ISE=99.2f + NE=1.829 IKF=.1542 Nk=.6339 Xtb=1.5 Br=2.886 Isc=7.371p + Nc=1.508 Ikr=5.426 Rc=1.175 Cjc=5.5p Mjc=.3132 Vjc=.4924 Fc=.5 + Cje=11.5p Mje=.6558 Vje=.5 Tr=10n Tf=420.3p Itf=1.374 Xtf=39.42 + Vtf=10) * MFG=PHILIPS pid=bc549c case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BFQ82.model0000644000175000017500000000054713413640652016344 0ustar rubenruben.model BFQ82 NPN(IS=9.3E-16 ISE=3.9E-15 ISC=1E-17 XTI=3 + BF=100 BR=1 IKF=0.055 IKR=0.5 XTB=1.5 + VAF=41 VAR=217 VJE=0.85 VJC=0.75 + RE=0.18 RC=2.8 RB=29 RBM=0.82 IRB=0.25 + CJE=2.4E-11 CJC=5E-13 XCJC=0.01 FC=0.5 + NF=0.96 NR=1 NE=2.43 NC=2 MJE=0.33 MJC=0.33 + TF=0 TR=0 PTF=0 ITF=0 VTF=1E30 XTF=0 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/IRF9241.model0000644000175000017500000000043713413640652016520 0ustar rubenruben.model IRF9241 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=80.81m Kp=10.53u W=1.9 L=2u + Vto=-3.807 Rd=.2515 Rds=666.7K Cbd=1.436n Pb=.8 Mj=.5 Fc=.5 + Cgso=4.915n Cgdo=69.19p Rg=.6812 Is=179.4E-18 N=2 Tt=325n) * IR pid=IRF9241 case=TO3 oregano-0.84.41/data/models/HP2350.model0000644000175000017500000000021413413640652016372 0ustar rubenruben.model HP2350 D (IS=10N RS=15 N=1.08 BV=30 IBV=10U + CJO=1.1P VJ=.64 M=.5 EG=.69 TT=72P) * H-P 5082-2350 400 Volt .5 Amp Si Schottky Diode oregano-0.84.41/data/models/2N6802.model0000644000175000017500000000043013413640652016350 0ustar rubenruben.model 2N6802 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1084 Kp=20.88u W=.49 L=2u Vto=3.101 + Rd=1.163 Rds=2.222MEG Cbd=732p Pb=.8 Mj=.5 Fc=.5 Cgso=1.725n + Cgdo=136.7p Rg=.824 Is=1.823p N=1 Tt=2060n) * IR pid=2N6802 case=TO39 oregano-0.84.41/data/models/KBPC2510.model0000644000175000017500000000036513413640652016607 0ustar rubenruben.SUBCKT KBPC2510 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC2510 D3 3 5 BPC2510 D4 4 3 BPC2510 D1 4 2 BPC2510 .model BPC2510 D (IS=679N RS=2.22M N=2.06 BV=1K IBV=20U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 1000 Volt 25 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/IRF634.model0000644000175000017500000000043213413640652016430 0ustar rubenruben.model IRF634 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=48.25m Kp=20.44u W=.32 L=2u Vto=3.888 + Rd=.2991 Rds=1.111MEG Cbd=824p Pb=.8 Mj=.5 Fc=.5 Cgso=2.386n + Cgdo=304.6p Rg=1.085 Is=11.36p N=1 Tt=250n) * IR pid=IRF634 case=TO220 oregano-0.84.41/data/models/BF246A.model0000644000175000017500000000062013413640652016376 0ustar rubenruben.SUBCKT BF246A/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -5.3298E+000 + BETA = 2.86527E-003 + LAMBDA = 6.19323E-002 + RD = 1.62278E+000 + RS = 1.62278E+000 + IS = 1.18582E-015 + CGS = 1.05000E-011 + CGD = 1.30000E-011 + PB = 7.98217E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BFP520.model0000644000175000017500000000054113413640652016412 0ustar rubenruben.model BFP520 NPN(IS=1.5E-17 ISE=2.5E-14 ISC=2E-14 XTI=0.035 + BF=235 NR=1 IKF=0.4 IKR=0.01 XTB=-0.25 + VAF=25 VAR=2 VJE=0.958 VJC=0.661 + RE=0.6 RC=7.6 RB=11 RBM=7.5 IRB=0.00069278 + CJE=2.35E-13 CJC=9.3E-14 XCJC=1 FC=0.5 + NF=1 BR=1.5 NE=2 NC=2 MJE=0.335 MJC=0.236 + TF=1.7E-12 TR=5E-8 PTF=50 ITF=0.7 VTF=5 XTF=10 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/2N6763.model0000644000175000017500000000042613413640652016363 0ustar rubenruben.model 2N6763 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=21.3m Kp=20.52u W=.51 L=2u Vto=3.061 + Rd=7.905m Rds=600K Cbd=3.654n Pb=.8 Mj=.5 Fc=.5 Cgso=8.543n + Cgdo=2.163n Rg=7.955 Is=50.08f N=1 Tt=510n) * IR pid=2N6763 case=TO3 oregano-0.84.41/data/models/IRF821.model0000644000175000017500000000042713413640652016432 0ustar rubenruben.model IRF821 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=9.112m Kp=20.23u W=.2 L=2u Vto=3.858 + Rd=1.962 Rds=2MEG Cbd=405.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.94n + Cgdo=152.3p Rg=67.83m Is=248.6p N=1 Tt=560n) * IR pid=IRF821 case=TO220 oregano-0.84.41/data/models/BCW61FF.model0000644000175000017500000000047713413640652016562 0ustar rubenruben.model BCW61FF PNP(IS=26.39f XTI=3 EG=1.11 VAF=62.37 BF=330.6 ISE=285.2f + NE=2.013 IKF=2.498 Nk=.5 Xtb=1.5 Br=7.258 Isc=104.6p Nc=2.312 + Ikr=.332 Rc=2.694 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=590.8p Itf=.8403 Xtf=457.4 Vtf=1) * MFG=SIEMENS pid=bcw61ff case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF732.model0000644000175000017500000000043313413640652016430 0ustar rubenruben.model IRF732 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=27.94m Kp=20.5u W=.43 L=2u Vto=3.474 + Rd=.9365 Rds=1.778MEG Cbd=701.9p Pb=.8 Mj=.5 Fc=.5 Cgso=1.352n + Cgdo=146.9p Rg=.8327 Is=45.52p N=1 Tt=515n) * IR pid=IRF732 case=TO220 oregano-0.84.41/data/models/HP2294.model0000644000175000017500000000020413413640652016400 0ustar rubenruben.model HP2294 D (IS=.3N RS=10 N=1.08 BV=5 IBV=10U + CJO=.09P VJ=.65 M=.5 EG=.69 TT=72P) * H-P 5082-294 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/1N750.model0000644000175000017500000000026313413640652016267 0ustar rubenruben.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) oregano-0.84.41/data/models/IRF141.model0000644000175000017500000000042713413640652016425 0ustar rubenruben.model IRF141 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=21.94m Kp=20.61u W=.97 L=2u Vto=3.189 + Rd=22.19m Rds=355.6K Cbd=2.398n Pb=.8 Mj=.5 Fc=.5 Cgso=995p + Cgdo=550.4p Rg=3.926 Is=1.303p N=1 Tt=142n) * IR pid=IRF141 case=TO3 oregano-0.84.41/data/models/BY398.model0000644000175000017500000000017513413640652016335 0ustar rubenruben.model BY398 D (IS=22U RS=42M N=3.35 BV=400 IBV=10U + CJO=96P VJ=.75 M=.333 TT=580N) * Diotec 400 Volt 3 Amp .5 us Si Diode oregano-0.84.41/data/models/IRF712.model0000644000175000017500000000042713413640652016431 0ustar rubenruben.model IRF712 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1934 Kp=21.18u W=.2 L=2u Vto=3.553 + Rd=3.33 Rds=1.778MEG Cbd=232p Pb=.8 Mj=.5 Fc=.5 Cgso=1.179n + Cgdo=103.2p Rg=1.511 Is=32.99p N=1 Tt=510n) * IR pid=IRF712 case=TO220 oregano-0.84.41/data/models/BDW93.model0000644000175000017500000000067513413640652016354 0ustar rubenruben.SUBCKT BDW93 1 2 3 * TERMINALS: C B E * SGS-Thompson 45 Volt 12 Amp NPN Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 3 1 DSUB .MODEL QPWR NPN (IS=14.4P NF=1 BF=119 VAF=120 IKF=4 ISE=636P NE=2 + BR=4 NR=1 VAR=24 IKR=6 RE=46.6M RB=.186 RC=18.6M XTB=1.5 + CJE=700P VJE=.74 MJE=.45 CJC=101P VJC=1.1 MJC=.24 TF=71.6N TR=3.74U) .MODEL DSUB D (IS=14.4P N=1 RS=46.6M BV=45 IBV=.001 CJO=101P TT=3.74U) .ENDS oregano-0.84.41/data/models/BCW65C.model0000644000175000017500000000050313413640652016443 0ustar rubenruben.model BCW65C NPN(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=500.5 ISE=45.03f + NE=1.363 IKF=1.017 Nk=.7023 Xtb=1.5 Br=5.448 Isc=1.983p + Nc=1.344 Ikr=6.609 Rc=.4217 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=71.14p Mje=.3333 Vje=.5 Tr=10n Tf=697.1p Itf=2.639 + Xtf=24.55 Vtf=10) * MFG=SIEMENS pid=bcw65c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/D45H11.model0000644000175000017500000000057613413640652016372 0ustar rubenruben.model D45H11 PNP(IS=7.079646E-14 ISE=2.92884E-11 ISC=3.98107E-13 XTI=3 + BF=392.02 BR=67.165 IKF=1.72 IKR=1.58489 XTB=1.77681 + VAF=63.5 VAR=58.42 VJE=0.785 VJC=0.5 + RE=0.034 RC=0.2 RB=271 RBM=0.361 IRB=5.011872E-6 + CJE=8.49E-10 CJC=3.66E-10 XCJC=0.54505 FC=0.5 + NF=0.828 NR=0.825 NE=1.72 NC=1.07 MJE=0.387 MJC=0.352 + EG=0.958 KF=1E-9 AF=1 + VCEO=80 ICRATING=5 MFG=FAIRCHILD) oregano-0.84.41/data/models/BY299.model0000644000175000017500000000017713413640652016337 0ustar rubenruben.model BY299 D (IS=22U RS=42M N=3.35 BV=800 IBV=10U + CJO=73.5P VJ=.75 M=.333 TT=622N) * Diotec 800 Volt 2 Amp .5 us Si Diode oregano-0.84.41/data/models/IRF150.model0000644000175000017500000000044113413640652016421 0ustar rubenruben.model IRF150 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.624m Kp=20.53u W=.3 L=2u Vto=2.831 + Rd=1.031m Rds=444.4K Cbd=3.229n Pb=.8 Mj=.5 Fc=.5 Cgso=9.027n + Cgdo=1.679n Rg=13.89 Is=194E-18 N=1 Tt=288n) * IR pid=IRF150 case=TO3 oregano-0.84.41/data/models/BAS16Z.model0000644000175000017500000000022013413640652016454 0ustar rubenruben.MODEL BAS16Z D IS=1.795E-9 N=1.874 RS=1.263 XTI=3 + EG=1.11 BV=153.1 IBV=17.26E-3 TT=7.358E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/BF421P.model0000644000175000017500000000061113413640652016410 0ustar rubenruben.model BF421P PNP(IS=9.124E-15 ISE=1.672E-15 ISC=2.139E-13 XTI=3 + BF=198.2 BR=1.256 IKF=0.13 IKR=0.1 XTB=1.5 + VAF=465.9 VAR=13 VJE=0.8484 VJC=0.6298 + RE=0.635 RC=1.42 RB=5 RBM=0.5 IRB=1E-06 + CJE=1.447E-11 CJC=8.483E-12 XCJC=0.619 FC=0.99 + NF=0.9904 NR=0.99 NE=1.527 NC=1.08 MJE=0.3884 MJC=0.4561 + TF=1.38E-09 TR=1E-32 PTF=0 ITF=0.065 VTF=2 XTF=21.78 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BCW68G.model0000644000175000017500000000047613413640652016463 0ustar rubenruben.model BCW68G PNP(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=373.4 ISE=600f NE=1.538 + IKF=.6542 Nk=.669 Xtb=1.5 Br=12.01 Isc=1.997p Nc=1.678 + Ikr=9.679 Rc=.5562 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=669.8p Itf=1.943 Xtf=37.78 Vtf=10) * MFG=SIEMENS pid=bcw68g case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF431.model0000644000175000017500000000042513413640652016425 0ustar rubenruben.model IRF431 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=2.514m Kp=20.56u W=.33 L=2u Vto=3.783 + Rd=.944 Rds=2MEG Cbd=677.2p Pb=.8 Mj=.5 Fc=.5 Cgso=1.709n + Cgdo=152.1p Rg=.5011 Is=46.85p N=1 Tt=585n) * IR pid=IRF431 case=TO3 oregano-0.84.41/data/models/IRF840.model0000644000175000017500000000043413413640652016431 0ustar rubenruben.model IRF840 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=6.382m Kp=20.85u W=.68 L=2u Vto=3.879 + Rd=.6703 Rds=2.222MEG Cbd=1.415n Pb=.8 Mj=.5 Fc=.5 Cgso=1.625n + Cgdo=133.4p Rg=.6038 Is=56.03p N=1 Tt=710n) * IR pid=IRF840 case=TO220 oregano-0.84.41/data/models/2N3392.model0000644000175000017500000000055313413640652016357 0ustar rubenruben.model 2N3392 NPN(IS=12.03E-15 ISE=4.958E-12 ISC=0 XTI=3 + BF=254.8 BR=4.379 IKF=0.1072 IKR=0 XTB=1.5 + VAF=37.37 VAR=12.5 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=8.307E-12 CJC=5.777E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.971 NC=2 MJE=0.384 MJC=0.3199 + TF=385.4E-12 TR=732.1E-12 ITF=0.17 VTF=3 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/TIP121.model0000644000175000017500000000074613413640652016443 0ustar rubenruben.SUBCKT TIP121 1 2 3 * TERMINALS: C B E * 80 Volt 5 Amp NPN Darlington Transistor 08-03-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 3 1 DSUB .MODEL QPWR NPN (IS=6P NF=1 BF=116 VAF=161 IKF=3.2 ISE=376P NE=2 + BR=4 NR=1 VAR=20 IKR=4.8 RE=.33 RB=1.32 RC=.132 XTB=1.5 + CJE=676P VJE=.74 MJE=.45 CJC=97.5P VJC=1.1 MJC=.24 TF=98.5N TR=4.25U) .MODEL DSUB D (IS=6P N=1 RS=.33 BV=80 IBV=.001 CJO=97.5P TT=4.25U) .ENDS * TIP121, TEXAS INSTRUMENTS POWER PRODUCTS DATA BOOK, 1985 oregano-0.84.41/data/models/BFP450.model0000644000175000017500000000071513413640652016417 0ustar rubenruben.model BFP450 NPN(IS=1.3125E-16 ISE=2.8341E-14 ISC=1.2292E-17 XTI=3 + BF=76.123 NR=1.2966 IKF=0.58905 IKR=0.25878 XTB=1.5 + VAF=24.165 VAR=13.461 VJE=0.95292 VJC=1.1487 + RE=0.45346 RC=0.50084 RB=5.403 RBM=2.1659 IRB=1.3181E-5 + CJE=3.2276E-15 CJC=1.0495E-12 XCJC=0.28285 FC=0.91274 + NF=0.79652 BR=21.254 NE=1.5563 NC=0.70543 MJE=0.48672 MJC=0.50644 + TF=7.5068E-12 TR=2.6912E-9 PTF=0 ITF=1.7655E-5 VTF=0.66148 XTF=0.69972 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/2N6042.model0000644000175000017500000000066013413640652016351 0ustar rubenruben.SUBCKT 2N6042 1 2 3 * TERMINALS: C B E * Motorola 100 Volt 8 Amp PNP Darlington Transistor 08-02-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 120 D1 1 3 DSUB .MODEL QPWR PNP (IS=9.6P NF=1 BF=96.6 VAF=180 IKF=4 ISE=641P NE=2 + BR=4 NR=1 VAR=20 IKR=6 RE=85M RB=.2 RC=63M XTB=1.5 + CJE=1.65N VJE=.74 MJE=.45 CJC=238P VJC=1.1 MJC=.24 TF=14.0N TR=700N) .MODEL DSUB D (IS=9.6P N=1 RS=50M BV=100 IBV=.001 CJO=238P TT=700N) .ENDS oregano-0.84.41/data/models/SMBTA06.model0000644000175000017500000000047113413640652016572 0ustar rubenruben.model SMBTA06 NPN(IS=9.744f XTI=3 EG=1.11 VAF=100 BF=104 ISE=96.9f NE=1.615 + IKF=.6711 Nk=.5215 Xtb=1.5 Br=7.835 Isc=6.488p Nc=1.471 + Ikr=1.021 Rc=.3037 Cjc=12p Mjc=.3333 Vjc=.5 Fc=.5 Cje=36p + Mje=.3333 Vje=.5 Tr=10n Tf=1.333n Itf=30.41 Xtf=484.6 Vtf=10) * MFG=SIEMENS pid=smbta06 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF541.model0000644000175000017500000000043313413640652016426 0ustar rubenruben.model IRF541 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=21.34m Kp=20.71u W=.94 L=2u Vto=3.136 + Rd=22.52m Rds=355.6K Cbd=2.408n Pb=.8 Mj=.5 Fc=.5 Cgso=1.031n + Cgdo=567.7p Rg=3.842 Is=2.859p N=1 Tt=142n) * IR pid=IRF541 case=TO220 oregano-0.84.41/data/models/BFR106.model0000644000175000017500000000071213413640652016414 0ustar rubenruben.model BFR106 NPN(IS=1.8998E-15 ISE=7.1424E-14 ISC=2.0992E-15 XTI=3 + BF=132.75 BR=11.407 IKF=0.44125 IKR=0.010016 XTB=1.5 + VAF=15 VAR=4.1613 VJE=0.85909 VJC=0.81533 + RE=1.1351 RC=0.27485 RB=1.2652 RBM=1.0893 IRB=2.8135E-5 + CJE=5.0933E-15 CJC=2.3278E-12 XCJC=0.14496 FC=0.92887 + NF=0.89608 NR=0.91008 NE=1.3235 NC=1.4602 MJE=0.69062 MJC=0.46849 + TF=3.5786E-11 TR=1.2466E-9 PTF=0 ITF=0.062059 VTF=0.10681 XTF=0.44444 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/MUR1660C.model0000644000175000017500000000022113413640652016632 0ustar rubenruben.MODEL MUR1660C D (IS=179N RS=42M N=1.64 BV=600 IBV=500U + CJO=310P VJ=.775 M=.37 TT=109N) * Motorola MUR1660CT 600 Volt 16 Amp 60M us Si Diode oregano-0.84.41/data/models/HP5830.model0000644000175000017500000000020413413640652016377 0ustar rubenruben.model HP5830 D (IS=46N RS=12 N=1.08 BV=4 IBV=10U + CJO=.09P VJ=.5 M=.5 EG=.69 TT=72P) * H-P HSCH-5830 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/AC128.model0000644000175000017500000000036713413640652016300 0ustar rubenruben.model AC128 PNP(IS=1.41f ISC=0 ISE=0 IKF=80m IKR=0 ITF=0.4 +NC=2 NE=1.5 BF=70 BR=4.977 RB=10 RC=2.5 CJC=9.728p CJE=8.063p +TR=33.42n TF=179.3p FC=0.5 EG=1.11 VJC=0.2 VJE=0.2 VTF=4 +MJC=0.5776 MJE=0.3677 XTB=1.5 XTF=6 XTI=3 MFG=GERMANIUM-TYPE) oregano-0.84.41/data/models/BC416A.model0000644000175000017500000000053513413640652016377 0ustar rubenruben.model BC416A PNP(IS=1.149E-14 ISE=5E-14 ISC=1.43E-14 XTI=3 + BF=330 BR=13 IKF=0.1 IKR=0.012 XTB=1.5 + VAF=84.56 VAR=8.15 VJE=0.65 VJC=0.565 + RE=0.4 RC=0.95 RB=0.2 + CJE=16E-12 CJC=10.5E-12 XCJC=0.75 FC=0.5 + NF=0.9872 NR=0.996 NE=1.4 NC=1.1 MJE=0.415 MJC=0.415 + TF=0.493E-9 TR=73.55E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/2N6767.model0000644000175000017500000000043013413640652016362 0ustar rubenruben.model 2N6767 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=13.98m Kp=20.77u W=.82 L=2u Vto=2.885 + Rd=.2691 Rds=3.5MEG Cbd=3.018n Pb=.8 Mj=.5 Fc=.5 Cgso=9.503n + Cgdo=204.5p Rg=3.164 Is=902.5p N=1 Tt=865n) * IR pid=2N6767 case=TO3 oregano-0.84.41/data/models/BF556A.model0000644000175000017500000000062013413640652016402 0ustar rubenruben.SUBCKT BF556A/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -2.1333E+000 + BETA = 1.06491E-003 + LAMBDA = 1.68673E-002 + RD = 1.41231E+001 + RS = 1.41231E+001 + IS = 3.50865E-016 + CGS = 2.10000E-012 + CGD = 2.30000E-012 + PB = 7.73895E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/2N3055.model0000644000175000017500000000051013413640652016344 0ustar rubenruben.model 2N3055 NPN(IS=2.37E-8 ISE=1E-9 ISC=1E-9 XTI=3 + BF=73 BR=2.66 IKF=0.8 IKF=0.4 XTB=1.5 + VAF=90 VAR=30 VJE=0.65 VJC=0.65 + RE=0.00856 RC=0.0856 RB=0.81 + CJE=415E-12 CJC=1000E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.26 NC=1.5 MJE=0.5 MJC=0.33 + TF=100E-9 TR=0.51E-6 + EG=1.11 KF=1E-9 AF=1 + VCEO=60 ICRATING=10 MFG=STMICRO) oregano-0.84.41/data/models/BF420P.model0000644000175000017500000000063213413640652016412 0ustar rubenruben.model BF420P NPN(IS=7.974E-15 ISE=2.266E-16 ISC=4.33E-12 XTI=3 + BF=122 BR=6.235 IKF=0.01029 IKR=0.02746 XTB=1.5 + VAF=25.51 VAR=19.43 VJE=0.4581 VJC=0.197 + RE=0.3814 RC=0.439 RB=1 RBM=0.5 IRB=1E-06 + CJE=1.742E-11 CJC=5.045E-12 XCJC=0.1041 FC=0.8555 + NF=0.993 NR=0.999 NE=1.18 NC=1.397 MJE=0.3092 MJC=0.1947 + TF=7.073E-10 TR=1E-08 PTF=0 ITF=0.1495 VTF=6.144 XTF=289.5 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/2SC2873.model0000644000175000017500000000051213413640652016465 0ustar rubenruben.model 2SC2873 NPN(IS=3E-13 ISE=1.1E-13 ISC=6.5E-13 XTI=3 + BF=225 BR=110 IKF=2.8 IKR=0.8 XTB=1.5 + VAF=80 VAR=28 VJE=0.65 VJC=0.65 + RE=0.063 RC=0.07 RB=0.3 + CJE=325E-12 CJC=70E-12 XCJC=0.75 FC=0.5 + NF=1 NR=0.972 NE=1.37 NC=1.372 MJE=0.33 MJC=0.33 + TF=1E-9 TR=10E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/2N5772.model0000644000175000017500000000054613413640652016365 0ustar rubenruben.model 2N5772 NPN(IS=44.14E-15 ISE=94.79E-15 ISC=0 XTI=3 + BF=75.97 BR=12.76E-3 IKF=0.3498 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.06 RC=0.6 RB=10 + CJE=4.5E-12 CJC=2.83E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.389 NC=2 MJE=0.2418 MJC=0.862 + TF=227.6E-12 TR=1.076E-6 ITF=0.3 VTF=4 XTF=4 + EG=1.11 KF=1E-9 AF=1 + VCEO=15 ICRATING=200M MFG=NSC) oregano-0.84.41/data/models/BC817-40.model0000644000175000017500000000050013413640652016514 0ustar rubenruben.model BC817-40 NPN(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=407.8 ISE=333.4f + NE=1.692 IKF=.9448 Nk=.6041 Xtb=1.5 Br=6.39 Isc=268.8f Nc=2.125 + Ikr=.1193 Rc=.4205 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=662p Itf=3.238 Xtf=134.9 Vtf=10) * MFG=SIEMENS pid=bc817-40 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BC860C.model0000644000175000017500000000050013413640652016374 0ustar rubenruben.model BC860C PNP(IS=336.7f XTI=3 EG=1.11 VAF=29.03 BF=462.2 ISE=1.648p + NE=2.405 IKF=.1165 Nk=.5254 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.791 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.4p Itf=3.088 Xtf=41.48 Vtf=10) * MFG=SIEMENS pid=bc860c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BCX56S.model0000644000175000017500000000071213413640652016466 0ustar rubenruben.model BCX56S NPN(IS=3.06E-15 ISE=1.62E-16 ISC=4.08E-14 XTI=3.00 + BF=1.29E2 BR=2.92 IKF=9.06E-1 IKR=1.00 XTB=1.5 + VAF=7.24E2 VAR=5.46E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.26E-2 RC=3.11E-1 RB=1.65E1 RBM=1.73E-2 IRB=2.38E-2 + CJE=1.17E-10 CJC=4.85E-11 XCJC=1.00 FC=5.00E-1 + NF=8.55E-1 NR=9.10E-1 NE=1.00 NC=1.00 MJE=4.22E-1 MJC=5.09E-1 + TF=1.42E-9 TR=55E-9 PTF=0 ITF=5.64E-1 VTF=9.99E5 XTF=7.75E-1 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=SIEMENS) oregano-0.84.41/data/models/BSS80.model0000644000175000017500000000067613413640652016364 0ustar rubenruben.model BSS80 NPN(IS=2.32E-13 ISE=6.69E-16 ISC=1.65E-13 XTI=3.00 + BF=3.08E2 BR=2.18E1 IKF=8.42E-1 IKR=1.00 XTB=1.5 + VAF=1.41E2 VAR=1.35E1 VJE=3.49E-1 VJC=3.00E-1 + RE=1.00E-2 RC=8.46E-1 RB=4.02E1 RBM=1.00E-2 IRB=1.25E-2 + CJE=2.66E-11 CJC=1.93E-11 XCJC=1.00 FC=5.00E-1 + NF=1.04 NR=1.12 NE=1.09 NC=1.13 MJE=4.60E-1 MJC=4.65E-1 + TF=4.95E-10 TR=0 PTF=0 ITF=3.36E-1 VTF=6.54 XTF=1.87E1 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/MJ10005.model0000644000175000017500000000062013413640652016446 0ustar rubenruben.SUBCKT MJ10005 1 2 3 * TERMINALS: C B E Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 100 R2 4 3 10 D1 3 1 DSUB D2 4 2 DSUB .01 .MODEL QPWR NPN (IS=24P NF=1.1 BF=18.4 VAF=360 IKF=15 + ISE=42.4P NE=2 BR=4 NR=1 VAR=32 IKR=22.5 RE=47.5M RB=.22M + RC=22.5M XTB=1.5 CJE=210N CJC=45900P TF=30N TR=160N) .MODEL DSUB D (IS=24P N=1 RS=56.2M BV=400 IBV=.001 + CJO=190P TT=360N) .ENDS * 400 Volt 20 Amp NPN Darlington oregano-0.84.41/data/models/BCW61.model0000644000175000017500000000067513413640652016346 0ustar rubenruben.model BCW61 PNP(IS=28.000E-15 ISE=24.903E-15 ISC=0.125E-12 XTI=3.300 + BF=284.436 BR=4.800 IKF=0.380 IKR=0.932 XTB=1.600 + VAF=43.0 VAR=6.960 VJE=1.0 VJC=0.900 + RE=0.300 RC=2.251 RB=2.200 RBM=1.500 IRB=0.100E-3 + CJE=11.800E-12 CJC=8.700E-12 XCJC=0.650 FC=0.750 + NF=1.0 NR=1.005 NE=2.234 NC=2.074 MJE=0.435 MJC=0.600 + TF=0.600E-9 TR=2.604E-9 PTF=1.0 ITF=0.314 VTF=2.0 XTF=6.500 + EG=1.110 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=SIEMENS) oregano-0.84.41/data/models/IRF153.model0000644000175000017500000000043013413640652016422 0ustar rubenruben.model IRF153 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.624m Kp=20.53u W=.3 L=2u Vto=2.831 + Rd=9.538m Rds=266.7K Cbd=3.229n Pb=.8 Mj=.5 Fc=.5 Cgso=8.543n + Cgdo=2.163n Rg=12.34 Is=16.21f N=1 Tt=288n) * IR pid=IRF153 case=TO3 oregano-0.84.41/data/models/BC559A.model0000644000175000017500000000050213413640652016401 0ustar rubenruben.model BC559A PNP(IS=1.02f XTI=3 EG=1.11 VAF=74.76 BF=175.1 ISE=10.26f + NE=1.641 IKF=88.84m Nk=.4971 Xtb=1.5 Br=4.329 Isc=71.92f + Nc=1.401 Ikr=9.634 Rc=1.071 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 + Cje=30p Mje=.3333 Vje=.5 Tr=10n Tf=822.7p Itf=3.991 Xtf=174.7 + Vtf=10) * MFG=PHILIPS pid=bc559a case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BFN19.model0000644000175000017500000000070113413640652016331 0ustar rubenruben.model BFN19 PNP(IS=9.53E-14 ISE=8.37E-13 ISC=9.99E-11 XTI=3.00 + BF=9.80E1 BR=4.78 IKF=3.49E-2 IKR=1.00 XTB=1.5 + VAF=2.60E2 VAR=1.40E2 VJE=3.00E-1 VJC=3.00E-1 + RE=1.00E-2 RC=1.00E-2 RB=2.76E1 RBM=6.66E-2 IRB=7.02E-4 + CJE=9.54E-11 CJC=4.66E-11 XCJC=1.00 FC=5.00E-1 + NF=1.00 NR=1.55 NE=1.49 NC=1.50 MJE=4.26E-1 MJC=7.00E-1 + TF=9.52E-10 TR=1.6E-6 PTF=0 ITF=4.12E-1 VTF=9.99E5 XTF=1.03 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BCP69S.model0000644000175000017500000000070113413640652016460 0ustar rubenruben.model BCP69S PNP(IS=7.82E-15 ISE=3.05E-17 ISC=1.00E-17 XTI=3.00 + BF=2.25E2 BR=9.96 IKF=5.88 IKR=1.00 XTB=1.5 + VAF=1.00E2 VAR=5.00E1 VJE=5.03E-1 VJC=3.00E-1 + RE=1.34E-1 RC=2.17E-2 RB=1.00E-2 RBM=1.00E-2 IRB=1.00E-6 + CJE=3.28E-10 CJC=1.94E-10 XCJC=1.00 FC=5.00E-1 + NF=8.54E-1 NR=8.80E-1 NE=1.00 NC=2.00 MJE=5.26E-1 MJC=4.03E-1 + TF=1.39E-9 TR=0 PTF=0 ITF=4.21E1 VTF=9.99E5 XTF=4.93E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BCW69.model0000644000175000017500000000053413413640652016350 0ustar rubenruben.model BCW69 PNP(IS=1.149E-14 ISE=5E-14 ISC=1.43E-14 XTI=3 + BF=330 BR=13 IKF=0.1 IKR=0.012 XTB=1.5 + VAF=84.56 VAR=8.15 VJE=0.65 VJC=0.565 + RE=0.4 RC=0.95 RB=0.2 + CJE=16E-12 CJC=10.5E-12 XCJC=0.75 FC=0.5 + NF=0.9872 NR=0.996 NE=1.4 NC=1.1 MJE=0.415 MJC=0.415 + TF=0.493E-9 TR=73.55E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/DB2506.model0000644000175000017500000000037713413640652016365 0ustar rubenruben.SUBCKT DB2506 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B2506 D2 4 1 B2506 D3 5 1 B2506 D4 2 4 B2506 D5 2 3 B2506 D6 2 5 B2506 .model B2506 D (IS=24.5N RS=2.67M N=1.97 BV=600 IBV=6U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 600 Volt 25 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/MUR1620C.model0000644000175000017500000000022313413640652016630 0ustar rubenruben.MODEL MUR1620C D (IS=179N RS=42M N=1.64 BV=200 IBV=250U + CJO=220P VJ=.775 M=.333 TT=49.4N) * Motorola MUR1620CT 200 Volt 16 Amp 35M us Si Diode oregano-0.84.41/data/models/TIP117.model0000644000175000017500000000074313413640652016445 0ustar rubenruben.SUBCKT TIP117 1 2 3 * TERMINALS: C B E * 100 Volt 2 Amp PNP Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 60 D1 1 3 DSUB .MODEL QPWR PNP (IS=2.4P NF=1 BF=142 VAF=180 IKF=2.4 ISE=168P NE=2 + BR=4 NR=1 VAR=20 IKR=3.6 RE=.45 RB=1.8 RC=.18 XTB=1.5 + CJE=382P VJE=.74 MJE=.45 CJC=99.3P VJC=1.1 MJC=.24 TF=110N TR=4.75U) .MODEL DSUB D (IS=2.4P N=1 RS=.45 BV=100 IBV=.001 CJO=99.3P TT=4.75U) .ENDS * TIP117, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/BF908.model0000644000175000017500000000247013413640652016307 0ustar rubenruben* BF908 SPICE MODEL OCTOBER 1993 PHILIPS SEMICONDUCTORS * ENVELOPE SOT143 * 1.: SOURCE; 2.: DRAIN; 3.: GATE 2; 4.: GATE 1; .SUBCKT BF908/PLP 1 2 3 4 L10 1 10 0.12N L20 2 20 0.12N L30 3 30 0.12N L40 4 40 0.12N L11 10 11 1.20N L21 20 21 1.20N L31 30 31 1.20N L41 40 41 1.20N C13 10 30 0.085P C14 10 40 0.085P C21 10 20 0.017P C23 20 30 0.085P C24 20 40 0.005P D11 42 11 ZENER D12 42 41 ZENER D21 32 11 ZENER D22 32 31 ZENER RS 10 12 100 MOS1 61 41 11 12 GATE1 L=1.1E-6 W=1750E-6 MOS2 21 31 61 12 GATE2 L=2.0E-6 W=1750E-6 .MODEL ZENER + D BV=10 CJO=1.2E-12 RS=10 .MODEL GATE1 + NMOS LEVEL=3 UO=600 VTO=-0.250 NFS=300E9 TOX=33E-9 + NSUB=3E15 VMAX=140E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12 .MODEL GATE2 + NMOS LEVEL=3 UO=600 VTO=-0.250 NFS=300E9 TOX=33E-9 + NSUB=3E15 VMAX=100E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.7E-12 CBS=0.5E-12 .ENDS * *$ oregano-0.84.41/data/models/IRF044.model0000644000175000017500000000043013413640652016421 0ustar rubenruben.model IRF044 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=10.08m Kp=21.21u W=1.3 L=2u Vto=3.441 + Rd=.479m Rds=266.7K Cbd=5.111n Pb=.8 Mj=.5 Fc=.5 Cgso=830.7p + Cgdo=1.012n Rg=7.817 Is=228.7f N=1 Tt=103n) * IR pid=IRF044 case=TO3 oregano-0.84.41/data/models/BSX20.model0000644000175000017500000000050513413640652016352 0ustar rubenruben.model BSX20 NPN(IS=20.75f XTI=3 EG=1.11 VAF=100 BF=113.4 ISE=224.4f + NE=1.439 IKF=76.38m Nk=.5276 Xtb=1.8 Br=2.025 Isc=163.1p + Nc=1.438 Ikr=5.567 Rc=1.156 Cjc=3.334p Mjc=.2086 Vjc=.5 Fc=.5 + Cje=4.118p Mje=.3794 Vje=.5 Tr=45.49n Tf=236.7p Itf=1.912 + Xtf=43.51 Vtf=10) * MFG=PHILIPS pid=bsx20 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BFT92.model0000644000175000017500000000070213413640652016341 0ustar rubenruben.model BFT92 PNP(IS=4.5354E-15 ISE=1.2196E-14 ISC=2.4709E-17 XTI=3 + BF=98.533 NR=1.2703 IKF=0.016123 IKR=0.019729 XTB=1.5 + VAF=10.983 VAR=47.577 VJE=0.79082 VJC=1.2 + RE=1.5119 RC=0.66749 RB=7.9562 RBM=1.5939 IRB=0.00079584 + CJE=1.7785E-15 CJC=9.2207E-13 XCJC=0.3 FC=0.75167 + NF=0.90551 BR=10.297 NE=1.1172 NC=1.206 MJE=0.32167 MJC=0.3 + TF=3.2171E-11 TR=2.0779E-9 PTF=0 ITF=1.3277E-5 VTF=0.21451 XTF=0.30227 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/IRF140.model0000644000175000017500000000043113413640652016417 0ustar rubenruben.model IRF140 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=21.94m Kp=20.61u W=.97 L=2u Vto=3.189 + Rd=22.19m Rds=444.4K Cbd=2.398n Pb=.8 Mj=.5 Fc=.5 Cgso=1.113n + Cgdo=432.1p Rg=5.659 Is=1.303p N=1 Tt=142n) * IR pid=IRF140 case=TO3 oregano-0.84.41/data/models/BC808-40.model0000644000175000017500000000050513413640652016521 0ustar rubenruben.model BC808-40 PNP(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=460.8 ISE=301.2f + NE=1.615 IKF=.4967 Nk=.5594 Xtb=1.5 Br=6.87 Isc=283.2f Nc=1.97 + Ikr=9.135m Rc=.3759 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=71.14p Mje=.3333 Vje=.5 Tr=10n Tf=704.3p Itf=13.89 + Xtf=1.333K Vtf=10) * MFG=SIEMENS pid=bc808-40 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BF245A.model0000644000175000017500000000062013413640652016375 0ustar rubenruben.SUBCKT BF245A/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -1.7372E+000 + BETA = 1.16621E-003 + LAMBDA = 1.77211E-002 + RD = 9.01678E+000 + RS = 9.01678E+000 + IS = 2.91797E-016 + CGS = 2.20000E-012 + CGD = 2.20000E-012 + PB = 7.80988E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BFP405.model0000644000175000017500000000071013413640652016412 0ustar rubenruben.model BFP405 NPN(IS=2.1024E-16 ISE=1.5761E-14 ISC=3.7223E-17 XTI=3 + BF=83.23 BR=10.526 IKF=0.16493 IKR=0.25052 XTB=1.5 + VAF=39.251 VAR=34.368 VJE=0.70367 VJC=0.99532 + RE=1.9289 RC=0.12691 RB=15 RBM=1.3491 IRB=0.00021215 + CJE=3.7265E-15 CJC=9.6941E-14 XCJC=0.08161 FC=0.99469 + NF=1.0405 NR=0.96647 NE=1.7763 NC=1.3152 MJE=0.37747 MJC=0.48652 + TF=4.5899E-12 TR=1.4935E-9 PTF=0 ITF=0.0013364 VTF=0.19762 XTF=0.3641 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BSV15-16.model0000644000175000017500000000050213413640652016575 0ustar rubenruben.model BSV15-16 PNP(IS=70.49f XTI=3 EG=1.11 VAF=100 BF=180.1 ISE=735.8f NE=1.64 + IKF=.6947 Nk=.596 Xtb=1.5 Br=18.45 Isc=715.1f Nc=1.23 Ikr=1.222 + Rc=.8335 Cjc=47.58p Mjc=.3333 Vjc=.5 Fc=.5 Cje=212.4p Mje=.3333 + Vje=.5 Tr=262.5n Tf=1.981n Itf=14.46 Xtf=75.99 Vtf=10) * MFG=PHILIPS pid=bsv15-16 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/HP5540.model0000644000175000017500000000016613413640652016404 0ustar rubenruben.model HP5540 D (IS=40N RS=13 N=1.08 BV=5 IBV=10U + CJO=.09P VJ=.5 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/HP2292.model0000644000175000017500000000020413413640652016376 0ustar rubenruben.model HP2292 D (IS=.2N RS=9 N=1.08 BV=10 IBV=10U + CJO=.3P VJ=.65 M=.5 EG=.69 TT=72P) * H-P 5082-2292 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/TIP107.model0000644000175000017500000000075613413640652016450 0ustar rubenruben.SUBCKT TIP107 1 2 3 * TERMINALS: C B E * 100 Volt 8 Amp PNP Darlington Transistor 08-03-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 1.8K R2 4 3 70 D1 1 3 DSUB .MODEL QPWR PNP (IS=9.6P NF=1 BF=93.5 VAF=180 IKF=6.24 ISE=828P NE=2 + BR=4 NR=1 VAR=20 IKR=9.36 RE=.112 RB=.45 RC=45M XTB=1.5 + CJE=1.65N VJE=.74 MJE=.45 CJC=238P VJC=1.1 MJC=.24 TF=53.7N TR=1.53U) .MODEL DSUB D (IS=9.6P N=1 RS=.112 BV=100 IBV=.001 CJO=238P TT=1.53U) .ENDS * TIP107, TEXAS INSTRUMENTS POWER PRODUCTS DATA BOOK, 1985 oregano-0.84.41/data/models/BCX70J.model0000644000175000017500000000047713413640652016461 0ustar rubenruben.model BCX70J NPN(IS=26.39f XTI=3 EG=1.11 VAF=62.37 BF=331.9 ISE=278.6f + NE=2.004 IKF=2.57 Nk=.5 Xtb=1.5 Br=9.451 Isc=15.74p Nc=1.797 + Ikr=2.344 Rc=3.117 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=597.1p Itf=2.501 Xtf=233.9 Vtf=10) * MFG=SIEMENS pid=bcx70j case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BC546A.model0000644000175000017500000000050013413640652016373 0ustar rubenruben.model BC546A NPN(IS=7.049f XTI=3 EG=1.11 VAF=127.9 BF=253 ISE=96.26f + NE=1.556 IKF=77.05m Nk=.5305 Xtb=1.5 Br=1 Isc=130.8f Nc=1.602 + Ikr=3.321 Rc=.8766 Cjc=5.25p Mjc=.3147 Vjc=.5697 Fc=.5 + Cje=11.5p Mje=.6715 Vje=.5 Tr=10n Tf=409.5p Itf=1.994 Xtf=40.12 + Vtf=10) * MFG=PHILIPS pid=bc546a case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/DD1000.model0000644000175000017500000000021013413640652016335 0ustar rubenruben.model DD1000 D (IS=177P RS=446 N=23.2 BV=10K IBV=300N + CJO=2.14P VJ=.75 M=.333 TT=50.4N) * Diotec 10000 Volt 20M Amp 35M us Si Diode oregano-0.84.41/data/models/2N6762.model0000644000175000017500000000042613413640652016362 0ustar rubenruben.model 2N6762 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=98.25m Kp=20.62u W=.38 L=2u Vto=3.166 + Rd=1.162 Rds=4MEG Cbd=791.9p Pb=.8 Mj=.5 Fc=.5 Cgso=1.725n + Cgdo=136.7p Rg=2.685 Is=2.68p N=1 Tt=1245n) * IR pid=2N6762 case=TO3 oregano-0.84.41/data/models/BC327.model0000644000175000017500000000066613413640652016304 0ustar rubenruben.model BC327 PNP (IS=1.08E-13 mfg=Philips vceo=45 icrating=500m NF=0.99 ISE=2.713E-14 + NE=1.4 BF=385.7 IKF=0.3603 VAF=31.29 NR=0.9849 ISC=5.062E-13 NC=1.295 BR=20.57 IKR=0.054 + VAR=11.62 RB=1 IRB=1E-06 RBM=0.5 RE=0.1415 RC=0.2623 XTB=0 EG=1.11 XTI=3 CJE=5.114E-11 + VJE=0.8911 MJE=0.4417 TF=7.359E-10 XTF=1.859 VTF=3.813 ITF=0.4393 PTF=0 CJC=2.656E-11 + VJC=0.62 MJC=0.4836 XCJC=0.459 TR=5.00E-08 CJS=0 VJS=0.75 MJS=0.333 FC=0.99) oregano-0.84.41/data/models/BC560B.model0000644000175000017500000000047713413640652016405 0ustar rubenruben.model BC560B PNP(IS=1.02f XTI=3 EG=1.11 VAF=51.26 BF=289.6 ISE=9.846f + NE=1.845 IKF=.1026 Nk=.5413 Xtb=1.5 Br=6.124 Isc=1.113f Nc=1.97 + Ikr=.2035 Rc=1.078 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 Cje=30p + Mje=.3333 Vje=.5 Tr=10n Tf=612.4p Itf=1.287 Xtf=25.55 Vtf=10) * MFG=PHIILIPS pid=bc560b case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BCV61C.model0000644000175000017500000000063513413640652016444 0ustar rubenruben.model BCV61C NPN(IS=45.000E-15 ISE=55.668E-15 ISC=1.084E-12 XTI=3.200 + BF=480 BR=7.745 IKF=0.708 IKR=1.0 XTB=1.400 + VAF=74.0 VAR=14.0 VJE=0.690 VJC=0.750 + RE=0.350 RC=1.445 RB=9.0 RBM=4.500 IRB=0.100E-3 + CJE=13.050E-12 CJC=4.100E-12 XCJC=0.650 FC=0.750 + NF=1.010 NR=1.015 NE=2.567 NC=4.063 MJE=0.375 MJC=0.420 + TF=0.620E-9 TR=2.5E-9 PTF=1.0 ITF=0.720 VTF=1.0 XTF=68.0 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BF799.model0000644000175000017500000000070313413640652016314 0ustar rubenruben.model BF799 NPN(IS=9.72E-16 ISE=2.26E-13 ISC=1.00E-13 XTI=3.00 + BF=1.39E2 BR=1.00E-2 IKF=2.34E-1 IKR=1.00 XTB=1.5 + VAF=6.40E1 VAR=1.29E1 VJE=4.75E-1 VJC=3.00E-1 + RE=3.22E-2 RC=1.56 RB=1.00E-2 RBM=1.00E-2 IRB=2.25E-4 + CJE=3.85E-12 CJC=2.37E-12 XCJC=1.00 FC=7.64E-1 + NF=9.94E-1 NR=1.23 NE=1.75 NC=2.00 MJE=2.26E-1 MJC=2.40E-1 + TF=1.37E-10 TR=0 PTF=0 ITF=4.64E-1 VTF=3.43E-1 XTF=1.00E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BC368S.model0000644000175000017500000000067213413640652016431 0ustar rubenruben.model BC368S NPN(IS=9.77E-14 ISE=1.49E-16 ISC=4.11E-14 XTI=3.00 + BF=1.61E2 BR=3.66 IKF=7.74 IKR=1.00 XTB=1.5 + VAF=5.63E2 VAR=3.49E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.01E-2 RC=2.06E-1 RB=1.91E1 RBM=3.03 IRB=6.95E-2 + CJE=2.52E-10 CJC=1.37E-10 XCJC=1.00 FC=5.00E-1 + NF=9.64E-1 NR=1.23 NE=1.01 NC=1.02 MJE=4.11E-1 MJC=4.87E-1 + TF=1.38E-9 TR=0 PTF=0 ITF=1.00E1 VTF=9.99E5 XTF=3.26E1 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/2N5172.model0000644000175000017500000000055113413640652016353 0ustar rubenruben.model 2N5172 NPN(IS=12.03E-15 ISE=4.098E-12 ISC=0 XTI=3 + BF=308.3 BR=4.379 IKF=0.1072 IKR=0 XTB=1.5 + VAF=37.37 VAR=12.5 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=8.307E-12 CJC=5.777E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.971 NC=2 MJE=0.384 MJC=0.3199 + TF=385.4E-12 TR=718.9E-12 ITF=0.17 VTF=3 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/BFY52.model0000644000175000017500000000050213413640652016340 0ustar rubenruben.model BFY52 NPN(IS=160.8p XTI=3 EG=1.11 VAF=281.4 BF=24.98K ISE=19.66n + NE=2.048 IKF=.1072 Nk=.6601 Xtb=1.5 Br=2.015 Isc=91.99n + Nc=1.566 Ikr=1.721 Rc=.4963 Cjc=16p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=48p Mje=.3333 Vje=.5 Tr=815.2n Tf=792.7p Itf=214.9 + Xtf=2.303K Vtf=10) * MFG=PHILIPS pid=bfy52 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/BFR92.model0000644000175000017500000000070013413640652016335 0ustar rubenruben.model BFR92 NPN(IS=1.213E-16 ISE=1.2955E-13 ISC=7.5557E-16 XTI=3 + BF=94.733 NR=0.8983 IKF=0.46227 IKR=0.01 XTB=1.5 + VAF=30 VAR=14.599 VJE=0.70618 VJC=0.84079 + RE=0.29088 RC=0.13793 RB=14.998 RBM=7.8145 IRB=1.652E-5 + CJE=1.0416E-14 CJC=9.4647E-13 XCJC=0.13464 FC=0.99545 + NF=1.0947 BR=10.729 NE=1.9052 NC=1.371 MJE=0.34686 MJC=0.4085 + TF=2.6796E-11 TR=1.2744E-9 PTF=0 ITF=0.0044601 VTF=0.32861 XTF=0.3817 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BSV16-16.model0000644000175000017500000000050213413640652016576 0ustar rubenruben.model BSV16-16 PNP(IS=70.49f XTI=3 EG=1.11 VAF=100 BF=180.1 ISE=735.8f NE=1.64 + IKF=.6947 Nk=.596 Xtb=1.5 Br=18.45 Isc=715.1f Nc=1.23 Ikr=1.222 + Rc=.8335 Cjc=47.58p Mjc=.3333 Vjc=.5 Fc=.5 Cje=212.4p Mje=.3333 + Vje=.5 Tr=262.5n Tf=1.981n Itf=14.46 Xtf=75.99 Vtf=10) * MFG=PHILIPS pid=bsv16-16 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/BCX68.model0000644000175000017500000000067113413640652016352 0ustar rubenruben.model BCX68 NPN(IS=9.77E-14 ISE=1.49E-16 ISC=4.11E-14 XTI=3.00 + BF=1.61E2 BR=3.66 IKF=7.74 IKR=1.00 XTB=1.5 + VAF=5.63E2 VAR=3.49E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.01E-2 RC=2.06E-1 RB=1.91E1 RBM=3.03 IRB=6.95E-2 + CJE=2.52E-10 CJC=1.37E-10 XCJC=1.00 FC=5.00E-1 + NF=9.64E-1 NR=1.23 NE=1.01 NC=1.02 MJE=4.11E-1 MJC=4.87E-1 + TF=1.38E-9 TR=0 PTF=0 ITF=1.00E1 VTF=9.99E5 XTF=3.26E1 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/AC127.model0000644000175000017500000000037213413640652016273 0ustar rubenruben.model AC127 NPN(IS=1.41f ISC=0 ISE=0 IKF=80m IKR=0 ITF=0.4 + NC=2 NE=1.5 BF=70 BR=4.977 RB=10 RC=2.5 CJC=9.728p CJE=8.063p + TR=33.42n TF=179.3p FC=0.5 EG=1.11 VJC=0.2 VJE=0.2 VTF=4 + MJC=0.5776 MJE=0.3677 XTB=1.5 XTF=6 XTI=3 MFG=GERMANIUM-TYPE) oregano-0.84.41/data/models/HP2279.model0000644000175000017500000000020513413640652016404 0ustar rubenruben.model HP2279 D (IS=120N RS=10 N=1.08 BV=5 IBV=10U + CJO=.12P VJ=.5 M=.5 EG=.69 TT=72P) * H-P 5082-2279 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/IRF833.model0000644000175000017500000000043013413640652016427 0ustar rubenruben.model IRF833 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=31.81m Kp=20.55u W=.47 L=2u Vto=3.749 + Rd=1.434 Rds=2MEG Cbd=644.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.286n + Cgdo=106.7p Rg=.1647 Is=459.3p N=1 Tt=585n) * IR pid=IRF833 case=TO220 oregano-0.84.41/data/models/BSX19.model0000644000175000017500000000047513413640652016370 0ustar rubenruben.model BSX19 NPN(IS=20.75f XTI=3 EG=1.11 VAF=100 BF=738K ISE=14.86p NE=1.709 + IKF=1.366m Nk=.4817 Xtb=1.5 Br=507 Isc=45.28p Nc=1.452 + Ikr=2.923 Rc=.8978 Cjc=3.334p Mjc=.2086 Vjc=.5 Fc=.5 Cje=4.118p + Mje=.3794 Vje=.5 Tr=4n Tf=280.7p Itf=321.5 Xtf=8.541K Vtf=10) * MFG=PHILIPS pid=bsx19 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/MUR7020.model0000644000175000017500000000021013413640652016521 0ustar rubenruben.model MUR7020 D (IS=12.9U RS=1.73M N=2.01 BV=200 IBV=25U + CJO=470P VJ=.275 M=.133 TT=77N) * Motorola 200 Volt 70 Amp 60M us Si Diode oregano-0.84.41/data/models/2N6715.model0000644000175000017500000000054113413640652016356 0ustar rubenruben.model 2N6715 NPN(IS=2.218E-13 ISE=2.9E-14 ISC=2.971E-13 XTI=3 + BF=185.2 BR=1.271 IKF=856.8E-3 IKR=0.1 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.595 + RE=0.075 RC=0.15 RB=10 + CJE=318E-12 CJC=51E-12 XCJC=0.75 FC=0.5 + NF=0.9956 NR=0.995 NE=1.35 NC=1.321 MJE=0.3822 MJC=0.4937 + TF=0.77E-9 TR=27E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=2 MFG=ZETEX) oregano-0.84.41/data/models/BFP81.model0000644000175000017500000000070213413640652016333 0ustar rubenruben.model BFP81 NPN(IS=1.703E-14 ISE=5.8728E-15 ISC=1.6977E-13 XTI=3 + BF=110 BR=25.974 IKF=0.22241 IKR=0.011566 XTB=1.5 + VAF=35 VAR=2.3785 VJE=0.4318 VJC=0.26339 + RE=1.1731 RC=0.3715 RB=5.7058 RBM=1.5489 IRB=0.00011894 + CJE=3.3977E-14 CJC=6.9381E-13 XCJC=0.1254 FC=0.74346 + NF=0.80846 NR=0.36321 NE=1.0668 NC=1.2237 MJE=1.7707 MJC=0.24448 + TF=2.1842E-11 TR=1.2554E-9 PTF=0 ITF=0.014701 VTF=0.48042 XTF=0.26781 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BFY50.model0000644000175000017500000000047313413640652016345 0ustar rubenruben.model BFY50 NPN(IS=1.476f XTI=3 EG=1.11 VAF=281.4 BF=6.07K ISE=2.327p + NE=1.652 IKF=.1692 Nk=.6378 Xtb=1.5 Br=678.6 Isc=17.55p Nc=1.43 + Ikr=.6167 Rc=.5062 Cjc=16p Mjc=.3333 Vjc=.5 Fc=.5 Cje=48p + Mje=.3333 Vje=.5 Tr=1.218u Tf=1.064n Itf=214.3 Xtf=17K Vtf=10) * MFG=PHILIPS pid=bfy50 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/BCW60A.model0000644000175000017500000000050013413640652016431 0ustar rubenruben.model BCW60A NPN(IS=26.39f XTI=3 EG=1.11 VAF=106.8 BF=167.4 ISE=254.6f + NE=1.806 IKF=1.363 Nk=.5 Xtb=1.5 Br=9.901 Isc=20.57p Nc=1.912 + Ikr=3.201 Rc=3.001 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=597.7p Itf=2.959 Xtf=293.8 Vtf=10) * MFG=SIEMENS pid=bcw60a case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BFR193.model0000644000175000017500000000070013413640652016417 0ustar rubenruben.model BFR193 NPN(IS=2.738E-16 ISE=1.0627E-14 ISC=3.7409E-17 XTI=3 + BF=125 BR=14.267 IKF=0.26949 IKR=0.037925 XTB=1.5 + VAF=24 VAR=3.8742 VJE=0.70276 VJC=1.1828 + RE=0.76534 RC=0.11938 RB=1.8368 RBM=1 IRB=0.00091763 + CJE=1.1824E-15 CJC=9.3503E-13 XCJC=0.053563 FC=0.72063 + NF=0.95341 NR=1.4289 NE=1.935 NC=0.94371 MJE=0.48654 MJC=0.30002 + TF=1.8828E-11 TR=1.0037E-9 PTF=0 ITF=0.00096893 VTF=0.8 XTF=0.69477 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/CA3127.model0000644000175000017500000000035113413640652016353 0ustar rubenruben.moswl CA3127 NPN(IS=3.2168p BF=95.245 VAF=100 IKF=61.522m ISE=20.48p NE=1.9984 + BR=100.1m VAR=100 IKR=10.01m ISC=10.805n RC=10 CJE=651.92f MJE=336.97m + CJC=281.16f MJC=138.65m TF=122.68p XTF=2.0529K VTF=307.73 ITF=1.6076 TR=10n) oregano-0.84.41/data/models/BC179A.model0000644000175000017500000000047313413640652016406 0ustar rubenruben.model BC179A PNP(IS=336.7f XTI=3 EG=1.11 VAF=44.61 BF=187 ISE=336.8f + NE=1.459 IKF=.2059 Nk=.5081 Xtb=1.5 Br=4.068 Isc=1.121n + Nc=1.953 Ikr=10.05 Rc=1.86 Cjc=11p Mjc=.2223 Vjc=.5 Fc=.5 + Cje=33p Mje=.3333 Vje=.5 Tr=10n Tf=845.5p Itf=1.701 Xtf=19.04 + Vtf=10) * MFG=PHILIPS pid=bc179a case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/HP2837.model0000644000175000017500000000017613413640652016413 0ustar rubenruben.model HP2837 D (IS=2.2N RS=25 N=1.08 BV=75 IBV=10U + CJO=1.6P VJ=.6 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky Diode oregano-0.84.41/data/models/BFS20.model0000644000175000017500000000063713413640652016336 0ustar rubenruben.model BFS20 NPN(IS=3.4640E-16 ISE=1.00E-15 ISC=1.231E-15 XTI=3 + BF=147.8 BR=4.078 IKF=0.1343 IKR=0.1809 XTB=1.5 + VAF=117.1 VAR=1.954 VJE=0.5979 VJC=0.5323 + RE=0.7337 RC=1.1040 RB=1 RBM=1 IRB=1E-06 + CJE=2.372E-12 CJC=0.842E-12 XCJC=0.1500 FC=0.9793 + NF=0.9740 NR=0.9420 NE=1.508 NC=1.148 MJE=0.170 MJC=0.2749 + TF=2.089E-10 TR=2.00E-08 PTF=0 ITF=0.2547 VTF=1.451 XTF=198.3 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BCY58-8.model0000644000175000017500000000047513413640652016521 0ustar rubenruben.model BCY58-8 NPN(IS=64.04f XTI=3 EG=1.11 VAF=79.03 BF=395.1 ISE=599f + NE=1.598 IKF=.1799 Nk=.6331 Xtb=1.5 Br=1 Isc=9.225n Nc=3.14 + Ikr=16.96 Rc=1.286 Cjc=11.15p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p + Mje=.3333 Vje=.5 Tr=629.7n Tf=423.5p Itf=2.989 Xtf=106 Vtf=10) * MFG=PHILIPS pid=bcy58-8 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/Potentiometer.model0000644000175000017500000000047513413640652020420 0ustar rubenruben* POTENTIOMETER SUBCIRCUIT * * TERMINALS: 1-CCW , 2-WIPER, 3-CW * WIPER POSITION VOLTAGE: 7-POS,8-NEG * .SUBCKT POT_1K 1 2 3 7 8 E_RA 1 4 VALUE = { V(7,8) * 1K * I(VSENSE1) } VSENSE1 4 5 DC 0V RS 5 2 1 E_RB 5 6 VALUE = { (1-V(7,8)) * 1K * I(VSENSE2) } VSENSE2 6 3 DC 0V .ENDS oregano-0.84.41/data/models/BCW65A.model0000644000175000017500000000050313413640652016441 0ustar rubenruben.model BCW65A NPN(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=242.4 ISE=44.98f + NE=1.302 IKF=1.006 Nk=.7057 Xtb=1.5 Br=5.128 Isc=6.206p + Nc=1.474 Ikr=6.858 Rc=.4184 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=71.14p Mje=.3333 Vje=.5 Tr=10n Tf=707.7p Itf=5.249 + Xtf=23.37 Vtf=10) * MFG=SIEMENS pid=bcw65a case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BF623.model0000644000175000017500000000070013413640652016273 0ustar rubenruben.model BF623 PNP(IS=5.35E-16 ISE=9.81E-17 ISC=1.00E-13 XTI=3.00 + BF=1.40E2 BR=1.00E-2 IKF=2.41E-2 IKR=1.00 XTB=1.5 + VAF=1.49E2 VAR=9.18E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.85E-2 RC=2.22 RB=1.99E1 RBM=2.41E-2 IRB=1.10E-2 + CJE=4.20E-11 CJC=1.65E-11 XCJC=1.00 FC=5.00E-1 + NF=8.73E-1 NR=9.84E-1 NE=1.03 NC=2.00 MJE=4.13E-1 MJC=7.00E-1 + TF=1.11E-9 TR=0 PTF=0 ITF=3.00 VTF=9.99E5 XTF=5.76E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BFG196.model0000644000175000017500000000067513413640652016422 0ustar rubenruben.model BFG196 NPN(IS=1.7264E-15 ISE=1.1922E-13 ISC=4.8666E-15 XTI=3 + BF=125 BR=10.584 IKF=0.4294 IKR=0.019511 XTB=1.5 + VAF=20 VAR=3.8128 VJE=0.7308 VJC=0.73057 + RE=0.75103 RC=0.27137 RB=1.2907 RBM=1 IRB=8.4011E-5 + CJE=1.3325E-14 CJC=1.667E-12 XCJC=0.29998 FC=0.50922 + NF=0.80012 NR=0.94288 NE=1.1766 NC=0.88299 MJE=0.33018 MJC=0.3289 + TF=2.3994E-11 TR=2.2413E-9 PTF=0 ITF=0.0019775 VTF=0.1 XTF=0.44322 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/FE1G.model0000644000175000017500000000020513413640652016233 0ustar rubenruben.model FE1G D (IS=2.51N RS=28.2M N=1.42 BV=350 IBV=1.5U + CJO=42.4P VJ=.75 M=.333 TT=21.6N) * Diotec 350 Volt 1 Amp 15M us Si Diode oregano-0.84.41/data/models/TIP101.model0000644000175000017500000000075313413640652016437 0ustar rubenruben.SUBCKT TIP101 1 2 3 * TERMINALS: C B E * 80 Volt 8 Amp NPN Darlington Transistor 08-03-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 1.8K R2 4 3 70 D1 3 1 DSUB .MODEL QPWR NPN (IS=9.6P NF=1 BF=447 VAF=161 IKF=5.44 ISE=161P NE=2 + BR=4 NR=1 VAR=20 IKR=8.16 RE=.112 RB=.45 RC=45M XTB=1.5 + CJE=1.07N VJE=.74 MJE=.45 CJC=155P VJC=1.1 MJC=.24 TF=62.6N TR=3.06U) .MODEL DSUB D (IS=9.6P N=1 RS=.112 BV=80 IBV=.001 CJO=155P TT=3.06U) .ENDS * TIP101, TEXAS INSTRUMENTS POWER PRODUCTS DATA BOOK, 1985 oregano-0.84.41/data/models/BD244A.model0000644000175000017500000000065713413640652016404 0ustar rubenruben.model BD244A PNP(IS=1.09078E-12 ISE=2.51189E-12 ISC=9.14539E-13 XTI=3 + BF=240.3 BR=20.265 IKF=1.1124198 IKR=0.524807 XTB=1.3913 + VAF=153.184 VAR=36.6808 VJE=0.5862666 VJC=0.4538756 + RE=1.0135 RC=1.0135 RB=49.2185 RBM=0.727994 IRB=5.84552E-5 + CJE=4.484304E-10 CJC=2.066303E-10 XCJC=0.6935 FC=0.5 + NF=1.00172 NR=0.9935 NE=1.5 NC=1.21111 MJE=0.3243386 MJC=0.3323408 + EG=1.2342 KF=1E-9 AF=1 + VCEO=60 ICRATING=3 MFG=FAIRCHILD) oregano-0.84.41/data/models/TIP106.model0000644000175000017500000000075413413640652016445 0ustar rubenruben.SUBCKT TIP106 1 2 3 * TERMINALS: C B E * 80 Volt 8 Amp PNP Darlington Transistor 08-03-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 1.8K R2 4 3 70 D1 1 3 DSUB .MODEL QPWR PNP (IS=9.6P NF=1 BF=93.5 VAF=161 IKF=6.24 ISE=828P NE=2 + BR=4 NR=1 VAR=20 IKR=9.36 RE=.112 RB=.45 RC=45M XTB=1.5 + CJE=1.65N VJE=.74 MJE=.45 CJC=238P VJC=1.1 MJC=.24 TF=53.7N TR=1.53U) .MODEL DSUB D (IS=9.6P N=1 RS=.112 BV=80 IBV=.001 CJO=238P TT=1.53U) .ENDS * TIP106, TEXAS INSTRUMENTS POWER PRODUCTS DATA BOOK, 1985 oregano-0.84.41/data/models/DB3504.model0000644000175000017500000000037613413640652016363 0ustar rubenruben.SUBCKT DB3504 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B3504 D2 4 1 B3504 D3 5 1 B3504 D4 2 4 B3504 D5 2 3 B3504 D6 2 5 B3504 .model B3504 D (IS=300N RS=1.67M N=1.93 BV=400 IBV=5U + CJO=1.44N VJ=.75 M=.333 TT=4.32U) * Diotec 400 Volt 35 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/DB1510.model0000644000175000017500000000037613413640652016356 0ustar rubenruben.SUBCKT DB1510 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B1510 D2 4 1 B1510 D3 5 1 B1510 D4 2 4 B1510 D5 2 3 B1510 D6 2 5 B1510 .model B1510 D (IS=45.3N RS=1.92M N=2.34 BV=1K IBV=7U + CJO=618P VJ=.75 M=.333 TT=4.32U) * Diotec 1000 Volt 15 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/HP275X.model0000644000175000017500000000016613413640652016454 0ustar rubenruben.model HP275X D (IS=1.2N RS=35 N=1.08 BV=5 IBV=10U + CJO=.1P VJ=.6 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/BSX59.model0000644000175000017500000000050313413640652016364 0ustar rubenruben.model BSX59 NPN(IS=2.148p XTI=3 EG=1.11 VAF=100 BF=5.51MEG ISE=14.31p + NE=1.341 IKF=1.467 Nk=.8282 Xtb=1.75 Br=2.722 Isc=4.352u + Nc=2.902 Ikr=11.54 Rc=.4745 Cjc=19.04p Mjc=.2126 Vjc=.5 Fc=.5 + Cje=45.81p Mje=.3426 Vje=.5 Tr=10n Tf=300.6p Itf=3.73 Xtf=40.95 + Vtf=10) * MFG=PHILIPS pid=bsx59 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/SFH420.model0000644000175000017500000000020113413640652016413 0ustar rubenruben.MODEL SFH420 D (IS=1.45N RS=.747 N=2.85 BV=5 IBV=10N + CJO=25P VJ=.75 M=.333 TT=720N) * Siemens 5 Volt .1 Amp .5 us GaAs Diode oregano-0.84.41/data/models/BSX60.model0000644000175000017500000000050313413640652016354 0ustar rubenruben.model BSX60 NPN(IS=991.3f XTI=3 EG=1.11 VAF=100 BF=45.02MEG ISE=5.844p + NE=1.342 IKF=1.513 Nk=.8609 Xtb=1.35 Br=11.94 Isc=294n Nc=2.206 + Ikr=69.6m Rc=.4327 Cjc=19.04p Mjc=.2126 Vjc=.5 Fc=.5 Cje=45.81p + Mje=.3426 Vje=.5147 Tr=10n Tf=300.3p Itf=3.307 Xtf=32.58 Vtf=10 * MFG=PHILIPS pid=bsx60 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/FE1D.model0000644000175000017500000000020313413640652016226 0ustar rubenruben.model FE1D D (IS=2.51N RS=28.2M N=1.42 BV=200 IBV=1U + CJO=42.4P VJ=.75 M=.333 TT=21.6N) * Diotec 200 Volt 1 Amp 15M us Si Diode oregano-0.84.41/data/models/BC558A.model0000644000175000017500000000050113413640652016377 0ustar rubenruben.model BC558A PNP(IS=1.02f XTI=3 EG=1.11 VAF=73.79 BF=174.7 ISE=10.73f + NE=1.644 IKF=.1023 Nk=.5033 Xtb=1.5 Br=4.432 Isc=14.74f + Nc=1.296 Ikr=2.237 Rc=1.039 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 + Cje=30p Mje=.3333 Vje=.5 Tr=10n Tf=830.3p Itf=.8981 Xtf=10.32 + Vtf=10) * MFG=PHILIPS pid=bc558a case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/TL064.model0000644000175000017500000000213413413640652016325 0ustar rubenruben* TL064 OPERATIONAL AMPLIFIER "MACROMODEL" SUBCIRCUIT * CREATED USING PARTS RELEASE 4.01 ON 06/28/89 AT 10:42 * (REV N/A) SUPPLY VOLTAGE: +/-15V * CONNECTIONS: NON-INVERTING INPUT * | INVERTING INPUT * | | POSITIVE POWER SUPPLY * | | | NEGATIVE POWER SUPPLY * | | | | OUTPUT * | | | | | .SUBCKT TL064 1 2 3 4 5 * C1 11 12 3.498E-12 C2 6 7 15.00E-12 DC 5 53 DX DE 54 5 DX DLP 90 91 DX DLN 92 90 DX DP 4 3 DX EGND 99 0 POLY(2) (3,0) (4,0) 0 .5 .5 FB 7 99 POLY(5) VB VC VE VLP VLN 0 318.3E3 -300E3 300E3 300E3 -300E3 GA 6 0 11 12 94.26E-6 GCM 0 6 10 99 1.607E-9 ISS 3 10 DC 52.50E-6 HLIM 90 0 VLIM 1K J1 11 2 10 JX J2 12 1 10 JX R2 6 9 100.0E3 RD1 4 11 10.61E3 RD2 4 12 10.61E3 RO1 8 5 200 RO2 7 99 200 RP 3 4 150.0E3 RSS 10 99 3.810E6 VB 9 0 DC 0 VC 3 53 DC 2.200 VE 54 4 DC 2.200 VLIM 7 8 DC 0 VLP 91 0 DC 15 VLN 0 92 DC 15 .MODEL DX D(IS=800.0E-18) .MODEL JX PJF(IS=15.00E-12 BETA=100.5E-6 VTO=-1) .ENDS oregano-0.84.41/data/models/IRF449.model0000644000175000017500000000042513413640652016436 0ustar rubenruben.model IRF449 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.067m Kp=20.7u W=.76 L=2u Vto=3.748 + Rd=.5784 Rds=2.222MEG Cbd=1.91n Pb=.8 Mj=.5 Fc=.5 Cgso=1.984n + Cgdo=165.4p Rg=.409 Is=367p N=1 Tt=750n) * IR pid=IRF449 case=TO3 oregano-0.84.41/data/models/BDW94A.model0000644000175000017500000000070313413640652016446 0ustar rubenruben.SUBCKT BDW94A 1 2 3 * TERMINALS: C B E * SGS-Thompson 60 Volt 12 Amp PNP Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 1 3 DSUB .MODEL QPWR PNP (IS=14.4P NF=1 BF=102 VAF=139 IKF=4.8 ISE=808P NE=2 + BR=4 NR=1 VAR=24 IKR=7.2 RE=53.3M RB=.213 RC=21.3M XTB=1.5 + CJE=1.14N VJE=.74 MJE=.45 CJC=165P VJC=1.1 MJC=.24 TF=71.6N TR=2.72U) .MODEL DSUB D (IS=14.4P N=1 RS=53.3M BV=60 IBV=.001 CJO=165P TT=2.72U) .ENDS oregano-0.84.41/data/models/BDW93C.model0000644000175000017500000000070013413640652016444 0ustar rubenruben.SUBCKT BDW93C 1 2 3 * TERMINALS: C B E * SGS-Thompson 100 Volt 12 Amp NPN Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 3 1 DSUB .MODEL QPWR NPN (IS=14.4P NF=1 BF=119 VAF=180 IKF=4 ISE=636P NE=2 + BR=4 NR=1 VAR=24 IKR=6 RE=46.6M RB=.186 RC=18.6M XTB=1.5 + CJE=700P VJE=.74 MJE=.45 CJC=101P VJC=1.1 MJC=.24 TF=71.6N TR=3.74U) .MODEL DSUB D (IS=14.4P N=1 RS=46.6M BV=100 IBV=.001 CJO=101P TT=3.74U) .ENDS oregano-0.84.41/data/models/LD271.model0000644000175000017500000000020113413640652016276 0ustar rubenruben.MODEL LD271 D (IS=16.3P RS=.755 N=2.01 BV=5 IBV=10N + CJO=40P VJ=.75 M=.333 TT=1.44U) * Siemens 5 Volt .13 Amp 1 us GaAs Diode oregano-0.84.41/data/models/GI752.model0000644000175000017500000000025613413640652016314 0ustar rubenruben.model GI752 D (IS=3.62E-08 N=1.67 BV=2.66E+02 IBV=2.50E-05 + RS=1.84E-03 CJO=9.28E-10 VJ=.29 M=.55 TT=6.91E-06) * General Instrument 200 Volt 6.00 Amp 5.50 us Si Rectifier oregano-0.84.41/data/models/BFS482.model0000644000175000017500000000071413413640652016426 0ustar rubenruben.model BFS482 NPN(IS=4.8499E-15 ISE=8.4254E-15 ISC=5.9438E-15 XTI=3 + BF=84.113 NR=0.54818 IKF=0.14414 IKR=0.039478 XTB=1.5 + VAF=21.742 VAR=2.2595 VJE=1.0378 VJC=1.0132 + RE=2.1858 RC=1.8159 RB=3.4217 RBM=2.8263 IRB=7.1955E-5 + CJE=8.8619E-15 CJC=4.9025E-13 XCJC=0.19281 FC=0.64175 + NF=0.56639 BR=10.004 NE=0.91624 NC=0.5641 MJE=0.40796 MJC=0.31068 + TF=2.272E-11 TR=1.7541E-9 PTF=0 ITF=0.0065523 VTF=0.34608 XTF=0.43147 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/IRF9231.model0000644000175000017500000000043613413640652016516 0ustar rubenruben.model IRF9231 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=31.21m Kp=10.39u W=.47 L=2u + Vto=-3.323 Rd=.4053 Rds=666.7K Cbd=820.8p Pb=.8 Mj=.5 Fc=.5 + Cgso=6.367n Cgdo=242.4p Rg=1.33 Is=168.5E-18 N=3 Tt=555n) * IR pid=IRF9231 case=TO3 oregano-0.84.41/data/models/BFQ196.model0000644000175000017500000000054513413640652016430 0ustar rubenruben.model BFQ196 NPN(IS=1.5E-15 ISE=5.3E-15 ISC=1E-17 XTI=3 + BF=141 BR=1 IKF=0.067 IKR=0.5 XTB=1.5 + VAF=120 VAR=365 VJE=0.85 VJC=0.75 + RE=0.11 RC=2.2 RB=20 RBM=1.8 IRB=0.25 + CJE=3E-12 CJC=1E-13 XCJC=0.9 FC=0.5 + NF=0.95 NR=1 NE=2.17 NC=2 MJE=0.33 MJC=0.33 + TF=0 TR=0 PTF=0 ITF=0 VTF=1E30 XTF=0 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BAL74.model0000644000175000017500000000021613413640652016324 0ustar rubenruben.MODEL BAL74 D IS=4.739E-9 N=1.849 RS=.4418 XTI=3 + EG=1.11 BV=99.08 IBV=25.88E-3 TT=2.02E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/LD242.model0000644000175000017500000000020013413640652016273 0ustar rubenruben.MODEL LD242 D (IS=1.59N RS=.522 N=2.68 BV=5 IBV=10N + CJO=40P VJ=.75 M=.333 TT=1.44U) * Siemens 5 Volt .3 Amp 1 us GaAs Diode oregano-0.84.41/data/models/HP3486.model0000644000175000017500000000020513413640652016405 0ustar rubenruben.model HP3486 D (IS=5U RS=50 N=1.08 BV=2.5 IBV=35U + CJO=.2P VJ=.35 M=.5 EG=.69 TT=72P) * H-P HSCH-3486 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/HP6532.model0000644000175000017500000000016413413640652016404 0ustar rubenruben.model HP6532 D (IS=40N RS=6 N=1.08 BV=5 IBV=10U + CJO=.2P VJ=.5 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/BFN22.model0000644000175000017500000000067413413640652016334 0ustar rubenruben.model BFN22 NPN(IS=6.46E-16 ISE=2.80E-17 ISC=2.89E-14 XTI=3.00 + BF=1.23E2 BR=5.61 IKF=4.09E-2 IKR=1.00 XTB=1.5 + VAF=4.15E2 VAR=4.30E2 VJE=3.00E-1 VJC=3.00E-1 + RE=4.41E-1 RC=4.08E-1 RB=4.64E1 RBM=2.17E1 IRB=2.42E-2 + CJE=4.19E-11 CJC=5.49E-12 XCJC=1.00 FC=5.00E-1 + NF=9.11E-1 NR=1.86 NE=1.00 NC=1.03 MJE=3.90E-1 MJC=5.21E-1 + TF=1.13E-9 TR=0 PTF=0 ITF=2.65 VTF=8.76E5 XTF=6.01E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BD331.model0000644000175000017500000000070113413640652016266 0ustar rubenruben.SUBCKT BD331 1 2 3 * TERMINALS: C B E * SGS-Thompson 60 Volt 6 Amp NPN Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 13.3K R2 4 3 66.7 D1 3 1 DSUB .MODEL QPWR NPN (IS=7.2P NF=1 BF=138 VAF=139 IKF=5.2 ISE=443P NE=2 + BR=4 NR=1 VAR=20 IKR=7.8 RE=91.7M RB=.366 RC=36.6M XTB=1.5 + CJE=809P VJE=.74 MJE=.45 CJC=116P VJC=1.1 MJC=.24 TF=98.4N TR=1.53U) .MODEL DSUB D (IS=7.2P N=1 RS=91.7M BV=60 IBV=.001 CJO=116P TT=1.53U) .ENDS oregano-0.84.41/data/models/NPN.model0000644000175000017500000000003713413640652016207 0ustar rubenruben.model NPN NPN(Is=1.0e-16) oregano-0.84.41/data/models/BCX56Z.model0000644000175000017500000000053713413640652016502 0ustar rubenruben.model BCX56Z NPN(IS=6E-14 ISE=1E-14 ISC=1.2E-13 XTI=3 + BF=250 BR=30 IKF=0.9 IKR=0.5 XTB=1.5 + VAF=270 VAR=27 VJE=0.7 VJC=0.51 + RE=0.08 RC=0.08 RB=0.2 + CJE=108E-12 CJC=15.9E-12 XCJC=0.75 FC=0.5 + NF=0.99 NR=0.98 NE=1.2 NC=1.2 MJE=0.35 MJC=0.4 + TF=0.8E-9 TR=55E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX NK=0.7 GAMMA=5E-9 RCO=5) oregano-0.84.41/data/models/MPSA63.model0000644000175000017500000000057713413640652016476 0ustar rubenruben.SUBCKT MPSA63 1 2 3 * TERMINALS: C B E * 30 Volt .5 Amp PNP Darlington Transistor 08-16-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR .MODEL QPWR PNP (IS=600F NF=1 BF=255 VAF=98.6 IKF=.24 ISE=14.8P NE=2 + BR=4 NR=1 VAR=40 IKR=.36 RE=.8 RB=3.2 RC=.32 XTB=1.5 + CJE=132P VJE=.74 MJE=.45 CJC=6.96P VJC=1.1 MJC=.24 TF=60.3N TR=2.6U) .ENDS * MPSA63, NATIONAL SEMICONDUCTOR DISCRETE SEMICONDUCTOR oregano-0.84.41/data/models/BF545B.model0000644000175000017500000000062013413640652016401 0ustar rubenruben.SUBCKT BF545B/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -2.3085E+000 + BETA = 1.09045E-003 + LAMBDA = 2.31754E-002 + RD = 7.77648E+000 + RS = 7.77648E+000 + IS = 2.59121E-016 + CGS = 2.00000E-012 + CGD = 2.20000E-012 + PB = 9.91494E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/TIP140.model0000644000175000017500000000074413413640652016442 0ustar rubenruben.SUBCKT TIP140 1 2 3 * TERMINALS: C B E * 60 Volt 10 Amp NPN Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 40 D1 3 1 DSUB .MODEL QPWR NPN (IS=12P NF=1 BF=150 VAF=139 IKF=4.64 ISE=494P NE=2 + BR=4 NR=1 VAR=20 IKR=6.96 RE=.115 RB=.46 RC=46M XTB=1.5 + CJE=1.34N VJE=.74 MJE=.45 CJC=193P VJC=1.1 MJC=.24 TF=85.3N TR=3.68U) .MODEL DSUB D (IS=12P N=1 RS=.115 BV=60 IBV=.001 CJO=193P TT=3.68U) .ENDS * TIP140, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/IRF631.model0000644000175000017500000000043013413640652016423 0ustar rubenruben.model IRF631 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1131 Kp=20.8u W=.98 L=2u Vto=3.513 + Rd=.1202 Rds=666.7K Cbd=989.8p Pb=.8 Mj=.5 Fc=.5 Cgso=2.012n + Cgdo=79.89p Rg=3.621 Is=55.22p N=1 Tt=515n) * IR pid=IRF631 case=TO220 oregano-0.84.41/data/models/2N4126.model0000644000175000017500000000070113413640652016346 0ustar rubenruben.model 2N4126 PNP(IS=3.18E-13 ISE=1.20E-13 ISC=1.29E-13 XTI=3.00 + BF=2.52E2 BR=5.00E1 IKF=2.93E-2 IKR=1.00 XTB=1.5 + VAF=3.49E1 VAR=1.86E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.00E-2 RC=1.44 RB=4.06E1 RBM=4.87 IRB=9.90E-3 + CJE=1.01E-11 CJC=7.17E-12 XCJC=1.00 FC=5.00E-1 + NF=1.17 NR=1.13 NE=1.75 NC=1.29 MJE=3.91E-1 MJC=4.05E-1 + TF=179.3E-12 TR=33.23E-9 PTF=0 ITF=3.22E-3 VTF=9.99E5 XTF=2.73 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=200M MFG=SIEMENS) oregano-0.84.41/data/models/BC850B.model0000644000175000017500000000047613413640652016406 0ustar rubenruben.model BC850B NPN(IS=7.049f XTI=3 EG=1.11 VAF=62.37 BF=279.1 ISE=59.16f + NE=1.81 IKF=.2201 Nk=.6305 Xtb=1.5 Br=3.816 Isc=16.17f Nc=2.394 + Ikr=1.859 Rc=1.508 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 Cje=9.485p + Mje=.3333 Vje=.5 Tr=10n Tf=664p Itf=4.664 Xtf=147 Vtf=10) * MFG=SIEMENS pid=bc850b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/DB3508.model0000644000175000017500000000037613413640652016367 0ustar rubenruben.SUBCKT DB3508 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B3508 D2 4 1 B3508 D3 5 1 B3508 D4 2 4 B3508 D5 2 3 B3508 D6 2 5 B3508 .model B3508 D (IS=300N RS=1.67M N=1.93 BV=800 IBV=7U + CJO=1.44N VJ=.75 M=.333 TT=4.32U) * Diotec 800 Volt 35 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BFT45.model0000644000175000017500000000046713413640652016347 0ustar rubenruben.model BFT45 PNP(IS=7.34n XTI=3 EG=1.11 VAF=100 BF=131.8 ISE=7.34n NE=1.593 + IKF=.862 Nk=.7194 Xtb=1.5 Br=1 Isc=2.155u Nc=2.236 Ikr=4.712 + Rc=3.255 Cjc=44.37p Mjc=.3333 Vjc=.5 Fc=.5 Cje=133.1p Mje=.3333 + Vje=.5 Tr=10n Tf=1.576n Itf=9.045 Xtf=221.6 Vtf=10) * MFG=PHILIPS pid=bft44 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/2N6659.model0000644000175000017500000000037113413640652016366 0ustar rubenruben.model 2N6659 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=2u Uo=600 Phi=.6 Kp=1.047u W=.32 L=2u Rs=20m Vto=1.8 + Rd=.4672 Rds=3.5MEG Cgso=1.885p Cgdo=7.564p Cbd=118p Mj=.5 + Pb=.8 Fc=.5 Rg=209.5 Is=10f N=1 Rb=1m) oregano-0.84.41/data/models/BCY59-9.model0000644000175000017500000000050013413640652016510 0ustar rubenruben.model BCY59-9 NPN(IS=64.04f XTI=3 EG=1.11 VAF=62.37 BF=473.2 ISE=549.7f + NE=1.721 IKF=.1237 Nk=.6057 Xtb=1.5 Br=1 Isc=22.53n Nc=3.624 + Ikr=10.72 Rc=1.261 Cjc=11.15p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p + Mje=.3333 Vje=.5 Tr=622.7n Tf=423.4p Itf=3.503 Xtf=107 Vtf=10) * MFG=PHILIPS pid=bcy59-9 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/TIP125.model0000644000175000017500000000074713413640652016450 0ustar rubenruben.SUBCKT TIP125 1 2 3 * TERMINALS: C B E * 60 Volt 5 Amp PNP Darlington Transistor 08-03-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 1 3 DSUB .MODEL QPWR PNP (IS=6P NF=1 BF=111 VAF=139 IKF=2.24 ISE=330P NE=2 + BR=4 NR=1 VAR=20 IKR=3.36 RE=.33 RB=1.32 RC=.132 XTB=1.5 + CJE=1.03N VJE=.74 MJE=.45 CJC=149P VJC=1.1 MJC=.24 TF=85.3N TR=3.68U) .MODEL DSUB D (IS=6P N=1 RS=.33 BV=60 IBV=.001 CJO=149P TT=3.68U) .ENDS * TIP125, TEXAS INSTRUMENTS POWER PRODUCTS DATA BOOK, 1985 oregano-0.84.41/data/models/2N5138.model0000644000175000017500000000053413413640652016356 0ustar rubenruben.model 2N5138 PNP(IS=1.41E-15 ISE=0 ISC=0 XTI=3 + BF=274.6 BR=4.82 IKF=80E-3 IKR=0 XTB=1.5 + VAF=18.7 VAR=6.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=2.5 RB=10 + CJE=8.063E-12 CJC=9.728E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.5 NC=2 MJE=0.3677 MJC=0.5776 + TF=179.3E-12 TR=32.86E-9 ITF=0.4 VTF=4 XTF=6 + EG=1.11 KF=1E-9 AF=1 + VCEO=30 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/IRF622.model0000644000175000017500000000043013413640652016423 0ustar rubenruben.model IRF622 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.114 Kp=20.39u W=.23 L=2u Vto=3.083 + Rd=.5239 Rds=888.9K Cbd=650.2p Pb=.8 Mj=.5 Fc=.5 Cgso=3.996n + Cgdo=168.7p Rg=7.473 Is=1.801n N=1 Tt=610n) * IR pid=IRF622 case=TO220 oregano-0.84.41/data/models/BC107B.model0000644000175000017500000000047513413640652016400 0ustar rubenruben.model BC107B NPN(IS=7.049f XTI=3 EG=1.11 VAF=59.59 BF=381.7 ISE=59.74f + NE=1.522 IKF=3.289 Nk=.5 Xtb=1.5 Br=2.359 Isc=192.9p Nc=1.954 + Ikr=7.807 Rc=1.427 Cjc=5.38p Mjc=.329 Vjc=.6218 Fc=.5 Cje=11.5p + Mje=.2718 Vje=.5 Tr=10n Tf=438p Itf=5.716 Xtf=14.51 Vtf=10) * MFG=PHILIPS pid=bc107b case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BFQ81.model0000644000175000017500000000070213413640652016334 0ustar rubenruben.model BFQ81 NPN(IS=1.703E-14 ISE=5.8728E-15 ISC=1.6977E-13 XTI=3 + BF=110 BR=25.974 IKF=0.22241 IKR=0.011566 XTB=1.5 + VAF=35 VAR=2.3785 VJE=0.4318 VJC=0.26339 + RE=1.1731 RC=0.3715 RB=5.7058 RBM=1.5489 IRB=0.00011894 + CJE=3.3977E-14 CJC=6.9381E-13 XCJC=0.1254 FC=0.74346 + NF=0.80846 NR=0.36321 NE=1.0668 NC=1.2237 MJE=1.7707 MJC=0.24448 + TF=2.1842E-11 TR=1.2554E-9 PTF=0 ITF=0.014701 VTF=0.48042 XTF=0.26781 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BST40.model0000644000175000017500000000053113413640652016347 0ustar rubenruben.model BST40 NPN(IS=5E-14 ISE=9E-15 ISC=5E-12 XTI=3 + BF=230 BR=5 IKF=250E-3 IKR=0 XTB=1.5 + VAF=610 VAR=45 VJE=0.65 VJC=0.3905 + RE=0.07 RC=0.07 RB=7 + CJE=68.6E-12 CJC=9.26E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.28 NC=1.3 MJE=0.241 MJC=0.241 + TF=1.1E-9 TR=0.9E-6 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX GAMMA=3.1E-7 RCO=75) oregano-0.84.41/data/models/CA3096N.model0000644000175000017500000000033213413640652016475 0ustar rubenruben.model CA3096N NPN(IS=10f BF=466.52 VAF=100 IKF=14.03m ISE=74.093f NE=1.6606 + BR=100.1m VAR=100 IKR=10.01m ISC=10f NK=468.98m RC=10 CJE=1.2825p MJE=333.33m + CJC=786.59f MJC=333.33m TF=490.39p XTF=5.3212 VTF=28.396) oregano-0.84.41/data/models/2N2484.model0000644000175000017500000000055613413640652016363 0ustar rubenruben.model 2N2484 NPN(IS=5.911E-15 ISE=5.911E-15 ISC=0 XTI=3 + BF=697.1 BR=1.297 IKF=13.93E-3 IKR=0 XTB=1.5 + VAF=62.37 VAR=21.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.61 RB=10 + CJE=4.973E-12 CJC=4.017E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.342 NC=2 MJE=0.4146 MJC=0.3174 + TF=820.4E-12 TR=4.687E-9 ITF=0.35 VTF=4 XTF=7 + EG=1.11 KF=1E-9 AF=1 + VCEO=60 ICRATING=50M MFG=NSC) oregano-0.84.41/data/models/BY252.model0000644000175000017500000000017613413640652016323 0ustar rubenruben.model BY252 D (IS=22U RS=42M N=3.35 BV=400 IBV=20U + CJO=124P VJ=.75 M=.333 TT=4.32U) * Diotec 400 Volt 3 Amp 3 us Si Diode oregano-0.84.41/data/models/BCX51.model0000644000175000017500000000067313413640652016344 0ustar rubenruben.model BCX51 PNP(IS=4.60E-12 ISE=1.99E-14 ISC=9.45E-17 XTI=3.00 + BF=1.85E2 BR=4.28 IKF=9.69E-1 IKR=1.00 XTB=1.5 + VAF=1.44E2 VAR=1.97E1 VJE=5.43E-1 VJC=3.62E-1 + RE=1.00E-2 RC=2.62E-1 RB=4.84 RBM=1.00E1 IRB=1.62E-1 + CJE=1.27E-10 CJC=8.00E-11 XCJC=1.00 FC=5.00E-1 + NF=1.19 NR=1.23 NE=1.23 NC=2.00 MJE=4.94E-1 MJC=5.07E-1 + TF=1.07E-9 TR=0 PTF=0 ITF=4.53E-1 VTF=9.99E5 XTF=6.31E-1 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/2N6792.model0000644000175000017500000000043213413640652016362 0ustar rubenruben.model 2N6792 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1219 Kp=20.9u W=.23 L=2u Vto=3.025 + Rd=1.317 Rds=1.778MEG Cbd=432.8p Pb=.8 Mj=.5 Fc=.5 Cgso=1.705n + Cgdo=149.2p Rg=1.136 Is=590.5f N=1 Tt=1720n) * IR pid=2N6792 case=TO39 oregano-0.84.41/data/models/IRF741.model0000644000175000017500000000043213413640652016427 0ustar rubenruben.model IRF741 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=8.563m Kp=20.59u W=.78 L=2u Vto=3.657 + Rd=.3915 Rds=1.556MEG Cbd=1.419n Pb=.8 Mj=.5 Fc=.5 Cgso=1.371n + Cgdo=168p Rg=.2796 Is=17.65p N=1 Tt=570n) * IR pid=IRF741 case=TO220 oregano-0.84.41/data/models/BC337-16.model0000644000175000017500000000064313413640652016524 0ustar rubenruben.model BC337-16 NPN(IS=4.887E-14 ISE=2.552E-15 ISC=7.006E-14 XTI=3 + BF=207.2 BR=21.85 IKF=0.902 IKR=0.1 XTB=1.5 + VAF=184.8 VAR=20 VJE=0.6596 VJC=0.1419 + RE=0.119 RC=0.25 RB=50 RBM=2 IRB=0.0002 + CJE=4.217E-11 CJC=1.734E-11 XCJC=0.455 FC=0.652 + NF=1.002 NR=1.002 NE=1.65 NC=1.25 MJE=0.3434 MJC=0.3484 + TF=6E-10 TR=3.5E-08 PTF=86 ITF=0.79 VTF=2.4 XTF=2.1 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=200M MFG=PHILIPS) oregano-0.84.41/data/models/BF410D.model0000644000175000017500000000062013413640652016372 0ustar rubenruben.SUBCKT BF410D/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -3.1715E+000 + BETA = 1.22441E-003 + LAMBDA = 1.98434E-002 + RD = 2.61448E+000 + RS = 2.61448E+000 + IS = 3.88189E-014 + CGS = 5.40000E-012 + CGD = 4.08000E-012 + PB = 8.59053E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/KBU4M.model0000644000175000017500000000033613413640652016400 0ustar rubenruben.SUBCKT KBU4M 2 3 5 4 * IN1 IN2 + - D2 2 5 BU4M D3 3 5 BU4M D4 4 3 BU4M D1 4 2 BU4M .model BU4M D (IS=10.7N RS=3M N=1.67 BV=1K IBV=8U + CJO=165P VJ=.75 M=.333 TT=4.32U) * Diotec 1000 Volt 4 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/IRF222.model0000644000175000017500000000042613413640652016424 0ustar rubenruben.model IRF222 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1344 Kp=20.53u W=.26 L=2u Vto=3.077 + Rd=.518 Rds=888.9K Cbd=650.2p Pb=.8 Mj=.5 Fc=.5 Cgso=3.645n + Cgdo=149.1p Rg=8.891 Is=5.574n N=1 Tt=610n) * IR pid=IRF222 case=TO3 oregano-0.84.41/data/models/LEDBLUE.model0000644000175000017500000000021313413640652016624 0ustar rubenruben*Typ BLUE SiC LED: Vf=3.4V Vr=5V If=40mA trr=3uS .MODEL LEDBLUE D (IS=93.1P RS=42M N=7.47 BV=5 IBV=30U + CJO=2.97P VJ=.75 M=.333 TT=4.32U) oregano-0.84.41/data/models/DB15005.model0000644000175000017500000000040413413640652016432 0ustar rubenruben.SUBCKT DB15005 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B15005 D2 4 1 B15005 D3 5 1 B15005 D4 2 4 B15005 D5 2 3 B15005 D6 2 5 B15005 .model B15005 D (IS=45.3N RS=1.92M N=2.34 BV=50 IBV=2U + CJO=618P VJ=.75 M=.333 TT=4.32U) * Diotec 50 Volt 15 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/IRF533.model0000644000175000017500000000043313413640652016427 0ustar rubenruben.model IRF533 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=58.53m Kp=20.73u W=.68 L=2u Vto=3.191 + Rd=78.69m Rds=355.6K Cbd=1.151n Pb=.8 Mj=.5 Fc=.5 Cgso=805.6p + Cgdo=332.5p Rg=2.919 Is=4.033p N=1 Tt=125n) * IR pid=IRF533 case=TO220 oregano-0.84.41/data/models/BFS19.model0000644000175000017500000000064113413640652016341 0ustar rubenruben.model BFS19 NPN(IS=2.9320E-16 ISE=1.814E-15 ISC=3.133E-16 XTI=3 + BF=84.24 BR=2.933 IKF=0.1702 IKR=9.000 XTB=1.5 + VAF=130.5 VAR=4.860 VJE=0.6927 VJC=0.3932 + RE=0.8047 RC=0.9861 RB=1 RBM=1 IRB=1E-06 + CJE=1.922E-12 CJC=1.554E-12 XCJC=0.1200 FC=0.9333 + NF=0.9869 NR=0.9848 NE=1.411 NC=0.9935 MJE=0.3045 MJC=0.1891 + TF=6.298E-10 TR=1.00E-07 PTF=0 ITF=0.4458 VTF=5.391 XTF=113.6 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BCY79-8.model0000644000175000017500000000050013413640652016511 0ustar rubenruben.model BCY79-8 PNP(IS=55.58p XTI=3 EG=1.11 VAF=79.03 BF=272.6 ISE=223.2p + NE=2.939 IKF=77.89m Nk=.5 Xtb=1.5 Br=2.429 Isc=34.94n Nc=2.499 + Ikr=1.387 Rc=2.829 Cjc=16p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p + Mje=.3333 Vje=.5 Tr=272.7n Tf=762.4p Itf=5.969 Xtf=203.6 Vtf=10 * MFG=PHILIPS pid=bcy79-8 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BC807P.model0000644000175000017500000000063013413640652016416 0ustar rubenruben.model BC807P PNP(IS=1.08E-13 ISE=2.713E-14 ISC=5.062E-13 XTI=3 + BF=385.7 BR=20.57 IKF=0.3603 IKR=0.054 XTB=1.5 + VAF=31.29 VAR=11.62 VJE=0.8911 VJC=0.62 + RE=0.1415 RC=0.2623 RB=1 RBM=0.5 IRB=1E-06 + CJE=5.114E-11 CJC=2.656E-11 XCJC=0.459 FC=0.99 + NF=0.99 NR=0.9849 NE=1.4 NC=1.295 MJE=0.4417 MJC=0.4836 + TF=7.359E-10 TR=5.00E-08 PTF=0 ITF=0.4393 VTF=3.813 XTF=1.859 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BC108C.model0000644000175000017500000000047413413640652016401 0ustar rubenruben.model BC108C NPN(IS=7.049f XTI=3 EG=1.11 VAF=28.14 BF=677 ISE=7.049f NE=1.38 + IKF=96.23 Nk=.5 Xtb=1.5 Br=2.209 Isc=250.3p Nc=2.002 Ikr=10.73 + Rc=1.433 Cjc=5.38p Mjc=.329 Vjc=.6218 Fc=.5 Cje=11.5p Mje=.2717 + Vje=.5 Tr=10n Tf=437.8p Itf=3.097 Xtf=12.85 Vtf=10) * MFG=PHILIPS pid=bc108c case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BCY58-9.model0000644000175000017500000000050013413640652016507 0ustar rubenruben.model BCY58-9 NPN(IS=64.04f XTI=3 EG=1.11 VAF=62.37 BF=473.2 ISE=549.7f + NE=1.721 IKF=.1237 Nk=.6057 Xtb=1.5 Br=1 Isc=22.53n Nc=3.624 + Ikr=10.72 Rc=1.261 Cjc=11.15p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p + Mje=.3333 Vje=.5 Tr=622.7n Tf=423.4p Itf=3.503 Xtf=107 Vtf=10) * MFG=PHILIPS pid=bcy58-9 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BSS139.model0000644000175000017500000000036313413640652016442 0ustar rubenruben.model BSS139 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=2u Uo=600 Phi=.6 Kp=1.076u W=.12 L=2u Rs=1 Vto=-1.66 Rd=80 + Rds=2.273K Cgso=4p Cgdo=1p Cbd=14.47p Mj=.3502 Pb=2.061 Fc=.5 + Rg=0 Is=10f N=1 Rb=1m) oregano-0.84.41/data/models/BC264A.model0000644000175000017500000000055613413640652016403 0ustar rubenruben.MODEL BC264A NJF ( + VTO = -1.0686E+000 + BETA = 1.73071E-003 + LAMBDA = 2.29157E-002 + RD = 9.05115E+000 + RS = 9.05115E+000 + IS = 1.70538E-016 + CGS = 2.20000E-012 + CGD = 2.20000E-012 + PB = 9.78591E-001 + FC = 5.00000E-001) * 11-02-18 hjr oregano-0.84.41/data/models/IRF151.model0000644000175000017500000000043113413640652016421 0ustar rubenruben.model IRF151 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.624m Kp=20.53u W=.3 L=2u Vto=2.831 + Rd=1.031m Rds=266.7K Cbd=3.229n Pb=.8 Mj=.5 Fc=.5 Cgso=8.543n + Cgdo=2.163n Rg=12.34 Is=194E-18 N=1 Tt=288n) * IR pid=IRF151 case=TO3 oregano-0.84.41/data/models/BC818-16.model0000644000175000017500000000047713413640652016535 0ustar rubenruben.model BC818-16 NPN(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=190.4 ISE=299f NE=1.583 + IKF=.7695 Nk=.5467 Xtb=1.5 Br=6.313 Isc=138f Nc=2.053 Ikr=.187 + Rc=.4216 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p Mje=.3333 + Vje=.5 Tr=10n Tf=660.1p Itf=2.204 Xtf=66.65 Vtf=10) * MFG=SIEMENS pid=bc818-16 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF723.model0000644000175000017500000000043113413640652016426 0ustar rubenruben.model IRF723 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=41.38m Kp=20.58u W=.23 L=2u Vto=3.78 + Rd=1.689 Rds=1.556MEG Cbd=415.4p Pb=.8 Mj=.5 Fc=.5 Cgso=1.655n + Cgdo=171p Rg=62.8m Is=385.6p N=1 Tt=535n) * IR pid=IRF723 case=TO220 oregano-0.84.41/data/models/TIS97.model0000644000175000017500000000054613413640652016400 0ustar rubenruben.model TIS97 NPN(IS=12.03E-15 ISE=1.439E-12 ISC=0 XTI=3 + BF=877.7 BR=4.379 IKF=0.1072 IKR=0 XTB=1.5 + VAF=37.37 VAR=12.5 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=8.307E-12 CJC=3.123E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.971 NC=2 MJE=0.384 MJC=0.3199 + TF=390E-12 TR=679.5E-12 ITF=0.17 VTF=3 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/SFH405.model0000644000175000017500000000020113413640652016416 0ustar rubenruben.MODEL SFH405 D (IS=199N RS=.389 N=3.85 BV=5 IBV=10N + CJO=40P VJ=.75 M=.333 TT=1.44U) * Siemens 5 Volt 40M Amp 1 us GaAs Diode oregano-0.84.41/data/models/IRF453.model0000644000175000017500000000042613413640652016432 0ustar rubenruben.model IRF453 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.456m Kp=20.2u W=1.1 L=2u Vto=3.635 + Rd=.3843 Rds=2MEG Cbd=2.693n Pb=.8 Mj=.5 Fc=.5 Cgso=1.812n + Cgdo=192.2p Rg=71.55m Is=95.36p N=1 Tt=765n) * IR pid=IRF453 case=TO3 oregano-0.84.41/data/models/BC337-40.model0000644000175000017500000000063413413640652016521 0ustar rubenruben.model BC337-40 NPN(IS=7.809E-14 ISE=2.069E-15 ISC=6.66E-14 XTI=3 + BF=436.8 BR=44.14 IKF=0.8 IKR=0.09 XTB=1.5 + VAF=103.6 VAR=14 VJE=0.6657 VJC=0.3647 + RE=0.12 RC=0.24 RB=70 RBM=8 IRB=0.0002 + CJE=3.579E-11 CJC=1.306E-11 XCJC=0.455 FC=0.843 + NF=0.9916 NR=0.991 NE=1.4 NC=1.2 MJE=0.3596 MJC=0.3658 + TF=5E-10 TR=2.5E-08 PTF=88 ITF=0.5 VTF=2 XTF=2.5 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=200M MFG=PHILIPS) oregano-0.84.41/data/models/BD135P.model0000644000175000017500000000064513413640652016417 0ustar rubenruben.model BD135P NPN(IS=4.815E-14 ISE=1.389E-14 ISC=1.295E-13 XTI=3 + BF=124.2 BR=13.26 IKF=1.6 IKR=0.29 XTB=1.5 + VAF=222 VAR=81.4 VJE=0.7313 VJC=0.5642 + RE=0.165 RC=0.096 RB=0.5 RBM=0.5 IRB=1E-06 + CJE=1.243E-10 CJC=3.04E-11 XCJC=0.15 FC=0.9359 + NF=0.9897 NR=0.9895 NE=1.6 NC=1.183 MJE=0.3476 MJC=0.4371 + TF=6.478E-10 TR=1E-32 PTF=0 ITF=3.35 VTF=2.648 XTF=29 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=1.5 MFG=PHILIPS) oregano-0.84.41/data/models/2N3415.model0000644000175000017500000000055113413640652016351 0ustar rubenruben.model 2N3415 NPN(IS=12.03E-15 ISE=3.346E-12 ISC=0 XTI=3 + BF=377.5 BR=4.379 IKF=0.1072 IKR=0 XTB=1.5 + VAF=37.37 VAR=12.5 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=8.307E-12 CJC=5.777E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.971 NC=2 MJE=0.384 MJC=0.3199 + TF=385.4E-12 TR=707.6E-12 ITF=0.17 VTF=3 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=500M MFG=NSC) oregano-0.84.41/data/models/IRF342.model0000644000175000017500000000042513413640652016426 0ustar rubenruben.model IRF342 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.186m Kp=20.79u W=.68 L=2u Vto=3.503 + Rd=.35 Rds=1.778MEG Cbd=820p Pb=.8 Mj=.5 Fc=.5 Cgso=1.608n + Cgdo=168.2p Rg=.7553 Is=53.7p N=1 Tt=570n) * IR pid=IRF342 case=TO3 oregano-0.84.41/data/models/BC550C.model0000644000175000017500000000050313413640652016373 0ustar rubenruben.model BC550C NPN(IS=7.049f XTI=3 EG=1.11 VAF=23.89 BF=493.2 ISE=99.2f + NE=1.829 IKF=.1542 Nk=.6339 Xtb=1.5 Br=2.886 Isc=7.371p + Nc=1.508 Ikr=5.426 Rc=1.175 Cjc=5.5p Mjc=.3132 Vjc=.4924 Fc=.5 + Cje=11.5p Mje=.6558 Vje=.5 Tr=10n Tf=420.3p Itf=1.374 Xtf=39.42 + Vtf=10) * MFG=PHILIPS pid=bc550c case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BDP952.model0000644000175000017500000000064013413640652016421 0ustar rubenruben.model BDP952 PNP(IS=0.800E-12 ISE=0.309E-12 ISC=0.200E-12 XTI=5.0 + BF=250 BR=44.0 IKF=0.700 IKR=1.0 XTB=2.0 + VAF=70.500 VAR=7.840 VJE=0.921 VJC=0.775 + RE=50.000E-3 RC=59.947E-3 RB=0.250 RBM=0.200 IRB=10.000E-3 + CJE=0.390E-9 CJC=0.139E-9 XCJC=0.720 FC=0.500 + NF=0.995 NR=1.0 NE=2.330 NC=1.079 MJE=0.430 MJC=0.490 + TF=0.730E-9 TR=0.100E-6 PTF=1.0 ITF=0.600 VTF=2.0 XTF=1.0 + EG=1.125 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/IRF231.model0000644000175000017500000000042413413640652016422 0ustar rubenruben.model IRF231 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1066 Kp=20.8u W=.85 L=2u Vto=3.436 + Rd=.1245 Rds=666.7K Cbd=933p Pb=.8 Mj=.5 Fc=.5 Cgso=2.297n + Cgdo=92.14p Rg=3.498 Is=151.4p N=1 Tt=515n) * IR pid=IRF231 case=TO3 oregano-0.84.41/data/models/BDV64.model0000644000175000017500000000067513413640652016351 0ustar rubenruben.SUBCKT BDV64 1 2 3 * TERMINALS: C B E * SGS-Thompson 60 Volt 12 Amp PNP Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 6.67K R2 4 3 33.3 D1 1 3 DSUB .MODEL QPWR PNP (IS=14.4P NF=1 BF=81.3 VAF=139 IKF=8 ISE=1.32N NE=2 + BR=4 NR=1 VAR=20 IKR=12 RE=55M RB=.22 RC=22M XTB=1.5 + CJE=2.47N VJE=.74 MJE=.45 CJC=357P VJC=1.1 MJC=.24 TF=89.5N TR=1.87U) .MODEL DSUB D (IS=14.4P N=1 RS=55M BV=60 IBV=.001 CJO=357P TT=1.87U) .ENDS oregano-0.84.41/data/models/HP2209.model0000644000175000017500000000016513413640652016402 0ustar rubenruben.model HP2209 D (IS=.3N RS=5 N=1.08 BV=5 IBV=10U + CJO=.2P VJ=.65 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/2N6794.model0000644000175000017500000000043013413640652016362 0ustar rubenruben.model 2N6794 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1373 Kp=20.5u W=.2 L=2u Vto=3.32 + Rd=2.288 Rds=2.222MEG Cbd=464.2p Pb=.8 Mj=.5 Fc=.5 Cgso=1.589n + Cgdo=105.2p Rg=2.722 Is=24.14p N=1 Tt=2550n) * IR pid=2N6794 case=TO39 oregano-0.84.41/data/models/TIS98.model0000644000175000017500000000054513413640652016400 0ustar rubenruben.model TIS98 NPN(IS=4.872E-15 ISE=14.65E-15 ISC=0 XTI=3 + BF=96 BR=6.935 IKF=0.1434 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.7 RB=10 + CJE=10.49E-12 CJC=8.866E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.315 NC=2 MJE=0.4602 MJC=0.4312 + TF=405.1E-12 TR=565E-12 ITF=0.18 VTF=3 XTF=2.5 + EG=1.11 KF=1E-9 AF=1 + VCEO=60 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/IRF352.model0000644000175000017500000000043213413640652016425 0ustar rubenruben.model IRF352 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=9.448m Kp=20.75u W=.73 L=2u Vto=3.234 + Rd=.2706 Rds=1.778MEG Cbd=2.206n Pb=.8 Mj=.5 Fc=.5 Cgso=9.529n + Cgdo=178.5p Rg=3.531 Is=29.06p N=1 Tt=700n) * IR pid=IRF352 case=TO3 oregano-0.84.41/data/models/BF851B.model0000644000175000017500000000030113413640652016375 0ustar rubenruben.SUBCKT BF851B/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF(VTO=-0.6391 BETA=0.01393 LAMBDA=0.04702 RD=3.577 + RS=3.577 IS=3.769E-16 CGS=6.025E-12 CGD=6.025E-12 PB=0.7072 FC=0.5) .ENDS * *$ oregano-0.84.41/data/models/BF245B.model0000644000175000017500000000062013413640652016376 0ustar rubenruben.SUBCKT BF245B/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -2.3085E+000 + BETA = 1.09045E-003 + LAMBDA = 2.31754E-002 + RD = 7.77648E+000 + RS = 7.77648E+000 + IS = 2.59121E-016 + CGS = 2.00000E-012 + CGD = 2.20000E-012 + PB = 9.91494E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/IRF613.model0000644000175000017500000000043013413640652016423 0ustar rubenruben.model IRF613 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.5804 Kp=20.77u W=.45 L=2u Vto=3.886 + Rd=.8781 Rds=666.7K Cbd=220.5p Pb=.8 Mj=.5 Fc=.5 Cgso=496.3p + Cgdo=83.15p Rg=.104 Is=5.254p N=1 Tt=295n) * IR pid=IRF613 case=TO220 oregano-0.84.41/data/models/IRF521.model0000644000175000017500000000043113413640652016422 0ustar rubenruben.model IRF521 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1459 Kp=20.79u W=.73 L=2u Vto=3.59 + Rd=80.23m Rds=355.6K Cbd=622.1p Pb=.8 Mj=.5 Fc=.5 Cgso=480.6p + Cgdo=174.6p Rg=4.374 Is=2.438p N=1 Tt=137n) * IR pid=IRF521 case=TO220 oregano-0.84.41/data/models/IRF9130.model0000644000175000017500000000043613413640652016514 0ustar rubenruben.model IRF9130 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=.1602 Kp=10.21u W=1.5 L=2u Vto=-3.698 + Rd=64.63m Rds=444.4K Cbd=1.249n Pb=.8 Mj=.5 Fc=.5 Cgso=1.499n + Cgdo=107.6p Rg=11.87 Is=2.925E-18 N=2 Tt=290n) * IR pid=IRF9130 case=TO3 oregano-0.84.41/data/models/BF861A.model0000644000175000017500000000027313413640652016405 0ustar rubenruben.SUBCKT BF861A/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF(VTO=-0.5111 BETA=0.01519 LAMBDA=0.03593 RD=4.164 RS=4.164 IS=4.102E-16 CGS=6.299E-12 CGD=6.299E-12 PB=0.6917 FC=0.5) .ENDS * *$ oregano-0.84.41/data/models/2N5551.model0000644000175000017500000000054713413640652016361 0ustar rubenruben.model 2N5551 NPN(IS=2.511E-15 ISE=2.511E-15 ISC=0 XTI=3 + BF=242.6 BR=3.197 IKF=0.3458 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=18.79E-12 CJC=4.883E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.249 NC=2 MJE=0.3416 MJC=0.3047 + TF=560E-12 TR=1.202E-9 ITF=50E-3 VTF=5 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=160 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/BFQ74.model0000644000175000017500000000054113413640652016337 0ustar rubenruben.model BFQ74 NPN(IS=2.2E-16 ISE=2.1E-15 ISC=1E-17 XTI=3 + BF=312 BR=1 IKF=0.02 IKR=0.5 XTB=1.5 + VAF=36 VAR=60 VJE=0.85 VJC=0.75 + RE=0.9 RC=3.2 RB=26 RBM=2.2 IRB=0.25 + CJE=2.5E-12 CJC=1E-14 XCJC=0.3 FC=0.5 + NF=0.97 NR=1 NE=2.6 NC=2 MJE=0.33 MJC=0.33 + TF=0 TR=0 PTF=0 ITF=0 VTF=1E30 XTF=0 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BFP194.model0000644000175000017500000000071413413640652016423 0ustar rubenruben.model BFP194 PNP(IS=4.574E-15 ISE=2.1629E-14 ISC=7.8447E-18 XTI=3 + BF=111.78 NR=0.43618 IKF=0.84785 IKR=0.012843 XTB=1.5 + VAF=9.1007 VAR=1.7871 VJE=0.84843 VJC=0.71631 + RE=0.15908 RC=0.10833 RB=4.1356 RBM=0.75304 IRB=6.1674E-5 + CJE=1.7699E-14 CJC=3.5856E-12 XCJC=0.063742 FC=0.90755 + NF=0.66503 BR=92.296 NE=0.841 NC=1.6 MJE=0.48212 MJC=0.40003 + TF=5.311E-11 TR=9.7481E-10 PTF=0 ITF=0.010453 VTF=0.10323 XTF=0.65766 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BC179B.model0000644000175000017500000000047513413640652016411 0ustar rubenruben.model BC179B PNP(IS=336.7f XTI=3 EG=1.11 VAF=30.75 BF=271.9 ISE=2.821p + NE=1.925 IKF=.2462 Nk=.5416 Xtb=1.5 Br=3.009 Isc=1.753n + Nc=2.075 Ikr=8.143 Rc=1.803 Cjc=11p Mjc=.2223 Vjc=.5 Fc=.5 + Cje=33p Mje=.3333 Vje=.5 Tr=10n Tf=846p Itf=1.546 Xtf=18.27 + Vtf=10) * MFG=PHILIPS pid=bc179b case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/2N4355.model0000644000175000017500000000055013413640652016354 0ustar rubenruben.model 2N4355 PNP(IS=12.27E-12 ISE=12.27E-12 ISC=0 XTI=3 + BF=194.8 BR=1.184 IKF=1.123 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.06 RC=0.6 RB=10 + CJE=106.7E-12 CJC=48.28E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.649 NC=2 MJE=0.5168 MJC=0.5615 + TF=867E-12 TR=474.5E-9 ITF=0.2 VTF=2 XTF=0.8 + EG=1.11 KF=1E-9 AF=1 + VCEO=60 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/BSS64.model0000644000175000017500000000067213413640652016362 0ustar rubenruben.model BSS64 NPN(IS=1.69E-12 ISE=3.23E-14 ISC=9.92E-13 XTI=3.00 + BF=1.70E2 BR=9.55E-2 IKF=2.13E-1 IKR=1.00 XTB=1.5 + VAF=7.00E2 VAR=8.58E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.00E-2 RC=5.54E-1 RB=7.17 RBM=1.00E1 IRB=6.59E-2 + CJE=4.69E-11 CJC=2.58E-11 XCJC=1.00 FC=5.00E-1 + NF=1.20 NR=1.41 NE=1.28 NC=2.00 MJE=3.97E-1 MJC=5.11E-1 + TF=1.50E-9 TR=0 PTF=0 ITF=6.20 VTF=1.00E6 XTF=1.00E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BC558B.model0000644000175000017500000000050113413640652016400 0ustar rubenruben.model BC558B PNP(IS=1.02f XTI=3 EG=1.11 VAF=52.31 BF=306.5 ISE=10.27f + NE=1.764 IKF=91.85m Nk=.5351 Xtb=1.5 Br=6.48 Isc=1.472f + Nc=1.294 Ikr=.5584 Rc=1.086 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 + Cje=30p Mje=.3333 Vje=.5 Tr=10n Tf=611.6p Itf=1.373 Xtf=26.05 + Vtf=10) * MFG=PHILIPS pid=bc558b case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/MR854.model0000644000175000017500000000020513413640652016330 0ustar rubenruben.MODEL MR854 D (IS=3.91N RS=14.6M N=1.67 BV=400 IBV=100N + CJO=124P VJ=.75 M=.333 TT=520N) * Motorola 400 Volt 3 Amp .2 us Si Diode oregano-0.84.41/data/models/BSV16-10.model0000644000175000017500000000050113413640652016567 0ustar rubenruben.model BSV16-10 PNP(IS=70.49f XTI=3 EG=1.11 VAF=100 BF=118.4 ISE=681f NE=1.558 + IKF=.5245 Nk=.525 Xtb=1.5 Br=18.45 Isc=715.1f Nc=1.23 Ikr=1.222 + Rc=.8335 Cjc=47.58p Mjc=.3333 Vjc=.5 Fc=.5 Cje=212.4p Mje=.3333 + Vje=.5 Tr=304.6n Tf=1.977n Itf=11.86 Xtf=55.69 Vtf=10) * MFG=PHILIPS pid=bsv16-10 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/BAL99.model0000644000175000017500000000021713413640652016334 0ustar rubenruben.MODEL BAL99 D IS=4.858E-9 N=2.038 RS=1.898 XTI=3 + EG=1.11 BV=164.1 IBV=12.94E-3 TT=4.184E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/BD330.model0000644000175000017500000000065313413640652016273 0ustar rubenruben.model BD330 PNP(IS=2.105E-13 ISE=3.766E-15 ISC=2.789E-11 XTI=3 + BF=281.1 BR=45.67 IKF=2.834 IKR=0.344 XTB=1.5 + VAF=44.23 VAR=7.259 VJE=0.8827 VJC=0.1427 + RE=0.05919 RC=0.0262 RB=1 RBM=1 IRB=1E-06 + CJE=2.046E-10 CJC=1.378E-10 XCJC=0.508 FC=0.309 + NF=0.9952 NR=0.9869 NE=1.4 NC=2.447 MJE=0.448 MJC=0.3018 + TF=7.919E-10 TR=1E-32 PTF=0 ITF=0.409 VTF=2.332 XTF=1.397 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=3 MFG=PHILIPS) oregano-0.84.41/data/models/TIP110.model0000644000175000017500000000075013413640652016434 0ustar rubenruben.SUBCKT TIP110 1 2 3 * TERMINALS: C B E * 60 Volt 2 Amp NPN Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 60 D1 3 1 DSUB .MODEL QPWR NPN (IS=2.4P NF=1 BF=142 VAF=139 IKF=2.4 ISE=168P NE=2 + BR=4 NR=1 VAR=20 IKR=3.6 RE=.45 RB=1.8 RC=.18 XTB=1.5 + CJE=382P VJE=.74 MJE=.45 CJC=48.7P VJC=1.1 MJC=.24 TF=85.3N TR=3.68U) .MODEL DSUB D (IS=2.4P N=1 RS=.45 BV=60 IBV=.001 CJO=48.7P TT=3.68U) .ENDS * TIP110, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK, 1992 oregano-0.84.41/data/models/IRF823.model0000644000175000017500000000042713413640652016434 0ustar rubenruben.model IRF823 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=9.112m Kp=20.23u W=.2 L=2u Vto=3.858 + Rd=2.034 Rds=2MEG Cbd=405.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.94n + Cgdo=152.3p Rg=67.83m Is=494.2p N=1 Tt=560n) * IR pid=IRF823 case=TO220 oregano-0.84.41/data/models/2N3904.model0000644000175000017500000000070413413640652016354 0ustar rubenruben.model 2N3904 NPN(IS=5.42E-14 ISE=1.20E-15 ISC=1.08E-11 XTI=3.00 + BF=3.00E2 BR=1.19E1 IKF=5.58E-2 IKR=1.00 XTB=1.5 + VAF=2.88E2 VAR=4.18E1 VJE=3.33E-1 VJC=3.83E-1 + RE=1.29E-2 RC=1.63 RB=1.51E2 RBM=1.00E-2 IRB=1.70E-3 + CJE=8.54E-12 CJC=4.75E-12 XCJC=1.00 FC=5.00E-1 + NF=1.09 NR=1.02 NE=1.25 NC=1.66 MJE=3.68E-1 MJC=4.02E-1 + TF=1.58E-10 TR=238.3E-9 PTF=0 ITF=2.86E-4 VTF=1.90E-1 XTF=4.69 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=100M MFG=SIEMENS) oregano-0.84.41/data/models/BFP420.model0000644000175000017500000000070513413640652016413 0ustar rubenruben.model BFP420 NPN(IS=2.0045E-16 ISE=1.9049E-14 ISC=1.9237E-17 XTI=3 + BF=72.534 BR=7.8287 IKF=0.48731 IKR=0.69141 XTB=1.5 + VAF=28.383 VAR=19.705 VJE=0.8051 VJC=0.81969 + RE=0.31111 RC=0.10105 RB=8.5757 RBM=3.4849 IRB=0.00072983 + CJE=1.8063E-15 CJC=2.3453E-13 XCJC=0.3 FC=0.73234 + NF=1.2432 NR=1.3325 NE=2.0518 NC=1.1724 MJE=0.46576 MJC=0.30232 + TF=6.7661E-12 TR=2.3249E-9 PTF=0 ITF=0.001 VTF=0.23794 XTF=0.42199 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/DB35005.model0000644000175000017500000000040413413640652016434 0ustar rubenruben.SUBCKT DB35005 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B35005 D2 4 1 B35005 D3 5 1 B35005 D4 2 4 B35005 D5 2 3 B35005 D6 2 5 B35005 .model B35005 D (IS=300N RS=1.67M N=1.93 BV=50 IBV=2U + CJO=1.44N VJ=.75 M=.333 TT=4.32U) * Diotec 50 Volt 35 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/2N2905.model0000644000175000017500000000056113413640652016355 0ustar rubenruben.model 2N2905 PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 + BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 + VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.715 RB=10 + CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 + TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 + EG=1.11 KF=1E-9 AF=1 + VCEO=60 ICRATING=600M MFG=PHILIPS) oregano-0.84.41/data/models/MUR7010.model0000644000175000017500000000021213413640652016522 0ustar rubenruben.model MUR7010 D (IS=12.9U RS=1.73M N=2.01 BV=100 IBV=25U + CJO=470P VJ=.275 M=.125 TT=75.4N) * Motorola 100 Volt 70 Amp 60M us Si Diode oregano-0.84.41/data/models/DB3502.model0000644000175000017500000000037613413640652016361 0ustar rubenruben.SUBCKT DB3502 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B3502 D2 4 1 B3502 D3 5 1 B3502 D4 2 4 B3502 D5 2 3 B3502 D6 2 5 B3502 .model B3502 D (IS=300N RS=1.67M N=1.93 BV=200 IBV=4U + CJO=1.44N VJ=.75 M=.333 TT=4.32U) * Diotec 200 Volt 35 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BCX71H.model0000644000175000017500000000047613413640652016457 0ustar rubenruben.model BCX71H PNP(IS=26.39f XTI=3 EG=1.11 VAF=79.03 BF=243.9 ISE=236.2f + NE=1.831 IKF=.4069 Nk=.5 Xtb=1.5 Br=8.138 Isc=92.15p Nc=2.252 + Ikr=.3702 Rc=2.597 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=590.5p Itf=.642 Xtf=225.6 Vtf=1) * MFG=SIEMENS pid=bcx71h case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/2N6798.model0000644000175000017500000000042713413640652016374 0ustar rubenruben.model 2N6798 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1152 Kp=20.02u W=1.1 L=2u Vto=3.054 + Rd=.1208 Rds=888.9K Cbd=928.2p Pb=.8 Mj=.5 Fc=.5 Cgso=2.32n + Cgdo=68.35p Rg=1.072 Is=263.4f N=1 Tt=710n) * IR pid=2N6798 case=TO39 oregano-0.84.41/data/models/BBY40.model0000644000175000017500000000025013413640652016331 0ustar rubenruben.MODEL BBY40 D IS=7.417E-15 N=1.058 RS=.1259 XTI=3 + EG=1.11 CJO=64.39E-12 M=.9 VJ=2.566 FC=.5 BV=45.12 + IBV=.1232 TT=215E-9 * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/BD329.model0000644000175000017500000000065213413640652016302 0ustar rubenruben.model BD329 NPN(IS=2.474E-13 ISE=4.403E-14 ISC=2.009E-13 XTI=3 + BF=196.2 BR=30.57 IKF=4.836 IKR=0.3264 XTB=1.5 + VAF=127.5 VAR=17.26 VJE=0.8011 VJC=0.5995 + RE=0.1021 RC=0.0252 RB=1 RBM=1 IRB=1E-06 + CJE=2.226E-10 CJC=8.735E-11 XCJC=0.5 FC=0.6153 + NF=0.9998 NR=0.9995 NE=1.4 NC=1.5 MJE=0.3833 MJC=0.4009 + TF=6.469E-10 TR=1E-32 PTF=0 ITF=0.3542 VTF=1.735 XTF=1.257 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=3 MFG=PHILIPS) oregano-0.84.41/data/models/SMBTA55.model0000644000175000017500000000050113413640652016570 0ustar rubenruben.model SMBTA55 PNP(IS=9.744f XTI=3 EG=1.11 VAF=100 BF=107.1 ISE=9.747f + NE=1.377 IKF=1.26 Nk=.7865 Xtb=1.5 Br=3.584 Isc=59.76f Nc=1.511 + Ikr=1.901 Rc=.6051 Cjc=29.15p Mjc=.3333 Vjc=.5 Fc=.5 Cje=87.45p + Mje=.3333 Vje=.5 Tr=10n Tf=977.7p Itf=13.98 Xtf=131.9 Vtf=10) * MFG=SIEMENS pid=smbta55 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF443.model0000644000175000017500000000042613413640652016431 0ustar rubenruben.model IRF443 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.819m Kp=20.87u W=.61 L=2u Vto=3.873 + Rd=.8223 Rds=2MEG Cbd=1.365n Pb=.8 Mj=.5 Fc=.5 Cgso=1.764n + Cgdo=165.5p Rg=.1466 Is=1.406n N=1 Tt=710n) * IR pid=IRF443 case=TO3 oregano-0.84.41/data/models/BC859A.model0000644000175000017500000000050013413640652016402 0ustar rubenruben.model BC859A PNP(IS=336.7f XTI=3 EG=1.11 VAF=106.8 BF=180.6 ISE=2.666p + NE=1.944 IKF=.1094 Nk=.4986 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.791 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.1p Itf=2.326 Xtf=20.43 Vtf=10) * MFG=SIEMENS pid=bc859a case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BC808-16.model0000644000175000017500000000050013413640652016517 0ustar rubenruben.model BC808-16 PNP(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=209 ISE=318.3f NE=1.542 + IKF=.6049 Nk=.6086 Xtb=1.5 Br=6.501 Isc=179.5f Nc=1.832 + Ikr=.1402 Rc=.4026 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=703p Itf=13.36 Xtf=1.289K Vtf=10) * MFG=SIEMENS pid=bc808-16 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF531.model0000644000175000017500000000043313413640652016425 0ustar rubenruben.model IRF531 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=58.53m Kp=20.73u W=.68 L=2u Vto=3.191 + Rd=38.69m Rds=355.6K Cbd=1.151n Pb=.8 Mj=.5 Fc=.5 Cgso=805.6p + Cgdo=332.5p Rg=2.919 Is=1.861p N=1 Tt=125n) * IR pid=IRF531 case=TO220 oregano-0.84.41/data/models/LEDRED.model0000644000175000017500000000021213413640652016506 0ustar rubenruben*Typ LED GaAs RED: Vf=1.7V Vr=4V If=40mA trr=3uS .MODEL LEDRED D (IS=93.2P RS=42M N=3.73 BV=4 IBV=10U + CJO=2.97P VJ=.75 M=.333 TT=4.32U) oregano-0.84.41/data/models/KBPC2500.model0000644000175000017500000000036313413640652016604 0ustar rubenruben.SUBCKT KBPC2500 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC2500 D3 3 5 BPC2500 D4 4 3 BPC2500 D1 4 2 BPC2500 .model BPC2500 D (IS=679N RS=2.22M N=2.06 BV=50 IBV=10U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 50 Volt 25 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/BCW67C.model0000644000175000017500000000050013413640652016442 0ustar rubenruben.model BCW67C PNP(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=550.3 ISE=233.3f + NE=1.478 IKF=.5906 Nk=.646 Xtb=1.5 Br=12.01 Isc=1.997p Nc=1.678 + Ikr=9.679 Rc=.5562 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=675.6p Itf=3.423 Xtf=96.44 Vtf=10) * MFG=SIEMENS pid=bcw67c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/TLC555.model0000644000175000017500000000162713413640652016443 0ustar rubenruben.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 oregano-0.84.41/data/models/BCX71J.model0000644000175000017500000000047613413640652016461 0ustar rubenruben.model BCX71J PNP(IS=26.39f XTI=3 EG=1.11 VAF=62.37 BF=330.6 ISE=285.2f + NE=2.013 IKF=2.498 Nk=.5 Xtb=1.5 Br=7.258 Isc=104.6p Nc=2.312 + Ikr=.332 Rc=2.694 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=590.8p Itf=.8403 Xtf=457.4 Vtf=1) * MFG=SIEMENS pid=bcx71j case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BF240.model0000644000175000017500000000061313413640652016271 0ustar rubenruben.model BF240 NPN(IS=6.686E-16 ISE=1.84E-15 ISC=9.197E-15 XTI=3 + BF=135 BR=6.24 IKF=0.06 IKR=0.05 XTB=1.5 + VAF=116.5 VAR=5.34 VJE=0.55 VJC=0.1927 + RE=0.6 RC=1.8 RB=1 RBM=0.5 IRB=0.01 + CJE=2.288E-12 CJC=9.099E-13 XCJC=0.811 FC=0.8999 + NF=0.9934 NR=1.003 NE=1.632 NC=1.133 MJE=0.2019 MJC=0.1982 + TF=2.911E-10 TR=1E-32 PTF=0 ITF=0.1644 VTF=1.762 XTF=54.94 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BC857A.model0000644000175000017500000000050013413640652016400 0ustar rubenruben.model BC857A PNP(IS=336.7f XTI=3 EG=1.11 VAF=106.8 BF=180.6 ISE=2.666p + NE=1.944 IKF=.1094 Nk=.4986 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.791 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.1p Itf=2.326 Xtf=20.43 Vtf=10) * MFG=SIEMENS pid=bc857a case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/2N4249.model0000644000175000017500000000054413413640652016361 0ustar rubenruben.model 2N4249 PNP(IS=6.734E-15 ISE=6.734E-15 ISC=0 XTI=3 + BF=161.4 BR=2.767 IKF=0.1806 IKR=0 XTB=1.5 + VAF=45.7 VAR=15 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.67 RB=10 + CJE=7.5E-12 CJC=6.2E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.672 NC=2 MJE=0.2861 MJC=0.301 + TF=467.4E-12 TR=10.54E-9 ITF=0.17 VTF=5 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=60 ICRATING=50M MFG=NSC) oregano-0.84.41/data/models/MPSA05.model0000644000175000017500000000070013413640652016456 0ustar rubenruben.model MPSA05 NPN(IS=75.000E-15 ISE=11.429E-15 ISC=60.000E-15 XTI=4.0 + BF=149.627 BR=2.900 IKF=2.0 IKR=36.690E-3 XTB=1.500 + VAF=300 VAR=25.0 VJE=1.0 VJC=0.720 + RE=0.100 RC=0.212 RB=0.400 RBM=0.200 IRB=20.000E-6 + CJE=79.000E-12 CJC=16.000E-12 XCJC=0.650 FC=0.900 + NF=1.010 NR=1.020 NE=1.663 NC=1.428 MJE=0.365 MJC=0.465 + TF=1.100E-9 TR=2.000E-9 PTF=1.0 ITF=0.600 VTF=4.0 XTF=3.450 + EG=1.110 KF=1E-9 AF=1 + VCEO=60 ICRATING=200M MFG=SIEMENS) oregano-0.84.41/data/models/BCX79.model0000644000175000017500000000064013413640652016350 0ustar rubenruben.model BCX79 NPN(IS=45.000E-15 ISE=55.668E-15 ISC=1.084E-12 XTI=3.200 + BF=516.544 BR=7.745 IKF=0.708 IKR=1.0 XTB=1.400 + VAF=74.0 VAR=14.0 VJE=0.690 VJC=0.750 + RE=0.350 RC=1.445 RB=9.0 RBM=4.500 IRB=0.100E-3 + CJE=13.050E-12 CJC=4.100E-12 XCJC=0.650 FC=0.750 + NF=1.010 NR=1.015 NE=2.567 NC=4.063 MJE=0.375 MJC=0.420 + TF=0.620E-9 TR=2.5E-9 PTF=1.0 ITF=0.720 VTF=1.0 XTF=68.0 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/IRF343.model0000644000175000017500000000042513413640652016427 0ustar rubenruben.model IRF343 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.186m Kp=20.79u W=.68 L=2u Vto=3.503 + Rd=.35 Rds=1.556MEG Cbd=820p Pb=.8 Mj=.5 Fc=.5 Cgso=1.584n + Cgdo=192.6p Rg=.1449 Is=53.7p N=1 Tt=570n) * IR pid=IRF343 case=TO3 oregano-0.84.41/data/models/BCY59-8.model0000644000175000017500000000047513413640652016522 0ustar rubenruben.model BCY59-8 NPN(IS=64.04f XTI=3 EG=1.11 VAF=79.03 BF=395.1 ISE=599f + NE=1.598 IKF=.1799 Nk=.6331 Xtb=1.5 Br=1 Isc=9.225n Nc=3.14 + Ikr=16.96 Rc=1.286 Cjc=11.15p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p + Mje=.3333 Vje=.5 Tr=629.7n Tf=423.5p Itf=2.989 Xtf=106 Vtf=10) * MFG=PHILIPS pid=bcy59-8 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BFN37.model0000644000175000017500000000067413413640652016342 0ustar rubenruben.model BFN37 PNP(IS=9.53E-14 ISE=8.37E-13 ISC=9.99E-11 XTI=3.00 + BF=9.80E1 BR=4.78 IKF=3.49E-2 IKR=1.00 XTB=1.5 + VAF=2.60E2 VAR=1.40E2 VJE=3.00E-1 VJC=3.00E-1 + RE=1.00E-2 RC=1.00E-2 RB=2.76E1 RBM=6.66E-2 IRB=7.02E-4 + CJE=9.54E-11 CJC=4.66E-11 XCJC=1.00 FC=5.00E-1 + NF=1.00 NR=1.55 NE=1.49 NC=1.50 MJE=4.26E-1 MJC=7.00E-1 + TF=9.52E-10 TR=0 PTF=0 ITF=4.12E-1 VTF=9.99E5 XTF=1.03 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/2N2369.model0000644000175000017500000000064713413640652016366 0ustar rubenruben.model 2N2369 NPN(IS=1.222E-15 ISE=3.895E-14 ISC=1.85E-09 XTI=3 + BF=82.01 BR=0.1731 IKF=0.196 IKR=0.1 XTB=1.5 + VAF=35.3 VAR=29.6 VJE=0.7352 VJC=0.198 + RE=0.612 RC=1.527 RB=0.5 RBM=0.5 IRB=1E-06 + CJE=3.411E-12 CJC=1.605E-12 XCJC=0.4 FC=0.9399 + NF=0.9901 NR=0.974 NE=1.632 NC=2.01 MJE=0.3437 MJC=0.1711 + TF=2.115E-10 TR=60E-9 PTF=0 ITF=1.534 VTF=2.3 XTF=127 + EG=1.11 KF=1E-9 AF=1 + VCEO=15 ICRATING=200M MFG=PHILIPS) oregano-0.84.41/data/models/BSS129.model0000644000175000017500000000040213413640652016433 0ustar rubenruben.model BSS129 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=2u Uo=600 Phi=.6 Kp=1.023u W=.18 L=2u Rs=0 Vto=-1.236 + Rd=10E-21 Rds=3.429K Cgso=4p Cgdo=1p Cbd=134.4p Mj=.4522 + Pb=.3905 Fc=.5 Rg=0 Is=3.348p N=1.161 Rb=2.414) oregano-0.84.41/data/models/DB3510.model0000644000175000017500000000037613413640652016360 0ustar rubenruben.SUBCKT DB3510 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B3510 D2 4 1 B3510 D3 5 1 B3510 D4 2 4 B3510 D5 2 3 B3510 D6 2 5 B3510 .model B3510 D (IS=300N RS=1.67M N=1.93 BV=1K IBV=8U + CJO=1.44N VJ=.75 M=.333 TT=4.32U) * Diotec 1000 Volt 35 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BF904.model0000644000175000017500000000345513413640652016307 0ustar rubenruben* BF904 SPICE MODEL OCTOBER 1993 PHILIPS SEMICONDUCTORS * ENVELOPE SOT143 * 1.: SOURCE; 2.: DRAIN; 3.: GATE 2; 4.: GATE 1; .SUBCKT BF904/PLP 1 2 3 4 L10 1 10 0.12N L20 2 20 0.12N L30 3 30 0.12N L40 4 40 0.12N L11 10 11 1.20N L21 20 21 1.20N L31 30 31 1.20N L41 40 41 1.20N C13 10 30 0.085P C14 10 40 0.085P C21 10 20 0.017P C23 20 30 0.085P C24 20 40 0.005P D11 11 41 ZENER D22 11 31 ZENER RSUB 10 12 10 MOS1A 61 41 11 12 GATE1 L=1.1E-6 W=1150E-6 MOS2A 21 31 61 12 GATE2 L=2.0E-6 W=1150E-6 MOS1B 71 41 11 12 GATE3 L=1.1E-6 W= 6E-6 MOS2B 41 31 71 12 GATE4 L=4.0E-6 W= 6E-6 .MODEL ZENER + D BV=10 CJO=0.6E-12 RS=10 .MODEL GATE1 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=140E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12 .MODEL GATE2 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=100E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=1.5E-12 CBS=0.5E-12 .MODEL GATE3 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=140E3 RS=400 RD=400 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.1E-12 CBS=0.1E-12 .MODEL GATE4 + NMOS LEVEL=3 UO=600 VTO=+0.700 NFS=300E9 TOX=42E-9 + NSUB=3E15 VMAX=100E3 RS=400 RD=400 XJ=200E-9 THETA=0.11 + ETA=0.06 KAPPA=2 LD=0.1E-6 + CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.1E-12 CBS=0.1E-12 .ENDS * *$ oregano-0.84.41/data/models/MUR1630C.model0000644000175000017500000000022313413640652016631 0ustar rubenruben.MODEL MUR1630C D (IS=179N RS=42M N=1.64 BV=300 IBV=500U + CJO=300P VJ=.775 M=.37 TT=107.4N) * Motorola MUR1630CT 300 Volt 16 Amp 60M us Si Diode oregano-0.84.41/data/models/BFR182.model0000644000175000017500000000071413413640652016422 0ustar rubenruben.model BFR182 NPN(IS=4.8499E-15 ISE=8.4254E-15 ISC=5.9438E-15 XTI=3 + BF=84.113 NR=0.54818 IKF=0.14414 IKR=0.039478 XTB=1.5 + VAF=21.742 VAR=2.2595 VJE=1.0378 VJC=1.0132 + RE=2.1858 RC=1.8159 RB=3.4217 RBM=2.8263 IRB=7.1955E-5 + CJE=8.8619E-15 CJC=4.9025E-13 XCJC=0.19281 FC=0.64175 + NF=0.56639 BR=10.004 NE=0.91624 NC=0.5641 MJE=0.40796 MJC=0.31068 + TF=2.272E-11 TR=1.7541E-9 PTF=0 ITF=0.0065523 VTF=0.34608 XTF=0.43147 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BSV17-6.model0000644000175000017500000000050013413640652016514 0ustar rubenruben.model BSV17-6 PNP(IS=70.49f XTI=3 EG=1.11 VAF=100 BF=78.81 ISE=795.9f NE=1.5 + IKF=.9977 Nk=.6579 Xtb=1.5 Br=18.45 Isc=715.1f Nc=1.23 + Ikr=1.222 Rc=.8335 Cjc=35.44p Mjc=.3333 Vjc=.5 Fc=.5 Cje=212.4p + Mje=.3333 Vje=.5 Tr=391.7n Tf=1.986n Itf=14.75 Xtf=94.3 Vtf=10) * MFG=PHILIPS pid=bsv17-6 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/BYX55350.model0000644000175000017500000000020513413640652016615 0ustar rubenruben.model BYX55350 D (IS=3.11N RS=42M N=1.75 BV=350 IBV=5U + CJO=50.6P VJ=.75 M=.333 TT=452N) * Diotec350 Volt 1.2 Amp .35 us Si Diode oregano-0.84.41/data/models/DB3512.model0000644000175000017500000000040013413640652016346 0ustar rubenruben.SUBCKT DB3512 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B3512 D2 4 1 B3512 D3 5 1 B3512 D4 2 4 B3512 D5 2 3 B3512 D6 2 5 B3512 .model B3512 D (IS=300N RS=1.67M N=1.93 BV=1.2K IBV=8U + CJO=1.44N VJ=.75 M=.333 TT=4.32U) * Diotec 1200 Volt 35 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BCP70.model0000644000175000017500000000065313413640652016333 0ustar rubenruben.model BCP70 PNP(IS=0.750E-12 ISE=1.850E-15 ISC=25.000E-15 XTI=5.0 + BF=228.200 BR=130 IKF=1.220 IKR=2.200 XTB=2.100 + VAF=16.500 VAR=5.0 VJE=1.200 VJC=0.720 + RE=35.000E-3 RC=39.961E-3 RB=0.500 RBM=0.300 IRB=10.000E-3 + CJE=0.295E-9 CJC=0.228E-9 XCJC=0.723 FC=0.500 + NF=1.010 NR=1.007 NE=2.004 NC=1.078 MJE=0.600 MJC=0.320 + TF=0.275E-9 TR=0.100E-6 PTF=1.0 ITF=2.500 VTF=2.500 XTF=0.800 + EG=1.120 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BCX58.model0000644000175000017500000000064413413640652016351 0ustar rubenruben.Model BCX58 PNP(IS=28.000E-15 ISE=24.903E-15 ISC=0.125E-12 XTI=3.300 + BF=284.436 BR=4.800 IKF=0.380 IKR=0.932 XTB=1.600 + VAF=43.0 VAR=6.960 VJE=1.0 VJC=0.900 + RE=0.300 RC=2.251 RB=2.200 RBM=1.500 IRB=0.100E-3 + CJE=11.800E-12 CJC=8.700E-12 XCJC=0.650 FC=0.750 + NF=1.0 NR=1.005 NE=2.234 NC=2.074 MJE=0.435 MJC=0.600 + TF=0.600E-9 TR=2.604E-9 PTF=1.0 ITF=0.314 VTF=2.0 XTF=6.500 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BF247A.model0000644000175000017500000000062013413640652016377 0ustar rubenruben.SUBCKT BF247A/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -5.3298E+000 + BETA = 2.86527E-003 + LAMBDA = 6.19323E-002 + RD = 1.62278E+000 + RS = 1.62278E+000 + IS = 1.18582E-015 + CGS = 1.05000E-011 + CGD = 1.30000E-011 + PB = 7.98217E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BFR93A.model0000644000175000017500000000071013413640652016440 0ustar rubenruben.model BFR93A NPN(IS=8.6752E-15 ISE=2.6193E-12 ISC=7.0823E-16 XTI=3 + BF=137.63 NR=0.88761 IKF=0.33395 IKR=0.015129 XTB=1.5 + VAF=20.011 VAR=26.834 VJE=0.70393 VJC=0.72744 + RE=1.0075 RC=0.13193 RB=7.2326 RBM=3.4649 IRB=4.3806E-5 + CJE=3.1538E-15 CJC=1.0395E-12 XCJC=0.21422 FC=0.75935 + NF=0.93633 BR=59 NE=1.5466 NC=1.95 MJE=0.5071 MJC=0.34565 + TF=3.3388E-11 TR=1.1061E-9 PTF=0 ITF=0.0025184 VTF=0.17765 XTF=0.28319 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/2N6757.model0000644000175000017500000000044313413640652016365 0ustar rubenruben.model 2N6757 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1145 Kp=19.85u W=1.1 L=2u Vto=3.391 + Rd=.2702 Rds=1.5MEG Cbd=1.068n Pb=.8 Mj=.5 Fc=.5 Cgso=2.819n + Cgdo=117p Rg=2.941 Is=270.5p N=1 Tt=1150n) * Int'l Rectifier pid=2N6757 case=TO3 oregano-0.84.41/data/models/2N6768.model0000644000175000017500000000042613413640652016370 0ustar rubenruben.model 2N6768 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=13.98m Kp=20.77u W=.82 L=2u Vto=2.885 + Rd=.219 Rds=4MEG Cbd=3.018n Pb=.8 Mj=.5 Fc=.5 Cgso=9.529n + Cgdo=178.5p Rg=3.581 Is=146.3p N=1 Tt=1490n) * IR pid=2N6768 case=TO3 oregano-0.84.41/data/models/DB1514.model0000644000175000017500000000040013413640652016346 0ustar rubenruben.SUBCKT DB1514 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B1514 D2 4 1 B1514 D3 5 1 B1514 D4 2 4 B1514 D5 2 3 B1514 D6 2 5 B1514 .model B1514 D (IS=45.3N RS=1.92M N=2.34 BV=1.4K IBV=9U + CJO=618P VJ=.75 M=.333 TT=4.32U) * Diotec 1400 Volt 15 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BC237B.model0000644000175000017500000000053013413640652016374 0ustar rubenruben.model BC237B NPN(IS=1.8E-14 ISE=5.0E-14 ISC=1.72E-13 XTI=3 + BF=400 BR=35.5 IKF=0.14 IKR=0.03 XTB=1.5 + VAF=80 VAR=12.5 VJE=0.58 VJC=0.54 + RE=0.6 RC=0.25 RB=0.56 + CJE=13E-12 CJC=4E-12 XCJC=0.75 FC=0.5 + NF=0.9955 NR=1.005 NE=1.46 NC=1.27 MJE=0.33 MJC=0.33 + TF=0.64E-9 TR=50.72E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/BFG194.model0000644000175000017500000000071413413640652016412 0ustar rubenruben.model BFG194 PNP(IS=4.574E-15 ISE=2.1629E-14 ISC=7.8447E-18 XTI=3 + BF=111.78 NR=0.43618 IKF=0.84785 IKR=0.012843 XTB=1.5 + VAF=9.1007 VAR=1.7871 VJE=0.84843 VJC=0.71631 + RE=0.15908 RC=0.10833 RB=4.1356 RBM=0.75304 IRB=6.1674E-5 + CJE=1.7699E-14 CJC=3.5856E-12 XCJC=0.063742 FC=0.90755 + NF=0.66503 BR=92.296 NE=0.841 NC=1.6 MJE=0.48212 MJC=0.40003 + TF=5.311E-11 TR=9.7481E-10 PTF=0 ITF=0.010453 VTF=0.10323 XTF=0.65766 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/TIP122.model0000644000175000017500000000074713413640652016445 0ustar rubenruben.SUBCKT TIP122 1 2 3 * TERMINALS: C B E * 100 Volt 5 Amp NPN Darlington Transistor 08-03-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 3 1 DSUB .MODEL QPWR NPN (IS=6P NF=1 BF=116 VAF=180 IKF=3.2 ISE=376P NE=2 + BR=4 NR=1 VAR=20 IKR=4.8 RE=.33 RB=1.32 RC=.132 XTB=1.5 + CJE=676P VJE=.74 MJE=.45 CJC=97.5P VJC=1.1 MJC=.24 TF=110N TR=4.75U) .MODEL DSUB D (IS=6P N=1 RS=.33 BV=100 IBV=.001 CJO=97.5P TT=4.75U) .ENDS * TIP122, TEXAS INSTRUMENTS POWER PRODUCTS DATA BOOK, 1985 oregano-0.84.41/data/models/SMBTA20.model0000644000175000017500000000047713413640652016574 0ustar rubenruben.model SMBTA20 NPN(IS=3.31f XTI=3 EG=1.11 VAF=100 BF=315.3 ISE=30.83f NE=1.744 + IKF=67.18m Nk=.3523 Xtb=1.5 Br=5.232 Isc=1.227p Nc=1.561 + Ikr=.6492 Rc=1.623 Cjc=12.2p Mjc=.3333 Vjc=.5 Fc=.5 Cje=8.614p + Mje=.3333 Vje=.5 Tr=10n Tf=591p Itf=1.423 Xtf=51.17 Vtf=10) * MFG=SIEMENS pid=smbta20 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BCW61D.model0000644000175000017500000000047313413640652016446 0ustar rubenruben.model BCW61D PNP(IS=26.39f XTI=3 EG=1.11 VAF=35.7 BF=464.5 ISE=227f NE=2.108 + IKF=.1247 Nk=.5 Xtb=1.5 Br=7.094 Isc=90.49p Nc=2.24 Ikr=.4226 + Rc=2.604 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p Mje=.3865 + Vje=.5 Tr=10n Tf=591.1p Itf=.7698 Xtf=230.9 Vtf=1) * MFG=SIEMENS pid=bcw61d case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BDV64B.model0000644000175000017500000000070013413640652016440 0ustar rubenruben.SUBCKT BDV64B 1 2 3 * TERMINALS: C B E * SGS-Thompson 100 Volt 12 Amp PNP Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 6.67K R2 4 3 33.3 D1 1 3 DSUB .MODEL QPWR PNP (IS=14.4P NF=1 BF=81.3 VAF=180 IKF=8 ISE=1.32N NE=2 + BR=4 NR=1 VAR=20 IKR=12 RE=55M RB=.22 RC=22M XTB=1.5 + CJE=2.47N VJE=.74 MJE=.45 CJC=357P VJC=1.1 MJC=.24 TF=89.5N TR=1.87U) .MODEL DSUB D (IS=14.4P N=1 RS=55M BV=100 IBV=.001 CJO=357P TT=1.87U) .ENDS oregano-0.84.41/data/models/IRF340.model0000644000175000017500000000042613413640652016425 0ustar rubenruben.model IRF340 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.186m Kp=20.79u W=.68 L=2u Vto=3.503 + Rd=.263 Rds=1.778MEG Cbd=820p Pb=.8 Mj=.5 Fc=.5 Cgso=1.608n + Cgdo=168.2p Rg=.7553 Is=27.4p N=1 Tt=570n) * IR pid=IRF340 case=TO3 oregano-0.84.41/data/models/HP5958.model0000644000175000017500000000020213413640652016410 0ustar rubenruben.model HP5958 D (IS=1P RS=4 N=1.08 BV=5 IBV=10U + CJO=.4P VJ=.85 M=.5 EG=.69 TT=72P) * H-P HSCH-5958 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/MUR1610C.model0000644000175000017500000000022313413640652016627 0ustar rubenruben.MODEL MUR1610C D (IS=179N RS=42M N=1.64 BV=100 IBV=250U + CJO=210P VJ=.759 M=.373 TT=51.4N) * Motorola MUR1610CT 100 Volt 16 Amp 35M us Si Diode oregano-0.84.41/data/models/KBPC2504.model0000644000175000017500000000036513413640652016612 0ustar rubenruben.SUBCKT KBPC2504 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC2504 D3 3 5 BPC2504 D4 4 3 BPC2504 D1 4 2 BPC2504 .model BPC2504 D (IS=679N RS=2.22M N=2.06 BV=400 IBV=14U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 400 Volt 25 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/TIP126.model0000644000175000017500000000074713413640652016451 0ustar rubenruben.SUBCKT TIP126 1 2 3 * TERMINALS: C B E * 80 Volt 5 Amp PNP Darlington Transistor 08-03-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 1 3 DSUB .MODEL QPWR PNP (IS=6P NF=1 BF=111 VAF=161 IKF=2.24 ISE=330P NE=2 + BR=4 NR=1 VAR=20 IKR=3.36 RE=.33 RB=1.32 RC=.132 XTB=1.5 + CJE=1.03N VJE=.74 MJE=.45 CJC=149P VJC=1.1 MJC=.24 TF=98.5N TR=4.25U) .MODEL DSUB D (IS=6P N=1 RS=.33 BV=80 IBV=.001 CJO=149P TT=4.25U) .ENDS * TIP126, TEXAS INSTRUMENTS POWER PRODUCTS DATA BOOK, 1985 oregano-0.84.41/data/models/2N6847.model0000644000175000017500000000043213413640652016363 0ustar rubenruben.model 2N6847 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=.286 Kp=10.37u W=.97 L=2u Vto=-3.661 + Rd=.9789 Rds=888.9MEG Cbd=440.2p Pb=.8 Mj=.5 Fc=.5 Cgso=1.897n + Cgdo=46.53p Rg=1.002 Is=279.9f N=4 Tt=900n) * IR pid=2N6847 case=TO39 oregano-0.84.41/data/models/RGP30M.model0000644000175000017500000000017713413640652016471 0ustar rubenruben.model RGP30M D (IS=22U RS=42M N=3.35 BV=1K IBV=10U + CJO=100P VJ=.75 M=.333 TT=570N) * Diotec 1000 Volt 3 Amp .5 us Si Diode oregano-0.84.41/data/models/IRF223.model0000644000175000017500000000042413413640652016423 0ustar rubenruben.model IRF223 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1344 Kp=20.53u W=.26 L=2u Vto=3.077 + Rd=.518 Rds=666.7K Cbd=650.2p Pb=.8 Mj=.5 Fc=.5 Cgso=3.593n + Cgdo=201p Rg=9.065 Is=5.574n N=1 Tt=610n) * IR pid=IRF223 case=TO3 oregano-0.84.41/data/models/BF450.model0000644000175000017500000000061713413640652016300 0ustar rubenruben.model BF450 PNP(IS=8.083E-16 ISE=8.858E-16 ISC=2.382E-16 XTI=3 + BF=114.1 BR=4.502 IKF=0.03 IKR=0.00056 XTB=1.5 + VAF=37.65 VAR=10 VJE=0.6822 VJC=0.6482 + RE=0.8 RC=2.28 RB=1 RBM=0.5 IRB=1E-06 + CJE=1.86E-12 CJC=1.19E-12 XCJC=0.828 FC=0.9297 + NF=0.9985 NR=0.9859 NE=1.45 NC=1 MJE=0.2643 MJC=0.3185 + TF=1.633E-10 TR=1E-32 PTF=0 ITF=0.07408 VTF=1.864 XTF=11.46 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BSS79.model0000644000175000017500000000067413413640652016372 0ustar rubenruben.model BSS79 NPN(IS=1.75E-12 ISE=5.92E-14 ISC=9.42E-14 XTI=3.00 + BF=3.03E2 BR=1.00E-2 IKF=2.11E-1 IKR=1.00 XTB=1.5 + VAF=3.60E2 VAR=1.64E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.00E-2 RC=1.07 RB=8.63E1 RBM=1.00E-2 IRB=9.62E-3 + CJE=2.64E-11 CJC=1.37E-11 XCJC=1.00 FC=5.00E-1 + NF=1.10 NR=1.71 NE=1.26 NC=1.00 MJE=4.09E-1 MJC=4.89E-1 + TF=5.16E-10 TR=0 PTF=0 ITF=5.09E-1 VTF=1.09E5 XTF=1.64 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/IRF420.model0000644000175000017500000000043113413640652016420 0ustar rubenruben.model IRF420 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=57.8m Kp=21.11u W=.26 L=2u Vto=3.827 + Rd=1.595 Rds=2.222MEG Cbd=394.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.589n + Cgdo=105.2p Rg=.7721 Is=267.9p N=1 Tt=560n) * IR pid=IRF420 case=TO3 oregano-0.84.41/data/models/BD136P.model0000644000175000017500000000067713413640652016425 0ustar rubenruben.model BD136P PNP(IS=7.401E-14 ISE=4.104E-16 ISC=1.290E-14 XTI=3 + BF=336.5 BR=13.91 IKF=0.1689 IKR=9.888E-2 XTB=1.5 + VAF=224.7 VAR=30.00 VJE=0.6900 VJC=0.6431 + RE=0.208 RC=5.526E-02 RB=0.500 RBM=0.500 IRB=1E-06 + CJE=1.066E-10 CJC=5.234E-11 XCJC=0.440 FC=0.990 + NF=0.9938 NR=0.9913 NE=1.054 NC=1.100 MJE=0.3676 MJC=0.4436 + TF=2.578E-10 TR=1E-25 PTF=0 ITF=1.3040 VTF=2.366 XTF=13.56 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=1.5 MFG=PHILIPS) oregano-0.84.41/data/models/BC264C.model0000644000175000017500000000053713413640652016404 0ustar rubenruben.MODEL BC264C NJF ( + VTO = -2.0850E+000 + BETA = 1.24635E-003 + LAMBDA = 2.46045E-002 + RD = 1.68159E+001 + RS = 1.68159E+001 + IS = 2.16894E-016 + CGS = 2.25000E-012 + CGD = 2.25000E-012 + PB = 9.32203E-001 + FC = 5.00000E-001 )oregano-0.84.41/data/models/BSV17-10.model0000644000175000017500000000050013413640652016567 0ustar rubenruben.model BSV17-10 PNP(IS=70.49f XTI=3 EG=1.11 VAF=100 BF=118.4 ISE=681f NE=1.558 + IKF=.5245 Nk=.525 Xtb=1.5 Br=18.45 Isc=715.1f Nc=1.23 Ikr=1.222 + Rc=.8335 Cjc=36.44p Mjc=.3333 Vjc=.5 Fc=.5 Cje=213.4p Mje=.3333 + Vje=.5 Tr=304.6n Tf=1.98n Itf=14.64 Xtf=81.44 Vtf=10) * MFG=PHILIPS pid=bsv17-10 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/2N2907S.model0000644000175000017500000000070013413640652016475 0ustar rubenruben.model 2N2907S PNP(IS=2.32E-13 ISE=6.69E-16 ISC=1.65E-13 XTI=3.00 + BF=3.08E2 BR=2.18E1 IKF=8.42E-1 IKR=1.00 XTB=1.5 + VAF=1.41E2 VAR=1.35E1 VJE=3.49E-1 VJC=3.00E-1 + RE=1.00E-2 RC=8.46E-1 RB=4.02E1 RBM=1.00E-2 IRB=1.25E-2 + CJE=2.66E-11 CJC=1.93E-11 XCJC=1.00 FC=5.00E-1 + NF=1.04 NR=1.12 NE=1.09 NC=1.13 MJE=4.60E-1 MJC=4.65E-1 + TF=4.95E-10 TR=0 PTF=0 ITF=3.36E-1 VTF=6.54 XTF=1.87E1 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=500M MFG=SIEMENS) oregano-0.84.41/data/models/BF556B.model0000644000175000017500000000062013413640652016403 0ustar rubenruben.SUBCKT BF556B/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -2.3085E+000 + BETA = 1.09045E-003 + LAMBDA = 2.31754E-002 + RD = 7.77648E+000 + RS = 7.77648E+000 + IS = 2.59121E-016 + CGS = 2.00000E-012 + CGD = 2.20000E-012 + PB = 9.91494E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BC817-25.model0000644000175000017500000000050213413640652016521 0ustar rubenruben.model BC817-25 NPN(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=294.4 ISE=318.5f + NE=1.642 IKF=.8311 Nk=.5663 Xtb=1.5 Br=5.855 Isc=199.7f Nc=2.09 + Ikr=.1075 Rc=.4196 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=660.8p Itf=2.569 Xtf=88.29 Vtf=10) * MFG=SIEMENS pid=bc817-25 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF632.model0000644000175000017500000000042613413640652016431 0ustar rubenruben.model IRF632 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1131 Kp=20.8u W=.98 L=2u Vto=3.513 + Rd=.2702 Rds=888.9K Cbd=989.8p Pb=.8 Mj=.5 Fc=.5 Cgso=2.032n + Cgdo=59.27p Rg=5.766 Is=270p N=1 Tt=515n) * IR pid=IRF632 case=TO220 oregano-0.84.41/data/models/2N6756.model0000644000175000017500000000044213413640652016363 0ustar rubenruben.model 2N6756 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1207 Kp=21.35u W=1.1 L=2u Vto=3.143 + Rd=4.68m Rds=1MEG Cbd=1.273n Pb=.8 Mj=.5 Fc=.5 Cgso=679.6p + Cgdo=197.4p Rg=9.781 Is=4.345f N=1 Tt=348n) * Int'l Rectifier pid=2N6756 case=TO3 oregano-0.84.41/data/models/IRF353.model0000644000175000017500000000043213413640652016426 0ustar rubenruben.model IRF353 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=9.448m Kp=20.75u W=.73 L=2u Vto=3.234 + Rd=.2706 Rds=1.556MEG Cbd=2.206n Pb=.8 Mj=.5 Fc=.5 Cgso=9.503n + Cgdo=204.5p Rg=3.011 Is=29.06p N=1 Tt=700n) * IR pid=IRF353 case=TO3 oregano-0.84.41/data/models/2N3702.model0000644000175000017500000000055413413640652016353 0ustar rubenruben.model 2N3702 PNP(IS=650.6E-18 ISE=97.16E-15 ISC=0 XTI=3 + BF=133.8 BR=3.73 IKF=1.081 IKR=0 XTB=1.5 + VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.715 RB=10 + CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.832 NC=2 MJE=0.3357 MJC=0.5383 + TF=761.3E-12 TR=114.1E-9 ITF=0.65 VTF=5 XTF=1.7 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=500M MFG=NSC) oregano-0.84.41/data/models/IRF843.model0000644000175000017500000000042613413640652016435 0ustar rubenruben.model IRF843 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=6.382m Kp=20.85u W=.68 L=2u Vto=3.879 + Rd=.8203 Rds=2MEG Cbd=1.415n Pb=.8 Mj=.5 Fc=.5 Cgso=1.61n + Cgdo=148.5p Rg=.127 Is=100.1p N=1 Tt=710n) * IR pid=IRF843 case=TO220 oregano-0.84.41/data/models/IRF252.model0000644000175000017500000000042713413640652016430 0ustar rubenruben.model IRF252 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=2.081m Kp=20.86u W=1 L=2u Vto=3.794 + Rd=67.06m Rds=888.9K Cbd=3.481n Pb=.8 Mj=.5 Fc=.5 Cgso=1.585n + Cgdo=442.1p Rg=5.549 Is=168.3p N=1 Tt=340n) * IR pid=IRF252 case=TO3 oregano-0.84.41/data/models/2N6765.model0000644000175000017500000000043113413640652016361 0ustar rubenruben.model 2N6765 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=48.24m Kp=20.74u W=1.8 L=2u Vto=3.064 + Rd=32.96m Rds=1.5MEG Cbd=3.662n Pb=.8 Mj=.5 Fc=.5 Cgso=1.429n + Cgdo=597.5p Rg=1.545 Is=6.304p N=1 Tt=542n) * IR pid=2N6765 case=TO3 oregano-0.84.41/data/models/BDV65B.model0000644000175000017500000000070113413640652016442 0ustar rubenruben.SUBCKT BDV65B 1 2 3 * TERMINALS: C B E * SGS-Thompson 100 Volt 12 Amp NPN Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 6.67K R2 4 3 33.3 D1 3 1 DSUB .MODEL QPWR NPN (IS=14.4P NF=1 BF=89 VAF=180 IKF=9.6 ISE=1.32N NE=2 + BR=4 NR=1 VAR=20 IKR=14.4 RE=55M RB=.22 RC=22M XTB=1.5 + CJE=1.6N VJE=.74 MJE=.45 CJC=231P VJC=1.1 MJC=.24 TF=89.5N TR=2.21U) .MODEL DSUB D (IS=14.4P N=1 RS=55M BV=100 IBV=.001 CJO=231P TT=2.21U) .ENDS oregano-0.84.41/data/models/IRF621.model0000644000175000017500000000043013413640652016422 0ustar rubenruben.model IRF621 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.114 Kp=20.39u W=.23 L=2u Vto=3.083 + Rd=.3209 Rds=666.7K Cbd=650.2p Pb=.8 Mj=.5 Fc=.5 Cgso=3.937n + Cgdo=227.5p Rg=7.735 Is=59.21p N=1 Tt=610n) * IR pid=IRF621 case=TO220 oregano-0.84.41/data/models/HP2277.model0000644000175000017500000000020513413640652016402 0ustar rubenruben.model HP2277 D (IS=.2N RS=9 N=1.08 BV=10 IBV=10U + CJO=.35P VJ=.65 M=.5 EG=.69 TT=72P) * H-P 5082-2277 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/BC817-16.model0000644000175000017500000000047713413640652016534 0ustar rubenruben.model BC817-16 NPN(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=190.4 ISE=299f NE=1.583 + IKF=.7695 Nk=.5467 Xtb=1.5 Br=6.313 Isc=138f Nc=2.053 Ikr=.187 + Rc=.4216 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p Mje=.3333 + Vje=.5 Tr=10n Tf=660.1p Itf=2.204 Xtf=66.65 Vtf=10) * MFG=SIEMENS pid=bc817-16 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF142.model0000644000175000017500000000043113413640652016421 0ustar rubenruben.model IRF142 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=21.94m Kp=20.61u W=.97 L=2u Vto=3.189 + Rd=42.19m Rds=444.4K Cbd=2.398n Pb=.8 Mj=.5 Fc=.5 Cgso=1.113n + Cgdo=432.1p Rg=5.659 Is=2.823p N=1 Tt=142n) * IR pid=IRF142 case=TO3 oregano-0.84.41/data/models/DB2504.model0000644000175000017500000000037713413640652016363 0ustar rubenruben.SUBCKT DB2504 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B2504 D2 4 1 B2504 D3 5 1 B2504 D4 2 4 B2504 D5 2 3 B2504 D6 2 5 B2504 .model B2504 D (IS=24.5N RS=2.67M N=1.97 BV=400 IBV=5U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 400 Volt 25 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/GI751.model0000644000175000017500000000025613413640652016313 0ustar rubenruben.model GI751 D (IS=3.62E-08 N=1.67 BV=1.33E+02 IBV=2.50E-05 + RS=1.84E-03 CJO=9.28E-10 VJ=.29 M=.55 TT=6.91E-06) * General Instrument 100 Volt 6.00 Amp 5.50 us Si Rectifier oregano-0.84.41/data/models/IRF530.model0000644000175000017500000000043213413640652016423 0ustar rubenruben.model IRF530 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=58.53m Kp=20.73u W=.68 L=2u Vto=3.191 + Rd=38.69m Rds=444.4K Cbd=1.151n Pb=.8 Mj=.5 Fc=.5 Cgso=876.7p + Cgdo=261.4p Rg=4.63 Is=1.861p N=1 Tt=125n) * IR pid=IRF530 case=TO220 oregano-0.84.41/data/models/BD139.model0000644000175000017500000000071613413640652016302 0ustar rubenruben.model BD139 NPN(IS=1e-09 BF=222.664 NF=0.85 VAF=36.4079 + IKF=0.166126 ISE=5.03418e-09 NE=1.45313 BR=1.35467 + NR=1.33751 VAR=142.931 IKR=1.66126 ISC=5.02557e-09 + NC=3.10227 RB=26.9143 IRB=0.1 RBM=0.1 + RE=0.000472454 RC=1.04109 XTB=0.727762 XTI=1.04311 + EG=1.05 CJE=1e-11 VJE=0.75 MJE=0.33 + TF=1e-09 XTF=1 VTF=10 ITF=0.01 + CJC=1e-11 VJC=0.75 MJC=0.33 XCJC=0.9 + FC=0.5 CJS=0 VJS=0.75 MJS=0.5 TR=1e-07 PTF=0 KF=0 AF=1¸ + VCEO=80 ICRATING=1A MFG=PHILIPS) oregano-0.84.41/data/models/BC848A.model0000644000175000017500000000050513413640652016405 0ustar rubenruben.model BC848A NPN(IS=7.049f XTI=3 EG=1.11 VAF=106.8 BF=182.9 ISE=85.16f + NE=1.709 IKF=.1196 Nk=.5227 Xtb=1.5 Br=3.988 Isc=10.68f + Nc=2.417 Ikr=2.721 Rc=1.374 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=9.485p Mje=.3333 Vje=.5 Tr=10n Tf=662.3p Itf=1.577 + Xtf=14.27 Vtf=10) * MFG=SIEMENS pid=bc848a case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BC548B.model0000644000175000017500000000047413413640652016410 0ustar rubenruben.model BC548B NPN(IS=7.049f XTI=3 EG=1.11 VAF=62.79 BF=374.6 ISE=68f NE=1.576 + IKF=81.57m Nk=.4767 Xtb=1.5 Br=1 Isc=12.4f Nc=1.835 Ikr=3.924 + Rc=.9747 Cjc=5.25p Mjc=.3147 Vjc=.5697 Fc=.5 Cje=11.5p + Mje=.6715 Vje=.5 Tr=10n Tf=410.2p Itf=1.491 Xtf=40.06 Vtf=10) * MFG=PHILIPS pid=bc548b case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BSX45-16.model0000644000175000017500000000047713413640652016615 0ustar rubenruben.model BSX45-16 NPN(IS=66.19f XTI=3 EG=1.11 VAF=100 BF=600.9 ISE=93.12f NE=1.31 + IKF=.1347 Nk=.5522 Xtb=1.2 Br=889.8 Isc=3.42n Nc=1.74 Ikr=12.98 + Rc=.5886 Cjc=60.73p Mjc=.3333 Vjc=.5 Fc=.5 Cje=94.85p Mje=.3333 + Vje=.5 Tr=10n Tf=1.353n Itf=2.957 Xtf=145.5 Vtf=10) * MFG=PHILIPS pid=bsx45-16 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/HP2233.model0000644000175000017500000000021213413640652016370 0ustar rubenruben.model HP2233 D (IS=120N RS=10 N=1.08 BV=5 IBV=10U + CJO=.3P VJ=.5 M=.5 EG=.69 TT=72P) * H-P 5082-2233 400 Volt .5 Amp Si Schottky Diode oregano-0.84.41/data/models/BC807-40.model0000644000175000017500000000050513413640652016520 0ustar rubenruben.model BC807-40 PNP(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=460.8 ISE=301.2f + NE=1.615 IKF=.4967 Nk=.5594 Xtb=1.5 Br=6.87 Isc=283.2f Nc=1.97 + Ikr=9.135m Rc=.3759 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=71.14p Mje=.3333 Vje=.5 Tr=10n Tf=704.3p Itf=13.89 + Xtf=1.333K Vtf=10) * MFG=SIEMENS pid=bc807-40 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/2N3417.model0000644000175000017500000000055113413640652016353 0ustar rubenruben.model 2N3417 NPN(IS=12.03E-15 ISE=3.346E-12 ISC=0 XTI=3 + BF=377.5 BR=4.379 IKF=0.1072 IKR=0 XTB=1.5 + VAF=37.37 VAR=12.5 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=8.307E-12 CJC=5.777E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.971 NC=2 MJE=0.384 MJC=0.3199 + TF=385.4E-12 TR=707.6E-12 ITF=0.17 VTF=3 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/TIP142.model0000644000175000017500000000074513413640652016445 0ustar rubenruben.SUBCKT TIP142 1 2 3 * TERMINALS: C B E * 100 Volt 10 Amp NPN Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 40 D1 3 1 DSUB .MODEL QPWR NPN (IS=12P NF=1 BF=150 VAF=180 IKF=4.64 ISE=494P NE=2 + BR=4 NR=1 VAR=20 IKR=6.96 RE=.115 RB=.46 RC=46M XTB=1.5 + CJE=1.34N VJE=.74 MJE=.45 CJC=193P VJC=1.1 MJC=.24 TF=110N TR=4.75U) .MODEL DSUB D (IS=12P N=1 RS=.115 BV=100 IBV=.001 CJO=193P TT=4.75U) .ENDS * TIP142, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/2N5400.model0000644000175000017500000000055013413640652016344 0ustar rubenruben.model 2N5400 PNP(IS=21.48E-15 ISE=21.48E-15 ISC=0 XTI=3 + BF=93.44 BR=3.874 IKF=0.1798 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.6 RB=10 + CJE=73.39E-12 CJC=17.63E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.344 NC=2 MJE=0.3777 MJC=0.5312 + TF=641.5E-12 TR=1.512E-9 ITF=0 VTF=0 XTF=0 + EG=1.11 KF=1E-9 AF=1 + VCEO=120 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/IRF510.model0000644000175000017500000000043213413640652016421 0ustar rubenruben.model IRF510 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.4508 Kp=20.68u W=.64 L=2u Vto=3.697 + Rd=21.08m Rds=444.4K Cbd=366.5p Pb=.8 Mj=.5 Fc=.5 Cgso=600.5p + Cgdo=62.71p Rg=2.977 Is=202.9f N=1 Tt=135n) * IR pid=IRF510 case=TO220 oregano-0.84.41/data/models/BCW68H.model0000644000175000017500000000050013413640652016450 0ustar rubenruben.model BCW68H PNP(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=550.3 ISE=233.3f + NE=1.478 IKF=.5906 Nk=.646 Xtb=1.5 Br=12.01 Isc=1.997p Nc=1.678 + Ikr=9.679 Rc=.5562 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=675.6p Itf=3.423 Xtf=96.44 Vtf=10) * MFG=SIEMENS pid=bcw68h case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/MUR7005.model0000644000175000017500000000021013413640652016524 0ustar rubenruben.model MUR7005 D (IS=12.9U RS=1.73M N=2.01 BV=50 IBV=25U + CJO=500P VJ=.275 M=.133 TT=72.4N) * Motorola 50 Volt 70 Amp 60M us Si Diode oregano-0.84.41/data/models/KBPC802.model0000644000175000017500000000035413413640652016527 0ustar rubenruben.SUBCKT KBPC802 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC802 D3 3 5 BPC802 D4 4 3 BPC802 D1 4 2 BPC802 .model BPC802 D (IS=18.3N RS=3.2M N=1.72 BV=160 IBV=6U + CJO=330P VJ=.75 M=.333 TT=4.32U) * Diotec 160 Volt 8 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/BF410A.model0000644000175000017500000000062013413640652016367 0ustar rubenruben.SUBCKT BF410A/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -8.8094E-001 + BETA = 2.01845E-003 + LAMBDA = 1.50475E-002 + RD = 3.57223E+000 + RS = 3.57223E+000 + IS = 1.05515E-013 + CGS = 2.80000E-012 + CGD = 4.27000E-012 + PB = 6.18391E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/KBPC808.model0000644000175000017500000000035613413640652016537 0ustar rubenruben.SUBCKT KBPC808 2 3 5 4 * IN1 IN2 + - D2 2 5 BPC808 D3 3 5 BPC808 D4 4 3 BPC808 D1 4 2 BPC808 .model BPC808 D (IS=18.3N RS=3.2M N=1.72 BV=800 IBV=8.5U + CJO=330P VJ=.75 M=.333 TT=4.32U) * Diotec 800 Volt 8 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/IRF242.model0000644000175000017500000000042713413640652016427 0ustar rubenruben.model IRF242 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.466m Kp=20.82u W=.44 L=2u Vto=3.814 + Rd=.1378 Rds=888.9K Cbd=1.813n Pb=.8 Mj=.5 Fc=.5 Cgso=1.977n + Cgdo=490.5p Rg=3.604 Is=7.07p N=1 Tt=312n) * IR pid=IRF242 case=TO3 oregano-0.84.41/data/models/HP5932.model0000644000175000017500000000020413413640652016402 0ustar rubenruben.model HP5932 D (IS=40N RS=10 N=1.08 BV=5 IBV=10U + CJO=.12P VJ=.5 M=.5 EG=.69 TT=72P) * H-P HSCH-5932 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/IRF641.model0000644000175000017500000000043313413640652016427 0ustar rubenruben.model IRF641 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=19.61m Kp=20.73u W=.66 L=2u Vto=3.788 + Rd=95.58m Rds=666.7K Cbd=1.872n Pb=.8 Mj=.5 Fc=.5 Cgso=1.628n + Cgdo=452.2p Rg=1.278 Is=16.39p N=1 Tt=312n) * IR pid=IRF641 case=TO220 oregano-0.84.41/data/models/BFG135A.model0000644000175000017500000000071513413640652016507 0ustar rubenruben.model BFG135A NPN(IS=9.6952E-15 ISE=3.7545E-15 ISC=4.5491E-18 XTI=3 + BF=86.665 NR=1.1471 IKF=1.9049 IKR=0.019155 XTB=1.5 + VAF=33.548 VAR=45.693 VJE=0.87721 VJC=1.0086 + RE=1.4768 RC=0.075508 RB=1.0193 RBM=0 IRB=0.00020816 + CJE=3.2968E-14 CJC=2.9998E-12 XCJC=0.020778 FC=0.56371 + NF=0.46449 BR=61.012 NE=0.74837 NC=1.2809 MJE=0.51738 MJC=0.39102 + TF=4.2719E-11 TR=1.3578E-10 PTF=0 ITF=0.0047293 VTF=0.11783 XTF=0.26853 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/2N6726.model0000644000175000017500000000054013413640652016357 0ustar rubenruben.model 2N6726A PNP(IS=24.64E-15 ISE=0 ISC=0 XTI=3 + BF=154.5 BR=1.424 IKF=1.25 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.06 RC=0.6 RB=10 + CJE=132.4E-12 CJC=63.67E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.5 NC=2 MJE=0.4174 MJC=0.4749 + TF=645.4E-12 TR=5.721E-9 ITF=0.8 VTF=6 XTF=4.5 + EG=1.11 KF=1E-9 AF=1 + VCEO=30 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/BF410C.model0000644000175000017500000000062013413640652016371 0ustar rubenruben.SUBCKT BF410C/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -2.3973E+000 + BETA = 1.31099E-003 + LAMBDA = 1.70958E-002 + RD = 3.03493E+000 + RS = 3.03493E+000 + IS = 5.66111E-014 + CGS = 3.42000E-012 + CGD = 2.68000E-012 + PB = 8.25674E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BC560C.model0000644000175000017500000000047713413640652016406 0ustar rubenruben.model BC560C PNP(IS=1.02f XTI=3 EG=1.11 VAF=34.62 BF=401.6 ISE=38.26p + NE=5.635 IKF=74.73m Nk=.512 Xtb=1.5 Br=9.011 Isc=1.517f + Nc=1.831 Ikr=.1469 Rc=1.151 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 + Cje=30p Mje=.3333 Vje=.5 Tr=10n Tf=524p Itf=.9847 Xtf=17.71 + Vtf=10) * MFG=PHILIPS pid=bc560c case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/MPSH10.model0000644000175000017500000000057613413640652016474 0ustar rubenruben.model MPSH10 NPN(IS=5.6E-16 ISE=6.367E-15 ISC=1E-15 XTI=3 + BF=133 BR=8 IKF=2.5E-2 IKR=1E-2 XTB=1.5 + VAF=40 VAR=6 VJE=1.195 VJC=0.5617 + RE=0.65 RC=1.8 RB=150 RBM=0.5 IRB=5E-4 + CJE=1.012E-12 CJC=1.197E-12 XCJC=0.75 FC=0.5 + NF=1 NR=0.99 NE=1.75 NC=1.167 MJE=0.4496 MJC=0.2588 + TF=6E-11 TR=40.5E-9 ITF=0.27 VTF=10 XTF=30 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=50M MFG=ZETEX) oregano-0.84.41/data/models/BF545C.model0000644000175000017500000000062013413640652016402 0ustar rubenruben.SUBCKT BF545C/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -5.0014E+000 + BETA = 5.43157E-004 + LAMBDA = 2.71505E-002 + RD = 1.20869E+001 + RS = 1.20869E+001 + IS = 3.64346E-016 + CGS = 2.00000E-012 + CGD = 2.00000E-012 + PB = 1.24659E+000 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BFG193.model0000644000175000017500000000070013413640652016404 0ustar rubenruben.model BFG193 NPN(IS=2.738E-16 ISE=1.0627E-14 ISC=3.7409E-17 XTI=3 + BF=125 BR=14.267 IKF=0.26949 IKR=0.037925 XTB=1.5 + VAF=24 VAR=3.8742 VJE=0.70276 VJC=1.1828 + RE=0.76534 RC=0.11938 RB=1.8368 RBM=1 IRB=0.00091763 + CJE=1.1824E-15 CJC=9.3503E-13 XCJC=0.053563 FC=0.72063 + NF=0.95341 NR=1.4289 NE=1.935 NC=0.94371 MJE=0.48654 MJC=0.30002 + TF=1.8828E-11 TR=1.0037E-9 PTF=0 ITF=0.00096893 VTF=0.8 XTF=0.69477 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BSX45-10.model0000644000175000017500000000050413413640652016576 0ustar rubenruben.model BSX45-10 NPN(IS=66.19f XTI=3 EG=1.11 VAF=100 BF=367.1 ISE=752.8f + NE=1.418 IKF=.1276 Nk=.5462 Xtb=1.5 Br=967.1 Isc=3.662n + Nc=1.779 Ikr=2.449 Rc=.5938 Cjc=60.73p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=94.85p Mje=.3333 Vje=.5 Tr=10n Tf=1.358n Itf=1.081 + Xtf=22.58 Vtf=10) * MFG=PHILIPS pid=bsx45-10 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/HP6512.model0000644000175000017500000000016513413640652016403 0ustar rubenruben.model HP6512 D (IS=.3N RS=5 N=1.08 BV=5 IBV=10U + CJO=.2P VJ=.65 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/IRF611.model0000644000175000017500000000043013413640652016421 0ustar rubenruben.model IRF611 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.5804 Kp=20.77u W=.45 L=2u Vto=3.886 + Rd=.5781 Rds=666.7K Cbd=220.5p Pb=.8 Mj=.5 Fc=.5 Cgso=496.3p + Cgdo=83.15p Rg=.104 Is=1.647p N=1 Tt=295n) * IR pid=IRF611 case=TO220 oregano-0.84.41/data/models/BDW92.model0000644000175000017500000000067113413640652016347 0ustar rubenruben.SUBCKT BDW92 1 2 3 * TERMINALS: C B E * SGS-Thompson 180 Volt 4 Amp PNP Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 1 3 DSUB .MODEL QPWR PNP (IS=4.8P NF=1 BF=69.2 VAF=241 IKF=2 ISE=447P NE=2 + BR=4 NR=1 VAR=24 IKR=3 RE=62.5M RB=.25 RC=25M XTB=1.5 + CJE=833P VJE=.74 MJE=.45 CJC=120P VJC=1.1 MJC=.24 TF=161N TR=3.74U) .MODEL DSUB D (IS=4.8P N=1 RS=62.5M BV=180 IBV=.001 CJO=120P TT=3.74U) .ENDS oregano-0.84.41/data/models/TIP111.model0000644000175000017500000000074213413640652016436 0ustar rubenruben.SUBCKT TIP111 1 2 3 * TERMINALS: C B E * 80 Volt 2 Amp NPN Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 60 D1 3 1 DSUB .MODEL QPWR NPN (IS=2.4P NF=1 BF=142 VAF=161 IKF=2.4 ISE=168P NE=2 + BR=4 NR=1 VAR=20 IKR=3.6 RE=.45 RB=1.8 RC=.18 XTB=1.5 + CJE=382P VJE=.74 MJE=.45 CJC=48.7P VJC=1.1 MJC=.24 TF=98.5N TR=4.25U) .MODEL DSUB D (IS=2.4P N=1 RS=.45 BV=80 IBV=.001 CJO=48.7P TT=4.25U) .ENDS * TIP111, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/2N6044.model0000644000175000017500000000066313413640652016356 0ustar rubenruben.SUBCKT 2N6044 1 2 3 * TERMINALS: C B E * Motorola 80 Volt 8 Amp NPN Darlington Transistor 08-02-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 120 D1 3 1 DSUB .MODEL QPWR NPN (IS=9.6P NF=1 BF=89.6 VAF=161 IKF=6.4 ISE=874P NE=2 + BR=4 NR=1 VAR=20 IKR=9.6 RE=85M RB=.2 RC=62M XTB=1.5 + CJE=1.52N VJE=.74 MJE=.45 CJC=150P VJC=1.1 MJC=.24 TF=16.95N TR=850N) .MODEL DSUB D (IS=9.6P N=1 RS=50M BV=80 IBV=.001 CJO=150P TT=850N) .ENDS oregano-0.84.41/data/models/2N3638A.model0000644000175000017500000000055613413640652016466 0ustar rubenruben.model 2N3638A PNP(IS=650.6E-18 ISE=200E-15 ISC=0 XTI=3 + BF=63.49 BR=4.254 IKF=1.079 IKR=0 XTB=1.5 + VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 + RE=0.15 RC=0.715 RB=10 + CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 + TF=761.3E-12 TR=121.3E-9 ITF=0.65 VTF=5 XTF=1.7 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/HP2263.model0000644000175000017500000000021213413640652016373 0ustar rubenruben.model HP2263 D (IS=.3N RS=10 N=1.08 BV=5 IBV=10U + CJO=.3P VJ=.65 M=.5 EG=.69 TT=72P) * H-P 5082-2263 400 Volt .5 Amp Si Schottky Diode oregano-0.84.41/data/models/BDW91.model0000644000175000017500000000067313413640652016350 0ustar rubenruben.SUBCKT BDW91 1 2 3 * TERMINALS: C B E * SGS-Thompson 180 Volt 4 Amp NPN Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 10K R2 4 3 150 D1 3 1 DSUB .MODEL QPWR NPN (IS=4.8P NF=1 BF=71.6 VAF=241 IKF=2 ISE=432P NE=2 + BR=4 NR=1 VAR=24 IKR=3 RE=62.5M RB=.25 RC=25M XTB=1.5 + CJE=543P VJE=.74 MJE=.45 CJC=78.4P VJC=1.1 MJC=.24 TF=116N TR=3.74U) .MODEL DSUB D (IS=4.8P N=1 RS=62.5M BV=180 IBV=.001 CJO=78.4P TT=3.74U) .ENDS oregano-0.84.41/data/models/BFN25.model0000644000175000017500000000067413413640652016337 0ustar rubenruben.model BFN25 PNP(IS=9.53E-14 ISE=8.37E-13 ISC=9.99E-11 XTI=3.00 + BF=9.80E1 BR=4.78 IKF=3.49E-2 IKR=1.00 XTB=1.5 + VAF=2.60E2 VAR=1.40E2 VJE=3.00E-1 VJC=3.00E-1 + RE=1.00E-2 RC=1.00E-2 RB=2.76E1 RBM=6.66E-2 IRB=7.02E-4 + CJE=9.54E-11 CJC=4.66E-11 XCJC=1.00 FC=5.00E-1 + NF=1.00 NR=1.55 NE=1.49 NC=1.50 MJE=4.26E-1 MJC=7.00E-1 + TF=9.52E-10 TR=0 PTF=0 ITF=4.12E-1 VTF=9.99E5 XTF=1.03 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BCV61A.model0000644000175000017500000000063513413640652016442 0ustar rubenruben.model BCV61A NPN(IS=45.000E-15 ISE=55.668E-15 ISC=1.084E-12 XTI=3.200 + BF=180 BR=7.745 IKF=0.708 IKR=1.0 XTB=1.400 + VAF=74.0 VAR=14.0 VJE=0.690 VJC=0.750 + RE=0.350 RC=1.445 RB=9.0 RBM=4.500 IRB=0.100E-3 + CJE=13.050E-12 CJC=4.100E-12 XCJC=0.650 FC=0.750 + NF=1.010 NR=1.015 NE=2.567 NC=4.063 MJE=0.375 MJC=0.420 + TF=0.620E-9 TR=2.5E-9 PTF=1.0 ITF=0.720 VTF=1.0 XTF=68.0 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/IRF460.model0000644000175000017500000000043013413640652016423 0ustar rubenruben.model IRF460 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=2.341m Kp=20.84u W=2 L=2u Vto=3.402 + Rd=.2303 Rds=2.222MEG Cbd=4.169n Pb=.8 Mj=.5 Fc=.5 Cgso=1.805n + Cgdo=129.1p Rg=1.695 Is=99.92p N=1 Tt=480n) * IR pid=IRF460 case=TO3 oregano-0.84.41/data/models/2N4123.model0000644000175000017500000000055113413640652016346 0ustar rubenruben.model 2N4123 NPN(IS=6.734E-15 ISE=6.734E-15 ISC=0 XTI=3 + BF=335.3 BR=0.7925 IKF=61.27E-3 IKR=0 XTB=1.5 + VAF=74.03 VAR=28 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=4.493E-12 CJC=3.638E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.216 NC=2 MJE=0.2593 MJC=0.3085 + TF=300.8E-12 TR=243.1E-9 ITF=0.4 VTF=4 XTF=2 + EG=1.11 KF=1E-9 AF=1 + VCEO=30 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/IRF230.model0000644000175000017500000000042313413640652016420 0ustar rubenruben.model IRF230 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1066 Kp=20.8u W=.85 L=2u Vto=3.436 + Rd=.1245 Rds=888.9K Cbd=933p Pb=.8 Mj=.5 Fc=.5 Cgso=2.32n + Cgdo=68.35p Rg=5.627 Is=151.4p N=1 Tt=515n) * IR pid=IRF230 case=TO3 oregano-0.84.41/data/models/MUR1650C.model0000644000175000017500000000022113413640652016631 0ustar rubenruben.model MUR1650C D (IS=179N RS=42M N=1.64 BV=500 IBV=500U + CJO=310P VJ=.775 M=.37 TT=109N) * Motorola MUR1650CT 500 Volt 16 Amp 60M us Si Diode oregano-0.84.41/data/models/SFH484.model0000644000175000017500000000020113413640652016425 0ustar rubenruben.MODEL SFH484 D (IS=46.4F RS=1.66 N=1.67 BV=5 IBV=10N + CJO=25P VJ=.75 M=.333 TT=864N) * Siemens 5 Volt .1 Amp .6 us GaAs Diode oregano-0.84.41/data/models/2N3906.model0000644000175000017500000000070013413640652016352 0ustar rubenruben.model 2N3906 PNP(IS=3.18E-13 ISE=1.20E-13 ISC=1.29E-13 XTI=3.00 + BF=2.52E2 BR=5.00E1 IKF=2.93E-2 IKR=1.00 XTB=1.5 + VAF=3.49E1 VAR=1.86E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.00E-2 RC=1.44 RB=4.06E1 RBM=4.87 IRB=9.90E-3 + CJE=1.01E-11 CJC=7.17E-12 XCJC=1.00 FC=5.00E-1 + NF=1.17 NR=1.13 NE=1.75 NC=1.29 MJE=3.91E-1 MJC=4.05E-1 + TF=1.35E-10 TR=238.3E-9 PTF=0 ITF=3.22E-3 VTF=9.99E5 XTF=2.73 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=100M MFG=SIEMENS) oregano-0.84.41/data/models/BC856B.model0000644000175000017500000000047713413640652016415 0ustar rubenruben.model BC856B PNP(IS=336.7f XTI=3 EG=1.11 VAF=62.37 BF=277.7 ISE=1.966p + NE=2.123 IKF=.1686 Nk=.545 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.891 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.9p Itf=2.133 Xtf=23.02 Vtf=10) * MFG=SIEMENS pid=bc856b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/2N4124.model0000644000175000017500000000070413413640652016347 0ustar rubenruben.model 2N4124 NPN(IS=5.42E-14 ISE=1.20E-15 ISC=1.08E-11 XTI=3.00 + BF=3.00E2 BR=1.19E1 IKF=5.58E-2 IKR=1.00 XTB=1.5 + VAF=2.88E2 VAR=4.18E1 VJE=3.33E-1 VJC=3.83E-1 + RE=1.29E-2 RC=1.63 RB=1.51E2 RBM=1.00E-2 IRB=1.70E-3 + CJE=8.54E-12 CJC=4.75E-12 XCJC=1.00 FC=5.00E-1 + NF=1.09 NR=1.02 NE=1.25 NC=1.66 MJE=3.68E-1 MJC=4.02E-1 + TF=1.58E-10 TR=238.3E-9 PTF=0 ITF=2.86E-4 VTF=1.90E-1 XTF=4.69 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=200M MFG=SIEMENS) oregano-0.84.41/data/models/BCW67.model0000644000175000017500000000067213413640652016351 0ustar rubenruben.model BCW67 PNP(IS=0.230E-12 ISE=39.284E-15 ISC=0.118E-15 XTI=4.800 + BF=504.327 BR=23.0 IKF=0.780 IKR=0.195 XTB=1.700 + VAF=26.0 VAR=4.500 VJE=1.0 VJC=1.0 + RE=0.203 RC=0.262 RB=0.800 RBM=0.400 IRB=0.100E-3 + CJE=57.177E-12 CJC=28.600E-12 XCJC=0.650 FC=0.750 + NF=1.0 NR=1.002 NE=1.944 NC=3.025 MJE=0.470 MJC=0.520 + TF=0.664E-9 TR=2.600E-9 PTF=1.0 ITF=0.250 VTF=2.0 XTF=6.350 + EG=1.110 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=SIEMENS) oregano-0.84.41/data/models/KBU4B.model0000644000175000017500000000033613413640652016365 0ustar rubenruben.SUBCKT KBU4B 2 3 5 4 * IN1 IN2 + - D2 2 5 BU4B D3 3 5 BU4B D4 4 3 BU4B D1 4 2 BU4B .model BU4B D (IS=10.7N RS=3M N=1.67 BV=100 IBV=5U + CJO=165P VJ=.75 M=.333 TT=4.32U) * Diotec 100 Volt 4 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/BFP182.model0000644000175000017500000000071413413640652016420 0ustar rubenruben.model BFP182 NPN(IS=4.8499E-15 ISE=8.4254E-15 ISC=5.9438E-15 XTI=3 + BF=84.113 NR=0.54818 IKF=0.14414 IKR=0.039478 XTB=1.5 + VAF=21.742 VAR=2.2595 VJE=1.0378 VJC=1.0132 + RE=2.1858 RC=1.8159 RB=3.4217 RBM=2.8263 IRB=7.1955E-5 + CJE=8.8619E-15 CJC=4.9025E-13 XCJC=0.19281 FC=0.64175 + NF=0.56639 BR=10.004 NE=0.91624 NC=0.5641 MJE=0.40796 MJC=0.31068 + TF=2.272E-11 TR=1.7541E-9 PTF=0 ITF=0.0065523 VTF=0.34608 XTF=0.43147 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BCW66H.model0000644000175000017500000000050313413640652016451 0ustar rubenruben.model BCW66H NPN(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=500.5 ISE=45.03f + NE=1.363 IKF=1.017 Nk=.7023 Xtb=1.5 Br=5.448 Isc=1.983p + Nc=1.344 Ikr=6.609 Rc=.4217 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=71.14p Mje=.3333 Vje=.5 Tr=10n Tf=697.1p Itf=2.639 + Xtf=24.55 Vtf=10) * MFG=SIEMENS pid=bcw65h case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/2N930.model0000644000175000017500000000055413413640652016273 0ustar rubenruben.model 2N930 NPN(IS=5.911E-15 ISE=5.911E-15 ISC=0 XTI=3 + BF=578.3 BR=1.313 IKF=13.5E-3 IKR=0 XTB=1.5 + VAF=62.37 VAR=21.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.61 RB=10 + CJE=4.973E-12 CJC=4.017E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.32 NC=2 MJE=0.4146 MJC=0.3174 + TF=819.8E-12 TR=4.701E-9 ITF=0.35 VTF=4 XTF=7 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/IRF831.model0000644000175000017500000000042613413640652016432 0ustar rubenruben.model IRF831 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=31.81m Kp=20.55u W=.47 L=2u Vto=3.749 + Rd=1.334 Rds=2MEG Cbd=644.1p Pb=.8 Mj=.5 Fc=.5 Cgso=1.286n + Cgdo=106.7p Rg=.1647 Is=312p N=1 Tt=585n) * IR pid=IRF831 case=TO220 oregano-0.84.41/data/models/TIP3055.model0000644000175000017500000000034013413640652016522 0ustar rubenruben.model TIP3055 NPN(IS=4.66E-12 BF=360 VAF=100 IKF=0.25 ISE=3.339E-11 + BR=2 ISC=5E-9 RB=3 IRB=0.001 RBM=0.4 RC=0.04 CJE=5.802E-10 VJE=1.2 + MJE=0.45 TF=8E-8 XTF=1 ITF=3 PTF=120 CJC=2.121E-10 MJC=0.4 TR=2.55E-6 + XTB=1 ) oregano-0.84.41/data/models/MUR1605C.model0000644000175000017500000000022113413640652016631 0ustar rubenruben.MODEL MUR1605C D (IS=179N RS=42M N=1.64 BV=50 IBV=250U + CJO=220P VJ=.759 M=.377 TT=50.4N) * Motorola MUR1605CT 50 Volt 16 Amp 35M us Si Diode oregano-0.84.41/data/models/UA741.model0000644000175000017500000000223013413640652016312 0ustar rubenruben.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 oregano-0.84.41/data/models/LEDGREEN.model0000644000175000017500000000023713413640652016743 0ustar rubenruben*Typ LED,GREEN,YELLOW,AMBER GaAs LED: Vf=2.1V Vr=4V If=40mA trr=3uS .MODEL LEDGREEN D (IS=93.1P RS=42M N=4.61 BV=4 IBV=10U + CJO=2.97P VJ=.75 M=.333 TT=4.32U) oregano-0.84.41/data/models/HP5938.model0000644000175000017500000000020313413640652016407 0ustar rubenruben.model HP5938 D (IS=.16U RS=4 N=1.08 BV=5 IBV=10U + CJO=.4P VJ=.5 M=.5 EG=.69 TT=72P) * H-P HSCH-5938 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/BY298.model0000644000175000017500000000017713413640652016336 0ustar rubenruben.model BY298 D (IS=22U RS=42M N=3.35 BV=400 IBV=10U + CJO=83.5P VJ=.75 M=.333 TT=610N) * Diotec 400 Volt 2 Amp .5 us Si Diode oregano-0.84.41/data/models/BFP22.model0000644000175000017500000000067313413640652016335 0ustar rubenruben.model BFP22 NPN(IS=1.59E-13 ISE=3.62E-16 ISC=9.06E-11 XTI=3.00 + BF=7.04E1 BR=1.76E1 IKF=1.00E1 IKR=1.00 XTB=1.5 + VAF=4.51E1 VAR=9.11E1 VJE=3.00E-1 VJC=4.64E-1 + RE=4.19E-1 RC=4.11E-1 RB=3.23E1 RBM=7.75E-2 IRB=1.30E-3 + CJE=1.31E-10 CJC=1.56E-11 XCJC=1.00 FC=5.00E-1 + NF=1.03 NR=1.11 NE=1.21 NC=1.47 MJE=4.02E-1 MJC=5.80E-1 + TF=1.73E-9 TR=0 PTF=0 ITF=1.33 VTF=9.99E5 XTF=1.00E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/IRF624.model0000644000175000017500000000043213413640652016427 0ustar rubenruben.model IRF624 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=55.64m Kp=20.25u W=.14 L=2u Vto=3.682 + Rd=.6183 Rds=1.111MEG Cbd=503.6p Pb=.8 Mj=.5 Fc=.5 Cgso=4.448n + Cgdo=405p Rg=.9234 Is=42.04p N=1 Tt=350n) * IR pid=IRF624 case=TO220 oregano-0.84.41/data/models/BFN21.model0000644000175000017500000000070013413640652016321 0ustar rubenruben.model BFN21 PNP(IS=5.35E-16 ISE=9.81E-17 ISC=1.00E-13 XTI=3.00 + BF=1.40E2 BR=1.00E-2 IKF=2.41E-2 IKR=1.00 XTB=1.5 + VAF=1.49E2 VAR=9.18E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.85E-2 RC=2.22 RB=1.99E1 RBM=2.41E-2 IRB=1.10E-2 + CJE=4.20E-11 CJC=1.65E-11 XCJC=1.00 FC=5.00E-1 + NF=8.73E-1 NR=9.84E-1 NE=1.03 NC=2.00 MJE=4.13E-1 MJC=7.00E-1 + TF=1.11E-9 TR=0 PTF=0 ITF=3.00 VTF=9.99E5 XTF=5.76E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/TL064E.model0000644000175000017500000000114713413640652016435 0ustar rubenruben.SUBCKT TL064 1 2 3 4 5 C1 11 12 3.498E-12 C2 6 7 15.00E-12 DC 5 53 DX DE 54 5 DX DLP 90 91 DX DLN 92 90 DX DP 4 3 DX EGND 99 0 POLY(2) (3,0) (4,0) 0 .5 .5 FB 7 99 POLY(5) VB VC VE VLP VLN 0 318.3E3 -300E3 300E3 300E3 -300E3 GA 6 0 11 12 94.26E-6 GCM 0 6 10 99 1.607E-9 ISS 3 10 DC 52.50E-6 HLIM 90 0 VLIM 1K J1 11 2 10 JX J2 12 1 10 JX R2 6 9 100.0E3 RD1 4 11 10.61E3 RD2 4 12 10.61E3 RO1 8 5 200 RO2 7 99 200 RP 3 4 150.0E3 RSS 10 99 3.810E6 VB 9 0 DC 0 VC 3 53 DC 2.200 VE 54 4 DC 2.200 VLIM 7 8 DC 0 VLP 91 0 DC 15 VLN 0 92 DC 15 .MODEL DX D(IS=800.0E-18) .MODEL JX PJF(IS=15.00E-12 BETA=100.5E-6 VTO=-1) .ENDS oregano-0.84.41/data/models/2N5179.model0000644000175000017500000000055013413640652016361 0ustar rubenruben.model 2N5179 NPN(IS=69.28E-18 ISE=69.28E-18 ISC=0 XTI=3 + BF=282.1 BR=1.176 IKF=22.03E-3 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.15 RC=4 RB=10 + CJE=1.52E-12 CJC=1.042E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.177 NC=2 MJE=0.3223 MJC=0.2468 + TF=135.6E-12 TR=1.588E-9 ITF=0.27 VTF=10 XTF=30 + EG=1.11 KF=1E-9 AF=1 + VCEO=12 ICRATING=50M MFG=NSC) oregano-0.84.41/data/models/HP5810.model0000644000175000017500000000020513413640652016376 0ustar rubenruben.model HP5810 D (IS=62P RS=12 N=1.08 BV=4 IBV=10U + CJO=.09P VJ=.65 M=.5 EG=.69 TT=72P) * H-P HSCH-5810 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/BSR13.model0000644000175000017500000000071313413640652016347 0ustar rubenruben.model BSR13 NPN(IS=29.13E-15 ISE=9.652E-15 ISC=320.3E-12 XTI=3.000 + BF=256.7 BR=6.590 IKF=489.9E-3 IKR=192.9E-3 XTB=0.000 + VAF=80.99 VAR=101.2 VJE=689.1E-3 VJC=662.2E-3 + RE=193.4E-3 RC=224.8E-3 RB=1.000 RBM=1.000 IRB=1.000E-3 + CJE=25.89E-12 CJC=10.11E-12 XCJC=0.5946 FC=938.8E-3 + NF=992.6E-3 NR=984.4E-3 NE=1.516 NC=1.608 MJE=366.8E-3 MJC=416.0E-3 + TF=293.9E-12 TR=320.0E-9 PTF=0.000 ITF=4.797 VTF=20.00 XTF=71.78 + EG=1.110 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/TL064M.model0000644000175000017500000000171413413640652016445 0ustar rubenruben* TL064 operational amplifier *"macromodel" subcircuit * * connections: * 1 - non-inverting input * 2 - inverting input * 3 - positive power supply * 4 - negative power supply * 5 - output * .subckt TL064/MC 1 2 3 4 5 * c1 11 12 1.061E-12 c2 6 7 5.000E-12 css 10 99 4.000E-12 dc 5 53 dx de 54 5 dx dlp 90 91 dx dln 92 90 dx dp 4 3 dx egnd 99 0 poly(2) (3,0) (4,0) 0 .5 .5 fb 7 99 poly(5) vb vc ve vlp vln 0 4.775E6 + -5E6 5E6 5E6 -5E6 ga 6 0 11 12 125.7E-6 gcm 0 6 10 99 6.298E-9 iss 3 10 dc 90.00E-6 hlim 90 0 vlim 1K j1 11 2 10 jx j2 12 1 10 jx r2 6 9 100.0E3 rd1 4 11 7.958E3 rd2 4 12 7.958E3 ro1 8 5 200 ro2 7 99 100 rp 3 4 285.7E3 rss 10 99 2.222E6 vb 9 0 dc 0 vc 3 53 dc 1 ve 54 4 dc 1 vlim 7 8 dc 0 vlp 91 0 dc 10 vln 0 92 dc 10 .model dx D(Is=800.0E-18) .model jx PJF(Is=1.500E-12 Beta=175.5E-6 + Vto=-1) .ends oregano-0.84.41/data/models/SFH462.model0000644000175000017500000000020513413640652016425 0ustar rubenruben.MODEL SFH462 D (IS=3.20E-20 RS=5.05 N=1.67 BV=3 IBV=10N + CJO=30P VJ=.75 M=.333 TT=144N) * Siemens 3 Volt 50M Amp .1 us GaAs Diode oregano-0.84.41/data/models/BC638.model0000644000175000017500000000067313413640652016307 0ustar rubenruben.model BC638 PNP(IS=4.60E-12 ISE=1.99E-14 ISC=9.45E-17 XTI=3.00 + BF=1.85E2 BR=4.28 IKF=9.69E-1 IKR=1.00 XTB=1.5 + VAF=1.44E2 VAR=1.97E1 VJE=5.43E-1 VJC=3.62E-1 + RE=1.00E-2 RC=2.62E-1 RB=4.84 RBM=1.00E1 IRB=1.62E-1 + CJE=1.27E-10 CJC=8.00E-11 XCJC=1.00 FC=5.00E-1 + NF=1.19 NR=1.23 NE=1.23 NC=2.00 MJE=4.94E-1 MJC=5.07E-1 + TF=1.07E-9 TR=0 PTF=0 ITF=4.53E-1 VTF=9.99E5 XTF=6.31E-1 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/2N6764.model0000644000175000017500000000042413413640652016362 0ustar rubenruben.model 2N6764 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=21.3m Kp=20.52u W=.51 L=2u Vto=3.061 + Rd=3.109m Rds=1MEG Cbd=3.654n Pb=.8 Mj=.5 Fc=.5 Cgso=9.027n + Cgdo=1.679n Rg=8.93 Is=41.6f N=1 Tt=495n) * IR pid=2N6764 case=TO3 oregano-0.84.41/data/models/BSX46-16.model0000644000175000017500000000047713413640652016616 0ustar rubenruben.model BSX46-16 NPN(IS=66.19f XTI=3 EG=1.11 VAF=100 BF=600.9 ISE=93.12f NE=1.31 + IKF=.1347 Nk=.5522 Xtb=1.2 Br=889.8 Isc=3.42n Nc=1.74 Ikr=12.98 + Rc=.5886 Cjc=48.58p Mjc=.3333 Vjc=.5 Fc=.5 Cje=94.85p Mje=.3333 + Vje=.5 Tr=10n Tf=1.361n Itf=2.994 Xtf=146.2 Vtf=10) * MFG=PHILIPS pid=bsx46-16 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/BCP68S.model0000644000175000017500000000067213413640652016466 0ustar rubenruben.model BCP68S NPN(IS=9.77E-14 ISE=1.49E-16 ISC=4.11E-14 XTI=3.00 + BF=1.61E2 BR=3.66 IKF=7.74 IKR=1.00 XTB=1.5 + VAF=5.63E2 VAR=3.49E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.01E-2 RC=2.06E-1 RB=1.91E1 RBM=3.03 IRB=6.95E-2 + CJE=2.52E-10 CJC=1.37E-10 XCJC=1.00 FC=5.00E-1 + NF=9.64E-1 NR=1.23 NE=1.01 NC=1.02 MJE=4.11E-1 MJC=4.87E-1 + TF=1.38E-9 TR=0 PTF=0 ITF=1.00E1 VTF=9.99E5 XTF=3.26E1 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/HP2835.model0000644000175000017500000000020313413640652016400 0ustar rubenruben.model HP2835 D (IS=22N RS=5 N=1.08 BV=9 IBV=10U + CJO=.7P VJ=.56 M=.5 EG=.69 TT=72P) * H-P 5082-2835 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/BC547B.model0000644000175000017500000000047413413640652016407 0ustar rubenruben.model BC547B NPN(IS=7.049f XTI=3 EG=1.11 VAF=62.79 BF=374.6 ISE=68f NE=1.576 + IKF=81.57m Nk=.4767 Xtb=1.5 Br=1 Isc=12.4f Nc=1.835 Ikr=3.924 + Rc=.9747 Cjc=5.25p Mjc=.3147 Vjc=.5697 Fc=.5 Cje=11.5p + Mje=.6715 Vje=.5 Tr=10n Tf=410.2p Itf=1.491 Xtf=40.06 Vtf=10) * MFG=PHILIPS pid=bc547b case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BSP19.model0000644000175000017500000000062313413640652016353 0ustar rubenruben.model BSP19 NPN(IS=1.524E-14 ISE=6.205E-15 ISC=5.528E-13 XTI=3 + BF=99.15 BR=2.769 IKF=0.287 IKR=0.1 XTB=1.5 + VAF=222.6 VAR=1000 VJE=0.6926 VJC=0.1878 + RE=0.25 RC=1.08 RB=28.54 RBM=11.96 IRB=0.0001965 + CJE=4.144E-11 CJC=6.207E-12 XCJC=0.4132 FC=0.8605 + NF=0.9939 NR=0.98 NE=1.35 NC=1.3 MJE=0.338 MJC=0.1811 + TF=1.3E-09 TR=5.5E-07 PTF=0 ITF=0.08 VTF=3.5 XTF=40 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BAS21.model0000644000175000017500000000021513413640652016322 0ustar rubenruben.MODEL BAS21 D IS=8.402E-9 N=2.011 RS=.5125 XTI=3 + EG=1.11 BV=435 IBV=4.139E-3 TT=41.84E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/IRF448.model0000644000175000017500000000042713413640652016437 0ustar rubenruben.model IRF448 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.067m Kp=20.7u W=.76 L=2u Vto=3.748 + Rd=.4784 Rds=2.222MEG Cbd=1.91n Pb=.8 Mj=.5 Fc=.5 Cgso=1.984n + Cgdo=165.4p Rg=.409 Is=156.8p N=1 Tt=750n) * IR pid=IRF448 case=TO3 oregano-0.84.41/data/models/2N6760.model0000644000175000017500000000042613413640652016360 0ustar rubenruben.model 2N6760 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1118 Kp=20.77u W=.92 L=2u Vto=3.179 + Rd=.6718 Rds=4MEG Cbd=611.5p Pb=.8 Mj=.5 Fc=.5 Cgso=1.623n + Cgdo=191.7p Rg=1.314 Is=4.097p N=1 Tt=1285n) * IR pid=2N6760 case=TO3 oregano-0.84.41/data/models/2N6667.model0000644000175000017500000000057013413640652016366 0ustar rubenruben.SUBCKT 2N6667 1 2 3 * TERMINALS: C B E Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 120 D1 1 3 DSUB .MODEL QPWR PNP (IS=12P NF=1 BF=156 VAF=139 IKF=5.5 + ISE=21.2P NE=2 BR=4 NR=1 VAR=20 IKR=8.25 RE=.115 RB=.46 + RC=46M XTB=1.5 CJE=22.30N CJC=264P TF=5.5P TR=500N) .MODEL DSUB D (IS=12P N=1 RS=.115 BV=60 IBV=.001 + CJO=264P TT=570N) .ENDS * 60 Volt 10 Amp PNP Darlington oregano-0.84.41/data/models/LD274.model0000644000175000017500000000020013413640652016300 0ustar rubenruben.MODEL LD274 D (IS=4.64N RS=.633 N=2.85 BV=5 IBV=10N + CJO=25P VJ=.75 M=.333 TT=1.44U) * Siemens 5 Volt .1 Amp 1 us GaAs Diode oregano-0.84.41/data/models/BCY79-7.model0000644000175000017500000000050313413640652016513 0ustar rubenruben.model BCY79-7 PNP(IS=55.58p XTI=3 EG=1.11 VAF=106.8 BF=188.5 ISE=230.7p + NE=2.751 IKF=74.06m Nk=.5019 Xtb=1.5 Br=2.429 Isc=34.94n + Nc=2.499 Ikr=1.387 Rc=2.829 Cjc=16p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=16.78p Mje=.3333 Vje=.5 Tr=283n Tf=762.6p Itf=5.95 + Xtf=180.6 Vtf=10) * MFG=PHILIPS pid=bcy79-7 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/BCX69.model0000644000175000017500000000070013413640652016344 0ustar rubenruben.model BCX69 PNP(IS=7.82E-15 ISE=3.05E-17 ISC=1.00E-17 XTI=3.00 + BF=2.25E2 BR=9.96 IKF=5.88 IKR=1.00 XTB=1.5 + VAF=1.00E2 VAR=5.00E1 VJE=5.03E-1 VJC=3.00E-1 + RE=1.34E-1 RC=2.17E-2 RB=1.00E-2 RBM=1.00E-2 IRB=1.00E-6 + CJE=3.28E-10 CJC=1.94E-10 XCJC=1.00 FC=5.00E-1 + NF=8.54E-1 NR=8.80E-1 NE=1.00 NC=2.00 MJE=5.26E-1 MJC=4.03E-1 + TF=1.39E-9 TR=0 PTF=0 ITF=4.21E1 VTF=9.99E5 XTF=4.93E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/2N6043.model0000644000175000017500000000066213413640652016354 0ustar rubenruben.SUBCKT 2N6043 1 2 3 * TERMINALS: C B E * Motorola 60 Volt 8 Amp NPN Darlington Transistor 08-02-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 120 D1 3 1 DSUB .MODEL QPWR NPN (IS=9.6P NF=1 BF=95.4 VAF=139 IKF=6.4 ISE=822P NE=2 + BR=4 NR=1 VAR=20 IKR=9.6 RE=80M RB=.2 RC=60M XTB=1.5 + CJE=1.52N VJE=.74 MJE=.45 CJC=155P VJC=1.1 MJC=.24 TF=15.5N TR=890N) .MODEL DSUB D (IS=9.6P N=1 RS=50M BV=60 IBV=.001 CJO=155P TT=890N) .ENDS oregano-0.84.41/data/models/2N4356.model0000644000175000017500000000055213413640652016357 0ustar rubenruben.model 2N4356 PNP(IS=12.27E-12 ISE=12.27E-12 ISC=0 XTI=3 + BF=110.2 BR=1.252 IKF=1.036 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.06 RC=0.6 RB=10 + CJE=106.7E-12 CJC=48.28E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.558 NC=2 MJE=0.5168 MJC=0.5615 + TF=866.1E-12 TR=489.1E-9 ITF=0.2 VTF=2 XTF=0.8 + EG=1.11 KF=1E-9 AF=1 + VCEO=80 ICRATING=500E-3 MFG=NSC) oregano-0.84.41/data/models/BCW66F.model0000644000175000017500000000050313413640652016447 0ustar rubenruben.model BCW66F NPN(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=242.4 ISE=44.98f + NE=1.302 IKF=1.006 Nk=.7057 Xtb=1.5 Br=5.128 Isc=6.206p + Nc=1.474 Ikr=6.858 Rc=.4184 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=71.14p Mje=.3333 Vje=.5 Tr=10n Tf=707.7p Itf=5.249 + Xtf=23.37 Vtf=10) * MFG=SIEMENS pid=bcw65f case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF623.model0000644000175000017500000000043013413640652016424 0ustar rubenruben.model IRF623 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.114 Kp=20.39u W=.23 L=2u Vto=3.083 + Rd=.5239 Rds=666.7K Cbd=650.2p Pb=.8 Mj=.5 Fc=.5 Cgso=3.937n + Cgdo=227.5p Rg=7.735 Is=1.801n N=1 Tt=610n) * IR pid=IRF623 case=TO220 oregano-0.84.41/data/models/SFH414.model0000644000175000017500000000017713413640652016432 0ustar rubenruben.MODEL SFH414 D (IS=473P RS=.808 N=2.68 BV=5 IBV=1U + CJO=25P VJ=.75 M=.333 TT=720N) * Siemens 5 Volt .1 Amp .5 us GaAs Diode oregano-0.84.41/data/models/2SA970.model0000644000175000017500000000041213413640652016376 0ustar rubenruben.model 2SA970 PNP(Is=465.4f Xti=3 Eg=1.11 Vaf=57 Bf=407.6 Ise=4.683p Ne=2.051 + Ikf=.3998 Nk=1.192 Xtb=1.5 Var=100 Br=1 Isc=465.4f Nc=1.048 Ikr=6.032 Rc=2.343 + Cjc=11.59p Mjc=.4014 Vjc=1.155 Fc=.5 Cje=5p Mje=.3333 Vje=.75 Tr=10n Tf=1.252n + Itf=1 Xtf=0 Vtf=10) oregano-0.84.41/data/models/IRF9242.model0000644000175000017500000000043413413640652016516 0ustar rubenruben.model IRF9242 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=80.81m Kp=10.53u W=1.9 L=2u + Vto=-3.807 Rd=.4515 Rds=888.9K Cbd=1.436n Pb=.8 Mj=.5 Fc=.5 + Cgso=4.933n Cgdo=51.23p Rg=.6716 Is=1.825f N=2 Tt=325n) * IR pid=IRF9242 case=TO3 oregano-0.84.41/data/models/IRF225.model0000644000175000017500000000043113413640652016423 0ustar rubenruben.model IRF225 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=82.55m Kp=20.12u W=.2 L=2u Vto=3.803 + Rd=.7773 Rds=1.111MEG Cbd=514.4p Pb=.8 Mj=.5 Fc=.5 Cgso=3.913n + Cgdo=354.3p Rg=2.916 Is=311.4p N=1 Tt=350n) * IR pid=IRF225 case=TO3 oregano-0.84.41/data/models/FE1C.model0000644000175000017500000000020313413640652016225 0ustar rubenruben.model FE1C D (IS=2.51N RS=28.2M N=1.42 BV=150 IBV=1U + CJO=42.4P VJ=.75 M=.333 TT=21.6N) * Diotec 150 Volt 1 Amp 15M us Si Diode oregano-0.84.41/data/models/IRF614.model0000644000175000017500000000043013413640652016424 0ustar rubenruben.model IRF614 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.3142 Kp=21.18u W=.19 L=2u Vto=3.828 + Rd=1.2 Rds=1.111MEG Cbd=261.3p Pb=.8 Mj=.5 Fc=.5 Cgso=2.279n + Cgdo=194.6p Rg=.514 Is=18.26p N=1 Tt=330n) * IR pid=IRF614 case=TO220 oregano-0.84.41/data/models/IRF722.model0000644000175000017500000000043313413640652016427 0ustar rubenruben.model IRF722 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=41.38m Kp=20.58u W=.23 L=2u Vto=3.78 + Rd=1.689 Rds=1.778MEG Cbd=415.4p Pb=.8 Mj=.5 Fc=.5 Cgso=1.676n + Cgdo=149.3p Rg=1.217 Is=385.6p N=1 Tt=535n) * IR pid=IRF722 case=TO220 oregano-0.84.41/data/models/HP320X.model0000644000175000017500000000016613413640652016443 0ustar rubenruben.model HP320X D (IS=70N RS=10 N=1.08 BV=4 IBV=10U + CJO=.15P VJ=.5 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/HP5816.model0000644000175000017500000000020313413640652016402 0ustar rubenruben.model HP5816 D (IS=62P RS=4 N=1.08 BV=4 IBV=10U + CJO=.2P VJ=.65 M=.5 EG=.69 TT=72P) * H-P HSCH-5816 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/BC327S.model0000644000175000017500000000064213413640652016421 0ustar rubenruben.model BC327S PNP(IS=0.230E-12 ISE=39.284E-15 ISC=0.118E-15 XTI=4.800 + BF=504.327 BR=23.0 IKF=0.780 IKR=0.195 XTB=1.700 + VAF=26.0 VAR=4.500 VJE=1.0 VJC=1.0 + RE=0.203 RC=0.262 RB=0.800 RBM=0.400 IRB=0.100E-3 + CJE=57.177E-12 CJC=28.600E-12 XCJC=0.650 FC=0.750 + NF=1.0 NR=1.002 NE=1.944 NC=3.025 MJE=0.470 MJC=0.520 + TF=0.664E-9 TR=2.600E-9 PTF=1.0 ITF=0.250 VTF=2.0 XTF=6.350 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/IRF362.model0000644000175000017500000000043013413640652016424 0ustar rubenruben.model IRF362 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=360u Kp=21.24u W=1.4 L=2u Vto=3.820 + Rd=.1599 Rds=1.778MEG Cbd=4.086n Pb=.8 Mj=.5 Fc=.5 Cgso=2.245n + Cgdo=229.5p Rg=2.633 Is=1.849n N=1 Tt=560n) * IR pid=IRF362 case=TO3 oregano-0.84.41/data/models/2N5088.model0000644000175000017500000000055513413640652016365 0ustar rubenruben.model 2N5088 NPN(IS=5.911E-15 ISE=5.911E-15 ISC=0 XTI=3 + BF=112 BR=1.271 IKF=14.92E-3 IKR=0 XTB=1.5 + VAF=62.37 VAR=21.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.61 RB=10 + CJE=4.973E-12 CJC=4.017E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.394 NC=2 MJE=0.4146 MJC=0.3174 + TF=821.7E-12 TR=4.673E-9 ITF=0.35 VTF=4 XTF=7 + EG=1.11 KF=1E-9 AF=1 + VCEO=30 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/BC369S.model0000644000175000017500000000070113413640652016423 0ustar rubenruben.model BC369S PNP(IS=7.82E-15 ISE=3.05E-17 ISC=1.00E-17 XTI=3.00 + BF=2.25E2 BR=9.96 IKF=5.88 IKR=1.00 XTB=1.5 + VAF=1.00E2 VAR=5.00E1 VJE=5.03E-1 VJC=3.00E-1 + RE=1.34E-1 RC=2.17E-2 RB=1.00E-2 RBM=1.00E-2 IRB=1.00E-6 + CJE=3.28E-10 CJC=1.94E-10 XCJC=1.00 FC=5.00E-1 + NF=8.54E-1 NR=8.80E-1 NE=1.00 NC=2.00 MJE=5.26E-1 MJC=4.03E-1 + TF=1.39E-9 TR=0 PTF=0 ITF=4.21E1 VTF=9.99E5 XTF=4.93E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/2N6758.model0000644000175000017500000000044113413640652016364 0ustar rubenruben.model 2N6758 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1145 Kp=19.85u W=1.1 L=2u Vto=3.391 + Rd=.1199 Rds=2MEG Cbd=1.068n Pb=.8 Mj=.5 Fc=.5 Cgso=2.32n + Cgdo=68.35p Rg=6.086 Is=809.2f N=1 Tt=985n) * Int'l Rectifier pid=2N6758 case=TO3 oregano-0.84.41/data/models/BD334.model0000644000175000017500000000067613413640652016304 0ustar rubenruben.SUBCKT BD334 1 2 3 * TERMINALS: C B E * SGS-Thompson 80 Volt 6 Amp PNP Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 13.3K R2 4 3 66.7 D1 1 3 DSUB .MODEL QPWR PNP (IS=7.2P NF=1 BF=154 VAF=161 IKF=4 ISE=347P NE=2 + BR=4 NR=1 VAR=20 IKR=6 RE=91.7M RB=.366 RC=36.6M XTB=1.5 + CJE=1.24N VJE=.74 MJE=.45 CJC=179P VJC=1.1 MJC=.24 TF=98.4N TR=1.78U) .MODEL DSUB D (IS=7.2P N=1 RS=91.7M BV=80 IBV=.001 CJO=179P TT=1.78U) .ENDS oregano-0.84.41/data/models/TIP141.model0000644000175000017500000000074413413640652016443 0ustar rubenruben.SUBCKT TIP141 1 2 3 * TERMINALS: C B E * 80 Volt 10 Amp NPN Darlington Transistor 08-04-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 40 D1 3 1 DSUB .MODEL QPWR NPN (IS=12P NF=1 BF=150 VAF=161 IKF=4.64 ISE=494P NE=2 + BR=4 NR=1 VAR=20 IKR=6.96 RE=.115 RB=.46 RC=46M XTB=1.5 + CJE=1.34N VJE=.74 MJE=.45 CJC=193P VJC=1.1 MJC=.24 TF=98.5N TR=4.25U) .MODEL DSUB D (IS=12P N=1 RS=.115 BV=80 IBV=.001 CJO=193P TT=4.25U) .ENDS * TIP141, MOTOROLA BIPOLAR POWER TRANSISITOR DATA BOOK oregano-0.84.41/data/models/BAR99.model0000644000175000017500000000021713413640652016342 0ustar rubenruben.MODEL BAR99 D IS=4.858E-9 N=2.038 RS=1.898 XTI=3 + EG=1.11 BV=164.1 IBV=12.94E-3 TT=4.184E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/BCW29.model0000644000175000017500000000053413413640652016344 0ustar rubenruben.model BCW29 PNP(IS=1.149E-14 ISE=5E-14 ISC=1.43E-14 XTI=3 + BF=330 BR=13 IKF=0.1 IKR=0.012 XTB=1.5 + VAF=84.56 VAR=8.15 VJE=0.65 VJC=0.565 + RE=0.4 RC=0.95 RB=0.2 + CJE=16E-12 CJC=10.5E-12 XCJC=0.75 FC=0.5 + NF=0.9872 NR=0.996 NE=1.4 NC=1.1 MJE=0.415 MJC=0.415 + TF=0.493E-9 TR=73.55E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/IRF441.model0000644000175000017500000000042613413640652016427 0ustar rubenruben.model IRF441 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.819m Kp=20.87u W=.61 L=2u Vto=3.873 + Rd=.6724 Rds=2MEG Cbd=1.365n Pb=.8 Mj=.5 Fc=.5 Cgso=1.764n + Cgdo=165.5p Rg=.1466 Is=441.3p N=1 Tt=710n) * IR pid=IRF441 case=TO3 oregano-0.84.41/data/models/IRF331.model0000644000175000017500000000042613413640652016425 0ustar rubenruben.model IRF331 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.702m Kp=20.47u W=.33 L=2u Vto=3.6 + Rd=.6483 Rds=1.556MEG Cbd=665.2p Pb=.8 Mj=.5 Fc=.5 Cgso=1.595n + Cgdo=219.6p Rg=.1103 Is=139p N=1 Tt=515n) * IR pid=IRF331 case=TO3 oregano-0.84.41/data/models/DB25005.model0000644000175000017500000000040513413640652016434 0ustar rubenruben.SUBCKT DB25005 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B25005 D2 4 1 B25005 D3 5 1 B25005 D4 2 4 B25005 D5 2 3 B25005 D6 2 5 B25005 .model B25005 D (IS=24.4N RS=2.64M N=1.97 BV=50 IBV=2U + CJO=1.02N VJ=.75 M=.333 TT=4.32U) * Diotec 50 Volt 25 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BC369.model0000644000175000017500000000047613413640652016311 0ustar rubenruben.model BC369 PNP(IS=13.01f XTI=3 EG=1.11 VAF=100 BF=191.1 ISE=105f NE=1.695 + IKF=2.253 Nk=.5176 Xtb=1.5 Br=9.046MEG Isc=853.3f Nc=9.905 + Ikr=116.1 Rc=.1694 Cjc=87.73p Mjc=.3333 Vjc=.5 Fc=.5 Cje=261p + Mje=.3333 Vje=.5 Tr=10n Tf=998.5p Itf=14.84 Xtf=15.37 Vtf=10) * MFG=PHILIPS pid=bc369 case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BDV64A.model0000644000175000017500000000067613413640652016453 0ustar rubenruben.SUBCKT BDV64A 1 2 3 * TERMINALS: C B E * SGS-Thompson 80 Volt 12 Amp PNP Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 6.67K R2 4 3 33.3 D1 1 3 DSUB .MODEL QPWR PNP (IS=14.4P NF=1 BF=81.3 VAF=161 IKF=8 ISE=1.32N NE=2 + BR=4 NR=1 VAR=20 IKR=12 RE=55M RB=.22 RC=22M XTB=1.5 + CJE=2.47N VJE=.74 MJE=.45 CJC=357P VJC=1.1 MJC=.24 TF=89.5N TR=1.87U) .MODEL DSUB D (IS=14.4P N=1 RS=55M BV=80 IBV=.001 CJO=357P TT=1.87U) .ENDS oregano-0.84.41/data/models/BFS483.model0000644000175000017500000000071413413640652016427 0ustar rubenruben.model BFS483 NPN(IS=1.0345E-15 ISE=1.6818E-14 ISC=1.3559E-15 XTI=3 + BF=115.98 NR=0.99543 IKF=0.14562 IKR=0.013483 XTB=1.5 + VAF=14.772 VAR=3.4276 VJE=1.0792 VJC=1.1967 + RE=1.3435 RC=0.20486 RB=2.5426 RBM=1.0112 IRB=0.00043801 + CJE=2.3077E-14 CJC=4.6011E-13 XCJC=0.053823 FC=0.54852 + NF=0.80799 BR=10.016 NE=1.2149 NC=0.85331 MJE=0.45354 MJC=0.3 + TF=2.2746E-11 TR=1.0553E-9 PTF=0 ITF=0.0018773 VTF=0.50905 XTF=0.36823 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BF822.model0000644000175000017500000000063113413640652016277 0ustar rubenruben.model BF822 NPN(IS=9.109E-15 ISE=5.02E-24 ISC=6.582E-12 XTI=3 + BF=141.1 BR=11.42 IKF=0.009124 IKR=0.02146 XTB=1.5 + VAF=22.16 VAR=93 VJE=0.7202 VJC=0.158 + RE=0.3288 RC=0.5195 RB=1 RBM=0.5 IRB=1E-06 + CJE=1.504E-11 CJC=3.751E-12 XCJC=0.1041 FC=0.895 + NF=0.9949 NR=0.9917 NE=2.5 NC=1.397 MJE=0.3499 MJC=0.2757 + TF=1.26E-09 TR=1E-08 PTF=0 ITF=0.1815 VTF=2.447 XTF=298.9 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BF824.model0000644000175000017500000000061713413640652016305 0ustar rubenruben.model BF824 PNP(IS=2.948E-16 ISE=1.879E-14 ISC=2.21E-15 XTI=3 + BF=42 BR=1.5 IKF=0.05266 IKR=0.05 XTB=1.5 + VAF=35 VAR=33.62 VJE=0.7113 VJC=0.4038 + RE=0.1038 RC=4.2 RB=1 RBM=0.5 IRB=1E-06 + CJE=2.453E-12 CJC=3.237E-12 XCJC=0.0464 FC=0.8618 + NF=0.99 NR=0.9809 NE=2.469 NC=1.25 MJE=0.3218 MJC=0.3117 + TF=2.602E-10 TR=1E-32 PTF=0 ITF=0.1748 VTF=2.773 XTF=9.349 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/2N5550.model0000644000175000017500000000056213413640652016355 0ustar rubenruben.model 2N5550 NPN(IS=2.511E-15 ISE=2.511E-15 ISC=0 XTI=3 + BF=213.4 BR=3.24 IKF=0.3495 IKR=0 XTB=1.5 + VAF=100 VAR=30 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=18.79E-12 CJC=4.883E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.241 NC=2 MJE=0.3416 MJC=0.3047 + TF=560.1E-12 TR=1.212E-9 ITF=50E-3 VTF=5 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=140 ICRATING=500E-3 MFG=NSC-FAIRCHILD) oregano-0.84.41/data/models/MPSA43.model0000644000175000017500000000070413413640652016464 0ustar rubenruben.model MPSA43 NPN(IS=1.59E-13 ISE=3.62E-16 ISC=9.06E-11 XTI=3.00 + BF=7.04E1 BR=1.76E1 IKF=1.00E1 IKR=1.00 XTB=1.5 + VAF=4.51E1 VAR=9.11E1 VJE=3.00E-1 VJC=4.64E-1 + RE=4.19E-1 RC=4.11E-1 RB=3.23E1 RBM=7.75E-2 IRB=1.30E-3 + CJE=1.31E-10 CJC=1.56E-11 XCJC=1.00 FC=5.00E-1 + NF=1.03 NR=1.11 NE=1.21 NC=1.47 MJE=4.02E-1 MJC=5.80E-1 + TF=1.73E-9 TR=934.3E-12 PTF=0 ITF=1.33 VTF=9.99E5 XTF=1.00E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=100M MFG=SIEMENS) oregano-0.84.41/data/models/DB1502.model0000644000175000017500000000037613413640652016357 0ustar rubenruben.SUBCKT DB1502 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B1502 D2 4 1 B1502 D3 5 1 B1502 D4 2 4 B1502 D5 2 3 B1502 D6 2 5 B1502 .model B1502 D (IS=45.3N RS=1.92M N=2.34 BV=200 IBV=4U + CJO=618P VJ=.75 M=.333 TT=4.32U) * Diotec 200 Volt 15 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BFS481.model0000644000175000017500000000071613413640652016427 0ustar rubenruben.model BFS481 NPN(IS=1.0519E-18 ISE=1.2603E-14 ISC=1.1195E-17 XTI=3 + BF=96.461 NR=0.87757 IKF=0.12146 IKR=0.24951 XTB=1.5 + VAF=22.403 VAR=5.1127 VJE=0.73155 VJC=1.1633 + RE=2.1372 RC=2.2171 RB=9.9037 RBM=6.6315 IRB=0.00069278 + CJE=1.8168E-15 CJC=3.1969E-13 XCJC=0.082903 FC=0.99768 + NF=0.90617 BR=16.504 NE=1.7631 NC=1.6528 MJE=0.43619 MJC=0.30013 + TF=1.7028E-11 TR=2.7449E-9 PTF=0 ITF=0.0010549 VTF=0.12571 XTF=0.33814 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BFR280.model0000644000175000017500000000070513413640652016421 0ustar rubenruben.model BFR280 NPN(IS=6.472E-15 ISE=1.5596E-14 ISC=1.409E-15 XTI=3 + BF=89.888 BR=20.238 IKF=0.073457 IKR=0.012696 XTB=1.5 + VAF=25.609 VAR=5.6909 VJE=0.70035 VJC=1.1943 + RE=2.4518 RC=6.989 RB=15 RBM=14.999 IRB=3.1958E-5 + CJE=3.6218E-14 CJC=2.5299E-13 XCJC=0.19188 FC=0.96275 + NF=1.0801 NR=0.83403 NE=1.6163 NC=1.0651 MJE=0.69773 MJC=0.30017 + TF=1.1744E-11 TR=2.3693E-9 PTF=0 ITF=0.0062179 VTF=0.2035 XTF=0.21585 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/BC847C.model0000644000175000017500000000050513413640652016406 0ustar rubenruben.model BC847C NPN(IS=7.049f XTI=3 EG=1.11 VAF=29.03 BF=462.4 ISE=57.19f + NE=2.002 IKF=.1609 Nk=.6124 Xtb=1.5 Br=3.988 Isc=10.68f + Nc=2.417 Ikr=2.721 Rc=1.374 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=9.485p Mje=.3333 Vje=.5 Tr=10n Tf=663.1p Itf=1.423 + Xtf=14.94 Vtf=10) * MFG=SIEMENS pid=bc847c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BC857C.model0000644000175000017500000000050013413640652016402 0ustar rubenruben.model BC857C PNP(IS=336.7f XTI=3 EG=1.11 VAF=29.03 BF=462.2 ISE=1.648p + NE=2.405 IKF=.1165 Nk=.5254 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.791 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.4p Itf=3.088 Xtf=41.48 Vtf=10) * MFG=SIEMENS pid=bc857c case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BDV65A.model0000644000175000017500000000067713413640652016455 0ustar rubenruben.SUBCKT BDV65A 1 2 3 * TERMINALS: C B E * SGS-Thompson 80 Volt 12 Amp NPN Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 6.67K R2 4 3 33.3 D1 3 1 DSUB .MODEL QPWR NPN (IS=14.4P NF=1 BF=89 VAF=161 IKF=9.6 ISE=1.32N NE=2 + BR=4 NR=1 VAR=20 IKR=14.4 RE=55M RB=.22 RC=22M XTB=1.5 + CJE=1.6N VJE=.74 MJE=.45 CJC=231P VJC=1.1 MJC=.24 TF=89.5N TR=2.21U) .MODEL DSUB D (IS=14.4P N=1 RS=55M BV=80 IBV=.001 CJO=231P TT=2.21U) .ENDS oregano-0.84.41/data/models/BCY59-7.model0000644000175000017500000000050713413640652016515 0ustar rubenruben.model BCY59-7 NPN(IS=64.04f XTI=3 EG=1.11 VAF=106.8 BF=4.957K ISE=6.195p + NE=1.686 IKF=12.15m Nk=.4944 Xtb=1.5 Br=2.624 Isc=2.92n + Nc=3.015 Ikr=3.889 Rc=1.149 Cjc=11.15p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=16.78p Mje=.3333 Vje=.5 Tr=638n Tf=410.8p Itf=15.08 + Xtf=118.1 Vtf=10) * MFG=PHILIPS pid=bcy59-7 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/HP2400.model0000644000175000017500000000017413413640652016373 0ustar rubenruben.model HP2400 D (IS=7N RS=10 N=1.08 BV=35 IBV=10U + CJO=.7P VJ=.64 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky Diode oregano-0.84.41/data/models/IRF721.model0000644000175000017500000000043113413640652016424 0ustar rubenruben.model IRF721 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=41.38m Kp=20.58u W=.23 L=2u Vto=3.78 + Rd=1.489 Rds=1.556MEG Cbd=415.4p Pb=.8 Mj=.5 Fc=.5 Cgso=1.655n + Cgdo=171p Rg=62.8m Is=177.9p N=1 Tt=535n) * IR pid=IRF721 case=TO220 oregano-0.84.41/data/models/IRF323.model0000644000175000017500000000042713413640652016427 0ustar rubenruben.model IRF323 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=44.6m Kp=20.94u W=.23 L=2u Vto=3.710 + Rd=1.074 Rds=1.556MEG Cbd=435.6p Pb=.8 Mj=.5 Fc=.5 Cgso=1.683n + Cgdo=171p Rg=.1829 Is=1.425n N=1 Tt=535n) * IR pid=IRF323 case=TO3 oregano-0.84.41/data/models/2N6755.model0000644000175000017500000000044313413640652016363 0ustar rubenruben.model 2N6755 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1207 Kp=21.35u W=1.1 L=2u Vto=3.143 + Rd=64.68m Rds=600K Cbd=1.273n Pb=.8 Mj=.5 Fc=.5 Cgso=729.7p + Cgdo=310.4p Rg=5.839 Is=44.21f N=1 Tt=370n) * Int'l Rectifier pid=2N6755 case=TO3 oregano-0.84.41/data/models/2N6851.model0000644000175000017500000000043313413640652016357 0ustar rubenruben.model 2N6851 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=.1181 Kp=10.32u W=.93 L=2u Vto=-3.252 + Rd=.5495 Rds=888.9MEG Cbd=891.4p Pb=.8 Mj=.5 Fc=.5 Cgso=3.804n + Cgdo=90.23p Rg=.9239 Is=2.072p N=4 Tt=815n) * IR pid=2N6851 case=TO39 oregano-0.84.41/data/models/BCP55S.model0000644000175000017500000000070513413640652016457 0ustar rubenruben.model BCP55S NPN(IS=3.06E-15 ISE=1.62E-16 ISC=4.08E-14 XTI=3.00 + BF=1.29E2 BR=2.92 IKF=9.06E-1 IKR=1.00 XTB=1.5 + VAF=7.24E2 VAR=5.46E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.26E-2 RC=3.11E-1 RB=1.65E1 RBM=1.73E-2 IRB=2.38E-2 + CJE=1.17E-10 CJC=4.85E-11 XCJC=1.00 FC=5.00E-1 + NF=8.55E-1 NR=9.10E-1 NE=1.00 NC=1.00 MJE=4.22E-1 MJC=5.09E-1 + TF=1.42E-9 TR=0 PTF=0 ITF=5.64E-1 VTF=9.99E5 XTF=7.75E-1 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BD336.model0000644000175000017500000000070013413640652016272 0ustar rubenruben.SUBCKT BD336 1 2 3 * TERMINALS: C B E * SGS-Thompson 100 Volt 6 Amp PNP Darlington Transistor 07-20-1993 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 13.3K R2 4 3 66.7 D1 1 3 DSUB .MODEL QPWR PNP (IS=7.2P NF=1 BF=154 VAF=180 IKF=4 ISE=347P NE=2 + BR=4 NR=1 VAR=20 IKR=6 RE=91.7M RB=.366 RC=36.6M XTB=1.5 + CJE=1.24N VJE=.74 MJE=.45 CJC=179P VJC=1.1 MJC=.24 TF=98.4N TR=1.78U) .MODEL DSUB D (IS=7.2P N=1 RS=91.7M BV=100 IBV=.001 CJO=179P TT=1.78U) .ENDS oregano-0.84.41/data/models/BCY78-7.model0000644000175000017500000000050313413640652016512 0ustar rubenruben.model BCY78-7 PNP(IS=55.58p XTI=3 EG=1.11 VAF=106.8 BF=188.5 ISE=230.7p + NE=2.751 IKF=74.06m Nk=.5019 Xtb=1.5 Br=2.429 Isc=34.94n + Nc=2.499 Ikr=1.387 Rc=2.829 Cjc=16p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=16.78p Mje=.3333 Vje=.5 Tr=283n Tf=762.6p Itf=5.95 + Xtf=180.6 Vtf=10) * MFG=PHILIPS pid=bcy78-7 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/IRF253.model0000644000175000017500000000042713413640652016431 0ustar rubenruben.model IRF253 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=2.081m Kp=20.86u W=1 L=2u Vto=3.794 + Rd=67.06m Rds=666.7K Cbd=3.481n Pb=.8 Mj=.5 Fc=.5 Cgso=1.429n + Cgdo=597.5p Rg=3.527 Is=168.3p N=1 Tt=340n) * IR pid=IRF253 case=TO3 oregano-0.84.41/data/models/IRF240.model0000644000175000017500000000043113413640652016420 0ustar rubenruben.model IRF240 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=5.466m Kp=20.82u W=.44 L=2u Vto=3.814 + Rd=97.84m Rds=888.9K Cbd=1.813n Pb=.8 Mj=.5 Fc=.5 Cgso=1.977n + Cgdo=490.5p Rg=3.604 Is=5.191p N=1 Tt=312n) * IR pid=IRF240 case=TO3 oregano-0.84.41/data/models/2N4121.model0000644000175000017500000000053413413640652016345 0ustar rubenruben.model 2N4121 PNP(IS=1.41E-15 ISE=0 ISC=0 XTI=3 + BF=122.2 BR=5.215 IKF=80E-3 IKR=0 XTB=1.5 + VAF=18.7 VAR=6.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=2.5 RB=10 + CJE=8.063E-12 CJC=9.728E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.5 NC=2 MJE=0.3677 MJC=0.5776 + TF=179.3E-12 TR=34.2E-9 ITF=0.4 VTF=4 XTF=6 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/IRF132.model0000644000175000017500000000043013413640652016417 0ustar rubenruben.model IRF132 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=61.8m Kp=20.68u W=.73 L=2u Vto=3.373 + Rd=76.21m Rds=444.4K Cbd=1.115n Pb=.8 Mj=.5 Fc=.5 Cgso=796.2p + Cgdo=243.9p Rg=5.502 Is=763.6p N=1 Tt=125n) * IR pid=IRF132 case=TO3 oregano-0.84.41/data/models/BCX41.model0000644000175000017500000000047513413640652016343 0ustar rubenruben.model BCX41 NPN(IS=211.1f XTI=3 EG=1.11 VAF=100 BF=171 ISE=1.975p NE=1.629 + IKF=.7668 Nk=.5103 Xtb=1.5 Br=24.68 Isc=109.7p Nc=1.588 + Ikr=3.115 Rc=.463 Cjc=29.15p Mjc=.3333 Vjc=.5 Fc=.5 Cje=87.45p + Mje=.3333 Vje=.5 Tr=10n Tf=1.461n Itf=8.247 Xtf=568.2 Vtf=10) * MFG=SIEMENS pid=bcx41 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/HP2787.model0000644000175000017500000000020513413640652016410 0ustar rubenruben.model HP2787 D (IS=1.2N RS=35 N=1.08 BV=5 IBV=10U + CJO=.12P VJ=.6 M=.5 EG=.69 TT=72P) * H-P 5082-2787 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/DD1200.model0000644000175000017500000000021013413640652016337 0ustar rubenruben.model DD1200 D (IS=177P RS=446 N=23.2 BV=12K IBV=300N + CJO=2.14P VJ=.75 M=.333 TT=50.4N) * Diotec 12000 Volt 20M Amp 35M us Si Diode oregano-0.84.41/data/models/DB1504.model0000644000175000017500000000037613413640652016361 0ustar rubenruben.SUBCKT DB1504 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B1504 D2 4 1 B1504 D3 5 1 B1504 D4 2 4 B1504 D5 2 3 B1504 D6 2 5 B1504 .model B1504 D (IS=45.3N RS=1.92M N=2.34 BV=400 IBV=5U + CJO=618P VJ=.75 M=.333 TT=4.32U) * Diotec 400 Volt 15 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/BSV52.model0000644000175000017500000000061613413640652016360 0ustar rubenruben.model BSV52 NPN(IS=1.222E-15 ISE=3.895E-14 ISC=1.85E-09 XTI=3 + BF=82.01 BR=0.1731 IKF=0.196 IKR=0.1 XTB=1.5 + VAF=35.3 VAR=29.6 VJE=0.7352 VJC=0.198 + RE=0.612 RC=1.527 RB=0.5 RBM=0.5 IRB=1E-06 + CJE=3.411E-12 CJC=1.605E-12 XCJC=0.4 FC=0.9399 + NF=0.9901 NR=0.974 NE=1.632 NC=2.01 MJE=0.3437 MJC=0.1711 + TF=2.115E-10 TR=60E-9 PTF=0 ITF=1.534 VTF=2.3 XTF=127 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/HP2824.model0000644000175000017500000000017513413640652016406 0ustar rubenruben.model HP2824 D (IS=1.1N RS=10 N=1.08 BV=25 IBV=10U + CJO=.8P VJ=.6 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky Diode oregano-0.84.41/data/models/BC548A.model0000644000175000017500000000050013413640652016375 0ustar rubenruben.model BC548A NPN(IS=7.049f XTI=3 EG=1.11 VAF=127.9 BF=253 ISE=96.26f + NE=1.556 IKF=77.05m Nk=.5305 Xtb=1.5 Br=1 Isc=130.8f Nc=1.602 + Ikr=3.321 Rc=.8766 Cjc=5.25p Mjc=.3147 Vjc=.5697 Fc=.5 + Cje=11.5p Mje=.6715 Vje=.5 Tr=10n Tf=409.5p Itf=1.994 Xtf=40.12 + Vtf=10) * MFG=PHILIPS pid=bc548a case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BC860B.model0000644000175000017500000000047713413640652016410 0ustar rubenruben.model BC860B PNP(IS=336.7f XTI=3 EG=1.11 VAF=62.37 BF=277.7 ISE=1.966p + NE=2.123 IKF=.1686 Nk=.545 Xtb=1.5 Br=7.16 Isc=196p Nc=1.815 + Ikr=9.677 Rc=2.891 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=605.9p Itf=2.133 Xtf=23.02 Vtf=10) * MFG=SIEMENS pid=bc860b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/2N6761.model0000644000175000017500000000043113413640652016355 0ustar rubenruben.model 2N6761 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=98.25m Kp=20.62u W=.38 L=2u Vto=3.166 + Rd=1.363 Rds=3.6MEG Cbd=791.9p Pb=.8 Mj=.5 Fc=.5 Cgso=1.709n + Cgdo=152.1p Rg=2.119 Is=12.62p N=1 Tt=1425n) * IR pid=2N6761 case=TO3 oregano-0.84.41/data/models/BF513.model0000644000175000017500000000061713413640652016300 0ustar rubenruben.SUBCKT BF513/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF + VTO = -3.1715E+000 + BETA = 1.22441E-003 + LAMBDA = 1.98434E-002 + RD = 2.61448E+000 + RS = 2.61448E+000 + IS = 3.88189E-014 + CGS = 5.40000E-012 + CGD = 4.08000E-012 + PB = 8.59053E-001 + FC = 5.00000E-001 .ENDS * *$ oregano-0.84.41/data/models/BFP193.model0000644000175000017500000000070013413640652016415 0ustar rubenruben.model BFP193 NPN(IS=2.738E-16 ISE=1.0627E-14 ISC=3.7409E-17 XTI=3 + BF=125 BR=14.267 IKF=0.26949 IKR=0.037925 XTB=1.5 + VAF=24 VAR=3.8742 VJE=0.70276 VJC=1.1828 + RE=0.76534 RC=0.11938 RB=1.8368 RBM=1 IRB=0.00091763 + CJE=1.1824E-15 CJC=9.3503E-13 XCJC=0.053563 FC=0.72063 + NF=0.95341 NR=1.4289 NE=1.935 NC=0.94371 MJE=0.48654 MJC=0.30002 + TF=1.8828E-11 TR=1.0037E-9 PTF=0 ITF=0.00096893 VTF=0.8 XTF=0.69477 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/FE1B.model0000644000175000017500000000020313413640652016224 0ustar rubenruben.model FE1B D (IS=2.51N RS=28.2M N=1.42 BV=100 IBV=1U + CJO=42.4P VJ=.75 M=.333 TT=21.6N) * Diotec 100 Volt 1 Amp 15M us Si Diode oregano-0.84.41/data/models/BFP196.model0000644000175000017500000000067513413640652016433 0ustar rubenruben.model BFP196 NPN(IS=1.7264E-15 ISE=1.1922E-13 ISC=4.8666E-15 XTI=3 + BF=125 BR=10.584 IKF=0.4294 IKR=0.019511 XTB=1.5 + VAF=20 VAR=3.8128 VJE=0.7308 VJC=0.73057 + RE=0.75103 RC=0.27137 RB=1.2907 RBM=1 IRB=8.4011E-5 + CJE=1.3325E-14 CJC=1.667E-12 XCJC=0.29998 FC=0.50922 + NF=0.80012 NR=0.94288 NE=1.1766 NC=0.88299 MJE=0.33018 MJC=0.3289 + TF=2.3994E-11 TR=2.2413E-9 PTF=0 ITF=0.0019775 VTF=0.1 XTF=0.44322 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/MPSA13.model0000644000175000017500000000057613413640652016470 0ustar rubenruben.SUBCKT MPSA13 1 2 3 * TERMINALS: C B E * 30 Volt .5 Amp NPN Darlington Transistor 08-16-1995 Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR .MODEL QPWR NPN (IS=600F NF=1 BF=224 VAF=98.6 IKF=.4 ISE=21.8P NE=2 + BR=4 NR=1 VAR=40 IKR=.6 RE=.8 RB=3.2 RC=.32 XTB=1.5 + CJE=66.1P VJE=.74 MJE=.45 CJC=6.96P VJC=1.1 MJC=.24 TF=60.3N TR=2.6U) .ENDS * MPSA13, NATIONAL SEMICONDUCTOR DISCRETE SEMICONDUCTOR oregano-0.84.41/data/models/IRF740.model0000644000175000017500000000043413413640652016430 0ustar rubenruben.model IRF740 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=8.563m Kp=20.59u W=.78 L=2u Vto=3.657 + Rd=.3915 Rds=1.778MEG Cbd=1.419n Pb=.8 Mj=.5 Fc=.5 Cgso=1.392n + Cgdo=146.6p Rg=.9088 Is=17.65p N=1 Tt=570n) * IR pid=IRF740 case=TO220 oregano-0.84.41/data/models/BCV62.model0000644000175000017500000000064413413640652016342 0ustar rubenruben.model BCV62 PNP(IS=28.000E-15 ISE=24.903E-15 ISC=0.125E-12 XTI=3.300 + BF=284.436 BR=4.800 IKF=0.380 IKR=0.932 XTB=1.600 + VAF=43.0 VAR=6.960 VJE=1.0 VJC=0.900 + RE=0.300 RC=2.251 RB=2.200 RBM=1.500 IRB=0.100E-3 + CJE=11.800E-12 CJC=8.700E-12 XCJC=0.650 FC=0.750 + NF=1.0 NR=1.005 NE=2.234 NC=2.074 MJE=0.435 MJC=0.600 + TF=0.600E-9 TR=2.604E-9 PTF=1.0 ITF=0.314 VTF=2.0 XTF=6.500 + EG=1.110 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/MPSA55.model0000644000175000017500000000070513413640652016470 0ustar rubenruben.model MPSA55 PNP(IS=65.000E-15 ISE=45.000E-15 ISC=62.000E-15 XTI=4.300 + BF=151.409 BR=5.0 IKF=0.825 IKR=75.000E-3 XTB=1.900 + VAF=81.400 VAR=10.808 VJE=1.090 VJC=1.0 + RE=0.277 RC=0.311 RB=0.350 RBM=0.200 IRB=20.000E-6 + CJE=74.000E-12 CJC=27.800E-12 XCJC=0.650 FC=0.750 + NF=0.988 NR=0.985 NE=2.223 NC=1.478 MJE=0.410 MJC=0.571 + TF=1.100E-9 TR=2.000E-9 PTF=1.0 ITF=0.487 VTF=2.0 XTF=5.0 + EG=1.110 KF=1E-9 AF=1 + VCEO=60 ICRATING=200M MFG=SIEMENS) oregano-0.84.41/data/models/HP6530.model0000644000175000017500000000016513413640652016403 0ustar rubenruben.model HP6530 D (IS=40N RS=9 N=1.08 BV=5 IBV=10U + CJO=.13P VJ=.5 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/IRF9233.model0000644000175000017500000000043413413640652016516 0ustar rubenruben.model IRF9233 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=31.21m Kp=10.39u W=.47 L=2u + Vto=-3.323 Rd=.7053 Rds=666.7K Cbd=820.8p Pb=.8 Mj=.5 Fc=.5 + Cgso=6.367n Cgdo=242.4p Rg=1.33 Is=248E-18 N=3 Tt=555n) * IR pid=IRF9233 case=TO3 oregano-0.84.41/data/models/BCP55P.model0000644000175000017500000000061713413640652016456 0ustar rubenruben.model BCP55P NPN(IS=6.119E-14 ISE=5.844E-15 ISC=1.342E-13 XTI=3 + BF=130.4 BR=14.53 IKF=0.8 IKR=0.2049 XTB=1.5 + VAF=54.27 VAR=30 VJE=0.6917 VJC=0.5 + RE=0.1114 RC=0.082 RB=0.5 RBM=0.5 IRB=1E-06 + CJE=1.234E-10 CJC=3.49E-11 XCJC=0.15 FC=0.9232 + NF=0.9948 NR=0.9905 NE=1.469 NC=1.183 MJE=0.338 MJC=0.388 + TF=6.543E-10 TR=1E-32 PTF=0 ITF=10 VTF=1.892 XTF=223.8 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BCW67B.model0000644000175000017500000000047613413640652016455 0ustar rubenruben.model BCW67B PNP(IS=44.97f XTI=3 EG=1.11 VAF=100 BF=373.4 ISE=600f NE=1.538 + IKF=.6542 Nk=.669 Xtb=1.5 Br=12.01 Isc=1.997p Nc=1.678 + Ikr=9.679 Rc=.5562 Cjc=14.57p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=669.8p Itf=1.943 Xtf=37.78 Vtf=10) * MFG=SIEMENS pid=bcw67b case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/KBU4G.model0000644000175000017500000000033613413640652016372 0ustar rubenruben.SUBCKT KBU4G 2 3 5 4 * IN1 IN2 + - D2 2 5 BU4G D3 3 5 BU4G D4 4 3 BU4G D1 4 2 BU4G .model BU4G D (IS=10.7N RS=3M N=1.67 BV=400 IBV=5U + CJO=165P VJ=.75 M=.333 TT=4.32U) * Diotec 400 Volt 4 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/BF421S.model0000644000175000017500000000070113413640652016413 0ustar rubenruben.model BF421S PNP(IS=5.35E-16 ISE=9.81E-17 ISC=1.00E-13 XTI=3.00 + BF=1.40E2 BR=1.00E-2 IKF=2.41E-2 IKR=1.00 XTB=1.5 + VAF=1.49E2 VAR=9.18E1 VJE=3.00E-1 VJC=3.00E-1 + RE=1.85E-2 RC=2.22 RB=1.99E1 RBM=2.41E-2 IRB=1.10E-2 + CJE=4.20E-11 CJC=1.65E-11 XCJC=1.00 FC=5.00E-1 + NF=8.73E-1 NR=9.84E-1 NE=1.03 NC=2.00 MJE=4.13E-1 MJC=7.00E-1 + TF=1.11E-9 TR=0 PTF=0 ITF=3.00 VTF=9.99E5 XTF=5.76E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BC847A.model0000644000175000017500000000050513413640652016404 0ustar rubenruben.model BC847A NPN(IS=7.049f XTI=3 EG=1.11 VAF=106.8 BF=182.9 ISE=85.16f + NE=1.709 IKF=.1196 Nk=.5227 Xtb=1.5 Br=3.988 Isc=10.68f + Nc=2.417 Ikr=2.721 Rc=1.374 Cjc=7.287p Mjc=.3333 Vjc=.5 Fc=.5 + Cje=9.485p Mje=.3333 Vje=.5 Tr=10n Tf=662.3p Itf=1.577 + Xtf=14.27 Vtf=10) * MFG=SIEMENS pid=bc847a case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF451.model0000644000175000017500000000042613413640652016430 0ustar rubenruben.model IRF451 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.456m Kp=20.2u W=1.1 L=2u Vto=3.635 + Rd=.3343 Rds=2MEG Cbd=2.693n Pb=.8 Mj=.5 Fc=.5 Cgso=1.812n + Cgdo=192.2p Rg=71.55m Is=64.78p N=1 Tt=765n) * IR pid=IRF451 case=TO3 oregano-0.84.41/data/models/FE1F.model0000644000175000017500000000020513413640652016232 0ustar rubenruben.model FE1F D (IS=2.51N RS=28.2M N=1.42 BV=300 IBV=1.5U + CJO=42.4P VJ=.75 M=.333 TT=21.6N) * Diotec 300 Volt 1 Amp 15M us Si Diode oregano-0.84.41/data/models/BFV420.model0000644000175000017500000000062513413640652016422 0ustar rubenruben.model BFV420 NPN(IS=2E-14 ISE=8.61E-13 ISC=1.063E-12 XTI=3 + BF=335.9 BR=20.05 IKF=0.195 IKR=0.03 XTB=1.5 + VAF=303.4 VAR=23 VJE=0.773 VJC=0.05 + RE=0.388 RC=0.45 RB=36.6 RBM=7.069 IRB=0.0001391 + CJE=1.611E-11 CJC=3.38E-12 XCJC=0.553 FC=0.909 + NF=0.9861 NR=0.989 NE=1.751 NC=1.35 MJE=0.3749 MJC=0.2154 + TF=6.79E-10 TR=7.14E-08 PTF=0 ITF=0.1806 VTF=2.217 XTF=19.83 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/BF420S.model0000644000175000017500000000067513413640652016424 0ustar rubenruben.model BF420S NPN(IS=6.46E-16 ISE=2.80E-17 ISC=2.89E-14 XTI=3.00 + BF=1.23E2 BR=5.61 IKF=4.09E-2 IKR=1.00 XTB=1.5 + VAF=4.15E2 VAR=4.30E2 VJE=3.00E-1 VJC=3.00E-1 + RE=4.41E-1 RC=4.08E-1 RB=4.64E1 RBM=2.17E1 IRB=2.42E-2 + CJE=4.19E-11 CJC=5.49E-12 XCJC=1.00 FC=5.00E-1 + NF=9.11E-1 NR=1.86 NE=1.00 NC=1.03 MJE=3.90E-1 MJC=5.21E-1 + TF=1.13E-9 TR=0 PTF=0 ITF=2.65 VTF=8.76E5 XTF=6.01E2 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/BCX70G.model0000644000175000017500000000050013413640652016441 0ustar rubenruben.model BCX70G NPN(IS=26.39f XTI=3 EG=1.11 VAF=106.8 BF=167.4 ISE=254.6f + NE=1.806 IKF=1.363 Nk=.5 Xtb=1.5 Br=9.901 Isc=20.57p Nc=1.912 + Ikr=3.201 Rc=3.001 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=597.7p Itf=2.959 Xtf=293.8 Vtf=10) * MFG=SIEMENS pid=bcx70g case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF842.model0000644000175000017500000000043413413640652016433 0ustar rubenruben.model IRF842 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=6.382m Kp=20.85u W=.68 L=2u Vto=3.879 + Rd=.8203 Rds=2.222MEG Cbd=1.415n Pb=.8 Mj=.5 Fc=.5 Cgso=1.625n + Cgdo=133.4p Rg=.6038 Is=100.1p N=1 Tt=710n) * IR pid=IRF842 case=TO220 oregano-0.84.41/data/models/BCP51S.model0000644000175000017500000000067413413640652016460 0ustar rubenruben.model BCP51S PNP(IS=4.60E-12 ISE=1.99E-14 ISC=9.45E-17 XTI=3.00 + BF=1.85E2 BR=4.28 IKF=9.69E-1 IKR=1.00 XTB=1.5 + VAF=1.44E2 VAR=1.97E1 VJE=5.43E-1 VJC=3.62E-1 + RE=1.00E-2 RC=2.62E-1 RB=4.84 RBM=1.00E1 IRB=1.62E-1 + CJE=1.27E-10 CJC=8.00E-11 XCJC=1.00 FC=5.00E-1 + NF=1.19 NR=1.23 NE=1.23 NC=2.00 MJE=4.94E-1 MJC=5.07E-1 + TF=1.07E-9 TR=0 PTF=0 ITF=4.53E-1 VTF=9.99E5 XTF=6.31E-1 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=800M MFG=SIEMENS) oregano-0.84.41/data/models/2N6796.model0000644000175000017500000000043113413640652016365 0ustar rubenruben.model 2N6796 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1049 Kp=20.65u W=.92 L=2u Vto=3.141 + Rd=18.36m Rds=444.4K Cbd=1.217n Pb=.8 Mj=.5 Fc=.5 Cgso=679.6p + Cgdo=197.4p Rg=6.383 Is=3.403f N=1 Tt=308n) * IR pid=2N6796 case=TO39 oregano-0.84.41/data/models/BAV74.model0000644000175000017500000000021613413640652016336 0ustar rubenruben.MODEL BAV74 D IS=4.739E-9 N=1.849 RS=.4418 XTI=3 + EG=1.11 BV=99.08 IBV=25.88E-3 TT=2.02E-9 CJO=3P * Zetex 6.2 Volt .2 Watt Rectifier Diode oregano-0.84.41/data/models/BFS480.model0000644000175000017500000000070513413640652016424 0ustar rubenruben.model BFS480 NPN(IS=6.472E-15 ISE=1.5596E-14 ISC=1.409E-15 XTI=3 + BF=89.888 BR=20.238 IKF=0.073457 IKR=0.012696 XTB=1.5 + VAF=25.609 VAR=5.6909 VJE=0.70035 VJC=1.1943 + RE=2.4518 RC=6.989 RB=15 RBM=14.999 IRB=3.1958E-5 + CJE=3.6218E-14 CJC=2.5299E-13 XCJC=0.19188 FC=0.96275 + NF=1.0801 NR=0.83403 NE=1.6163 NC=1.0651 MJE=0.69773 MJC=0.30017 + TF=1.1744E-11 TR=2.3693E-9 PTF=0 ITF=0.0062179 VTF=0.2035 XTF=0.21585 + EG=1.11 KF=1E-9 AF=1 MFG=SIEMENS) oregano-0.84.41/data/models/DD1300.model0000644000175000017500000000021013413640652016340 0ustar rubenruben.model DD1300 D (IS=177P RS=446 N=23.2 BV=13K IBV=300N + CJO=2.14P VJ=.75 M=.333 TT=50.4N) * Diotec 13000 Volt 20M Amp 35M us Si Diode oregano-0.84.41/data/models/2N3905.model0000644000175000017500000000053513413640652016357 0ustar rubenruben.model 2N3905 PNP(IS=1.41E-15 ISE=0 ISC=0 XTI=3 + BF=90.35 BR=5.502 IKF=80E-3 IKR=0 XTB=1.5 + VAF=18.7 VAR=6.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=2.5 RB=10 + CJE=8.063E-12 CJC=9.728E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.5 NC=2 MJE=0.3677 MJC=0.5776 + TF=179.3E-12 TR=35.05E-9 ITF=0.4 VTF=4 XTF=6 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/BCY79-9.model0000644000175000017500000000047713413640652016527 0ustar rubenruben.model BCY79-9 PNP(IS=55.58p XTI=3 EG=1.11 VAF=62.37 BF=361.2 ISE=160.7p + NE=3.065 IKF=98.02m Nk=.5 Xtb=1.5 Br=2.429 Isc=34.94n Nc=2.499 + Ikr=1.387 Rc=2.829 Cjc=16p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p + Mje=.3333 Vje=.5 Tr=267n Tf=763.1p Itf=5.112 Xtf=203.8 Vtf=10) * MFG=PHILIPS pid=bcy79-9 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/HP2291.model0000644000175000017500000000020413413640652016375 0ustar rubenruben.model HP2291 D (IS=.2N RS=6 N=1.08 BV=10 IBV=10U + CJO=.4P VJ=.65 M=.5 EG=.69 TT=72P) * H-P 5082-2291 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/BSV16-6.model0000644000175000017500000000050013413640652016513 0ustar rubenruben.model BSV16-6 PNP(IS=70.49f XTI=3 EG=1.11 VAF=100 BF=78.81 ISE=795.9f NE=1.5 + IKF=.9977 Nk=.6579 Xtb=1.5 Br=18.45 Isc=715.1f Nc=1.23 + Ikr=1.222 Rc=.8335 Cjc=47.58p Mjc=.3333 Vjc=.5 Fc=.5 Cje=212.4p + Mje=.3333 Vje=.5 Tr=391.7n Tf=1.983n Itf=11.92 Xtf=64.06 Vtf=10 * MFG=PHILIPS pid=bsv16-6 case=TO39 * 11-02-18 hjr oregano-0.84.41/data/models/SMBTA56.model0000644000175000017500000000050113413640652016571 0ustar rubenruben.model SMBTA56 PNP(IS=9.744f XTI=3 EG=1.11 VAF=100 BF=107.1 ISE=9.747f + NE=1.377 IKF=1.26 Nk=.7865 Xtb=1.5 Br=3.584 Isc=59.76f Nc=1.511 + Ikr=1.901 Rc=.6051 Cjc=29.15p Mjc=.3333 Vjc=.5 Fc=.5 Cje=87.45p + Mje=.3333 Vje=.5 Tr=10n Tf=977.7p Itf=13.98 Xtf=131.9 Vtf=10) * MFG=SIEMENS pid=smbta55 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/BC807-16.model0000644000175000017500000000050013413640652016516 0ustar rubenruben.model BC807-16 PNP(IS=32.53f XTI=3 EG=1.11 VAF=100 BF=209 ISE=318.3f NE=1.542 + IKF=.6049 Nk=.6086 Xtb=1.5 Br=6.501 Isc=179.5f Nc=1.832 + Ikr=.1402 Rc=.4026 Cjc=24.29p Mjc=.3333 Vjc=.5 Fc=.5 Cje=71.14p + Mje=.3333 Vje=.5 Tr=10n Tf=703p Itf=13.36 Xtf=1.289K Vtf=10) * MFG=SIEMENS pid=bc807-16 case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/2N6668.model0000644000175000017500000000057013413640652016367 0ustar rubenruben.SUBCKT 2N6668 1 2 3 * TERMINALS: C B E Q1 1 2 4 QPWR .1 Q2 1 4 3 QPWR R1 2 4 8K R2 4 3 120 D1 1 3 DSUB .MODEL QPWR PNP (IS=12P NF=1 BF=156 VAF=160 IKF=5.5 + ISE=21.2P NE=2 BR=4 NR=1 VAR=20 IKR=8.25 RE=.115 RB=.46 + RC=46M XTB=1.5 CJE=22.30N CJC=264P TF=5.5P TR=500N) .MODEL DSUB D (IS=12P N=1 RS=.115 BV=80 IBV=.001 + CJO=264P TT=570N) .ENDS * 80 Volt 10 Amp PNP Darlington oregano-0.84.41/data/models/2N3565.model0000644000175000017500000000055613413640652016364 0ustar rubenruben.model 2N3565 NPN(IS=5.911E-15 ISE=5.911E-15 ISC=0 XTI=3 + BF=697.1 BR=1.297 IKF=13.93E-3 IKR=0 XTB=1.5 + VAF=62.37 VAR=21.5 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.61 RB=10 + CJE=4.973E-12 CJC=4.017E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.342 NC=2 MJE=0.4146 MJC=0.3174 + TF=820.4E-12 TR=4.687E-9 ITF=0.35 VTF=4 XTF=7 + EG=1.11 KF=1E-9 AF=1 + VCEO=25 ICRATING=50M MFG=NSC) oregano-0.84.41/data/models/HP5520.model0000644000175000017500000000016713413640652016403 0ustar rubenruben.model HP5520 D (IS=.3N RS=13 N=1.08 BV=5 IBV=10U + CJO=.09P VJ=.65 M=.5 EG=.69 TT=72P) * 400 Volt .5 Amp Si Schottky oregano-0.84.41/data/models/IRF450.model0000644000175000017500000000043013413640652016422 0ustar rubenruben.model IRF450 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.456m Kp=20.78u W=.92 L=2u Vto=3.27 + Rd=.2828 Rds=2MEG Cbd=4.433n Pb=3 Mj=1.092 Fc=.5 Cgso=1.949n + Cgdo=130.7p Rg=4.724 Is=188.2u N=3.12 RB=1n) * IR pid=IRF450 case=TO3 oregano-0.84.41/data/models/IRF235.model0000644000175000017500000000043213413640652016425 0ustar rubenruben.model IRF235 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=21.25m Kp=20.66u W=.26 L=2u Vto=3.866 + Rd=.3633 Rds=1.111MEG Cbd=841.5p Pb=.8 Mj=.5 Fc=.5 Cgso=2.817n + Cgdo=375.3p Rg=1.131 Is=27.47p N=1 Tt=250n) * IR pid=IRF235 case=TO3 oregano-0.84.41/data/models/2N4403.model0000644000175000017500000000071013413640652016344 0ustar rubenruben.model 2N4403 NPN(IS=2.32E-13 ISE=6.69E-16 ISC=1.65E-13 XTI=3.00 + BF=3.08E2 BR=2.18E1 IKF=8.42E-1 IKR=1.00 XTB=1.5 + VAF=1.41E2 VAR=1.35E1 VJE=3.49E-1 VJC=3.00E-1 + RE=1.00E-2 RC=8.46E-1 RB=4.02E1 RBM=1.00E-2 IRB=1.25E-2 + CJE=2.66E-11 CJC=1.93E-11 XCJC=1.00 FC=5.00E-1 + NF=1.04 NR=1.12 NE=1.09 NC=1.13 MJE=4.60E-1 MJC=4.65E-1 + TF=4.95E-10 TR=111.6E-9 PTF=0 ITF=3.36E-1 VTF=6.54 XTF=1.87E1 + EG=1.11 KF=1E-9 AF=1 + VCEO=40 ICRATING=500E-3 MFG=SIEMENS) oregano-0.84.41/data/models/KBU4K.model0000644000175000017500000000033613413640652016376 0ustar rubenruben.SUBCKT KBU4K 2 3 5 4 * IN1 IN2 + - D2 2 5 BU4K D3 3 5 BU4K D4 4 3 BU4K D1 4 2 BU4K .model BU4K D (IS=10.7N RS=3M N=1.67 BV=800 IBV=7U + CJO=165P VJ=.75 M=.333 TT=4.32U) * Diotec 800 Volt 4 Amp 3 us Si Diode Bridge .ENDS oregano-0.84.41/data/models/IRF045.model0000644000175000017500000000043113413640652016423 0ustar rubenruben.model IRF045 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=10.08m Kp=21.21u W=1.3 L=2u Vto=3.441 + Rd=5.892m Rds=266.7K Cbd=5.111n Pb=.8 Mj=.5 Fc=.5 Cgso=830.7p + Cgdo=1.012n Rg=7.817 Is=939.1f N=1 Tt=103n) * IR pid=IRF044 case=TO3 oregano-0.84.41/data/models/BF570.model0000644000175000017500000000061613413640652016302 0ustar rubenruben.model BF570 NPN(IS=1.222E-15 ISE=3.895E-14 ISC=1.85E-09 XTI=3 + BF=82.01 BR=0.1731 IKF=0.196 IKR=0.1 XTB=1.5 + VAF=35.3 VAR=29.6 VJE=0.7352 VJC=0.198 + RE=0.612 RC=1.527 RB=0.5 RBM=0.5 IRB=1E-06 + CJE=3.411E-12 CJC=1.605E-12 XCJC=0.4 FC=0.9399 + NF=0.9901 NR=0.974 NE=1.632 NC=2.01 MJE=0.3437 MJC=0.1711 + TF=2.115E-10 TR=60E-9 PTF=0 ITF=1.534 VTF=2.3 XTF=127 + EG=1.11 KF=1E-9 AF=1 MFG=PHILIPS) oregano-0.84.41/data/models/2N2222.model0000644000175000017500000000074213413640652016346 0ustar rubenruben.model 2N2222 NPN(IS=29.13E-15 ISE=9.652E-15 ISC=320.3E-12 XTI=3.000 + BF=256.7 BR=6.590 IKF=489.9E-3 IKR=192.9E-3 XTB=1.5 + VAF=80.99 VAR=101.2 VJE=689.1E-3 VJC=662.2E-3 + RE=193.4E-3 RC=224.8E-3 RB=1.000 RBM=1.000 IRB=1.000E-3 + CJE=25.89E-12 CJC=10.11E-12 XCJC=0.5946 FC=938.8E-3 + NF=992.6E-3 NR=984.4E-3 NE=1.516 NC=1.608 MJE=366.8E-3 MJC=416.0E-3 + TF=293.9E-12 TR=320.0E-9 PTF=0.000 ITF=4.797 VTF=20.00 XTF=71.78 + EG=1.110 KF=1E-9 AF=1 + VCEO=30 ICRATING=500M MFG=PHILIPS) oregano-0.84.41/data/models/BF851C.model0000644000175000017500000000027513413640652016410 0ustar rubenruben.SUBCKT BF851C/PLP 10 20 30 J1 10 20 30 NJF .MODEL NJF NJF(VTO=-1.145 BETA=0.01522 LAMBDA=0.04494 RD=15.2 RS=15.2 + IS=4.157E-16 CGS=6.581E-12 CGD=6.581E-12 PB=0.7395 FC=0.5) .ENDS * *$ oregano-0.84.41/data/models/2SA1213.model0000644000175000017500000000052513413640652016452 0ustar rubenruben.model 2SA1213 PNP(IS=2.6E-13 ISE=1.2E-13 ISC=12.04E-13 XTI=3 + BF=210 BR=70 IKF=7 IKR=0.6 XTB=1.5 + VAF=27 VAR=14 VJE=0.65 VJC=0.305 + RE=0.065 RC=0.04 RB=0.3 + CJE=410E-12 CJC=140E-12 XCJC=0.75 FC=0.5 + NF=0.999 NR=0.982 NE=1.43 NC=1.4474 MJE=0.35 MJC=0.35 + TF=0.65E-9 TR=12E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/BCW60D.model0000644000175000017500000000047413413640652016446 0ustar rubenruben.model BCW60D NPN(IS=26.39f XTI=3 EG=1.11 VAF=35.7 BF=449.2 ISE=191.3f + NE=2.138 IKF=1.969 Nk=.5 Xtb=1.5 Br=9.116 Isc=14.45p Nc=1.778 + Ikr=3.14 Rc=3.154 Cjc=11.51p Mjc=.3626 Vjc=.5 Fc=.5 Cje=8.397p + Mje=.3865 Vje=.5 Tr=10n Tf=596.3p Itf=2.629 Xtf=282 Vtf=10) * MFG=SIEMENS pid=bcw60d case=SOT23 * 11-02-18 hjr oregano-0.84.41/data/models/IRF120.model0000644000175000017500000000042513413640652016420 0ustar rubenruben.model IRF120 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1421 Kp=20.62u W=.7 L=2u Vto=3.762 + Rd=82.05m Rds=444.4K Cbd=640.5p Pb=.8 Mj=.5 Fc=.5 Cgso=542p + Cgdo=142.9p Rg=7.365 Is=16.64p N=1 Tt=137n) * IR pid=IRF120 case=TO3 oregano-0.84.41/data/models/IRF035.model0000644000175000017500000000043213413640652016423 0ustar rubenruben.model IRF035 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=26.53m Kp=20.69u W=1.2 L=2u Vto=3.441 + Rd=9.954m Rds=266.7K Cbd=2.857n Pb=.8 Mj=.5 Fc=.5 Cgso=598.7p + Cgdo=495.7p Rg=8.685 Is=1.264p N=1 Tt=365n) * IR pid=IRF034 case=TO3 oregano-0.84.41/data/models/2N507.model0000644000175000017500000000054313413640652016271 0ustar rubenruben.model 2N507 PNP(IS=6.734E-15 ISE=6.734E-15 ISC=0 XTI=3 + BF=254.1 BR=2.683 IKF=0.1962 IKR=0 XTB=1.5 + VAF=45.7 VAR=15 VJE=0.65 VJC=0.65 + RE=0.15 RC=1.67 RB=10 + CJE=7.5E-12 CJC=6.2E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.741 NC=2 MJE=0.2861 MJC=0.301 + TF=467.8E-12 TR=10.1E-9 ITF=0.17 VTF=5 XTF=8 + EG=1.11 KF=1E-9 AF=1 + VCEO=45 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/MBR1535C.model0000644000175000017500000000023413413640652016614 0ustar rubenruben.MODEL MBR1535C D (IS=31.3N RS=15.5M N=.769 BV=35 IBV=15U + CJO=309P VJ=.75 M=.333 TT=1N EG=.69 XTI=2) * Motorola MBR1535CT 35 Volt 7.5 Amp .5 us Si Diode oregano-0.84.41/data/models/BC557C.model0000644000175000017500000000047613413640652016413 0ustar rubenruben.model BC557C PNP(IS=1.02f XTI=3 EG=1.11 VAF=30.52 BF=416.3 ISE=14.67f + NE=1.854 IKF=.2088 Nk=.8219 Xtb=1.5 Br=9.102 Isc=4.1f Nc=3.982 + Ikr=19.25m Rc=.9373 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 Cje=30p + Mje=.3333 Vje=.5 Tr=10n Tf=516.2p Itf=1.701 Xtf=35.24 Vtf=10) * MFG=PHILIPS pid=bc557c case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/DB3506.model0000644000175000017500000000037613413640652016365 0ustar rubenruben.SUBCKT DB3506 1 2 3 4 5 * + - P1 P2 P3 D1 3 1 B3506 D2 4 1 B3506 D3 5 1 B3506 D4 2 4 B3506 D5 2 3 B3506 D6 2 5 B3506 .model B3506 D (IS=300N RS=1.67M N=1.93 BV=600 IBV=6U + CJO=1.44N VJ=.75 M=.333 TT=4.32U) * Diotec 600 Volt 35 Amp 3 us Si Diode .ENDS oregano-0.84.41/data/models/IRF733.model0000644000175000017500000000043313413640652016431 0ustar rubenruben.model IRF733 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=27.94m Kp=20.5u W=.43 L=2u Vto=3.474 + Rd=.9365 Rds=1.556MEG Cbd=701.9p Pb=.8 Mj=.5 Fc=.5 Cgso=1.33n + Cgdo=168.3p Rg=47.04m Is=45.52p N=1 Tt=515n) * IR pid=IRF733 case=TO220 oregano-0.84.41/data/models/BC182B.model0000644000175000017500000000053013413640652016373 0ustar rubenruben.model BC182B NPN(IS=1.8E-14 ISE=5.0E-14 ISC=1.72E-13 XTI=3 + BF=400 BR=35.5 IKF=0.14 IKR=0.03 XTB=1.5 + VAF=80 VAR=12.5 VJE=0.58 VJC=0.54 + RE=0.6 RC=0.25 RB=0.56 + CJE=13E-12 CJC=4E-12 XCJC=0.75 FC=0.5 + NF=0.9955 NR=1.005 NE=1.46 NC=1.27 MJE=0.33 MJC=0.33 + TF=0.64E-9 TR=50.72E-9 + EG=1.11 KF=1E-9 AF=1 + VCEO=45V ICRATING=100M MFG=ZETEX) oregano-0.84.41/data/models/IRF143.model0000644000175000017500000000042713413640652016427 0ustar rubenruben.model IRF143 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=21.94m Kp=20.61u W=.97 L=2u Vto=3.189 + Rd=42.19m Rds=355.6K Cbd=2.398n Pb=.8 Mj=.5 Fc=.5 Cgso=995p + Cgdo=550.4p Rg=3.926 Is=2.823p N=1 Tt=142n) * IR pid=IRF143 case=TO3 oregano-0.84.41/data/models/BC557A.model0000644000175000017500000000050113413640652016376 0ustar rubenruben.model BC557A PNP(IS=1.02f XTI=3 EG=1.11 VAF=73.79 BF=174.7 ISE=10.73f + NE=1.644 IKF=.1023 Nk=.5033 Xtb=1.5 Br=4.432 Isc=14.74f + Nc=1.296 Ikr=2.237 Rc=1.039 Cjc=9.81p Mjc=.332 Vjc=.4865 Fc=.5 + Cje=30p Mje=.3333 Vje=.5 Tr=10n Tf=830.3p Itf=.8981 Xtf=10.32 + Vtf=10) * MFG=PHILIPS pid=bc557a case=TO92 * 11-02-18 hjr oregano-0.84.41/data/models/BCY58-10.model0000644000175000017500000000047713413640652016574 0ustar rubenruben.model BCY58-10 NPN(IS=64.04f XTI=3 EG=1.11 VAF=35.7 BF=676 ISE=444.3f NE=1.771 + IKF=.1013 Nk=.6259 Xtb=1.5 Br=1 Isc=38.48n Nc=4.097 Ikr=5.942 + Rc=1.19 Cjc=11.15p Mjc=.3333 Vjc=.5 Fc=.5 Cje=16.78p Mje=.3333 + Vje=.5 Tr=609.8n Tf=423.5p Itf=3.794 Xtf=108.1 Vtf=10) * MFG=PHILIPS pid=bcy58-10 case=TO18 * 11-02-18 hjr oregano-0.84.41/data/models/2N3903.model0000644000175000017500000000055113413640652016353 0ustar rubenruben.model 2N3903 NPN(IS=6.734E-15 ISE=6.734E-15 ISC=0 XTI=3 + BF=335.2 BR=0.8073 IKF=60.26E-3 IKR=0 XTB=1.5 + VAF=74.03 VAR=28 VJE=0.65 VJC=0.65 + RE=0.1 RC=1 RB=10 + CJE=4.493E-12 CJC=3.638E-12 XCJC=0.75 FC=0.5 + NF=1 NR=1 NE=1.208 NC=2 MJE=0.2593 MJC=0.3085 + TF=300.8E-12 TR=243.9E-9 ITF=0.4 VTF=4 XTF=2 + EG=1.11 KF=1E-9 AF=1 + VCEO=30 ICRATING=100M MFG=NSC) oregano-0.84.41/data/models/BY297.model0000644000175000017500000000017713413640652016335 0ustar rubenruben.model BY297 D (IS=22U RS=42M N=3.35 BV=200 IBV=10U + CJO=74.5P VJ=.75 M=.333 TT=620N) * Diotec 200 Volt 2 Amp .5 us Si Diode oregano-0.84.41/data/models/2N6759.model0000644000175000017500000000044413413640652016370 0ustar rubenruben.model 2N6759 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0.2 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=.1118 Kp=20.77u W=.92 L=2u Vto=3.179 + Rd=.872 Rds=3.5MEG Cbd=611.5p Pb=.8 Mj=.5 Fc=.5 Cgso=1.595n + Cgdo=219.6p Rg=.8404 Is=1.361n N=1 Tt=1400n) * Int'l Rectifier pid=2N6759 case=TO3 oregano-0.84.41/data/wscript0000644000175000017500000000441713413640652014673 0ustar rubenruben#! /usr/bin/env python # encoding: utf-8 top = '..' out = '../build' from waflib import Logs as logs from waflib import Utils as utils def options(opts): pass def configure(conf): pass def build(bld): if bld.cmd == 'install': #intl does not like the keys in (not an xml and no translation strings) #add to potfiles in for another try bld.install_as ('${DATADIR}/mime-info/oregano.keys', 'mime/oregano.keys.in') bld.install_files ('${DATADIR}/icons/hicolor/48x48/apps/', 'mime/oregano.png') bld.install_files ('${DATADIR}/icons/hicolor/scalable/apps/', 'mime/oregano.svg') bld.install_files ('${DATADIR}/oregano/ui/', 'xml/splash.xpm') #things we need to be known by the app are already defined and stored in the main wscript bld.install_files (bld.env.path_lang, 'netlist.lang') bld.install_files (bld.env.path_model, bld.path.ant_glob('models/*.model')) bld.install_files (bld.env.path_datadir, bld.path.ant_glob('help/**/*'), cwd=bld.path, relative_trick=True) bld.install_files (bld.env.path_examples, bld.path.ant_glob('examples/*.oregano')) bld.install_files (bld.env.path_partslib, bld.path.ant_glob('libraries/*.oreglib')) bld.install_files (bld.env.path_ui, bld.path.ant_glob('xml/*.ui')) if not bld.options.no_xdg: try: bld.exec_command(['update-desktop-database', utils.subst_vars('${DATADIR}/applications', bld.env)]) except: logs.warn('Failed to execute xdg desktop database update.') try: bld.exec_command(['update-mime-database', utils.subst_vars('${DATADIR}/mime', bld.env)]) except: logs.warn('Failed to execute xdg mime database update.') bld( features = 'intltool_in', podir = "../po", style = "desktop", source = 'oregano.desktop.in', target = 'oregano.desktop', install_path = '${DATADIR}/applications', ) bld( features = 'intltool_in', podir = "../po", style = "schemas", source = 'settings/io.ahoi.oregano.gschema.xml', ) bld( features = 'intltool_in', podir = "../po", style = "xml", source = 'mime/oregano-mimetypes.xml.in', target = 'mime/oregano.xml', install_path = '${DATADIR}/mime/packages/', ) bld(rule = "nroff -man -c ${SRC} > ${TGT}", source="oregano.MAN.in", target="oregano.1") bld.install_files ('${MANDIR}/man1', 'oregano.1') oregano-0.84.41/data/oregano.desktop.in0000644000175000017500000000050713413640652016703 0ustar rubenruben[Desktop Entry] _Name=Oregano _GenericName=Electrical Engineering Tool _Comment=Schematic, capture and simulation of electronic circuits Exec=oregano %F Icon=oregano Terminal=false X-MultipleArgs=false Type=Application Categories=GTK;Science;Education;Physics; Encoding=UTF-8 StartupNotify=true MimeType=application/x-oregano; oregano-0.84.41/data/libraries/0000755000175000017500000000000013413640652015223 5ustar rubenrubenoregano-0.84.41/data/libraries/cpu.oreglib0000644000175000017500000047360413413640652017375 0ustar rubenruben CPU CPU Library 0.30 Hector Bellesi 6-jul-2001 8051 (0 0)(80 0)(80 250)(0 250)(0 0) (-20 10)(0 10) (-20 30)(0 30) (-20 60)(0 60) (-20 90)(0 90) (-20 120)(-6 120) (-20 130)(-6 130) (-20 140)(0 140) (-20 150)(0 150) (-20 170)(0 170) (-20 180)(0 180) (-20 190)(0 190) (-20 200)(0 200) (-20 210)(0 210) (-20 220)(0 220) (-20 230)(0 230) (-20 240)(0 240) (40 -20)(40 0) (40 250)(40 270) (80 10)(100 10) (80 20)(100 20) (80 30)(100 30) (80 40)(100 40) (80 50)(100 50) (80 60)(100 60) (80 70)(100 70) (80 80)(100 80) (80 100)(100 100) (80 110)(100 110) (80 120)(100 120) (80 130)(100 130) (80 140)(100 140) (80 150)(100 150) (80 160)(100 160) (80 170)(100 170) (86 190)(100 190) (86 200)(100 200) (86 210)(100 210) (80 220)(100 220) (80 230)(100 230) (80 240)(100 240) (-6 117)(0 123) (-6 127)(0 133) (80 187)(86 193) (80 197)(86 203) (80 207)(86 213) (-20 10 31) (-20 30 19) (-20 60 18) (-20 90 9) (-20 120 12) (-20 130 13) (-20 140 14) (-20 150 15) (-20 170 1) (-20 180 2) (-20 190 3) (-20 200 4) (-20 210 5) (-20 220 6) (-20 230 7) (-20 240 8) (40 -20 40) (40 270 20) (100 10 39) (100 20 38) (100 30 37) (100 40 36) (100 50 35) (100 60 34) (100 70 33) (100 80 32) (100 100 21) (100 110 22) (100 120 23) (100 130 24) (100 140 25) (100 150 26) (100 160 27) (100 170 28) (100 190 17) (100 200 16) (100 210 29) (100 220 30) (100 230 11) (100 240 10) eq 6809 (0 0)(80 0)(80 280)(0 280)(0 0) (-20 10)(0 10) (-20 40)(0 40) (-20 60)(-6 60) (-20 80)(-6 80) (-20 100)(-6 100) (-20 120)(-6 120) (-20 140)(-6 140) (-20 160)(0 160) (-20 180)(0 180) (-20 200)(0 200) (-20 210)(0 210) (-20 220)(0 220) (-20 230)(0 230) (-20 240)(0 240) (-20 250)(0 250) (-20 260)(0 260) (-20 270)(0 270) (40 -20)(40 0) (40 280)(40 300) (80 10)(100 10) (80 20)(100 20) (80 30)(100 30) (80 40)(100 40) (80 50)(100 50) (80 60)(100 60) (80 70)(100 70) (80 80)(100 80) (80 90)(100 90) (80 100)(100 100) (80 110)(100 110) (80 120)(100 120) (80 130)(100 130) (80 140)(100 140) (80 150)(100 150) (80 160)(100 160) (80 180)(100 180) (80 200)(100 200) (80 220)(100 220) (80 240)(100 240) (80 260)(100 260) (-6 57)(0 63) (-6 77)(0 83) (-6 97)(0 103) (-6 117)(0 123) (-6 137)(0 143) (-20 10 39) (-20 40 38) (-20 60 37) (-20 80 2) (-20 100 40) (-20 120 3) (-20 140 4) (-20 160 36) (-20 180 33) (-20 200 31) (-20 210 30) (-20 220 29) (-20 230 28) (-20 240 27) (-20 250 26) (-20 260 25) (-20 270 24) (40 -20 7) (40 300 1) (100 10 8) (100 20 9) (100 30 10) (100 40 11) (100 50 12) (100 60 13) (100 70 14) (100 80 15) (100 90 16) (100 100 17) (100 110 18) (100 120 19) (100 130 20) (100 140 21) (100 150 22) (100 160 23) (100 180 34) (100 200 35) (100 220 6) (100 240 5) (100 260 32) 6811A0 (0 0)(80 0)(80 310)(0 310)(0 0) (-20 10)(0 10) (-20 40)(0 40) (-20 60)(-6 60) (-20 70)(-6 70) (-20 80)(-6 80) (-20 100)(0 100) (-20 110)(0 110) (-20 130)(0 130) (-20 140)(0 140) (-20 160)(0 160) (-20 170)(0 170) (-20 180)(0 180) (-20 200)(0 200) (-20 210)(0 210) (-20 220)(0 220) (-20 230)(0 230) (-20 240)(0 240) (-20 250)(0 250) (-20 270)(0 270) (-20 280)(0 280) (-20 290)(0 290) (-20 300)(0 300) (40 -20)(40 0) (40 310)(40 330) (80 10)(100 10) (80 20)(100 20) (80 30)(100 30) (80 40)(100 40) (80 50)(100 50) (80 60)(100 60) (80 70)(100 70) (80 80)(100 80) (80 100)(100 100) (80 110)(100 110) (80 120)(100 120) (80 130)(100 130) (80 140)(100 140) (80 150)(100 150) (80 160)(100 160) (80 170)(100 170) (80 190)(100 190) (80 200)(100 200) (86 210)(100 210) (80 220)(100 220) (80 230)(100 230) (80 240)(100 240) (80 250)(100 250) (80 260)(100 260) (-6 57)(0 63) (-6 67)(0 73) (-6 77)(0 83) (-20 10 30) (-20 40 29) (-20 60 39) (-20 70 41) (-20 80 40) (-20 100 22) (-20 110 21) (-20 130 25) (-20 140 24) (-20 160 27) (-20 170 26) (-20 180 28) (-20 200 42) (-20 210 43) (-20 220 44) (-20 230 45) (-20 240 46) (-20 250 47) (-20 270 17) (-20 280 18) (-20 290 19) (-20 300 20) (40 -20 48) (40 330 23) (100 10 8) (100 20 7) (100 30 6) (100 40 5) (100 50 4) (100 60 3) (100 70 2) (100 80 1) (100 100 16) (100 110 15) (100 120 14) (100 130 13) (100 140 12) (100 150 11) (100 160 10) (100 170 9) (100 190 31) (100 200 32) (100 210 33) (100 220 34) (100 230 35) (100 240 36) (100 250 37) (100 260 38) Z80 (0 0)(80 0)(80 260)(0 260)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (-20 110)(-6 110) (-20 130)(-6 130) (-20 140)(-6 140) (-20 160)(-6 160) (-20 170)(-6 170) (-20 190)(-6 190) (-20 200)(-6 200) (-20 220)(-6 220) (-20 230)(-6 230) (-20 240)(-6 240) (-20 250)(-6 250) (40 -20)(40 0) (40 260)(40 280) (80 10)(100 10) (80 20)(100 20) (80 30)(100 30) (80 40)(100 40) (80 50)(100 50) (80 60)(100 60) (80 70)(100 70) (80 80)(100 80) (80 90)(100 90) (80 100)(100 100) (80 110)(100 110) (80 120)(100 120) (80 130)(100 130) (80 140)(100 140) (80 150)(100 150) (80 160)(100 160) (86 200)(100 200) (86 220)(100 220) (-6 107)(0 113) (-6 127)(0 133) (-6 137)(0 143) (-6 157)(0 163) (-6 167)(0 173) (-6 187)(0 193) (-6 197)(0 203) (-6 217)(0 223) (-6 227)(0 233) (-6 237)(0 243) (-6 247)(0 253) (80 197)(86 203) (80 217)(86 223) (-20 10 14) (-20 20 15) (-20 30 12) (-20 40 8) (-20 50 7) (-20 60 9) (-20 70 10) (-20 80 13) (-20 100 6) (-20 110 27) (-20 130 26) (-20 140 28) (-20 160 16) (-20 170 17) (-20 190 18) (-20 200 24) (-20 220 19) (-20 230 20) (-20 240 21) (-20 250 22) (40 -20 11) (40 280 29) (100 10 30) (100 20 31) (100 30 32) (100 40 33) (100 50 34) (100 60 35) (100 70 36) (100 80 37) (100 90 38) (100 100 39) (100 110 40) (100 120 1) (100 130 2) (100 140 3) (100 150 4) (100 160 5) (100 200 25) (100 220 23) 6811E9 (0 0)(80 0)(80 320)(0 320)(0 0) (-20 10)(0 10) (-20 40)(0 40) (-20 60)(-6 60) (-20 70)(-6 70) (-20 80)(-6 80) (-20 100)(0 100) (-20 110)(0 110) (-20 130)(0 130) (-20 140)(0 140) (-20 160)(0 160) (-20 170)(0 170) (-20 180)(0 180) (-20 200)(0 200) (-20 210)(0 210) (-20 220)(0 220) (-20 230)(0 230) (-20 240)(0 240) (-20 250)(0 250) (-20 280)(0 280) (-20 290)(0 290) (-20 300)(0 300) (-20 310)(0 310) (40 -20)(40 0) (40 320)(40 340) (80 10)(100 10) (80 20)(100 20) (80 30)(100 30) (80 40)(100 40) (80 50)(100 50) (80 60)(100 60) (80 70)(100 70) (80 80)(100 80) (80 100)(100 100) (80 110)(100 110) (80 120)(100 120) (80 130)(100 130) (80 140)(100 140) (80 150)(100 150) (80 160)(100 160) (80 170)(100 170) (80 190)(100 190) (80 200)(100 200) (86 210)(100 210) (80 220)(100 220) (80 230)(100 230) (80 240)(100 240) (80 250)(100 250) (80 260)(100 260) (80 280)(100 280) (80 290)(100 290) (80 300)(100 300) (80 310)(100 310) (-6 57)(0 63) (-6 67)(0 73) (-6 77)(0 83) (-20 10 8) (-20 40 7) (-20 60 17) (-20 70 19) (-20 80 18) (-20 100 52) (-20 110 51) (-20 130 3) (-20 140 2) (-20 160 5) (-20 170 4) (-20 180 6) (-20 200 20) (-20 210 21) (-20 220 22) (-20 230 23) (-20 240 24) (-20 250 25) (-20 280 43) (-20 290 44) (-20 300 45) (-20 310 46) (40 -20 26) (40 340 1) (100 10 34) (100 20 33) (100 30 32) (100 40 31) (100 50 30) (100 60 29) (100 70 28) (100 80 27) (100 100 42) (100 110 41) (100 120 40) (100 130 39) (100 140 38) (100 150 37) (100 160 36) (100 170 35) (100 190 9) (100 200 10) (100 210 11) (100 220 12) (100 230 13) (100 240 14) (100 250 15) (100 260 16) (100 280 47) (100 290 48) (100 300 49) (100 310 50) 8088 (0 0)(80 0)(80 260)(0 260)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (-20 110)(0 110) (-20 130)(-6 130) (-20 140)(-6 140) (-20 180)(0 180) (-20 200)(0 200) (-20 220)(0 220) (40 -20)(40 0) (40 260)(40 280) (50 260)(50 280) (80 10)(100 10) (80 20)(100 20) (80 30)(100 30) (80 40)(100 40) (80 50)(100 50) (80 60)(100 60) (80 70)(100 70) (80 80)(100 80) (80 90)(100 90) (80 100)(100 100) (80 110)(100 110) (80 120)(100 120) (80 130)(100 130) (80 140)(100 140) (80 150)(100 150) (80 160)(100 160) (80 170)(100 170) (80 180)(100 180) (80 190)(100 190) (80 200)(100 200) (86 220)(100 220) (86 230)(100 230) (86 240)(100 240) (86 250)(100 250) (-6 127)(0 133) (-6 137)(0 143) (80 217)(86 223) (80 227)(86 233) (80 237)(86 243) (80 247)(86 253) (-20 10 19) (-20 20 22) (-20 30 21) (-20 50 33) (-20 70 18) (-20 80 17) (-20 100 31) (-20 110 30) (-20 130 34) (-20 140 23) (-20 180 27) (-20 200 25) (-20 220 28) (40 -20 40) (40 280 20) (50 280 1) (100 10 16) (100 20 15) (100 30 14) (100 40 13) (100 50 12) (100 60 11) (100 70 10) (100 80 9) (100 90 8) (100 100 7) (100 110 6) (100 120 5) (100 130 4) (100 140 3) (100 150 2) (100 160 39) (100 170 38) (100 180 37) (100 190 36) (100 200 25) (100 220 32) (100 230 29) (100 240 24) (100 250 26) 8048 (0 0)(80 0)(80 250)(0 250)(0 0) (-20 10)(0 10) (-20 30)(0 30) (-20 60)(0 60) (-20 90)(0 90) (-20 120)(-6 120) (-20 130)(-6 130) (-20 140)(0 140) (-20 150)(0 150) (-20 170)(0 170) (-20 180)(0 180) (-20 190)(0 190) (-20 200)(0 200) (-20 210)(0 210) (-20 220)(0 220) (-20 230)(0 230) (-20 240)(0 240) (40 -20)(40 0) (40 250)(40 270) (80 10)(100 10) (80 20)(100 20) (80 30)(100 30) (80 40)(100 40) (80 50)(100 50) (80 60)(100 60) (80 70)(100 70) (80 80)(100 80) (80 100)(100 100) (80 110)(100 110) (80 120)(100 120) (80 130)(100 130) (80 140)(100 140) (80 150)(100 150) (80 160)(100 160) (80 170)(100 170) (86 190)(100 190) (86 200)(100 200) (86 210)(100 210) (80 220)(100 220) (80 230)(100 230) (80 240)(100 240) (-6 117)(0 123) (-6 127)(0 133) (80 187)(86 193) (80 197)(86 203) (80 207)(86 213) (-20 10 7) (-20 30 2) (-20 60 3) (-20 90 4) (-20 120 6) (-20 130 5) (-20 140 1) (-20 150 39) (-20 170 27) (-20 180 28) (-20 190 29) (-20 200 30) (-20 210 31) (-20 220 32) (-20 230 33) (-20 240 34) (40 -20 40) (40 270 20) (100 10 12) (100 20 13) (100 30 14) (100 40 15) (100 50 16) (100 60 17) (100 70 18) (100 80 19) (100 100 21) (100 110 22) (100 120 23) (100 130 24) (100 140 35) (100 150 36) (100 160 37) (100 170 38) (100 190 8) (100 200 10) (100 210 9) (100 220 11) (100 230 25) (100 240 26) 8051 8051 Microcontroller Reference designator @refdes (0 -10) yes 31 31 (-17 10) no EA|VP (2 15) no 19 19 (-17 30) no X1 (2 35) no 18 18 (-17 60) no X2 (2 65) no 9 9 (-12 90) no RESET (2 95) no 12 12 (-17 120) no INT0 (2 125) no 13 13 (-17 130) no INT1 (2 135) no 14 14 (-17 140) no T0 (2 145) no 15 15 (-17 150) no T1 (2 155) no 1 1 (-17 170) no P1.0 (2 175) no 2 2 (-17 180) no P1.1 (2 185) no 3 3 (-17 190) no P1.2 (2 195) no 4 4 (-17 200) no P1.3 (2 205) no 5 5 (-17 210) no P1.4 (2 215) no 6 6 (-17 220) no P1.5 (2 225) no 7 7 (-17 230) no P1.6 (2 235) no 8 8 (-17 240) no P1.7 (2 245) no 40 40 (22 -2) no 20 20 (22 265) no 39 39 (87 10) no P0.0 (55 15) no 38 38 (87 20) no P0.1 (55 25) no 37 37 (87 30) no P0.2 (55 35) no 36 36 (87 40) no P0.3 (55 45) no 35 35 (87 50) no P0.4 (55 55) no 34 34 (87 60) no P0.5 (55 65) no 33 33 (87 70) no P0.6 (55 75) no 32 32 (87 80) no P0.7 (55 85) no 21 21 (87 100) no P2.0 (55 105) no 22 22 (87 110) no P2.1 (55 115) no 23 23 (87 120) no P2.2 (55 125) no 24 24 (87 130) no P2.3 (55 135) no 25 25 (87 140) no P2.4 (55 145) no 26 26 (87 150) no P2.5 (55 155) no 27 27 (87 160) no P2.6 (55 165) no 28 28 (87 170) no P2.7 (55 175) no 17 17 (87 190) no RD (60 195) no 16 16 (87 200) no WR (60 205) no 29 29 (87 210) no PSEN (50 215) no 30 30 (87 220) no ALE (58 225) no 11 11 (87 230) no TXD (58 235) no 10 10 (87 240) no RXD (58 245) no Model @model (45 265) no Refdes U Model 8051 Template 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 8052 eq See 8051 8048 8048 Microcontroller Reference designator @refdes (0 -10) yes 7 7 (-12 10) no EA (2 15) no 2 2 (-12 30) no X1 (2 35) no 3 3 (-12 60) no X2 (2 65) no 4 4 (-12 90) no RESET (2 95) no 6 6 (-12 120) no INT (2 125) no 5 5 (-12 130) no SS (2 135) no 1 1 (-12 140) no T0 (2 145) no 39 39 (-17 150) no T1 (2 155) no 27 27 (-17 170) no P1.0 (2 175) no 28 28 (-17 180) no P1.1 (2 185) no 29 29 (-17 190) no P1.2 (2 195) no 30 30 (-17 200) no P1.3 (2 205) no 31 31 (-17 210) no P1.4 (2 215) no 32 32 (-17 220) no P1.5 (2 225) no 33 33 (-17 230) no P1.6 (2 235) no 34 34 (-17 240) no P1.7 (2 245) no 40 40 (27 -2) no 20 20 (27 265) no 12 12 (87 10) no D0 (65 15) no 13 13 (87 20) no D1 (65 25) no 14 14 (87 30) no D2 (65 35) no 15 15 (87 40) no D3 (65 45) no 16 16 (87 50) no D4 (65 55) no 17 17 (87 60) no D5 (65 65) no 18 18 (87 70) no D6 (65 75) no 19 19 (87 80) no D7 (65 85) no 21 21 (87 100) no P2.0 (55 105) no 22 22 (87 110) no P2.1 (55 115) no 23 23 (87 120) no P2.2 (55 125) no 24 24 (87 130) no P2.3 (55 135) no 35 35 (87 140) no P2.4 (55 145) no 36 36 (87 150) no P2.5 (55 155) no 37 37 (87 160) no P2.6 (55 165) no 38 38 (87 170) no P2.7 (55 175) no 8 8 (87 190) no RD (65 195) no 10 10 (87 200) no WR (65 205) no 9 9 (87 210) no PSEN (50 215) no 11 11 (87 220) no ALE (58 225) no 25 25 (87 230) no PRG (58 235) no 26 26 (87 240) no VP (65 245) no Model @model (48 265) no Refdes U Model 8048 Template 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 8049 eq See 8048 6809 6809 Microprocessor Reference designator @refdes (0 -10) yes 39 39 (-17 10) no X1 (2 15) no 38 38 (-17 40) no EX2 (2 45) no 37 37 (-17 60) no RESET (2 65) no 2 2 (-12 80) no NMI (2 85) no 40 40 (-17 100) no HALT (2 105) no 3 3 (-12 120) no IRQ (2 125) no 4 4 (-12 140) no FIRQ (2 145) no 36 36 (-17 160) no RDY (2 165) no 33 33 (-17 180) no DMA (2 185) no 31 31 (-17 200) no D0 (2 205) no 30 30 (-17 210) no D1 (2 215) no 29 29 (-17 220) no D2 (2 225) no 28 28 (-17 230) no D3 (2 235) no 27 27 (-17 240) no D4 (2 245) no 26 26 (-17 250) no D5 (2 255) no 25 25 (-17 260) no D6 (2 265) no 24 24 (-17 270) no D7 (2 275) no 7 7 (27 -2) no 1 1 (27 295) no 8 8 (87 10) no A0 (65 15) no 9 9 (87 20) no A1 (65 25) no 10 10 (87 30) no A2 (65 35) no 11 11 (87 40) no A3 (65 45) no 12 12 (87 50) no A4 (65 55) no 13 13 (87 60) no A5 (65 65) no 14 14 (87 70) no A6 (65 75) no 15 15 (87 80) no A7 (65 85) no 16 16 (87 90) no A8 (65 95) no 17 17 (87 100) no A9 (65 105) no 18 18 (87 110) no A10 (60 115) no 19 19 (87 120) no A11 (60 125) no 20 20 (87 130) no A12 (60 135) no 21 21 (87 140) no A13 (60 145) no 22 22 (87 150) no A14 (60 155) no 23 23 (87 160) no A15 (60 165) no 34 34 (87 180) no E (67 185) no 35 35 (87 200) no Q (67 205) no 6 6 (87 220) no BA (65 225) no 5 5 (87 240) no BS (65 245) no 32 32 (87 260) no R|W (60 265) no Model @model (45 295) no Refdes U Model 6809 Template 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 68HC11A0 6811A0 Microcontroller Reference designator @refdes (0 -10) yes 30 30 (-17 10) no XT (2 15) no 29 29 (-17 40) no EX (2 45) no 39 39 (-17 60) no RESET (2 65) no 41 41 (-17 70) no IRQ (2 75) no 40 40 (-17 80) no XIRQ (2 85) no 22 22 (-17 100) no VRH (2 105) no 21 21 (-17 110) no VRL (2 115) no 25 25 (-17 130) no MODA (2 135) no 24 24 (-17 140) no MODB (2 145) no 27 27 (-17 160) no E (2 165) no 26 26 (-17 170) no AS (2 175) no 28 28 (-17 180) no R|W (2 185) no 42 42 (-17 200) no PD0 (2 205) no 43 43 (-17 210) no PD1 (2 215) no 44 44 (-17 220) no PD2 (2 225) no 45 45 (-17 230) no PD3 (2 235) no 46 46 (-17 240) no PD4 (2 245) no 47 47 (-17 250) no PD5 (2 255) no 17 17 (-17 270) no PE0 (2 275) no 18 18 (-17 280) no PE1 (2 285) no 19 19 (-17 290) no PE2 (2 295) no 20 20 (-17 300) no PE3 (2 305) no 48 48 (22 -2) no 23 23 (22 325) no 8 8 (87 10) no PA0 (60 15) no 7 7 (87 20) no PA1 (60 25) no 6 6 (87 30) no PA2 (60 35) no 5 5 (87 40) no PA3 (60 45) no 4 4 (87 50) no PA4 (60 55) no 3 3 (87 60) no PA5 (60 65) no 2 2 (87 70) no PA6 (60 75) no 1 1 (87 80) no PA7 (60 85) no 16 16 (87 100) no PB0 (60 105) no 15 15 (87 110) no PB1 (60 115) no 14 14 (87 120) no PB2 (60 125) no 13 13 (87 130) no PB3 (60 135) no 12 12 (87 140) no PB4 (60 145) no 11 11 (87 150) no PB5 (60 155) no 10 10 (87 160) no PB6 (60 165) no 9 9 (87 170) no PB7 (60 175) no 31 31 (87 190) no PC0 (60 195) no 32 32 (87 200) no PC1 (60 205) no 33 33 (87 210) no PC2 (60 215) no 34 34 (87 220) no PC3 (60 225) no 35 35 (87 230) no PC4 (60 235) no 36 36 (87 240) no PC5 (60 245) no 37 37 (87 250) no PC6 (60 255) no 38 38 (87 260) no PC7 (60 265) no Model @model (45 325) no Refdes U Model 68HC11A0 Template 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 68HC11E9 6811E9 Microcontroller Reference designator @refdes (0 -10) yes 8 8 (-12 10) no XT (2 15) no 7 7 (-12 40) no EX (2 45) no 17 17 (-17 60) no RESET (2 65) no 19 19 (-17 70) no IRQ (2 75) no 18 18 (-17 80) no XIRQ (2 85) no 52 52 (-17 100) no VRH (2 105) no 51 51 (-17 110) no VRL (2 115) no 3 3 (-12 130) no MODA (2 135) no 2 2 (-12 140) no MODB (2 145) no 5 5 (-12 160) no E (2 165) no 4 4 (-12 170) no AS (2 175) no 6 6 (-12 180) no R|W (2 185) no 20 20 (-17 200) no PD0 (2 205) no 21 21 (-17 210) no PD1 (2 215) no 22 22 (-17 220) no PD2 (2 225) no 23 23 (-17 230) no PD3 (2 235) no 24 24 (-17 240) no PD4 (2 245) no 25 25 (-17 250) no PD5 (2 255) no 43 43 (-17 280) no PE0 (2 285) no 44 44 (-17 290) no PE1 (2 295) no 45 45 (-17 300) no PE2 (2 305) no 46 46 (-17 310) no PE3 (2 315) no 26 26 (22 -2) no 1 1 (27 335) no 34 34 (87 10) no PA0 (60 15) no 33 33 (87 20) no PA1 (60 25) no 32 32 (87 30) no PA2 (60 35) no 31 31 (87 40) no PA3 (60 45) no 30 30 (87 50) no PA4 (60 55) no 29 29 (87 60) no PA5 (60 65) no 28 28 (87 70) no PA6 (60 75) no 27 27 (87 80) no PA7 (60 85) no 42 42 (87 100) no PB0 (60 105) no 41 41 (87 110) no PB1 (60 115) no 40 40 (87 120) no PB2 (60 125) no 39 39 (87 130) no PB3 (60 135) no 38 38 (87 140) no PB4 (60 145) no 37 37 (87 150) no PB5 (60 155) no 36 36 (87 160) no PB6 (60 165) no 35 35 (87 170) no PB7 (60 175) no 9 9 (87 190) no PC0 (60 195) no 10 10 (87 200) no PC1 (60 205) no 11 11 (87 210) no PC2 (60 215) no 12 12 (87 220) no PC3 (60 225) no 13 13 (87 230) no PC4 (60 235) no 14 14 (87 240) no PC5 (60 245) no 15 15 (87 250) no PC6 (60 255) no 16 16 (87 260) no PC7 (60 265) no 47 47 (87 280) no PE4 (60 285) no 48 48 (87 290) no PE5 (60 295) no 49 49 (87 300) no PE6 (60 305) no 50 50 (87 310) no PE7 (60 315) no Model @model (45 335) no Refdes U Model 68HC11E9 Template 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 Z80 Z80 Microprocessor Reference designator @refdes (0 -10) yes 6 6 (-12 100) no CLK (2 105) no 27 27 (-17 110) no M1 (2 115) no 26 26 (-17 130) no RESET (2 135) no 28 28 (-17 140) no RFSH (2 145) no 16 16 (-17 160) no INT (2 165) no 17 17 (-17 170) no NMI (2 175) no 18 18 (-17 190) no HALT (2 195) no 24 24 (-17 200) no WAIT (2 205) no 19 19 (-17 220) no MREQ (2 225) no 20 20 (-17 230) no IOREQ (2 235) no 21 21 (-17 240) no RD (2 245) no 22 22 (-17 250) no WR (2 255) no 14 14 (-17 10) no D0 (2 15) no 15 15 (-17 20) no D1 (2 25) no 12 12 (-17 30) no D2 (2 35) no 8 8 (-12 40) no D3 (2 45) no 7 7 (-12 50) no D4 (2 55) no 9 9 (-12 60) no D5 (2 65) no 10 10 (-17 70) no D6 (2 75) no 13 13 (-17 80) no D7 (2 85) no 11 11 (22 -2) no 29 29 (22 275) no 30 30 (87 10) no A0 (65 15) no 31 31 (87 20) no A1 (65 25) no 32 32 (87 30) no A2 (65 35) no 33 33 (87 40) no A3 (65 45) no 34 34 (87 50) no A4 (65 55) no 35 35 (87 60) no A5 (65 65) no 36 36 (87 70) no A6 (65 75) no 37 37 (87 80) no A7 (65 85) no 38 38 (87 90) no A8 (65 95) no 39 39 (87 100) no A9 (65 105) no 40 40 (87 110) no A10 (60 115) no 1 1 (87 120) no A11 (60 125) no 2 2 (87 130) no A12 (60 135) no 3 3 (87 140) no A13 (60 145) no 4 4 (87 150) no A14 (60 155) no 5 5 (87 160) no A15 (60 165) no 25 25 (87 200) no BUSRQ (43 205) no 23 23 (87 220) no BUSAK (43 225) no Model @model (45 275) no Refdes U Model Z80 Template 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 8088 MIN 8088 Microprocessor Reference designator @refdes (0 -10) yes 19 19 (-17 10) no CLK (2 15) no 22 22 (-17 20) no RDY (2 25) no 21 21 (-17 30) no RST (2 35) no 33 33 (-17 50) no MN|MX (2 55) no 18 18 (-17 70) no INTR (2 75) no 17 17 (-17 80) no NMI (2 85) no 31 31 (-17 100) no HOLD (2 105) no 30 30 (-17 110) no HLDA (2 115) no 34 34 (-17 130) no SSO (2 135) no 23 23 (-17 140) no TEST (2 145) no 27 27 (-17 180) no DT|R (2 185) no 25 25 (-17 200) no ALE (2 205) no 28 28 (-17 220) no IO|M (2 225) no 40 40 (22 -2) no 20 20 (25 275) no 1 1 (45 275) no 16 16 (87 10) no AD0 (57 15) no 15 15 (87 20) no AD1 (57 25) no 14 14 (87 30) no AD2 (57 35) no 13 13 (87 40) no AD3 (57 45) no 12 12 (87 50) no AD4 (57 55) no 11 11 (87 60) no AD5 (57 65) no 10 10 (87 70) no AD6 (57 75) no 9 9 (87 80) no AD7 (57 85) no 8 8 (87 90) no A8 (62 95) no 7 7 (87 100) no A9 (62 105) no 6 6 (87 110) no A10 (57 115) no 5 5 (87 120) no A11 (57 125) no 4 4 (87 130) no A12 (57 135) no 3 3 (87 140) no A13 (57 145) no 2 2 (87 150) no A14 (57 155) no 39 39 (87 160) no A15 (57 165) no 38 38 (87 170) no A16|S3 (42 175) no 37 37 (87 180) no A17|S4 (42 185) no 36 36 (87 190) no A18|S5 (42 195) no 35 35 (87 200) no A19|S6 (42 205) no 32 32 (87 220) no RD (62 225) no 29 29 (87 230) no WR (62 235) no 24 24 (87 240) no INTA (54 245) no 26 26 (87 250) no DEN (56 255) no Model @model (-20 275) no Refdes U Model 8088 Template 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 8088 MAX 8088 Microprocessor Reference designator @refdes (0 -10) yes 19 19 (-17 10) no CLK (2 15) no 22 22 (-17 20) no RDY (2 25) no 21 21 (-17 30) no RST (2 35) no 33 33 (-17 50) no MN|MX (2 55) no 18 18 (-17 70) no INTR (2 75) no 17 17 (-17 80) no NMI (2 85) no 31 31 (-17 100) no GT0 (2 105) no 30 30 (-17 110) no GT1 (2 115) no 34 34 (-17 130) no HIGH (2 135) no 23 23 (-17 140) no TEST (2 145) no 27 27 (-17 180) no S1 (2 185) no 25 25 (-17 200) no QS0 (2 205) no 28 28 (-17 220) no S2 (2 225) no 40 40 (22 -2) no 20 20 (25 275) no 1 1 (45 275) no 16 16 (87 10) no AD0 (57 15) no 15 15 (87 20) no AD1 (57 25) no 14 14 (87 30) no AD2 (57 35) no 13 13 (87 40) no AD3 (57 45) no 12 12 (87 50) no AD4 (57 55) no 11 11 (87 60) no AD5 (57 65) no 10 10 (87 70) no AD6 (57 75) no 9 9 (87 80) no AD7 (57 85) no 8 8 (87 90) no A8 (62 95) no 7 7 (87 100) no A9 (62 105) no 6 6 (87 110) no A10 (57 115) no 5 5 (87 120) no A11 (57 125) no 4 4 (87 130) no A12 (57 135) no 3 3 (87 140) no A13 (57 145) no 2 2 (87 150) no A14 (57 155) no 39 39 (87 160) no A15 (57 165) no 38 38 (87 170) no A16|S3 (42 175) no 37 37 (87 180) no A17|S4 (42 185) no 36 36 (87 190) no A18|S5 (42 195) no 35 35 (87 200) no A19|S6 (42 205) no 32 32 (87 220) no RD (62 225) no 29 29 (87 230) no LOCK (52 235) no 24 24 (87 240) no QS1 (55 245) no 26 26 (87 250) no S0 (62 255) no Model @model (-20 275) no Refdes U Model 8088 Template 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 oregano-0.84.41/data/libraries/cmos.oreglib0000644000175000017500000256561613413640652017556 0ustar rubenruben CMOS CMOS Library 0.94 Hector Bellesi 3-dec-2001 4011a (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (20 -20)(20 0) (20 60)(20 40) (56 20)(70 20) (50 17)(56 23) (-20 10 1) (-20 30 2) (20 -20 14) (20 60 7) (70 20 3) 4011b (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (56 20)(70 20) (50 17)(56 23) (-20 10 6) (-20 30 5) (70 20 4) 4011c (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (56 20)(70 20) (50 17)(56 23) (-20 10 9) (-20 30 8) (70 20 10) 4011d (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (56 20)(70 20) (50 17)(56 23) (-20 10 12) (-20 30 13) (70 20 11) 4001a (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 30)(4 30) (10 -20)(10 0) (10 60)(10 40) (51 20)(70 20) (45 17)(51 23) (-20 10 1) (-20 30 2) (10 -20 14) (10 60 7) (70 20 3) 4001b (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 30)(4 30) (51 20)(70 20) (45 17)(51 23) (-20 10 5) (-20 30 7) (70 20 4) 4001c (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 30)(4 30) (51 20)(70 20) (45 17)(51 23) (-20 10 8) (-20 30 9) (70 20 10) 4001d (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 30)(4 30) (51 20)(70 20) (45 17)(51 23) (-20 10 13) (-20 30 12) (70 20 11) 4025a (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 20)(6 20) (-20 30)(4 30) (10 -20)(10 0) (10 60)(10 40) (51 20)(70 20) (45 17)(51 23) (-20 10 3) (-20 20 4) (-20 30 5) (10 -20 14) (10 60 7) (70 20 6) 4025b (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 20)(6 20) (-20 30)(4 30) (51 20)(70 20) (45 17)(51 23) (-20 10 13) (-20 20 12) (-20 30 11) (70 20 10) 4025c (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 20)(6 20) (-20 30)(4 30) (51 20)(70 20) (45 17)(51 23) (-20 10 1) (-20 20 2) (-20 30 8) (70 20 9) 4069a (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (20 -10)(20 10) (20 50)(20 30) (46 20)(60 20) (40 17)(46 23) (-20 20 1) (20 -10 14) (20 50 7) (60 20 2) 4009a (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (20 -10)(20 10) (20 50)(20 30) (46 20)(60 20) (40 17)(46 23) (-20 20 3) (20 -10 1) (20 50 8) (60 20 2) 4009b (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (20 -10)(20 10) (20 50)(20 30) (46 20)(60 20) (40 17)(46 23) (-20 20 5) (20 -10 16) (20 50 13) (60 20 4) 4000c (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20 8) (60 20 9) 4009c (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20 7) (60 20 6) 4009d (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20 9) (60 20 10) 4009e (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20 11) (60 20 12) 4009f (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20 14) (60 20 15) 4049b (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20 5) (60 20 4) 4069b (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20 3) (60 20 4) 4069c (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20 5) (60 20 6) 4069d (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20 9) (60 20 8) 4069e (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20 11) (60 20 10) 4069f (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20 13) (60 20 12) 4002a (0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50) (0 0)(15 0) (0 50)(15 50) (15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25) (15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25) (-20 10)(5 10) (-20 20)(8 20) (-20 30)(8 30) (-20 40)(5 40) (10 -20)(10 0) (10 50)(10 70) (69 25)(75 20)(80 20) (63 22)(69 28) (-20 10 2) (-20 20 3) (-20 30 4) (-20 40 5) (10 -20 14) (10 70 7) (80 20 1) 4002b (0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50) (0 0)(15 0) (0 50)(15 50) (15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25) (15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25) (-20 10)(5 10) (-20 20)(8 20) (-20 30)(8 30) (-20 40)(5 40) (69 25)(75 20)(80 20) (63 22)(69 28) (-20 10 12) (-20 20 11) (-20 30 10) (-20 40 9) (80 20 13) 4012a (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25) (40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (20 -20)(20 0) (20 70)(20 50) (71 25)(78 20)(90 20) (65 22)(71 28) (-20 10 2) (-20 20 3) (-20 30 4) (-20 40 5) (20 -20 14) (20 70 7) (90 20 1) 4012b (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25) (40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (71 25)(78 20)(90 20) (65 22)(71 28) (-20 10 9) (-20 20 10) (-20 30 11) (-20 40 12) (90 20 13) 4006 (0 0)(0 70) (0 0)(40 0) (0 70)(40 70) (40 0)(40 70) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (20 -20)(20 0) (20 90)(20 70) (-20 10 1) (-20 20 4) (-20 30 5) (-20 40 6) (-20 60 3) (20 -20 14) (20 90 7) (60 10 13) (60 20 11) (60 30 12) (60 40 10) (60 50 8) (60 60 9) 4007a (0 20)(15 20) (15 10)(15 30) (20 30)(30 30)(30 40)(50 40) (20 10)(30 10)(30 -10) (30 20)(25 24) (25 16)(30 20) (20 20)(30 20) (20 7)(20 13) (20 17)(20 23) (20 27)(20 33) (0 70)(15 70) (15 60)(15 80) (20 80)(30 80)(30 100) (20 60)(30 60)(30 50)(50 50) (20 70)(25 74) (25 66)(20 70) (20 70)(30 70) (20 57)(20 63) (20 67)(20 73) (20 77)(20 83) (0 20)(0 70) (0 20)(-20 20) (30 -10 14) (-20 20 6) (50 40 13) (50 50 8) (30 100 7) 4007b (0 20)(15 20) (15 10)(15 30) (20 30)(30 30)(30 40)(50 40) (20 10)(30 10)(30 -10) (30 20)(25 24) (25 16)(30 20) (20 20)(30 20) (20 7)(20 13) (20 17)(20 23) (20 27)(20 33) (0 70)(15 70) (15 60)(15 80) (20 80)(30 80)(30 100) (20 60)(30 60)(30 50)(50 50) (20 70)(25 74) (25 66)(20 70) (20 70)(30 70) (20 57)(20 63) (20 67)(20 73) (20 77)(20 83) (0 20)(0 70) (0 20)(-20 20) (30 -10 2) (-20 20 3) (50 40 1) (50 50 5) (30 100 4) 4007c (0 20)(15 20) (15 10)(15 30) (20 30)(30 30)(30 40)(50 40) (20 10)(30 10)(30 -10) (30 20)(25 24) (25 16)(30 20) (20 20)(30 20) (20 7)(20 13) (20 17)(20 23) (20 27)(20 33) (0 70)(15 70) (15 60)(15 80) (20 80)(30 80)(30 100) (20 60)(30 60)(30 50)(30 40) (20 70)(25 74) (25 66)(20 70) (20 70)(30 70) (20 57)(20 63) (20 67)(20 73) (20 77)(20 83) (0 20)(0 70) (0 20)(-20 20) (30 -10 11) (-20 20 10) (50 40 12) (50 100 9) 4008 (0 0)(40 0)(40 100)(0 100)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 60)(40 60) (60 80)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (-20 10 7) (-20 20 5) (-20 30 3) (-20 40 1) (-20 60 6) (-20 70 4) (-20 80 2) (-20 90 15) (20 -20 16) (20 120 8) (60 10 10) (60 20 11) (60 30 12) (60 40 13) (60 60 14) (60 80 9) 4029 (0 0)(40 0)(40 100)(0 100)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 60)(40 60) (60 80)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (-20 10 2) (-20 20 3) (-20 30 4) (-20 40 5) (-20 60 14) (-20 70 13) (-20 80 12) (-20 90 11) (20 -20 16) (20 120 8) (60 10 1) (60 20 15) (60 30 6) (60 40 7) (60 60 9) (60 80 10) 4035 (0 0)(40 0)(40 100)(0 100)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 60)(40 60) (60 80)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (-20 10 9) (-20 20 10) (-20 30 11) (-20 40 12) (-20 60 6) (-20 70 4) (-20 80 2) (-20 90 3) (20 -20 16) (20 120 8) (60 10 1) (60 20 15) (60 30 14) (60 40 13) (60 60 7) (60 80 5) 4052 (0 0)(40 0)(40 100)(0 100)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 60)(40 60) (60 80)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (-20 10 12) (-20 20 14) (-20 30 15) (-20 40 11) (-20 60 1) (-20 70 5) (-20 80 2) (-20 90 4) (20 -20 16) (20 120 8) (60 10 7) (60 20 6) (60 30 10) (60 40 9) (60 60 13) (60 80 3) 4089 (0 0)(40 0)(40 100)(0 100)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 60)(40 60) (60 80)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (-20 10 14) (-20 20 15) (-20 30 2) (-20 40 3) (-20 60 9) (-20 70 12) (-20 80 11) (-20 90 10) (20 -20 16) (20 120 8) (60 10 6) (60 20 5) (60 30 7) (60 40 1) (60 60 4) (60 80 13) 4510 (0 0)(40 0)(40 100)(0 100)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 60)(40 60) (60 80)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (-20 10 4) (-20 20 12) (-20 30 13) (-20 40 3) (-20 60 1) (-20 70 15) (-20 80 10) (-20 90 5) (20 -20 16) (20 120 8) (60 10 6) (60 20 11) (60 30 14) (60 40 2) (60 60 9) (60 80 7) 4522 (0 0)(40 0)(40 100)(0 100)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 60)(40 60) (60 80)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (-20 10 5) (-20 20 11) (-20 30 14) (-20 40 2) (-20 60 3) (-20 70 6) (-20 80 4) (-20 90 13) (20 -20 16) (20 120 8) (60 10 7) (60 20 9) (60 30 15) (60 40 1) (60 60 10) (60 80 12) 4529 (0 0)(40 0)(40 100)(0 100)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 60)(40 60) (60 80)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (-20 10 2) (-20 20 3) (-20 30 4) (-20 40 5) (-20 60 14) (-20 70 13) (-20 80 12) (-20 90 11) (20 -20 16) (20 120 8) (60 10 1) (60 20 15) (60 30 6) (60 40 7) (60 60 9) (60 80 10) 4013a (20 -10)(60 -10)(60 50)(20 50)(20 -10) (0 0)(20 0) (0 20)(20 20) (0 40)(20 40) (40 -30)(40 -10) (40 50)(40 70) (60 0)(80 0) (66 40)(80 40) (60 37)(66 43) (0 0 5) (0 20 3) (0 40 7) (40 -30 6) (40 70 4) (80 0 1) (80 40 2) 4013b (20 -10)(60 -10)(60 50)(20 50)(20 -10) (0 0)(20 0) (0 20)(20 20) (0 40)(20 40) (40 -30)(40 -10) (40 50)(40 70) (60 0)(80 0) (66 40)(80 40) (60 37)(66 43) (0 0 9) (0 20 11) (0 40 14) (40 -30 8) (40 70 10) (80 0 13) (80 40 12) 4014 (0 0)(40 0)(40 90)(0 90)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 60)(40 60) (60 70)(40 70) (60 80)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (20 -20)(20 0) (20 110)(20 90) (-20 10 7) (-20 20 6) (-20 30 5) (-20 40 4) (-20 50 13) (-20 60 14) (-20 70 15) (-20 80 1) (20 -20 16) (20 120 8) (60 10 2) (60 20 12) (60 30 3) (60 60 9) (60 70 11) (60 80 10) eq 4015a (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(40 50) (-20 10)(0 10) (-20 30)(0 30) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (20 -20)(20 0) (20 70)(20 50) (-20 10 7) (-20 30 9) (20 -20 16) (20 70 6) (60 10 5) (60 20 4) (60 30 3) (60 40 10) 4015b (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(40 50) (-20 10)(0 10) (-20 30)(0 30) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (20 -20)(20 0) (20 70)(20 50) (-20 10 15) (-20 30 1) (20 -20 8) (20 70 14) (60 10 13) (60 20 12) (60 30 11) (60 40 2) 4518a (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(40 50) (-20 10)(0 10) (-20 30)(0 30) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (20 -20)(20 0) (20 70)(20 50) (-20 10 2) (-20 30 1) (20 -20 16) (20 70 7) (60 10 3) (60 20 4) (60 30 5) (60 40 6) 4518b (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(40 50) (-20 10)(0 10) (-20 30)(0 30) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (20 -20)(20 0) (20 70)(20 50) (-20 10 10) (-20 30 9) (20 -20 8) (20 70 15) (60 10 11) (60 20 12) (60 30 13) (60 40 14) 4016a (0 0)(0 40) (0 0)(40 0) (0 40)(40 40) (40 0)(40 40) (-20 20)(0 20) (0 20)(20 10) (16 10)(20 10) (20 10)(20 14) (20 20)(60 20) (20 -20)(20 0) (20 60)(20 40) (-20 20 1) (20 -20 14) (20 60 13) (60 20 2) 4016b (0 0)(0 40) (0 0)(40 0) (0 40)(40 40) (40 0)(40 40) (-20 20)(0 20) (0 20)(20 10) (16 10)(20 10) (20 10)(20 14) (20 20)(60 20) (20 -20)(20 0) (20 60)(20 40) (-20 20 4) (20 -20 7) (20 60 5) (60 20 3) 4016c (0 0)(0 40) (0 0)(40 0) (0 40)(40 40) (40 0)(40 40) (-20 20)(0 20) (0 20)(20 10) (16 10)(20 10) (20 10)(20 14) (20 20)(60 20) (20 60)(20 40) (-20 20 8) (20 60 6) (60 20 9) 4016d (0 0)(0 40) (0 0)(40 0) (0 40)(40 40) (40 0)(40 40) (-20 20)(0 20) (0 20)(20 10) (16 10)(20 10) (20 10)(20 14) (20 20)(60 20) (20 60)(20 40) (-20 20 11) (20 60 12) (60 20 10) 4017 (0 0)(40 0)(40 120)(0 120)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 70)(40 70) (60 80)(40 80) (60 90)(40 90) (60 100)(40 100) (60 110)(40 110) (-20 20)(0 20) (-20 60)(0 60) (-20 100)(0 100) (20 -20)(20 0) (20 120)(20 140) (-20 20 15) (-20 60 14) (-20 100 13) (20 -20 16) (20 140 8) (60 10 3) (60 20 2) (60 30 4) (60 40 7) (60 50 10) (60 60 1) (60 70 5) (60 80 6) (60 90 9) (60 100 11) (60 110 12) 4018 (0 0)(0 110) (0 0)(40 0) (0 110)(40 110) (40 0)(40 110) (60 10)(46 10) (60 20)(46 20) (60 30)(46 30) (60 40)(46 40) (60 50)(46 50) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (20 -20)(20 0) (20 130)(20 110) (40 7)(46 13) (40 17)(46 23) (40 27)(46 33) (40 37)(46 43) (40 47)(46 53) (-20 10 2) (-20 20 3) (-20 30 7) (-20 40 9) (-20 50 12) (-20 70 14) (-20 80 1) (-20 90 15) (-20 100 10) (20 -20 16) (20 130 8) (60 10 5) (60 20 4) (60 30 6) (60 40 11) (60 50 13) 4534 (0 0)(0 190) (0 0)(40 0) (0 190)(40 190) (40 0)(40 190) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 60)(40 60) (60 80)(40 80) (60 90)(40 90) (60 100)(40 100) (60 110)(40 110) (60 120)(40 120) (60 140)(40 140) (60 160)(40 160) (60 180)(40 180) (-20 10)(0 10) (-20 60)(0 60) (-20 80)(0 80) (-20 90)(0 90) (-20 110)(0 110) (-20 130)(0 130) (-20 150)(0 150) (-20 170)(0 170) (-20 180)(0 180) (20 -20)(20 0) (20 210)(20 190) (-20 10 1) (-20 60 22) (-20 80 23) (-20 90 4) (-20 110 2) (-20 130 9) (-20 150 10) (-20 170 5) (-20 180 6) (20 -20 24) (20 210 12) (60 10 20) (60 20 19) (60 30 18) (60 40 17) (60 60 21) (60 80 7) (60 90 8) (60 100 14) (60 110 16) (60 120 11) (60 140 15) (60 160 13) (60 180 3) 4028 (0 0)(40 0)(40 110)(0 110)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 70)(40 70) (60 80)(40 80) (60 90)(40 90) (60 100)(40 100) (-20 10)(0 10) (-20 40)(0 40) (-20 70)(0 70) (-20 100)(0 100) (20 -20)(20 0) (20 110)(20 130) (-20 10 10) (-20 40 13) (-20 70 12) (-20 100 11) (20 -20 16) (20 130 8) (60 10 3) (60 20 14) (60 30 2) (60 40 15) (60 50 1) (60 60 6) (60 70 7) (60 80 4) (60 90 9) (60 100 5) 4060 (0 0)(40 0)(40 110)(0 110)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 70)(40 70) (60 80)(40 80) (60 90)(40 90) (60 100)(40 100) (-20 10)(0 10) (-20 40)(0 40) (-20 70)(0 70) (-20 100)(0 100) (20 -20)(20 0) (20 110)(20 130) (-20 10 11) (-20 40 10) (-20 70 9) (-20 100 12) (20 -20 16) (20 130 8) (60 10 7) (60 20 5) (60 30 4) (60 40 6) (60 50 14) (60 60 13) (60 70 15) (60 80 1) (60 90 2) (60 100 3) 4094 (0 0)(40 0)(40 110)(0 110)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 70)(40 70) (60 80)(40 80) (60 90)(40 90) (60 100)(40 100) (-20 10)(0 10) (-20 40)(0 40) (-20 70)(0 70) (-20 100)(0 100) (20 -20)(20 0) (20 110)(20 130) (-20 10 3) (-20 40 2) (-20 70 1) (-20 100 15) (20 -20 16) (20 130 8) (60 10 4) (60 20 5) (60 30 6) (60 40 7) (60 50 14) (60 60 13) (60 70 12) (60 80 11) (60 90 9) (60 100 10) 4020 (0 0)(40 0)(40 130)(0 130)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 70)(40 70) (60 80)(40 80) (60 90)(40 90) (60 100)(40 100) (60 110)(40 110) (60 120)(40 120) (-20 20)(-6 20) (-20 100)(0 100) (20 -20)(20 0) (20 130)(20 150) (-6 17)(0 23) (-20 20 10) (-20 100 11) (20 -20 16) (20 150 8) (60 10 9) (60 20 7) (60 30 5) (60 40 4) (60 50 6) (60 60 13) (60 70 12) (60 80 14) (60 90 15) (60 100 1) (60 110 2) (60 120 3) 4040 (0 0)(40 0)(40 130)(0 130)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 70)(40 70) (60 80)(40 80) (60 90)(40 90) (60 100)(40 100) (60 110)(40 110) (60 120)(40 120) (-20 20)(-6 20) (-20 100)(0 100) (20 -20)(20 0) (20 130)(20 150) (-6 17)(0 23) (-20 20 10) (-20 100 11) (20 -20 16) (20 150 8) (60 10 9) (60 20 7) (60 30 6) (60 40 5) (60 50 3) (60 60 2) (60 70 4) (60 80 13) (60 90 12) (60 100 14) (60 110 15) (60 120 1) 4022 (-20 0)(20 0)(20 100)(-20 100)(-20 0) (40 10)(20 10) (40 20)(20 20) (40 30)(20 30) (40 40)(20 40) (40 50)(20 50) (40 60)(20 60) (40 70)(20 70) (40 80)(20 80) (40 90)(20 90) (-40 20)(-20 20) (-40 50)(-26 50) (-40 80)(-20 80) (0 -20)(0 0) (0 100)(0 120) (-26 47)(-20 53) (-40 20 15) (-40 50 13) (-40 80 14) (0 -20 16) (0 120 8) (40 10 2) (40 20 1) (40 30 3) (40 40 7) (40 50 11) (40 60 4) (40 70 5) (40 80 10) (40 90 12) 4023a (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (20 -20)(20 0) (20 60)(20 40) (56 20)(70 20) (50 17)(56 23) (-20 10 1) (-20 20 2) (-20 30 8) (20 -20 14) (20 60 7) (70 20 9) 4023b (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (56 20)(70 20) (50 17)(56 23) (-10 10 3) (-10 20 4) (-10 30 5) (60 20 6) 4023c (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (56 20)(70 20) (50 17)(56 23) (-10 10 11) (-10 20 12) (-10 30 13) (60 20 10) 4024 (-20 0)(20 0)(20 80)(-20 80)(-20 0) (40 10)(20 10) (40 20)(20 20) (40 30)(20 30) (40 40)(20 40) (40 50)(20 50) (40 60)(20 60) (40 70)(20 70) (-40 20)(-26 20) (-40 60)(-20 60) (0 -20)(0 0) (0 80)(0 100) (-26 17)(-20 23) (-40 20 1) (-40 60 2) (0 -20 14) (0 100 7) (40 10 12) (40 20 11) (40 30 9) (40 40 6) (40 50 5) (40 60 4) (40 70 3) 4027a (20 -10)(60 -10)(60 50)(20 50)(20 -10) (0 0)(20 0) (0 20)(20 20) (0 40)(20 40) (40 -30)(40 -10) (40 50)(40 70) (60 0)(80 0) (66 20)(80 20) (60 40)(80 40) (60 17)(66 23) (0 0 6) (0 20 3) (0 40 5) (40 -30 7) (40 70 4) (80 0 1) (80 20 2) (80 40 8) 4027b (20 -10)(60 -10)(60 50)(20 50)(20 -10) (0 0)(20 0) (0 20)(20 20) (0 40)(20 40) (40 -30)(40 -10) (40 50)(40 70) (60 0)(80 0) (66 20)(80 20) (60 40)(80 40) (60 17)(66 23) (0 0 10) (0 20 13) (0 40 11) (40 -30 9) (40 70 12) (80 0 15) (80 20 14) (80 40 16) 4029 (0 0)(0 100)(40 100)(40 0)(0 0) (60 10)(40 10) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 80)(40 80) (60 90)(46 90) (-20 10)(0 10) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(0 80) (-20 90)(-6 90) (20 -20)(20 0) (20 120)(20 100) (40 87)(46 93) (-6 87)(0 93) (-20 10 15) (-20 30 4) (-20 40 12) (-20 50 13) (-20 60 3) (-20 80 1) (-20 90 5) (20 -20 16) (20 120 8) (60 10 10) (60 30 6) (60 40 11) (60 50 14) (60 60 2) (60 80 9) (60 90 7) 40160 (0 0)(0 100)(40 100)(40 0)(0 0) (60 10)(40 10) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 80)(40 80) (60 90)(46 90) (-20 10)(0 10) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(0 80) (-20 90)(-6 90) (20 -20)(20 0) (20 120)(20 100) (40 87)(46 93) (-6 87)(0 93) (-20 10 2) (-20 30 3) (-20 40 4) (-20 50 5) (-20 60 6) (-20 80 7) (-20 90 9) (20 -20 16) (20 120 8) (60 10 15) (60 30 14) (60 40 13) (60 50 12) (60 60 11) (60 80 10) (60 90 1) 4030a (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (10 -20)(10 0) (10 60)(10 40) (45 20)(60 20) (-20 10 1) (-20 30 2) (10 -20 14) (10 60 7) (60 20 3) 4030b (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (45 20)(60 20) (-20 10 6) (-20 30 5) (60 20 4) 4030c (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (45 20)(60 20) (-20 10 8) (-20 30 9) (60 20 10) 4030d (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (45 20)(60 20) (-20 10 13) (-20 30 12) (60 20 11) 4032 (0 0)(40 0)(40 150)(0 150)(0 0) (60 20)(40 20) (60 60)(40 60) (60 100)(40 100) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 130)(0 130) (-20 140)(0 140) (20 -20)(20 0) (20 150)(20 170) (-20 10 10) (-20 20 11) (-20 30 7) (-20 50 13) (-20 60 12) (-20 70 5) (-20 90 15) (-20 100 14) (-20 110 2) (-20 130 3) (-20 140 6) (20 -20 16) (20 170 8) (60 20 9) (60 60 4) (60 100 1) 4038 (0 0)(40 0)(40 150)(0 150)(0 0) (60 20)(46 20) (60 60)(46 60) (60 100)(46 100) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 130)(-6 130) (-20 140)(-6 140) (20 -20)(20 0) (20 150)(20 170) (40 17)(46 23) (40 57)(46 63) (40 97)(46 103) (-6 127)(0 133) (-6 137)(0 143) (-20 10 10) (-20 20 11) (-20 30 7) (-20 50 13) (-20 60 12) (-20 70 5) (-20 90 15) (-20 100 14) (-20 110 2) (-20 130 3) (-20 140 6) (20 -20 16) (20 170 8) (60 20 9) (60 60 4) (60 100 1) 4034 (0 0)(40 0)(40 130)(0 130)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 70)(40 70) (60 80)(40 80) (60 100)(40 100) (60 110)(40 110) (60 120)(40 120) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (20 -20)(20 0) (20 150)(20 130) (-20 10 16) (-20 20 17) (-20 30 18) (-20 40 19) (-20 50 20) (-20 60 21) (-20 70 22) (-20 80 23) (-20 100 9) (-20 110 10) (-20 120 11) (20 -20 24) (20 150 12) (60 10 8) (60 20 7) (60 30 6) (60 40 5) (60 50 4) (60 60 3) (60 70 2) (60 80 1) (60 100 14) (60 110 13) (60 120 15) 4042 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(0 80) (40 10)(60 10) (46 20)(60 20) (40 30)(60 30) (46 40)(60 40) (40 50)(60 50) (46 60)(60 60) (40 70)(60 70) (46 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (40 17)(46 23) (40 37)(46 43) (40 57)(46 63) (40 77)(46 83) (-20 20 4) (-20 30 7) (-20 40 13) (-20 50 14) (-20 70 5) (-20 80 6) (20 -20 16) (20 110 8) (60 10 2) (60 20 3) (60 30 10) (60 40 9) (60 50 11) (60 60 12) (60 70 1) (60 80 15) 40175 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(0 80) (40 10)(60 10) (46 20)(60 20) (40 30)(60 30) (46 40)(60 40) (40 50)(60 50) (46 60)(60 60) (40 70)(60 70) (46 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (40 17)(46 23) (40 37)(46 43) (40 57)(46 63) (40 77)(46 83) (-20 20 4) (-20 30 5) (-20 40 12) (-20 50 13) (-20 70 9) (-20 80 1) (20 -20 16) (20 110 8) (60 10 2) (60 20 3) (60 30 7) (60 40 6) (60 50 10) (60 60 11) (60 70 15) (60 80 14) 4043 (0 0)(0 120) (0 0)(40 0) (0 120)(40 120) (40 0)(40 120) (-20 10)(0 10) (-20 20)(0 20) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (-20 110)(0 110) (40 10)(60 10) (40 30)(60 30) (40 50)(60 50) (40 70)(60 70) (40 100)(60 100) (20 -20)(20 0) (20 120)(20 140) (-20 10 4) (-20 20 3) (-20 40 6) (-20 50 7) (-20 70 12) (-20 80 11) (-20 100 14) (-20 110 15) (20 -20 16) (20 140 8) (60 10 2) (60 30 9) (60 50 10) (60 70 1) (60 100 5) 4044 (0 0)(0 120) (0 0)(40 0) (0 120)(40 120) (40 0)(40 120) (-20 10)(-6 10) (-20 20)(-6 20) (-20 40)(-6 40) (-20 50)(-6 50) (-20 70)(-6 70) (-20 80)(-6 80) (-20 100)(-6 100) (-20 110)(-6 110) (46 10)(60 10) (46 30)(60 30) (46 50)(60 50) (46 70)(60 70) (40 100)(60 100) (20 -20)(20 0) (20 120)(20 140) (-6 7)(0 13) (-6 17)(0 23) (-6 37)(0 43) (-6 47)(0 53) (-6 67)(0 73) (-6 77)(0 83) (-6 97)(0 103) (-6 107)(0 113) (40 7)(46 13) (40 27)(46 33) (40 47)(46 53) (40 67)(46 73) (-20 10 3) (-20 20 4) (-20 40 7) (-20 50 6) (-20 70 11) (-20 80 12) (-20 100 15) (-20 110 14) (20 -20 16) (20 140 8) (60 10 13) (60 30 9) (60 50 10) (60 70 1) (60 100 5) 4046 (0 0)(0 100) (0 0)(40 0) (0 100)(40 100) (40 0)(40 100) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (40 90)(60 90) (20 -20)(20 0) (20 120)(20 100) (-20 10 14) (-20 20 3) (-20 30 4) (-20 40 6) (-20 70 7) (-20 80 11) (-20 90 12) (20 -20 16) (20 120 8) (60 10 2) (60 20 13) (60 30 1) (60 60 9) (60 70 10) (60 80 15) (60 90 5) 4010a (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (20 -10)(20 10) (20 50)(20 30) (40 20)(60 20) (-20 20 3) (20 -10 1) (20 50 8) (60 20 2) 4010b (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (20 -10)(20 10) (20 50)(20 30) (40 20)(60 20) (-20 20 5) (20 -10 16) (20 50 13) (60 20 4) 4050b (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (40 20)(60 20) (-20 20 5) (60 20 4) 4010c (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (40 20)(60 20) (-20 20 7) (60 20 6) 4010d (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (40 20)(60 20) (-20 20 9) (60 20 10) 4010e (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (40 20)(60 20) (-20 20 11) (60 20 12) 4010f (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (40 20)(60 20) (-20 20 14) (60 20 15) 4041 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 10)(0 10) (-20 30)(0 30) (-20 50)(0 50) (-20 70)(0 70) (40 10)(60 10) (46 20)(60 20) (40 30)(60 30) (46 40)(60 40) (40 50)(60 50) (46 60)(60 60) (40 70)(60 70) (46 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (40 17)(46 23) (40 37)(46 43) (40 57)(46 63) (40 77)(46 83) (-20 10 3) (-20 30 6) (-20 50 10) (-20 70 13) (20 -20 14) (20 110 7) (60 10 1) (60 20 2) (60 30 4) (60 40 5) (60 50 8) (60 60 9) (60 70 11) (60 80 12) 4047 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 10)(0 10) (-20 20)(-6 20) (-20 30)(0 30) (-20 40)(-6 40) (-20 60)(0 60) (-20 80)(0 80) (40 10)(60 10) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (46 70)(60 70) (40 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (-6 17)(0 23) (-6 37)(0 43) (40 67)(46 73) (-20 10 5) (-20 20 4) (-20 30 8) (-20 40 6) (-20 60 9) (-20 80 12) (20 -20 14) (20 110 7) (60 10 3) (60 40 1) (60 50 2) (60 60 10) (60 70 11) (60 80 13) 4048 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (40 10)(60 10) (40 30)(60 30) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (-20 10 14) (-20 20 13) (-20 30 12) (-20 40 11) (-20 50 6) (-20 60 5) (-20 70 4) (-20 80 3) (20 -20 16) (20 110 8) (60 10 15) (60 30 1) (60 50 2) (60 60 10) (60 70 7) (60 80 9) 4051 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (40 10)(60 10) (40 30)(60 30) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (-20 10 13) (-20 20 14) (-20 30 15) (-20 40 12) (-20 50 1) (-20 60 5) (-20 70 2) (-20 80 4) (20 -20 16) (20 110 8) (60 10 7) (60 30 3) (60 50 11) (60 60 10) (60 70 9) (60 80 6) 4512 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (40 10)(60 10) (40 30)(60 30) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (-20 10 1) (-20 20 2) (-20 30 3) (-20 40 4) (-20 50 5) (-20 60 6) (-20 70 7) (-20 80 9) (20 -20 16) (20 110 8) (60 10 15) (60 30 14) (60 50 11) (60 60 12) (60 70 13) (60 80 10) 4519 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (40 10)(60 10) (40 30)(60 30) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (-20 10 6) (-20 20 7) (-20 30 4) (-20 40 5) (-20 50 2) (-20 60 3) (-20 70 15) (-20 80 1) (20 -20 16) (20 110 8) (60 10 9) (60 30 14) (60 50 10) (60 60 11) (60 70 12) (60 80 13) 4053 (0 0)(0 110) (0 0)(40 0) (0 110)(40 110) (40 0)(40 110) (-20 10)(0 10) (-20 20)(0 20) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (40 10)(60 10) (40 30)(60 30) (40 50)(60 50) (40 70)(60 70) (40 80)(60 80) (40 90)(60 90) (40 100)(60 100) (20 -20)(20 0) (20 130)(20 110) (-20 10 12) (-20 20 13) (-20 40 2) (-20 50 1) (-20 70 5) (-20 80 3) (-20 100 7) (20 -20 16) (20 130 8) (60 10 14) (60 30 15) (60 50 4) (60 70 11) (60 80 10) (60 90 9) (60 100 6) 4071a (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 30)(4 30) (10 -20)(10 0) (10 60)(10 40) (45 20)(60 20) (-20 10 1) (-20 30 2) (10 -20 14) (10 60 7) (60 20 3) 4071b (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 30)(4 30) (45 20)(60 20) (-20 10 6) (-20 30 5) (60 20 4) 4071c (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 30)(4 30) (45 20)(60 20) (-20 10 8) (-20 30 9) (60 20 10) 4071d (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 30)(4 30) (45 20)(60 20) (-20 10 13) (-20 30 12) (60 20 11) 4081a (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (20 -20)(20 0) (20 60)(20 40) (50 20)(70 20) (-20 10 1) (-20 30 2) (20 -20 14) (20 60 7) (70 20 3) 4081b (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (50 20)(70 20) (-20 10 6) (-20 30 5) (70 20 4) 4081c (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (50 20)(70 20) (-20 10 9) (-20 30 8) (70 20 10) 4081d (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (50 20)(70 20) (-20 10 12) (-20 30 13) (70 20 11) 4082a (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25) (40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (20 -20)(20 0) (20 70)(20 50) (65 25)(78 20)(90 20) (-20 10 2) (-20 20 3) (-20 30 4) (-20 40 5) (20 -20 14) (20 70 7) (90 20 1) 4082b (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25) (40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (65 25)(78 20)(90 20) (-20 10 9) (-20 20 10) (-20 30 11) (-20 40 12) (90 20 13) 4072a (0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50) (0 0)(15 0) (0 50)(15 50) (15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25) (15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25) (-20 10)(5 10) (-20 20)(8 20) (-20 30)(8 30) (-20 40)(5 40) (10 -20)(10 0) (10 50)(10 70) (63 25)(75 20)(80 20) (-20 10 2) (-20 20 3) (-20 30 4) (-20 40 5) (10 -20 14) (10 70 7) (80 20 1) 4072b (0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50) (0 0)(15 0) (0 50)(15 50) (15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25) (15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25) (-20 10)(5 10) (-20 20)(8 20) (-20 30)(8 30) (-20 40)(5 40) (63 25)(75 20)(80 20) (-20 10 12) (-20 20 11) (-20 30 10) (-20 40 9) (80 20 13) 4075a (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 20)(6 20) (-20 30)(4 30) (10 -20)(10 0) (10 60)(10 40) (45 20)(70 20) (-20 10 3) (-20 20 4) (-20 30 5) (10 -20 14) (10 60 7) (70 20 6) 4075b (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 20)(6 20) (-20 30)(4 30) (45 20)(70 20) (-20 10 13) (-20 20 12) (-20 30 11) (70 20 10) 4075c (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 20)(6 20) (-20 30)(4 30) (45 20)(70 20) (-20 10 1) (-20 20 2) (-20 30 8) (70 20 9) 4073a (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (20 -20)(20 0) (20 60)(20 40) (50 20)(70 20) (-20 10 1) (-20 20 2) (-20 30 8) (20 -20 14) (20 60 7) (70 20 9) 4073b (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (50 20)(70 20) (-10 10 3) (-10 20 4) (-10 30 5) (60 20 6) 4073c (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (50 20)(70 20) (-10 10 11) (-10 20 12) (-10 30 13) (60 20 10) 4076 (0 0)(0 100)(40 100)(40 0)(0 0) (60 10)(40 10) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 80)(46 80) (60 90)(46 90) (-20 10)(0 10) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(-6 80) (-20 90)(-6 90) (20 -20)(20 0) (20 120)(20 100) (40 77)(46 83) (-6 77)(0 83) (40 87)(46 93) (-6 87)(0 93) (-20 10 7) (-20 30 14) (-20 40 13) (-20 50 12) (-20 60 11) (-20 80 9) (-20 90 10) (20 -20 16) (20 120 8) (60 10 15) (60 30 3) (60 40 4) (60 50 5) (60 60 6) (60 80 1) (60 90 2) 40192 (0 0)(0 100)(40 100)(40 0)(0 0) (60 10)(40 10) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 80)(46 80) (60 90)(46 90) (-20 10)(0 10) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(-6 80) (-20 90)(-6 90) (20 -20)(20 0) (20 120)(20 100) (40 77)(46 83) (-6 77)(0 83) (40 87)(46 93) (-6 87)(0 93) (-20 10 11) (-20 30 15) (-20 40 1) (-20 50 10) (-20 60 9) (-20 80 5) (-20 90 4) (20 -20 16) (20 120 8) (60 10 14) (60 30 3) (60 40 2) (60 50 6) (60 60 7) (60 80 12) (60 90 13) 4077a (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (10 -20)(10 0) (10 60)(10 40) (51 20)(70 20) (45 17)(51 23) (-20 10 1) (-20 30 2) (10 -20 14) (10 60 7) (70 20 3) 4077b (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (51 20)(70 20) (45 17)(51 23) (-20 10 6) (-20 30 5) (70 20 4) 4077c (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (51 20)(70 20) (45 17)(51 23) (-20 10 8) (-20 30 9) (70 20 10) 4077d (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (51 20)(70 20) (45 17)(51 23) (-20 10 13) (-20 30 12) (70 20 11) 4099 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(-6 80) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (-6 77)(0 83) (-20 20 5) (-20 30 6) (-20 40 7) (-20 50 3) (-20 70 2) (-20 80 4) (20 -20 16) (20 110 8) (60 10 9) (60 20 10) (60 30 11) (60 40 12) (60 50 13) (60 60 14) (60 70 15) (60 80 1) 4067 (0 0)(0 170) (0 0)(40 0) (0 170)(40 170) (40 0)(40 170) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (40 10)(60 10) (40 30)(60 30) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -20)(20 0) (20 190)(20 170) (-20 10 9) (-20 20 8) (-20 30 7) (-20 40 6) (-20 50 5) (-20 60 4) (-20 70 3) (-20 80 2) (-20 90 23) (-20 100 22) (-20 110 21) (-20 120 20) (-20 130 19) (-20 140 18) (-20 150 17) (-20 160 16) (20 -20 24) (20 190 12) (60 10 1) (60 30 15) (60 50 10) (60 60 11) (60 70 14) (60 80 13) 4097 (0 0)(0 170) (0 0)(40 0) (0 170)(40 170) (40 0)(40 170) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (40 10)(60 10) (40 30)(60 30) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -20)(20 0) (20 190)(20 170) (-20 10 9) (-20 20 8) (-20 30 7) (-20 40 6) (-20 50 5) (-20 60 4) (-20 70 3) (-20 80 2) (-20 90 23) (-20 100 22) (-20 110 21) (-20 120 20) (-20 130 19) (-20 140 18) (-20 150 16) (-20 160 15) (20 -20 24) (20 190 12) (60 10 1) (60 30 17) (60 50 10) (60 60 11) (60 70 14) (60 80 13) 40174 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 80)(46 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(0 80) (20 -20)(20 0) (20 110)(20 90) (40 77)(46 83) (-20 10 3) (-20 20 4) (-20 30 6) (-20 40 11) (-20 50 13) (-20 60 14) (-20 80 9) (20 -20 16) (20 110 8) (60 10 2) (60 20 5) (60 30 7) (60 40 10) (60 50 12) (60 60 15) (60 80 1) 4503 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 80)(46 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(-6 80) (20 -20)(20 0) (20 110)(20 90) (40 77)(46 83) (-6 77)(0 83) (-20 10 2) (-20 20 4) (-20 30 6) (-20 40 10) (-20 50 12) (-20 60 14) (-20 80 1) (20 -20 16) (20 110 8) (60 10 3) (60 20 5) (60 30 7) (60 40 9) (60 50 11) (60 60 13) (60 80 15) 4511 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(-6 70) (-20 80)(0 80) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (46 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (40 77)(46 83) (-6 67)(0 73) (-20 20 7) (-20 30 1) (-20 40 2) (-20 50 6) (-20 70 3) (-20 80 5) (20 -20 16) (20 110 8) (60 10 13) (60 20 12) (60 30 11) (60 40 10) (60 50 9) (60 60 15) (60 70 14) (60 80 4) 4543 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(-6 70) (-20 80)(0 80) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (46 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (40 77)(46 83) (-6 67)(0 73) (-20 20 5) (-20 30 3) (-20 40 2) (-20 50 4) (-20 70 1) (-20 80 7) (20 -20 16) (20 110 8) (60 10 9) (60 20 10) (60 30 11) (60 40 12) (60 50 13) (60 60 15) (60 70 14) (60 80 6) 4514 (0 0)(0 170) (0 0)(40 0) (0 170)(40 170) (40 0)(40 170) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(-6 70) (-20 90)(0 90) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (40 90)(60 90) (40 100)(60 100) (40 110)(60 110) (40 120)(60 120) (40 130)(60 130) (40 140)(60 140) (40 150)(60 150) (40 160)(60 160) (20 -20)(20 0) (20 190)(20 170) (-6 67)(0 73) (-20 20 2) (-20 30 3) (-20 40 21) (-20 50 22) (-20 70 1) (-20 80 23) (20 -20 24) (20 190 12) (60 10 11) (60 20 9) (60 30 10) (60 40 8) (60 50 7) (60 60 6) (60 70 5) (60 80 4) (60 90 18) (60 100 17) (60 110 20) (60 120 19) (60 130 14) (60 140 13) (60 150 16) (60 160 15) 4515 (0 0)(0 170) (0 0)(40 0) (0 170)(40 170) (40 0)(40 170) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(-6 70) (-20 90)(0 90) (46 10)(60 10) (46 20)(60 20) (46 30)(60 30) (46 40)(60 40) (46 50)(60 50) (46 60)(60 60) (46 70)(60 70) (46 80)(60 80) (46 90)(60 90) (46 100)(60 100) (46 110)(60 110) (46 120)(60 120) (46 130)(60 130) (46 140)(60 140) (46 150)(60 150) (46 160)(60 160) (20 -20)(20 0) (20 190)(20 170) (-6 67)(0 73) (40 7)(46 13) (40 17)(46 23) (40 27)(46 33) (40 37)(46 43) (40 47)(46 53) (40 57)(46 63) (40 67)(46 73) (40 77)(46 83) (40 87)(46 93) (40 97)(46 103) (40 107)(46 113) (40 117)(46 123) (40 127)(46 133) (40 137)(46 143) (40 147)(46 153) (40 157)(46 163) (-20 20 2) (-20 30 3) (-20 40 21) (-20 50 22) (-20 70 1) (-20 80 23) (20 -20 24) (20 190 12) (60 10 11) (60 20 9) (60 30 10) (60 40 8) (60 50 7) (60 60 6) (60 70 5) (60 80 4) (60 90 18) (60 100 17) (60 110 20) (60 120 19) (60 130 14) (60 140 13) (60 150 16) (60 160 15) 4538a (0 0)(60 0)(60 60)(0 60)(0 0) (-20 10)(0 10) (-20 30)(-6 30) (-20 50)(0 50) (60 10)(80 10) (66 30)(80 30) (60 50)(80 50) (30 -20)(30 0) (30 66)(30 80) (-6 27)(0 33) (60 27)(66 33) (27 60)(33 66) (-20 10 2) (-20 30 5) (-20 50 4) (80 10 6) (80 30 7) (80 50 8) (30 -20 1) (30 80 3) 4538b (0 0)(60 0)(60 60)(0 60)(0 0) (-20 10)(0 10) (-20 30)(-6 30) (-20 50)(0 50) (60 10)(80 10) (66 30)(80 30) (60 50)(80 50) (30 -20)(30 0) (30 66)(30 80) (-6 27)(0 33) (60 27)(66 33) (27 60)(33 66) (-20 10 14) (-20 30 11) (-20 50 12) (80 10 10) (80 30 9) (80 50 16) (30 -20 15) (30 80 13) 4541 (0 0)(40 0)(40 90)(0 90)(0 0) (-20 10)(0 10) (-20 30)(0 30) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(0 80) (60 10)(40 10) (60 30)(40 30) (60 50)(40 50) (60 70)(40 70) (60 80)(40 80) (20 -20)(20 0) (20 110)(20 90) (-20 10 1) (-20 30 2) (-20 50 3) (-20 70 12) (-20 80 13) (60 10 8) (60 30 9) (60 50 10) (60 60 5) (60 80 6) (20 -20 14) (20 80 7) 4553 (0 0)(0 110) (0 0)(40 0) (0 110)(40 110) (40 0)(40 110) (-20 10)(0 10) (-20 30)(0 30) (-20 50)(0 50) (-20 70)(0 70) (-20 90)(0 90) (-20 100)(0 100) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 60)(60 60) (46 80)(60 80) (46 90)(60 90) (46 100)(60 100) (20 -20)(20 0) (20 130)(20 110) (40 77)(46 83) (40 87)(46 93) (40 97)(46 103) (-20 10 12) (-20 30 10) (-20 50 11) (-20 70 13) (-20 90 4) (-20 100 3) (20 -20 16) (20 130 8) (60 10 9) (60 20 7) (60 30 6) (60 40 5) (60 60 14) (60 80 2) (60 90 1) (60 100 15) 4000a 4025a NOR 3 input Reference designator @refdes (10 15) yes 3 3 (-15 10) no 4 4 (-15 20) no 5 5 (-15 30) no 6 6 (53 19) no 14 14 (-2 -2) no 7 7 (0 52) no Model @model (7 30) no Refdes U Model 4000a Template X_@refdes %1 %2 %3 %4 %5 %6 @model 4000b 4025b NOR 3 input Reference designator @refdes (10 15) yes 13 13 (-15 10) no 12 12 (-15 20) no 11 11 (-15 30) no 10 10 (53 19) no Model @model (8 30) no Refdes U Model 4000b Template X_@refdes %1 %2 %3 %4 @model 4000c 4000c INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 8 8 (-15 20) no 9 9 (53 20) no Refdes U Model 4000c Template X_@refdes %1 %2 @model 4011a 4011a NAND Reference designator @refdes (17 25) yes 1 1 (-12 9) no 2 2 (-12 29) no 3 3 (57 19) no 14 14 (8 -1) no 7 7 (12 55) no Model @model (-20 60) no Refdes U Model 4011a Template X_@refdes %1 %2 %3 %4 %5 @model 4011b 4011b NAND Reference designator @refdes (17 25) yes 6 6 (-15 8) no 5 5 (-15 28) no 4 4 (57 19) no Model @model (0 55) no Refdes U Model 4011b Template X_@refdes %1 %2 %3 @model 4011c 4011c NAND Reference designator @refdes (17 25) yes 9 9 (-15 8) no 8 8 (-15 28) no 10 10 (57 19) no Model @model (0 55) no Refdes U Model 4011c Template X_@refdes %1 %2 %3 @model 4011d 4011d NAND Reference designator @refdes (17 25) yes 12 12 (-15 8) no 13 13 (-15 28) no 11 11 (57 19) no Model @model (0 55) no Refdes U Model 4011d Template X_@refdes %1 %2 %3 @model 4001a 4001a NOR Reference designator @refdes (40 -10) yes 1 1 (-15 9) no 2 2 (-15 29) no 3 3 (53 19) no 14 14 (-2 -2) no 7 7 (0 52) no Model @model (40 60) no Refdes U Model 4001a Template X_@refdes %1 %2 %3 %4 %5 @model 4001b 4001b NOR Reference designator @refdes (10 15) yes 5 5 (-15 9) no 6 6 (-15 29) no 4 4 (53 19) no Model @model (-15 55) no Refdes U Model 4001b Template X_@refdes %1 %2 %3 @model 4001c 4001c NOR Reference designator @refdes (10 15) yes 8 8 (-15 9) no 9 9 (-15 29) no 10 10 (53 18) no Model @model (-15 55) no Refdes U Model 4001c Template X_@refdes %1 %2 %3 @model 4001d 4001d NOR Reference designator @refdes (10 15) yes 13 13 (-15 9) no 12 12 (-15 29) no 11 11 (53 19) no Model @model (-15 55) no Refdes U Model 4001d Template X_@refdes %1 %2 %3 @model 4002a 4002a NOR 4 input Reference designator @refdes (20 15) yes 2 2 (-15 10) no 3 3 (-15 20) no 4 4 (-15 30) no 5 5 (-15 40) no 1 1 (70 19) no 14 14 (0 -2) no 7 7 (0 72) no Model @model (10 35) no Refdes U Model 4002a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 4002b 4002b NOR 4 input Reference designator @refdes (20 15) yes 12 12 (-15 10) no 11 11 (-15 20) no 10 10 (-15 30) no 9 9 (-15 40) no 13 13 (70 19) no Model @model (10 35) no Refdes U Model 4002b Template X_@refdes %1 %2 %3 %4 %5 @model 4012a 4012a NAND 4 input Reference designator @refdes (20 15) yes 2 2 (-15 10) no 3 3 (-15 20) no 4 4 (-15 30) no 5 5 (-15 40) no 1 1 (78 19) no 14 14 (5 -2) no 7 7 (12 62) no Model @model (10 35) no Refdes U Model 4012a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 4012b 4012b NAND 4 input Reference designator @refdes (20 15) yes 9 9 (-15 10) no 10 10 (-15 20) no 11 11 (-15 30) no 12 12 (-15 40) no 13 13 (78 19) no Model @model (10 35) no Refdes U Model 4012b Template X_@refdes %1 %2 %3 %4 %5 @model 4006 4006 18 stage shift register Reference designator @refdes (-20 90) yes 1 1 (-15 10) no D1 (2 15) no 4 4 (-15 20) no D2 (2 25) no 5 5 (-15 30) no D3 (2 35) no 6 6 (-15 40) no D4 (2 45) no 13 13 (47 10) no Q1 (27 15) no 11 11 (47 20) no Q2 (27 25) no 12 12 (47 30) no Q2Z (25 35) no 10 10 (47 40) no Q3 (27 45) no 8 8 (47 50) no Q4 (27 55) no 9 9 (47 60) no Q4Z (25 65) no 3 3 (-15 60) no CK (2 65) no 14 14 (3 -1) no 7 7 (3 88) no Model @model (35 -10) no Refdes U Model 4006 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 @model 4007a 4007a Pair MOSFET Reference designator @refdes (-15 0) yes 6 6 (-15 20) no 14 14 (19 5) no 7 7 (22 95) no 13 13 (35 40) no 8 8 (35 62) no Model @model (-20 100) no Refdes U Model 4007a Template X_@refdes %1 %2 %3 %4 %5 @model 4007b 4007b Pair MOSFET Reference designator @refdes (-15 0) yes 3 3 (-15 20) no 2 2 (19 5) no 4 4 (22 95) no 1 1 (35 40) no 5 5 (35 62) no Model @model (-20 100) no Refdes U Model 4007b Template X_@refdes %1 %2 %3 %4 %5 @model 4007c 4007c Pair MOSFET Reference designator @refdes (-15 0) yes 10 10 (-15 20) no 11 11 (19 5) no 9 9 (22 95) no 12 12 (35 40) no Model @model (-20 100) no Refdes U Model 4007c Template X_@refdes %1 %2 %3 %4 @model 4008 4008 4 bit full adder Reference designator @refdes (-15 120) yes 7 7 (-17 10) no A1 (2 15) no 5 5 (-17 20) no A2 (2 25) no 3 3 (-17 30) no A3 (2 35) no 1 1 (-17 40) no A4 (2 45) no 6 6 (-17 60) no B1 (2 65) no 4 4 (-17 70) no B2 (2 75) no 2 2 (-17 80) no B3 (2 85) no 15 15 (-17 90) no B4 (2 95) no 10 10 (46 10) no S1 (25 15) no 11 11 (46 20) no S2 (25 25) no 12 12 (46 30) no S3 (25 35) no 13 13 (46 40) no S4 (25 45) no 14 14 (46 60) no CO (25 65) no 9 9 (46 80) no CI (25 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4008 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4009a 4009a Inverter Buffer Reference designator @refdes (35 0) yes Model @model (-25 50) no 3 3 (-10 18) no 2 2 (51 18) no 1 1 (10 -2) no 8 8 (10 52) no Refdes U Model 4009a Template X_@refdes %1 %2 %3 %4 @model 4009b 4009b Inverter Buffer Reference designator @refdes (35 0) yes Model @model (-25 50) no 5 5 (-10 18) no 4 4 (51 18) no 16 16 (8 2) no 13 13 (9 50) no Refdes U Model 4009b Template X_@refdes %1 %2 %3 %4 @model 4009c 4009c Inverter Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 7 7 (-10 18) no 6 6 (51 18) no Refdes U Model 4009c Template X_@refdes %1 %2 @model 4009d 4009d Inverter Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 9 9 (-10 18) no 10 10 (51 18) no Refdes U Model 4009d Template X_@refdes %1 %2 @model 4009e 4009e Inverter Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 11 11 (-15 18) no 12 12 (51 18) no Refdes U Model 4009e Template X_@refdes %1 %2 @model 4009f 4009f Inverter Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 14 14 (-15 18) no 15 15 (51 18) no Refdes U Model 4009f Template X_@refdes %1 %2 @model 4010a 4010a Buffer Reference designator @refdes (35 0) yes Model @model (-25 50) no 3 3 (-10 18) no 2 2 (51 18) no 1 1 (10 -2) no 8 8 (10 52) no Refdes U Model 4010a Template X_@refdes %1 %2 %3 %4 @model 4010b 4010b Buffer Reference designator @refdes (35 0) yes Model @model (-25 50) no 5 5 (-10 18) no 4 4 (51 18) no 16 16 (8 2) no 13 13 (9 50) no Refdes U Model 4010b Template X_@refdes %1 %2 %3 %4 @model 4010c 4010c Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 7 7 (-10 18) no 6 6 (51 18) no Refdes U Model 4010c Template X_@refdes %1 %2 @model 4010d 4010d Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 9 9 (-10 18) no 10 10 (51 18) no Refdes U Model 4010d Template X_@refdes %1 %2 @model 4010e 4010e Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 11 11 (-15 18) no 12 12 (51 18) no Refdes U Model 4010e Template X_@refdes %1 %2 @model 4010f 4010f Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 14 14 (-15 18) no 15 15 (51 18) no Refdes U Model 4010f Template X_@refdes %1 %2 @model 4013a 4013a D Flip Flop Reference designator @refdes (0 -20) yes 5 5 (5 -1) no D (22 5) no 3 3 (5 19) no CK (22 25) no 7 7 (5 39) no vs (22 45) no 6 6 (30 -15) no S (37 2) no 4 4 (30 65) no R (37 49) no 1 1 (67 -1) no Q (50 5) no 2 2 (67 39) no Q (50 45) no _ (50 35) no Model @model (50 65) no Refdes U Model 4013a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 4013b 4013b D Flip Flop Reference designator @refdes (0 -20) yes 9 9 (5 -1) no D (22 5) no 11 11 (5 19) no CK (22 25) no 14 14 (5 39) no vc (22 45) no 8 8 (30 -15) no S (37 2) no 10 10 (27 65) no R (37 49) no 13 13 (67 -1) no Q (50 5) no 12 12 (67 39) no Q (50 45) no _ (50 35) no Model @model (50 65) no Refdes U Model 4013b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 4069a 4069a INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 1 1 (-8 18) no 2 2 (51 18) no 14 14 (2 -2) no 7 7 (2 52) no Refdes U Model 4069a Template X_@refdes %1 %2 %3 %4 @model 4069b 4069b INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 3 3 (-8 18) no 4 4 (51 18) no Refdes U Model 4069b Template X_@refdes %1 %2 @model 4069c 4069c INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 5 5 (-8 18) no 6 6 (51 18) no Refdes U Model 4069c Template X_@refdes %1 %2 @model 4069d 4069d INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 9 9 (-8 18) no 8 8 (51 18) no Refdes U Model 4069d Template X_@refdes %1 %2 @model 4069e 4069e INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 11 11 (-12 18) no 10 10 (51 18) no Refdes U Model 4069e Template X_@refdes %1 %2 @model 4069f 4069f INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 13 13 (-12 18) no 12 12 (51 18) no Refdes U Model 4069f Template X_@refdes %1 %2 @model 4014 4014 8 bit shift register Reference designator @refdes (-15 110) yes 7 7 (-17 10) no P1 (2 15) no 6 6 (-17 20) no P2 (2 25) no 5 5 (-17 30) no P3 (2 35) no 4 4 (-17 40) no P4 (2 45) no 13 13 (-17 50) no P5 (2 55) no 14 14 (-17 60) no P6 (2 65) no 15 15 (-17 70) no P7 (2 75) no 1 1 (-11 80) no P8 (2 85) no 2 2 (46 10) no Q6 (25 15) no 12 12 (46 20) no Q7 (25 25) no 3 3 (46 30) no Q8 (25 35) no 9 9 (46 60) no p/s (23 65) no 11 11 (46 70) no DS (25 75) no 10 10 (46 80) no CK (25 85) no 16 16 (5 -1) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 4014 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4021 eq See 4014 4015a 4015a 4 bit shift register Reference designator @refdes (-20 70) yes 7 7 (-15 10) no D (2 15) no 9 9 (-15 30) no CK (2 35) no 5 5 (46 10) no Q0 (25 15) no 4 4 (46 20) no Q1 (25 25) no 3 3 (46 30) no Q2 (25 35) no 10 10 (46 40) no Q3 (25 45) no 16 16 (8 -2) no 6 6 (8 70) no R (15 50) no Model @model (35 -10) no Refdes U Model 4015a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 4015b 4015b 4 bit shift register Reference designator @refdes (-20 70) yes 15 15 (-15 10) no D (2 15) no 1 1 (-15 30) no CK (2 35) no 13 13 (46 10) no Q0 (25 15) no 12 12 (46 20) no Q1 (25 25) no 11 11 (46 30) no Q2 (25 35) no 2 2 (46 40) no Q3 (25 45) no 8 8 (8 -2) no 14 14 (8 70) no R (15 50) no Model @model (35 -10) no Refdes U Model 4015b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 4016a 4016a Analog Switch Reference designator @refdes (-20 60) yes 1 1 (-15 20) no 2 2 (46 20) no 14 14 (8 -2) no 13 13 (8 55) no C (15 40) no Model @model (35 -10) no Refdes U Model 4016a Template X_@refdes %1 %2 %3 %4 @model 4016b 4016b Analog Switch Reference designator @refdes (-20 60) yes 4 4 (-15 20) no 3 3 (46 20) no 7 7 (8 -2) no 5 5 (8 55) no C (15 40) no Model @model (35 -10) no Refdes U Model 4016b Template X_@refdes %1 %2 %3 %4 @model 4016c 4016c Analog Switch Reference designator @refdes (-20 60) yes 8 8 (-15 20) no 9 9 (46 20) no 6 6 (8 55) no C (15 40) no Model @model (35 -10) no Refdes U Model 4016c Template X_@refdes %1 %2 %3 @model 4016d 4016d Analog Switch Reference designator @refdes (-20 60) yes 11 11 (-15 20) no 10 10 (46 20) no 12 12 (8 55) no C (15 40) no Model @model (35 -10) no Refdes U Model 4016d Template X_@refdes %1 %2 %3 @model 4017 4017 Decade Counter Reference designator @refdes (-20 135) yes 15 15 (-15 20) no R (2 25) no 14 14 (-15 60) no CK (2 65) no 13 13 (-15 100) no CE (2 105) no 3 3 (46 10) no Q0 (25 15) no 2 2 (46 20) no Q1 (25 25) no 4 4 (46 30) no Q2 (25 35) no 7 7 (46 40) no Q3 (25 45) no 10 10 (46 50) no Q4 (25 55) no 1 1 (46 60) no Q5 (25 65) no 5 5 (46 70) no Q6 (25 75) no 6 6 (46 80) no Q7 (25 85) no 9 9 (46 90) no Q8 (25 95) no 11 11 (46 100) no Q9 (25 105) no 12 12 (46 110) no CO (25 115) no 16 16 (8 -2) no 8 8 (8 135) no Model @model (35 -10) no Refdes U Model 4017 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4018 4018 Presettable Counter Reference designator @refdes (-15 125) yes 2 2 (-15 10) no P0 (2 15) no 3 3 (-15 20) no P1 (2 25) no 7 7 (-15 30) no P2 (2 35) no 9 9 (-15 40) no P3 (2 45) no 12 12 (-15 50) no P4 (2 55) no 14 14 (-15 70) no CK (2 75) no 1 1 (-15 80) no D (2 85) no 15 15 (-15 90) no R (2 95) no 10 10 (-15 100) no PE (2 105) no 5 5 (46 10) no Q0 (27 15) no 4 4 (46 20) no Q1 (27 25) no 6 6 (46 30) no Q2 (27 35) no 11 11 (46 40) no Q3 (27 45) no 13 13 (46 50) no Q4 (27 55) no 16 16 (8 -1) no 8 8 (9 125) no Model @model (35 -10) no Refdes U Model 4018 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4020 4020 14 bit Counter Reference designator @refdes (-20 145) yes 10 10 (-15 20) no CK (2 25) no 11 11 (-15 100) no R (2 105) no 9 9 (46 10) no Q1 (25 15) no 7 7 (46 20) no Q4 (25 25) no 5 5 (46 30) no Q5 (25 35) no 4 4 (46 40) no Q6 (25 45) no 6 6 (46 50) no Q7 (25 55) no 13 13 (46 60) no Q8 (25 65) no 12 12 (46 70) no Q9 (25 75) no 14 14 (46 80) no Q10 (22 85) no 15 15 (46 90) no Q11 (22 95) no 1 1 (46 100) no Q12 (22 105) no 2 2 (46 110) no Q13 (22 115) no 3 3 (46 120) no Q14 (22 125) no 16 16 (8 -2) no 8 8 (8 145) no Model @model (35 -10) no Refdes U Model 4020 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4022 4022 Octal Counter Reference designator @refdes (-40 115) yes 15 15 (-35 20) no R (-18 25) no 13 13 (-35 50) no CE (-18 55) no 14 14 (-35 80) no CK (-18 85) no 2 2 (26 10) no Q0 (5 15) no 1 1 (26 20) no Q1 (5 25) no 3 3 (26 30) no Q2 (5 35) no 7 7 (26 40) no Q3 (5 45) no 11 11 (26 50) no Q4 (5 55) no 4 4 (26 60) no Q5 (5 65) no 5 5 (26 70) no Q6 (5 75) no 10 10 (26 80) no Q7 (5 85) no 12 12 (26 90) no CO (5 95) no 16 16 (-14 -2) no 8 8 (-14 115) no Model @model (15 -10) no Refdes U Model 4022 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model 4023a 4023a 3 input NAND Reference designator @refdes (17 25) yes 1 1 (-12 10) no 2 2 (-12 20) no 8 8 (-12 30) no 9 9 (57 19) no 14 14 (8 -1) no 7 7 (12 55) no Model @model (-20 60) no Refdes U Model 4023a Template X_@refdes %1 %2 %3 %4 %5 %6 @model 4023b 4023b 3 input NAND Reference designator @refdes (17 25) yes 3 3 (-15 10) no 4 4 (-15 20) no 5 5 (-15 30) no 6 6 (57 19) no Model @model (0 55) no Refdes U Model 4023b Template X_@refdes %1 %2 %3 %4 @model 4023c 4023c 3 input NAND Reference designator @refdes (17 25) yes 11 11 (-15 10) no 12 12 (-15 20) no 13 13 (-15 30) no 10 10 (57 19) no Model @model (0 55) no Refdes U Model 4023c Template X_@refdes %1 %2 %3 %4 @model 4024 4024 7 Stage Counter Reference designator @refdes (-40 95) yes 1 1 (-35 20) no CK (-18 25) no 2 2 (-35 60) no R (-18 65) no 12 12 (26 10) no Q0 (5 15) no 11 11 (26 20) no Q1 (5 25) no 9 9 (26 30) no Q2 (5 35) no 6 6 (26 40) no Q3 (5 45) no 5 5 (26 50) no Q4 (5 55) no 4 4 (26 60) no Q5 (5 65) no 3 3 (26 70) no Q6 (5 75) no 14 14 (-14 -2) no 7 7 (-14 95) no Model @model (15 -10) no Refdes U Model 4024 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 @model 4025a 4025a NOR 3 input Reference designator @refdes (25 25) yes 3 3 (-15 10) no 4 4 (-15 20) no 5 5 (-15 30) no 6 6 (53 19) no 14 14 (-2 -2) no 7 7 (0 52) no Model @model (40 60) no Refdes U Model 4025a Template X_@refdes %1 %2 %3 %4 %5 %6 @model 4025b 4025b NOR 3 input Reference designator @refdes (25 25) yes 13 13 (-15 10) no 12 12 (-15 20) no 11 11 (-15 30) no 10 10 (53 19) no Model @model (0 55) no Refdes U Model 4025b Template X_@refdes %1 %2 %3 %4 @model 4025c 4025c NOR 3 input Reference designator @refdes (25 25) yes 1 1 (-15 10) no 2 2 (-15 20) no 8 8 (-15 30) no 9 9 (53 19) no Model @model (0 55) no Refdes U Model 4025c Template X_@refdes %1 %2 %3 %4 @model 4027a 4027a JK Flip-Flop Reference designator @refdes (0 -20) yes 6 6 (5 -1) no J (22 5) no 3 3 (5 19) no CK (22 25) no 5 5 (5 39) no K (22 45) no 7 7 (30 -15) no S (35 2) no 4 4 (30 65) no R (35 49) no 1 1 (67 -1) no Q (50 5) no 8 8 (67 39) no VS (47 45) no 2 2 (67 19) no Q (50 25) no _ (50 15) no Model @model (50 65) no Refdes U Model 4027a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 4027b 4027b JK Flip-Flop Reference designator @refdes (0 -20) yes 10 10 (5 -1) no J (22 5) no 13 13 (5 19) no CK (22 25) no 11 11 (5 39) no K (22 45) no 9 9 (30 -15) no S (35 2) no 12 12 (30 65) no R (35 49) no 15 15 (67 -1) no Q (50 5) no 16 16 (67 39) no VC (47 45) no 14 14 (67 19) no Q (50 25) no _ (50 15) no Model @model (50 65) no Refdes U Model 4027b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 4028 4028 BCD to Decimal Decoder Reference designator @refdes (-20 125) yes 10 10 (-15 10) no A (2 15) no 13 13 (-15 40) no B (2 45) no 12 12 (-15 70) no C (2 75) no 11 11 (-15 100) no D (2 105) no 3 3 (46 10) no Q0 (25 15) no 14 14 (46 20) no Q1 (25 25) no 2 2 (46 30) no Q2 (25 35) no 15 15 (46 40) no Q3 (25 45) no 1 1 (46 50) no Q4 (25 55) no 6 6 (46 60) no Q5 (25 65) no 7 7 (46 70) no Q6 (25 75) no 4 4 (46 80) no Q7 (25 85) no 9 9 (46 90) no Q8 (25 95) no 5 5 (46 100) no Q9 (25 105) no 16 16 (8 -2) no 8 8 (8 125) no Model @model (35 -10) no Refdes U Model 4028 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4029 4029 4 Bit Counter Reference designator @refdes (-15 120) yes 15 15 (-15 10) no CK (2 15) no 4 4 (-15 30) no P0 (2 35) no 12 12 (-15 40) no P1 (2 45) no 13 13 (-15 50) no P2 (2 55) no 3 3 (-15 60) no P3 (2 65) no 1 1 (-15 80) no PE (2 85) no 5 5 (-15 90) no Ci (2 95) no 10 10 (46 10) no u|d (26 15) no 6 6 (46 30) no Q0 (27 35) no 11 11 (46 40) no Q1 (27 45) no 14 14 (46 50) no Q2 (27 55) no 2 2 (46 60) no Q3 (27 65) no 9 9 (46 80) no b|d (26 85) no 7 7 (46 90) no Co (27 95) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4029 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4030a 4030a XOR Reference designator @refdes (20 25) yes 1 1 (-18 8) no 2 2 (-18 28) no 3 3 (51 18) no 14 14 (-2 -2) no 7 7 (0 52) no Model @model (42 55) no Refdes U Model 4030a Template X_@refdes %1 %2 %3 %4 %5 @model 4030b 4030b XOR Reference designator @refdes (20 25) yes 6 6 (-18 8) no 5 5 (-18 28) no 4 4 (51 18) no Model @model (20 55) no Refdes U Model 4030b Template X_@refdes %1 %2 %3 @model 4030c 4030c XOR Reference designator @refdes (20 25) yes 8 8 (-18 9) no 9 9 (-18 29) no 10 10 (51 18) no Model @model (20 55) no Refdes U Model 4030c Template X_@refdes %1 %2 %3 @model 4030d 4030d XOR Reference designator @refdes (20 25) yes 13 13 (-18 9) no 12 12 (-18 29) no 11 11 (51 18) no Model @model (20 55) no Refdes U Model 4030d Template X_@refdes %1 %2 %3 @model 4032 4032 Triple serial adders Reference designator @refdes (-20 165) yes 10 10 (-15 10) no A1 (2 15) no 11 11 (-15 20) no B1 (2 25) no 7 7 (-15 30) no I1 (2 35) no 13 13 (-15 50) no A2 (2 55) no 12 12 (-15 60) no B2 (2 65) no 5 5 (-15 70) no I2 (2 75) no 15 15 (-15 90) no A3 (2 95) no 14 14 (-15 100) no B3 (2 105) no 2 2 (-15 110) no I3 (2 115) no 3 3 (-15 130) no CK (2 135) no 6 6 (-15 140) no CR (2 145) no 9 9 (46 20) no S1 (25 25) no 4 4 (46 60) no S2 (25 65) no 1 1 (46 100) no S3 (25 105) no 16 16 (8 -2) no 8 8 (8 165) no Model @model (35 -10) no Refdes U Model 4032 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4034 4034 8 bit bus register Reference designator @refdes (-15 145) yes 16 16 (-15 10) no A0 (2 15) no 17 17 (-15 20) no A1 (2 25) no 18 18 (-15 30) no A2 (2 35) no 19 19 (-15 40) no A3 (2 45) no 20 20 (-15 50) no A4 (2 55) no 21 21 (-15 60) no A5 (2 65) no 22 22 (-15 70) no A6 (2 75) no 23 23 (-15 80) no A7 (2 85) no 9 9 (-15 100) no AE (2 105) no 10 10 (-15 110) no Ds (2 115) no 11 11 (-15 120) no A|B (2 125) no 8 8 (46 10) no B0 (27 15) no 7 7 (46 20) no B1 (27 25) no 6 6 (46 30) no B2 (27 35) no 5 5 (46 40) no B3 (27 45) no 4 4 (46 50) no B4 (27 55) no 3 3 (46 60) no B5 (27 65) no 2 2 (46 70) no B6 (27 75) no 1 1 (46 80) no B7 (27 85) no 14 14 (46 100) no a|s (27 105) no 13 13 (46 110) no p|s (27 115) no 15 15 (46 120) no C (27 125) no 24 24 (8 -1) no 12 12 (5 145) no Model @model (35 -10) no Refdes U Model 4034 Template 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 4035 4035 4 bit shift register Reference designator @refdes (-15 120) yes 9 9 (-17 10) no P0 (2 15) no 10 10 (-17 20) no P1 (2 25) no 11 11 (-17 30) no P2 (2 35) no 12 12 (-17 40) no P3 (2 45) no 6 6 (-17 60) no C (2 65) no 4 4 (-17 70) no J (2 75) no 2 2 (-17 80) no T|C (2 85) no 3 3 (-17 90) no K (2 95) no 1 1 (46 10) no Q0 (25 15) no 15 15 (46 20) no Q1 (25 25) no 14 14 (46 30) no Q2 (25 35) no 13 13 (46 40) no Q3 (25 45) no 7 7 (46 60) no p|s (25 65) no 5 5 (46 80) no R (25 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4035 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4038 4038 Triple serial adders Reference designator @refdes (-20 165) yes 10 10 (-15 10) no A1 (2 15) no 11 11 (-15 20) no B1 (2 25) no 7 7 (-15 30) no I1 (2 35) no 13 13 (-15 50) no A2 (2 55) no 12 12 (-15 60) no B2 (2 65) no 5 5 (-15 70) no I2 (2 75) no 15 15 (-15 90) no A3 (2 95) no 14 14 (-15 100) no B3 (2 105) no 2 2 (-15 110) no I3 (2 115) no 3 3 (-15 130) no CK (2 135) no 6 6 (-15 140) no CR (2 145) no 9 9 (46 20) no S1 (25 25) no 4 4 (46 60) no S2 (25 65) no 1 1 (46 100) no S3 (25 105) no 16 16 (8 -2) no 8 8 (8 165) no Model @model (35 -10) no Refdes U Model 4038 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4040 4040 14 bit Counter Reference designator @refdes (-20 145) yes 10 10 (-15 20) no CK (2 25) no 11 11 (-15 100) no R (2 105) no 9 9 (46 10) no Q1 (25 15) no 7 7 (46 20) no Q2 (25 25) no 6 6 (46 30) no Q3 (25 35) no 5 5 (46 40) no Q4 (25 45) no 3 3 (46 50) no Q5 (25 55) no 2 2 (46 60) no Q6 (25 65) no 4 4 (46 70) no Q7 (25 75) no 13 13 (46 80) no Q8 (25 85) no 12 12 (46 90) no Q9 (25 95) no 14 14 (46 100) no Q10 (22 105) no 15 15 (46 110) no Q11 (22 115) no 1 1 (46 120) no Q12 (22 125) no 16 16 (8 -2) no 8 8 (8 145) no Model @model (35 -10) no Refdes U Model 4040 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4041 4041 Complement Quad Buffer Reference designator @refdes (-10 125) yes 3 3 (-15 10) no A1 (2 15) no 6 6 (-15 30) no B1 (2 35) no 10 10 (-17 50) no C1 (2 55) no 13 13 (-17 70) no D1 (2 75) no 1 1 (47 10) no 2 2 (47 20) no Ao (25 20) no 4 4 (47 30) no 5 5 (47 40) no Bo (25 40) no 8 8 (47 50) no 9 9 (47 60) no Co (25 60) no 11 11 (47 70) no 12 12 (47 80) no Do (25 80) no 14 14 (5 -2) no 7 7 (7 105) no Model @model (35 -10) no Refdes U Model 4041 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model 4042 4042 D Latch 4 bit Reference designator @refdes (-10 110) yes 4 4 (-17 20) no D0 (2 25) no 7 7 (-17 30) no D1 (2 35) no 13 13 (-17 40) no D2 (2 45) no 14 14 (-17 50) no D3 (2 55) no 5 5 (-17 70) no CK (2 75) no 6 6 (-17 80) no P (2 85) no 2 2 (47 10) no 3 3 (47 20) no Q0 (25 20) no 10 10 (47 30) no 9 9 (47 40) no Q1 (25 40) no 11 11 (47 50) no 12 12 (47 60) no Q2 (25 60) no 1 1 (47 70) no 15 15 (47 80) no Q3 (25 80) no 16 16 (6 -3) no 8 8 (7 107) no Model @model (35 -10) no Refdes U Model 4042 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4043 4043 Quad RS Latch Reference designator @refdes (-10 135) yes 4 4 (-17 10) no S0 (2 15) no 3 3 (-17 20) no R0 (2 25) no 6 6 (-17 40) no S1 (2 45) no 7 7 (-17 50) no R1 (2 55) no 12 12 (-17 70) no S2 (2 75) no 11 11 (-17 80) no R2 (2 85) no 14 14 (-17 100) no S3 (2 105) no 15 15 (-17 110) no R3 (2 115) no 2 2 (47 10) no Q0 (25 15) no 9 9 (47 30) no Q1 (25 35) no 10 10 (47 50) no Q2 (25 55) no 1 1 (47 70) no Q3 (25 75) no 5 5 (47 100) no E (25 105) no 16 16 (6 -3) no 8 8 (7 135) no Model @model (35 -10) no Refdes U Model 4043 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @model 4044 4044 Quad RS Latch Reference designator @refdes (-10 135) yes 3 3 (-17 10) no S0 (2 15) no 4 4 (-17 20) no R0 (2 25) no 7 7 (-17 40) no S1 (2 45) no 6 6 (-17 50) no R1 (2 55) no 11 11 (-17 70) no S2 (2 75) no 12 12 (-17 80) no R2 (2 85) no 15 15 (-17 100) no S3 (2 105) no 14 14 (-17 110) no R3 (2 115) no 13 13 (47 10) no Q0 (25 15) no 9 9 (47 30) no Q1 (25 35) no 10 10 (47 50) no Q2 (25 55) no 1 1 (47 70) no Q3 (25 75) no 5 5 (47 100) no E (25 105) no 16 16 (6 -3) no 8 8 (7 135) no Model @model (35 -10) no Refdes U Model 4044 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @model 4046 4046 Phase Locked Loop Reference designator @refdes (-10 135) yes 14 14 (-17 10) no Inp (2 15) no 3 3 (-17 20) no Cin (2 25) no 4 4 (-17 30) no Vo (2 35) no 6 6 (-17 40) no Ca (2 45) no 7 7 (-17 70) no Cb (2 75) no 11 11 (-17 80) no R1 (2 85) no 12 12 (-17 90) no R2 (2 95) no 2 2 (47 10) no Co1 (22 15) no 13 13 (47 20) no Co2 (22 25) no 1 1 (47 30) no PP (25 35) no 9 9 (47 60) no Vi (25 65) no 10 10 (47 70) no Do (25 75) no 15 15 (47 80) no Z (25 85) no 5 5 (47 90) no Inh (25 95) no 16 16 (6 -3) no 8 8 (7 115) no Model @model (35 -10) no Refdes U Model 4046 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4047 4047 Monostable / Astable Reference designator @refdes (-10 105) yes 5 5 (-15 10) no 4 4 (-15 20) no A (2 20) no 8 8 (-17 30) no 6 6 (-17 40) no T (2 40) no 9 9 (-17 60) no Rst (2 65) no 12 12 (-17 80) no RT (2 85) no 3 3 (47 10) no RC (25 15) no 1 1 (47 40) no C (25 45) no 2 2 (47 50) no R (25 55) no 10 10 (47 60) no 11 11 (47 70) no Q (25 70) no 13 13 (47 80) no osl (23 85) no 14 14 (5 -2) no 7 7 (10 105) no Model @model (35 -10) no Refdes U Model 4047 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model 4048 4048 8 Function 8 Input Gate Reference designator @refdes (-10 105) yes 14 14 (-15 10) no A (2 15) no 13 13 (-15 20) no B (2 25) no 12 12 (-15 30) no C (2 35) no 11 11 (-15 40) no D (2 45) no 6 6 (-15 50) no E (2 55) no 5 5 (-17 60) no F (2 65) no 4 4 (-15 70) no G (2 75) no 3 3 (-17 80) no H (2 85) no 15 15 (47 10) no Exp (23 15) no 1 1 (47 30) no Out (23 35) no 2 2 (47 50) no OE (25 55) no 10 10 (47 60) no Fa (25 65) no 7 7 (47 70) no Fb (25 75) no 9 9 (47 80) no Fc (25 85) no 16 16 (5 -2) no 8 8 (10 105) no Model @model (35 -10) no Refdes U Model 4048 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4049a 4009a Inverter Buffer Reference designator @refdes (35 0) yes Model @model (-25 50) no 3 3 (-10 18) no 2 2 (51 18) no 1 1 (10 -2) no 8 8 (10 52) no Refdes U Model 4049a Template X_@refdes %1 %2 %3 %4 @model 4049b 4049b Inverter Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 5 5 (-10 18) no 4 4 (51 18) no Refdes U Model 4049b Template X_@refdes %1 %2 @model 4049c 4009c Inverter Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 7 7 (-10 18) no 6 6 (51 18) no Refdes U Model 4049c Template X_@refdes %1 %2 @model 4049d 4009d Inverter Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 9 9 (-10 18) no 10 10 (51 18) no Refdes U Model 4049d Template X_@refdes %1 %2 @model 4049e 4009e Inverter Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 11 11 (-15 18) no 12 12 (51 18) no Refdes U Model 4049e Template X_@refdes %1 %2 @model 4049f 4009f Inverter Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 14 14 (-15 18) no 15 15 (51 18) no Refdes U Model 4049f Template X_@refdes %1 %2 @model 4050a 4010a Buffer Reference designator @refdes (35 0) yes Model @model (-25 50) no 3 3 (-10 18) no 2 2 (51 18) no 1 1 (10 -2) no 8 8 (10 52) no Refdes U Model 4050a Template X_@refdes %1 %2 %3 %4 @model 4050b 4050b Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 5 5 (-10 18) no 4 4 (51 18) no Refdes U Model 4050b Template X_@refdes %1 %2 @model 4050c 4010c Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 7 7 (-10 18) no 6 6 (51 18) no Refdes U Model 4050c Template X_@refdes %1 %2 @model 4050d 4010d Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 9 9 (-10 18) no 10 10 (51 18) no Refdes U Model 4050d Template X_@refdes %1 %2 @model 4050e 4010e Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 11 11 (-15 18) no 12 12 (51 18) no Refdes U Model 4050e Template X_@refdes %1 %2 @model 4050f 4010f Buffer Reference designator @refdes (30 0) yes Model @model (2 50) no 14 14 (-15 18) no 15 15 (51 18) no Refdes U Model 4050f Template X_@refdes %1 %2 @model 4051 4051 8 Channel Analog Multiplexer Reference designator @refdes (-10 105) yes 13 13 (-15 10) no X0 (2 15) no 14 14 (-15 20) no X1 (2 25) no 15 15 (-15 30) no X2 (2 35) no 12 12 (-15 40) no X3 (2 45) no 1 1 (-15 50) no X4 (2 55) no 5 5 (-15 60) no X5 (2 65) no 2 2 (-15 70) no X6 (2 75) no 4 4 (-15 80) no X7 (2 85) no 7 7 (47 10) no VE (25 15) no 3 3 (47 30) no X (30 35) no 11 11 (47 50) no A (30 55) no 10 10 (47 60) no B (30 65) no 9 9 (47 70) no C (30 75) no 6 6 (47 80) no inh (25 85) no 16 16 (5 -2) no 8 8 (10 105) no Model @model (35 -10) no Refdes U Model 4051 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4052 4052 Dual 4 Channel Analog Multiplexer Reference designator @refdes (-15 120) yes 12 12 (-17 10) no X0 (2 15) no 14 14 (-17 20) no X1 (2 25) no 15 15 (-17 30) no X2 (2 35) no 11 11 (-17 40) no X3 (2 45) no 1 1 (-12 60) no Y0 (2 65) no 5 5 (-12 70) no Y1 (2 75) no 2 2 (-12 80) no Y2 (2 85) no 4 4 (-12 90) no Y3 (2 95) no 7 7 (46 10) no VE (25 15) no 6 6 (46 20) no inh (25 25) no 10 10 (46 30) no A (30 35) no 9 9 (46 40) no B (30 45) no 13 13 (46 60) no X (30 65) no 3 3 (46 80) no Y (30 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4052 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4053 4053 Triple 2 Channel Analog Multiplexer Reference designator @refdes (-15 130) yes 12 12 (-17 10) no X0 (2 15) no 13 13 (-17 20) no X1 (2 25) no 2 2 (-10 40) no Y0 (2 45) no 1 1 (-10 50) no Y1 (2 55) no 5 5 (-10 70) no Z0 (2 75) no 3 3 (-10 80) no Z1 (2 85) no 7 7 (-10 100) no VE (2 105) no 14 14 (46 10) no X (30 15) no 15 15 (46 30) no Y (30 35) no 4 4 (46 50) no Z (30 55) no 11 11 (46 70) no A (30 75) no 10 10 (46 80) no B (30 85) no 9 9 (46 90) no C (30 95) no 6 6 (46 100) no inh (25 105) no 16 16 (5 -1) no 8 8 (8 125) no Model @model (35 -10) no Refdes U Model 4053 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4060 4060 14 Bit Counter and Oscillator Reference designator @refdes (-20 125) yes 11 11 (-15 10) no CK (2 15) no 10 10 (-15 40) no R (2 45) no 9 9 (-10 70) no C (2 75) no 12 12 (-15 100) no MR (2 105) no 7 7 (46 10) no Q4 (25 15) no 5 5 (46 20) no Q5 (25 25) no 4 4 (46 30) no Q6 (25 35) no 6 6 (46 40) no Q7 (25 45) no 14 14 (46 50) no Q8 (25 55) no 13 13 (46 60) no Q9 (25 65) no 15 15 (46 70) no Q10 (20 75) no 1 1 (46 80) no Q12 (20 85) no 2 2 (46 90) no Q13 (20 95) no 3 3 (46 100) no Q14 (20 105) no 16 16 (8 -2) no 8 8 (8 125) no Model @model (35 -10) no Refdes U Model 4060 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4066 eq See 4016 4067 4067 16 Channel Analog Multiplexer Reference designator @refdes (-20 185) yes 9 9 (-10 10) no X0 (2 15) no 8 8 (-10 20) no X1 (2 25) no 7 7 (-10 30) no X2 (2 35) no 6 6 (-10 40) no X3 (2 45) no 5 5 (-10 50) no X4 (2 55) no 4 4 (-10 60) no X5 (2 65) no 3 3 (-10 70) no X6 (2 75) no 2 2 (-10 80) no X7 (2 85) no 23 23 (-17 90) no X8 (2 95) no 22 22 (-17 100) no X9 (2 105) no 21 21 (-17 110) no X10 (2 115) no 20 20 (-17 120) no X11 (2 125) no 19 19 (-17 130) no X12 (2 135) no 18 18 (-17 140) no X13 (2 145) no 17 17 (-17 150) no X14 (2 155) no 16 16 (-17 160) no X15 (2 165) no 1 1 (47 10) no X (30 15) no 15 15 (47 30) no inh (25 35) no 10 10 (47 50) no A (30 55) no 11 11 (47 60) no B (30 65) no 14 14 (47 70) no C (30 75) no 13 13 (47 80) no D (30 85) no 24 24 (5 -2) no 12 12 (5 185) no Model @model (35 -10) no Refdes U Model 4067 Template 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 4097 4097 Dual 8 Channel Analog Multiplexer Reference designator @refdes (-20 185) yes 9 9 (-10 10) no X0 (2 15) no 8 8 (-10 20) no X1 (2 25) no 7 7 (-10 30) no X2 (2 35) no 6 6 (-10 40) no X3 (2 45) no 5 5 (-10 50) no X4 (2 55) no 4 4 (-10 60) no X5 (2 65) no 3 3 (-10 70) no X6 (2 75) no 2 2 (-10 80) no X7 (2 85) no 23 23 (-17 90) no Y0 (2 95) no 22 22 (-17 100) no Y1 (2 105) no 21 21 (-17 110) no Y2 (2 115) no 20 20 (-17 120) no Y3 (2 125) no 19 19 (-17 130) no Y4 (2 135) no 18 18 (-17 140) no Y5 (2 145) no 16 16 (-17 150) no Y6 (2 155) no 15 15 (-17 160) no Y7 (2 165) no 1 1 (47 10) no X (30 15) no 17 17 (47 30) no Y (30 35) no 10 10 (47 50) no A (30 55) no 11 11 (47 60) no B (30 65) no 14 14 (47 70) no C (30 75) no 13 13 (47 80) no inh (25 85) no 24 24 (5 -2) no 12 12 (5 185) no Model @model (35 -10) no Refdes U Model 4097 Template 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 4070 eq See 4030 4071a 4071a OR Reference designator @refdes (20 25) yes 1 1 (-10 8) no 2 2 (-10 28) no 3 3 (51 18) no 14 14 (-2 -2) no 7 7 (0 52) no Model @model (42 55) no Refdes U Model 4071a Template X_@refdes %1 %2 %3 %4 %5 @model 4071b 4071b OR Reference designator @refdes (20 25) yes 6 6 (-10 8) no 5 5 (-10 28) no 4 4 (51 18) no Model @model (8 60) no Refdes U Model 4071b Template X_@refdes %1 %2 %3 @model 4071c 4071c or Reference designator @refdes (20 25) yes 8 8 (-10 9) no 9 9 (-10 29) no 10 10 (51 18) no Model @model (8 60) no Refdes U Model 4071c Template X_@refdes %1 %2 %3 @model 4071d 4071d OR Reference designator @refdes (20 25) yes 13 13 (-15 9) no 12 12 (-15 29) no 11 11 (51 18) no Model @model (8 60) no Refdes U Model 4071d Template X_@refdes %1 %2 %3 @model 4072a 4072a OR 4 input Reference designator @refdes (20 15) yes 2 2 (-15 10) no 3 3 (-15 20) no 4 4 (-15 30) no 5 5 (-15 40) no 1 1 (70 19) no 14 14 (0 -2) no 7 7 (0 72) no Model @model (30 30) no Refdes U Model 4072a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 4072b 4072b OR 4 input Reference designator @refdes (20 15) yes 12 12 (-15 10) no 11 11 (-15 20) no 10 10 (-15 30) no 9 9 (-15 40) no 13 13 (70 19) no Model @model (10 72) no Refdes U Model 4072b Template X_@refdes %1 %2 %3 %4 %5 @model 4073a 4073a 3 input AND Reference designator @refdes (17 25) yes 1 1 (-12 10) no 2 2 (-12 20) no 8 8 (-12 30) no 9 9 (57 19) no 14 14 (8 -1) no 7 7 (12 55) no Model @model (-20 60) no Refdes U Model 4073a Template X_@refdes %1 %2 %3 %4 %5 %6 @model 4073b 4073b 3 input AND Reference designator @refdes (17 25) yes 3 3 (-15 10) no 4 4 (-15 20) no 5 5 (-15 30) no 6 6 (57 19) no Model @model (0 55) no Refdes U Model 4073b Template X_@refdes %1 %2 %3 %4 @model 4073c 4073c 3 input AND Reference designator @refdes (17 25) yes 11 11 (-15 10) no 12 12 (-15 20) no 13 13 (-15 30) no 10 10 (57 19) no Model @model (0 55) no Refdes U Model 4073c Template X_@refdes %1 %2 %3 %4 @model 4075a 4075a OR 3 input Reference designator @refdes (25 25) yes 3 3 (-15 10) no 4 4 (-15 20) no 5 5 (-15 30) no 6 6 (53 19) no 14 14 (-2 -2) no 7 7 (0 52) no Model @model (40 60) no Refdes U Model 4075a Template X_@refdes %1 %2 %3 %4 %5 %6 @model 4075b 4075b OR 3 input Reference designator @refdes (25 25) yes 13 13 (-15 10) no 12 12 (-15 20) no 11 11 (-15 30) no 10 10 (53 19) no Model @model (0 55) no Refdes U Model 4075b Template X_@refdes %1 %2 %3 %4 @model 4075c 4075c OR 3 input Reference designator @refdes (25 25) yes 1 1 (-15 10) no 2 2 (-15 20) no 8 8 (-15 30) no 9 9 (53 19) no Model @model (0 55) no Refdes U Model 4075c Template X_@refdes %1 %2 %3 %4 @model 4076 4076 Latch 4 Bit Reference designator @refdes (-15 120) yes 7 7 (-15 10) no CK (2 15) no 14 14 (-15 30) no D0 (2 35) no 13 13 (-15 40) no D1 (2 45) no 12 12 (-15 50) no D2 (2 55) no 11 11 (-15 60) no D3 (2 65) no 9 9 (-15 80) no 10 10 (-15 90) no IE (2 90) no 15 15 (46 10) no R (30 15) no 3 3 (46 30) no Q0 (27 35) no 4 4 (46 40) no Q1 (27 45) no 5 5 (46 50) no Q2 (27 55) no 6 6 (46 60) no Q3 (27 65) no 1 1 (46 80) no 2 2 (46 90) no OE (27 90) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4076 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4077a 4077a XNOR Reference designator @refdes (20 25) yes 1 1 (-10 8) no 2 2 (-10 28) no 3 3 (51 18) no 14 14 (-2 -2) no 7 7 (0 55) no Model @model (45 55) no Refdes U Model 4077a Template X_@refdes %1 %2 %3 %4 %5 @model 4077b 4077b XNOR Reference designator @refdes (20 25) yes 6 6 (-10 8) no 5 5 (-10 28) no 4 4 (51 18) no Model @model (10 55) no Refdes U Model 4077b Template X_@refdes %1 %2 %3 @model 4077c 4077c XNOR Reference designator @refdes (20 25) yes 8 8 (-10 9) no 9 9 (-10 29) no 10 10 (51 18) no Model @model (10 55) no Refdes U Model 4077c Template X_@refdes %1 %2 %3 @model 4077d 4077d XNOR Reference designator @refdes (20 25) yes 13 13 (-18 9) no 12 12 (-18 29) no 11 11 (51 18) no Model @model (10 55) no Refdes U Model 4077d Template X_@refdes %1 %2 %3 @model 4081a 4081a AND Reference designator @refdes (17 25) yes 1 1 (-12 9) no 2 2 (-12 29) no 3 3 (57 19) no 14 14 (8 -1) no 7 7 (12 55) no Model @model (-20 60) no Refdes U Model 4081a Template X_@refdes %1 %2 %3 %4 %5 @model 4081b 4081b AND Reference designator @refdes (17 25) yes 6 6 (-15 8) no 5 5 (-15 28) no 4 4 (57 19) no Model @model (0 55) no Refdes U Model 4081b Template X_@refdes %1 %2 %3 @model 4081c 4081c AND Reference designator @refdes (17 25) yes 9 9 (-15 8) no 8 8 (-15 28) no 10 10 (57 19) no Model @model (0 55) no Refdes U Model 4081c Template X_@refdes %1 %2 %3 @model 4081d 4081d AND Reference designator @refdes (17 25) yes 12 12 (-15 8) no 13 13 (-15 28) no 11 11 (57 19) no Model @model (0 55) no Refdes U Model 4081d Template X_@refdes %1 %2 %3 @model 4082a 4082a AND 4 input Reference designator @refdes (25 15) yes 2 2 (-10 10) no 3 3 (-10 20) no 4 4 (-10 30) no 5 5 (-10 40) no 1 1 (78 19) no 14 14 (8 -2) no 7 7 (12 62) no Model @model (30 35) no Refdes U Model 4082a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 4082b 4082b AND 4 input Reference designator @refdes (25 15) yes 9 9 (-10 10) no 10 10 (-15 20) no 11 11 (-15 30) no 12 12 (-15 40) no 13 13 (78 19) no Model @model (30 35) no Refdes U Model 4082b Template X_@refdes %1 %2 %3 %4 %5 @model 4089 4089 Binary Rate Multiplier Reference designator @refdes (-15 120) yes 14 14 (-17 10) no A (2 15) no 15 15 (-17 20) no B (2 25) no 2 2 (-10 30) no C (2 35) no 3 3 (-10 40) no D (2 45) no 9 9 (-10 60) no CK (2 65) no 12 12 (-17 70) no CC (2 75) no 11 11 (-17 80) no ID (2 85) no 10 10 (-17 90) no ST (2 95) no 6 6 (46 10) no OUT (19 15) no 5 5 (46 20) no OUT (19 25) no ___ (19 15) no 7 7 (46 30) no OD (25 35) no 1 1 (46 40) no 15 (25 45) no 4 4 (46 60) no S15 (20 65) no 13 13 (46 80) no CL (25 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4089 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4093 eq See 4011 4094 4094 8 Bit Shift Register Reference designator @refdes (-20 125) yes 3 3 (-10 10) no CK (2 15) no 2 2 (-10 40) no D (2 45) no 1 1 (-10 70) no ST (2 75) no 15 15 (-15 100) no OE (2 105) no 4 4 (46 10) no Q1 (25 15) no 5 5 (46 20) no Q2 (25 25) no 6 6 (46 30) no Q3 (25 35) no 7 7 (46 40) no Q4 (25 45) no 14 14 (46 50) no Q5 (25 55) no 13 13 (46 60) no Q6 (25 65) no 12 12 (46 70) no Q7 (25 75) no 11 11 (46 80) no Q8 (25 85) no 9 9 (46 90) no QS (25 95) no 10 10 (46 100) no Q'S (20 105) no 16 16 (8 -2) no 8 8 (8 125) no Model @model (35 -10) no Refdes U Model 4094 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4099 4099 8 bit Addressable Latch Reference designator @refdes (-10 110) yes 5 5 (-10 20) no A0 (2 25) no 6 6 (-10 30) no A1 (2 35) no 7 7 (-10 40) no A2 (2 45) no 3 3 (-10 50) no D (2 55) no 2 2 (-10 70) no CR (2 75) no 4 4 (-10 80) no E (2 85) no 9 9 (47 10) no Q0 (25 15) no 10 10 (47 20) no Q1 (25 25) no 11 11 (47 30) no Q2 (25 35) no 12 12 (47 40) no Q3 (25 45) no 13 13 (47 50) no Q4 (25 55) no 14 14 (47 60) no Q5 (25 65) no 15 15 (47 70) no Q6 (25 75) no 1 1 (47 80) no Q7 (25 85) no 16 16 (6 -3) no 8 8 (7 107) no Model @model (35 -10) no Refdes U Model 4099 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 40106 eq See 4069 40160 40160 Decade Counter Reference designator @refdes (-15 120) yes 2 2 (-10 10) no CK (2 15) no 3 3 (-10 30) no P0 (2 35) no 4 4 (-10 40) no P1 (2 45) no 5 5 (-10 50) no P2 (2 55) no 6 6 (-10 60) no P3 (2 65) no 7 7 (-10 80) no PE (2 85) no 9 9 (-10 90) no LD (2 95) no 15 15 (46 10) no RC (25 15) no 14 14 (46 30) no Q0 (25 35) no 13 13 (46 40) no Q1 (25 45) no 12 12 (46 50) no Q2 (25 55) no 11 11 (46 60) no Q3 (25 65) no 10 10 (46 80) no ET (25 85) no 1 1 (46 90) no CR (25 95) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 40160 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 40161 40160 Binary Counter Reference designator @refdes (-15 120) yes 2 2 (-10 10) no CK (2 15) no 3 3 (-10 30) no P0 (2 35) no 4 4 (-10 40) no P1 (2 45) no 5 5 (-10 50) no P2 (2 55) no 6 6 (-10 60) no P3 (2 65) no 7 7 (-10 80) no PE (2 85) no 9 9 (-10 90) no LD (2 95) no 15 15 (46 10) no RC (25 15) no 14 14 (46 30) no Q0 (25 35) no 13 13 (46 40) no Q1 (25 45) no 12 12 (46 50) no Q2 (25 55) no 11 11 (46 60) no Q3 (25 65) no 10 10 (46 80) no ET (25 85) no 1 1 (46 90) no CR (25 95) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 40161 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 40162 eq See 40160 40163 eq See 40163 40174 40174 Latch 6 Bit Reference designator @refdes (-15 110) yes 3 3 (-15 10) no D0 (2 15) no 4 4 (-15 20) no D1 (2 25) no 6 6 (-15 30) no D2 (2 35) no 11 11 (-15 40) no D3 (2 45) no 13 13 (-15 50) no D4 (2 55) no 14 14 (-15 60) no D5 (2 65) no 9 9 (-15 80) no CK (2 85) no 2 2 (46 10) no Q0 (27 15) no 5 5 (46 20) no Q1 (27 25) no 7 7 (46 30) no Q2 (27 35) no 10 10 (46 40) no Q3 (27 45) no 12 12 (46 50) no Q4 (27 55) no 15 15 (46 60) no Q5 (27 65) no 1 1 (46 80) no R (27 85) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 40174 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 40175 40175 D Latch 4 bit Reference designator @refdes (-10 110) yes 4 4 (-10 20) no D0 (2 25) no 5 5 (-10 30) no D1 (2 35) no 12 12 (-17 40) no D2 (2 45) no 13 13 (-17 50) no D3 (2 55) no 9 9 (-10 70) no CK (2 75) no 1 1 (-10 80) no CL (2 85) no 2 2 (47 10) no 3 3 (47 20) no Q0 (25 20) no 7 7 (47 30) no 6 6 (47 40) no Q1 (25 40) no 10 10 (47 50) no 11 11 (47 60) no Q2 (25 60) no 15 15 (47 70) no 14 14 (47 80) no Q3 (25 80) no 16 16 (6 -3) no 8 8 (7 107) no Model @model (35 -10) no Refdes U Model 40175 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 40192 40192 U/D Decade Counter Reference designator @refdes (-15 120) yes 11 11 (-15 10) no LD (2 15) no 15 15 (-15 30) no P0 (2 35) no 1 1 (-10 40) no P1 (2 45) no 10 10 (-15 50) no P2 (2 55) no 9 9 (-10 60) no P3 (2 65) no 5 5 (-10 80) no CU (2 85) no 4 4 (-10 90) no CD (2 95) no 14 14 (46 10) no CR (25 15) no 3 3 (46 30) no Q0 (25 35) no 2 2 (46 40) no Q1 (25 45) no 6 6 (46 50) no Q2 (25 55) no 7 7 (46 60) no Q3 (25 65) no 12 12 (46 80) no CY (25 85) no 13 13 (46 90) no BW (25 95) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 40192 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 40193 40192 U/D 4 Bit Binary Counter Reference designator @refdes (-15 120) yes 11 11 (-15 10) no LD (2 15) no 15 15 (-15 30) no P0 (2 35) no 1 1 (-10 40) no P1 (2 45) no 10 10 (-15 50) no P2 (2 55) no 9 9 (-10 60) no P3 (2 65) no 5 5 (-10 80) no CU (2 85) no 4 4 (-10 90) no CD (2 95) no 14 14 (46 10) no CR (25 15) no 3 3 (46 30) no Q0 (25 35) no 2 2 (46 40) no Q1 (25 45) no 6 6 (46 50) no Q2 (25 55) no 7 7 (46 60) no Q3 (25 65) no 12 12 (46 80) no CY (25 85) no 13 13 (46 90) no BW (25 95) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 40193 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4503 4503 Hex buffer Reference designator @refdes (-15 110) yes 2 2 (-10 10) no A0 (2 15) no 4 4 (-10 20) no A1 (2 25) no 6 6 (-10 30) no A2 (2 35) no 10 10 (-15 40) no A3 (2 45) no 12 12 (-15 50) no A4 (2 55) no 14 14 (-15 60) no A5 (2 65) no 1 1 (-10 80) no E1 (2 85) no 3 3 (46 10) no Y0 (27 15) no 5 5 (46 20) no Y1 (27 25) no 7 7 (46 30) no Y2 (27 35) no 9 9 (46 40) no Y3 (27 45) no 11 11 (46 50) no Y4 (27 55) no 13 13 (46 60) no Y5 (27 65) no 15 15 (46 80) no E2 (27 85) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4503 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4510 4510 BCD U/D Counter Reference designator @refdes (-15 120) yes 4 4 (-10 10) no P0 (2 15) no 12 12 (-15 20) no P1 (2 25) no 13 13 (-15 30) no P2 (2 35) no 3 3 (-10 40) no P3 (2 45) no 1 1 (-10 60) no PE (2 65) no 15 15 (-15 70) no CK (2 75) no 10 10 (-15 80) no u|d (2 85) no 5 5 (-10 90) no Ci (2 95) no 6 6 (46 10) no Q0 (25 15) no 11 11 (46 20) no Q1 (25 25) no 14 14 (46 30) no Q2 (25 35) no 2 2 (46 40) no Q3 (25 45) no 9 9 (46 60) no RS (25 65) no 7 7 (46 80) no Co (25 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4510 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4516 4510 U/D 4 Bit Binary Counter Reference designator @refdes (-15 120) yes 4 4 (-10 10) no P0 (2 15) no 12 12 (-15 20) no P1 (2 25) no 13 13 (-15 30) no P2 (2 35) no 3 3 (-10 40) no P3 (2 45) no 1 1 (-10 60) no PE (2 65) no 15 15 (-15 70) no CK (2 75) no 10 10 (-15 80) no u|d (2 85) no 5 5 (-10 90) no Ci (2 95) no 6 6 (46 10) no Q0 (25 15) no 11 11 (46 20) no Q1 (25 25) no 14 14 (46 30) no Q2 (25 35) no 2 2 (46 40) no Q3 (25 45) no 9 9 (46 60) no RS (25 65) no 7 7 (46 80) no Co (25 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4516 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4511 4511 BCD to 7 seg. Reference designator @refdes (-10 110) yes 7 7 (-10 20) no A (2 25) no 1 1 (-10 30) no B (2 35) no 2 2 (-10 40) no C (2 45) no 6 6 (-10 50) no D (2 55) no 3 3 (-10 70) no LT (2 75) no 5 5 (-10 80) no LE (2 85) no 13 13 (46 10) no a (30 15) no 12 12 (46 20) no b (30 25) no 11 11 (46 30) no c (30 35) no 10 10 (46 40) no d (30 45) no 9 9 (46 50) no e (30 55) no 15 15 (46 60) no f (30 65) no 14 14 (46 70) no g (30 75) no 4 4 (46 80) no BI (25 85) no 16 16 (5 -1) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 4511 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4512 4512 8 Channel Multiplexer Reference designator @refdes (-10 105) yes 1 1 (-10 10) no X0 (2 15) no 2 2 (-10 20) no X1 (2 25) no 3 3 (-10 30) no X2 (2 35) no 4 4 (-10 40) no X3 (2 45) no 5 5 (-10 50) no X4 (2 55) no 6 6 (-10 60) no X5 (2 65) no 7 7 (-10 70) no X6 (2 75) no 9 9 (-10 80) no X7 (2 85) no 15 15 (47 10) no OD (25 15) no 14 14 (47 30) no X (30 35) no 11 11 (47 50) no A (30 55) no 12 12 (47 60) no B (30 65) no 13 13 (47 70) no C (30 75) no 10 10 (47 80) no E (30 85) no 16 16 (5 -2) no 8 8 (10 105) no Model @model (35 -10) no Refdes U Model 4512 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4514 4514 Latched 4 to 16 Decoder Reference designator @refdes (-10 190) yes 2 2 (-10 20) no A (2 25) no 3 3 (-10 30) no B (2 35) no 21 21 (-15 40) no C (2 45) no 22 22 (-15 50) no D (2 55) no 1 1 (-10 70) no ST (2 75) no 23 23 (-15 90) no inh (2 95) no 11 11 (46 10) no 0 (30 15) no 9 9 (46 20) no 1 (30 25) no 10 10 (46 30) no 2 (30 35) no 8 8 (46 40) no 3 (30 45) no 7 7 (46 50) no 4 (30 55) no 6 6 (46 60) no 5 (30 65) no 5 5 (46 70) no 6 (30 75) no 4 4 (46 80) no 7 (30 85) no 18 18 (46 90) no 8 (30 95) no 17 17 (46 100) no 9 (30 105) no 20 20 (46 110) no 10 (25 115) no 19 19 (46 120) no 11 (25 125) no 14 14 (46 130) no 12 (25 135) no 13 13 (46 140) no 13 (25 145) no 16 16 (46 150) no 14 (25 155) no 15 15 (46 160) no 15 (25 165) no 24 24 (5 -1) no 12 12 (5 185) no Model @model (35 -10) no Refdes U Model 4514 Template 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 4515 4515 Latched 4 to 16 Decoder Reference designator @refdes (-10 190) yes 2 2 (-10 20) no A (2 25) no 3 3 (-10 30) no B (2 35) no 21 21 (-15 40) no C (2 45) no 22 22 (-15 50) no D (2 55) no 1 1 (-10 70) no ST (2 75) no 23 23 (-15 90) no inh (2 95) no 11 11 (46 10) no 0 (30 15) no 9 9 (46 20) no 1 (30 25) no 10 10 (46 30) no 2 (30 35) no 8 8 (46 40) no 3 (30 45) no 7 7 (46 50) no 4 (30 55) no 6 6 (46 60) no 5 (30 65) no 5 5 (46 70) no 6 (30 75) no 4 4 (46 80) no 7 (30 85) no 18 18 (46 90) no 8 (30 95) no 17 17 (46 100) no 9 (30 105) no 20 20 (46 110) no 10 (25 115) no 19 19 (46 120) no 11 (25 125) no 14 14 (46 130) no 12 (25 135) no 13 13 (46 140) no 13 (25 145) no 16 16 (46 150) no 14 (25 155) no 15 15 (46 160) no 15 (25 165) no 24 24 (5 -1) no 12 12 (5 185) no Model @model (35 -10) no Refdes U Model 4515 Template 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 4518a 4518a BCD Counter Reference designator @refdes (-20 70) yes 2 2 (-10 10) no E (2 15) no 1 1 (-10 30) no CK (2 35) no 3 3 (46 10) no Q0 (25 15) no 4 4 (46 20) no Q1 (25 25) no 5 5 (46 30) no Q2 (25 35) no 6 6 (46 40) no Q3 (25 45) no 16 16 (8 -2) no 7 7 (8 70) no R (15 50) no Model @model (35 -10) no Refdes U Model 4518a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 4518b 4518b BCD Counter Reference designator @refdes (-20 70) yes 10 10 (-15 10) no E (2 15) no 9 9 (-10 30) no CK (2 35) no 11 11 (46 10) no Q0 (25 15) no 12 12 (46 20) no Q1 (25 25) no 13 13 (46 30) no Q2 (25 35) no 14 14 (46 40) no Q3 (25 45) no 8 8 (8 -2) no 15 15 (8 70) no R (15 50) no Model @model (35 -10) no Refdes U Model 4518b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 4520a 4518a 4 Bit Binary Counter Reference designator @refdes (-20 70) yes 2 2 (-10 10) no E (2 15) no 1 1 (-10 30) no CK (2 35) no 3 3 (46 10) no Q0 (25 15) no 4 4 (46 20) no Q1 (25 25) no 5 5 (46 30) no Q2 (25 35) no 6 6 (46 40) no Q3 (25 45) no 16 16 (8 -2) no 7 7 (8 70) no R (15 50) no Model @model (35 -10) no Refdes U Model 4520a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 4520b 4518b 4 bit Binary Counter Reference designator @refdes (-20 70) yes 10 10 (-15 10) no E (2 15) no 9 9 (-10 30) no CK (2 35) no 11 11 (46 10) no Q0 (25 15) no 12 12 (46 20) no Q1 (25 25) no 13 13 (46 30) no Q2 (25 35) no 14 14 (46 40) no Q3 (25 45) no 8 8 (8 -2) no 15 15 (8 70) no R (15 50) no Model @model (35 -10) no Refdes U Model 4520b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 4519 4519 4 Bit And/Or Selector Reference designator @refdes (-10 105) yes 6 6 (-10 10) no X0 (2 15) no 7 7 (-10 20) no Y0 (2 25) no 4 4 (-10 30) no X1 (2 35) no 5 5 (-10 40) no Y1 (2 45) no 2 2 (-10 50) no X2 (2 55) no 3 3 (-10 60) no Y2 (2 65) no 15 15 (-15 70) no X3 (2 75) no 1 1 (-10 80) no Y3 (2 85) no 9 9 (47 10) no A (30 15) no 14 14 (47 30) no B (30 35) no 10 10 (47 50) no Z0 (25 55) no 11 11 (47 60) no Z1 (25 65) no 12 12 (47 70) no Z2 (25 75) no 13 13 (47 80) no Z3 (25 85) no 16 16 (5 -2) no 8 8 (10 105) no Model @model (35 -10) no Refdes U Model 4519 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4522 4522 BCD Programmable Counter Reference designator @refdes (-15 120) yes 5 5 (-10 10) no P0 (2 15) no 11 11 (-15 20) no P1 (2 25) no 14 14 (-15 30) no P2 (2 35) no 2 2 (-10 40) no P3 (2 45) no 3 3 (-10 60) no PE (2 65) no 6 6 (-10 70) no CK (2 75) no 4 4 (-10 80) no inh (2 85) no 13 13 (-15 90) no Ci (2 95) no 7 7 (46 10) no Q0 (25 15) no 9 9 (46 20) no Q1 (25 25) no 15 15 (46 30) no Q2 (25 35) no 1 1 (46 40) no Q3 (25 45) no 10 10 (46 60) no MR (25 65) no 12 12 (46 80) no Co (25 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4522 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4526 4522 4 Bit Binary Programmable Counter Reference designator @refdes (-15 120) yes 5 5 (-10 10) no P0 (2 15) no 11 11 (-15 20) no P1 (2 25) no 14 14 (-15 30) no P2 (2 35) no 2 2 (-10 40) no P3 (2 45) no 3 3 (-10 60) no PE (2 65) no 6 6 (-10 70) no CK (2 75) no 4 4 (-10 80) no inh (2 85) no 13 13 (-15 90) no Ci (2 95) no 7 7 (46 10) no Q0 (25 15) no 9 9 (46 20) no Q1 (25 25) no 15 15 (46 30) no Q2 (25 35) no 1 1 (46 40) no Q3 (25 45) no 10 10 (46 60) no MR (25 65) no 12 12 (46 80) no Co (25 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4526 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4527 4089 BCD Rate Multiplier Reference designator @refdes (-15 120) yes 14 14 (-17 10) no A (2 15) no 15 15 (-17 20) no B (2 25) no 2 2 (-10 30) no C (2 35) no 3 3 (-10 40) no D (2 45) no 9 9 (-10 60) no CK (2 65) no 12 12 (-17 70) no CC (2 75) no 11 11 (-17 80) no ID (2 85) no 10 10 (-17 90) no ST (2 95) no 6 6 (46 10) no OUT (19 15) no 5 5 (46 20) no OUT (19 25) no ___ (19 15) no 7 7 (46 30) no OD (25 35) no 1 1 (46 40) no 9 (25 45) no 4 4 (46 60) no S9 (25 65) no 13 13 (46 80) no CL (25 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4527 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4528 eq See 4538 4529 4529 Dual 4 Channel Analog Multiplexer Reference designator @refdes (-15 120) yes 2 2 (-10 10) no X0 (2 15) no 3 3 (-10 20) no X1 (2 25) no 4 4 (-10 30) no X2 (2 35) no 5 5 (-10 40) no X3 (2 45) no 14 14 (-15 60) no Y0 (2 65) no 13 13 (-15 70) no Y1 (2 75) no 12 12 (-15 80) no Y2 (2 85) no 11 11 (-15 90) no Y3 (2 95) no 1 1 (46 10) no Sx (25 15) no 15 15 (46 20) no Sy (25 25) no 6 6 (46 30) no A (30 35) no 7 7 (46 40) no B (30 45) no 9 9 (46 60) no X (30 65) no 10 10 (46 80) no Y (30 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 4529 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4534 4534 5 Cascaded BCD Counters Reference designator @refdes (-15 205) yes 1 1 (-15 10) no Ca (2 15) no 22 22 (-15 60) no Cb (2 65) no 23 23 (-15 80) no CKb (2 85) no 4 4 (-15 90) no CKa (2 95) no 2 2 (-15 110) no MR (2 115) no 9 9 (-15 130) no SR (2 135) no 10 10 (-15 150) no SC (2 155) no 5 5 (-15 170) no M1 (2 175) no 6 6 (-15 180) no M2 (2 185) no 20 20 (46 10) no Q0 (27 15) no 19 19 (46 20) no Q1 (27 25) no 18 18 (46 30) no Q2 (27 35) no 17 17 (46 40) no Q3 (27 45) no 21 21 (46 60) no BC (27 65) no 7 7 (46 80) no D1 (27 85) no 8 8 (46 90) no D2 (27 95) no 14 14 (46 100) no D3 (27 105) no 16 16 (46 110) no D4 (27 115) no 11 11 (46 120) no D5 (27 125) no 15 15 (46 140) no CD (26 145) no 13 13 (46 160) no CO (26 165) no 3 3 (46 180) no EO (26 185) no 24 24 (8 -1) no 12 12 (8 205) no Model @model (35 -10) no Refdes U Model 4534 Template 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 4538a 4538a Retriggerable Monostable Reference designator @refdes (-25 -25) yes 1 1 (22 2) no C (25 12) no 2 2 (-10 9) no RC (2 15) no 5 5 (-15 29) no B (2 35) no 8 8 (67 49) no VS (47 55) no 6 6 (67 9) no Q (47 15) no 7 7 (67 29) no Q (47 35) no _ (47 24) no 3 3 (15 77) no CL (25 59) no 4 4 (-15 49) no A (2 55) no Model @model (-25 95) yes Refdes U Model 4538a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 4538b 4538b Retriggerable Monostable Reference designator @refdes (-25 -25) yes 15 15 (17 2) no C (25 12) no 14 14 (-15 9) no RC (2 15) no 11 11 (-15 29) no B (2 35) no 16 16 (67 49) no Vc (47 55) no 10 10 (67 9) no Q (47 15) no 9 9 (67 29) no Q (47 35) no _ (47 24) no 13 13 (15 77) no CL (25 59) no 12 12 (-15 49) no A (2 55) no Model @model (-25 95) yes Refdes U Model 4538b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 4541 4541 Programmable timer Reference designator @refdes (-20 110) yes 1 1 (-10 10) no R (2 15) no 2 2 (-10 30) no C (2 35) no 3 3 (-10 50) no RS (2 55) no 12 12 (-15 70) no A (2 75) no 13 13 (-17 80) no B (2 85) no 8 8 (46 10) no Q (30 15) no 9 9 (46 30) no OS (25 35) no 10 10 (46 50) no M (25 55) no 5 5 (46 70) no AR (25 75) no 6 6 (46 80) no MR (25 85) no 14 14 (5 -1) no 7 7 (8 105) no Model @model (35 -10) no Refdes U Model 4541 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 @model 4543 4543 BCD to 7 seg. Reference designator @refdes (-10 110) yes 5 5 (-10 20) no A (2 25) no 3 3 (-10 30) no B (2 35) no 2 2 (-10 40) no C (2 45) no 4 4 (-10 50) no D (2 55) no 1 1 (-10 70) no LE (2 75) no 7 7 (-10 80) no BI (2 85) no 9 9 (46 10) no a (30 15) no 10 10 (46 20) no b (30 25) no 11 11 (46 30) no c (30 35) no 12 12 (46 40) no d (30 45) no 13 13 (46 50) no e (30 55) no 15 15 (46 60) no f (30 65) no 14 14 (46 70) no g (30 75) no 6 6 (46 80) no Ph (25 85) no 16 16 (5 -1) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 4543 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 4056 eq See 4543 4548 eq See 4538 4553 4553 3 digit BCD counter Reference designator @refdes (-10 130) yes 12 12 (-17 10) no CK (2 15) no 10 10 (-17 30) no LE (2 35) no 11 11 (-17 50) no Dis (2 55) no 13 13 (-17 70) no MR (2 75) no 4 4 (-10 90) no CA (2 95) no 3 3 (-10 100) no CB (2 105) no 9 9 (46 10) no Q0 (25 15) no 7 7 (46 20) no Q1 (25 25) no 6 6 (46 30) no Q2 (25 35) no 5 5 (46 40) no Q3 (25 45) no 14 14 (46 60) no OF (25 65) no 2 2 (46 80) no D1 (25 85) no 1 1 (46 90) no D2 (25 95) no 15 15 (46 100) no D3 (25 105) no 16 16 (5 -1) no 8 8 (8 125) no Model @model (35 -10) no Refdes U Model 4553 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model oregano-0.84.41/data/libraries/peripheral.oreglib0000644000175000017500000035605413413640652020740 0ustar rubenruben Peripheral Peripheral Library 0.21 Hector Bellesi 17-Jul-2001 8255 (0 0)(60 0)(60 270)(0 270)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(-6 100) (-20 120)(-6 120) (-20 150)(0 150) (-20 170)(0 170) (-20 200)(0 200) (-20 230)(-6 230) (30 -20)(30 0) (30 270)(30 290) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 100)(80 100) (60 110)(80 110) (60 120)(80 120) (60 130)(80 130) (60 140)(80 140) (60 150)(80 150) (60 160)(80 160) (60 170)(80 170) (60 190)(80 190) (60 200)(80 200) (60 210)(80 210) (60 220)(80 220) (60 230)(80 230) (60 240)(80 240) (60 250)(80 250) (60 260)(80 260) (-6 97)(0 103) (-6 117)(0 123) (-6 227)(0 233) (-20 10 34) (-20 20 33) (-20 30 32) (-20 40 31) (-20 50 30) (-20 60 29) (-20 70 28) (-20 80 27) (-20 100 5) (-20 120 36) (-20 150 9) (-20 170 8) (-20 200 35) (-20 230 6) (30 -20 26) (30 290 7) (80 10 4) (80 20 3) (80 30 2) (80 40 1) (80 50 40) (80 60 39) (80 70 38) (80 80 37) (80 100 18) (80 110 19) (80 120 20) (80 130 21) (80 140 22) (80 150 23) (80 160 24) (80 170 25) (80 190 14) (80 200 15) (80 210 16) (80 220 17) (80 230 13) (80 240 12) (80 250 11) (80 260 10) 8253 (0 0)(60 0)(60 160)(0 160)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(-6 100) (-20 110)(-6 110) (-20 120)(0 120) (-20 130)(0 130) (-20 150)(-6 150) (30 -20)(30 0) (30 160)(30 180) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 70)(80 70) (60 80)(80 80) (60 90)(80 90) (60 110)(80 110) (60 120)(80 120) (60 130)(80 130) (-6 97)(0 103) (-6 107)(0 113) (-6 147)(0 153) (-20 10 8) (-20 20 7) (-20 30 6) (-20 40 5) (-20 50 4) (-20 60 3) (-20 70 2) (-20 80 1) (-20 100 22) (-20 110 23) (-20 120 19) (-20 130 20) (-20 150 21) (30 -20 24) (30 180 12) (80 30 9) (80 40 11) (80 50 10) (80 70 15) (80 80 14) (80 90 13) (80 110 18) (80 120 16) (80 130 17) eq MC146818 (0 0)(60 0)(60 150)(0 150)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(-6 130) (-20 140)(-6 140) (30 -20)(30 0) (30 150)(30 170) (60 10)(80 10) (66 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (66 70)(80 70) (60 90)(80 90) (60 140)(80 140) (-6 127)(0 133) (-6 137)(0 143) (60 17)(66 23) (60 67)(66 73) (-20 10 4) (-20 20 5) (-20 30 6) (-20 40 7) (-20 50 8) (-20 60 9) (-20 70 10) (-20 80 11) (-20 100 15) (-20 110 14) (-20 120 17) (-20 130 18) (-20 140 13) (30 -20 24) (30 170 12) (80 10 22) (80 20 19) (80 30 23) (80 40 21) (80 50 20) (80 60 1) (80 70 16) (80 90 2) (80 140 3) ICL7109 (0 0)(60 0)(60 260)(0 260)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 160)(0 160) (-20 170)(0 170) (-20 180)(0 180) (-20 200)(-6 200) (-20 210)(-6 210) (-20 220)(-6 220) (-20 240)(0 240) (-20 250)(0 250) (30 -20)(30 0) (30 260)(30 280) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 90)(80 90) (60 110)(80 110) (60 130)(80 130) (60 140)(80 140) (60 150)(80 150) (60 170)(80 170) (60 190)(80 190) (60 210)(80 210) (60 250)(80 250) (-6 197)(0 203) (-6 207)(0 213) (-6 217)(0 223) (-20 10 16) (-20 20 15) (-20 30 14) (-20 40 13) (-20 50 12) (-20 60 11) (-20 70 10) (-20 80 9) (-20 90 8) (-20 100 7) (-20 110 6) (-20 120 5) (-20 130 4) (-20 140 3) (-20 160 17) (-20 170 2) (-20 180 26) (-20 200 18) (-20 210 19) (-20 220 20) (-20 240 28) (-20 250 21) (30 -20 40) (30 280 1) (80 10 27) (80 20 36) (80 30 37) (80 50 38) (80 60 35) (80 70 34) (80 80 39) (80 90 33) (80 110 32) (80 130 31) (80 140 29) (80 150 30) (80 170 25) (80 290 24) (80 210 24) (80 250 22) AD7528 (0 0)(60 0)(60 130)(0 130)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(-6 100) (-20 110)(-6 110) (-20 120)(-6 120) (30 -20)(30 0) (30 130)(30 150) (60 10)(80 10) (60 30)(80 30) (60 50)(80 50) (60 70)(80 70) (60 90)(80 90) (60 110)(80 110) (60 120)(80 120) (-6 97)(0 103) (-6 107)(0 113) (-6 117)(0 123) (-20 10 14) (-20 20 13) (-20 30 12) (-20 40 11) (-20 50 10) (-20 60 9) (-20 70 8) (-20 80 7) (-20 100 6) (-20 110 16) (-20 120 15) (30 -20 17) (30 150 5) (80 10 2) (80 30 3) (80 50 4) (80 70 20) (80 90 19) (80 110 18) (80 120 1) 6821 (0 0)(60 0)(60 230)(0 230)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 150)(0 150) (-20 160)(0 160) (-20 180)(-6 180) (-20 190)(-6 190) (-20 210)(-6 210) (-20 220)(0 220) (30 -20)(30 0) (30 230)(30 250) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 100)(80 100) (60 110)(80 110) (60 120)(80 120) (60 130)(80 130) (60 140)(80 140) (60 150)(80 150) (60 160)(80 160) (60 170)(80 170) (60 190)(80 190) (60 200)(80 200) (66 210)(80 210) (60 220)(80 220) (-6 177)(0 183) (-6 187)(0 193) (-6 207)(0 213) (60 207)(66 213) (-20 10 33) (-20 20 32) (-20 30 31) (-20 40 30) (-20 50 29) (-20 60 28) (-20 70 27) (-20 80 26) (-20 100 40) (-20 120 18) (-20 150 39) (-20 170 19) (-20 200 36) (-20 230 35) (30 -20 20) (30 290 1) (80 10 2) (80 20 3) (80 30 4) (80 40 5) (80 50 6) (80 60 7) (80 70 8) (80 80 9) (80 100 10) (80 110 11) (80 120 12) (80 130 13) (80 140 14) (80 150 15) (80 160 16) (80 170 17) (80 190 22) (80 200 24) (80 210 23) (80 220 21) UART (0 0)(60 0)(60 280)(0 280)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 150)(0 150) (-20 160)(0 160) (-20 170)(0 170) (-20 190)(-6 190) (-20 200)(-6 200) (-20 220)(0 220) (-20 230)(0 230) (-20 240)(0 240) (-20 250)(0 250) (-20 260)(-6 260) (-20 270)(-6 270) (30 -20)(30 0) (50 280)(50 300) (60 10)(80 10) (60 30)(80 30) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 100)(80 100) (60 110)(80 110) (60 130)(80 130) (60 140)(80 140) (60 160)(80 160) (60 180)(80 180) (60 200)(80 200) (60 250)(80 250) (-6 187)(0 193) (-6 197)(0 203) (-6 257)(0 263) (-6 267)(0 273) (-20 10 26) (-20 20 27) (-20 30 28) (-20 40 29) (-20 50 30) (-20 60 31) (-20 70 32) (-20 80 33) (-20 100 12) (-20 110 11) (-20 120 10) (-20 130 9) (-20 140 8) (-20 150 7) (-20 160 6) (-20 170 5) (-20 190 23) (-20 200 4) (-20 220 37) (-20 230 38) (-20 240 19) (-20 250 22) (-20 260 16) (-20 270 18) (30 -20 1) (50 300 3) (80 10 34) (80 30 2) (80 50 35) (80 60 36) (80 70 39) (80 80 24) (80 100 20) (80 110 25) (80 130 17) (80 140 40) (80 160 13) (80 180 14) (80 200 15) (80 250 21) 8284 (0 0)(60 0)(60 160)(0 160)(0 0) (-20 10)(0 10) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 120)(-6 120) (-20 130)(-6 130) (-20 140)(-6 140) (-20 150)(-6 150) (30 -20)(30 0) (30 160)(30 180) (60 10)(80 10) (60 30)(80 30) (60 50)(80 50) (60 70)(80 70) (60 90)(80 90) (-6 117)(0 123) (-6 127)(0 133) (-6 137)(0 143) (-6 147)(0 153) (-20 10 17) (-20 40 16) (-20 60 13) (-20 70 14) (-20 80 1) (-20 90 4) (-20 100 6) (-20 120 3) (-20 130 7) (-20 140 15) (-20 150 11) (30 -20 18) (30 180 9) (80 10 8) (80 30 5) (80 50 10) (80 70 2) (80 90 12) 8255 8255 Paralel Port Reference designator @refdes (0 -10) yes 34 34 (-17 10) no D0 (2 15) no 33 33 (-17 20) no D1 (2 25) no 32 32 (-17 30) no D2 (2 35) no 31 31 (-17 40) no D3 (2 45) no 30 30 (-17 50) no D4 (2 55) no 29 29 (-17 60) no D5 (2 65) no 28 28 (-17 70) no D6 (2 75) no 27 27 (-17 80) no D7 (2 85) no 5 5 (-12 100) no RD (2 105) no 36 36 (-17 120) no WR (2 125) no 9 9 (-12 150) no A0 (2 155) no 8 8 (-12 170) no A1 (2 175) no 35 35 (-17 200) no MR (2 205) no 6 6 (-12 230) no CS (2 235) no 26 26 (17 -2) no 7 7 (22 285) no 4 4 (67 10) no PA0 (38 15) no 3 3 (67 20) no PA1 (38 25) no 2 2 (67 30) no PA2 (38 35) no 1 1 (67 40) no PA3 (38 45) no 40 40 (67 50) no PA4 (38 55) no 39 39 (67 60) no PA5 (38 65) no 38 38 (67 70) no PA6 (38 75) no 37 37 (67 80) no PA7 (38 85) no 18 18 (67 100) no PB0 (38 105) no 19 19 (67 110) no PB1 (38 115) no 20 20 (67 120) no PB2 (38 125) no 21 21 (67 130) no PB3 (38 135) no 22 22 (67 140) no PB4 (38 145) no 23 23 (67 150) no PB5 (38 155) no 24 24 (67 160) no PB6 (38 165) no 25 25 (67 170) no PB7 (38 175) no 14 14 (67 190) no PC0 (38 195) no 15 15 (67 200) no PC1 (38 205) no 16 16 (67 210) no PC2 (38 215) no 17 17 (67 220) no PC3 (38 225) no 13 13 (67 230) no PC4 (38 235) no 12 12 (67 240) no PC5 (38 245) no 11 11 (67 250) no PC6 (38 255) no 10 10 (67 260) no PC7 (38 265) no Model @model (-20 285) no Refdes U Model 8255 Template 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 8253 8253 Triple Timer / Counter Reference designator @refdes (0 -10) yes 8 8 (-12 10) no D0 (2 15) no 7 7 (-12 20) no D1 (2 25) no 6 6 (-12 30) no D2 (2 35) no 5 5 (-12 40) no D3 (2 45) no 4 4 (-12 50) no D4 (2 55) no 3 3 (-12 60) no D5 (2 65) no 2 2 (-12 70) no D6 (2 75) no 1 1 (-12 80) no D7 (2 85) no 22 22 (-17 100) no RD (2 105) no 23 23 (-17 110) no WR (2 115) no 19 19 (-17 120) no A0 (2 125) no 20 20 (-17 130) no A1 (2 135) no 21 21 (-17 150) no CS (2 155) no 24 24 (17 -2) no 12 12 (17 175) no 9 9 (67 30) no CK0 (38 35) no 11 11 (67 40) no G0 (42 45) no 10 10 (67 50) no OT0 (38 55) no 15 15 (67 70) no CK1 (38 75) no 14 14 (67 80) no G1 (42 85) no 13 13 (67 90) no OT1 (38 95) no 18 18 (67 110) no CK2 (38 115) no 16 16 (67 120) no G2 (42 125) no 17 17 (67 130) no OT2 (38 135) no Model @model (-20 175) no Refdes U Model 8253 Template 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 8254 eq See 8253 MC146818 MC146818 Real Time Clock Reference designator @refdes (0 -10) yes 4 4 (-12 10) no D0 (2 15) no 5 5 (-12 20) no D1 (2 25) no 6 6 (-12 30) no D2 (2 35) no 7 7 (-12 40) no D3 (2 45) no 8 8 (-12 50) no D4 (2 55) no 9 9 (-12 60) no D5 (2 65) no 10 10 (-17 70) no D6 (2 75) no 11 11 (-17 80) no D7 (2 85) no 15 15 (-17 100) no R|W (2 105) no 14 14 (-17 110) no AS (2 115) no 17 17 (-17 120) no DS (2 125) no 18 18 (-17 130) no MR (2 135) no 13 13 (-17 140) no CS (2 145) no 24 24 (17 -2) no 12 12 (17 165) no 22 22 (67 10) no PS (42 15) no 19 19 (67 20) no IRQ (38 25) no 23 23 (67 30) no SQW (38 35) no 21 21 (67 40) no CKO (38 45) no 20 20 (67 50) no CKF (38 55) no 1 1 (67 60) no MOT (38 65) no 16 16 (67 70) no Stby (37 75) no 2 2 (67 90) no X1 (42 95) no 3 3 (67 140) no X2 (42 145) no Model @model (35 165) no Refdes U Model MC146818 Template 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 ICL7109 ICL7109 12 bit ADC Reference designator @refdes (0 -10) yes 16 16 (-17 10) no D0 (2 15) no 15 15 (-17 20) no D1 (2 25) no 14 14 (-17 30) no D2 (2 35) no 13 13 (-17 40) no D3 (2 45) no 12 12 (-17 50) no D4 (2 55) no 11 11 (-17 60) no D5 (2 65) no 10 10 (-17 70) no D6 (2 75) no 9 9 (-12 80) no D7 (2 85) no 8 8 (-12 90) no D8 (2 95) no 7 7 (-12 100) no D9 (2 105) no 6 6 (-12 110) no D10 (2 115) no 5 5 (-12 120) no D11 (2 125) no 4 4 (-12 130) no OR (2 135) no 3 3 (-12 140) no POL (2 145) no 17 17 (-17 160) no TST (2 165) no 2 2 (-12 170) no EOC (2 175) no 26 26 (-17 180) no R|H (2 185) no 18 18 (-17 200) no LB (2 205) no 19 19 (-17 210) no HB (2 215) no 20 20 (-17 220) no CS (2 225) no 28 28 (-17 240) no VE (2 245) no 21 21 (-17 250) no MO (2 255) no 40 40 (17 -2) no 1 1 (22 275) no 27 27 (67 10) no SND (38 15) no 36 36 (67 20) no VR+ (38 25) no 37 37 (67 30) no CR+ (38 35) no 38 38 (67 50) no CR- (38 55) no 35 35 (67 60) no IN+ (38 65) no 34 34 (67 70) no IN- (38 75) no 39 39 (67 80) no VR- (38 85) no 33 33 (67 90) no AGND (30 95) no 32 32 (67 110) no INT (38 115) no 31 31 (67 130) no AZ (38 135) no 29 29 (67 140) no REF (38 145) no 30 30 (67 150) no BUF (38 155) no 25 25 (67 170) no OSCb (34 175) no 24 24 (67 190) no OSCs (34 195) no 23 23 (67 210) no OSCo (34 215) no 22 22 (67 250) no OSCi (32 255) no Model @model (35 275) no Refdes U Model ICL7109 Template 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 AD7528 AD7528 Dual 8 bit DAC Reference designator @refdes (-10 -10) yes 14 14 (-17 10) no D0 (2 15) no 13 13 (-17 20) no D1 (2 25) no 12 12 (-17 30) no D2 (2 35) no 11 11 (-17 40) no D3 (2 45) no 10 10 (-17 50) no D4 (2 55) no 9 9 (-12 60) no D5 (2 65) no 8 8 (-12 70) no D6 (2 75) no 7 7 (-12 80) no D7 (2 85) no 6 6 (-12 100) no A|B (2 105) no 16 16 (-17 110) no WR (2 115) no 15 15 (-17 120) no CS (2 125) no 17 17 (17 -2) no 5 5 (17 145) no 2 2 (67 10) no OutA (35 15) no 3 3 (67 30) no RfA (38 35) no 4 4 (67 50) no VrA (38 55) no 20 20 (67 70) no OutB (35 75) no 19 19 (67 90) no RfB (38 95) no 18 18 (67 110) no VrB (38 115) no 1 1 (67 120) no Agnd (35 125) no Model @model (45 145) no Refdes U Model AD7528 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 6821 6821 Paralel Interface Adapter Reference designator @refdes (0 -10) yes 33 33 (-17 10) no D0 (2 15) no 32 32 (-17 20) no D1 (2 25) no 31 31 (-17 30) no D2 (2 35) no 30 30 (-17 40) no D3 (2 45) no 29 29 (-17 50) no D4 (2 55) no 28 28 (-17 60) no D5 (2 65) no 27 27 (-17 70) no D6 (2 75) no 26 26 (-17 80) no D7 (2 85) no 40 40 (-17 100) no CA1 (2 105) no 18 18 (-17 110) no CB1 (2 115) no 39 39 (-17 120) no CA2 (2 125) no 19 19 (-17 130) no CB2 (2 135) no 36 36 (-17 150) no RS0 (2 155) no 35 35 (-17 160) no RS1 (2 165) no 38 38 (-17 180) no IRQA (2 185) no 37 37 (-17 190) no IRQB (2 195) no 34 34 (-17 210) no RESET (2 215) no 25 25 (-17 220) no E (2 225) no 20 20 (17 -2) no 1 1 (22 245) no 2 2 (67 10) no PA0 (38 15) no 3 3 (67 20) no PA1 (38 25) no 4 4 (67 30) no PA2 (38 35) no 5 5 (67 40) no PA3 (38 45) no 6 6 (67 50) no PA4 (38 55) no 7 7 (67 60) no PA5 (38 65) no 8 8 (67 70) no PA6 (38 75) no 9 9 (67 80) no PA7 (38 85) no 10 10 (67 100) no PB0 (38 105) no 11 11 (67 110) no PB1 (38 115) no 12 12 (67 120) no PB2 (38 125) no 13 13 (67 130) no PB3 (38 135) no 14 14 (67 140) no PB4 (38 145) no 15 15 (67 150) no PB5 (38 155) no 16 16 (67 160) no PB6 (38 165) no 17 17 (67 170) no PB7 (38 175) no 22 22 (67 190) no CS0 (38 195) no 24 24 (67 200) no CS1 (38 205) no 23 23 (67 210) no CS2 (38 215) no 21 21 (67 220) no R|W (38 225) no Model @model (35 245) no Refdes U Model 6821 Template 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 AY3-1015 UART UART Serial Interface Reference designator @refdes (0 -10) yes 26 26 (-17 10) no TD0 (2 15) no 27 27 (-17 20) no TD1 (2 25) no 28 28 (-17 30) no TD2 (2 35) no 29 29 (-17 40) no TD3 (2 45) no 30 30 (-17 50) no TD4 (2 55) no 31 31 (-17 60) no TD5 (2 65) no 32 32 (-17 70) no TD6 (2 75) no 33 33 (-17 80) no TD7 (2 85) no 12 12 (-17 100) no RD0 (2 105) no 11 11 (-17 110) no RD1 (2 115) no 10 10 (-17 120) no RD2 (2 125) no 9 9 (-12 130) no RD3 (2 135) no 8 8 (-12 140) no RD4 (2 145) no 7 7 (-12 150) no RD5 (2 155) no 6 6 (-12 160) no RD6 (2 165) no 5 5 (-12 170) no RD7 (2 175) no 23 23 (-17 190) no TDS (2 195) no 4 4 (-12 200) no RDE (2 205) no 37 37 (-17 220) no NB2 (2 225) no 38 38 (-17 230) no NB1 (2 235) no 19 19 (-17 240) no RDA (2 245) no 22 22 (-17 250) no TBMT (2 255) no 16 16 (-17 260) no SWE (2 265) no 18 18 (-17 270) no RDAR (2 275) no 1 1 (22 -2) no VC (25 12) no 3 3 (42 295) no VS (45 280) no 34 34 (67 10) no CS (43 15) no 2 2 (67 30) no VE (43 35) no 35 35 (67 50) no NP (43 55) no 36 36 (67 60) no NS (43 65) no 39 39 (67 70) no POE (38 75) no 24 24 (67 80) no TEOC (33 85) no 20 20 (67 100) no RSI (38 105) no 25 25 (67 110) no TSO (38 115) no 17 17 (67 130) no RCP (38 135) no 40 40 (67 140) no TCP (38 145) no 13 13 (67 160) no RPE (38 165) no 14 14 (67 180) no RFE (38 185) no 15 15 (67 200) no ROR (38 205) no 21 21 (67 250) no MR (43 255) no Model @model (-20 295) no Refdes U Model AY3-1015 Template 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 8284 8284 Clock Generator and Driver for 8086/8 CPU Reference designator @refdes (0 -20) yes 17 17 (-17 10) no X1 (2 15) no 16 16 (-17 40) no X2 (2 45) no 13 13 (-17 60) no F|C (2 65) no 14 14 (-17 70) no EFI (2 75) no 1 1 (-12 80) no CSY (2 85) no 4 4 (-12 90) no RY1 (2 95) no 6 6 (-12 100) no RY2 (2 105) no 3 3 (-12 120) no AE1 (2 125) no 7 7 (-12 130) no AE2 (2 135) no 15 15 (-17 140) no ASY (2 145) no 11 11 (-17 150) no RES (2 155) no 18 18 (17 -2) no 9 9 (20 175) no 8 8 (67 10) no CLK (37 15) no 5 5 (67 30) no RDY (37 35) no 10 10 (67 50) no RST (37 55) no 2 2 (67 70) no PCK (37 75) no 12 12 (67 90) no OSC (37 95) no Model @model (-20 175) no Refdes U Model 8284 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 @model oregano-0.84.41/data/libraries/ground.oreglib0000644000175000017500000000211213413640652020062 0ustar rubenruben Ground modified by H. Bellesi 1.3 Richard Hult 11-Oct-2004 Ground (0 0)(0 15) (-7.5 15)(7.5 15) (-5 18)(5 18) (-2.5 21)(2.5 21) (0 0) Gnd Ground Ground internal ground oregano-0.84.41/data/libraries/passive-components.oreglib0000644000175000017500000011161713413640652022434 0ustar rubenruben Passive Components This library comprises statndard passive components issued from default.oreglib. 1.0 Marc Lorber 09-Jan-2010 jumper4 (10 0)(10 20) (20 10)(13 10)(12 7)(10 7)(8 7)(7 10)(0 10) (0 10) (20 10) (10 0) (10 20) jumper2 (20 10)(13 10)(12 7)(10 7)(8 7)(7 10)(0 10) (0 10) (20 10) antenna (0 0)(0 15)(8 0)(-8 0)(0 15)(0 30) (0 30 1) resistor (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (0 10 1) (40 10 2) resistor-var1 (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (20 6)(20 -10) (17 0)(20 6)(23 0) (0 10 1) (40 10 3) (20 -10 2) thermistor (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (10 18)(30 2) (10 0)(30 20) (0 10 1) (40 10 2) varistor (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (7 18)(10 18)(30 2)(33 2) (0 10 1) (40 10 2) resistor-var2 (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (10 18)(30 2) (27 3)(30 2)(29 5) (0 10 1) (40 10 2) speaker (15 0)(15 10)(5 10)(5 0)(15 0)(25 -10)(25 20)(15 10) (10 0)(10 -10) (10 10)(10 20) (10 -10 1) (10 20 2) capacitor (0 10)(13 10) (13 5)(13 15) (17 5)(17 15) (17 10)(30 10) (0 10 1) (30 10 2) capacitor-var1 (0 10)(13 10) (13 5)(13 15) (20 5)(18 6.5)(17 10)(18 13.5)(20 15) (17 6)(20 5)(19 8) (17 10)(30 10) (0 10 1) (30 10 2) capacitor-var2 (0 10)(13 10) (13 5)(13 15) (17 5)(17 15) (17 10)(30 10) (10 5)(20 15) (10 7)(10 5)(12 5) (0 10 1) (30 10 2) cpol (0 10)(13 10) (13 7)(13 13) (12 4)(17 4)(17 16)(12 16) (17 10)(30 10) (5 5)(9 5) (7 3)(7 7) (0 10 1) (30 10 2) inductor (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) (0 10 1) (50 10 2) motor-stepper (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) (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) (60 10)(70 10) (64 30)(70 30) (60 50)(70 50) (10 60)(10 70) (30 64)(30 70) (50 60)(50 70) (10 10)(50 50) (70 10 1) (70 30 2) (70 50 3) (10 70 4) (30 70 5) (50 70 6) motor-stepper2 (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) (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) (60 10)(70 10) (60 50)(70 50) (10 60)(10 70) (50 60)(50 70) (10 10)(50 50) (70 10 1) (70 50 2) (10 70 3) (50 70 4) inductor-iron (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) (11 3)(39 3) (11 1)(39 1) (11 -1)(39 -1) (0 10 1) (50 10 2) transformer (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) (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) (22 11)(22 39) (20 11)(20 39) (18 11)(18 39) (10 0 1) (10 50 2) (30 0 3) (30 50 4) transformer2 (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) (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) (30 40)(50 40) (22 11)(22 69) (20 11)(20 69) (18 11)(18 69) (10 0 1) (10 50 2) (30 0 3) (50 40 4) (30 80 5) fuse (-3 -3)(3 3) (17 -3)(23 3) (-10 0)(-3 0) (23 0)(30 0) (1 -2.9)(2 -4)(4 -4.9)(5 -5)(6 -4.9)(8 -4)(9 -2.9)(10 0) (10 0)(11 2.9)(12 4)(14 4.9)(15 5)(16 4.9)(18 4)(19 2.9) (-10 0 1) (30 0 2) lamp (-7.5 -7.5)(7.5 7.5) (0 -20)(0 -7.5) (0 7.5)(0 20) (-5.3 -5.3)(5.3 5.3) (5.3 -5.3)(-5.3 5.3) (0 -20 1) (0 20 2) microphone (-2.5 -5)(0 -5)(5 -4)(7.5 -2.5)(9 0)(10 5) (-2.5 15)(0 15)(5 14)(7.5 12.5)(9 10)(10 5) (9 0)(20 0) (9 10)(20 10) (-2.5 -5)(-2.5 15) (20 0 1) (20 10 2) earphone-m (-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) (-22.5 10)(-30 10) (15 15)(15 20)(-30 20) (-22.5 0)(-7.5 15) (7.5 0)(22.5 15) (-30 10 1) (-30 20 2) earphone-s (-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) (-22.5 10)(-30 10) (-7.5 10)(7.5 10) (0 10)(0 20)(-30 20) (15 15)(15 30)(-30 30) (-22.5 0)(-7.5 15) (7.5 0)(22.5 15) (-30 10 1) (-30 20 2) (-30 30 3) Jumper Cross jumper4 Wire Jumper Cross internal jumper4 Jumper jumper2 Wire Jumper internal jumper2 Antenna antenna Antenna internal antenna Resistor resistor Resistor Reference designator @refdes (15 0) yes Resistance @res (0 30) yes Refdes R Res 1k Template R_@refdes %1 %2 @res Potentiometer resistor-var1 Variable Resistor Reference designator @refdes (5 0) yes Resistance @res (5 30) yes Refdes R Res 1k Template R_@refdes %1 %2 %3 @res Potentiometer-2 resistor-var2 Variable Resistor Reference designator @refdes (5 0) yes Resistance @res (5 30) yes Refdes R Res 1k Template R_@refdes %1 %2 @res Thermistor thermistor Thermistor Reference designator @refdes (5 0) yes Resistance @res (5 30) yes Refdes R Res 1k Template R_@refdes %1 %2 @res Varistor varistor Varistor Reference designator @refdes (5 -10) yes Resistance @res (5 50) yes Refdes V Res 270V Template R_@refdes %1 %2 @res Speaker speaker Speaker Reference designator @refdes (30 0) yes impedance @ohm (30 15) yes Refdes L ohm 8 ohm Template R_@refdes %1 %2 @res Capacitor capacitor Capacitor Reference designator @refdes (15 -10) yes Capacitance @cap (15 40) yes Refdes C Cap 1u IC 0 Template C_@refdes %1 %2 @cap IC=@IC Trimmer capacitor-var1 Variable Capacitor Reference designator @refdes (15 0) yes Capacitance @cap (15 40) yes Refdes C Cap 100p Template C_@refdes %1 %2 @cap Trimmer-2 capacitor-var2 Variable Capacitor Reference designator @refdes (15 0) yes Capacitance @cap (15 40) yes Refdes C Cap 30p Template C_@refdes %1 %2 @cap Cap.Pol. cpol Electrolytic Capacitor Reference designator @refdes (15 0) yes Capacitance @cap (15 30) yes Refdes C Cap 1u Template C_@refdes %1 %2 @cap Inductor inductor Inductor Reference designator @refdes (20 0) yes Inductance @ind (20 30) yes Refdes L Ind 1H Template L_@refdes %1 %2 @ind Inductor iron inductor-iron Iron core Inductor Reference designator @refdes (20 0) yes Inductance @ind (20 30) yes Refdes L Ind 1H Template L_@refdes %1 %2 @ind Transformer transformer Transformer Reference designator @refdes (50 35) yes Inductance @ind (50 20) yes Refdes T Ind 1H Template T_@refdes %1 %2 %3 %4 @ind Transformer-up transformer2 Step Up Transformer Reference designator @refdes (50 35) yes Inductance @ind (50 20) yes Refdes T Ind 1H Template T_@refdes %1 %2 %3 %4 %5 @ind Fuse fuse Fuse Reference designator @refdes (10 -10) yes A @res (10 25) yes Refdes F res 1A Template F_@refdes %1 %2 @res Lamp lamp Lamp Reference designator @refdes (10 -20) yes V 12 V (30 -25) yes Refdes L Template L_@refdes %1 %2 Motor Stepper motor-stepper Motor Stepper 4 phases Reference designator @refdes (30 35) yes Refdes M Template M_@refdes %1 %2 %3 %4 %5 %6 Motor Stepper-2 motor-stepper2 Motor Stepper 2 phases Reference designator @refdes (30 35) yes Refdes M Template M_@refdes %1 %2 %3 %4 Microphone microphone Microphone Reference designator @refdes (10 -20) yes Refdes M Template L_@refdes %1 %2 Earphone-M earphone-m Earphone (Mono) Reference designator @refdes (10 -20) yes Refdes E Template L_@refdes %1 %2 Earphone-S earphone-s Earphone (Stereo) Reference designator @refdes (10 -20) yes Refdes E Template L_@refdes %1 %2 %3 oregano-0.84.41/data/libraries/default.oreglib0000644000175000017500000050315413413640652020224 0ustar rubenruben Default modified by H. Bellesi, Hansjuergen Riess 1.3 Richard Hult 29-Sep-2014 Model (0 5)Model: Include (0 5)Include: jumper4 (10 0)(10 20) (20 10)(13 10)(12 7)(10 7)(8 7)(7 10)(0 10) (0 10) (20 10) (10 0) (10 20) jumper2 (20 10)(13 10)(12 7)(10 7)(8 7)(7 10)(0 10) (0 10) (20 10) antenna (0 0)(0 15)(8 0)(-8 0)(0 15)(0 30) (0 30 1) connection (-1 -1)(1 1) resistor (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (0 10 1) (40 10 2) resistor-var1 (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (20 6)(20 -10) (17 0)(20 6)(23 0) (0 10 1) (40 10 3) (20 -10 2) thermistor (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (10 18)(30 2) (10 0)(30 20) (0 10 1) (40 10 2) varistor (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (7 18)(10 18)(30 2)(33 2) (0 10 1) (40 10 2) resistor-var2 (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (10 18)(30 2) (27 3)(30 2)(29 5) (0 10 1) (40 10 2) resistor-pack8 (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (0 20)(10 20)(11 20)(13 16)(16 24)(19 16)(22 24)(25 16)(28 24)(30 20)(40 20) (0 30)(10 30)(11 30)(13 26)(16 34)(19 26)(22 34)(25 26)(28 34)(30 30)(40 30) (0 40)(10 40)(11 40)(13 36)(16 44)(19 36)(22 44)(25 36)(28 44)(30 40)(40 40) (0 50)(10 50)(11 50)(13 46)(16 54)(19 46)(22 54)(25 46)(28 54)(30 50)(40 50) (0 60)(10 60)(11 60)(13 56)(16 64)(19 56)(22 64)(25 56)(28 64)(30 60)(40 60) (0 70)(10 70)(11 70)(13 66)(16 74)(19 66)(22 74)(25 66)(28 74)(30 70)(40 70) (0 80)(10 80)(11 80)(13 76)(16 84)(19 76)(22 84)(25 76)(28 84)(30 80)(40 80) (0 10 1) (0 20 2) (0 30 3) (0 40 4) (0 50 5) (0 60 6) (0 70 7) (0 80 8) (40 10 16) (40 20 15) (40 30 14) (40 40 13) (40 50 12) (40 60 11) (40 70 10) (40 80 9) resistor-pack8c (0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10) (0 20)(10 20)(11 20)(13 16)(16 24)(19 16)(22 24)(25 16)(28 24)(30 20)(40 20) (0 30)(10 30)(11 30)(13 26)(16 34)(19 26)(22 34)(25 26)(28 34)(30 30)(40 30) (0 40)(10 40)(11 40)(13 36)(16 44)(19 36)(22 44)(25 36)(28 44)(30 40)(40 40) (0 50)(10 50)(11 50)(13 46)(16 54)(19 46)(22 54)(25 46)(28 54)(30 50)(40 50) (0 60)(10 60)(11 60)(13 56)(16 64)(19 56)(22 64)(25 56)(28 64)(30 60)(40 60) (0 70)(10 70)(11 70)(13 66)(16 74)(19 66)(22 74)(25 66)(28 74)(30 70)(40 70) (0 80)(10 80)(11 80)(13 76)(16 84)(19 76)(22 84)(25 76)(28 84)(30 80)(40 80) (0 80)(0 0)(40 0) (40 0 1) (40 10 2) (40 20 3) (40 30 4) (40 40 5) (40 50 6) (40 60 7) (40 70 8) (40 80 9) speaker (15 0)(15 10)(5 10)(5 0)(15 0)(25 -10)(25 20)(15 10) (10 0)(10 -10) (10 10)(10 20) (10 -10 1) (10 20 2) capacitor (0 10)(13 10) (13 5)(13 15) (17 5)(17 15) (17 10)(30 10) (0 10 1) (30 10 2) capacitor-var1 (0 10)(13 10) (13 5)(13 15) (20 5)(18 6.5)(17 10)(18 13.5)(20 15) (17 6)(20 5)(19 8) (17 10)(30 10) (0 10 1) (30 10 2) capacitor-var2 (0 10)(13 10) (13 5)(13 15) (17 5)(17 15) (17 10)(30 10) (10 5)(20 15) (10 7)(10 5)(12 5) (0 10 1) (30 10 2) cpol (0 10)(13 10) (13 7)(13 13) (12 4)(17 4)(17 16)(12 16) (17 10)(30 10) (5 5)(9 5) (7 3)(7 7) (0 10 1) (30 10 2) crystal (0 10)(10 10) (10 7)(10 13) (12 5)(18 5)(18 15)(12 15)(12 5) (20 7)(20 13) (20 10)(30 10) (0 10 1) (30 10 2) inductor (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) (0 10 1) (50 10 2) motor-stepper (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) (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) (60 10)(70 10) (64 30)(70 30) (60 50)(70 50) (10 60)(10 70) (30 64)(30 70) (50 60)(50 70) (10 10)(50 50) (70 10 1) (70 30 2) (70 50 3) (10 70 4) (30 70 5) (50 70 6) motor-stepper2 (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) (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) (60 10)(70 10) (60 50)(70 50) (10 60)(10 70) (50 60)(50 70) (10 10)(50 50) (70 10 1) (70 50 2) (10 70 3) (50 70 4) inductor-iron (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) (11 3)(39 3) (11 1)(39 1) (11 -1)(39 -1) (0 10 1) (50 10 2) transformer (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) (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) (22 11)(22 39) (20 11)(20 39) (18 11)(18 39) (10 0 1) (10 50 2) (30 0 3) (30 50 4) transformer2 (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) (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) (30 40)(50 40) (22 11)(22 69) (20 11)(20 69) (18 11)(18 69) (10 0 1) (10 50 2) (30 0 3) (50 40 4) (30 80 5) diode (0 10)(10 10) (10 5)(10 15)(20 10)(10 5) (20 5)(20 15) (20 10)(30 10) (0 10 1) (30 10 2) d_tunnel (0 10)(10 10) (10 5)(10 15)(20 10)(10 5) (15 5)(20 5)(20 15) (20 10)(30 10) (0 10 1) (30 10 2) photodiode (0 10)(10 10) (10 5)(10 15)(20 10)(10 5) (20 5)(20 15) (23 7)(30 0)(30 5)(35 0) (24 4)(23 7)(26 6) (20 10)(30 10) (0 10 1) (30 10 2) varactor (0 10)(10 10) (10 3)(10 17)(20 10)(10 3) (20 3)(20 17) (23 3)(23 17) (23 10)(30 10) (0 10 1) (30 10 2) schottky (0 10)(10 10) (10 3)(10 17)(20 10)(10 3) (17 6)(17 3)(20 3)(20 17)(23 17)(23 14) (20 10)(30 10) (0 10 1) (30 10 2) zener (12 5)(12 15)(20 10)(12 5) (10 10)(12 10) (20 5)(20 15) (20 15)(23 17) (17 3)(20 5) (20 10)(30 10) (10 10)(0 10) (30 10 1) (0 10 2) JFET-P (0 20)(10 20) (7 15)(2 20)(7 25) (10 10)(10 30) (20 0)(20 13)(10 13) (20 40)(20 27)(10 27) (20 0 1) (0 20 2) (20 40 3) JFET-N (0 20)(10 20) (5 15)(10 20)(5 25) (10 10)(10 30) (20 0)(20 13)(10 13) (20 40)(20 27)(10 27) (20 0 1) (0 20 2) (20 40 3) UJT (-10 30)(0 30)(10 20) (5 22)(10 20)(8 25) (10 10)(10 30) (20 0)(20 13)(10 13) (20 40)(20 27)(10 27) (20 0 1) (-10 30 2) (20 40 3) PNP (0 20)(10 20) (10 10)(10 30) (20 0)(20 10)(10 20)(20 30)(20 40) (18 23)(13 23)(13 28) (20 0 1) (0 20 2) (20 40 3) NPN (0 20)(10 20) (10 10)(10 30) (20 0)(20 10)(10 20)(20 30)(20 40) (18 23)(18 28)(13 28) (20 0 1) (0 20 2) (20 40 3) NPN-D (20 -10)(20 0)(0 0)(-10 10)(0 20) (-2 13)(-2 18)(-7 18) (-20 10)(-10 10) (-10 0)(-10 20) (0 20)(10 20) (10 10)(10 30) (20 0)(20 10)(10 20)(20 30)(20 40) (18 23)(18 28)(13 28) (20 -10 1) (-20 10 2) (20 40 3) PNP-D (20 -10)(20 0)(0 0)(-10 10)(0 20) (-7 18)(-7 13)(-2 13) (-20 10)(-10 10) (-10 0)(-10 20) (0 20)(10 20) (10 10)(10 30) (20 0)(20 10)(10 20)(20 30)(20 40) (13 28)(13 23)(18 23) (20 -10 1) (-20 10 2) (20 40 3) NPN-PHOTO (-3 10)(3 15)(3 10)(8 15) (8 12) (8 15)(5 15) (-3 20)(3 25)(3 20)(8 25) (8 22) (8 25)(5 25) (10 10)(10 30) (20 0)(20 10)(10 20)(20 30)(20 40) (18 23)(18 28)(13 28) (20 0 1) (20 40 2) PNP-PHOTO (-3 10)(3 15)(3 10)(8 15) (8 12) (8 15)(5 15) (-3 20)(3 25)(3 20)(8 25) (8 22) (8 25)(5 25) (10 10)(10 30) (20 0)(20 10)(10 20)(20 30)(20 40) (18 23)(13 23)(13 28) (20 0 1) (20 40 2) optoisolator (-3 10)(3 15)(3 10)(8 15) (8 12) (8 15)(5 15) (-3 20)(3 25)(3 20)(8 25) (8 22) (8 25)(5 25) (10 10)(10 30) (20 0)(20 10)(10 20)(20 30)(20 40) (18 23)(18 28)(13 28) (-20 0)(-20 15) (-26 15)(-14 15)(-20 25)(-26 15) (-26 25)(-14 25) (-20 25)(-20 40) (20 0 1) (20 40 2) (-20 0 3) (-20 40 4) N-MOS (0 20)(15 20) (15 10)(15 30) (20 30)(30 30)(30 40) (20 10)(30 10)(30 0) (20 20)(25 24) (25 16)(20 20)(40 20)(40 40) (20 7)(20 13) (20 17)(20 23) (20 27)(20 33) (30 0 1) (0 20 2) (30 40 3) (40 40 4) P-MOS (0 20)(15 20) (15 10)(15 30) (20 30)(30 30)(30 40) (20 10)(30 10)(30 0) (30 20)(25 24) (25 16)(30 20) (20 20)(40 20)(40 40) (20 7)(20 13) (20 17)(20 23) (20 27)(20 33) (30 0 1) (0 20 2) (30 40 3) (40 40 4) DGN-MOS (0 10)(15 10) (0 30)(15 30) (15 7)(15 17) (15 23)(15 33) (20 30)(30 30)(30 40) (20 10)(30 10)(30 0) (20 20)(25 24) (25 16)(20 20)(30 20)(30 30) (20 7)(20 33) (30 0 1) (0 10 2) (30 40 3) (0 30 4) DGP-MOS (0 10)(15 10) (0 30)(15 30) (15 7)(15 17) (15 23)(15 33) (20 30)(30 30)(30 40) (20 10)(30 10)(30 0) (30 20)(25 24) (25 16)(30 20) (20 20)(30 20)(30 30) (20 7)(20 33) (30 0 1) (0 10 2) (30 40 3) (0 30 4) OPAMP (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (5 10)(10 10) (5 30)(10 30) (7.5 27.5)(7.5 32.5) (-20 30 5) (-20 10 4) (60 20 2) OPAMPP (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (20 10)(20 -10) (20 30)(20 50) (5 10)(10 10) (5 30)(10 30) (7.5 27.5)(7.5 32.5) (-20 30 5) (-20 10 4) (20 -10 3) (20 50 12) (60 20 2) OPAMPPS (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (10 5)(10 -10) (20 30)(20 50) (10 35)(10 50) (30 25)(30 50) (5 10)(10 10) (5 30)(10 30) (7.5 27.5)(7.5 32.5) (-20 30 3) (-20 10 2) (10 -10 7) (10 50 4) (20 50 1) (30 50 5) (60 20 6) OPAMPPSB (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (10 5)(10 -10) (20 10)(20 -10) (20 30)(20 50) (10 35)(10 50) (30 25)(30 50) (5 10)(10 10) (5 30)(10 30) (7.5 27.5)(7.5 32.5) (-20 30 3) (-20 10 2) (10 -10 8) (20 -10 5) (10 50 4) (20 50 1) (30 50 6) (60 20 7) OPAMPPSB (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (10 5)(10 -10) (20 10)(20 -10) (20 30)(20 50) (10 35)(10 50) (30 25)(30 50) (5 10)(10 10) (5 30)(10 30) (7.5 27.5)(7.5 32.5) (-20 30 3) (-20 10 2) (10 -10 8) (20 -10 5) (10 50 4) (20 50 1) (30 50 6) (60 20 7) OPAMPPSB (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (10 5)(10 -10) (20 10)(20 -10) (20 30)(20 50) (10 35)(10 50) (30 25)(30 50) (5 10)(10 10) (5 30)(10 30) (7.5 27.5)(7.5 32.5) (-20 30 3) (-20 10 2) (10 -10 8) (20 -10 5) (10 50 4) (20 50 1) (30 50 6) (60 20 7) Ground (0 0)(0 15) (-7.5 15)(7.5 15) (-5 18)(5 18) (-2.5 21)(2.5 21) (0 0) Clamp (0 0)(2 -5) (2 -5)(5 -2) (5 -2)(0 0) (5 -2)(15 -12) (2 -5)(12 -15) (12 -15)(15 -12) (12 -24)(24 -12) (18 -14)(14 -21) (18 -14)(22 -21) (0 0) Triode (15 -25)(65 25) (0 0)(20 0) (25 0)(30 0) (35 0)(40 0) (45 0)(50 0) (55 0)(60 0) (40 -10)(40 -40) (30 -10)(50 -10) (30 8)(50 8)(60 15)(60 40) (30 40)(30 20)(40 13)(50 20)(50 40) (40 13)(40 40) (40 -40 1) (0 0 2) (60 40 3) (30 40 4) (40 40 9) (50 40 5) Triode2 (15 -25)(65 25) (0 0)(20 0) (25 0)(30 0) (35 0)(40 0) (45 0)(50 0) (55 0)(60 0) (40 -10)(40 -40) (30 -10)(50 -10) (30 8)(50 8)(60 15)(60 40) (40 -40 6) (0 0 7) (60 40 8) Pentode (10 -30)(70 30) (25 -10)(30 -10) (35 -10)(40 -10) (45 -10)(50 -10) (55 -10)(60 -10) (60 -10)(63 -5)(63 13) (63 13)(55 18) (66 0)(90 0) (25 0)(30 0) (35 0)(40 0) (45 0)(50 0) (55 0)(60 0) (-10 10)(20 10) (25 10)(30 10) (35 10)(40 10) (45 10)(50 10) (55 10)(60 10) (40 -20)(40 -50) (25 -20)(55 -20) (25 18)(55 18)(60 20)(60 50) (30 50)(30 28)(40 23)(50 28)(50 50) (40 -50 7) (90 0 9) (-10 10 2) (60 50 3) (30 50 4) (50 50 5) VSIN (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 12)(10 18) (7 15)(13 15) (7 25)(13 25) (10 0 1) (10 40 2) ISIN (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 12)(10 28) (10 12)(7 18) (10 12)(13 18) (10 40 1) (10 0 2) VPULSE (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 11)(10 17) (7 14)(13 14) (4 25)(6 25)(8 18)(12 18)(14 25)(17 25) (7 27)(13 27) (10 0 1) (10 40 2) CCVS (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 11)(10 17) (7 14)(13 14) (7 27)(13 27) (0 30)(20 10) (20 10)(20 15) (20 10)(15 10) (10 0 1) (10 40 2) VCVS (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 11)(10 17) (7 14)(13 14) (7 27)(13 27) (0 30)(20 10) (20 10)(20 15) (20 10)(15 10) (10 0 1) (10 40 2) VCCS (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 12)(10 28) (10 12)(7 18) (10 12)(13 18) (0 30)(20 10) (20 10)(20 15) (20 10)(15 10) (10 40 1) (10 0 2) CCCS (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 12)(10 28) (10 12)(7 18) (10 12)(13 18) (0 30)(20 10) (20 10)(20 15) (20 10)(15 10) (10 40 1) (10 0 2) VDC (10 0)(10 11) (-5 11)(25 11) (2 17)(18 17) (-5 23)(25 23) (2 29)(18 29) (10 29)(10 40) (10 0 1) (10 40 2) Marker (3 3)(-3 -3) (0 3)(0 20) (0 0) MPR (0 0)(5 -5)(50 -5)(50 5)(5 5)(0 0) (0 0) MPL (0 0)(-5 -5)(-50 -5)(-50 5)(-5 5)(0 0) (0 0) MPB (0 0)(5 -5)(45 -5)(50 0)(45 5)(5 5)(0 0) (0 0) pushbutton (-3 -3)(3 3) (7 -3)(13 3) (-20 0)(-3 0) (13 0)(30 0) (-5 -8)(15 -8) (0 -8)(0 -13)(10 -13)(10 -8) (-20 0 1) (30 0 2) switch (-3 -3)(3 3) (17 -3)(23 3) (-10 0)(-3 0) (23 0)(30 0) (2.1 -2.1)(14.1 -14.1)(9.1 -14.1) (14.1 -14.1)(14.1 -9.1) (-10 0 1) (30 0 2) switch2 (-3 -3)(3 3) (17 -13)(23 -7) (17 7)(23 13) (-10 0)(-3 0) (23 -10)(30 -10) (23 10)(30 10) (3 0)(20 0)(16 -4) (20 0)(16 4) (-10 0 1) (30 -10 2) (30 10 3) relay1p1t (7 -13)(13 -7) (27 -13)(33 -7) (0 -10)(7 -10) (33 -10)(40 -10) (12.1 -12.1)(24.1 -24.1)(19.1 -24.1) (24.1 -24.1)(24.1 -19.1) (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) (22 11)(22 39) (20 11)(20 39) (18 11)(18 39) (0 0 1) (0 50 2) (0 -10 3) (40 -10 4) switchyswitch (-10 -30)(20 -30)(20 30)(-10 30)(-10 -30) (-20 -20)(-10 -20) (-20 20)(-10 20) (7 -13)(13 -7) (7 7)(13 13) (30 -20)(10 -20)(10 -13) (30 20)(10 20)(10 13) (7.9 -7.9)(-4.1 4.1) (-4.1 4.1)(-4.1 -0.9) (-4.1 4.1)(0.9 4.1) (30 -20 1) (30 20 2) (-20 -20 3) (-20 20 4) fuse (-3 -3)(3 3) (17 -3)(23 3) (-10 0)(-3 0) (23 0)(30 0) (1 -2.9)(2 -4)(4 -4.9)(5 -5)(6 -4.9)(8 -4)(9 -2.9)(10 0) (10 0)(11 2.9)(12 4)(14 4.9)(15 5)(16 4.9)(18 4)(19 2.9) (-10 0 1) (30 0 2) power220 (-3 -3)(3 3) (17 -3)(23 3) (7 2)(13 8) (-5 -15)(25 15) (-10 0)(-3 0) (23 0)(30 0) (10 8)(10 20) (-10 0 1) (30 0 2) (10 20 3) power110 (7 7)(13 13) (-5 -12)(25 18) (-10 0)(5 0) (15 0)(30 0) (5 -5)(5 5) (15 -5)(15 5) (10 13)(10 30) (-10 0 1) (30 0 2) (10 30 3) bridge-d (6.5 -6.5)(0 0)(6.5 6.5) (33.5 -6.5)(40 0)(33.5 6.5) (13.5 -13.5)(20 -20)(26.5 -13.5) (13.5 13.5)(20 20)(26.5 13.5) (2.9 -10)(10 -2.9)(13.5 -13.5)(2.9 -10) (10 -17.1)(17.1 -10) (2.9 10)(10 2.9)(13.5 13.5)(2.9 10) (10 17.1)(17.1 10) (37.1 10)(30 2.9) (30 17.1)(22.9 10)(33.5 6.5)(30 17.1) (37.1 -10)(30 -2.9) (30 -17.1)(22.9 -10)(33.5 -6.5)(30 -17.1) (-10 0)(0 0) (20 -30)(20 -20) (20 30)(20 20) (40 0)(50 0) (-10 0 1) (20 -30 2) (20 30 3) (50 0 4) thyristor (10 -10)(10 10) (0 10)(20 10)(10 20)(0 10) (0 20)(20 20) (10 20)(10 40) (6 20)(0 30)(-10 30) (10 -10 1) (10 40 2) (-10 30 3) triac (10 -20)(10 0) (10 0)(5 10)(0 0)(20 0) (10 10)(15 0)(20 10)(0 10) (10 10)(10 30) (7 10)(0 20)(-10 20) (10 -20 1) (10 30 2) (-10 20 3) IGBT-NPN (0 30)(7 30) (7 10)(7 30) (10 7)(10 33) (20 0)(20 10)(10 18)(10 22)(20 30)(20 40) (18 23)(18 28)(13 28) (20 0) (0 30) (20 40) IGBT-PNP (0 30)(7 30) (7 10)(7 30) (10 7)(10 33) (20 0)(20 10)(10 18)(10 22)(20 30)(20 40) (18 24)(13 24)(13 29) (20 0) (0 30) (20 40) GTO (10 -10)(10 10) (0 10)(20 10)(10 20)(0 10) (0 20)(20 20) (10 20)(10 40) (6 20)(0 30)(-10 30) (9 20)(3 30)(-8 30) (10 -10 1) (10 40 2) (-10 30 3) lamp (-7.5 -7.5)(7.5 7.5) (0 -20)(0 -7.5) (0 7.5)(0 20) (-5.3 -5.3)(5.3 5.3) (5.3 -5.3)(-5.3 5.3) (0 -20 1) (0 20 2) diac (10 -20)(10 0) (10 0)(5 10)(0 0)(20 0) (10 10)(15 0)(20 10)(0 10) (10 10)(10 30) (10 -20 1) (10 30 2) CRT-BW (0 0)(60 0)(80 -20)(90 -20)(90 50)(80 50)(60 30)(0 30)(0 0) (-20 10)(0 10)(10 15)(0 20)(-20 20) (20 50)(20 5)(19.5 5)(19.5 25)(19 25)(19 5)(18.5 5)(18.5 25)(18 25)(18 5) (30 50)(30 25) (30 20)(30 15) (30 10)(30 5) (40 50)(40 25) (40 20)(40 15) (40 10)(40 5) (50 50)(50 25) (50 20)(50 15) (50 10)(50 5) (55 35)(60 35)(65 40) (60 35)(60 50) (70 60)(70 35)(80 45)(85 45) (-20 10 3) (-20 20 4) (20 50 2) (30 50 1) (40 50 6) (50 50 7) (60 50) (70 60) neon (-7.5 -7.5)(7.5 7.5) (0 -20)(0 -5) (0 5)(0 20) (-2 -5)(2 -1) (-2 1)(2 5) (0 -20 1) (0 20 2) microphone (-2.5 -5)(0 -5)(5 -4)(7.5 -2.5)(9 0)(10 5) (-2.5 15)(0 15)(5 14)(7.5 12.5)(9 10)(10 5) (9 0)(20 0) (9 10)(20 10) (-2.5 -5)(-2.5 15) (20 0 1) (20 10 2) earphone-m (-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) (-22.5 10)(-30 10) (15 15)(15 20)(-30 20) (-22.5 0)(-7.5 15) (7.5 0)(22.5 15) (-30 10 1) (-30 20 2) earphone-s (-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) (-22.5 10)(-30 10) (-7.5 10)(7.5 10) (0 10)(0 20)(-30 20) (15 15)(15 30)(-30 30) (-22.5 0)(-7.5 15) (7.5 0)(22.5 15) (-30 10 1) (-30 20 2) (-30 30 3) Model Model Used to add a model name model param Template .model @name @model @param model (25 11) @model Include Include Used to specify a include file filename Template .include @filename filename (25 11) @filename yes Jumper Cross jumper4 Wire Jumper Cross internal jumper4 Jumper jumper2 Wire Jumper internal jumper2 Antenna antenna Antenna internal antenna Connection connection Wire Connection internal connection Resistor resistor Resistor Reference designator @refdes (15 0) yes Resistance @res (0 37) yes Refdes R Res 1k Template R_@refdes %1 %2 @res nlcs resistor non-linear current source Reference designator @refdes (15 0) yes Refdes G Cur 'expr' Template @refdes %1 %2 cur=@cur Potentiometer resistor-var1 Variable Resistor Reference designator @refdes (0 0) yes Resistance @res (0 37) yes Refdes R Res 1k Template R_@refdes %1 %2 %3 @res Potentiometer-2 resistor-var2 Variable Resistor Reference designator @refdes (5 0) yes Resistance @res (-5 37) yes Refdes R Res 1k Template R_@refdes %1 %2 @res Thermistor thermistor Thermistor Reference designator @refdes (15 -5) yes Resistance @res (0 40) yes Refdes R Res 1k Template R_@refdes %1 %2 @res Varistor varistor Varistor Reference designator @refdes (15 0) yes Model @model (-5 40) yes Refdes V Model Varistor Template R_@refdes %1 %2 @model Resistor Pack x8 resistor-pack8 Resistor pack Reference designator @refdes (15 -15) yes Resistance @res (15 0) yes 1 1 (0 10) no 16 16 (30 10) no 2 2 (0 20) no 15 15 (30 20) no 3 3 (0 30) no 14 14 (30 30) no 4 4 (0 40) no 13 13 (30 40) no 5 5 (0 50) no 12 12 (30 50) no 6 6 (0 60) no 11 11 (30 60) no 7 7 (0 70) no 10 10 (30 70) no 8 8 (0 80) no 9 9 (30 80) no Refdes R Res 4k7 Template R_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @res Resistor Pack x8 common resistor-pack8c Resistor pack common point Reference designator @refdes (10 -15) yes Resistance @res (10 0) yes 1 1 (33 0) no 2 2 (33 10) no 3 3 (33 20) no 4 4 (33 30) no 5 5 (33 40) no 6 6 (33 50) no 7 7 (33 60) no 8 8 (33 70) no 9 9 (33 80) no Refdes R Res 4k7 Template R_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 @res Speaker speaker Speaker Reference designator @refdes (-7 0) yes impedance @ohm (30 15) yes Refdes L ohm 8 ohm Template R_@refdes %1 %2 @res Capacitor capacitor Capacitor Reference designator @refdes (15 0) yes Capacitance @cap (-2 37) yes Refdes C Cap 1u IC 0 Template C_@refdes %1 %2 @cap IC=@IC Capacitor Trimmer capacitor-var1 Variable Capacitor Reference designator @refdes (15 0) yes Capacitance @cap (-5 37) yes Refdes C Cap 100p Template C_@refdes %1 %2 @cap Capacitor Trimmer alt. capacitor-var2 Variable Capacitor alternative Reference designator @refdes (15 0) yes Capacitance @cap (-5 37) yes Refdes C Cap 30p Template C_@refdes %1 %2 @cap Capacitor Pol. cpol Capacitor polarized Reference designator @refdes (15 0) yes Capacitance @cap (-5 37) yes Refdes C Cap 1u Template C_@refdes %1 %2 @cap Crystal crystal Crystal Reference designator @refdes (15 0) yes Frequency @freq (-5 40) yes Refdes X Freq 3.58MHz Template X_@refdes %1 %2 @freq Inductor inductor Inductor Reference designator @refdes (15 0) yes Inductance @ind (0 40) yes Refdes L Ind 1H Template L_@refdes %1 %2 @ind Inductor iron inductor-iron Iron core Inductor Reference designator @refdes (15 -5) yes Inductance @ind (0 38) yes Refdes L Ind 1H Template L_@refdes %1 %2 @ind Transformer transformer Transformer Reference designator @refdes (40 35) yes Inductance @ind (-23 20) yes Refdes T Ind 1H Template T_@refdes %1 %2 %3 %4 @ind Transformer-up transformer2 Step Up Transformer Reference designator @refdes (50 35) yes Inductance @ind (50 20) yes Refdes T Ind 1H Template T_@refdes %1 %2 %3 %4 %5 @ind Diode diode General purpose silicon diode Reference designator @refdes (0 35) yes Model @model (15 0) no Refdes D Model Diode Template D_@refdes %1 %2 @model Diode Tunnel d_tunnel Tunnel Diode Reference designator @refdes (0 35) yes Model @model (15 0) no Refdes D Model Diode Tunnel Template D_@refdes %1 %2 @model Diode Photo photodiode Photodiode Reference designator @refdes (0 35) yes Model @model (15 0) yes Refdes D Model Photodiode Template D_@refdes %1 %2 @model Diode Varactor varactor Varactor silicon diode Reference designator @refdes (0 35) yes Model @model (15 0) yes Refdes D Model Varactor Template D_@refdes %1 %2 @model Diode Schottky schottky Schottky silicon diode Reference designator @refdes (0 35) yes Model @model (15 0) yes Refdes D Model Diode Schottky Template D_@refdes %1 %2 @model Diode Zener zener Diode Zener Refdes (0 35) @refdes yes Model @model (15 0) yes Refdes D Model Zener Template D_@refdes %1 %2 @model BJT NPN NPN NPN Bipolar junction transistor Reference designator @refdes (-5 5) yes Model @model (30 40) yes Refdes Q Model NPN Template Q_@refdes %1 %2 %3 @model BJT NPN-DAR NPN-D NPN Bipolar Darlington transistor Reference designator @refdes (-5 -5) yes Model @model (-30 50) yes Refdes Q Model NPN Template Q_@refdes %1 %2 %3 @model BJT PNP-DAR PNP-D PNP Bipolar Darlington transistor Reference designator @refdes (-5 -5) yes Model @model (-30 50) yes Refdes Q Model PNP Template Q_@refdes %1 %2 %3 @model BJT NPN-PHOTO NPN-PHOTO NPN Bipolar junction photo-transistor Reference designator @refdes (-5 0) yes Model @model (30 40) yes Refdes Q Model PHOTO-NPN Template Q_@refdes %1 %2 %3 @model Opto Isolator optoisolator Opto Isolator Reference designator @refdes (-10 0) yes Model @model (30 40) yes Refdes U Model OPTO Template Q_@refdes %1 %2 %3 %4 @model BJT PNP-PHOTO PNP-PHOTO PNP Bipolar junction photo-transistor Reference designator @refdes (-5 0) yes Model @model (30 40) yes Refdes Q Model PNP-PHOTO Template Q_@refdes %1 %2 %3 @model FET J P JFET-P P-channel junction field effect transistor Reference designator @refdes (-5 5) yes Model @model (30 40) yes Refdes J Model JFET-P Template J_@refdes %1 %2 %3 @model FET J N JFET-N N Channel junction field effect transistor Reference designator @refdes (-5 5) yes Model @model (30 40) yes Refdes J Model JFET-N Template J_@refdes %1 %2 %3 @model UJT UJT Unijunction Transistor Reference designator @refdes (-10 5) yes Model @model (30 40) yes Refdes Q Model UJT Template Q_@refdes %1 %2 %3 @model BJT PNP PNP PNP Bipolar junction transistor Reference designator @refdes (-5 5) yes Model @model (30 40) yes Refdes Q Model PNP Template Q_@refdes %1 %2 %3 @model FET MOS N N-MOS N Channel MOSFET Reference designator @refdes (0 0) yes Model @model (50 40) yes Refdes M Model N-MOS Template M_@refdes %1 %2 %3 %4 @model FET MOS N DG DGN-MOS N Channel Dual Gate MOSFET Reference designator @refdes (0 0) yes Model @model (40 40) yes Refdes M Model N-MOS Dual Gate Template M_@refdes %1 %2 %3 %4 @model FET MOS P DG DGP-MOS P Channel Dual Gate MOSFET Reference designator @refdes (0 0) yes Model @model (40 40) yes Refdes M Model P-MOS Dual Gate Template M_@refdes %1 %2 %3 %4 @model FET MOS P P-MOS P Channel MOSFET Reference designator @refdes (0 0) yes Model @model (50 40) yes Refdes M Model P-MOS Gate Template M_@refdes %1 %2 %3 %4 @model OPAMP OPAMP Operational amplifier Reference designator @refdes (20 0) yes Model @model (25 60) yes Refdes U Model OPAMP Template G_@refdes %1 0 %2 %3 @model OPAMP+P OPAMPP Operational amplifier + power supply Reference designator @refdes (25 0) yes Model @model (25 60) yes Refdes U Model OPAMP Template X_@refdes %1 %2 %3 %4 %5 @model OPAMP+P+S OPAMPPS Operational amplifier + power + offset Reference designator @refdes (35 50) yes Model @model (25 0) yes Refdes U Model OPAMP Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model OPAMP+P+S+B OPAMPPSB Operational amplifier +power+offset+bias Reference designator @refdes (35 50) yes Model @model (25 0) yes Refdes U Model OPAMP Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model Gnd Ground Ground internal ground Test Clamp Clamp Test Clamp internal clamp type v ac_type m ac_db false Marker Marker Node marker internal marker Name ? Node name @Name (0 -1) no Valve Triode + Heating Triode Vacuum Tube Triode with heating Reference designator @refdes (15 -27) yes p 1 (34 -29) no g 2 (5 -2) no c 3 (62 30) no h1 4 (23 38) no h2 9 (33 38) no h3 5 (43 38) no Model @model (45 -27) no Refdes V Model Triode Type Template XV_@refdes %1 %2 %3 %4 %5 %6 @model Valve Triode Triode2 Vacuum Tube Triode Reference designator @refdes (15 -27) yes p 6 (34 -29) no g 7 (5 -2) no c 8 (62 30) no Model @model (45 -27) no Refdes V Model Triode Type Template XV_@refdes %1 %2 %3 @model Valve Pentode Pentode Vacuum Tube Pentode Reference designator @refdes (15 -30) yes p 7 (34 -34) no g1 2 (-5 8) no g2 9 (80 -2) no c 3 (62 35) no h1 4 (23 43) no h2 5 (43 43) no Model @model (55 -30) no Refdes V Model Pentode Type Template XV_@refdes %1 %2 %3 %4 %5 %6 @model VSIN VSIN Voltage source, sinusoidal Reference designator @refdes (15 10) yes Refdes V Offset 0.0 Amplitude 1.0 Frequency 1.0 DC 0.0 AC 0.0 Template V_@refdes %1 %2 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) VAC VSIN AC voltage source, sinusoidal Reference designator @refdes (15 10) yes AC Leyend AC (15 45) no Refdes V Offset 0.0 Amplitude 1.0 Frequency 1.0 DC 0.0 Template V_@refdes %1 %2 dc @dc ac 1.0 sin(@Offset @Amplitude @Frequency 0 0) CCVS CCVS Current Controlled Voltage source Reference designator @refdes (15 10) yes Controlling source @transresistance I ( @vcon ) (15 40) yes Refdes H Transresistance 1.0 VCON V1 Template H_@refdes %1 %2 V_@vcon @transresistance VCVS VCVS Voltage Controlled Voltage source Reference designator @refdes (15 10) yes Controlling voltage @gain V ( @ncp , @ncn ) (15 40) yes Refdes E Gain 1.0 NCP 0 NCN 0 Template E_@refdes %1 %2 @ncp @ncn @gain VCCS VCCS Voltage Controlled Current source Reference designator @refdes (15 10) yes Controlling voltage @transconductance V ( @ncp , @ncn ) (15 40) yes Refdes G Transconductance 1.0 NCP 0 NCN 0 Template G_@refdes %1 %2 @ncp @ncn @transconductance CCCS CCCS Current Controlled Current source Reference designator @refdes (15 10) yes Controlling source @gain I ( @vcon ) (15 40) yes Refdes F Gain 1.0 VCON V1 Template F_@refdes %1 %2 V_@vcon @gain ISIN ISIN Current source, sinusoidal Reference designator @refdes (15 10) yes Refdes I Offset 0.0 Amplitude 1.0 Frequency 1.0 DC 0.0 AC 0.0 Template I_@refdes %1 %2 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) VPULSE VPULSE Voltage source, pulse Reference designator @refdes (15 10) yes Refdes V DC 0.0 AC 0.0 v1 0.0 v2 0.0 td 0.0 tr 0.0 tf 0.0 pw 0.0 per 0.0 Template V_@refdes %1 %2 dc @dc ac @ac PULSE @v1 @v2 @td @tr @tf @pw @per VDC VDC Voltage source, direct current Reference designator @refdes (25 10) yes Refdes V DC 1.0 Template V_@refdes %1 %2 dc @DC Module Port-R MPR Node marker internal marker Name ? Node name @Name (10 5) no Module Port-L MPL Node marker internal marker Name ? Node name @Name (-45 5) no Module Port-B MPB Node marker internal marker Name ? Node name @Name (10 5) no Pushbutton pushbutton pushbutton Switch Reference designator @refdes (5 -20) yes Refdes SW Model Push-SW Template SW_@refdes %1 %2 @model Switch 1P1T switch Switch 1P1T Reference designator @refdes (5 -20) yes Refdes SW Model Switch Template SW_@refdes %1 %2 @model Switch 1P2T switch2 Switch 1P2T Reference designator @refdes (5 -20) yes Refdes SW Model Switch 1P2T Template SW_@refdes %1 %2 %3 @model Relay 1P1T relay1p1t Relay 1P1T Reference designator @refdes (5 -25) yes Refdes RL Model Relay 1P1T Template RL_@refdes %1 %2 %3 %4 @model Switch switchyswitch voltage controlled resistor (2 states) Reference designator @refdes (5 -25) yes Refdes S VT 0.0 VH 0.0 RON 1.0 ROFF 100G Template @refdes %1 %2 %3 %4 M_@refdes \n.model M_@refdes sw(VT=@vt VH=@vh RON=@ron ROFF=@roff) Fuse fuse Fuse Reference designator @refdes (10 -10) yes A @res (10 25) yes Refdes F res 1A Template F_@refdes %1 %2 @res AC Power 110V power110 AC Power 110V Reference designator @refdes (10 -20) yes Frequency 60 Hz (30 -10) no V 110 V (30 -25) no Refdes V Offset 0.0 Amplitude 110.0 Frequency 60.0 DC 0.0 AC 0.0 Template V_@refdes %1 %2 %3 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) AC Power 220V power220 AC Power 220V Reference designator @refdes (10 -20) yes Frequency 50 Hz (30 -10) yes V 220 V (30 -25) yes Refdes V Offset 0.0 Amplitude 220.0 Frequency 50.0 DC 0.0 AC 0.0 Template V_@refdes %1 %2 %3 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) Diode Bridge bridge-d diode bridge Reference designator @refdes (-10 -15) yes Model @model (30 40) yes Refdes D Model Diode Bridge Template X_@refdes %1 %2 %3 %4 @model Thyristor thyristor Thyristor Reference designator @refdes (-22 5) yes Model @model (23 38) yes Refdes TH Model Thyristor Template TH_@refdes %1 %2 %3 thyristor Triac triac Triac Reference designator @refdes (-22 -3) yes Model @model (23 28) yes Refdes TH Model Triac Template TH_@refdes %1 %2 %3 triac IGBT-NPN IGBT-NPN Insulated gate Bipolar Transistor,NPN Reference designator @refdes (-5 0) yes Model @model (30 40) yes Refdes Q Model IGBT-NPN Template Q_@refdes %1 %2 %3 npn IGBT-PNP IGBT-PNP Insulated gate Bipolar Transitor,PNP Reference designator @refdes (-5 0) yes Model @model (30 40) yes Refdes Q Model IGBT-PNP Template Q_@refdes %1 %2 %3 pnp Thyristor GTO GTO Gate Turn-Off Thyristor Reference designator @refdes (-30 7) yes Model @model (25 35) yes Refdes GTO Model GTO Template GTO_@refdes %1 %2 %3 Lamp lamp Lamp Reference designator @refdes (10 -20) yes Voltage 12 V (30 -25) yes Refdes L Voltage V Template L_@refdes %1 %2 Diac diac Diac Reference designator @refdes (-15 -5) yes Model @model (20 30) yes Refdes D Model Diac Template D_@refdes %1 %2 @model PMT 12 Stage PMT-12 12 Stage Photomultiplier Reference designator @refdes (20 -20) yes 11 11 (-15 -15) no 10 10 (17 10) no 9 9 (17 30) no 8 8 (17 50) no 7 7 (17 70) no 6 6 (17 90) no 5 5 (17 110) no 4 4 (17 130) no 3 3 (17 150) no 2 2 (17 170) no 1 1 (17 190) no 13 13 (17 210) no 14 14 (17 230) no Refdes V Model PMT Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 @model PMT 10 Stage PMT-10 10 Stage Photomultiplier Reference designator @refdes (20 -20) yes 10 10 (-15 -15) no 9 9 (17 10) no 8 8 (17 30) no 7 7 (17 50) no 6 6 (17 70) no 5 5 (17 90) no 4 4 (17 110) no 3 3 (17 130) no 2 2 (17 150) no 1 1 (17 170) no 11 11 (17 190) no Refdes V Model PMT Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 @model Motor Stepper motor-stepper Motor Stepper 4 phases Reference designator @refdes (30 35) yes Refdes M Template M_@refdes %1 %2 %3 %4 %5 %6 Motor Stepper-2 motor-stepper2 Motor Stepper 2 phases Reference designator @refdes (30 35) yes Refdes M Template M_@refdes %1 %2 %3 %4 CRT BW CRT-BW Black and White Cathode Ray Tube Reference designator @refdes (10 -10) yes 3 3 (-12 10) no 4 4 (-12 20) no 2 2 (12 45) no 1 1 (22 45) no 6 6 (32 45) no 7 7 (42 45) no Model @model (60 -25) no Refdes V Model CRT BW Template XV_@refdes %1 %2 %3 %4 %5 %6 @model Neon neon Neon Lamp Reference designator @refdes (10 -20) yes V 90 V (30 -25) yes Refdes L Template L_@refdes %1 %2 Microphone microphone Microphone Reference designator @refdes (10 -20) yes Refdes M Template L_@refdes %1 %2 Earphone-M earphone-m Earphone (Mono) Reference designator @refdes (10 -20) yes Refdes E Template L_@refdes %1 %2 Earphone-S earphone-s Earphone (Stereo) Reference designator @refdes (10 -20) yes Refdes E Template L_@refdes %1 %2 %3 oregano-0.84.41/data/libraries/opamplib.oreglib0000644000175000017500000026053413413640652020405 0ustar rubenruben Opamps OpAmp Library 0.26 Hector Bellesi / Dietmar Eberhard, Dietmar.Eberhard@ipm.fhg.de 19-Aug-2001 LF353b (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (-20 30 5) (-20 10 6) (60 20 7) LF347c (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (-20 30 10) (-20 10 9) (60 20 8) LF347d (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (-20 30 12) (-20 10 13) (60 20 14) LM339b (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (-20 30 7) (-20 10 6) (60 20 1) LM339c (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (-20 30 9) (-20 10 8) (60 20 14) LM339d (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (-20 30 11) (-20 10 10) (60 20 13) LF353a (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (20 10)(20 -10) (20 30)(20 50) (-20 30 3) (-20 10 2) (20 -10 8) (20 50 4) (60 20 1) LF347a (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (20 10)(20 -10) (20 30)(20 50) (-20 30 3) (-20 10 2) (20 -10 4) (20 50 11) (60 20 1) LM339a (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (20 10)(20 -10) (20 30)(20 50) (-20 30 5) (-20 10 4) (20 -10 3) (20 50 12) (60 20 2) LM741 (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (10 5)(10 -10) (20 30)(20 50) (10 35)(10 50) (30 25)(30 50) (-20 30 3) (-20 10 2) (10 -10 7) (10 50 4) (20 50 1) (30 50 5) (60 20 6) OP77 (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (10 5)(10 -10) (20 30)(20 50) (10 35)(10 50) (30 25)(30 50) (-20 30 3) (-20 10 2) (10 -10 7) (10 50 4) (20 50 1) (30 50 8) (60 20 6) LF356 (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (10 5)(10 -10) (20 10)(20 -10) (10 35)(10 50) (30 15)(30 -10) (-20 30 3) (-20 10 2) (10 -10 7) (20 -10 1) (30 -10 5) (10 50 4) (60 20 6) CA3140 (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (10 5)(10 -10) (20 10)(20 -10) (20 30)(20 50) (10 35)(10 50) (30 25)(30 50) (-20 30 3) (-20 10 2) (10 -10 7) (20 -10 8) (10 50 4) (20 50 1) (30 50 5) (60 20 6) LM318 (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (10 5)(10 -10) (20 10)(20 -10) (20 30)(20 50) (10 35)(10 50) (30 25)(30 50) (-20 30 3) (-20 10 2) (10 -10 8) (20 -10 7) (10 50 4) (20 50 1) (30 50 5) (60 20 6) LM311 (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (10 5)(10 -10) (20 10)(20 -10) (20 30)(20 50) (10 35)(10 50) (30 25)(30 50) (-20 30 3) (-20 10 2) (10 -10 8) (20 -10 5) (10 50 4) (20 50 1) (30 50 6) (60 20 7) CA3130 (0 0)(0 40)(40 20)(0 0) (-20 10)(0 10) (-20 30)(0 30) (40 20)(60 20) (10 5)(10 -10) (20 10)(20 -10) (20 30)(20 50) (10 35)(10 50) (30 25)(30 50) (-20 30 3) (-20 10 2) (10 -10 7) (20 -10 4) (10 50 8) (20 50 1) (30 50 5) (60 20 6) U_NonLin (0 0)(0 40)(30 40)(30 0)(0 0) (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) (30 30)(22.5 30)(22.5 25) (22.5 15)(22.5 10)(30 10) (22.5 17.5)(22.5 22.5)(21 20) (24 20)(22.5 22.5) (-10 10)(0 10) (-10 30)(0 30) (30 10)(40 10) (30 30)(40 30) (5 30)(10 30) (5 10)(10 10) (7.5 7.5)(7.5 12.5) (40 10) (40 30) (-10 10) (-10 30) MULT (0 0)(25 15)(0 30)(0 0) (0 50)(25 65)(0 80)(0 50) (25 15)(30 15)(30 30)(25 30)(20 35)(20 45) (25 50)(35 50)(40 45)(40 35)(35 30)(30 30) (30 50)(30 65)(25 65) (25 35)(35 45) (35 35)(25 45) (3 10)(9 10) (6 7)(6 13) (3 20)(9 20) (3 60)(9 60) (6 57)(6 63) (3 70)(9 70) (-10 10)(0 10) (-10 20)(0 20) (-10 60)(0 60) (-10 70)(0 70) (40 40)(44 40)(44 38)(48 40) (44 42)(44 40)(50 40) (50 40) (-10 10) (-10 20) (-10 60) (-10 70) OP77 OP77 Precision Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 7 (3 0) no V- 4 (4 50) no out 6 (46 20) no Vo+ 1 (14 50) no Vo- 8 (24 50) no Gain 5000 V/mV SR 0.3 V/us CMRR 0.1 uV/V Rin 45 Mohm Rout 60 ohm PSRR 0.7 uV/V Vos 45 uV Refdes U Model OP77 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model U=f(U) U_NonLin Voltage controlled nonlin voltage source Reference designator @refdes (10 -5) yes Function designator U=@func (0 55) yes Refdes B Func sin Template B_@refdes %1 %2 V= @func (V( %3 , %4 )) IdealMult MULT Ideal multiplier Reference designator @refdes (20 5) yes Refdes UMULT Template B_@refdes %1 0 V=V( %2 , %3 )*V( %4 , %5 ) OP37 OP77 Fast Precision Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 7 (3 0) no V- 4 (4 50) no out 6 (46 20) no Vo+ 1 (14 50) no Vo- 8 (24 50) no Gain 1500 V/mV SR 17 V/us CMRR 120 dB Rin 2 Gohm Rout 70 ohm PSRR 2 uV/V Vos 30 uV Refdes U Model OP37 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model LF356 LF356 JFET Input Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 7 (3 0) no V- 4 (4 50) no out 6 (46 20) no Vo+ 1 (14 0) no Vo- 5 (24 0) no Gain 200 V/mV SR 12 V/us CMRR 100 dB Rin 1 Tohm Rout 150 ohm PSRR 100 dB Vos 3 mV Refdes U Model LF356 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model LF357 LF356 Fast JFET Input Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 7 (3 0) no V- 4 (4 50) no out 6 (46 20) no Vo+ 1 (14 0) no Vo- 5 (24 0) no Gain 200 V/mV SR 50 V/us CMRR 100 dB Rin 1 Tohm Rout 150 ohm PSRR 100 dB Vos 3 mV Refdes U Model LF357 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model LM318 LM318 Fast Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 7 (13 0) no cmp 8 (3 0) no V- 4 (4 50) no out 6 (46 20) no Vo+ 1 (14 50) no Vo- 5 (24 50) no Gain 200 V/mV SR 50 V/us CMRR 100 dB Rin 3 Mohm Rout 150 ohm PSRR 80 dB Vos 4 mV Refdes U Model LM318 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model LM741 LM741 General Purpose Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 7 (3 0) no V- 4 (4 50) no out 6 (46 20) no Vo+ 1 (14 50) no Vo- 5 (24 50) no Gain 200 V/mV SR 0.5 V/us CMRR 90 dB Rin 2 Mohm Rout 75 ohm PSRR 96 dB Vos 2 mV Refdes U Model LM741 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model LF353a LF353a Dual JFET Input Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 8 (12 0) no V- 4 (12 50) no out 1 (46 20) no Gain 100 V/mV SR 13 V/us CMRR 100 dB Rin 1 Tohm Rout 150 ohm PSRR 100 dB Vos 5 mV Refdes U Model LF353a Template X_@refdes %1 %2 %3 %4 %5 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model LF353b LF353b Dual JFET Input Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 6 (-12 10) no - (2 15) no in+ 5 (-12 30) no + (2 35) no out 7 (46 20) no Gain 100 V/mV SR 13 V/us CMRR 100 dB Rin 1 Tohm Rout 150 ohm PSRR 100 dB Vos 5 mV Refdes U Model LF353b Template X_@refdes %1 %2 %3 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model LF347a LF347a Quad JFET Input Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 4 (12 0) no V- 11 (9 50) no out 1 (46 20) no Gain 100 V/mV SR 13 V/us CMRR 100 dB Rin 1 Tohm Rout 150 ohm PSRR 100 dB Vos 5 mV Refdes U Model LF347a Template X_@refdes %1 %2 %3 %4 %5 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model LF347b LF353b Quad JFET Input Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 6 (-12 10) no - (2 15) no in+ 5 (-12 30) no + (2 35) no out 7 (46 20) no Gain 100 V/mV SR 13 V/us CMRR 100 dB Rin 1 Tohm Rout 150 ohm PSRR 100 dB Vos 5 mV Refdes U Model LF347b Template X_@refdes %1 %2 %3 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model LF347c LF347c Quad JFET Input Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 9 (-12 10) no - (2 15) no in+ 10 (-17 30) no + (2 35) no out 8 (46 20) no Gain 100 V/mV SR 13 V/us CMRR 100 dB Rin 1 Tohm Rout 150 ohm PSRR 100 dB Vos 5 mV Refdes U Model LF347c Template X_@refdes %1 %2 %3 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model LF347d LF347d Quad JFET Input Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 13 (-17 10) no - (2 15) no in+ 12 (-17 30) no + (2 35) no out 14 (46 20) no Gain 100 V/mV SR 13 V/us CMRR 100 dB Rin 1 Tohm Rout 150 ohm PSRR 100 dB Vos 5 mV Refdes U Model LF347d Template X_@refdes %1 %2 %3 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model LM311 LM311 Comparator Reference designator @refdes (35 35) yes Model @model (35 0) no in- 3 (-12 10) no - (2 15) no in+ 2 (-12 30) no + (2 35) no V+ 8 (3 0) no Vo+ 5 (13 0) no V- 4 (4 50) no out 7 (46 20) no gnd 1 (14 50) no Vo- 6 (24 50) no Gain 200 V/mV RT 200 ns Iin 100 nA Vos 2 mV Refdes U Model LM311 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @Vos @Gain @Iin @RT @model LM393a LF353a Dual Comparators Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 8 (12 0) no V- 4 (12 50) no out 1 (46 20) no Gain 200 V/mV RT 1.3 us Iin 25 nA Vos 1 mV Refdes U Model LM393a Template X_@refdes %1 %2 %3 %4 %5 @Vos @Gain @Iin @RT @model LM393b LF353b Dual Comparators Reference designator @refdes (35 35) yes Model @model (35 0) no in- 6 (-12 10) no - (2 15) no in+ 5 (-12 30) no + (2 35) no out 7 (46 20) no Gain 200 V/mV RT 1.3 us Iin 25 nA Vos 1 mV Refdes U Model LF393b Template X_@refdes %1 %2 %3 @Vos @Gain @Iin @RT @model LM339a LM339a Quad Low Power Compatators Reference designator @refdes (35 35) yes Model @model (35 0) no in- 4 (-12 10) no - (2 15) no in+ 5 (-12 30) no + (2 35) no V+ 3 (12 0) no V- 12 (9 50) no out 2 (46 20) no Gain 200 V/mV RT 1.3 us Iin 25 nA Vos 2 mV Refdes U Model LM339a Template X_@refdes %1 %2 %3 %4 %5 @Vos @Gain @Iin @RT @model LM339b LM339b Quad Low Power Compatators Reference designator @refdes (35 35) yes Model @model (35 0) no in- 6 (-12 10) no - (2 15) no in+ 7 (-12 30) no + (2 35) no out 1 (46 20) no Gain 200 V/mV RT 1.3 us Iin 25 nA Vos 2 mV Refdes U Model LM339b Template X_@refdes %1 %2 %3 @Vos @Gain @Iin @RT @model LM339c LM339c Quad Low Power Compatators Reference designator @refdes (35 35) yes Model @model (35 0) no in- 8 (-12 10) no - (2 15) no in+ 9 (-12 30) no + (2 35) no out 14 (46 20) no Gain 200 V/mV RT 1.3 us Iin 25 nA Vos 2 mV Refdes U Model LM339c Template X_@refdes %1 %2 %3 @Vos @Gain @Iin @RT @model LM339d LM339d Quad Low Power Compatators Reference designator @refdes (35 35) yes Model @model (35 0) no in- 10 (-17 10) no - (2 15) no in+ 11 (-17 30) no + (2 35) no out 13 (46 20) no Gain 200 V/mV RT 1.3 us Iin 25 nA Vos 2 mV Refdes U Model LM339d Template X_@refdes %1 %2 %3 @Vos @Gain @Iin @RT @model LF311 LM311 FET Input Comparator Reference designator @refdes (35 35) yes Model @model (35 0) no in- 3 (-12 10) no - (2 15) no in+ 2 (-12 30) no + (2 35) no V+ 8 (3 0) no Vo+ 5 (13 0) no V- 4 (4 50) no out 7 (46 20) no gnd 1 (14 50) no Vo- 6 (24 50) no Gain 200 V/mV RT 200 ns Iin 20 pA Vos 1 mV Refdes U Model LF311 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @Vos @Gain @Iin @RT @model OPA128 CA3140 Low Bias Current Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 7 (3 0) no gnd 8 (13 0) no V- 4 (4 50) no out 6 (46 20) no Vo+ 1 (14 50) no Vo- 5 (24 50) no Gain 128 dB SR 3 V/us CMRR 118 dB Rin 10 Tohm Rout 100 ohm PSRR 120 dB Vos 140 uV Refdes U Model OPA128 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model CA3130 CA3130 MOSFET Input CMOS Output Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 7 (3 0) no V- 4 (13 0) no cmp 8 (4 50) no out 6 (46 20) no Vo+ 1 (14 50) no Vo- 5 (24 50) no Gain 110 dB SR 30 V/us CMRR 90 dB Rin 1.5 Tohm Rout 100 ohm PSRR 32 uV/V Vos 8 mV Refdes U Model CA3130 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model CA3140 CA3140 MOSFET Input Operational Amplifier Reference designator @refdes (35 35) yes Model @model (35 0) no in- 2 (-12 10) no - (2 15) no in+ 3 (-12 30) no + (2 35) no V+ 7 (3 0) no stb 8 (13 0) no V- 4 (4 50) no out 6 (46 20) no Vo+ 1 (14 50) no Vo- 5 (24 50) no Gain 100 dB SR 7 V/us CMRR 90 dB Rin 1.5 Tohm Rout 60 ohm PSRR 80 dB Vos 5 mV Refdes U Model CA3140 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model oregano-0.84.41/data/libraries/miscellaneous.oreglib0000644000175000017500000012132413413640652021436 0ustar rubenruben Miscellaneous Miscellaneous Library 0.21 Hector Bellesi 19-Aug-2001 5369 (20 -10)(60 -10)(60 40)(20 40)(20 -10) (0 0)(20 0) (0 30)(20 30) (40 -30)(40 -10) (40 40)(40 60) (60 0)(80 0) (60 30)(80 30) (0 0 5) (0 30 6) (40 -30 8) (40 60 2) (80 0 1) (80 30 7) RD104 (20 -10)(60 -10)(60 40)(20 40)(20 -10) (0 0)(20 0) (0 30)(20 30) (40 -30)(40 -10) (40 40)(40 60) (60 0)(80 0) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (0 0 5) (0 30 6) (40 -30 8) (40 60 3) (80 0 7) (80 10 1) (80 20 2) (80 30 4) ICL7660 (0 0)(50 0)(50 50)(0 50)(0 0) (-20 10)(0 10) (-20 40)(0 40) (20 -20)(20 0) (20 50)(20 70) (50 10)(70 10) (50 30)(70 30) (50 40)(70 40) (-20 10 2) (-20 40 4) (20 -20 8) (20 70 3) (70 10 5) (70 30 7) (70 40 6) MC14499 (0 0)(40 0)(40 140)(0 140)(0 0) (-20 20)(0 20) (-20 40)(0 40) (-20 60)(0 60) (-20 80)(-6 80) (20 -20)(20 0) (20 140)(20 160) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (40 100)(60 100) (40 110)(60 110) (40 120)(60 120) (40 130)(60 130) (-6 77)(0 83) (-20 20 5) (-20 40 13) (-20 60 6) (-20 80 12) (20 -20 18) (20 160 9) (60 10 4) (60 20 3) (60 30 2) (60 40 1) (60 50 17) (60 60 16) (60 70 15) (60 80 14) (60 100 11) (60 110 10) (60 120 8) (60 130 7) PAL16L8 (0 0)(40 0)(40 110)(0 110)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (20 -20)(20 0) (20 110)(20 130) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (40 90)(60 90) (-20 10 1) (-20 20 2) (-20 30 3) (-20 40 4) (-20 50 5) (-20 60 6) (-20 70 7) (-20 80 8) (-20 90 9) (-20 100 11) (20 -20 20) (20 130 10) (60 20 12) (60 30 13) (60 40 14) (60 50 15) (60 60 16) (60 70 17) (60 80 18) (60 90 19) MM5369AA 5369 Frequency Divisor Reference designator @refdes (0 -20) yes 5 5 (5 -1) no Xa (22 5) no 6 6 (5 29) no Xb (22 35) no 8 8 (30 -15) no vc (37 2) no 2 2 (30 55) no vs (37 39) no 1 1 (67 0) no Q (50 5) no 7 7 (67 30) no T (50 35) no Model @model (50 65) no Refdes U Model MM5369AA Template X_@refdes %1 %2 %3 %4 %5 %6 @model RD104 RD104 Frequency Divisor Reference designator @refdes (0 -20) yes 5 5 (5 0) no Xa (22 5) no 6 6 (5 30) no Xb (22 35) no 8 8 (30 -15) no vc (37 2) no 3 3 (30 55) no vs (37 39) no 7 7 (67 0) no Q (50 5) no 1 1 (67 10) no A (50 15) no 2 2 (67 20) no B (50 25) no 4 4 (67 30) no R (50 35) no Model @model (50 65) no Refdes U Model RD104 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model ICL7660 ICL7660 DC DC Converter Reference designator @refdes (-15 -10) yes 2 2 (-12 10) no c+ (2 15) no 4 4 (-12 40) no c- (2 45) no 8 8 (10 2) no vc (17 10) no 3 3 (10 62) no vs (17 50) no 5 5 (56 10) no Out (35 15) no 7 7 (56 30) no osc (35 35) no 6 6 (56 40) no LV (35 45) no Model @model (30 65) no Refdes U Model ICL7660 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model MC14499 MC14499 4 digits display serial interface Reference designator @refdes (-20 -10) yes 5 5 (-12 20) no D (2 25) no 13 13 (-17 40) no CK (2 45) no 6 6 (-12 60) no OSC (2 65) no 12 12 (-17 80) no ENB (2 85) no 18 18 (8 2) no vc (17 10) no 9 9 (10 152) no vs (17 140) no 4 4 (46 10) no a (35 15) no 3 3 (46 20) no b (35 25) no 2 2 (46 30) no c (35 35) no 1 1 (46 40) no d (35 45) no 17 17 (46 50) no e (35 55) no 16 16 (46 60) no f (35 65) no 15 15 (46 70) no g (35 75) no 14 14 (46 80) no dp (30 85) no 11 11 (46 100) no 1 (35 105) no 10 10 (46 110) no 2 (35 115) no 8 8 (46 120) no 3 (35 125) no 7 7 (46 130) no 4 (35 135) no Model @model (25 155) no Refdes U Model MC14499 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 @model PAL16L8 PAL16L8 Programmable Array Logic Reference designator @refdes (-20 -10) yes 1 1 (-12 10) no I0 (2 15) no 2 2 (-12 20) no I1 (2 25) no 3 3 (-12 30) no I2 (2 35) no 4 4 (-12 40) no I3 (2 45) no 5 5 (-12 50) no I4 (2 55) no 6 6 (-12 60) no I5 (2 65) no 7 7 (-12 70) no I6 (2 75) no 8 8 (-12 80) no I7 (2 85) no 9 9 (-12 90) no I8 (2 95) no 11 11 (-17 100) no I9 (2 105) no 20 20 (8 2) no vc (17 10) no 10 10 (8 125) no vs (17 110) no 12 12 (46 20) no O1 (27 25) no 13 13 (46 30) no IO2 (22 35) no 14 14 (46 40) no IO3 (22 45) no 15 15 (46 50) no IO4 (22 55) no 16 16 (46 60) no IO5 (22 65) no 17 17 (46 70) no IO6 (22 75) no 18 18 (46 80) no IO7 (22 85) no 19 19 (46 90) no O8 (27 95) no Model @model (25 125) no Refdes U Model 16L8 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model PAL16R8 PAL16L8 Programmable Array Logic Reference designator @refdes (-20 -10) yes 1 1 (-12 10) no ck (2 15) no 2 2 (-12 20) no I1 (2 25) no 3 3 (-12 30) no I2 (2 35) no 4 4 (-12 40) no I3 (2 45) no 5 5 (-12 50) no I4 (2 55) no 6 6 (-12 60) no I5 (2 65) no 7 7 (-12 70) no I6 (2 75) no 8 8 (-12 80) no I7 (2 85) no 9 9 (-12 90) no I8 (2 95) no 11 11 (-17 100) no od (2 105) no 20 20 (8 2) no vc (17 10) no 10 10 (8 125) no vs (17 110) no 12 12 (46 20) no O1 (27 25) no 13 13 (46 30) no O2 (27 35) no 14 14 (46 40) no O3 (27 45) no 15 15 (46 50) no O4 (27 55) no 16 16 (46 60) no O5 (27 65) no 17 17 (46 70) no O6 (27 75) no 18 18 (46 80) no O7 (27 85) no 19 19 (46 90) no O8 (27 95) no Model @model (25 125) no Refdes U Model 16R8 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model oregano-0.84.41/data/libraries/linear.oreglib0000644000175000017500000010032313413640652020041 0ustar rubenruben Linear Linear Library 0.2 Hector Bellesi 4-Aug-2001 555 (0 0)(40 0)(40 60)(0 60)(0 0) (-20 10)(0 10) (-20 30)(0 30) (-20 50)(0 50) (20 -20)(20 0) (30 -20)(30 0) (20 60)(20 80) (40 20)(60 20) (40 50)(60 50) (-20 10 7) (-20 30 6) (-20 50 2) (20 -20 4) (30 -20 8) (20 80 1) (60 20 3) (60 50 5) 78XX (0 0)(40 0)(40 30)(0 30)(0 0) (-20 10)(0 10) (40 10)(60 10) (20 30)(20 50) (-20 10 1) (60 10 3) (30 50 2) 79XX (0 0)(40 0)(40 30)(0 30)(0 0) (-20 10)(0 10) (40 10)(60 10) (20 30)(20 50) (-20 10 2) (60 10 3) (30 50 1) LM317 (0 0)(40 0)(40 30)(0 30)(0 0) (-20 10)(0 10) (40 10)(60 10) (20 30)(20 50) (-20 10 3) (60 10 2) (30 50 1) LM723 (0 0)(80 0)(80 70)(0 70)(0 0) (0 10)(40 30)(0 50) (20 -20)(20 20) (20 40)(20 90) (-20 20)(0 20) (-20 40)(0 40) (-20 60)(0 60) (40 -20)(40 40)(50 50)(40 60)(40 90) (40 55)(40 60)(45 60) (50 44)(50 56) (50 50)(60 50)(60 90) (40 30)(50 30) (50 24)(50 36) (60 -20)(60 20)(50 30)(60 40)(100 40) (60 35)(60 40)(55 40) (70 40)(70 50)(75 60)(65 60)(70 50) (70 60)(70 90) (62 45)(65 50)(75 50)(78 55) (-20 20 4) (-20 40 5) (-20 60 6) (20 -20 12) (40 -20 13) (60 -20 11) (100 40 10) (20 90 7) (40 90 3) (60 90 2) (70 90 9) LM567 (0 0)(60 0)(60 40)(0 40)(0 0) (-20 10)(0 10) (-20 20)(0 20) (60 10)(80 10) (60 20)(80 20) (10 40)(10 60) (30 40)(30 60) (50 40)(50 60) (30 -20)(30 0) (-20 10 3) (-20 10 1) (80 10 8) (80 20 7) (30 -20 4) (10 60 5) (30 60 6) (50 60 2) LM390 (0 0)(60 30)(0 60)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (60 30)(80 30) (10 5)(10 -20) (30 15)(30 -10) (50 25)(50 0) (10 55)(10 80) (20 50)(20 80) (30 45)(30 80) (40 40)(40 60) (50 35)(50 60) (-20 10 7) (-20 20 10) (-20 30 11) (-20 40 12) (-20 50 8) (80 30 13) (10 -20 14) (30 -10 1) (50 0 9) (10 80 3) (20 80 4) (30 80 5) (40 60 2) (50 60 6) LM555 555 555 timer Reference designator @refdes (-15 -10) yes 7 7 (-12 10) no D (2 15) no 6 6 (-12 30) no T (2 35) no 2 2 (-12 50) no G (2 55) no 4 4 (12 -2) no R (17 12) no 8 8 (22 -2) no V+ (27 12) no 3 3 (46 20) no Out (23 25) no 5 5 (46 50) no C (30 55) no 1 1 (13 75) no V- (17 60) no Model @model (25 75) no Refdes U Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model Model LM555 7805 78XX 5V Positive Regulator Reference designator @refdes (10 -18) yes 1 1 (-15 10) no IN (2 15) no 2 2 (12 45) no GND (7 29) no 3 3 (47 10) no OUT (17 15) no Model @model (5 -5) no Refdes U Model 7805 Template X_@refdes %1 %2 %3 @model 7905 79XX 5V Negative Regulator Reference designator @refdes (10 -18) yes 2 2 (-15 10) no IN (2 15) no 1 1 (12 45) no GND (7 29) no 3 3 (47 10) no OUT (17 15) no Model @model (5 -5) no Refdes U Model 7905 Template X_@refdes %1 %2 %3 @model LM317 LM317 Adjustable Positive Regulator Reference designator @refdes (10 -18) yes 3 3 (-15 10) no IN (2 15) no 1 1 (12 45) no ADJ (7 29) no 2 2 (47 10) no OUT (17 15) no Model @model (5 -5) no Refdes U Model LM317 Template X_@refdes %1 %2 %3 @model LM337 79XX Adjustable Negative Regulator Reference designator @refdes (10 -18) yes 2 2 (-15 10) no IN (2 15) no 1 1 (12 45) no ADJ (7 29) no 3 3 (47 10) no OUT (17 15) no Model @model (5 -5) no Refdes U Model LM337 Template X_@refdes %1 %2 %3 @model LM723 LM723 Adjustable Regulator Reference designator @refdes (-15 -5) yes 4 4 (-12 20) no - (1 25) no 5 5 (-12 40) no + (1 45) no 6 6 (-12 60) no Rf (1 65) no 12 12 (8 0) no + (12 10) no 13 13 (28 0) no c (32 10) no 11 11 (48 0) no Vc (48 10) no 10 10 (86 40) no Vo (68 40) no 7 7 (13 85) no - (13 70) no 3 3 (33 85) no cs (30 70) no 2 2 (52 85) no cl (52 70) no 9 9 (63 85) no z (65 70) no Model @model (75 -10) no Refdes U Model LM723 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 @model LM567 LM567 Tone Decoder Reference designator @refdes (10 -18) yes 3 3 (-12 10) no IN (2 15) no 1 1 (-12 20) no OF (2 25) no 5 5 (3 55) no TR (7 39) no 6 6 (23 55) no TC (27 39) no 2 2 (43 55) no LF (46 39) no 8 8 (67 10) no OUT (40 15) no 7 7 (67 20) no V- (47 25) no 4 4 (23 -1) no V+ (27 10) no Model @model (50 -10) no Refdes U Model LM567 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model LM390 LM390 1 W Audio Amplifier Reference designator @refdes (-20 -10) yes 7 7 (-12 10) no - (2 15) no 10 10 (-17 20) no 11 11 (-17 30) no gnd (2 35) no 12 12 (-17 40) no 8 8 (-12 50) no + (2 55) no 14 14 (-2 -2) no v+ (10 20) no 1 1 (22 2) no 9 9 (40 15) no 13 13 (66 30) no out (40 35) no 3 3 (3 75) no 4 4 (13 75) no gnd (15 44) no 5 5 (23 75) no 2 2 (33 55) no 6 6 (43 55) no Model @model (55 50) no Refdes U Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model Model LM390 oregano-0.84.41/data/libraries/ttl.oreglib0000644000175000017500000347512313413640652017412 0ustar rubenruben TTL Ttl Library 0.9 Hector Bellesi, laurablopez@hotmail.com 16-May-2001 NANDp (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (20 -20)(20 0) (20 60)(20 40) (56 20)(70 20) (50 17)(56 23) (-20 10) (-20 30) (20 -20) (20 60) (70 20) NAND (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (56 20)(70 20) (50 17)(56 23) (-20 10) (-20 30) (70 20) NORp (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-10 10)(4 10) (-10 30)(4 30) (10 -10)(10 0) (10 50)(10 40) (51 20)(55 20) (45 17)(51 23) (-10 10) (-10 30) (10 -10) (10 50) (55 20) NOR (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-10 10)(4 10) (-10 30)(4 30) (51 20)(55 20) (45 17)(51 23) (-10 10) (-10 30) (55 20) INVERp (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (20 -10)(20 10) (20 50)(20 30) (46 20)(60 20) (40 17)(46 23) (-20 20) (20 -10) (20 50) (60 20) BUFFERp (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (20 -10)(20 10) (20 50)(20 30) (40 20)(60 20) (-20 20) (20 -10) (20 50) (60 20) BUFTRI4-p (0 0)(0 40)(40 20)(0 0) (-10 20)(0 20) (20 -10)(20 10) (20 50)(20 36) (40 20)(50 20) (17 30)(23 36) (-10 20) (20 -10) (20 50) (50 20) BUFTRI4- (0 0)(0 40)(40 20)(0 0) (-10 20)(0 20) (20 50)(20 36) (40 20)(50 20) (17 30)(23 36) (-10 20) (20 50) (50 20) BUFTRI4p (0 0)(0 40)(40 20)(0 0) (-10 20)(0 20) (20 -10)(20 10) (20 50)(20 30) (40 20)(50 20) (-10 20) (20 -10) (20 50) (50 20) BUFTRI4 (0 0)(0 40)(40 20)(0 0) (-10 20)(0 20) (20 50)(20 30) (40 20)(50 20) (-10 20) (20 50) (50 20) INVER (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (46 20)(60 20) (40 17)(46 23) (-20 20) (60 20) BUFFER (0 0)(0 40)(40 20)(0 0) (-20 20)(0 20) (40 20)(60 20) (-20 20) (60 20) ANDp (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (20 -20)(20 0) (20 60)(20 40) (50 20)(70 20) (-20 10) (-20 30) (20 -20) (20 60) (70 20) AND (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 30)(0 30) (50 20)(70 20) (-20 10) (-20 30) (70 20) NAND3p (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (20 -20)(20 0) (20 60)(20 40) (56 20)(70 20) (50 17)(56 23) (-20 10) (-20 20) (-20 30) (20 -20) (20 60) (70 20) NAND3 (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (56 20)(70 20) (50 17)(56 23) (-10 10) (-10 20) (-10 30) (60 20) AND3p (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-10 10)(0 10) (-10 20)(0 20) (-10 30)(0 30) (20 -10)(20 0) (20 50)(20 40) (50 20)(60 20) (-10 10) (-10 20) (-10 30) (20 -10) (20 50) (60 20) AND3 (0 0)(0 40) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20) (30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20) (-10 10)(0 10) (-10 20)(0 20) (-10 30)(0 30) (50 20)(60 20) (-10 10) (-10 20) (-10 30) (60 20) NAND4p (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25) (40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25) (-10 10)(0 10) (-10 20)(0 20) (-10 30)(0 30) (-10 40)(0 40) (20 -10)(20 0) (20 60)(20 50) (71 25)(78 20)(90 20) (65 22)(71 28) (-10 10) (-10 20) (-10 30) (-10 40) (20 -10) (20 60) (90 20) NAND4 (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25) (40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25) (-10 10)(0 10) (-10 20)(0 20) (-10 30)(0 30) (-10 40)(0 40) (71 25)(78 20)(90 20) (65 22)(71 28) (-10 10) (-10 20) (-10 30) (-10 40) (90 20) AND4p (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25) (40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (20 -20)(20 0) (20 70)(20 50) (65 25)(78 20)(90 20) (-20 10) (-20 20) (-20 30) (-20 40) (20 -20) (20 70) (90 20) AND4 (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25) (40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (65 25)(78 20)(90 20) (-20 10) (-20 20) (-20 30) (-20 40) (90 20) NORE4 (0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50) (0 0)(15 0) (0 50)(15 50) (15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25) (15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25) (-10 10)(5 10) (-10 20)(8 20) (-10 30)(8 30) (-10 40)(5 40) (10 -10)(10 0) (10 50)(10 60) (20 -10)(20 0) (69 25)(75 20)(80 20) (63 22)(69 28) (-10 10) (-10 20) (-10 30) (-10 40) (10 -10) (20 -10) (10 60) (80 20) NORS4 (0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50) (0 0)(15 0) (0 50)(15 50) (15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25) (15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25) (-10 10)(5 10) (-10 20)(8 20) (-10 30)(8 30) (-10 40)(5 40) (10 -10)(10 0) (10 50)(10 60) (69 25)(75 20)(80 20) (63 22)(69 28) (-10 10) (-10 20) (-10 30) (-10 40) (10 -10) (10 60) (80 20) NOR3p (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-10 10)(4 10) (-10 20)(6 20) (-10 30)(4 30) (10 -10)(10 0) (10 50)(10 40) (51 20)(60 20) (45 17)(51 23) (-10 10) (-10 2) (-10 30) (10 -10) (10 50) (60 20) NOR3 (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-10 10)(4 10) (-10 20)(6 20) (-10 30)(4 30) (51 20)(60 20) (45 17)(51 23) (-10 10) (-10 20) (-10 30) (60 20) NAND8 (0 -20)(0 70) (0 0)(40 0) (0 50)(40 50) (40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25) (40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25) (-10 -10)(0 -10) (-10 0)(0 0) (-10 10)(0 10) (-10 20)(0 20) (-10 30)(0 30) (-10 40)(0 40) (-10 50)(0 50) (-10 60)(0 60) (20 -10)(20 0) (20 60)(20 50) (71 25)(78 20)(90 20) (65 22)(71 28) (-10 -10) (-10 0) (-10 10) (-10 20) (-10 30) (-10 40) (-10 50) (-10 60) (20 -10) (20 60) (90 20) NAND13 (0 -45)(0 85) (0 0)(30 0) (0 40)(30 40) (30 0)(35 1)(40 3)(45 6)(48 10)(50 20) (30 40)(35 39)(40 37)(45 34)(48 30)(50 20) (-20 -40)(0 -40) (-20 -30)(0 -30) (-20 -20)(0 -20) (-20 -10)(0 -10) (-20 0)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (20 -20)(20 0) (20 60)(20 40) (56 20)(70 20) (50 17)(56 23) (-20 -40) (-20 -30) (-20 -20) (-20 -10) (-20 0) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (20 -20) (20 60) (70 20) ORp (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 30)(4 30) (10 -20)(10 0) (10 60)(10 40) (45 20)(60 20) (-20 10) (-20 30) (10 -20) (10 60) (60 20) OR (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(4 10) (-20 30)(4 30) (45 20)(60 20) (-20 10) (-20 30) (60 20) EQ BCD10 (0 0)(0 110) (0 0)(40 0) (0 110)(40 110) (40 0)(40 110) (-10 20)(0 20) (-10 40)(0 40) (-10 60)(0 60) (-10 80)(0 80) (46 10)(60 10) (46 20)(60 20) (46 30)(60 30) (46 40)(60 40) (46 50)(60 50) (46 60)(60 60) (46 70)(60 70) (46 80)(60 80) (46 90)(60 90) (46 100)(60 100) (20 -10)(20 0) (20 120)(20 110) (40 7)(46 13) (40 17)(46 23) (40 27)(46 33) (40 37)(46 43) (40 47)(46 53) (40 57)(46 63) (40 67)(46 73) (40 77)(46 83) (40 87)(46 93) (40 97)(46 103) (-10 20) (-10 40) (-10 60) (-10 80) (20 -10) (20 120) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) (60 90) (60 100) BCD7 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-10 20)(0 20) (-10 30)(0 30) (-10 40)(0 40) (-10 50)(0 50) (-10 70)(0 70) (-10 80)(0 80) (46 10)(60 10) (46 20)(60 20) (46 30)(60 30) (46 40)(60 40) (46 50)(60 50) (46 60)(60 60) (46 70)(60 70) (46 80)(60 80) (20 -10)(20 0) (20 100)(20 90) (40 7)(46 13) (40 17)(46 23) (40 27)(46 33) (40 37)(46 43) (40 47)(46 53) (40 57)(46 63) (40 67)(46 73) (40 77)(46 83) (-10 20) (-10 30) (-10 40) (-10 50) (-10 70) (-10 80) (20 -10) (20 100) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) BCD7n (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(0 80) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (46 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (40 77)(46 83) (-20 20) (-20 30) (-20 40) (-20 50) (-20 70) (-20 80) (20 -20) (20 110) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) BCD7ns (0 0)(0 80) (0 0)(40 0) (0 80)(40 80) (40 0)(40 80) (-10 20)(0 20) (-10 30)(0 30) (-10 40)(0 40) (-10 50)(0 50) (-10 70)(-6 70) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (20 -10)(20 0) (20 90)(20 80) (-6 67)(0 73) (-10 20) (-10 30) (-10 40) (-10 50) (-10 70) (20 -10) (20 90) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) ANDOR2x2e (0 5)(15 5) (0 5)(0 35) (0 35)(15 35) (15 5)(20 6)(22 7)(25 9)(26 10)(29 15)(30 20) (15 35)(20 34)(22 33)(25 31)(26 30)(29 25)(30 20) (-10 10)(0 10) (-10 30)(0 30) (50 10)(50 25) (50 70)(50 55) (30 20)(35 20)(35 30)(44 30) (0 45)(15 45) (0 45)(0 75) (0 75)(15 75) (15 45)(20 46)(22 47)(25 49)(26 50)(29 55)(30 60) (15 75)(20 74)(22 73)(25 71)(26 70)(29 65)(30 60) (-10 50)(0 50) (-10 70)(0 70) (30 60)(35 60)(35 50)(44 50) (40 25)(50 25) (40 55)(50 55) (40 25)(44 30)(45 33)(46 40)(45 47)(44 50)(40 55) (50 25)(58 26)(65 28)(71 31)(75 34)(80 40) (50 55)(58 54)(65 52)(71 49)(75 46)(80 40) (86 40)(100 40) (80 37)(86 43) (-10 10) (-10 30) (-10 50) (-10 70) (50 10) (50 70) (100 40) ANDOR2x3 (0 5)(15 5) (0 5)(0 35) (0 35)(15 35) (15 5)(20 6)(22 7)(25 9)(26 10)(29 15)(30 20) (15 35)(20 34)(22 33)(25 31)(26 30)(29 25)(30 20) (-10 10)(0 10) (-10 20)(0 20) (-10 30)(0 30) (30 20)(35 20)(35 30)(44 30) (0 45)(15 45) (0 45)(0 75) (0 75)(15 75) (15 45)(20 46)(22 47)(25 49)(26 50)(29 55)(30 60) (15 75)(20 74)(22 73)(25 71)(26 70)(29 65)(30 60) (-10 50)(0 50) (-10 60)(0 60) (-10 70)(0 70) (30 60)(35 60)(35 50)(44 50) (40 25)(50 25) (40 55)(50 55) (40 25)(44 30)(45 33)(46 40)(45 47)(44 50)(40 55) (50 25)(58 26)(65 28)(71 31)(75 34)(80 40) (50 55)(58 54)(65 52)(71 49)(75 46)(80 40) (86 40)(100 40) (80 37)(86 43) (-10 10) (-10 20) (-10 30) (-10 50) (-10 60) (-10 70) (100 40) ANDOR2x3x4 (0 -5)(15 -5) (0 -5)(0 25) (0 25)(15 25) (15 -5)(20 -4)(23 -3)(25 -2)(27 0)(29 5)(30 10) (15 25)(20 24)(23 23)(25 22)(27 20)(29 15)(30 10) (-10 0)(0 0) (-10 10)(0 10) (-10 20)(0 20) (30 10)(35 10)(35 45)(49 45) (0 35)(15 35) (0 35)(0 55) (0 55)(15 55) (15 35)(20 36)(22 37)(24 40)(25 45) (15 55)(20 54)(22 53)(24 50)(25 45) (-10 40)(0 40) (-10 50)(0 50) (25 45)(30 45)(30 55)(53 55) (0 65)(15 65) (0 65)(0 85) (0 85)(15 85) (15 65)(20 66)(22 67)(24 70)(25 75) (15 85)(20 84)(22 83)(24 80)(25 75) (-10 70)(0 70) (-10 80)(0 80) (25 75)(30 75)(30 65)(53 65) (0 95)(15 95) (0 95)(0 125) (0 125)(15 125) (15 95)(20 96)(23 97)(25 98)(27 100)(29 105)(30 110) (15 125)(20 124)(23 123)(25 122)(27 120)(29 115)(30 110) (-10 100)(0 100) (-10 110)(0 110) (-10 120)(0 120) (30 110)(35 110)(35 75)(49 75) (45 40)(55 40) (45 80)(55 80) (55 40)(65 41)(70 42)(75 44)(81 47)(85 50)(90 54)(95 60) (55 80)(65 79)(70 78)(75 76)(81 73)(85 70)(90 66)(95 60) (45 40)(49 45)(52 50)(53 55)(54 60)(53 65)(52 70)(49 75)(45 80) (101 60)(110 60) (95 57)(101 63) (50 40)(50 20) (50 80)(50 100) (-10 0) (-10 10) (-10 20) (-10 40) (-10 50) (-10 70) (-10 80) (-10 100) (-10 110) (-10 120) (110 60) (50 20) (50 100) ANDOR2x4 (0 5)(0 45) (0 5)(20 5) (0 45)(20 45) (20 5)(25 6)(31 8)(35 12)(37 15)(39 20)(40 25) (20 45)(25 44)(31 42)(35 38)(37 35)(39 30)(40 25) (-10 10)(0 10) (-10 20)(0 20) (-10 30)(0 30) (-10 40)(0 40) (-10 60)(0 60) (-10 70)(0 70) (-10 80)(0 80) (-10 90)(0 90) (40 25)(50 25)(50 45)(61 45) (0 55)(0 95) (0 55)(20 55) (0 95)(20 95) (20 55)(25 56)(31 58)(35 62)(37 65)(39 70)(40 75) (20 95)(25 94)(31 92)(35 88)(37 85)(39 80)(40 75) (40 75)(50 75)(50 55)(61 55) (55 35)(65 35) (55 65)(65 65) (65 35)(75 36)(80 37)(85 39)(91 43)(95 47)(97 50) (65 65)(75 64)(80 63)(85 61)(91 57)(95 53)(97 50) (55 35)(59 40)(60 42)(61 45)(62 50)(61 55)(60 58)(59 65)(55 65) (103 50)(110 50) (97 47)(103 53) (65 35)(65 20) (65 65)(65 80) (-10 10) (-10 20) (-10 30) (-10 40) (-10 60) (-10 70) (-10 80) (-10 90) (65 20) (65 80) (110 50) JKFFc (20 -10)(60 -10)(60 50)(20 50)(20 -10) (0 0)(20 0) (0 20)(14 20) (0 40)(20 40) (40 -30)(40 -16) (40 50)(40 70) (60 0)(80 0) (66 40)(80 40) (14 17)(20 23) (37 -16)(43 -10) (60 37)(66 43) (0 0) (0 20) (0 40) (40 -30) (40 70) (80 0) (80 40) DFFcs (20 -10)(60 -10)(60 50)(20 50)(20 -10) (0 0)(20 0) (0 20)(20 20) (0 40)(20 40) (40 -30)(40 -16) (40 56)(40 70) (60 0)(80 0) (66 40)(80 40) (37 50)(43 56) (37 -16)(43 -10) (60 37)(66 43) (0 0) (0 20) (0 40) (40 -30) (40 70) (80 0) (80 40) 4DL (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(0 80) (40 10)(60 10) (46 20)(60 20) (40 30)(60 30) (46 40)(60 40) (40 50)(60 50) (46 60)(60 60) (40 70)(60 70) (46 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (40 17)(46 23) (40 37)(46 43) (40 57)(46 63) (40 77)(46 83) (-20 20) (-20 30) (-20 40) (-20 50) (-20 70) (-20 80) (20 -20) (20 110) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) 4DLs (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(0 80) (40 10)(60 10) (40 30)(60 30) (40 50)(60 50) (40 70)(60 70) (20 -20)(20 0) (20 110)(20 90) (-20 20) (-20 30) (-20 40) (-20 50) (-20 70) (-20 80) (20 -20) (20 110) (60 10) (60 30) (60 50) (60 70) JKFFcs (20 -10)(60 -10)(60 50)(20 50)(20 -10) (0 0)(20 0) (0 20)(14 20) (0 40)(20 40) (40 -30)(40 -16) (40 56)(40 70) (60 0)(80 0) (66 20)(80 20) (60 40)(80 40) (14 17)(20 23) (37 -16)(43 -10) (37 50)(43 56) (60 17)(66 23) (0 0) (0 20) (0 40) (40 -30) (40 70) (80 0) (80 20) (80 40) 4ADD (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-10 20)(0 20) (-10 30)(0 30) (-10 40)(0 40) (-10 50)(0 50) (-10 70)(0 70) (-10 80)(0 80) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -10)(20 0) (20 100)(20 90) (-10 20) (-10 30) (-10 40) (-10 50) (-10 70) (-10 80) (20 -10) (20 100) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) XORp (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (10 -20)(10 0) (10 60)(10 40) (45 20)(60 20) (-20 10) (-20 30) (10 -20) (10 60) (60 20) XOR (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (45 20)(60 20) (-20 10) (-20 30) (60 20) SFR8 (20 -10)(60 -10)(60 50)(20 50)(20 -10) (0 0)(20 0) (0 20)(14 20) (0 40)(20 40) (40 -30)(40 -10) (40 50)(40 70) (60 0)(80 0) (66 40)(80 40) (14 17)(20 23) (60 37)(66 43) (0 0) (0 20) (0 40) (40 -30) (40 70) (80 0) (80 40) CTR4 (0 0)(80 0)(80 60)(0 60)(0 0) (0 30)(-20 30) (80 30)(100 30) (10 0)(10 -20) (30 0)(30 -20) (50 0)(50 -20) (70 0)(70 -20) (10 60)(10 80) (30 60)(30 80) (50 66)(50 80) (70 66)(70 80) (47 60)(53 66) (67 60)(73 66) (-20 30) (100 30) (10 -20) (30 -20) (50 -20) (70 -20) (10 80) (30 80) (50 80) (70 80) SFR4 (0 0)(100 0)(100 80)(0 80)(0 0) (-20 20)(0 20) (-20 40)(-6 40) (-20 60)(-6 60) (100 20)(120 20) (100 40)(120 40) (100 60)(120 60) (20 -20)(20 0) (40 -20)(40 0) (60 -20)(60 0) (80 -20)(80 0) (20 80)(20 100) (40 80)(40 100) (60 80)(60 100) (80 80)(80 100) (-6 37)(0 43) (-6 57)(0 63) (-20 20) (-20 40) (-20 60) (20 -20) (40 -20) (60 -20) (80 -20) (120 20) (120 40) (120 60) (20 100) (40 100) (60 100) (80 100) MONO1 (0 0)(40 0)(40 140)(0 140)(0 0) (-20 10)(0 10) (-20 40)(0 40) (-20 80)(0 80) (-20 100)(-6 100) (-20 120)(-6 120) (40 10)(60 10) (40 30)(60 30) (46 50)(60 50) (40 70)(60 70) (40 90)(60 90) (40 110)(60 110) (40 130)(60 130) (-6 97)(0 103) (-6 117)(0 123) (40 47)(46 53) (-20 10) (-20 40) (-20 80) (-20 100) (-20 120) (60 10) (60 30) (60 50) (60 70) (60 90) (60 110) (60 130) MONO2 (0 0)(60 0)(60 60)(0 60)(0 0) (-20 10)(0 10) (-20 30)(-6 30) (-20 50)(0 50) (60 10)(80 10) (66 30)(80 30) (60 50)(80 50) (30 -20)(30 0) (30 66)(30 80) (-6 27)(0 33) (60 27)(66 33) (27 60)(33 66) (-20 10) (-20 30) (-20 50) (80 10) (80 30) (80 50) (30 -20) (30 80) 3to8L (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 60)(0 60) (-20 70)(-6 70) (-20 80)(-6 80) (46 10)(60 10) (46 20)(60 20) (46 30)(60 30) (46 40)(60 40) (46 50)(60 50) (46 60)(60 60) (46 70)(60 70) (46 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (40 7)(46 13) (40 17)(46 23) (40 27)(46 33) (40 37)(46 43) (40 47)(46 53) (40 57)(46 63) (40 67)(46 73) (40 77)(46 83) (-6 67)(0 73) (-6 77)(0 83) (-20 10) (-20 20) (-20 30) (-20 60) (-20 70) (-20 80) (20 -20) (20 110) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) 3to4L (0 0)(0 50) (0 0)(40 0) (0 50)(40 50) (40 0)(40 50) (-20 10)(0 10) (-20 30)(0 30) (46 10)(60 10) (46 20)(60 20) (46 30)(60 30) (46 40)(60 40) (20 -20)(20 0) (20 70)(20 56) (40 7)(46 13) (40 17)(46 23) (40 27)(46 33) (40 37)(46 43) (17 50)(23 56) (-20 10) (-20 30) (20 -20) (20 70) (60 10) (60 20) (60 30) (60 40) 10to4E (0 0)(0 100) (0 0)(40 0) (0 100)(40 100) (40 0)(40 100) (60 20)(46 20) (60 40)(46 40) (60 60)(46 60) (60 80)(46 80) (-20 10)(-6 10) (-20 20)(-6 20) (-20 30)(-6 30) (-20 40)(-6 40) (-20 50)(-6 50) (-20 60)(-6 60) (-20 70)(-6 70) (-20 80)(-6 80) (-20 90)(-6 90) (20 -20)(20 0) (20 120)(20 100) (-6 7)(0 13) (-6 17)(0 23) (-6 27)(0 33) (-6 37)(0 43) (-6 47)(0 53) (-6 57)(0 63) (-6 67)(0 73) (-6 77)(0 83) (-6 87)(0 93) (40 17)(46 23) (40 37)(46 43) (40 57)(46 63) (40 77)(46 83) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 90) (20 -20) (20 120) (60 20) (60 40) (60 60) (60 80) 8to3E (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (60 10)(46 10) (60 20)(46 20) (60 30)(46 30) (60 60)(46 60) (60 70)(46 70) (60 80)(46 80) (-20 10)(-6 10) (-20 20)(-6 20) (-20 30)(-6 30) (-20 40)(-6 40) (-20 50)(-6 50) (-20 60)(-6 60) (-20 70)(-6 70) (-20 80)(-6 80) (20 -20)(20 0) (20 110)(20 90) (-6 7)(0 13) (-6 17)(0 23) (-6 27)(0 33) (-6 37)(0 43) (-6 47)(0 53) (-6 57)(0 63) (-6 67)(0 73) (-6 77)(0 83) (40 7)(46 13) (40 17)(46 23) (40 27)(46 33) (40 57)(46 63) (40 67)(46 73) (40 77)(46 83) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (20 -20) (20 110) (60 10) (60 20) (60 30) (60 60) (60 70) (60 80) 8to1M (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 60)(40 60) (60 70)(46 70) (60 80)(46 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (20 -20)(20 0) (20 110)(20 90) (40 67)(46 73) (40 77)(46 83) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (20 -20) (20 110) (60 10) (60 20) (60 30) (60 60) (60 70) (60 80) 2x4M (0 0)(0 100) (0 0)(40 0) (0 100)(40 100) (40 0)(40 100) (60 10)(40 10) (60 20)(46 20) (60 40)(40 40) (60 60)(40 60) (60 80)(40 80) (60 90)(46 90) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (40 17)(46 23) (40 87)(46 93) (-20 10) (-20 20) (-20 30) (-20 40) (-20 60) (-20 70) (-20 80) (-20 90) (20 -20) (20 120) (60 10) (60 20) (60 40) (60 60) (60 80) (60 90) 4x2M (0 0)(0 120) (0 0)(40 0) (0 120)(40 120) (40 0)(40 120) (60 10)(40 10) (60 30)(40 30) (60 50)(40 50) (60 70)(40 70) (60 90)(40 90) (60 110)(46 110) (-20 10)(0 10) (-20 20)(0 20) (-20 40)(0 40) (-20 50)(0 50) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (-20 110)(0 110) (20 -20)(20 0) (20 120)(20 140) (40 107)(46 113) (-20 10) (-20 20) (-20 40) (-20 50) (-20 70) (-20 80) (-20 100) (-20 110) (20 -20) (20 140) (60 10) (60 30) (60 50) (60 70) (60 90) (60 110) 4PIC (0 0)(100 0)(100 80)(0 80)(0 0) (100 20)(120 20) (106 40)(120 40) (100 60)(120 60) (-20 20)(0 20) (-20 40)(0 40) (-20 60)(0 60) (10 -20)(10 0) (30 -20)(30 0) (50 -20)(50 0) (70 -20)(70 0) (90 -20)(90 0) (10 86)(10 100) (30 80)(30 100) (50 80)(50 100) (70 80)(70 100) (90 80)(90 100) (7 80)(13 86) (100 37)(106 43) (-20 20) (-20 40) (-20 60) (10 -20) (30 -20) (50 -20) (70 -20) (90 -20) (10 100) (30 100) (50 100) (70 100) (90 100) (120 20) (120 40) (120 60) 4PICu (0 0)(100 0)(100 80)(0 80)(0 0) (106 20)(120 20) (106 40)(120 40) (100 60)(120 60) (-20 20)(0 20) (-20 40)(0 40) (-20 60)(0 60) (10 -20)(10 0) (30 -20)(30 0) (50 -20)(50 0) (70 -20)(70 0) (90 -20)(90 0) (10 86)(10 100) (30 80)(30 100) (50 80)(50 100) (70 80)(70 100) (90 80)(90 100) (7 80)(13 86) (100 17)(106 23) (100 37)(106 43) (-20 20) (-20 40) (-20 60) (10 -20) (30 -20) (50 -20) (70 -20) (90 -20) (10 100) (30 100) (50 100) (70 100) (90 100) (120 20) (120 40) (120 60) SIPO8 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-10 20)(0 20) (-10 40)(0 40) (-10 60)(0 60) (-10 80)(-6 80) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -10)(20 0) (20 100)(20 90) (-6 77)(0 83) (-10 20) (-10 40) (-10 60) (-10 80) (20 -10) (20 100) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) LD4 (0 0)(0 100)(40 100)(40 0)(0 0) (60 10)(40 10) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 80)(46 80) (60 90)(46 90) (-20 10)(0 10) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(-6 80) (-20 90)(-6 90) (20 -20)(20 0) (20 120)(20 100) (40 77)(46 83) (40 87)(46 93) (-6 77)(0 83) (-6 87)(0 93) (-20 10) (-20 30) (-20 40) (-20 50) (-20 60) (-20 80) (-20 90) (20 -20) (20 120) (60 10) (60 30) (60 40) (60 50) (60 60) (60 80) (60 90) LD6 (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 80)(46 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(0 80) (20 -20)(20 0) (20 110)(20 90) (40 77)(46 83) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 80) (20 -20) (20 110) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 80) ALU4 (0 0)(40 0)(40 150)(0 150)(0 0) (60 10)(46 10) (60 20)(46 20) (60 30)(46 30) (60 40)(46 40) (60 60)(46 60) (60 70)(46 70) (60 80)(40 80) (60 90)(40 90) (60 130)(40 130) (60 140)(40 140) (-20 10)(-6 10) (-20 20)(-6 20) (-20 30)(-6 30) (-20 40)(-6 40) (-20 60)(-6 60) (-20 70)(-6 70) (-20 80)(-6 80) (-20 90)(-6 90) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (20 -20)(20 0) (20 170)(20 150) (40 7)(46 13) (40 17)(46 23) (40 27)(46 33) (40 37)(46 43) (40 57)(46 63) (40 67)(46 73) (-6 7)(0 13) (-6 17)(0 23) (-6 27)(0 33) (-6 37)(0 43) (-6 57)(0 63) (-6 67)(0 73) (-6 77)(0 83) (-6 87)(0 93) (-20 10) (-20 20) (-20 30) (-20 40) (-20 60) (-20 70) (-20 80) (-20 90) (-20 110) (-20 120) (-20 130) (-20 140) (20 -20) (20 170) (60 10) (60 20) (60 30) (60 40) (60 60) (60 70) (60 80) (60 90) (60 130) (60 140) CYG (0 0)(40 0)(40 100)(0 100)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 50)(46 50) (60 60)(46 60) (60 80)(40 80) (-20 10)(-6 10) (-20 20)(-6 20) (-20 30)(-6 30) (-20 40)(-6 40) (-20 60)(-6 60) (-20 70)(-6 70) (-20 80)(-6 80) (-20 90)(-6 90) (20 -20)(20 0) (20 120)(20 100) (40 47)(46 53) (40 57)(46 63) (-6 7)(0 13) (-6 17)(0 23) (-6 27)(0 33) (-6 37)(0 43) (-6 57)(0 63) (-6 67)(0 73) (-6 77)(0 83) (-6 87)(0 93) (-20 10) (-20 20) (-20 30) (-20 40) (-20 60) (-20 70) (-20 80) (-20 90) (20 -20) (20 120) (60 10) (60 20) (60 30) (60 50) (60 60) (60 80) ADDx2 (20 -10)(60 -10)(60 50)(20 50)(20 -10) (0 0)(20 0) (0 20)(20 20) (0 40)(20 40) (40 50)(40 70) (60 0)(80 0) (60 40)(80 40) (0 0) (0 20) (0 40) (40 70) (80 0) (80 40) SR4b (0 0)(0 100)(40 100)(40 0)(0 0) (60 10)(40 10) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 80)(40 80) (60 90)(46 90) (-20 10)(0 10) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (40 87)(46 93) (-20 10) (-20 30) (-20 40) (-20 50) (-20 60) (-20 80) (-20 90) (20 -20) (20 120) (60 10) (60 30) (60 40) (60 50) (60 60) (60 80) (60 90) 4RCOUNT (0 0)(100 0)(100 80)(0 80)(0 0) (-20 20)(0 20) (-20 40)(-6 40) (-20 60)(-6 60) (100 20)(120 20) (106 40)(120 40) (106 60)(120 60) (20 -20)(20 0) (40 -20)(40 0) (60 -20)(60 0) (80 -20)(80 0) (20 80)(20 100) (40 80)(40 100) (60 80)(60 100) (80 80)(80 100) (-6 37)(0 43) (-6 57)(0 63) (100 37)(106 43) (100 57)(106 63) (-20 20) (-20 40) (-20 60) (20 -20) (40 -20) (60 -20) (80 -20) (120 20) (120 40) (120 60) (20 100) (40 100) (60 100) (80 100) BUF8i (0 0)(0 120) (0 0)(40 0) (0 120)(40 120) (40 0)(40 120) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(-6 100) (-20 110)(-6 110) (46 10)(60 10) (46 20)(60 20) (46 30)(60 30) (46 40)(60 40) (46 50)(60 50) (46 60)(60 60) (46 70)(60 70) (46 80)(60 80) (20 -20)(20 0) (20 140)(20 120) (40 7)(46 13) (40 17)(46 23) (40 27)(46 33) (40 37)(46 43) (40 47)(46 53) (40 57)(46 63) (40 67)(46 73) (40 77)(46 83) (-6 97)(0 103) (-6 107)(0 113) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 100) (-20 110) (20 -20) (20 140) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) BUF8ni (0 0)(0 120) (0 0)(40 0) (0 120)(40 120) (40 0)(40 120) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(-6 100) (-20 110)(-6 110) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -20)(20 0) (20 140)(20 120) (-6 97)(0 103) (-6 107)(0 113) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 100) (-20 110) (20 -20) (20 140) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) BUF8nis (0 0)(0 120) (0 0)(40 0) (0 120)(40 120) (40 0)(40 120) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(-6 100) (-20 110)(0 110) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -20)(20 0) (20 140)(20 120) (-6 97)(0 103) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 100) (-20 110) (20 -20) (20 140) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) BUF4ni (0 0)(0 80) (0 0)(40 0) (0 80)(40 80) (40 0)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(-6 60) (-20 70)(0 70) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (20 -20)(20 0) (20 100)(20 80) (-6 57)(0 63) (-20 10) (-20 20) (-20 30) (-20 40) (-20 60) (-20 70) (20 -20) (20 100) (60 10) (60 20) (60 30) (60 40) BUF4i (0 0)(0 80) (0 0)(40 0) (0 80)(40 80) (40 0)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(-6 60) (-20 70)(0 70) (46 10)(60 10) (46 20)(60 20) (46 30)(60 30) (46 40)(60 40) (20 -20)(20 0) (20 100)(20 80) (40 7)(46 13) (40 17)(46 23) (40 27)(46 33) (40 37)(46 43) (-6 57)(0 63) (-20 10) (-20 20) (-20 30) (-20 40) (-20 60) (-20 70) (20 -20) (20 140) (60 10) (60 20) (60 30) (60 40) 1to8AL (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 60)(0 60) (-20 70)(-6 70) (-20 80)(-6 80) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (20 -20)(20 0) (20 110)(20 90) (-6 67)(0 73) (-6 77)(0 83) (-20 10) (-20 20) (-20 30) (-20 60) (-20 70) (-20 80) (20 -20) (20 110) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) XNORp (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (10 -20)(10 0) (10 60)(10 40) (51 20)(70 20) (45 17)(51 23) (-20 10) (-20 30) (10 -20) (10 60) (70 20) XNOR (0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40) (-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40) (0 0)(10 0) (0 40)(10 40) (10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20) (10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20) (-20 10)(-1 10) (-20 30)(-1 30) (51 20)(70 20) (45 17)(51 23) (-20 10) (-20 30) (70 20) NOR5 (0 0)(20 0)(30 1)(40 3)(50 7)(60 13)(70 21)(77 30) (0 60)(20 60)(30 59)(40 57)(50 53)(60 47)(70 39)(77 30) (0 0)(7 10)(9 20)(10 30)(9 40)(7 50)(0 60) (-20 10)(7 10) (-20 20)(9 20) (-20 30)(10 30) (-20 40)(9 40) (-20 50)(7 50) (20 60)(20 80) (83 30)(100 30) (77 27)(83 33) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (100 30) (20 80) 4RSLp (20 -10)(60 -10)(60 50)(20 50)(20 -10) (0 0)(14 0) (0 20)(14 20) (0 40)(20 40) (60 0)(80 0) (14 -3)(20 3) (14 17)(20 23) (0 0) (0 20) (0 40) (80 0) 4RSL (20 -10)(60 -10)(60 50)(20 50)(20 -10) (0 0)(14 0) (0 20)(14 20) (0 40)(14 40) (60 0)(80 0) (14 -3)(20 3) (14 17)(20 23) (14 37)(20 43) (0 0) (0 20) (0 40) (80 0) 9to2 (0 0)(0 100) (0 0)(40 0) (0 100)(40 100) (40 0)(40 100) (60 30)(40 30) (60 60)(40 60) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 90) (20 -20) (20 120) (60 20) (60 40) (60 60) (60 80) 4BFA (0 0)(40 0)(40 100)(0 100)(0 0) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 60)(40 60) (60 80)(40 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (20 -20)(20 0) (20 120)(20 100) (-20 10) (-20 20) (-20 30) (-20 40) (-20 60) (-20 70) (-20 80) (-20 90) (20 -20) (20 120) (60 10) (60 20) (60 30) (60 40) (60 60) (60 80) SRTS4 (0 0)(0 90)(40 90)(40 0)(0 0) (60 10)(40 10) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 80)(40 80) (-20 10)(0 10) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(-6 80) (20 -20)(20 0) (20 110)(20 90) (-6 77)(0 83) (-20 10) (-20 30) (-20 40) (-20 50) (-20 60) (-20 80) (20 -20) (20 110) (60 10) (60 30) (60 40) (60 50) (60 60) (60 80) 8SRSE (0 0)(0 100) (0 0)(40 0) (0 100)(40 100) (40 0)(40 100) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(-6 70) (-20 80)(-6 80) (-20 90)(-6 90) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (46 90)(60 90) (20 -20)(20 0) (20 120)(20 100) (-6 67)(0 73) (-6 77)(0 83) (-6 87)(0 93) (40 87)(46 93) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 90) (-20 110) (20 120) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) (60 90) BF6ni (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (60 10)(40 10) (60 20)(40 20) (60 30)(40 30) (60 40)(40 40) (60 50)(40 50) (60 60)(40 60) (60 80)(46 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(-6 80) (20 -20)(20 0) (20 110)(20 90) (40 77)(46 83) (-6 77)(0 83) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 80) (20 -20) (20 110) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 80) BF6i (0 0)(0 90) (0 0)(40 0) (0 90)(40 90) (40 0)(40 90) (60 10)(46 10) (60 20)(46 20) (60 30)(46 30) (60 40)(46 40) (60 50)(46 50) (60 60)(46 60) (60 80)(46 80) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 80)(-6 80) (20 -20)(20 0) (20 110)(20 90) (40 7)(46 13) (40 17)(46 23) (40 27)(46 33) (40 37)(46 43) (40 47)(46 53) (40 57)(46 63) (40 77)(46 83) (-6 77)(0 83) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 80) (20 -20) (20 110) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 80) 2x4bc (0 0)(0 100) (0 0)(40 0) (0 100)(40 100) (40 0)(40 100) (-20 10)(-6 10) (-20 20)(-6 20) (-20 40)(0 40) (-20 60)(0 60) (-20 80)(-6 80) (-20 90)(-6 90) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (40 90)(60 90) (20 -20)(20 0) (20 120)(20 100) (-6 7)(0 13) (-6 17)(0 23) (-6 77)(0 83) (-6 87)(0 93) (60 10) (60 20) (60 30) (60 40) (60 60) (60 70) (60 80) (60 90) (20 -20) (20 120) (-20 10) (-20 20) (-20 40) (-20 60) (-20 80) (-20 90) 2x4bi (0 0)(0 100) (0 0)(40 0) (0 100)(40 100) (40 0)(40 100) (-20 10)(-6 10) (-20 40)(0 40) (-20 60)(0 60) (-20 90)(-6 90) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (40 90)(60 90) (20 -20)(20 0) (20 120)(20 100) (-6 7)(0 13) (-6 87)(0 93) (60 10) (60 20) (60 30) (60 40) (60 60) (60 70) (60 80) (60 90) (20 -20) (20 120) (-20 10) (-20 40) (-20 60) (-20 90) 2x4bci (0 0)(0 100) (0 0)(40 0) (0 100)(40 100) (40 0)(40 100) (-20 10)(0 10) (-20 20)(0 20) (-20 40)(-6 40) (-20 60)(-6 60) (-20 80)(0 80) (-20 90)(0 90) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (40 90)(60 90) (20 -20)(20 0) (20 120)(20 100) (-6 37)(0 43) (-6 57)(0 63) (60 10) (60 20) (60 30) (60 40) (60 60) (60 70) (60 80) (60 90) (20 -20) (20 120) (-20 10) (-20 20) (-20 40) (-20 60) (-20 80) (-20 90) 4DLx2i (0 0)(0 110) (0 0)(40 0) (0 110)(40 110) (40 0)(40 110) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (40 10)(60 10) (46 20)(60 20) (40 30)(60 30) (46 40)(60 40) (40 50)(60 50) (46 60)(60 60) (40 70)(60 70) (46 80)(60 80) (40 100)(60 100) (20 -20)(20 0) (20 110)(20 130) (40 17)(46 23) (40 37)(46 43) (40 57)(46 63) (40 77)(46 83) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 100) (20 -20) (20 130) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) (60 100) 4DLx2 (0 0)(0 110) (0 0)(40 0) (0 110)(40 110) (40 0)(40 110) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (40 10)(60 10) (40 30)(60 30) (40 50)(60 50) (40 70)(60 70) (40 100)(60 100) (20 -20)(20 0) (20 110)(20 130) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 100) (20 -20) (20 130) (60 10) (60 30) (60 50) (60 70) (60 100) COUNT8tri (0 0)(0 130) (0 0)(40 0) (0 130)(40 130) (40 0)(40 130) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(-6 80) (-20 90)(-6 90) (-20 100)(-6 100) (-20 110)(-6 110) (-20 120)(-6 120) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (46 60)(60 60) (46 80)(60 80) (40 100)(60 100) (20 -20)(20 0) (20 150)(20 130) (-6 77)(0 83) (-6 87)(0 93) (-6 97)(0 103) (-6 107)(0 113) (-6 117)(0 123) (40 57)(46 63) (40 77)(46 83) (-20 10) (-20 20) (-20 30) (-20 40) (-20 60) (-20 70) (-20 80) (-20 90) (-20 100) (-20 110) (-20 120) (20 -20) (20 150) (60 10) (60 20) (60 30) (60 40) (60 60) (60 80) (60 100) 8x2IML (0 0)(0 180) (0 0)(40 0) (0 180)(40 180) (40 0)(40 180) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (-20 170)(0 170) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (40 100)(60 100) (40 120)(60 120) (20 -20)(20 0) (20 180)(20 200) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 100) (-20 110) (-20 120) (-20 130) (-20 140) (-20 150) (-20 160) (-20 170) (20 -20) (20 200) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) (60 100) (60 120) REG16P (0 0)(0 170) (0 0)(40 0) (0 170)(40 170) (40 0)(40 170) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (40 10)(60 10) (40 100)(60 100) (40 120)(60 120) (46 140)(60 140) (40 160)(60 160) (20 -20)(20 0) (20 170)(20 190) (40 137)(46 143) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 90) (-20 100) (-20 110) (-20 120) (-20 130) (-20 140) (-20 150) (-20 160) (20 -20) (20 190) (60 10) (60 100) (60 120) (60 140) (60 160) REG16S (0 0)(0 170) (0 0)(40 0) (0 170)(40 170) (40 0)(40 170) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (40 90)(60 90) (40 100)(60 100) (40 110)(60 110) (40 120)(60 120) (40 130)(60 130) (40 140)(60 140) (40 150)(60 150) (40 160)(60 160) (-20 10)(0 10) (-20 80)(-6 80) (-20 100)(0 100) (-20 120)(0 120) (-20 140)(-6 140) (-20 160)(0 160) (20 -20)(20 0) (20 170)(20 190) (-6 137)(0 143) (-6 77)(0 83) (60 10) (60 20) (60 30) (60 40) (60 50) (60 60) (60 70) (60 80) (60 90) (60 100) (60 110) (60 120) (60 130) (60 140) (60 150) (60 160) (20 -20) (20 190) (-20 10) (-20 80) (-20 100) (-20 120) (-20 140) (-20 160) 8x2CMPS (0 0)(0 180) (0 0)(40 0) (0 180)(40 180) (40 0)(40 180) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (-20 170)(0 170) (46 20)(60 20) (46 40)(60 40) (20 -20)(20 0) (20 180)(20 200) (40 17)(46 23) (40 37)(46 43) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 100) (-20 110) (-20 120) (-20 130) (-20 140) (-20 150) (-20 160) (-20 170) (20 -20) (20 200) (60 20) (60 40) 8x2CMPC (0 0)(0 180) (0 0)(40 0) (0 180)(40 180) (40 0)(40 180) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (-20 170)(0 170) (46 20)(60 20) (46 40)(60 40) (46 60)(60 60) (40 80)(60 80) (20 -20)(20 0) (20 180)(20 200) (40 17)(46 23) (40 37)(46 43) (40 57)(46 63) (-20 10) (-20 20) (-20 30) (-20 40) (-20 50) (-20 60) (-20 70) (-20 80) (-20 100) (-20 110) (-20 120) (-20 130) (-20 140) (-20 150) (-20 160) (-20 170) (20 -20) (20 200) (60 20) (60 40) (60 60) (60 80) 7400a NANDp NAND Reference designator @refdes (20 15) yes 1 1 (-15 9) no 2 2 (-15 29) no 3 3 (57 19) no 14 14 (8 -2) no 7 7 (12 52) no Model @model (-20 60) no Refdes U Model 7400a Template X_@refdes %1 %2 %3 %4 %5 @model 7400b NAND NAND Reference designator @refdes (20 15) yes 4 4 (-15 9) no 5 5 (-15 29) no 6 6 (57 19) no Model @model (0 55) no Refdes U Model 7400b Template X_@refdes %1 %2 %3 @model 7400c NAND NAND Reference designator @refdes (20 15) yes 9 9 (-15 9) no 10 10 (-10 29) no 8 8 (57 19) no Model @model (0 55) no Refdes U Model 7400c Template X_@refdes %1 %2 %3 @model 7400d NAND NAND Reference designator @refdes (20 15) yes 12 12 (-15 9) no 13 13 (-15 29) no 11 11 (57 19) no Model @model (0 55) no Refdes U Model 7400d Template X_@refdes %1 %2 %3 @model 7401a NANDp NAND Reference designator @refdes (20 15) yes 3 3 (-15 9) no 2 2 (-15 29) no 1 1 (57 19) no 14 14 (7 -2) no 7 7 (12 52) no Model @model (-20 60) no Refdes U Model 7401a Template X_@refdes %1 %2 %3 %4 %5 @model 7401b NAND NAND Reference designator @refdes (20 15) yes 5 5 (-15 9) no 6 6 (-15 29) no 4 4 (57 19) no Model @model (0 55) no Refdes U Model 7401b Template X_@refdes %1 %2 %3 @model 7401c NAND NAND Reference designator @refdes (20 15) yes 8 8 (-15 9) no 9 9 (-15 29) no 10 10 (57 19) no Model @model (0 55) no Refdes U Model 7401c Template X_@refdes %1 %2 %3 @model 7401d NAND NAND Reference designator @refdes (20 15) yes 11 11 (-15 9) no 12 12 (-15 29) no 13 13 (57 19) no Model @model (0 55) no Refdes U Model 7401d Template X_@refdes %1 %2 %3 @model 7402a NORp NOR Reference designator @refdes (10 15) yes 1A 3 (-7 8) no 1B 2 (-7 28) no 1Y 1 (51 18) no VCC 14 (-2 -2) no VSS 7 (0 52) no Model @model (7 30) no Refdes U Model 7402a Template X_@refdes %1 %2 %3 %4 %5 @model 7402b NOR NOR Reference designator @refdes (10 15) yes 2A 5 (-8 8) no 2B 6 (-8 28) no 2Y 4 (51 18) no Model @model (8 30) no Refdes U Model 7402b Template X_@refdes %1 %2 %3 @model 7402c NOR NOR Reference designator @refdes (10 15) yes 3A 8 (-8 8) no 3B 9 (-8 28) no 3Y 10 (51 18) no Model @model (8 30) no Refdes U Model 7402c Template X_@refdes %1 %2 %3 @model 7402d NOR NOR Reference designator @refdes (10 15) yes 4A 11 (-8 8) no 4B 12 (-8 28) no 4Y 13 (51 18) no Model @model (8 30) no Refdes U Model 7402d Template X_@refdes %1 %2 %3 @model 7403 EQ See 7400 7404a INVERp INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 1A 1 (-8 18) no 1Y 2 (51 18) no VCC 14 (2 -2) no VSS 7 (2 52) no Refdes U Model 7404a Template X_@refdes %1 %2 %3 %4 @model 7404b INVER INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 2A 3 (-8 18) no 2Y 4 (51 18) no Refdes U Model 7404b Template X_@refdes %1 %2 @model 7404c INVER INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 3A 5 (-8 18) no 3Y 6 (51 18) no Refdes U Model 7404c Template X_@refdes %1 %2 @model 7404d INVER INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 4A 9 (-8 18) no 4Y 8 (51 18) no Refdes U Model 7404d Template X_@refdes %1 %2 @model 7404e INVER INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 5A 11 (-12 18) no 5Y 10 (51 18) no Refdes U Model 7404e Template X_@refdes %1 %2 @model 7404f INVER INVERTER Reference designator @refdes (30 0) yes Model @model (2 25) no 6A 13 (-12 18) no 6Y 12 (51 18) no Refdes U Model 7404f Template X_@refdes %1 %2 @model 7405 EQ See 7404 7406 EQ See 7404 7407a BUFFERp BUFFER Reference designator @refdes (35 0) yes Model @model (-25 50) no 1 1 (-8 18) no 2 2 (51 18) no 14 14 (4 -2) no 7 7 (10 52) no Refdes U Model 7407a Template X_@refdes %1 %2 %3 %4 @model 7407b BUFFER BUFFER Reference designator @refdes (30 0) yes Model @model (2 50) no 3 3 (-8 18) no 4 4 (51 18) no Refdes U Model 7407b Template X_@refdes %1 %2 @model 7407c BUFFER BUFFER Reference designator @refdes (30 0) yes Model @model (2 50) no 5 5 (-8 18) no 6 6 (51 18) no Refdes U Model 7407c Template X_@refdes %1 %2 @model 7407d BUFFER BUFFER Reference designator @refdes (30 0) yes Model @model (2 50) no 9 9 (-8 18) no 8 8 (51 18) no Refdes U Model 7407d Template X_@refdes %1 %2 @model 7407e BUFFER BUFFER Reference designator @refdes (30 0) yes Model @model (2 50) no 11 11 (-12 18) no 10 10 (51 18) no Refdes U Model 7407e Template X_@refdes %1 %2 @model 7407f BUFFER BUFFER Reference designator @refdes (30 0) yes Model @model (2 50) no 13 13 (-12 18) no 12 12 (51 18) no Refdes U Model 7407f Template X_@refdes %1 %2 @model 7408a ANDp AND Reference designator @refdes (20 15) yes 1 1 (-10 8) no 2 2 (-10 28) no 3 3 (56 18) no 14 14 (8 -2) no 7 7 (12 52) no Model @model (10 35) no Refdes U Model 7408a Template X_@refdes %1 %2 %3 %4 %5 @model 7408b AND AND Reference designator @refdes (20 15) yes 4 4 (-10 8) no 5 5 (-10 28) no 6 6 (56 18) no Model @model (10 35) no Refdes U Model 7408b Template X_@refdes %1 %2 %3 @model 7408c AND AND Reference designator @refdes (20 15) yes 9 9 (-10 8) no 10 10 (-15 28) no 8 8 (56 18) no Model @model (10 35) no Refdes U Model 7408c Template X_@refdes %1 %2 %3 @model 7408d AND AND Reference designator @refdes (20 15) yes 12 12 (-15 8) no 13 13 (-15 28) no 11 11 (56 18) no Model @model (10 35) no Refdes U Model 7408d Template X_@refdes %1 %2 %3 @model 7409 EQ See 7408 7410a NAND3p NAND 3 input Reference designator @refdes (20 15) yes 1A 13 (-10 9) no 1B 1 (-8 19) no 1C 2 (-8 29) no 1Y 12 (56 19) no VCC 14 (8 -2) no VSS 7 (12 52) no Model @model (10 35) no Refdes U Model 7410a Template X_@refdes %1 %2 %3 %4 %5 %6 @model 7410b NAND3 NAND 3 input Reference designator @refdes (20 15) yes 2A 3 (-8 9) no 2B 4 (-8 19) no 2C 5 (-8 29) no 2Y 6 (56 19) no Model @model (10 35) no Refdes U Model 7410b Template X_@refdes %1 %2 %3 %4 @model 7410c NAND3 NAND 3 input Reference designator @refdes (20 15) yes 3A 9 (-8 9) no 3B 10 (-10 19) no 3C 11 (-10 29) no 3Y 8 (56 19) no Model @model (10 35) no Refdes U Model 7410c Template X_@refdes %1 %2 %3 @model 7411a AND3p AND 3 input Reference designator @refdes (20 15) yes 1A 13 (-10 9) no 1B 1 (-8 19) no 1C 2 (-8 29) no 1Y 12 (56 19) no VCC 14 (8 -2) no VSS 7 (12 52) no Model @model (10 35) no Refdes U Model 7411a Template X_@refdes %1 %2 %3 %4 %5 %6 @model 7411b AND3 AND 3 input Reference designator @refdes (20 15) yes 2A 3 (-8 9) no 2B 4 (-8 19) no 2C 5 (-8 29) no 2Y 6 (56 19) no Model @model (10 35) no Refdes U Model 7411b Template X_@refdes %1 %2 %3 %4 @model 7411c AND3 AND 3 input Reference designator @refdes (20 15) yes 3A 9 (-8 9) no 3B 10 (-10 19) no 3C 11 (-10 29) no 3Y 8 (56 19) no Model @model (10 35) no Refdes U Model 7411c Template X_@refdes %1 %2 %3 @model 7412 EQ See 7410 7413a NAND4p NAND 4 input Reference designator @refdes (20 15) yes 1A 1 (-9 11) no 1B 2 (-9 21) no 1C 4 (-9 31) no 1D 5 (-9 41) no 1Y 6 (78 19) no VCC 14 (8 -2) no VSS 7 (12 62) no Model @model (10 35) no Refdes U Model 7413a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7413b NAND4 NAND 4 input Reference designator @refdes (20 15) yes 2A 9 (-9 11) no 2B 10 (-10 21) no 2C 12 (-10 31) no 2D 13 (-10 41) no 2Y 8 (78 19) no Model @model (10 35) no Refdes U Model 7413b Template X_@refdes %1 %2 %3 %4 %5 @model 7414 EQ See 7404 7415 EQ See 7411 7416 EQ See 7404 7417 EQ See 7407 7420 EQ See 7413 7421a AND4p AND 4 input Reference designator @refdes (25 15) yes 1 1 (-10 10) no 2 2 (-10 20) no 4 4 (-10 30) no 5 5 (-10 40) no 6 6 (78 19) no 14 14 (8 -2) no 7 7 (12 62) no Model @model (30 35) no Refdes U Model 7421a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7421b AND4 AND 4 input Reference designator @refdes (25 15) yes 9 9 (-10 10) no 10 10 (-15 20) no 12 12 (-15 30) no 13 13 (-15 40) no 8 8 (78 19) no Model @model (30 35) no Refdes U Model 7421b Template X_@refdes %1 %2 %3 %4 %5 @model 7422 EQ See 7413 7423a NORE4 NOR 4 input exp. Reference designator @refdes (20 15) yes 1A 2 (-9 11) no 1B 3 (-9 21) no 1C 5 (-9 31) no 1D 6 (-9 41) no 1Y 7 (70 19) no 1X 1 (0 -2) no 1G 4 (0 62) no 1/X 15 (22 -2) no Model @model (10 35) no Refdes U Model 7423a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 7423b NORE4 NOR 4 input exp. Reference designator @refdes (20 15) yes 2A 10 (-10 11) no 2B 11 (-10 21) no 2C 13 (-10 31) no 2D 14 (-10 41) no 2Y 9 (70 19) no VCC 16 (0 -2) no VSS 8 (0 62) no 2G 12 (22 -2) no Model @model (10 35) no Refdes U Model 7423b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 7425a NORS4 NOR 4 input str. Reference designator @refdes (20 15) yes 1A 1 (-9 11) no 1B 2 (-9 21) no 1C 4 (-9 31) no 1D 5 (-9 41) no 1Y 6 (70 19) no VCC 14 (-1 -2) no 1G 3 (0 62) no Model @model (10 35) no Refdes U Model 7425a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7425b NORS4 NOR 4 input str. Reference designator @refdes (20 15) yes 2A 9 (-10 11) no 2B 10 (-10 21) no 2C 12 (-10 31) no 2D 13 (-10 41) no 2Y 8 (70 19) no 2G 11 (-1 -2) no VSS 7 (0 62) no Model @model (10 35) no Refdes U Model 7425b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7426 EQ See 7400 7427a NOR3p NOR 3 input Reference designator @refdes (10 15) yes 1A 3 (-9 9) no 1B 2 (-9 20) no 1C 13 (-9 30) no 1Y 12 (51 18) no VCC 14 (-2 -2) no VSS 7 (0 52) no Model @model (7 30) no Refdes U Model 7427a Template X_@refdes %1 %2 %3 %4 %5 %6 @model 7427b NOR3 NOR 3 input Reference designator @refdes (10 15) yes 2A 3 (-9 9) no 2B 4 (-9 20) no 2C 5 (-9 30) no 2Y 6 (51 18) no Model @model (8 30) no Refdes U Model 7427b Template X_@refdes %1 %2 %3 %4 @model 7427c NOR3 NOR 3 input Reference designator @refdes (10 15) yes 3A 9 (-9 9) no 3B 10 (-10 20) no 3C 11 (-10 30) no 3Y 8 (51 18) no Model @model (8 30) no Refdes U Model 7427c Template X_@refdes %1 %2 %3 %4 @model 7428 EQ See 7402 7430 NAND8 NAND 8 input Reference designator @refdes (20 15) yes 1A 1 (-9 -10) no 1B 2 (-9 0) no 1C 3 (-9 10) no 1D 4 (-9 20) no 1E 5 (-9 30) no 1F 6 (-9 40) no 1G 11 (-9 50) no 1H 12 (-9 60) no 1Y 8 (78 19) no VCC 14 (8 -2) no VSS 7 (12 62) no Model @model (10 35) no Refdes U Model 7430 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 @model 7432a ORp OR Reference designator @refdes (10 15) yes 1 1 (-10 8) no 2 2 (-10 28) no 3 3 (51 18) no 14 14 (-2 -2) no 7 7 (0 52) no Model @model (7 30) no Refdes U Model 7432a Template X_@refdes %1 %2 %3 %4 %5 @model 7432b OR OR Reference designator @refdes (10 15) yes 4 4 (-10 8) no 5 5 (-10 28) no 6 6 (51 18) no Model @model (8 30) no Refdes U Model 7432b Template X_@refdes %1 %2 %3 @model 7432c OR OR Reference designator @refdes (10 15) yes 10 10 (-15 9) no 9 9 (-10 29) no 8 8 (51 18) no Model @model (8 30) no Refdes U Model 7432c Template X_@refdes %1 %2 %3 @model 7432d OR OR Reference designator @refdes (10 15) yes 13 13 (-15 9) no 12 12 (-15 29) no 11 11 (51 18) no Model @model (8 30) no Refdes U Model 7432d Template X_@refdes %1 %2 %3 @model 7433 EQ See 7402 7437 EQ See 7400 7438 EQ See 7400 7439 EQ See 7400 7440 EQ See 7413 7441 BCD10 BCD to 10 Reference designator @refdes (-10 130) yes A 3 (-9 20) no A (2 25) no B 6 (-9 40) no B (2 45) no C 7 (-9 60) no C (2 65) no D 4 (-9 80) no D (2 85) no 0 16 (46 10) no 0 (30 15) no 1 15 (46 20) no 1 (30 25) no 2 8 (46 30) no 2 (30 35) no 3 9 (46 40) no 3 (30 45) no 4 13 (46 50) no 4 (30 55) no 5 14 (46 60) no 5 (30 65) no 6 11 (46 70) no 6 (30 75) no 7 10 (46 80) no 7 (30 85) no 8 1 (46 90) no 8 (30 95) no 9 2 (46 100) no 9 (30 105) no VCC 5 (10 -1) no VSS 12 (8 120) no Model @model (35 -10) no Refdes U Model 7441 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 7442 BCD10 BCD to 10 Reference designator @refdes (-10 130) yes A 15 (-9 20) no A (2 25) no B 14 (-9 40) no B (2 45) no C 13 (-9 60) no C (2 65) no D 12 (-9 80) no D (2 85) no 0 1 (46 10) no 0 (30 15) no 1 2 (46 20) no 1 (30 25) no 2 3 (46 30) no 2 (30 35) no 3 4 (46 40) no 3 (30 45) no 4 5 (46 50) no 4 (30 55) no 5 6 (46 60) no 5 (30 65) no 6 7 (46 70) no 6 (30 75) no 7 9 (46 80) no 7 (30 85) no 8 10 (46 90) no 8 (30 95) no 9 11 (46 100) no 9 (30 105) no VCC 16 (10 -1) no VSS 8 (8 120) no Model @model (35 -10) no Refdes U Model 7442 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 7443 EQ See 7442 7444 EQ See 7442 7445 EQ See 7442 7446 BCD7 BCD to 7 seg. Reference designator @refdes (-10 110) yes A 7 (-9 20) no A (2 25) no B 1 (-9 30) no B (2 35) no C 2 (-9 40) no C (2 45) no D 6 (-9 50) no D (2 55) no l 3 (-9 70) no lt (2 75) no r 5 (-9 80) no rbi (2 85) no a 13 (46 10) no a (30 15) no b 12 (46 20) no b (30 25) no c 11 (46 30) no c (30 35) no d 10 (46 40) no d (30 45) no e 9 (46 50) no e (30 55) no f 15 (46 60) no f (30 65) no g 14 (46 70) no g (30 75) no 0 4 (46 80) no bi (25 85) no VCC 16 (10 -1) no VSS 8 (8 100) no Model @model (35 -10) no Refdes U Model 7446 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 7447 EQ See 7446 7448 BCD7n BCD to 7 seg. Reference designator @refdes (-10 110) yes 7 7 (-10 20) no A (2 25) no 1 1 (-10 30) no B (2 35) no 2 2 (-10 40) no C (2 45) no 6 6 (-10 50) no D (2 55) no 3 3 (-10 70) no lt (2 75) no 5 5 (-10 80) no rbi (2 85) no 13 13 (46 10) no a (30 15) no 12 12 (46 20) no b (30 25) no 11 11 (46 30) no c (30 35) no 10 10 (46 40) no d (30 45) no 9 9 (46 50) no e (30 55) no 15 15 (46 60) no f (30 65) no 14 14 (46 70) no g (30 75) no 4 4 (46 80) no bi (25 85) no 16 16 (5 -2) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 7448 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 7449 BCD7ns BCD to 7 seg. Reference designator @refdes (-10 100) yes A 5 (-9 20) no A (2 25) no B 1 (-9 30) no B (2 35) no C 2 (-9 40) no C (2 45) no D 4 (-9 50) no D (2 55) no 0 3 (-10 67) no bi (2 75) no a 11 (46 10) no a (30 15) no b 10 (46 20) no b (30 25) no c 9 (46 30) no c (30 35) no d 8 (46 40) no d (30 45) no e 6 (46 50) no e (30 55) no f 13 (46 60) no f (30 65) no g 12 (46 70) no g (30 75) no VCC 14 (10 -1) no VSS 7 (8 92) no Model @model (35 -10) no Refdes U Model 7449 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model 7450a ANDOR2x2e AND-NOR 2x2 exp. Reference designator @refdes (60 5) yes 1A 1 (-10 70) no 1B 13 (-10 50) no 1C 9 (-10 10) no 1D 10 (-10 30) no 1Y 8 (87 39) no -X 12 (38 24) no X 11 (38 66) no Model @model (60 70) no Refdes U Model 7450a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7450b ANDOR2x2e AND-NOR 2x2 exp. Reference designator @refdes (60 5) yes 2A 2 (-10 70) no 2B 3 (-10 50) no 2C 4 (-10 10) no 2D 5 (-10 30) no 2Y 6 (87 39) no VCC 12 (38 24) no VSS 7 (40 68) no Model @model (60 70) no Refdes U Model 7450b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7451a ANDOR2x3 AND-NOR 2x3 Reference designator @refdes (60 5) yes 1A 1 (-10 70) no 1B 13 (-10 60) no 1C 12 (-10 50) no 1D 11 (-10 30) no 1Y 8 (87 39) no 1E 10 (-10 20) no 1F 11 (-10 10) no Model @model (60 70) no Refdes U Model 7451a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7451b ANDOR2x2e AND-NOR 2x2 Reference designator @refdes (60 5) yes 2A 2 (-10 70) no 2B 3 (-10 50) no 2C 4 (-10 10) no 2D 5 (-10 30) no 2Y 6 (87 39) no VCC 12 (38 24) no VSS 7 (40 68) no Model @model (60 70) no Refdes U Model 7451b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7454 ANDOR2x3x4 AND-NOR 3x2x2x3 Reference designator @refdes (75 25) yes 1A 9 (-10 0) no 1B 10 (-10 10) no 1C 11 (-10 20) no 1D 12 (-10 40) no 1E 13 (-10 50) no 1F 10 (-9 70) no 1G 2 (-9 80) no 1H 3 (-9 100) no 1J 4 (-9 110) no 1K 5 (-9 120) no VCC 14 (40 35) no VSS 7 (40 95) no 1Y 6 (101 61) no Model @model (65 95) no Refdes U Model 7454 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 @model 7455 ANDOR2x4 AND-NOR 2x4 Reference designator @refdes (75 25) yes 1A 10 (-10 10) no 1B 11 (-10 20) no 1C 12 (-10 30) no 1D 13 (-10 40) no 1E 1 (-9 60) no 1F 2 (-9 70) no 1G 3 (-9 80) no 1H 4 (-9 90) no VCC 14 (55 33) no VSS 7 (55 75) no 1Y 8 (106 51) no Model @model (75 75) no Refdes U Model 7455 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 @model 7473a JKFFc JK Flip-Flop Reference designator @refdes (0 -20) yes 1J 14 (5 -1) no J (22 5) no 1C 1 (5 19) no CK (22 25) no 1K 3 (5 39) no K (22 45) no 1CL 2 (30 -15) no CL (35 2) no VSS 11 (30 65) no VS (35 49) no 1Q 12 (67 -1) no Q (50 5) no 1Q- 13 (67 39) no Q (50 45) no _ (50 35) no Model @model (50 65) no Refdes U Model 7473a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7473b JKFFc JK Flip-Flop Reference designator @refdes (0 -20) yes 2J 7 (5 -1) no J (22 5) no 2C 5 (5 19) no CK (22 25) no 2K 10 (5 39) no K (22 45) no 2CL 6 (30 -15) no CL (35 2) no VCC 4 (30 65) no VC (35 49) no 2Q 9 (67 -1) no Q (50 5) no 2Q- 8 (67 39) no Q (50 45) no _ (50 35) no Model @model (50 65) no Refdes U Model 7473b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7474a DFFcs D Flip-Flop Reference designator @refdes (0 -20) yes 1D 2 (5 -1) no D (22 5) no 1C 3 (5 19) no CK (22 25) no VSS 7 (5 39) no VS (22 45) no 1S 4 (30 -15) no S (35 2) no 1C 1 (30 65) no CL (35 49) no 1Q 5 (67 -1) no Q (50 5) no 1Q- 6 (67 39) no Q (50 45) no _ (50 35) no Model @model (50 65) no Refdes U Model 7474a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7474b DFFcs D Flip-Flop Reference designator @refdes (0 -20) yes 2D 12 (5 -1) no D (22 5) no 2C 11 (5 19) no CK (22 25) no VCC 14 (5 39) no VC (22 45) no 2S 10 (30 -15) no S (35 2) no 2C 13 (30 65) no CL (35 49) no 2Q 9 (67 -1) no Q (50 5) no 2Q- 8 (67 39) no Q (50 45) no _ (50 35) no Model @model (50 65) no Refdes U Model 7474b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7475 4DL D Latch 4 bit Reference designator @refdes (-10 110) yes D0 2 (-9 20) no D0 (2 25) no D1 3 (-9 30) no D1 (2 35) no D2 6 (-9 40) no D2 (2 45) no D3 7 (-9 50) no D3 (2 55) no E1 13 (-10 70) no E1 (2 75) no E2 5 (-9 80) no E2 (2 85) no Q0 16 (46 10) no Q0- 11 (46 20) no Q0 (25 20) no Q1 15 (46 30) no Q1- 14 (46 40) no Q1 (25 40) no Q2 10 (46 50) no Q2- 11 (46 60) no Q2 (25 60) no Q3 9 (46 70) no Q3- 8 (46 80) no Q3 (25 80) no VCC 5 (10 -1) no VSS 12 (7 102) no Model @model (35 -10) no Refdes U Model 7475 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 7476a JKFFcs JK Flip-Flop Reference designator @refdes (0 -20) yes 4 4 (5 -1) no J (22 5) no 1 1 (5 19) no CK (22 25) no 16 16 (5 39) no K (22 45) no 2 2 (30 -15) no S (35 2) no 3 3 (30 65) no CL (35 49) no 15 15 (67 -1) no Q (50 5) no 13 13 (67 39) no VS (47 45) no 14 14 (67 19) no Q (50 25) no _ (50 15) no Model @model (50 65) no Refdes U Model 7476a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 7476b JKFFcs JK Flip-Flop Reference designator @refdes (0 -20) yes 9 9 (5 -1) no J (22 5) no 6 6 (5 19) no CK (22 25) no 12 12 (5 39) no K (22 45) no 7 7 (30 -15) no S (35 2) no 8 8 (30 65) no CL (35 49) no 11 11 (67 -1) no Q (50 5) no 5 5 (67 39) no VC (47 45) no 10 10 (67 19) no Q (50 25) no _ (50 15) no Model @model (50 65) no Refdes U Model 7476b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 7477 4DLs D Latch 4 bit Reference designator @refdes (-10 110) yes D0 1 (-9 20) no D0 (2 25) no D1 2 (-9 30) no D1 (2 35) no D2 5 (-9 40) no D2 (2 45) no D3 6 (-9 50) no D3 (2 55) no E1 12 (-10 70) no E1 (2 75) no E2 3 (-9 80) no E2 (2 85) no Q0 14 (46 10) no Q0 (25 15) no Q1 13 (46 30) no Q1 (25 35) no Q2 9 (46 50) no Q2 (25 55) no Q3 8 (46 70) no Q3 (25 75) no VCC 4 (10 -1) no VSS 11 (7 102) no Model @model (35 -10) no Refdes U Model 7477 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 @model 7483 4ADD 4 bit full adder Reference designator @refdes (-10 110) yes E1 9 (-9 20) no E1 (2 25) no E2 6 (-9 30) no E2 (2 35) no E3 2 (-9 40) no E3 (2 45) no E4 15 (-9 50) no E4 (2 55) no C0 13 (-10 70) no C0 (2 75) no C4 14 (-9 80) no C4 (2 85) no A1 10 (46 10) no A1 (25 15) no A2 8 (46 20) no A2 (25 25) no A3 3 (46 30) no A3 (25 35) no A4 1 (46 40) no A4 (25 45) no B1 11 (46 50) no B1 (25 55) no B2 7 (46 60) no B2 (25 65) no B3 4 (46 70) no B3 (25 75) no B4 16 (46 80) no B4 (25 85) no VCC 5 (10 -1) no VSS 12 (7 102) no Model @model (35 -10) no Refdes U Model 7483 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 7485 4ADD 4 bit comparator Reference designator @refdes (-10 110) yes ia+ 4 (-9 20) no ia+ (3 25) no ia- 2 (-9 30) no ia- (3 35) no oa+ 5 (-9 40) no oa+ (3 45) no oa- 7 (-9 50) no oa- (3 55) no ia= 3 (-10 70) no ia= (3 75) no oa= 6 (-9 80) no oa= (3 85) no A1 10 (46 10) no a1 (25 15) no A2 12 (46 20) no a2 (25 25) no A3 13 (46 30) no a3 (25 35) no A4 15 (46 40) no a4 (25 45) no B1 9 (46 50) no b1 (25 55) no B2 11 (46 60) no b2 (25 65) no B3 14 (46 70) no b3 (25 75) no B4 1 (46 80) no b4 (25 85) no VCC 16 (9 -1) no VSS 8 (7 102) no Model @model (35 -10) no Refdes U Model 7485 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 7486a XORp XOR (warning pinout may be different) Reference designator @refdes (10 15) yes 1 1 (-18 8) no 2 2 (-18 28) no 3 3 (51 18) no 14 14 (-2 -2) no 7 7 (0 52) no Model @model (7 30) no Refdes U Model 7486a Template X_@refdes %1 %2 %3 %4 %5 @model 7486b XOR XOR (warning pinout may be different) Reference designator @refdes (10 15) yes 4 4 (-18 8) no 5 5 (-18 28) no 6 6 (51 18) no Model @model (8 30) no Refdes U Model 7486b Template X_@refdes %1 %2 %3 @model 7486c XOR XOR (warning pinout may be different) Reference designator @refdes (10 15) yes 10 10 (-18 9) no 9 9 (-18 29) no 8 8 (51 18) no Model @model (8 30) no Refdes U Model 7486c Template X_@refdes %1 %2 %3 @model 7486d XOR XOR (warning pinout may be different) Reference designator @refdes (10 15) yes 13 13 (-18 9) no 12 12 (-18 29) no 11 11 (51 18) no Model @model (8 30) no Refdes U Model 7486d Template X_@refdes %1 %2 %3 @model 7490 4DLs Decade Counter Reference designator @refdes (-10 110) yes R1 2 (-9 20) no R1 (2 25) no R2 3 (-9 30) no R2 (2 35) no S1 6 (-9 40) no S1 (2 45) no S2 7 (-9 50) no S2 (2 55) no Ca 14 (-10 70) no Ca (2 75) no Cb 1 (-9 80) no Cb (2 85) no QA 12 (46 10) no QA (25 15) no QB 9 (46 30) no QB (25 35) no QC 8 (46 50) no QC (25 55) no QD 11 (46 70) no QD (25 75) no VCC 5 (10 -1) no VSS 10 (7 102) no Model @model (35 -10) no Refdes U Model 7490 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 @model 7491 SFR8 Shift Register 8 bit Reference designator @refdes (0 -20) yes A 12 (5 -1) no A (22 5) no CK 9 (5 19) no CK (22 25) no B 11 (5 39) no B (22 45) no VCC 5 (30 -15) no VC (35 2) no VSS 10 (30 65) no VS (35 49) no Q 13 (67 -1) no Q (50 5) no Q- 14 (67 39) no Q (50 45) no _ (50 35) no Model @model (50 65) no Refdes U Model 7491 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 7492 CTR4 Counter to 12 Reference designator @refdes (-25 -5) yes R1 6 (0 77) no R1 (5 59) no R2 7 (20 77) no R2 (25 59) no Ca 14 (40 77) no Ca (45 59) no Cb 1 (60 77) no Cb (65 59) no QA 12 (0 -10) no QA (5 12) no QB 11 (20 -10) no QB (25 12) no QC 9 (40 -10) no QC (45 12) no QD 8 (60 -10) no QD (65 12) no VCC 5 (-15 29) no VC (2 35) no VSS 10 (85 29) no VS (68 35) no Model @model (-25 80) no Refdes U Model 7492 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 @model 7493 CTR4 Counter 4 bit Reference designator @refdes (-25 -5) yes R1 2 (0 77) no R1 (5 59) no R2 3 (20 77) no R2 (25 59) no Ca 14 (40 77) no Ca (45 59) no Cb 1 (60 77) no Cb (65 59) no QA 12 (0 -10) no QA (5 12) no QB 9 (20 -10) no QB (25 12) no QC 8 (40 -10) no QC (45 12) no QD 11 (60 -10) no QD (65 12) no VCC 5 (-15 29) no VC (2 35) no VSS 10 (85 29) no VS (68 35) no Model @model (-25 80) no Refdes U Model 7493 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 @model 7495 SFR4 Shift Register 4 bit Reference designator @refdes (-25 -5) yes D 1 (-15 19) no D (5 25) no Ca 9 (-15 39) no Ca (5 45) no Cb 8 (-15 59) no Cb (5 65) no PA 2 (8 95) no PA (15 79) no PB 3 (28 95) no PB (35 79) no PC 4 (48 95) no PC (55 79) no PD 5 (68 95) no PD (75 79) no QA 13 (8 -1) no QA (15 12) no QB 12 (28 -1) no QB (35 12) no QC 11 (48 -1) no QC (55 12) no QD 10 (68 -1) no QD (75 12) no VCC 14 (105 19) no VC (88 25) no S 6 (105 39) no S (88 45) no VSS 7 (105 59) no VS (88 65) no Model @model (-25 100) no Refdes U Model 7495 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model 74107a JKFFc JK Flip-Flop Reference designator @refdes (0 -20) yes 1J 1 (5 -1) no J (22 5) no 1C 12 (5 19) no CK (22 25) no 1K 4 (5 39) no K (22 45) no 1CL 13 (30 -15) no CL (35 2) no VSS 7 (30 65) no VS (35 49) no 1Q 3 (67 -1) no Q (50 5) no 1Q- 2 (67 39) no Q (50 45) no _ (50 35) no Model @model (50 65) no Refdes U Model 74107a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 74107b JKFFc JK Flip-Flop Reference designator @refdes (0 -20) yes 2J 8 (5 -1) no J (22 5) no 2C 9 (5 19) no CK (22 25) no 2K 11 (5 39) no K (22 45) no 2CL 10 (30 -15) no CL (35 2) no VCC 14 (30 65) no VC (35 49) no 2Q 5 (67 -1) no Q (50 5) no 2Q- 6 (67 39) no Q (50 45) no _ (50 35) no Model @model (50 65) no Refdes U Model 74107b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 74109a JKFFcs JK Flip-Flop Reference designator @refdes (0 -20) yes 1J 2 (5 -1) no J (22 5) no 1K 3 (5 19) no 1K (22 25) no 1C 4 (5 39) no CK (22 45) no 1S 5 (30 -15) no S (35 2) no 1CL 1 (30 65) no CL (35 49) no 1Q 6 (67 -1) no Q (50 5) no VSS 8 (67 39) no VS (47 45) no 1Q- 7 (67 19) no Q (50 25) no _ (50 15) no Model @model (50 65) no Refdes U Model 74109a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 74109b JKFFcs JK Flip-Flop Reference designator @refdes (0 -20) yes 2J 14 (5 -1) no J (22 5) no 2K 13 (5 19) no K (22 25) no 2C 12 (5 39) no CK (22 45) no 2S 11 (30 -15) no S (35 2) no 2CL 15 (30 65) no CL (35 49) no 2Q 10 (67 -1) no Q (50 5) no VCC 16 (67 39) no VC (47 45) no 2Q- 9 (67 19) no Q (50 25) no _ (50 15) no Model @model (50 65) no Refdes U Model 74109b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 74112a JKFFcs JK Flip-Flop Reference designator @refdes (0 -20) yes 1J 3 (5 -1) no J (22 5) no 1C 1 (5 19) no CK (22 25) no 1K 2 (5 39) no K (22 45) no 1S 4 (30 -15) no S (35 2) no 1CL 15 (30 65) no CL (35 49) no 1Q 5 (67 -1) no Q (50 5) no VSS 8 (67 39) no VS (47 45) no 1Q- 6 (67 19) no Q (50 25) no _ (50 15) no Model @model (50 65) no Refdes U Model 74112a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 74112b JKFFcs JK Flip-Flop Reference designator @refdes (0 -20) yes 2J 11 (5 -1) no J (22 5) no 2C 13 (5 19) no CK (22 25) no 2K 12 (5 39) no K (22 45) no 2S 10 (30 -15) no S (35 2) no 2CL 14 (30 65) no CL (35 49) no 2Q 9 (67 -1) no Q (50 5) no VCC 16 (67 39) no VC (47 45) no 2Q- 7 (67 19) no Q (50 25) no _ (50 15) no Model @model (50 65) no Refdes U Model 74112b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 74113a JKFFc JK Flip-Flop Reference designator @refdes (0 -20) yes 1J 3 (5 -1) no J (22 5) no 1C 1 (5 19) no CK (22 25) no 1K 2 (5 39) no K (22 45) no 1S 4 (30 -15) no S (35 2) no VSS 7 (30 65) no VS (35 49) no 1Q 5 (67 -1) no Q (50 5) no 1Q- 6 (67 39) no Q (50 45) no _ (50 35) no Model @model (50 65) no Refdes U Model 74113a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 74113b JKFFc JK Flip-Flop Reference designator @refdes (0 -20) yes 2J 11 (5 -1) no J (22 5) no 2C 13 (5 19) no CK (22 25) no 2K 12 (5 39) no K (22 45) no 2S 10 (30 -15) no S (35 2) no VCC 14 (30 65) no VC (35 49) no 2Q 9 (67 -1) no Q (50 5) no 2Q- 8 (67 39) no Q (50 45) no _ (50 35) no Model @model (50 65) no Refdes U Model 74113b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 74122 MONO1 Retriggerable Monostable Reference designator @refdes (-25 -25) yes C 11 (-15 9) no C (2 15) no RC 13 (-15 39) no RC (2 45) no R 9 (-15 79) no R (2 85) no A1 1 (-15 99) no A1 (2 105) no A2 2 (-15 119) no A2 (2 125) no VSS 7 (45 129) no VS (27 135) no VCC 14 (45 9) no VC (27 15) no Q 8 (45 29) no Q (27 35) no Q- 6 (45 49) no Q (27 55) no _ (27 24) no CL 5 (45 69) no CL (27 75) no B1 3 (45 89) no B1 (27 95) no B2 4 (45 109) no B2 (27 115) no Model @model (-25 162) yes Refdes U Model 74122 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 @model 74123a MONO2 Retriggerable Monostable Reference designator @refdes (-25 -25) yes 14 14 (17 2) no C (25 12) no 15 15 (-15 9) no RC (2 15) no 1 1 (-15 29) no A (2 35) no 8 8 (67 49) no VS (47 55) no 13 13 (67 9) no Q (47 15) no 4 4 (67 29) no Q (47 35) no _ (47 24) no 3 3 (15 77) no CL (25 59) no 2 2 (-15 49) no B (2 55) no Model @model (-25 95) yes Refdes U Model 74123a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 74123b MONO2 Retriggerable Monostable Reference designator @refdes (-25 -25) yes 6 6 (17 2) no C (25 12) no 7 7 (-15 9) no RC (2 15) no 9 9 (-15 29) no A (2 35) no 16 16 (67 49) no Vc (47 55) no 5 5 (67 9) no Q (47 15) no 12 12 (67 29) no Q (47 35) no _ (47 24) no 11 11 (15 77) no CL (25 59) no 10 10 (-15 49) no B (2 55) no Model @model (-25 95) yes Refdes U Model 74123b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 74125a BUFTRI4-p Buffer Tristate Reference designator @refdes (30 0) yes Model @model (35 55) no 2 2 (-8 18) no 3 3 (51 18) no 14 14 (2 -2) no 1 1 (2 52) no Refdes U Model 74125a Template X_@refdes %1 %2 %3 %4 @model 74125b BUFTRI4-p Buffer Tristate Reference designator @refdes (30 0) yes Model @model (35 55) no 5 5 (-8 18) no 6 6 (51 18) no 4 4 (2 52) no 7 7 (2 -2) no Refdes U Model 74125b Template X_@refdes %1 %2 %3 %4 @model 74125c BUFTRI4- Buffer Tristate Reference designator @refdes (30 0) yes Model @model (35 55) no 9 9 (-8 18) no 8 8 (51 18) no 10 10 (2 52) no Refdes U Model 74125c Template X_@refdes %1 %2 %3 @model 74125d BUFTRI4- Buffer Tristate Reference designator @refdes (30 0) yes Model @model (35 55) no 12 12 (-8 18) no 11 1 (51 18) no 13 13 (2 52) no Refdes U Model 74125d Template X_@refdes %1 %2 %3 @model 74126a BUFTRI4p Buffer Tristate Reference designator @refdes (30 0) yes Model @model (35 55) no 2 2 (-8 18) no 3 3 (51 18) no 14 14 (2 -2) no 1 1 (2 52) no Refdes U Model 74126a Template X_@refdes %1 %2 %3 %4 @model 74126b BUFTRI4p Buffer Tristate Reference designator @refdes (30 0) yes Model @model (35 55) no 5 5 (-8 18) no 6 6 (51 18) no 4 4 (2 52) no 7 7 (2 -2) no Refdes U Model 74126b Template X_@refdes %1 %2 %3 %4 @model 74126c BUFTRI4 Buffer Tristate Reference designator @refdes (30 0) yes Model @model (35 55) no 9 9 (-8 18) no 8 8 (51 18) no 10 10 (2 52) no Refdes U Model 74126c Template X_@refdes %1 %2 %3 @model 74126d BUFTRI4 Buffer Tristate Reference designator @refdes (30 0) yes Model @model (35 55) no 12 12 (-8 18) no 11 1 (51 18) no 13 13 (2 52) no Refdes U Model 74126d Template X_@refdes %1 %2 %3 @model 74128 EQ See 7402 74130 EQ See 7408 74131 EQ See 7408 74132 EQ See 7400 74133 NAND13 NAND 13 input Reference designator @refdes (30 -10) yes 10 10 (-15 -40) no 11 11 (-15 -30) no 12 12 (-15 -20) no 13 13 (-15 -10) no 14 14 (-15 0) no 15 15 (-15 10) no 1 1 (-15 20) no 2 2 (-15 30) no 3 3 (-15 40) no 4 4 (-15 50) no 5 5 (-15 60) no 6 6 (-15 70) no 7 7 (-15 80) no 9 9 (58 19) no 16 16 (7 -2) no 8 8 (10 52) no Model @model (30 70) yes Refdes U Model 74133 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74136 EQ See 7486 74137 3to8L 3 to 8 line decoder Reference designator @refdes (-20 110) yes 1 1 (-15 10) no A (2 15) no 2 2 (-15 20) no B (2 25) no 3 3 (-15 30) no C (2 35) no 6 6 (-15 60) no E3 (2 65) no 5 5 (-15 70) no E2 (2 75) no 4 4 (-15 80) no E1 (2 85) no 15 15 (46 10) no 0 (30 15) no 14 14 (46 20) no 1 (30 25) no 13 13 (46 30) no 2 (30 35) no 12 12 (46 40) no 3 (30 45) no 11 11 (46 50) no 4 (30 55) no 10 10 (46 60) no 5 (30 65) no 9 9 (46 70) no 6 (30 75) no 7 7 (46 80) no 7 (30 85) no 16 16 (8 -2) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 74137 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74138 EQ See 74137 74139a 3to4L 3 to 4 line decoder Reference designator @refdes (-20 70) yes 2 2 (-15 10) no A0 (2 15) no 3 3 (-15 30) no A1 (2 35) no 4 4 (46 10) no 0 (30 15) no 5 5 (46 20) no 1 (30 25) no 6 6 (46 30) no 2 (30 35) no 7 7 (46 40) no 3 (30 45) no 16 16 (8 -2) no 1 1 (8 70) no E (15 51) no Model @model (35 -10) no Refdes U Model 74139a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 74139b 3to4L 3 to 4 line decoder Reference designator @refdes (-20 70) yes 14 14 (-15 10) no A0 (2 15) no 13 13 (-15 30) no A1 (2 35) no 12 12 (46 10) no 0 (30 15) no 11 11 (46 20) no 1 (30 25) no 10 10 (46 30) no 2 (30 35) no 9 9 (46 40) no 3 (30 45) no 8 8 (8 -2) no 15 15 (8 70) no E (15 51) no Model @model (35 -10) no Refdes U Model 74139b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model 74145 EQ See 7442 74147 10to4E 10 to 4 priority encoder Reference designator @refdes (-20 120) yes 11 11 (-15 10) no 1 (2 15) no 12 12 (-15 20) no 2 (2 25) no 13 13 (-15 30) no 3 (2 35) no 1 1 (-15 40) no 4 (2 45) no 2 2 (-15 50) no 5 (2 55) no 3 3 (-15 60) no 6 (2 65) no 4 4 (-15 70) no 7 (2 75) no 5 5 (-15 80) no 8 (2 85) no 10 10 (-15 90) no 9 (2 95) no 9 9 (46 20) no A (30 25) no 7 7 (46 40) no B (30 45) no 6 6 (46 60) no C (30 65) no 14 14 (46 80) no D (30 85) no 16 16 (8 -2) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74147 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @model 74148 8to3E 8 to 3 priority encoder Reference designator @refdes (-20 110) yes 10 10 (-15 10) no 0 (2 15) no 11 11 (-15 20) no 1 (2 25) no 12 12 (-15 30) no 2 (2 35) no 13 13 (-15 40) no 3 (2 45) no 1 1 (-15 50) no 4 (2 55) no 2 2 (-15 60) no 5 (2 65) no 3 3 (-15 70) no 6 (2 75) no 4 4 (-15 80) no 7 (2 85) no 9 9 (46 10) no A (30 15) no 7 7 (46 20) no B (30 25) no 6 6 (46 30) no C (30 35) no 14 14 (46 60) no G (30 65) no 15 15 (46 70) no E0 (27 75) no 5 5 (46 80) no E1 (27 85) no 16 16 (8 -2) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 74148 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @model 74151 8to1M 8 to 1 multiplexer Reference designator @refdes (-20 110) yes 4 4 (-15 10) no 0 (2 15) no 3 3 (-15 20) no 1 (2 25) no 2 2 (-15 30) no 2 (2 35) no 1 1 (-15 40) no 3 (2 45) no 15 15 (-15 50) no 4 (2 55) no 14 14 (-15 60) no 5 (2 65) no 13 13 (-15 70) no 6 (2 75) no 12 12 (-15 80) no 7 (2 85) no 11 11 (46 10) no A (30 15) no 10 10 (46 20) no B (30 25) no 9 9 (46 30) no C (30 35) no 5 5 (46 60) no Z (30 65) no 6 6 (46 70) no Z (27 75) no 7 7 (46 80) no E (27 85) no 16 16 (8 -2) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 74151 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @model 74153 2x4M Dual 4 input multiplexer Reference designator @refdes (-20 120) yes 6 6 (-15 10) no a0 (2 15) no 5 5 (-15 20) no a1 (2 25) no 4 4 (-15 30) no a2 (2 35) no 3 3 (-15 40) no a3 (2 45) no 10 10 (-15 60) no b0 (2 65) no 11 11 (-15 70) no b1 (2 75) no 12 12 (-15 80) no b2 (2 85) no 13 13 (-15 90) no b3 (2 95) no 7 7 (46 10) no az (30 15) no 1 1 (46 20) no Ea (30 25) no 14 14 (46 40) no A0 (30 45) no 2 2 (46 60) no A1 (30 65) no 9 9 (46 80) no bz (30 85) no 15 15 (46 90) no Eb (30 95) no 16 16 (8 -2) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74153 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74155 3to8L Dual 1 to 4 decoder Reference designator @refdes (-20 110) yes 1 1 (-15 10) no Ea (2 15) no 14 14 (-15 20) no Eb (2 25) no 3 3 (-15 30) no A1 (2 35) no 13 13 (-15 60) no A0 (2 65) no 2 2 (-15 70) no Ea (2 75) no 15 15 (-15 80) no Eb (2 85) no 7 7 (46 10) no a0 (27 15) no 6 6 (46 20) no a1 (27 25) no 5 5 (46 30) no a2 (27 35) no 4 4 (46 40) no a3 (27 45) no 9 9 (46 50) no b0 (27 55) no 10 10 (46 60) no b1 (27 65) no 11 11 (46 70) no b2 (27 75) no 12 12 (46 80) no b3 (27 85) no 16 16 (8 -2) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 74155 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74156 EQ See 74155 74157 4x2M Quad 2 input multiplexer Reference designator @refdes (-20 140) yes 2 2 (-15 10) no a0 (2 15) no 3 3 (-15 20) no a1 (2 25) no 5 5 (-15 40) no b0 (2 45) no 6 6 (-15 50) no b1 (2 55) no 14 14 (-15 70) no c0 (2 75) no 13 13 (-15 80) no c1 (2 85) no 11 11 (-15 100) no d0 (2 105) no 10 10 (-15 110) no d1 (2 115) no 4 4 (46 10) no az (27 15) no 7 7 (46 30) no bz (27 35) no 12 12 (46 50) no cz (27 55) no 9 9 (46 70) no dz (27 75) no 1 1 (46 90) no S (27 95) no 15 15 (46 110) no E (27 115) no 16 16 (8 -2) no 8 8 (8 135) no Model @model (35 -10) no Refdes U Model 74157 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74158 EQ See 74157 74160 4PIC 4 bit BCD counter Reference designator @refdes (-25 105) yes 10 10 (-15 20) no ct (2 25) no 7 7 (-15 40) no cp (2 45) no 2 2 (-15 60) no ck (2 65) no 9 9 (1 95) no pe (5 79) no 3 3 (21 95) no P0 (25 79) no 4 4 (41 95) no P1 (45 79) no 5 5 (61 95) no P2 (65 79) no 6 6 (81 95) no P3 (85 79) no 15 15 (106 19) no t (90 25) no 1 1 (106 39) no R (90 45) no 8 8 (106 59) no VS (87 65) no 16 16 (0 -1) no VC (5 11) no 14 14 (19 -1) no Q0 (25 11) no 13 13 (39 -1) no Q1 (45 11) no 12 12 (59 -1) no Q2 (65 11) no 11 11 (79 -1) no Q3 (85 11) no Model @model (100 -10) no Refdes U Model 74160 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74161 EQ See 74160 (binary counter) 74162 EQ See 74160 74163 EQ See 74160 (binary counter) 74164 SIPO8 Serial inpul paralel out 8 bit shift reg. Reference designator @refdes (-10 110) yes 1 1 (-9 19) no A (2 25) no 2 2 (-9 39) no B (2 45) no 8 8 (-9 59) no CK (2 65) no 9 9 (-9 79) no R (2 85) no 13 13 (46 11) no Q7 (25 15) no 12 12 (46 21) no Q6 (25 25) no 11 11 (46 31) no Q5 (25 35) no 10 10 (46 41) no Q4 (25 45) no 6 6 (46 51) no Q3 (25 55) no 5 5 (46 61) no Q2 (25 65) no 4 4 (46 71) no Q1 (25 75) no 3 3 (46 81) no Q0 (25 85) no 14 14 (10 -1) no 7 7 (8 101) no Model @model (35 -10) no Refdes U Model 74164 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model 74165 8to1M 8 bit paralel to serial converter Reference designator @refdes (-20 110) yes 11 11 (-15 10) no P0 (2 15) no 12 12 (-15 20) no P1 (2 25) no 13 13 (-15 30) no P2 (2 35) no 14 14 (-15 40) no P3 (2 45) no 3 3 (-15 50) no P4 (2 55) no 4 4 (-15 60) no P5 (2 65) no 5 5 (-15 70) no P6 (2 75) no 6 6 (-15 80) no P7 (2 85) no 2 2 (46 10) no C1 (25 15) no 15 15 (46 20) no C2 (25 25) no 10 10 (46 30) no SD (25 35) no 9 9 (46 60) no Q7 (25 65) no 7 7 (46 70) no Q7 (25 75) no 1 1 (46 80) no PL (25 85) no 16 16 (8 -2) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 74165 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @model 74166 8to1M 8 bit shift register Reference designator @refdes (-20 110) yes 2 2 (-15 11) no P0 (2 15) no 3 3 (-15 21) no P1 (2 25) no 4 4 (-15 31) no P2 (2 35) no 5 5 (-15 41) no P3 (2 45) no 10 10 (-15 51) no P4 (2 55) no 11 11 (-15 61) no P5 (2 65) no 12 12 (-15 71) no P6 (2 75) no 14 14 (-15 81) no P7 (2 85) no 15 15 (46 10) no SL (25 15) no 6 6 (46 20) no CI (25 25) no 1 1 (46 30) no SD (25 35) no 13 13 (46 60) no Q7 (25 65) no 7 7 (46 70) no CK (25 75) no 9 9 (46 80) no CL (25 85) no 16 16 (8 -2) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 74166 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @model 74168 4PIC u|d 4 bit BCD counter Reference designator @refdes (-25 105) yes 10 10 (-15 20) no ct (2 25) no 7 7 (-15 40) no cp (2 45) no 2 2 (-15 60) no ck (2 65) no 9 9 (1 95) no pe (5 79) no 3 3 (21 95) no P0 (25 79) no 4 4 (41 95) no P1 (45 79) no 5 5 (61 95) no P2 (65 79) no 6 6 (81 95) no P3 (85 79) no 1 1 (106 19) no u|d (82 25) no 15 15 (106 39) no t (90 45) no 8 8 (106 59) no VS (87 65) no 16 16 (0 -1) no VC (5 11) no 14 14 (19 -1) no Q0 (25 11) no 13 13 (39 -1) no Q1 (45 11) no 12 12 (59 -1) no Q2 (65 11) no 11 11 (79 -1) no Q3 (85 11) no Model @model (100 -10) no Refdes U Model 74168 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74169 EQ See 74168 (binary counter) 74170 4PIC 4x4 register Reference designator @refdes (-25 105) yes 14 14 (-15 20) no WA (2 25) no 13 13 (-15 40) no WB (2 45) no 8 8 (-15 60) no VS (2 65) no 12 12 (1 95) no EW (5 79) no 15 15 (21 95) no D0 (25 79) no 1 1 (41 95) no D1 (45 79) no 2 2 (61 95) no D2 (65 79) no 3 3 (81 95) no D3 (85 79) no 5 5 (106 19) no RA (90 25) no 11 11 (106 39) no ER (90 45) no 4 4 (106 59) no RB (87 65) no 16 16 (0 -1) no VC (5 11) no 10 10 (19 -1) no Q0 (25 11) no 9 9 (39 -1) no Q1 (45 11) no 7 7 (59 -1) no Q2 (65 11) no 6 6 (79 -1) no Q3 (85 11) no Model @model (100 -10) no Refdes U Model 74170 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74173 LD4 Latch 4 Bit Reference designator @refdes (-15 120) yes 7 7 (-15 10) no CK (2 15) no 14 14 (-15 30) no D0 (2 35) no 13 13 (-15 40) no D1 (2 45) no 12 12 (-15 50) no D2 (2 55) no 11 11 (-15 60) no D3 (2 65) no 9 9 (-15 80) no 10 10 (-15 90) no IE (2 90) no 15 15 (46 10) no R (30 15) no 3 3 (46 30) no Q0 (27 35) no 4 4 (46 40) no Q1 (27 45) no 5 5 (46 50) no Q2 (27 55) no 6 6 (46 60) no Q3 (27 65) no 1 1 (46 80) no 2 2 (46 90) no OE (27 90) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74173 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74174 LD6 Latch 6 Bit Reference designator @refdes (-15 110) yes 3 3 (-15 10) no D0 (2 15) no 4 4 (-15 20) no D1 (2 25) no 6 6 (-15 30) no D2 (2 35) no 11 11 (-15 40) no D3 (2 45) no 13 13 (-15 50) no D4 (2 55) no 14 14 (-15 60) no D5 (2 65) no 9 9 (-15 80) no CK (2 85) no 2 2 (46 10) no Q0 (27 15) no 5 5 (46 20) no Q1 (27 25) no 7 7 (46 30) no Q2 (27 35) no 10 10 (46 40) no Q3 (27 45) no 12 12 (46 50) no Q4 (27 55) no 15 15 (46 60) no Q5 (27 65) no 1 1 (46 80) no R (27 85) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74174 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74175 4DL D Latch 4 bit Reference designator @refdes (-10 110) yes 4 4 (-17 20) no D0 (2 25) no 5 5 (-17 30) no D1 (2 35) no 12 12 (-17 40) no D2 (2 45) no 13 13 (-17 50) no D3 (2 55) no 9 9 (-17 70) no CK (2 75) no 1 1 (-17 80) no R (2 85) no 2 2 (47 10) no 3 3 (47 20) no Q0 (25 20) no 7 7 (47 30) no 6 6 (47 40) no Q1 (25 40) no 10 10 (47 50) no 11 11 (47 60) no Q2 (25 60) no 15 15 (47 70) no 14 14 (47 80) no Q3 (25 80) no 16 16 (6 -3) no 8 8 (7 107) no Model @model (35 -10) no Refdes U Model 74175 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74181 ALU4 4 bit ALU Reference designator @refdes (-10 170) yes 2 2 (-10 10) no A0 (2 15) no 23 23 (-15 20) no A1 (2 25) no 21 21 (-15 30) no A2 (2 35) no 19 19 (-15 40) no A3 (2 45) no 1 1 (-10 60) no B0 (2 65) no 22 22 (-15 70) no B1 (2 75) no 20 20 (-15 80) no B2 (2 85) no 18 18 (-15 90) no B3 (2 95) no 6 6 (-10 110) no S0 (2 115) no 5 5 (-10 120) no S1 (2 125) no 4 4 (-10 130) no S2 (2 135) no 3 3 (-10 140) no S3 (2 145) no 9 9 (46 10) no F0 (27 15) no 10 10 (46 20) no F1 (27 25) no 11 11 (46 30) no F2 (27 35) no 13 13 (46 40) no F3 (27 45) no 17 17 (46 60) no G (27 65) no 15 15 (46 70) no P (27 65) no 16 16 (46 80) no C0 (27 85) no 14 14 (46 90) no a=b (25 95) no 8 8 (46 130) no M (27 135) no 7 7 (46 140) no CI (27 145) no 24 24 (5 -1) no 12 12 (7 162) no Model @model (35 -10) no Refdes U Model 74181 Template 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 74182 CYG Carry Generator Reference designator @refdes (-15 120) yes 4 4 (-15 10) no P0 (2 15) no 2 2 (-15 20) no P1 (2 25) no 15 15 (-17 30) no P2 (2 35) no 6 6 (-15 40) no P3 (2 45) no 3 3 (-15 60) no G0 (2 65) no 1 1 (-15 70) no G1 (2 75) no 14 14 (-17 80) no G2 (2 85) no 5 5 (-15 90) no G3 (2 95) no 12 12 (46 10) no X (30 15) no 11 11 (46 20) no Y (30 25) no 9 9 (46 30) no Z (30 35) no 10 10 (46 50) no G (30 55) no 7 7 (46 60) no P (30 65) no 13 13 (46 80) no CI (27 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74182 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74183a ADDx2 Full Adder Reference designator @refdes (0 -20) yes 4 4 (5 -1) no CI (22 5) no 3 3 (5 19) no B (22 25) no 1 1 (5 39) no A (22 45) no 7 7 (30 65) no vs (35 49) no 5 5 (67 -1) no CO (45 5) no 6 6 (67 39) no Z (50 45) no Model @model (50 65) no Refdes U Model 74183a Template X_@refdes %1 %2 %3 %4 %5 %6 @model 74183b ADDx2 Full Adder Reference designator @refdes (0 -20) yes 11 11 (2 -1) no CI (22 5) no 12 12 (2 19) no B (22 25) no 13 13 (2 39) no A (22 45) no 14 14 (27 65) no vc (35 49) no 10 10 (67 -1) no CO (45 5) no 8 8 (67 39) no Z (50 45) no Model @model (50 65) no Refdes U Model 74183b Template X_@refdes %1 %2 %3 %4 %5 %6 @model 74190 4PIC u|d 4 bit BCD counter Reference designator @refdes (-25 105) yes 12 12 (-17 19) no tc (2 25) no 4 4 (-17 39) no ce (2 45) no 14 14 (-17 59) no ck (2 65) no 11 11 (0 95) no pl (5 79) no 15 15 (21 95) no P0 (25 79) no 1 1 (41 95) no P1 (45 79) no 10 10 (61 95) no P2 (65 79) no 9 9 (81 95) no P3 (85 79) no 5 5 (106 19) no u|d (82 25) no 13 13 (106 39) no R (90 45) no 8 8 (106 59) no VS (87 65) no 16 16 (0 -1) no VC (5 11) no 3 3 (19 -1) no Q0 (25 11) no 2 2 (39 -1) no Q1 (45 11) no 6 6 (59 -1) no Q2 (65 11) no 7 7 (79 -1) no Q3 (85 11) no Model @model (100 -10) no Refdes U Model 74190 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74191 EQ See 74190 (binary counter) 74192 4PICu u|d 4 bit BCD counter Reference designator @refdes (-25 105) yes 5 5 (-17 19) no Cu (2 25) no 4 4 (-17 39) no Cd (2 45) no 14 14 (-17 59) no R (2 65) no 11 11 (0 95) no pl (5 79) no 15 15 (21 95) no P0 (25 79) no 1 1 (41 95) no P1 (45 79) no 10 10 (61 95) no P2 (65 79) no 9 9 (81 95) no P3 (85 79) no 12 12 (106 19) no Tu (87 25) no 13 13 (106 39) no Td (87 45) no 8 8 (106 59) no vs (87 65) no 16 16 (-1 -1) no vc (5 11) no 3 3 (19 -1) no Q0 (25 11) no 2 2 (39 -1) no Q1 (45 11) no 6 6 (59 -1) no Q2 (65 11) no 7 7 (79 -1) no Q3 (85 11) no Model @model (100 -10) no Refdes U Model 74192 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74193 EQ See 74192 (binary counter) 74194 SR4b Bidirectional 4 Bit Shift Register Reference designator @refdes (-15 120) yes 11 11 (-15 10) no CK (2 15) no 3 3 (-15 30) no P0 (2 35) no 4 4 (-15 40) no P1 (2 45) no 5 5 (-15 50) no P2 (2 55) no 6 6 (-15 60) no P3 (2 65) no 9 9 (-15 80) no S0 (2 85) no 10 10 (-15 90) no S1 (2 95) no 7 7 (46 10) no SL (27 15) no 15 15 (46 30) no Q0 (27 35) no 14 14 (46 40) no Q1 (27 45) no 13 13 (46 50) no Q2 (27 55) no 12 12 (46 60) no Q3 (27 65) no 2 2 (46 80) no SR (27 85) no 1 1 (46 90) no R (27 95) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74194 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74195 LD4 4 bit shift register Reference designator @refdes (-15 120) yes 2 2 (-15 10) no J (2 15) no 4 4 (-15 30) no P0 (2 35) no 5 5 (-15 40) no P1 (2 45) no 6 6 (-15 50) no P2 (2 55) no 7 7 (-15 60) no P3 (2 65) no 9 9 (-15 80) no PE (2 85) no 3 3 (-15 90) no K (2 95) no 10 10 (46 10) no CK (26 15) no 15 15 (46 30) no Q0 (26 35) no 14 14 (46 40) no Q1 (26 45) no 13 13 (46 50) no Q2 (26 55) no 12 12 (46 60) no Q3 (26 65) no 11 11 (46 80) no Q3 (26 85) no __ (26 75) no 1 1 (46 90) no MR (26 95) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74195 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74196 4RCOUNT BCD presettable counter Reference designator @refdes (-25 -5) yes 14 14 (-15 19) no vc (5 25) no 8 8 (-15 39) no C0 (5 45) no 6 6 (-15 59) no C1 (5 65) no 4 4 (8 95) no P0 (15 79) no 10 10 (28 95) no P1 (35 79) no 3 3 (48 95) no P2 (55 79) no 11 11 (68 95) no P3 (75 79) no 5 5 (8 -1) no Q0 (15 12) no 9 9 (28 -1) no Q1 (35 12) no 2 2 (48 -1) no Q2 (55 12) no 12 12 (68 -1) no Q3 (75 12) no 7 7 (105 19) no vs (86 25) no 1 1 (105 39) no P (86 45) no 13 13 (105 59) no R (86 65) no Model @model (-25 100) no Refdes U Model 74196 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model 74197 EQ See 74196 (binary) 74221 EQ See 74123 74240 BUF8i 8 bit inverter Tri-State Buffer Reference designator @refdes (-20 140) yes 2 2 (-15 11) no A1 (2 15) no 4 4 (-15 21) no A2 (2 25) no 6 6 (-15 31) no A3 (2 35) no 8 8 (-15 41) no A4 (2 45) no 11 11 (-18 51) no B1 (2 55) no 13 13 (-18 61) no B2 (2 65) no 15 15 (-18 71) no B3 (2 75) no 17 17 (-18 81) no B4 (2 85) no 18 18 (47 11) no Y1 (27 15) no 16 16 (47 21) no Y2 (27 25) no 14 14 (47 31) no Y3 (27 35) no 12 12 (47 41) no Y4 (27 45) no 9 9 (50 51) no Z1 (27 55) no 7 7 (50 61) no Z2 (27 65) no 5 5 (50 71) no Z3 (27 75) no 3 3 (50 81) no Z4 (27 85) no 1 1 (-15 101) no GA (2 105) no 19 19 (-18 111) no GB (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74240 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74241 BUF8nis 8 bit Tri-State Buffer Reference designator @refdes (-20 140) yes 2 2 (-15 11) no A1 (2 15) no 4 4 (-15 21) no A2 (2 25) no 6 6 (-15 31) no A3 (2 35) no 8 8 (-15 41) no A4 (2 45) no 11 11 (-18 51) no B1 (2 55) no 13 13 (-18 61) no B2 (2 65) no 15 15 (-18 71) no B3 (2 75) no 17 17 (-18 81) no B4 (2 85) no 18 18 (47 11) no Y1 (27 15) no 16 16 (47 21) no Y2 (27 25) no 14 14 (47 31) no Y3 (27 35) no 12 12 (47 41) no Y4 (27 45) no 9 9 (50 51) no Z1 (27 55) no 7 7 (50 61) no Z2 (27 65) no 5 5 (50 71) no Z3 (27 75) no 3 3 (50 81) no Z4 (27 85) no 1 1 (-15 101) no GA (2 105) no 19 19 (-18 111) no GB (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74241 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74244 BUF8ni 8 bit Tri-State Buffer Reference designator @refdes (-20 140) yes 2 2 (-15 11) no A1 (2 15) no 4 4 (-15 21) no A2 (2 25) no 6 6 (-15 31) no A3 (2 35) no 8 8 (-15 41) no A4 (2 45) no 11 11 (-18 51) no B1 (2 55) no 13 13 (-18 61) no B2 (2 65) no 15 15 (-18 71) no B3 (2 75) no 17 17 (-18 81) no B4 (2 85) no 18 18 (47 11) no Y1 (27 15) no 16 16 (47 21) no Y2 (27 25) no 14 14 (47 31) no Y3 (27 35) no 12 12 (47 41) no Y4 (27 45) no 9 9 (50 51) no Z1 (27 55) no 7 7 (50 61) no Z2 (27 65) no 5 5 (50 71) no Z3 (27 75) no 3 3 (50 81) no Z4 (27 85) no 1 1 (-15 101) no GA (2 105) no 19 19 (-18 111) no GB (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74244 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74245 BUF8nis 8 bit Tri-State Buffer Reference designator @refdes (-20 140) yes 2 2 (-15 11) no A1 (2 15) no 3 3 (-15 21) no A2 (2 25) no 4 4 (-15 31) no A3 (2 35) no 5 5 (-15 41) no A4 (2 45) no 6 6 (-18 51) no A5 (2 55) no 7 7 (-18 61) no A6 (2 65) no 8 8 (-18 71) no A7 (2 75) no 9 9 (-18 81) no A8 (2 85) no 18 18 (47 11) no B1 (27 15) no 17 17 (47 21) no B2 (27 25) no 16 16 (47 31) no B3 (27 35) no 15 15 (47 41) no B4 (27 45) no 14 14 (50 51) no B5 (27 55) no 13 13 (50 61) no B6 (27 65) no 12 12 (50 71) no B7 (27 75) no 11 11 (50 81) no B8 (27 85) no 19 19 (-15 101) no E (2 105) no 1 1 (-18 111) no DIR (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74245 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74242 BUF4i 4 bit inverter Tri-State Buffer Reference designator @refdes (-20 100) yes 3 3 (-15 11) no A1 (2 15) no 4 4 (-15 21) no A2 (2 25) no 5 5 (-15 31) no A3 (2 35) no 6 6 (-15 41) no A4 (2 45) no 11 11 (47 11) no B1 (27 15) no 10 10 (47 21) no B2 (27 25) no 9 9 (47 31) no B3 (27 35) no 8 8 (47 41) no B4 (27 45) no 1 1 (-15 61) no Gab (2 65) no 13 13 (-18 71) no Gba (2 75) no 14 14 (3 -1) no 7 7 (3 98) no Model @model (35 -10) no Refdes U Model 74242 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 @model 74243 BUF4ni 4 bit Tri-State Buffer Reference designator @refdes (-20 100) yes 3 3 (-15 11) no A1 (2 15) no 4 4 (-15 21) no A2 (2 25) no 5 5 (-15 31) no A3 (2 35) no 6 6 (-15 41) no A4 (2 45) no 11 11 (47 11) no B1 (27 15) no 10 10 (47 21) no B2 (27 25) no 9 9 (47 31) no B3 (27 35) no 8 8 (47 41) no B4 (27 45) no 1 1 (-15 61) no Gab (2 65) no 13 13 (-18 71) no Gba (2 75) no 14 14 (3 -1) no 7 7 (3 98) no Model @model (35 -10) no Refdes U Model 74243 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 @model 74247 EQ See 7446 74248 EQ See 7448 74249 EQ See 7448 74251 EQ See 74151 74253 EQ See 74153 74256 1to8AL dual 4 bit addressable latch Reference designator @refdes (-20 110) yes 1 1 (-15 10) no A0 (2 15) no 2 2 (-15 20) no A1 (2 25) no 3 3 (-15 30) no Da (2 35) no 13 13 (-15 60) no Db (2 65) no 14 14 (-15 70) no E (2 75) no 15 15 (-15 80) no CL (2 85) no 4 4 (46 10) no Y0 (27 15) no 5 5 (46 20) no Y1 (27 25) no 6 6 (46 30) no Y2 (27 35) no 7 7 (46 40) no Y3 (27 45) no 9 9 (46 50) no Z0 (27 55) no 10 10 (46 60) no Z1 (27 65) no 11 11 (46 70) no Z2 (27 75) no 12 12 (46 80) no Z3 (27 85) no 16 16 (8 -2) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 74256 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @model 74257 EQ See 74157 74258 EQ See 74157 74259 1to8AL 8 bit addressable latch Reference designator @refdes (-20 110) yes 1 1 (-15 10) no A0 (2 15) no 2 2 (-15 20) no A1 (2 25) no 3 3 (-15 30) no A2 (2 35) no 13 13 (-15 60) no D (2 65) no 14 14 (-15 70) no E (2 75) no 15 15 (-15 80) no CL (2 85) no 4 4 (46 10) no Y0 (27 15) no 5 5 (46 20) no Y1 (27 25) no 6 6 (46 30) no Y2 (27 35) no 7 7 (46 40) no Y3 (27 45) no 9 9 (46 50) no Y4 (27 55) no 10 10 (46 60) no Y5 (27 65) no 11 11 (46 70) no Y6 (27 75) no 12 12 (46 80) no Y7 (27 85) no 16 16 (8 -2) no 8 8 (8 105) no Model @model (35 -10) no Refdes U Model 74259 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @model 74260a NOR5 NOR 5 input Reference designator @refdes (15 15) yes 1 1 (-15 11) no 2 2 (-15 21) no 3 3 (-15 31) no 12 12 (-15 41) no 13 13 (-15 51) no 5 5 (85 30) no 7 7 (5 75) no Model @model (15 35) no Refdes U Model 74260a Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 74260b NOR5 5 input NOR Reference designator @refdes (15 15) yes 4 4 (-15 11) no 8 8 (-15 21) no 9 9 (-15 31) no 10 10 (-15 41) no 11 11 (-15 51) no 6 6 (85 30) no 14 14 (5 75) no Model @model (15 35) no Refdes U Model 74260b Template X_@refdes %1 %2 %3 %4 %5 %6 %7 @model 74266a XNORp XNOR Reference designator @refdes (10 15) yes 1 1 (-18 8) no 2 2 (-18 28) no 3 3 (51 18) no 14 14 (-2 -2) no 7 7 (0 52) no Model @model (7 30) no Refdes U Model 74266a Template X_@refdes %1 %2 %3 %4 %5 @model 74266b XNOR XNOR Reference designator @refdes (10 15) yes 6 6 (-18 8) no 5 5 (-18 28) no 4 4 (51 18) no Model @model (8 30) no Refdes U Model 74266b Template X_@refdes %1 %2 %3 @model 74266c XNOR XNOR Reference designator @refdes (10 15) yes 8 8 (-18 9) no 9 9 (-18 29) no 10 10 (51 18) no Model @model (8 30) no Refdes U Model 74266c Template X_@refdes %1 %2 %3 @model 74266d XNOR XNOR Reference designator @refdes (10 15) yes 13 13 (-18 9) no 12 12 (-18 29) no 11 11 (51 18) no Model @model (8 30) no Refdes U Model 74266d Template X_@refdes %1 %2 %3 @model 74273 BUF8nis Octal D Flip Flop Reference designator @refdes (-20 140) yes 3 3 (-18 11) no D0 (2 15) no 4 4 (-18 21) no D1 (2 25) no 7 7 (-18 31) no D2 (2 35) no 8 8 (-18 41) no D3 (2 45) no 13 13 (-18 51) no D4 (2 55) no 14 14 (-18 61) no D5 (2 65) no 17 17 (-18 71) no D6 (2 75) no 18 18 (-18 81) no D7 (2 85) no 2 2 (47 11) no Q0 (27 15) no 5 5 (47 21) no Q1 (27 25) no 6 6 (47 31) no Q2 (27 35) no 9 9 (47 41) no Q3 (27 45) no 12 12 (47 51) no Q4 (27 55) no 15 15 (47 61) no Q5 (27 65) no 16 16 (47 71) no Q6 (27 75) no 19 19 (47 81) no Q7 (27 85) no 1 1 (-18 101) no MR (2 105) no 11 11 (-18 111) no CK (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74273 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74279a 4RSLp Set Reset Latch Reference designator @refdes (0 -20) yes 14 14 (5 -1) no R (22 5) no 15 15 (5 19) no S (22 25) no 8 8 (5 39) no VS (22 45) no 13 13 (67 -1) no Q (50 5) no Model @model (50 65) no Refdes U Model 74279a Template X_@refdes %1 %2 %3 %4 @model 74279b 4RSLp Set Reset Latch Reference designator @refdes (0 -20) yes 5 5 (5 -1) no R (22 5) no 6 6 (5 19) no S (22 25) no 16 16 (5 39) no VC (22 45) no 7 7 (67 -1) no Q (50 5) no Model @model (50 65) no Refdes U Model 74279b Template X_@refdes %1 %2 %3 %4 @model 74279c 4RSL Set Reset Latch Reference designator @refdes (0 -20) yes 1 1 (5 -1) no R (22 5) no 2 2 (5 19) no S1 (22 25) no 3 3 (5 39) no S2 (22 45) no 4 4 (67 -1) no Q (50 5) no Model @model (50 65) no Refdes U Model 74279c Template X_@refdes %1 %2 %3 %4 @model 74279d 4RSL Set Reset Latch Reference designator @refdes (0 -20) yes 10 10 (5 -1) no R (22 5) no 11 11 (5 19) no S1 (22 25) no 12 12 (5 39) no S2 (22 45) no 9 9 (67 -1) no Q (50 5) no Model @model (50 65) no Refdes U Model 74279d Template X_@refdes %1 %2 %3 %4 @model 74280 9to2 9 bit parity generator Reference designator @refdes (-20 120) yes 8 8 (-15 11) no 1 (2 15) no 9 9 (-15 21) no 2 (2 25) no 10 10 (-15 31) no 3 (2 35) no 11 11 (-15 41) no 4 (2 45) no 12 12 (-15 51) no 5 (2 55) no 13 13 (-15 61) no 6 (2 65) no 1 1 (-15 71) no 7 (2 75) no 2 2 (-15 81) no 8 (2 85) no 4 4 (-15 91) no 9 (2 95) no 5 5 (46 30) no EV (27 35) no 6 6 (46 60) no OD (27 65) no 16 16 (8 -2) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74280 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 @model 74283 4BFA 4 bit full adder Reference designator @refdes (-15 120) yes 5 5 (-17 11) no A1 (2 15) no 3 3 (-17 21) no A2 (2 25) no 14 14 (-17 31) no A3 (2 35) no 12 12 (-17 41) no A4 (2 45) no 6 6 (-17 61) no B1 (2 65) no 2 2 (-17 71) no B2 (2 75) no 15 15 (-17 81) no B3 (2 85) no 11 11 (-11 91) no B4 (2 95) no 4 4 (46 11) no S1 (25 15) no 1 1 (46 21) no S2 (25 25) no 13 13 (46 31) no S3 (25 35) no 10 10 (46 41) no S4 (25 45) no 9 9 (46 61) no CO (25 65) no 7 7 (46 81) no CI (25 85) no 16 16 (5 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74283 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74290 4DLs Decade Counter Reference designator @refdes (-10 110) yes 12 12 (-18 21) no R1 (2 25) no 13 13 (-18 31) no R2 (2 35) no 1 1 (-18 41) no S1 (2 45) no 3 3 (-18 51) no S2 (2 55) no 10 10 (-18 71) no Ca (2 75) no 11 11 (-18 81) no Cb (2 85) no 9 9 (46 11) no QA (25 15) no 5 5 (46 31) no QB (25 35) no 4 4 (46 51) no QC (25 55) no 8 8 (46 71) no QD (25 75) no 14 14 (10 -1) no 7 7 (7 102) no Model @model (35 -10) no Refdes U Model 74290 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 @model 74293 CTR4 Counter 4 bit Reference designator @refdes (-25 -5) yes 12 12 (0 77) no R1 (5 59) no 13 13 (20 77) no R2 (25 59) no 10 10 (40 77) no Ca (45 59) no 11 11 (60 77) no Cb (65 59) no 9 9 (0 -10) no QA (5 12) no 5 5 (20 -10) no QB (25 12) no 4 4 (40 -10) no QC (45 12) no 8 8 (60 -10) no QD (65 12) no 14 14 (-15 29) no VC (2 35) no 7 7 (83 29) no VS (68 35) no Model @model (-30 80) no Refdes U Model 74293 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 @model 74295 SRTS4 4 bit shift register Reference designator @refdes (-15 110) yes 6 6 (-15 10) no PE (2 15) no 2 2 (-15 30) no P0 (2 35) no 3 3 (-15 40) no P1 (2 45) no 4 4 (-15 50) no P2 (2 55) no 5 5 (-15 60) no P3 (2 65) no 9 9 (-15 80) no CK (2 85) no 8 8 (46 10) no OE (27 15) no 13 13 (46 30) no Q0 (27 35) no 12 12 (46 40) no Q1 (27 45) no 11 11 (46 50) no Q2 (27 55) no 10 10 (46 60) no Q3 (27 65) no 1 1 (46 80) no DS (27 90) no 14 14 (8 -1) no 7 7 (8 105) no Model @model (35 -10) no Refdes U Model 74295 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model 74298 4x2M Quad 2 input multiplexer Reference designator @refdes (-20 140) yes 3 3 (-15 10) no a0 (2 15) no 2 2 (-15 20) no a1 (2 25) no 4 4 (-15 40) no b0 (2 45) no 1 1 (-15 50) no b1 (2 55) no 9 9 (-15 70) no c0 (2 75) no 5 5 (-15 80) no c1 (2 85) no 7 7 (-15 100) no d0 (2 105) no 6 6 (-15 110) no d1 (2 115) no 15 15 (46 10) no az (27 15) no 14 14 (46 30) no bz (27 35) no 13 13 (46 50) no cz (27 55) no 12 12 (46 70) no dz (27 75) no 10 10 (46 90) no S (27 95) no 11 11 (46 110) no ck (27 115) no 16 16 (8 -2) no 8 8 (8 135) no Model @model (35 -10) no Refdes U Model 74298 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74299 BUF8ni 8 bit shift register Reference designator @refdes (-20 140) yes 1 1 (-17 11) no M0 (2 15) no 19 19 (-17 21) no M1 (2 25) no 11 11 (-17 31) no S0 (2 35) no 18 18 (-17 41) no S7 (2 45) no 8 8 (-17 51) no Q0 (2 55) no 17 17 (-17 61) no Q7 (2 65) no 9 9 (-17 71) no R (2 75) no 12 12 (-17 81) no CK (2 85) no 7 7 (47 11) no P0 (27 15) no 13 13 (47 21) no P1 (27 25) no 6 6 (47 31) no P2 (27 35) no 14 14 (47 41) no P3 (27 45) no 5 5 (47 51) no P4 (27 55) no 15 15 (47 61) no P5 (27 65) no 4 4 (47 71) no P6 (27 75) no 16 16 (47 81) no P7 (27 85) no 2 2 (-17 101) no E1 (2 105) no 3 3 (-17 111) no E2 (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74299 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74322 8SRSE 8 bit shift register Reference designator @refdes (-20 120) yes 2 2 (-17 11) no S\P (2 15) no 3 3 (-17 21) no D0 (2 25) no 17 17 (-17 31) no D1 (2 35) no 11 11 (-17 41) no CK (2 45) no 12 12 (-17 51) no Q7 (2 55) no 1 1 (-17 61) no G (2 65) no 9 9 (-17 71) no R (2 75) no 12 12 (-17 81) no CK (2 85) no 18 18 (-17 91) no SE (2 95) no 4 4 (47 11) no P0 (27 15) no 16 16 (47 21) no P1 (27 25) no 5 5 (47 31) no P2 (27 35) no 15 15 (47 41) no P3 (27 45) no 6 6 (47 51) no P4 (27 55) no 14 14 (47 61) no P5 (27 65) no 7 7 (47 71) no P6 (27 75) no 13 13 (47 81) no P7 (27 85) no 8 8 (47 91) no OE (27 95) no 20 20 (3 -1) no 10 10 (3 118) no Model @model (35 -10) no Refdes U Model 74322 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74323 EQ See 74299 74348 EQ See 74148 74352 EQ See 74153 74353 EQ See 74153 74365 BF6ni Hex buffer Reference designator @refdes (-15 110) yes 2 2 (-15 10) no A0 (2 15) no 4 4 (-15 20) no A1 (2 25) no 6 6 (-15 30) no A2 (2 35) no 10 10 (-15 40) no A3 (2 45) no 12 12 (-15 50) no A4 (2 55) no 14 14 (-15 60) no A5 (2 65) no 1 1 (-15 80) no E1 (2 85) no 3 3 (46 10) no Y0 (27 15) no 5 5 (46 20) no Y1 (27 25) no 7 7 (46 30) no Y2 (27 35) no 9 9 (46 40) no Y3 (27 45) no 11 11 (46 50) no Y4 (27 55) no 13 13 (46 60) no Y5 (27 65) no 15 15 (46 80) no E2 (27 85) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74365 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74367 BF6ni Hex buffer Reference designator @refdes (-15 110) yes 2 2 (-15 10) no A0 (2 15) no 4 4 (-15 20) no A1 (2 25) no 6 6 (-15 30) no A2 (2 35) no 10 10 (-15 40) no A3 (2 45) no 12 12 (-15 50) no B0 (2 55) no 14 14 (-15 60) no B1 (2 65) no 1 1 (-15 80) no EA (2 85) no 3 3 (46 10) no Y0 (27 15) no 5 5 (46 20) no Y1 (27 25) no 7 7 (46 30) no Y2 (27 35) no 9 9 (46 40) no Y3 (27 45) no 11 11 (46 50) no Z0 (27 55) no 13 13 (46 60) no Z1 (27 65) no 15 15 (46 80) no EB (27 85) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74367 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74366 BF6i Hex inverter buffer Reference designator @refdes (-15 110) yes 2 2 (-15 10) no A0 (2 15) no 4 4 (-15 20) no A1 (2 25) no 6 6 (-15 30) no A2 (2 35) no 10 10 (-15 40) no A3 (2 45) no 12 12 (-15 50) no A4 (2 55) no 14 14 (-15 60) no A5 (2 65) no 1 1 (-15 80) no E1 (2 85) no 3 3 (46 10) no Y0 (27 15) no 5 5 (46 20) no Y1 (27 25) no 7 7 (46 30) no Y2 (27 35) no 9 9 (46 40) no Y3 (27 45) no 11 11 (46 50) no Y4 (27 55) no 13 13 (46 60) no Y5 (27 65) no 15 15 (46 80) no E2 (27 85) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74366 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74368 BF6i Hex inverter buffer Reference designator @refdes (-15 110) yes 2 2 (-15 10) no A0 (2 15) no 4 4 (-15 20) no A1 (2 25) no 6 6 (-15 30) no A2 (2 35) no 10 10 (-15 40) no A3 (2 45) no 12 12 (-15 50) no B0 (2 55) no 14 14 (-15 60) no B1 (2 65) no 1 1 (-15 80) no EA (2 85) no 3 3 (46 10) no Y0 (27 15) no 5 5 (46 20) no Y1 (27 25) no 7 7 (46 30) no Y2 (27 35) no 9 9 (46 40) no Y3 (27 45) no 11 11 (46 50) no Z0 (27 55) no 13 13 (46 60) no Z1 (27 65) no 15 15 (46 80) no EB (27 85) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74368 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74373 BUF8nis 8 bit latch Reference designator @refdes (-20 140) yes 3 3 (-17 11) no D0 (2 15) no 4 4 (-17 21) no D1 (2 25) no 7 7 (-17 31) no D2 (2 35) no 8 8 (-17 41) no D3 (2 45) no 13 13 (-17 51) no D4 (2 55) no 14 14 (-17 61) no D5 (2 65) no 17 17 (-17 71) no D6 (2 75) no 18 18 (-17 81) no D7 (2 85) no 2 2 (47 11) no Q0 (27 15) no 5 5 (47 21) no Q1 (27 25) no 6 6 (47 31) no Q2 (27 35) no 9 9 (47 41) no Q3 (27 45) no 12 12 (47 51) no Q4 (27 55) no 15 15 (47 61) no Q5 (27 65) no 16 16 (47 71) no Q6 (27 75) no 19 19 (47 81) no Q7 (27 85) no 1 1 (-17 101) no OE (2 105) no 11 11 (-17 111) no LE (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74373 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74374 BUF8nis Octal D Flip-Flop Reference designator @refdes (-20 140) yes 3 3 (-17 11) no D0 (2 15) no 4 4 (-17 21) no D1 (2 25) no 7 7 (-17 31) no D2 (2 35) no 8 8 (-17 41) no D3 (2 45) no 13 13 (-17 51) no D4 (2 55) no 14 14 (-17 61) no D5 (2 65) no 17 17 (-17 71) no D6 (2 75) no 18 18 (-17 81) no D7 (2 85) no 2 2 (47 11) no Q0 (27 15) no 5 5 (47 21) no Q1 (27 25) no 6 6 (47 31) no Q2 (27 35) no 9 9 (47 41) no Q3 (27 45) no 12 12 (47 51) no Q4 (27 55) no 15 15 (47 61) no Q5 (27 65) no 16 16 (47 71) no Q6 (27 75) no 19 19 (47 81) no Q7 (27 85) no 1 1 (-17 101) no OE (2 105) no 11 11 (-17 111) no CK (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74374 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74375 4DL D Latch 4 bit Reference designator @refdes (-10 110) yes 1 1 (-17 21) no D0 (2 25) no 7 7 (-17 31) no D1 (2 35) no 9 9 (-17 41) no D2 (2 45) no 15 15 (-17 51) no D3 (2 55) no 4 4 (-17 71) no E1 (2 75) no 12 12 (-17 81) no E2 (2 85) no 3 3 (47 11) no 2 2 (47 21) no Q0 (25 20) no 5 5 (47 31) no 6 6 (47 41) no Q1 (25 40) no 11 11 (47 51) no 10 10 (47 61) no Q2 (25 60) no 13 13 (47 71) no 14 14 (47 81) no Q3 (25 80) no 16 16 (6 -3) no 8 8 (6 107) no Model @model (35 -10) no Refdes U Model 74375 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74377 BUF8nis Octal D Flip-Flop Reference designator @refdes (-20 140) yes 3 3 (-17 11) no D0 (2 15) no 4 4 (-17 21) no D1 (2 25) no 7 7 (-17 31) no D2 (2 35) no 8 8 (-17 41) no D3 (2 45) no 13 13 (-17 51) no D4 (2 55) no 14 14 (-17 61) no D5 (2 65) no 17 17 (-17 71) no D6 (2 75) no 18 18 (-17 81) no D7 (2 85) no 2 2 (47 11) no Q0 (27 15) no 5 5 (47 21) no Q1 (27 25) no 6 6 (47 31) no Q2 (27 35) no 9 9 (47 41) no Q3 (27 45) no 12 12 (47 51) no Q4 (27 55) no 15 15 (47 61) no Q5 (27 65) no 16 16 (47 71) no Q6 (27 75) no 19 19 (47 81) no Q7 (27 85) no 1 1 (-17 101) no E (2 105) no 11 11 (-17 111) no CK (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74377 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74378 LD6 Latch 6 Bit Reference designator @refdes (-15 110) yes 3 3 (-17 11) no D0 (2 15) no 4 4 (-17 21) no D1 (2 25) no 6 6 (-17 31) no D2 (2 35) no 11 11 (-17 41) no D3 (2 45) no 13 13 (-17 51) no D4 (2 55) no 14 14 (-17 61) no D5 (2 65) no 9 9 (-17 81) no CK (2 85) no 2 2 (47 11) no Q0 (27 15) no 5 5 (47 21) no Q1 (27 25) no 7 7 (47 31) no Q2 (27 35) no 10 10 (47 41) no Q3 (27 45) no 12 12 (47 51) no Q4 (27 55) no 15 15 (47 61) no Q5 (27 65) no 1 1 (47 81) no E (27 85) no 16 16 (8 -1) no 8 8 (8 115) no Model @model (35 -10) no Refdes U Model 74378 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74379 4DL D Latch 4 bit Reference designator @refdes (-10 110) yes 4 4 (-17 21) no D0 (2 25) no 5 5 (-17 31) no D1 (2 35) no 12 12 (-17 41) no D2 (2 45) no 13 13 (-17 51) no D3 (2 55) no 9 9 (-17 71) no CK (2 75) no 1 1 (-17 81) no E (2 85) no 2 2 (47 11) no 3 3 (47 21) no Q0 (25 20) no 7 7 (47 31) no 6 6 (47 41) no Q1 (25 40) no 10 10 (47 51) no 11 11 (47 61) no Q2 (25 60) no 15 15 (47 71) no 14 14 (47 81) no Q3 (25 80) no 16 16 (6 -3) no 8 8 (7 107) no Model @model (35 -10) no Refdes U Model 74379 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74385 BUF8nis Quad serial adder Reference designator @refdes (-20 140) yes 5 5 (-17 11) no A1 (2 15) no 4 4 (-17 21) no B1 (2 25) no 6 6 (-17 31) no A2 (2 35) no 7 7 (-17 41) no B2 (2 45) no 15 15 (-17 51) no A3 (2 55) no 14 14 (-17 61) no B3 (2 65) no 16 16 (-17 71) no A4 (2 75) no 17 17 (-17 81) no B4 (2 85) no 2 2 (47 11) no Y1 (27 15) no 3 3 (47 21) no M1 (27 25) no 9 9 (47 31) no Y2 (27 35) no 8 8 (47 41) no M2 (27 45) no 12 12 (47 51) no Y3 (27 55) no 13 13 (47 61) no M3 (27 65) no 19 19 (47 71) no Y4 (27 75) no 18 18 (47 81) no M4 (27 85) no 11 11 (-17 101) no CL (2 105) no 1 1 (-17 111) no CK (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74385 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74386a XORp XOR Reference designator @refdes (10 15) yes 1 1 (-18 8) no 2 2 (-18 28) no 3 3 (51 18) no 14 14 (-2 -2) no 7 7 (0 52) no Model @model (7 30) no Refdes U Model 74386a Template X_@refdes %1 %2 %3 %4 %5 @model 74386b XOR XOR Reference designator @refdes (10 15) yes 6 6 (-18 8) no 5 5 (-18 28) no 4 4 (51 18) no Model @model (8 30) no Refdes U Model 74386b Template X_@refdes %1 %2 %3 @model 74386c XOR XOR Reference designator @refdes (10 15) yes 8 8 (-18 9) no 9 9 (-18 29) no 10 10 (51 18) no Model @model (8 30) no Refdes U Model 74386c Template X_@refdes %1 %2 %3 @model 74386d XOR XOR Reference designator @refdes (10 15) yes 13 13 (-18 9) no 12 12 (-18 29) no 11 11 (51 18) no Model @model (8 30) no Refdes U Model 74386d Template X_@refdes %1 %2 %3 @model 74390 2x4bc Dual BCD counter Reference designator @refdes (-20 120) yes 1 1 (-17 11) no C0 (2 15) no 4 4 (-17 21) no C1 (2 25) no 2 2 (-17 41) no R (2 45) no 14 14 (-17 61) no R (2 65) no 15 15 (-17 81) no C0 (2 85) no 12 12 (-17 91) no C1 (2 95) no 3 3 (47 11) no Q0 (27 15) no 5 5 (47 21) no Q1 (27 25) no 6 6 (47 31) no Q2 (27 35) no 7 7 (47 41) no Q3 (27 45) no 13 13 (47 61) no Q0 (27 65) no 11 11 (47 71) no Q1 (27 75) no 10 10 (47 81) no Q2 (27 85) no 9 9 (47 91) no Q3 (27 95) no 16 16 (3 -1) no 8 8 (3 118) no Model @model (35 -10) no Refdes U Model 74390 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74393 2x4bi Dual binary counter Reference designator @refdes (-20 120) yes 1 1 (-17 11) no CK (2 15) no 2 2 (-17 41) no R (2 45) no 12 12 (-17 61) no R (2 65) no 13 13 (-17 91) no CK (2 95) no 3 3 (47 11) no Q0 (27 15) no 4 4 (47 21) no Q1 (27 25) no 5 5 (47 31) no Q2 (27 35) no 6 6 (47 41) no Q3 (27 45) no 11 11 (47 61) no Q0 (27 65) no 10 10 (47 71) no Q1 (27 75) no 9 9 (47 81) no Q2 (27 85) no 8 8 (47 91) no Q3 (27 95) no 14 14 (3 -1) no 7 7 (3 118) no Model @model (35 -10) no Refdes U Model 74393 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model 74395 4PICu 4 bit shift register Reference designator @refdes (-25 105) yes 2 2 (-17 19) no SD (2 25) no 16 16 (-17 39) no VC (2 45) no 8 8 (-17 59) no VS (2 65) no 1 1 (0 95) no R (5 79) no 15 15 (21 95) no Q0 (25 79) no 14 14 (41 95) no Q1 (45 79) no 13 13 (61 95) no Q2 (65 79) no 12 12 (81 95) no Q3 (85 79) no 10 10 (106 19) no CK (87 25) no 9 9 (106 39) no OE (87 45) no 11 11 (106 59) no ro (87 65) no 7 7 (-1 -1) no M (5 11) no 3 3 (19 -1) no P0 (25 11) no 4 4 (39 -1) no P1 (45 11) no 5 5 (59 -1) no P2 (65 11) no 6 6 (79 -1) no P3 (85 11) no Model @model (100 -10) no Refdes U Model 74395 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74398 4DLx2i Quad 2 port register Reference designator @refdes (25 125) yes 4 4 (-17 11) no D0a (2 15) no 7 7 (-17 21) no D1a (2 25) no 14 14 (-17 31) no D2a (2 35) no 17 17 (-17 41) no D3a (2 45) no 5 5 (-17 51) no D0b (2 55) no 6 6 (-17 61) no D1b (2 65) no 15 15 (-17 71) no D2b (2 75) no 16 16 (-17 81) no D3b (2 85) no 11 11 (-17 101) no CK (2 105) no 2 2 (47 11) no 3 3 (47 21) no Q0 (25 20) no 9 9 (47 31) no 8 8 (47 41) no Q1 (25 40) no 12 12 (47 51) no 13 13 (47 61) no Q2 (25 60) no 19 19 (47 71) no 18 18 (47 81) no Q3 (25 80) no 1 1 (47 101) no S (25 105) no 20 20 (6 -3) no 10 10 (6 127) no Model @model (35 -10) no Refdes U Model 74398 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74399 4DLx2 Quad 2 port register Reference designator @refdes (25 125) yes 3 3 (-17 11) no D0a (2 15) no 4 4 (-17 21) no D1a (2 25) no 11 11 (-17 31) no D2a (2 35) no 14 14 (-17 41) no D3a (2 45) no 4 4 (-17 51) no D0b (2 55) no 5 5 (-17 61) no D1b (2 65) no 12 12 (-17 71) no D2b (2 75) no 13 13 (-17 81) no D3b (2 85) no 9 9 (-17 101) no CK (2 105) no 2 2 (47 11) no Q0 (25 15) no 7 7 (47 31) no Q1 (25 35) no 10 10 (47 51) no Q2 (25 55) no 15 15 (47 71) no Q3 (25 70) no 1 1 (47 101) no S (25 105) no 16 16 (6 -3) no 8 8 (6 127) no Model @model (35 -10) no Refdes U Model 74399 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74490 2x4bci Dual BCD counter Reference designator @refdes (-20 120) yes 1 1 (-17 11) no CK (2 15) no 4 4 (-17 21) no S (2 25) no 2 2 (-17 41) no R (2 45) no 14 14 (-17 61) no R (2 65) no 15 15 (-17 81) no CK (2 85) no 12 12 (-17 91) no S (2 95) no 3 3 (47 11) no Q0 (27 15) no 5 5 (47 21) no Q1 (27 25) no 6 6 (47 31) no Q2 (27 35) no 7 7 (47 41) no Q3 (27 45) no 13 13 (47 61) no Q0 (27 65) no 11 11 (47 71) no Q1 (27 75) no 10 10 (47 81) no Q2 (27 85) no 9 9 (47 91) no Q3 (27 95) no 16 16 (3 -1) no 8 8 (3 118) no Model @model (35 -10) no Refdes U Model 74490 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74540 BUF8i 8 bit inverter Tri-State Buffer Reference designator @refdes (-20 140) yes 2 2 (-17 11) no A1 (2 15) no 3 3 (-17 21) no A2 (2 25) no 4 4 (-17 31) no A3 (2 35) no 5 5 (-17 41) no A4 (2 45) no 6 6 (-17 51) no A5 (2 55) no 7 7 (-17 61) no A6 (2 65) no 8 8 (-17 71) no A7 (2 75) no 9 9 (-17 81) no A8 (2 85) no 18 18 (47 11) no Y1 (27 15) no 17 17 (47 21) no Y2 (27 25) no 16 16 (47 31) no Y3 (27 35) no 15 15 (47 41) no Y4 (27 45) no 14 14 (47 51) no Y5 (27 55) no 13 13 (47 61) no Y6 (27 65) no 12 12 (47 71) no Y7 (27 75) no 11 11 (47 81) no Y8 (27 85) no 1 1 (-15 101) no GA (2 105) no 19 19 (-18 111) no GB (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74540 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74541 BUF8ni 8 bit Tri-State Buffer Reference designator @refdes (-20 140) yes 2 2 (-17 11) no A1 (2 15) no 3 3 (-17 21) no A2 (2 25) no 4 4 (-17 31) no A3 (2 35) no 5 5 (-17 41) no A4 (2 45) no 6 6 (-17 51) no A5 (2 55) no 7 7 (-17 61) no A6 (2 65) no 8 8 (-17 71) no A7 (2 75) no 9 9 (-17 81) no A8 (2 85) no 18 18 (47 11) no Y1 (27 15) no 17 17 (47 21) no Y2 (27 25) no 16 16 (47 31) no Y3 (27 35) no 15 15 (47 41) no Y4 (27 45) no 14 14 (47 51) no Y5 (27 55) no 13 13 (47 61) no Y6 (27 65) no 12 12 (47 71) no Y7 (27 75) no 11 11 (47 81) no Y8 (27 85) no 1 1 (-15 101) no GA (2 105) no 19 19 (-18 111) no GB (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74541 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74568 COUNT8tri BCD up-down counter Reference designator @refdes (30 150) yes 3 3 (-17 11) no D0 (2 15) no 4 4 (-17 21) no D1 (2 25) no 5 5 (-17 31) no D2 (2 35) no 6 6 (-17 41) no D3 (2 45) no 1 1 (-17 61) no U\D (1 65) no 2 2 (-17 71) no CK (2 75) no 9 9 (-17 81) no scl (2 85) no 8 8 (-17 91) no acl (2 95) no 11 11 (-17 101) no LD (2 105) no 7 7 (-17 111) no CP (2 115) no 12 12 (-17 121) no CT (2 125) no 16 16 (47 11) no Q0 (27 15) no 15 15 (47 21) no Q1 (27 25) no 14 14 (47 31) no Q2 (27 35) no 13 13 (47 41) no Q3 (27 45) no 17 17 (47 61) no OE (27 65) no 19 19 (47 81) no RO (27 85) no 18 18 (47 101) no CO (27 105) no 20 20 (3 -1) no 10 10 (3 148) no Model @model (35 -10) no Refdes U Model 74568 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74569 EQ See 74568 (binary) 74604 8x2IML BCD up-down counter Reference designator @refdes (25 200) yes 3 3 (-17 11) no A0 (2 15) no 5 5 (-17 21) no A1 (2 25) no 7 7 (-17 31) no A2 (2 35) no 9 9 (-17 41) no A3 (2 45) no 27 27 (-17 51) no A4 (2 55) no 25 25 (-17 61) no A5 (1 65) no 23 23 (-17 71) no A6 (2 75) no 21 21 (-17 81) no A7 (2 85) no 4 4 (-17 101) no B0 (2 105) no 6 6 (-17 111) no B1 (2 115) no 8 8 (-17 121) no B2 (2 125) no 10 10 (-17 131) no B3 (2 135) no 26 26 (-17 141) no B4 (2 145) no 24 24 (-17 151) no B5 (2 155) no 22 22 (-17 161) no B6 (2 165) no 20 20 (-17 171) no B7 (2 175) no 15 15 (47 11) no Q0 (27 15) no 13 13 (47 21) no Q1 (27 25) no 12 12 (47 31) no Q2 (27 35) no 11 11 (47 41) no Q3 (27 45) no 16 16 (47 51) no Q4 (27 55) no 17 17 (47 61) no Q5 (27 65) no 18 18 (47 71) no Q6 (27 75) no 19 19 (47 81) no Q7 (27 85) no 2 2 (47 101) no A|B (25 105) no 1 1 (47 121) no CK (27 125) no 28 28 (3 -1) no 14 14 (3 198) no Model @model (35 -10) no Refdes U Model 74604 Template 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 74605 EQ See 74604 74606 EQ See 74604 74607 EQ See 74604 74620 BUF8nis 8 bit inverter Tri-State Buffer Reference designator @refdes (-20 140) yes 2 2 (-17 11) no A1 (2 15) no 3 3 (-17 21) no A2 (2 25) no 4 4 (-17 31) no A3 (2 35) no 5 5 (-17 41) no A4 (2 45) no 6 6 (-17 51) no A5 (2 55) no 7 7 (-17 61) no A6 (2 65) no 8 8 (-17 71) no A7 (2 75) no 9 9 (-17 81) no A8 (2 85) no 18 18 (47 11) no B1 (27 15) no 17 17 (47 21) no B2 (27 25) no 16 16 (47 31) no B3 (27 35) no 15 15 (47 41) no B4 (27 45) no 14 14 (47 51) no B5 (27 55) no 13 13 (47 61) no B6 (27 65) no 12 12 (47 71) no B7 (27 75) no 11 11 (47 81) no B8 (27 85) no 19 19 (-17 101) no BA (2 105) no 1 1 (-17 111) no AB (2 115) no 20 20 (3 -1) no 10 10 (3 138) no Model @model (35 -10) no Refdes U Model 74620 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74621 EQ See 74620 (not inverter) 74622 EQ See 74620 74623 EQ See 74620 (not inverter) 74640 EQ See 74245 (inverter) 74641 EQ See 74245 74642 EQ See 74245 (inverter) 74643 EQ See 74245 (inverter - not inverter) 74644 EQ See 74245 (inverter - not inverter) 74645 EQ See 74245 74668 EQ See 74168 74669 EQ See 74168 (binary) 74670 EQ See 74170 74673 REG16S 16 bit Shift register Reference designator @refdes (25 190) yes 7 7 (47 11) no P0 (25 15) no 8 8 (47 21) no P1 (25 25) no 9 9 (47 31) no P2 (25 35) no 10 10 (47 41) no P3 (25 45) no 11 11 (47 51) no P4 (25 55) no 13 13 (47 61) no P5 (25 65) no 14 14 (47 71) no P6 (25 75) no 15 15 (47 81) no P7 (25 85) no 16 16 (47 91) no P8 (25 95) no 17 17 (47 101) no P9 (25 105) no 18 18 (47 111) no P10 (23 115) no 19 19 (47 121) no P11 (23 125) no 20 20 (47 131) no P12 (23 135) no 21 21 (47 141) no P13 (23 145) no 22 22 (47 151) no P14 (23 155) no 23 23 (47 161) no P15 (23 165) no 6 6 (-17 11) no S (2 15) no 4 4 (-17 81) no CL (2 85) no 5 5 (-17 101) no M (2 105) no 3 3 (-17 121) no r|w (2 125) no 1 1 (-17 141) no cs (2 145) no 2 2 (-17 161) no ck (2 165) no 24 24 (3 -1) no 12 12 (3 188) no Model @model (35 -10) no Refdes U Model 74673 Template 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 74674 REG16P 16 bit Shift register Reference designator @refdes (25 190) yes 7 7 (-17 11) no P0 (2 15) no 8 8 (-17 21) no P1 (2 25) no 9 9 (-17 31) no P2 (2 35) no 10 10 (-17 41) no P3 (2 45) no 11 11 (-17 51) no P4 (2 55) no 13 13 (-17 61) no P5 (1 65) no 14 14 (-17 71) no P6 (2 75) no 15 15 (-17 81) no P7 (2 85) no 16 16 (-17 91) no P8 (2 95) no 17 17 (-17 101) no P9 (2 105) no 18 18 (-17 111) no P10 (2 115) no 19 19 (-17 121) no P11 (2 125) no 20 20 (-17 131) no P12 (2 135) no 21 21 (-17 141) no P13 (2 145) no 22 22 (-17 151) no P14 (2 155) no 23 23 (-17 161) no P15 (2 165) no 6 6 (47 11) no S (27 15) no 5 5 (47 101) no M (27 105) no 3 3 (47 121) no r|w (24 125) no 1 1 (47 141) no cs (27 145) no 2 2 (47 161) no ck (27 165) no 24 24 (3 -1) no 12 12 (3 188) no Model @model (35 -10) no Refdes U Model 74674 Template 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 @model 74682 8x2CMPS 8 bit comparator Reference designator @refdes (25 200) yes 2 2 (-17 11) no A0 (2 15) no 4 4 (-17 21) no A1 (2 25) no 6 6 (-17 31) no A2 (2 35) no 8 8 (-17 41) no A3 (2 45) no 11 11 (-17 51) no A4 (2 55) no 13 13 (-17 61) no A5 (1 65) no 15 15 (-17 71) no A6 (2 75) no 17 17 (-17 81) no A7 (2 85) no 3 3 (-17 101) no B0 (2 105) no 5 5 (-17 111) no B1 (2 115) no 7 7 (-17 121) no B2 (2 125) no 9 9 (-17 131) no B3 (2 135) no 12 12 (-17 141) no B4 (2 145) no 14 14 (-17 151) no B5 (2 155) no 16 16 (-17 161) no B6 (2 165) no 18 18 (-17 171) no B7 (2 175) no 19 19 (47 21) no A=B (22 25) no 1 1 (47 41) no A+ (27 45) no 20 20 (3 -1) no 10 10 (3 198) no Model @model (35 -10) no Refdes U Model 74682 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74683 EQ See 74682 74684 EQ See 74682 74685 EQ See 74682 74688 8x2CMPS 8 bit comparator Reference designator @refdes (25 200) yes 2 2 (-17 11) no A0 (2 15) no 4 4 (-17 21) no A1 (2 25) no 6 6 (-17 31) no A2 (2 35) no 8 8 (-17 41) no A3 (2 45) no 11 11 (-17 51) no A4 (2 55) no 13 13 (-17 61) no A5 (1 65) no 15 15 (-17 71) no A6 (2 75) no 17 17 (-17 81) no A7 (2 85) no 3 3 (-17 101) no B0 (2 105) no 5 5 (-17 111) no B1 (2 115) no 7 7 (-17 121) no B2 (2 125) no 9 9 (-17 131) no B3 (2 135) no 12 12 (-17 141) no B4 (2 145) no 14 14 (-17 151) no B5 (2 155) no 16 16 (-17 161) no B6 (2 165) no 18 18 (-17 171) no B7 (2 175) no 19 19 (47 21) no A=B (22 25) no 1 1 (47 41) no G (27 45) no 20 20 (3 -1) no 10 10 (3 198) no Model @model (35 -10) no Refdes U Model 74688 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model 74686 8x2CMPC 8 bit comparator Reference designator @refdes (25 200) yes 3 3 (-17 11) no A0 (2 15) no 5 5 (-17 21) no A1 (2 25) no 8 8 (-17 31) no A2 (2 35) no 10 10 (-17 41) no A3 (2 45) no 13 13 (-17 51) no A4 (2 55) no 15 15 (-17 61) no A5 (1 65) no 17 17 (-17 71) no A6 (2 75) no 20 20 (-17 81) no A7 (2 85) no 4 4 (-17 101) no B0 (2 105) no 6 6 (-17 111) no B1 (2 115) no 9 9 (-17 121) no B2 (2 125) no 11 11 (-17 131) no B3 (2 135) no 14 14 (-17 141) no B4 (2 145) no 16 16 (-17 151) no B5 (2 155) no 18 18 (-17 161) no B6 (2 165) no 21 21 (-17 171) no B7 (2 175) no 22 22 (47 21) no A=B (22 25) no 1 1 (47 41) no A+ (27 45) no 23 23 (47 61) no G2 (27 65) no 2 2 (47 81) no G1 (27 85) no 24 24 (3 -1) no 14 14 (3 198) no Model @model (35 -10) no Refdes U Model 74686 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 @model 74689 EQ See 74688 74687 EQ See 74686 74716 4PIC 4 bit BCD programmable counter Reference designator @refdes (-25 105) yes 4 4 (-15 20) no G (2 25) no 6 6 (-15 40) no CK (2 45) no 8 8 (-15 60) no VS (2 65) no 3 3 (1 95) no PE (5 79) no 5 5 (21 95) no D0 (25 79) no 11 11 (39 95) no D1 (45 79) no 14 14 (59 95) no D2 (65 79) no 2 2 (79 95) no D3 (85 79) no 13 13 (106 19) no R (90 25) no 10 10 (106 39) no MR (83 45) no 12 12 (106 59) no B (87 65) no 16 16 (-2 -1) no VC (5 11) no 7 7 (19 -1) no Q0 (25 11) no 9 9 (39 -1) no Q1 (45 11) no 15 15 (59 -1) no Q2 (65 11) no 1 1 (79 -1) no Q3 (85 11) no Model @model (100 -10) no Refdes U Model 74716 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 74718 EQ See 74716 (binary) 74748 EQ See 74148 74848 EQ See 74148 oregano-0.84.41/data/libraries/memory.oreglib0000644000175000017500000067022113413640652020110 0ustar rubenruben Memory Memory Library 0.26 Hector Bellesi 11-Aug-2001 74S288 (0 0)(40 0)(40 90)(0 90)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 80)(-6 80) (20 -20)(20 0) (20 90)(20 110) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (40 50)(60 50) (40 60)(60 60) (40 70)(60 70) (40 80)(60 80) (-6 77)(0 83) (-20 10 10) (-20 20 11) (-20 30 12) (-20 40 13) (-20 50 14) (-20 80 15) (20 -20 16) (20 110 8) (60 10 1) (60 20 2) (60 30 3) (60 40 4) (60 50 5) (60 60 6) (60 70 7) (60 80 9) 2716 (0 0)(60 0)(60 120)(0 120)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (30 -20)(30 0) (30 120)(30 140) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 90)(80 90) (66 100)(80 100) (66 110)(80 110) (60 97)(66 103) (60 107)(66 113) (-20 10 8) (-20 20 7) (-20 30 6) (-20 40 5) (-20 50 4) (-20 60 3) (-20 70 2) (-20 80 1) (-20 90 23) (-20 100 22) (-20 110 19) (30 -20 24) (30 140 12) (80 10 9) (80 20 10) (80 30 11) (80 40 13) (80 50 14) (80 60 15) (80 70 16) (80 80 17) (80 90 21) (80 100 18) (80 110 20) 2732 (0 0)(60 0)(60 130)(0 130)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (30 -20)(30 0) (30 130)(30 150) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (66 100)(80 100) (66 110)(80 110) (60 97)(66 103) (60 107)(66 113) (-20 10 8) (-20 20 7) (-20 30 6) (-20 40 5) (-20 50 4) (-20 60 3) (-20 70 2) (-20 80 1) (-20 90 23) (-20 100 22) (-20 110 19) (-20 120 21) (30 -20 24) (30 150 12) (80 10 9) (80 20 10) (80 30 11) (80 40 13) (80 50 14) (80 60 15) (80 70 16) (80 80 17) (80 100 18) (80 110 20) 2764 (0 0)(60 0)(60 140)(0 140)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (30 -20)(30 0) (30 140)(30 160) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 100)(80 100) (66 110)(80 110) (66 120)(80 120) (66 130)(80 130) (60 107)(66 113) (60 127)(66 133) (60 117)(66 123) (-20 10 10) (-20 20 9) (-20 30 8) (-20 40 7) (-20 50 6) (-20 60 5) (-20 70 4) (-20 80 3) (-20 90 25) (-20 100 24) (-20 110 21) (-20 120 23) (-20 130 2) (30 -20 28) (30 160 14) (80 10 11) (80 20 12) (80 30 13) (80 40 15) (80 50 16) (80 60 17) (80 70 18) (80 80 19) (80 100 1) (80 110 27) (80 120 22) (80 130 20) 27128 (0 0)(60 0)(60 150)(0 150)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (30 -20)(30 0) (30 150)(30 170) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 100)(80 100) (66 110)(80 110) (66 130)(80 130) (66 140)(80 140) (60 107)(66 113) (60 127)(66 133) (60 137)(66 143) (-20 10 10) (-20 20 9) (-20 30 8) (-20 40 7) (-20 50 6) (-20 60 5) (-20 70 4) (-20 80 3) (-20 90 25) (-20 100 24) (-20 110 21) (-20 120 23) (-20 130 2) (-20 140 26) (30 -20 28) (30 170 14) (80 10 11) (80 20 12) (80 30 13) (80 40 15) (80 50 16) (80 60 17) (80 70 18) (80 80 19) (80 100 1) (80 110 27) (80 130 22) (80 140 20) 27256 (0 0)(60 0)(60 160)(0 160)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (30 -20)(30 0) (30 160)(30 180) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 100)(80 100) (66 120)(80 120) (66 140)(80 140) (60 117)(66 123) (60 137)(66 143) (-20 10 10) (-20 20 9) (-20 30 8) (-20 40 7) (-20 50 6) (-20 60 5) (-20 70 4) (-20 80 3) (-20 90 25) (-20 100 24) (-20 110 21) (-20 120 23) (-20 130 2) (-20 140 26) (-20 150 27) (30 -20 28) (30 180 14) (80 10 11) (80 20 12) (80 30 13) (80 40 15) (80 50 16) (80 60 17) (80 70 18) (80 80 19) (80 100 1) (80 120 22) (80 140 20) 27512 (0 0)(60 0)(60 170)(0 170)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (30 -20)(30 0) (30 170)(30 190) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (66 120)(80 120) (66 140)(80 140) (60 117)(66 123) (60 137)(66 143) (-20 10 10) (-20 20 9) (-20 30 8) (-20 40 7) (-20 50 6) (-20 60 5) (-20 70 4) (-20 80 3) (-20 90 25) (-20 100 24) (-20 110 21) (-20 120 23) (-20 130 2) (-20 140 26) (-20 150 27) (-20 160 1) (30 -20 28) (30 190 14) (80 10 11) (80 20 12) (80 30 13) (80 40 15) (80 50 16) (80 60 17) (80 70 18) (80 80 19) (80 120 22) (80 140 20) 27010 (0 0)(60 0)(60 180)(0 180)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (-20 170)(0 170) (30 -20)(30 0) (30 180)(30 200) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 100)(80 100) (66 120)(80 120) (66 140)(80 140) (66 160)(80 160) (60 117)(66 123) (60 137)(66 143) (60 157)(66 163) (-20 10 12) (-20 20 11) (-20 30 10) (-20 40 9) (-20 50 8) (-20 60 7) (-20 70 6) (-20 80 5) (-20 90 27) (-20 100 26) (-20 110 23) (-20 120 25) (-20 130 4) (-20 140 28) (-20 150 3) (-20 160 31) (-20 170 2) (30 -20 32) (30 200 16) (80 10 13) (80 20 14) (80 30 15) (80 40 17) (80 50 18) (80 60 19) (80 70 20) (80 80 21) (80 100 1) (80 120 31) (80 140 24) (80 160 22) 27020 (0 0)(60 0)(60 190)(0 190)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (-20 170)(0 170) (-20 180)(0 180) (30 -20)(30 0) (30 190)(30 210) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 100)(80 100) (66 120)(80 120) (66 140)(80 140) (66 160)(80 160) (60 117)(66 123) (60 137)(66 143) (60 157)(66 163) (-20 10 12) (-20 20 11) (-20 30 10) (-20 40 9) (-20 50 8) (-20 60 7) (-20 70 6) (-20 80 5) (-20 90 27) (-20 100 26) (-20 110 23) (-20 120 25) (-20 130 4) (-20 140 28) (-20 150 3) (-20 160 31) (-20 170 2) (-20 180 30) (30 -20 32) (30 210 16) (80 10 13) (80 20 14) (80 30 15) (80 40 17) (80 50 18) (80 60 19) (80 70 20) (80 80 21) (80 100 1) (80 120 31) (80 140 24) (80 160 22) 27040 (0 0)(60 0)(60 200)(0 200)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (-20 170)(0 170) (-20 180)(0 180) (-20 190)(0 190) (30 -20)(30 0) (30 200)(30 220) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 100)(80 100) (66 140)(80 140) (66 160)(80 160) (60 137)(66 143) (60 157)(66 163) (-20 10 12) (-20 20 11) (-20 30 10) (-20 40 9) (-20 50 8) (-20 60 7) (-20 70 6) (-20 80 5) (-20 90 27) (-20 100 26) (-20 110 23) (-20 120 25) (-20 130 4) (-20 140 28) (-20 150 3) (-20 160 31) (-20 170 2) (-20 180 30) (-20 190 31) (30 -20 32) (30 220 16) (80 10 13) (80 20 14) (80 30 15) (80 40 17) (80 50 18) (80 60 19) (80 70 20) (80 80 21) (80 100 1) (80 140 24) (80 160 22) 27080 (0 0)(60 0)(60 210)(0 210)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (-20 170)(0 170) (-20 180)(0 180) (-20 190)(0 190) (-20 200)(0 200) (30 -20)(30 0) (30 210)(30 230) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (66 140)(80 140) (66 160)(80 160) (60 137)(66 143) (60 157)(66 163) (-20 10 12) (-20 20 11) (-20 30 10) (-20 40 9) (-20 50 8) (-20 60 7) (-20 70 6) (-20 80 5) (-20 90 27) (-20 100 26) (-20 110 23) (-20 120 25) (-20 130 4) (-20 140 28) (-20 150 3) (-20 160 31) (-20 170 2) (-20 180 30) (-20 190 31) (-20 200 1) (30 -20 32) (30 230 16) (80 10 13) (80 20 14) (80 30 15) (80 40 17) (80 50 18) (80 60 19) (80 70 20) (80 80 21) (80 140 24) (80 160 22) 6116 (0 0)(60 0)(60 120)(0 120)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (30 -20)(30 0) (30 120)(30 140) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (66 90)(80 90) (66 100)(80 100) (66 110)(80 110) (60 87)(66 93) (60 97)(66 103) (60 107)(66 113) (-20 10 8) (-20 20 7) (-20 30 6) (-20 40 5) (-20 50 4) (-20 60 3) (-20 70 2) (-20 80 1) (-20 90 23) (-20 100 22) (-20 110 19) (30 -20 24) (30 140 12) (80 10 9) (80 20 10) (80 30 11) (80 40 13) (80 50 14) (80 60 15) (80 70 16) (80 80 17) (80 90 21) (80 100 18) (80 110 20) 6064 (0 0)(60 0)(60 140)(0 140)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (30 -20)(30 0) (30 140)(30 160) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 100)(80 100) (66 110)(80 110) (66 120)(80 120) (66 130)(80 130) (60 107)(66 113) (60 117)(66 123) (60 127)(66 133) (-20 10 10) (-20 20 9) (-20 30 8) (-20 40 7) (-20 50 6) (-20 60 5) (-20 70 4) (-20 80 3) (-20 90 25) (-20 100 24) (-20 110 21) (-20 120 23) (-20 130 2) (30 -20 28) (30 160 14) (80 10 11) (80 20 12) (80 30 13) (80 40 15) (80 50 16) (80 60 17) (80 70 18) (80 80 19) (80 100 26) (80 110 20) (80 120 22) (80 130 27) 60256 (0 0)(60 0)(60 160)(0 160)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (30 -20)(30 0) (30 160)(30 180) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (66 100)(80 100) (66 120)(80 120) (66 140)(80 140) (60 97)(66 103) (60 117)(66 123) (60 137)(66 143) (-20 10 10) (-20 20 9) (-20 30 8) (-20 40 7) (-20 50 6) (-20 60 5) (-20 70 4) (-20 80 3) (-20 90 25) (-20 100 24) (-20 110 21) (-20 120 23) (-20 130 2) (-20 140 26) (-20 150 1) (30 -20 28) (30 180 14) (80 10 11) (80 20 12) (80 30 13) (80 40 15) (80 50 16) (80 60 17) (80 70 18) (80 80 19) (80 100 27) (80 120 22) (80 140 20) 55100 (0 0)(60 0)(60 180)(0 180)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (-20 90)(0 90) (-20 100)(0 100) (-20 110)(0 110) (-20 120)(0 120) (-20 130)(0 130) (-20 140)(0 140) (-20 150)(0 150) (-20 160)(0 160) (-20 170)(0 170) (30 -20)(30 0) (30 180)(30 200) (60 10)(80 10) (60 20)(80 20) (60 30)(80 30) (60 40)(80 40) (60 50)(80 50) (60 60)(80 60) (60 70)(80 70) (60 80)(80 80) (60 100)(80 100) (66 110)(80 110) (60 130)(80 130) (66 140)(80 140) (60 107)(66 113) (60 137)(66 143) (-20 10 12) (-20 20 11) (-20 30 10) (-20 40 9) (-20 50 8) (-20 60 7) (-20 70 6) (-20 80 5) (-20 90 27) (-20 100 26) (-20 110 23) (-20 120 25) (-20 130 4) (-20 140 28) (-20 150 3) (-20 160 31) (-20 170 2) (30 -20 32) (30 200 16) (80 10 13) (80 20 14) (80 30 15) (80 40 17) (80 50 18) (80 60 19) (80 70 20) (80 80 21) (80 100 29) (80 110 24) (80 130 30) (80 140 22) NM93C06 (0 0)(40 0)(40 40)(0 40)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (30 -20)(30 0) (30 40)(30 60) (40 20)(60 20) (-20 10 3) (-20 20 2) (-20 30 1) (30 -20 8) (30 60 5) (80 20 4) 74S287 (0 0)(40 0)(40 90)(0 90)(0 0) (-20 10)(0 10) (-20 20)(0 20) (-20 30)(0 30) (-20 40)(0 40) (-20 50)(0 50) (-20 60)(0 60) (-20 70)(0 70) (-20 80)(0 80) (20 -20)(20 0) (20 90)(20 110) (40 10)(60 10) (40 20)(60 20) (40 30)(60 30) (40 40)(60 40) (46 70)(60 70) (46 80)(60 80) (40 67)(46 73) (40 77)(46 83) (-20 10 5) (-20 20 6) (-20 30 7) (-20 40 4) (-20 50 3) (-20 60 2) (-20 70 1) (-20 80 15) (20 -20 16) (20 110 8) (60 10 12) (60 20 11) (60 30 10) (60 40 9) (60 70 13) (60 80 14) 74S288 74S288 32 bytes PROM Reference designator @refdes (0 -20) yes 10 10 (-17 10) no A0 (2 15) no 11 11 (-17 20) no A1 (2 25) no 12 12 (-17 30) no A2 (2 35) no 13 13 (-17 40) no A3 (2 45) no 14 14 (-17 50) no A4 (2 55) no 15 15 (-17 80) no OE (2 85) no 16 16 (9 -2) no 8 8 (14 105) no 1 1 (47 10) no D0 (24 15) no 2 2 (47 20) no D1 (24 25) no 3 3 (47 30) no D2 (24 35) no 4 4 (47 40) no D3 (24 45) no 5 5 (47 50) no D4 (24 55) no 6 6 (47 60) no D5 (24 65) no 7 7 (47 70) no D6 (24 75) no 9 9 (47 80) no D7 (24 85) no Model @model (25 105) no Refdes U Model 74S288 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model 2716 2716 2K EPROM Reference designator @refdes (0 -10) yes 8 8 (-12 10) no A0 (2 15) no 7 7 (-12 20) no A1 (2 25) no 6 6 (-12 30) no A2 (2 35) no 5 5 (-12 40) no A3 (2 45) no 4 4 (-12 50) no A4 (2 55) no 3 3 (-12 60) no A5 (2 65) no 2 2 (-12 70) no A6 (2 75) no 1 1 (-12 80) no A7 (2 85) no 23 23 (-17 90) no A8 (2 95) no 22 22 (-17 100) no A9 (2 105) no 19 19 (-17 110) no A10 (2 115) no 24 24 (14 -2) no 12 12 (14 135) no 9 9 (67 10) no D0 (42 15) no 10 10 (67 20) no D1 (42 25) no 11 11 (67 30) no D2 (42 35) no 13 13 (67 40) no D3 (42 45) no 14 14 (67 50) no D4 (42 55) no 15 15 (67 60) no D5 (42 65) no 16 16 (67 70) no D6 (42 75) no 17 17 (67 80) no D7 (42 85) no 21 21 (67 90) no Vpp (40 95) no 18 18 (67 100) no CE (42 105) no 20 20 (67 110) no OE (42 115) no Model @model (-25 135) no Refdes U Model 2716 Template 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 2732 2732 4K EPROM Reference designator @refdes (0 -10) yes 8 8 (-12 10) no A0 (2 15) no 7 7 (-12 20) no A1 (2 25) no 6 6 (-12 30) no A2 (2 35) no 5 5 (-12 40) no A3 (2 45) no 4 4 (-12 50) no A4 (2 55) no 3 3 (-12 60) no A5 (2 65) no 2 2 (-12 70) no A6 (2 75) no 1 1 (-12 80) no A7 (2 85) no 23 23 (-17 90) no A8 (2 95) no 22 22 (-17 100) no A9 (2 105) no 19 19 (-17 110) no A10 (2 115) no 21 21 (-17 120) no A11 (2 125) no 24 24 (14 -2) no 12 12 (14 145) no 9 9 (67 10) no D0 (42 15) no 10 10 (67 20) no D1 (42 25) no 11 11 (67 30) no D2 (42 35) no 13 13 (67 40) no D3 (42 45) no 14 14 (67 50) no D4 (42 55) no 15 15 (67 60) no D5 (42 65) no 16 16 (67 70) no D6 (42 75) no 17 17 (67 80) no D7 (42 85) no 18 18 (67 100) no CE (42 105) no 20 20 (67 110) no OE (42 115) no Model @model (-25 145) no Refdes U Model 2732 Template 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 2764 2764 8K EPROM Reference designator @refdes (0 -10) yes 10 10 (-17 10) no A0 (2 15) no 9 9 (-12 20) no A1 (2 25) no 8 8 (-12 30) no A2 (2 35) no 7 7 (-12 40) no A3 (2 45) no 6 6 (-12 50) no A4 (2 55) no 5 5 (-12 60) no A5 (2 65) no 4 4 (-12 70) no A6 (2 75) no 3 3 (-12 80) no A7 (2 85) no 25 25 (-17 90) no A8 (2 95) no 24 24 (-17 100) no A9 (2 105) no 21 21 (-17 110) no A10 (2 115) no 23 23 (-17 120) no A11 (2 125) no 2 2 (-12 130) no A12 (2 135) no 28 28 (14 -2) no 14 14 (14 155) no 11 11 (67 10) no D0 (42 15) no 12 12 (67 20) no D1 (42 25) no 13 13 (67 30) no D2 (42 35) no 15 15 (67 40) no D3 (42 45) no 16 16 (67 50) no D4 (42 55) no 17 17 (67 60) no D5 (42 65) no 18 18 (67 70) no D6 (42 75) no 19 19 (67 80) no D7 (42 85) no 1 1 (67 100) no Vpp (40 105) no 27 27 (67 110) no PGM (36 115) no 22 22 (67 120) no OE (42 125) no 20 20 (67 130) no CS (42 135) no Model @model (-25 155) no Refdes U Model 2764 Template 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 @model 27128 27128 16K EPROM Reference designator @refdes (0 -10) yes 10 10 (-17 10) no A0 (2 15) no 9 9 (-12 20) no A1 (2 25) no 8 8 (-12 30) no A2 (2 35) no 7 7 (-12 40) no A3 (2 45) no 6 6 (-12 50) no A4 (2 55) no 5 5 (-12 60) no A5 (2 65) no 4 4 (-12 70) no A6 (2 75) no 3 3 (-12 80) no A7 (2 85) no 25 25 (-17 90) no A8 (2 95) no 24 24 (-17 100) no A9 (2 105) no 21 21 (-17 110) no A10 (2 115) no 23 23 (-17 120) no A11 (2 125) no 2 2 (-12 130) no A12 (2 135) no 26 26 (-17 140) no A13 (2 145) no 28 28 (14 -2) no 14 14 (14 165) no 11 11 (67 10) no D0 (42 15) no 12 12 (67 20) no D1 (42 25) no 13 13 (67 30) no D2 (42 35) no 15 15 (67 40) no D3 (42 45) no 16 16 (67 50) no D4 (42 55) no 17 17 (67 60) no D5 (42 65) no 18 18 (67 70) no D6 (42 75) no 19 19 (67 80) no D7 (42 85) no 1 1 (67 100) no Vpp (40 105) no 27 27 (67 110) no PGM (36 115) no 22 22 (67 130) no OE (42 135) no 20 20 (67 140) no CS (42 145) no Model @model (-25 165) no Refdes U Model 27128 Template 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 27256 27256 32K EPROM Reference designator @refdes (0 -10) yes 10 10 (-17 10) no A0 (2 15) no 9 9 (-12 20) no A1 (2 25) no 8 8 (-12 30) no A2 (2 35) no 7 7 (-12 40) no A3 (2 45) no 6 6 (-12 50) no A4 (2 55) no 5 5 (-12 60) no A5 (2 65) no 4 4 (-12 70) no A6 (2 75) no 3 3 (-12 80) no A7 (2 85) no 25 25 (-17 90) no A8 (2 95) no 24 24 (-17 100) no A9 (2 105) no 21 21 (-17 110) no A10 (2 115) no 23 23 (-17 120) no A11 (2 125) no 2 2 (-12 130) no A12 (2 135) no 26 26 (-17 140) no A13 (2 145) no 27 27 (-17 150) no A14 (2 155) no 28 28 (14 -2) no 14 14 (14 175) no 11 11 (67 10) no D0 (42 15) no 12 12 (67 20) no D1 (42 25) no 13 13 (67 30) no D2 (42 35) no 15 15 (67 40) no D3 (42 45) no 16 16 (67 50) no D4 (42 55) no 17 17 (67 60) no D5 (42 65) no 18 18 (67 70) no D6 (42 75) no 19 19 (67 80) no D7 (42 85) no 1 1 (67 100) no Vpp (40 105) no 22 22 (67 120) no OE (42 125) no 20 20 (67 140) no CS (42 145) no Model @model (-25 175) no Refdes U Model 27256 Template 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 27512 27512 64K EPROM Reference designator @refdes (0 -10) yes 10 10 (-17 10) no A0 (2 15) no 9 9 (-12 20) no A1 (2 25) no 8 8 (-12 30) no A2 (2 35) no 7 7 (-12 40) no A3 (2 45) no 6 6 (-12 50) no A4 (2 55) no 5 5 (-12 60) no A5 (2 65) no 4 4 (-12 70) no A6 (2 75) no 3 3 (-12 80) no A7 (2 85) no 25 25 (-17 90) no A8 (2 95) no 24 24 (-17 100) no A9 (2 105) no 21 21 (-17 110) no A10 (2 115) no 23 23 (-17 120) no A11 (2 125) no 2 2 (-12 130) no A12 (2 135) no 26 26 (-17 140) no A13 (2 145) no 27 27 (-17 150) no A14 (2 155) no 1 1 (-12 160) no A15 (2 165) no 28 28 (14 -2) no 14 14 (14 185) no 11 11 (67 10) no D0 (42 15) no 12 12 (67 20) no D1 (42 25) no 13 13 (67 30) no D2 (42 35) no 15 15 (67 40) no D3 (42 45) no 16 16 (67 50) no D4 (42 55) no 17 17 (67 60) no D5 (42 65) no 18 18 (67 70) no D6 (42 75) no 19 19 (67 80) no D7 (42 85) no 22 22 (67 120) no OE (42 125) no 20 20 (67 140) no CS (42 145) no Model @model (-25 185) no Refdes U Model 27512 Template 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 27C010 27010 128Kx8 EPROM Reference designator @refdes (0 -10) yes 12 12 (-17 10) no A0 (2 15) no 11 11 (-17 20) no A1 (2 25) no 10 10 (-17 30) no A2 (2 35) no 9 9 (-12 40) no A3 (2 45) no 8 8 (-12 50) no A4 (2 55) no 7 7 (-12 60) no A5 (2 65) no 6 6 (-12 70) no A6 (2 75) no 5 5 (-12 80) no A7 (2 85) no 27 27 (-17 90) no A8 (2 95) no 26 26 (-17 100) no A9 (2 105) no 23 23 (-17 110) no A10 (2 115) no 25 25 (-17 120) no A11 (2 125) no 4 4 (-12 130) no A12 (2 135) no 28 28 (-17 140) no A13 (2 145) no 3 3 (-12 150) no A14 (2 155) no 31 31 (-17 160) no A15 (2 165) no 2 2 (-12 170) no A16 (2 175) no 32 32 (14 -2) no 16 16 (14 195) no 13 13 (67 10) no D0 (42 15) no 14 14 (67 20) no D1 (42 25) no 15 15 (67 30) no D2 (42 35) no 17 17 (67 40) no D3 (42 45) no 18 18 (67 50) no D4 (42 55) no 19 19 (67 60) no D5 (42 65) no 20 20 (67 70) no D6 (42 75) no 21 21 (67 80) no D7 (42 85) no 1 1 (67 100) no Vpp (36 105) no 31 31 (67 120) no PGM (36 125) no 24 24 (67 140) no OE (42 145) no 22 22 (67 160) no CS (42 165) no Model @model (-35 195) no Refdes U Model 27C010 Template 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 @model 27C020 27020 256Kx8 EPROM Reference designator @refdes (0 -10) yes 12 12 (-17 10) no A0 (2 15) no 11 11 (-17 20) no A1 (2 25) no 10 10 (-17 30) no A2 (2 35) no 9 9 (-12 40) no A3 (2 45) no 8 8 (-12 50) no A4 (2 55) no 7 7 (-12 60) no A5 (2 65) no 6 6 (-12 70) no A6 (2 75) no 5 5 (-12 80) no A7 (2 85) no 27 27 (-17 90) no A8 (2 95) no 26 26 (-17 100) no A9 (2 105) no 23 23 (-17 110) no A10 (2 115) no 25 25 (-17 120) no A11 (2 125) no 4 4 (-12 130) no A12 (2 135) no 28 28 (-17 140) no A13 (2 145) no 3 3 (-12 150) no A14 (2 155) no 31 31 (-17 160) no A15 (2 165) no 2 2 (-12 170) no A16 (2 175) no 30 30 (-17 180) no A17 (2 185) no 32 32 (14 -2) no 16 16 (14 205) no 13 13 (67 10) no D0 (42 15) no 14 14 (67 20) no D1 (42 25) no 15 15 (67 30) no D2 (42 35) no 17 17 (67 40) no D3 (42 45) no 18 18 (67 50) no D4 (42 55) no 19 19 (67 60) no D5 (42 65) no 20 20 (67 70) no D6 (42 75) no 21 21 (67 80) no D7 (42 85) no 1 1 (67 100) no Vpp (36 105) no 31 31 (67 120) no PGM (36 125) no 24 24 (67 140) no OE (42 145) no 22 22 (67 160) no CS (42 165) no Model @model (-35 205) no Refdes U Model 27C020 Template 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 @model 27C040 27040 512Kx8 EPROM Reference designator @refdes (0 -10) yes 12 12 (-17 10) no A0 (2 15) no 11 11 (-17 20) no A1 (2 25) no 10 10 (-17 30) no A2 (2 35) no 9 9 (-12 40) no A3 (2 45) no 8 8 (-12 50) no A4 (2 55) no 7 7 (-12 60) no A5 (2 65) no 6 6 (-12 70) no A6 (2 75) no 5 5 (-12 80) no A7 (2 85) no 27 27 (-17 90) no A8 (2 95) no 26 26 (-17 100) no A9 (2 105) no 23 23 (-17 110) no A10 (2 115) no 25 25 (-17 120) no A11 (2 125) no 4 4 (-12 130) no A12 (2 135) no 28 28 (-17 140) no A13 (2 145) no 3 3 (-12 150) no A14 (2 155) no 31 31 (-17 160) no A15 (2 165) no 2 2 (-12 170) no A16 (2 175) no 30 30 (-17 180) no A17 (2 185) no 31 31 (-17 190) no A18 (2 195) no 32 32 (14 -2) no 16 16 (14 215) no 13 13 (67 10) no D0 (42 15) no 14 14 (67 20) no D1 (42 25) no 15 15 (67 30) no D2 (42 35) no 17 17 (67 40) no D3 (42 45) no 18 18 (67 50) no D4 (42 55) no 19 19 (67 60) no D5 (42 65) no 20 20 (67 70) no D6 (42 75) no 21 21 (67 80) no D7 (42 85) no 1 1 (67 100) no Vpp (36 105) no 24 24 (67 140) no OE (42 145) no 22 22 (67 160) no CS (42 165) no Model @model (-35 215) no Refdes U Model 27C040 Template 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 @model 27C080 27080 1Mx8 EPROM Reference designator @refdes (0 -10) yes 12 12 (-17 10) no A0 (2 15) no 11 11 (-17 20) no A1 (2 25) no 10 10 (-17 30) no A2 (2 35) no 9 9 (-12 40) no A3 (2 45) no 8 8 (-12 50) no A4 (2 55) no 7 7 (-12 60) no A5 (2 65) no 6 6 (-12 70) no A6 (2 75) no 5 5 (-12 80) no A7 (2 85) no 27 27 (-17 90) no A8 (2 95) no 26 26 (-17 100) no A9 (2 105) no 23 23 (-17 110) no A10 (2 115) no 25 25 (-17 120) no A11 (2 125) no 4 4 (-12 130) no A12 (2 135) no 28 28 (-17 140) no A13 (2 145) no 3 3 (-12 150) no A14 (2 155) no 31 31 (-17 160) no A15 (2 165) no 2 2 (-12 170) no A16 (2 175) no 30 30 (-17 180) no A17 (2 185) no 31 31 (-17 190) no A18 (2 195) no 1 1 (-12 200) no A19 (2 205) no 32 32 (14 -2) no 16 16 (14 225) no 13 13 (67 10) no D0 (42 15) no 14 14 (67 20) no D1 (42 25) no 15 15 (67 30) no D2 (42 35) no 17 17 (67 40) no D3 (42 45) no 18 18 (67 50) no D4 (42 55) no 19 19 (67 60) no D5 (42 65) no 20 20 (67 70) no D6 (42 75) no 21 21 (67 80) no D7 (42 85) no 24 24 (67 140) no OE (42 145) no 22 22 (67 160) no CS (42 165) no Model @model (-35 225) no Refdes U Model 27C080 Template 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 @model 6116 6116 2K Static RAM Reference designator @refdes (0 -10) yes 8 8 (-12 10) no A0 (2 15) no 7 7 (-12 20) no A1 (2 25) no 6 6 (-12 30) no A2 (2 35) no 5 5 (-12 40) no A3 (2 45) no 4 4 (-12 50) no A4 (2 55) no 3 3 (-12 60) no A5 (2 65) no 2 2 (-12 70) no A6 (2 75) no 1 1 (-12 80) no A7 (2 85) no 23 23 (-17 90) no A8 (2 95) no 22 22 (-17 100) no A9 (2 105) no 19 19 (-17 110) no A10 (2 115) no 24 24 (14 -2) no 12 12 (14 135) no 9 9 (67 10) no D0 (42 15) no 10 10 (67 20) no D1 (42 25) no 11 11 (67 30) no D2 (42 35) no 13 13 (67 40) no D3 (42 45) no 14 14 (67 50) no D4 (42 55) no 15 15 (67 60) no D5 (42 65) no 16 16 (67 70) no D6 (42 75) no 17 17 (67 80) no D7 (42 85) no 21 21 (67 90) no W (45 95) no 18 18 (67 100) no CE (42 105) no 20 20 (67 110) no OE (42 115) no Model @model (-25 135) no Refdes U Model 6116 Template 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 6064 6064 8K Static RAM Reference designator @refdes (0 -10) yes 10 10 (-17 10) no A0 (2 15) no 9 9 (-12 20) no A1 (2 25) no 8 8 (-12 30) no A2 (2 35) no 7 7 (-12 40) no A3 (2 45) no 6 6 (-12 50) no A4 (2 55) no 5 5 (-12 60) no A5 (2 65) no 4 4 (-12 70) no A6 (2 75) no 3 3 (-12 80) no A7 (2 85) no 25 25 (-17 90) no A8 (2 95) no 24 24 (-17 100) no A9 (2 105) no 21 21 (-17 110) no A10 (2 115) no 23 23 (-17 120) no A11 (2 125) no 2 2 (-12 130) no A12 (2 135) no 28 28 (14 -2) no 14 14 (14 165) no 11 11 (67 10) no D0 (42 15) no 12 12 (67 20) no D1 (42 25) no 13 13 (67 30) no D2 (42 35) no 15 15 (67 40) no D3 (42 45) no 16 16 (67 50) no D4 (42 55) no 17 17 (67 60) no D5 (42 65) no 18 18 (67 70) no D6 (42 75) no 19 19 (67 80) no D7 (42 85) no 26 26 (67 100) no E2 (42 105) no 20 20 (67 110) no E1 (42 115) no 22 22 (67 120) no OE (42 125) no 27 27 (67 130) no W (45 135) no Model @model (-25 155) no Refdes U Model 6064 Template 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 @model 60256 60256 32K Static RAM Reference designator @refdes (0 -10) yes 10 10 (-17 10) no A0 (2 15) no 9 9 (-12 20) no A1 (2 25) no 8 8 (-12 30) no A2 (2 35) no 7 7 (-12 40) no A3 (2 45) no 6 6 (-12 50) no A4 (2 55) no 5 5 (-12 60) no A5 (2 65) no 4 4 (-12 70) no A6 (2 75) no 3 3 (-12 80) no A7 (2 85) no 25 25 (-17 90) no A8 (2 95) no 24 24 (-17 100) no A9 (2 105) no 21 21 (-17 110) no A10 (2 115) no 23 23 (-17 120) no A11 (2 125) no 2 2 (-12 130) no A12 (2 135) no 26 26 (-17 140) no A13 (2 145) no 1 1 (-12 150) no A14 (2 155) no 28 28 (14 -2) no 14 14 (14 175) no 11 11 (67 10) no D0 (42 15) no 12 12 (67 20) no D1 (42 25) no 13 13 (67 30) no D2 (42 35) no 15 15 (67 40) no D3 (42 45) no 16 16 (67 50) no D4 (42 55) no 17 17 (67 60) no D5 (42 65) no 18 18 (67 70) no D6 (42 75) no 19 19 (67 80) no D7 (42 85) no 27 27 (67 100) no W (45 105) no 22 22 (67 120) no OE (42 125) no 20 20 (67 140) no CE (42 145) no Model @model (-25 175) no Refdes U Model 60256 Template 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 55100 55100 128Kx8 Static RAM Reference designator @refdes (0 -10) yes 12 12 (-17 10) no A0 (2 15) no 11 11 (-17 20) no A1 (2 25) no 10 10 (-17 30) no A2 (2 35) no 9 9 (-12 40) no A3 (2 45) no 8 8 (-12 50) no A4 (2 55) no 7 7 (-12 60) no A5 (2 65) no 6 6 (-12 70) no A6 (2 75) no 5 5 (-12 80) no A7 (2 85) no 27 27 (-17 90) no A8 (2 95) no 26 26 (-17 100) no A9 (2 105) no 23 23 (-17 110) no A10 (2 115) no 25 25 (-17 120) no A11 (2 125) no 4 4 (-12 130) no A12 (2 135) no 28 28 (-17 140) no A13 (2 145) no 3 3 (-12 150) no A14 (2 155) no 31 31 (-17 160) no A15 (2 165) no 2 2 (-12 170) no A16 (2 175) no 32 32 (14 -2) no 16 16 (14 195) no 13 13 (67 10) no D0 (42 15) no 14 14 (67 20) no D1 (42 25) no 15 15 (67 30) no D2 (42 35) no 17 17 (67 40) no D3 (42 45) no 18 18 (67 50) no D4 (42 55) no 19 19 (67 60) no D5 (42 65) no 20 20 (67 70) no D6 (42 75) no 21 21 (67 80) no D7 (42 85) no 29 29 (67 100) no R|W (36 105) no 24 24 (67 110) no OE (42 115) no 30 30 (67 130) no CE2 (36 135) no 22 22 (67 140) no CE1 (36 145) no Model @model (-25 195) no Refdes U Model 55100 Template 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 @model NM93C06 NM93C06 256 bit serial EEPROM Reference designator @refdes (0 -10) yes 3 3 (-12 10) no DI (2 15) no 2 2 (-12 20) no CK (2 25) no 1 1 (-12 30) no CS (2 35) no 8 8 (20 -2) no VC (25 12) no 5 5 (20 55) no VS (25 39) no 4 4 (47 20) no DO (25 25) no Model @model (35 55) no Refdes U Model NM93C06 Template X_@refdes %1 %2 %3 %4 %5 %6 @model NM93C46 NM93C06 1024 bit serial EEPROM Reference designator @refdes (0 -10) yes 3 3 (-12 10) no DI (2 15) no 2 2 (-12 20) no CK (2 25) no 1 1 (-12 30) no CS (2 35) no 8 8 (20 -2) no VC (25 12) no 5 5 (20 55) no VS (25 39) no 4 4 (47 20) no DO (25 25) no Model @model (35 55) no Refdes U Model NM93C46 Template X_@refdes %1 %2 %3 %4 %5 %6 @model NM93C56 NM93C06 2048 bit serial EEPROM Reference designator @refdes (0 -10) yes 3 3 (-12 10) no DI (2 15) no 2 2 (-12 20) no CK (2 25) no 1 1 (-12 30) no CS (2 35) no 8 8 (20 -2) no VC (25 12) no 5 5 (20 55) no VS (25 39) no 4 4 (47 20) no DO (25 25) no Model @model (35 55) no Refdes U Model NM93C56 Template X_@refdes %1 %2 %3 %4 %5 %6 @model NM93C66 NM93C06 4096 bit serial EEPROM Reference designator @refdes (0 -10) yes 3 3 (-12 10) no DI (2 15) no 2 2 (-12 20) no CK (2 25) no 1 1 (-12 30) no CS (2 35) no 8 8 (20 -2) no VC (25 12) no 5 5 (20 55) no VS (25 39) no 4 4 (47 20) no DO (25 25) no Model @model (35 55) no Refdes U Model NM93C66 Template X_@refdes %1 %2 %3 %4 %5 %6 @model 74S287 74S287 256x4 bits PROM Reference designator @refdes (0 -20) yes 5 5 (-12 10) no A0 (2 15) no 6 6 (-12 20) no A1 (2 25) no 7 7 (-12 30) no A2 (2 35) no 4 4 (-12 40) no A3 (2 45) no 3 3 (-12 50) no A4 (2 55) no 2 2 (-12 60) no A5 (2 65) no 1 1 (-12 70) no A6 (2 75) no 15 15 (-17 80) no A7 (2 85) no 16 16 (9 -2) no 8 8 (14 105) no 12 12 (47 10) no D0 (24 15) no 11 11 (47 20) no D1 (24 25) no 10 10 (47 30) no D2 (24 35) no 9 9 (47 40) no D3 (24 45) no 13 13 (47 70) no E1 (24 75) no 14 14 (47 80) no E2 (24 85) no Model @model (25 105) no Refdes U Model 74S287 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model oregano-0.84.41/data/libraries/source-input.oreglib0000644000175000017500000005463413413640652021241 0ustar rubenruben Source Input modified by H. Bellesi 1.3 Richard Hult 11-Oct-2004 VSIN (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 12)(10 18) (7 15)(13 15) (7 25)(13 25) (10 0 1) (10 40 2) ISIN (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 12)(10 28) (10 12)(7 18) (10 12)(13 18) (10 40 1) (10 0 2) VPULSE (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 11)(10 17) (7 14)(13 14) (4 25)(6 25)(8 18)(12 18)(14 25)(17 25) (7 27)(13 27) (10 0 1) (10 40 2) CCVS (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 11)(10 17) (7 14)(13 14) (7 27)(13 27) (0 30)(20 10) (20 10)(20 15) (20 10)(15 10) (10 0 1) (10 40 2) VCVS (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 11)(10 17) (7 14)(13 14) (7 27)(13 27) (0 30)(20 10) (20 10)(20 15) (20 10)(15 10) (10 0 1) (10 40 2) VCCS (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 12)(10 28) (10 12)(7 18) (10 12)(13 18) (0 30)(20 10) (20 10)(20 15) (20 10)(15 10) (10 40 1) (10 0 2) CCCS (0 10)(20 30) (10 0)(10 10) (10 30)(10 40) (10 12)(10 28) (10 12)(7 18) (10 12)(13 18) (0 30)(20 10) (20 10)(20 15) (20 10)(15 10) (10 40 1) (10 0 2) VDC (10 0)(10 11) (-5 11)(25 11) (2 17)(18 17) (-5 23)(25 23) (2 29)(18 29) (10 29)(10 40) (10 0 1) (10 40 2) MPR (0 0)(5 -5)(50 -5)(50 5)(5 5)(0 0) (0 0) MPL (0 0)(-5 -5)(-50 -5)(-50 5)(-5 5)(0 0) (0 0) MPB (0 0)(5 -5)(45 -5)(50 0)(45 5)(5 5)(0 0) (0 0) power220 (-3 -3)(3 3) (17 -3)(23 3) (7 2)(13 8) (-5 -15)(25 15) (-10 0)(-3 0) (23 0)(30 0) (10 8)(10 20) (-10 0 1) (30 0 2) (10 20 3) power110 (7 7)(13 13) (-5 -12)(25 18) (-10 0)(5 0) (15 0)(30 0) (5 -5)(5 5) (15 -5)(15 5) (10 13)(10 30) (-10 0 1) (30 0 2) (10 30 3) VSIN VSIN Voltage source, sinusoidal Reference designator @refdes (15 10) yes Refdes V Offset 0.0 Amplitude 1.0 Frequency 1.0 DC 0.0 AC 0.0 Template V_@refdes %1 %2 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) VAC VSIN AC voltage source, sinusoidal Reference designator @refdes (15 10) yes AC Leyend AC (15 45) no Refdes V Offset 0.0 Amplitude 1.0 Frequency 1.0 DC 0.0 Template V_@refdes %1 %2 dc @dc ac 1.0 sin(@Offset @Amplitude @Frequency 0 0) CCVS CCVS Current Controlled Voltage source Reference designator @refdes (15 10) yes Controlling source @transresistance I ( @vcon ) (15 40) yes Refdes H Transresistance 1.0 VCON V1 Template H_@refdes %1 %2 V_@vcon @transresistance VCVS VCVS Voltage Controlled Voltage source Reference designator @refdes (15 10) yes Controlling voltage @gain V ( @ncp , @ncn ) (15 40) yes Refdes E Gain 1.0 NCP 0 NCN 0 Template E_@refdes %1 %2 @ncp @ncn @gain VCCS VCCS Voltage Controlled Current source Reference designator @refdes (15 10) yes Controlling voltage @transconductance V ( @ncp , @ncn ) (15 40) yes Refdes G Transconductance 1.0 NCP 0 NCN 0 Template G_@refdes %1 %2 @ncp @ncn @transconductance CCCS CCCS Current Controlled Current source Reference designator @refdes (15 10) yes Controlling source @gain I ( @vcon ) (15 40) yes Refdes F Gain 1.0 VCON V1 Template F_@refdes %1 %2 V_@vcon @gain ISIN ISIN Current source, sinusoidal Reference designator @refdes (15 10) yes Refdes I Offset 0.0 Amplitude 1.0 Frequency 1.0 DC 0.0 AC 0.0 Template I_@refdes %1 %2 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) VPULSE VPULSE Voltage source, pulse Reference designator @refdes (15 10) yes Refdes V DC 0.0 AC 0.0 v1 0.0 v2 0.0 td 0.0 tr 0.0 tf 0.0 pw 0.0 per 0.0 Template V_@refdes %1 %2 dc @dc ac @ac PULSE @v1 @v2 @td @tr @tf @pw @per VDC VDC Voltage source, direct current Reference designator @refdes (25 10) yes Refdes V DC 1.0 Template V_@refdes %1 %2 dc @DC AC Power 110V power110 AC Power 110V Reference designator @refdes (10 -20) yes Frequency 60 Hz (30 -10) no V 110 V (30 -25) no Refdes J Offset 0.0 Amplitude 110.0 Frequency 60.0 DC 0.0 AC 0.0 Template J_@refdes %1 %2 %3 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) AC Power 220V power220 AC Power 220V Reference designator @refdes (10 -20) yes Frequency 50 Hz (30 -10) yes V 220 V (30 -25) yes Refdes J Offset 0.0 Amplitude 220.0 Frequency 50.0 DC 0.0 AC 0.0 Template J_@refdes %1 %2 %3 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0) oregano-0.84.41/data/libraries/interface.oreglib0000644000175000017500000002665313413640652020544 0ustar rubenruben Interface Interface Library 0.1 Hector Bellesi 29-Jun-2001 MAX232 (0 0)(60 0)(60 160)(0 160)(0 0) (-20 10)(0 10) (-20 40)(0 40) (-20 60)(0 60) (-20 90)(0 90) (-20 110)(0 110) (-20 120)(0 120) (-20 140)(0 140) (-20 150)(0 150) (30 -20)(30 0) (50 160)(50 180) (60 10)(80 10) (60 40)(80 40) (60 60)(80 60) (60 70)(80 70) (60 90)(80 90) (60 100)(80 100) (-20 10 1) (-20 40 3) (-20 60 4) (-20 90 5) (-20 110 11) (-20 120 10) (-20 140 12) (-20 150 9) (30 -20 16) (50 180 15) (80 10 2) (80 40 6) (80 60 14) (80 70 7) (80 90 13) (80 100 8) optodiac (-3 10)(3 15)(3 10)(8 15) (8 12) (8 15)(5 15) (-3 20)(3 25)(3 20)(8 25) (8 22) (8 25)(5 25) (-20 0)(-20 15) (-26 15)(-14 15)(-20 25)(-26 15) (-26 25)(-14 25) (-20 25)(-20 40) (20 0)(20 15)(10 15)(15 25)(20 15)(30 15) (10 25)(30 25)(25 15)(20 25)(20 40) (20 0 6) (20 40 4) (-20 0 1) (-20 40 2) MAX232 MAX232 TTL to RS232 Interface Reference designator @refdes (-10 -20) yes 1 1 (-12 10) no C1+ (2 15) no 3 3 (-12 40) no C1- (2 45) no 4 4 (-12 60) no C2+ (2 65) no 5 5 (-12 90) no C2- (2 95) no 11 11 (-17 110) no TDI (2 115) no 10 10 (-17 120) no RTSI (2 125) no 12 12 (-17 140) no RDO (2 145) no 9 9 (-17 150) no CTSO (2 155) no 16 16 (18 0) no VC (25 12) no ] 15 15 (38 175) no VS (45 160) no 2 2 (67 10) no +B (43 15) no 6 6 (67 40) no -B (43 45) no 14 14 (67 60) no TDO (38 65) no 7 7 (67 70) no RTS (38 75) no 13 13 (67 90) no RDI (38 95) no 8 8 (67 100) no CTSI (33 105) no Model @model (-20 175) no Refdes U Model MAX232 Template X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model Opto Diac optodiac Opto Diac Reference designator @refdes (0 0) yes 1 1 (-30 10) no 2 2 (-30 40) no 6 6 (10 10) no 4 4 (10 40) no Model @model (30 40) yes Refdes U Model MOC3041 Template Q_@refdes %1 %2 %3 %4 @model oregano-0.84.41/data/libraries/connectors.oreglib0000644000175000017500000046642213413640652020763 0ustar rubenruben Connectors Connectors Library 0.26 Hector Bellesi / Dietmar Eberhard, Dietmar.Eberhard@ipm.fhg.de 19-Aug-2001 BNC (3 3)(-3 -3) (9 9)(-9 -9) (3 0)(40 0) (0 9)(0 40) (40 0 1) (0 40 2) DB9 (0 -3)(6 3) (0 17)(6 23) (0 37)(6 43) (0 57)(6 63) (10 -13)(16 -7) (10 7)(16 13) (10 27)(16 33) (10 47)(16 53) (10 67)(16 73) (6 0)(40 0) (6 20)(40 20) (6 40)(40 40) (6 60)(40 60) (16 -10)(40 -10) (16 10)(40 10) (16 30)(40 30) (16 50)(40 50) (16 70)(40 70) (-5 -5)(10 -20)(15 -20)(20 -15)(20 75)(15 80)(10 80)(-5 65)(-5 -5) (40 -10 1) (40 0 6) (40 10 2) (40 20 7) (40 30 3) (40 40 8) (40 50 4) (40 60 9) (40 70 5) DB15 (0 -3)(6 3) (0 17)(6 23) (0 37)(6 43) (0 57)(6 63) (0 77)(6 83) (0 97)(6 103) (0 117)(6 123) (10 -13)(16 -7) (10 7)(16 13) (10 27)(16 33) (10 47)(16 53) (10 67)(16 73) (10 87)(16 93) (10 107)(16 113) (10 127)(16 133) (6 0)(40 0) (6 20)(40 20) (6 40)(40 40) (6 60)(40 60) (6 80)(40 80) (6 100)(40 100) (6 120)(40 120) (16 -10)(40 -10) (16 10)(40 10) (16 30)(40 30) (16 50)(40 50) (16 70)(40 70) (16 90)(40 90) (16 110)(40 110) (16 130)(40 130) (-5 -5)(10 -20)(15 -20)(20 -15)(20 135)(15 140)(10 140)(-5 125)(-5 -5) (40 -10 1) (40 0 9) (40 10 2) (40 20 10) (40 30 3) (40 40 11) (40 50 4) (40 60 12) (40 70 5) (40 80 13) (40 90 6) (40 100 14) (40 110 7) (40 120 15) (40 130 8) DB25 (0 -3)(6 3) (0 17)(6 23) (0 37)(6 43) (0 57)(6 63) (0 77)(6 83) (0 97)(6 103) (0 117)(6 123) (0 137)(6 143) (0 157)(6 163) (0 177)(6 183) (0 197)(6 203) (0 217)(6 223) (10 -13)(16 -7) (10 7)(16 13) (10 27)(16 33) (10 47)(16 53) (10 67)(16 73) (10 87)(16 93) (10 107)(16 113) (10 127)(16 133) (10 147)(16 153) (10 167)(16 173) (10 187)(16 193) (10 207)(16 213) (10 227)(16 233) (6 0)(40 0) (6 20)(40 20) (6 40)(40 40) (6 60)(40 60) (6 80)(40 80) (6 100)(40 100) (6 120)(40 120) (6 140)(40 140) (6 160)(40 160) (6 180)(40 180) (6 200)(40 200) (6 220)(40 220) (16 -10)(40 -10) (16 10)(40 10) (16 30)(40 30) (16 50)(40 50) (16 70)(40 70) (16 90)(40 90) (16 110)(40 110) (16 130)(40 130) (16 150)(40 150) (16 170)(40 170) (16 190)(40 190) (16 210)(40 210) (16 230)(40 230) (-5 -5)(10 -20)(15 -20)(20 -15)(20 235)(15 240)(10 240)(-5 225)(-5 -5) (40 -10 1) (40 0 14) (40 10 2) (40 20 15) (40 30 3) (40 40 16) (40 50 4) (40 60 17) (40 70 5) (40 80 18) (40 90 6) (40 100 19) (40 110 7) (40 120 20) (40 130 8) (40 140 21) (40 150 9) (40 160 22) (40 170 10) (40 180 23) (40 190 11) (40 200 24) (40 210 12) (40 220 25) (40 230 13) DB37 (0 -3)(6 3) (0 17)(6 23) (0 37)(6 43) (0 57)(6 63) (0 77)(6 83) (0 97)(6 103) (0 117)(6 123) (0 137)(6 143) (0 157)(6 163) (0 177)(6 183) (0 197)(6 203) (0 217)(6 223) (0 237)(6 243) (0 257)(6 263) (0 277)(6 283) (0 297)(6 303) (0 317)(6 323) (0 337)(6 343) (10 -13)(16 -7) (10 7)(16 13) (10 27)(16 33) (10 47)(16 53) (10 67)(16 73) (10 87)(16 93) (10 107)(16 113) (10 127)(16 133) (10 147)(16 153) (10 167)(16 173) (10 187)(16 193) (10 207)(16 213) (10 227)(16 233) (10 247)(16 253) (10 267)(16 273) (10 287)(16 293) (10 307)(16 313) (10 327)(16 333) (10 347)(16 353) (6 0)(40 0) (6 20)(40 20) (6 40)(40 40) (6 60)(40 60) (6 80)(40 80) (6 100)(40 100) (6 120)(40 120) (6 140)(40 140) (6 160)(40 160) (6 180)(40 180) (6 200)(40 200) (6 220)(40 220) (6 240)(40 240) (6 260)(40 260) (6 280)(40 280) (6 300)(40 300) (6 320)(40 320) (6 340)(40 340) (16 -10)(40 -10) (16 10)(40 10) (16 30)(40 30) (16 50)(40 50) (16 70)(40 70) (16 90)(40 90) (16 110)(40 110) (16 130)(40 130) (16 150)(40 150) (16 170)(40 170) (16 190)(40 190) (16 210)(40 210) (16 230)(40 230) (16 250)(40 250) (16 270)(40 270) (16 290)(40 290) (16 310)(40 310) (16 330)(40 330) (16 350)(40 350) (-5 -5)(10 -20)(15 -20)(20 -15)(20 355)(15 360)(10 360)(-5 345)(-5 -5) (40 -10 1) (40 0 20) (40 10 2) (40 20 21) (40 30 3) (40 40 22) (40 50 4) (40 60 23) (40 70 5) (40 80 24) (40 90 6) (40 100 25) (40 110 7) (40 120 26) (40 130 8) (40 140 27) (40 150 9) (40 160 28) (40 170 10) (40 180 29) (40 190 11) (40 200 30) (40 210 12) (40 220 31) (40 230 13) (40 240 32) (40 250 14) (40 260 33) (40 270 15) (40 280 34) (40 290 16) (40 300 35) (40 310 17) (40 320 36) (40 330 18) (40 340 37) (40 350 19) H2x2 (-3 -3)(3 3) (-3 7)(3 13) (7 -3)(13 3) (7 7)(13 13) (-20 0)(-3 0) (-20 10)(-3 10) (13 0)(30 0) (13 10)(30 10) (-20 0 1) (-20 10 3) (30 0 2) (30 10 4) Hx2 (7 -3)(13 3) (7 7)(13 13) (13 0)(30 0) (13 10)(30 10) (30 0 1) (30 10 2) H3x2 (-3 -3)(3 3) (-3 7)(3 13) (-3 17)(3 23) (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (-20 0)(-3 0) (-20 10)(-3 10) (-20 20)(-3 20) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (-20 0 1) (-20 10 3) (-20 20 5) (30 0 2) (30 10 4) (30 20 6) Hx3 (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (30 0 1) (30 10 2) (30 20 3) H4x2 (-3 -3)(3 3) (-3 7)(3 13) (-3 17)(3 23) (-3 27)(3 33) (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (-20 0)(-3 0) (-20 10)(-3 10) (-20 20)(-3 20) (-20 30)(-3 30) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (-20 0 1) (-20 10 3) (-20 20 5) (-20 30 7) (30 0 2) (30 10 4) (30 20 6) (30 30 8) Hx4 (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (30 0 1) (30 10 2) (30 20 3) (30 30 4) H5x2 (-3 -3)(3 3) (-3 7)(3 13) (-3 17)(3 23) (-3 27)(3 33) (-3 37)(3 43) (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (-20 0)(-3 0) (-20 10)(-3 10) (-20 20)(-3 20) (-20 30)(-3 30) (-20 40)(-3 40) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (-20 0 1) (-20 10 3) (-20 20 5) (-20 30 7) (-20 40 9) (30 0 2) (30 10 4) (30 20 6) (30 30 8) (30 40 10) Hx5 (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (30 0 1) (30 10 2) (30 20 3) (30 30 4) (30 40 5) H6x2 (-3 -3)(3 3) (-3 7)(3 13) (-3 17)(3 23) (-3 27)(3 33) (-3 37)(3 43) (-3 47)(3 53) (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (-20 0)(-3 0) (-20 10)(-3 10) (-20 20)(-3 20) (-20 30)(-3 30) (-20 40)(-3 40) (-20 50)(-3 50) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (-20 0 1) (-20 10 3) (-20 20 5) (-20 30 7) (-20 40 9) (-20 50 11) (30 0 2) (30 10 4) (30 20 6) (30 30 8) (30 40 10) (30 50 12) Hx6 (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (30 0 1) (30 10 2) (30 20 3) (30 30 4) (30 40 5) (30 50 6) H7x2 (-3 -3)(3 3) (-3 7)(3 13) (-3 17)(3 23) (-3 27)(3 33) (-3 37)(3 43) (-3 47)(3 53) (-3 57)(3 63) (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (7 57)(13 63) (-20 0)(-3 0) (-20 10)(-3 10) (-20 20)(-3 20) (-20 30)(-3 30) (-20 40)(-3 40) (-20 50)(-3 50) (-20 60)(-3 60) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (13 60)(30 60) (-20 0 1) (-20 10 3) (-20 20 5) (-20 30 7) (-20 40 9) (-20 50 11) (-20 60 13) (30 0 2) (30 10 4) (30 20 6) (30 30 8) (30 40 10) (30 50 12) (30 60 14) Hx7 (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (7 57)(13 63) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (13 60)(30 60) (30 0 1) (30 10 2) (30 20 3) (30 30 4) (30 40 5) (30 50 6) (30 60 7) H8x2 (-3 -3)(3 3) (-3 7)(3 13) (-3 17)(3 23) (-3 27)(3 33) (-3 37)(3 43) (-3 47)(3 53) (-3 57)(3 63) (-3 67)(3 73) (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (7 57)(13 63) (7 67)(13 73) (-20 0)(-3 0) (-20 10)(-3 10) (-20 20)(-3 20) (-20 30)(-3 30) (-20 40)(-3 40) (-20 50)(-3 50) (-20 60)(-3 60) (-20 70)(-3 70) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (13 60)(30 60) (13 70)(30 70) (-20 0 1) (-20 10 3) (-20 20 5) (-20 30 7) (-20 40 9) (-20 50 11) (-20 60 13) (-20 70 15) (30 0 2) (30 10 4) (30 20 6) (30 30 8) (30 40 10) (30 50 12) (30 60 14) (30 70 16) Hx8 (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (7 57)(13 63) (7 67)(13 73) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (13 60)(30 60) (13 70)(30 70) (30 0 1) (30 10 2) (30 20 3) (30 30 4) (30 40 5) (30 50 6) (30 60 7) (30 70 8) Hx9 (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (7 57)(13 63) (7 67)(13 73) (7 77)(13 83) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (13 60)(30 60) (13 70)(30 70) (13 80)(30 80) (30 0 1) (30 10 2) (30 20 3) (30 30 4) (30 40 5) (30 50 6) (30 60 7) (30 70 8) (30 80 9) H10x2 (-3 -3)(3 3) (-3 7)(3 13) (-3 17)(3 23) (-3 27)(3 33) (-3 37)(3 43) (-3 47)(3 53) (-3 57)(3 63) (-3 67)(3 73) (-3 77)(3 83) (-3 87)(3 93) (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (7 57)(13 63) (7 67)(13 73) (7 77)(13 83) (7 87)(13 93) (-20 0)(-3 0) (-20 10)(-3 10) (-20 20)(-3 20) (-20 30)(-3 30) (-20 40)(-3 40) (-20 50)(-3 50) (-20 60)(-3 60) (-20 70)(-3 70) (-20 80)(-3 80) (-20 90)(-3 90) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (13 60)(30 60) (13 70)(30 70) (13 80)(30 80) (13 90)(30 90) (-20 0 1) (-20 10 3) (-20 20 5) (-20 30 7) (-20 40 9) (-20 50 11) (-20 60 13) (-20 70 15) (-20 80 17) (-20 90 19) (30 0 2) (30 10 4) (30 20 6) (30 30 8) (30 40 10) (30 50 12) (30 60 14) (30 70 16) (30 80 18) (30 90 20) Hx10 (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (7 57)(13 63) (7 67)(13 73) (7 77)(13 83) (7 87)(13 93) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (13 60)(30 60) (13 70)(30 70) (13 80)(30 80) (13 90)(30 90) (30 0 1) (30 10 2) (30 20 3) (30 30 4) (30 40 5) (30 50 6) (30 60 7) (30 70 8) (30 80 9) (30 90 10) H13x2 (-3 -3)(3 3) (-3 7)(3 13) (-3 17)(3 23) (-3 27)(3 33) (-3 37)(3 43) (-3 47)(3 53) (-3 57)(3 63) (-3 67)(3 73) (-3 77)(3 83) (-3 87)(3 93) (-3 97)(3 103) (-3 107)(3 113) (-3 117)(3 123) (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (7 57)(13 63) (7 67)(13 73) (7 77)(13 83) (7 87)(13 93) (7 97)(13 103) (7 107)(13 113) (7 117)(13 123) (-20 0)(-3 0) (-20 10)(-3 10) (-20 20)(-3 20) (-20 30)(-3 30) (-20 40)(-3 40) (-20 50)(-3 50) (-20 60)(-3 60) (-20 70)(-3 70) (-20 80)(-3 80) (-20 90)(-3 90) (-20 100)(-3 100) (-20 110)(-3 110) (-20 120)(-3 120) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (13 60)(30 60) (13 70)(30 70) (13 80)(30 80) (13 90)(30 90) (13 100)(30 100) (13 110)(30 110) (13 120)(30 120) (-20 0 1) (-20 10 3) (-20 20 5) (-20 30 7) (-20 40 9) (-20 50 11) (-20 60 13) (-20 70 15) (-20 80 17) (-20 90 19) (-20 100 21) (-20 110 23) (-20 120 25) (30 0 2) (30 10 4) (30 20 6) (30 30 8) (30 40 10) (30 50 12) (30 60 14) (30 70 16) (30 80 18) (30 90 20) (30 100 22) (30 110 24) (30 120 26) H17x2 (-3 -3)(3 3) (-3 7)(3 13) (-3 17)(3 23) (-3 27)(3 33) (-3 37)(3 43) (-3 47)(3 53) (-3 57)(3 63) (-3 67)(3 73) (-3 77)(3 83) (-3 87)(3 93) (-3 97)(3 103) (-3 107)(3 113) (-3 117)(3 123) (-3 127)(3 133) (-3 137)(3 143) (-3 147)(3 153) (-3 157)(3 163) (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (7 57)(13 63) (7 67)(13 73) (7 77)(13 83) (7 87)(13 93) (7 97)(13 103) (7 107)(13 113) (7 117)(13 123) (7 127)(13 133) (7 137)(13 143) (7 147)(13 153) (7 157)(13 163) (-20 0)(-3 0) (-20 10)(-3 10) (-20 20)(-3 20) (-20 30)(-3 30) (-20 40)(-3 40) (-20 50)(-3 50) (-20 60)(-3 60) (-20 70)(-3 70) (-20 80)(-3 80) (-20 90)(-3 90) (-20 100)(-3 100) (-20 110)(-3 110) (-20 120)(-3 120) (-20 130)(-3 130) (-20 140)(-3 140) (-20 150)(-3 150) (-20 160)(-3 160) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (13 60)(30 60) (13 70)(30 70) (13 80)(30 80) (13 90)(30 90) (13 100)(30 100) (13 110)(30 110) (13 120)(30 120) (13 130)(30 130) (13 140)(30 140) (13 150)(30 150) (13 160)(30 160) (-20 0 1) (-20 10 3) (-20 20 5) (-20 30 7) (-20 40 9) (-20 50 11) (-20 60 13) (-20 70 15) (-20 80 17) (-20 90 19) (-20 100 21) (-20 110 23) (-20 120 25) (-20 130 27) (-20 140 29) (-20 150 31) (-20 160 33) (30 0 2) (30 10 4) (30 20 6) (30 30 8) (30 40 10) (30 50 12) (30 60 14) (30 70 16) (30 80 18) (30 90 20) (30 100 22) (30 110 24) (30 120 26) (30 130 28) (30 140 30) (30 150 32) (30 160 34) H20x2 (-3 -3)(3 3) (-3 7)(3 13) (-3 17)(3 23) (-3 27)(3 33) (-3 37)(3 43) (-3 47)(3 53) (-3 57)(3 63) (-3 67)(3 73) (-3 77)(3 83) (-3 87)(3 93) (-3 97)(3 103) (-3 107)(3 113) (-3 117)(3 123) (-3 127)(3 133) (-3 137)(3 143) (-3 147)(3 153) (-3 157)(3 163) (-3 167)(3 173) (-3 177)(3 183) (-3 187)(3 193) (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (7 57)(13 63) (7 67)(13 73) (7 77)(13 83) (7 87)(13 93) (7 97)(13 103) (7 107)(13 113) (7 117)(13 123) (7 127)(13 133) (7 137)(13 143) (7 147)(13 153) (7 157)(13 163) (7 167)(13 173) (7 177)(13 183) (7 187)(13 193) (-20 0)(-3 0) (-20 10)(-3 10) (-20 20)(-3 20) (-20 30)(-3 30) (-20 40)(-3 40) (-20 50)(-3 50) (-20 60)(-3 60) (-20 70)(-3 70) (-20 80)(-3 80) (-20 90)(-3 90) (-20 100)(-3 100) (-20 110)(-3 110) (-20 120)(-3 120) (-20 130)(-3 130) (-20 140)(-3 140) (-20 150)(-3 150) (-20 160)(-3 160) (-20 170)(-3 170) (-20 180)(-3 180) (-20 190)(-3 190) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (13 60)(30 60) (13 70)(30 70) (13 80)(30 80) (13 90)(30 90) (13 100)(30 100) (13 110)(30 110) (13 120)(30 120) (13 130)(30 130) (13 140)(30 140) (13 150)(30 150) (13 160)(30 160) (13 170)(30 170) (13 180)(30 180) (13 190)(30 190) (-20 0 1) (-20 10 3) (-20 20 5) (-20 30 7) (-20 40 9) (-20 50 11) (-20 60 13) (-20 70 15) (-20 80 17) (-20 90 19) (-20 100 21) (-20 110 23) (-20 120 25) (-20 130 27) (-20 140 29) (-20 150 31) (-20 160 33) (-20 170 35) (-20 180 37) (-20 190 39) (30 0 2) (30 10 4) (30 20 6) (30 30 8) (30 40 10) (30 50 12) (30 60 14) (30 70 16) (30 80 18) (30 90 20) (30 100 22) (30 110 24) (30 120 26) (30 130 28) (30 140 30) (30 150 32) (30 160 34) (30 170 36) (30 180 38) (30 190 40) H25x2 (-3 -3)(3 3) (-3 7)(3 13) (-3 17)(3 23) (-3 27)(3 33) (-3 37)(3 43) (-3 47)(3 53) (-3 57)(3 63) (-3 67)(3 73) (-3 77)(3 83) (-3 87)(3 93) (-3 97)(3 103) (-3 107)(3 113) (-3 117)(3 123) (-3 127)(3 133) (-3 137)(3 143) (-3 147)(3 153) (-3 157)(3 163) (-3 167)(3 173) (-3 177)(3 183) (-3 187)(3 193) (-3 197)(3 203) (-3 207)(3 213) (-3 217)(3 223) (-3 227)(3 233) (-3 237)(3 243) (7 -3)(13 3) (7 7)(13 13) (7 17)(13 23) (7 27)(13 33) (7 37)(13 43) (7 47)(13 53) (7 57)(13 63) (7 67)(13 73) (7 77)(13 83) (7 87)(13 93) (7 97)(13 103) (7 107)(13 113) (7 117)(13 123) (7 127)(13 133) (7 137)(13 143) (7 147)(13 153) (7 157)(13 163) (7 167)(13 173) (7 177)(13 183) (7 187)(13 193) (7 197)(13 203) (7 207)(13 213) (7 217)(13 223) (7 227)(13 233) (7 237)(13 243) (-20 0)(-3 0) (-20 10)(-3 10) (-20 20)(-3 20) (-20 30)(-3 30) (-20 40)(-3 40) (-20 50)(-3 50) (-20 60)(-3 60) (-20 70)(-3 70) (-20 80)(-3 80) (-20 90)(-3 90) (-20 100)(-3 100) (-20 110)(-3 110) (-20 120)(-3 120) (-20 130)(-3 130) (-20 140)(-3 140) (-20 150)(-3 150) (-20 160)(-3 160) (-20 170)(-3 170) (-20 180)(-3 180) (-20 190)(-3 190) (-20 200)(-3 200) (-20 210)(-3 210) (-20 220)(-3 220) (-20 230)(-3 230) (-20 240)(-3 240) (13 0)(30 0) (13 10)(30 10) (13 20)(30 20) (13 30)(30 30) (13 40)(30 40) (13 50)(30 50) (13 60)(30 60) (13 70)(30 70) (13 80)(30 80) (13 90)(30 90) (13 100)(30 100) (13 110)(30 110) (13 120)(30 120) (13 130)(30 130) (13 140)(30 140) (13 150)(30 150) (13 160)(30 160) (13 170)(30 170) (13 180)(30 180) (13 190)(30 190) (13 200)(30 200) (13 210)(30 210) (13 220)(30 220) (13 230)(30 230) (13 240)(30 240) (-20 0 1) (-20 10 3) (-20 20 5) (-20 30 7) (-20 40 9) (-20 50 11) (-20 60 13) (-20 70 15) (-20 80 17) (-20 90 19) (-20 100 21) (-20 110 23) (-20 120 25) (-20 130 27) (-20 140 29) (-20 150 31) (-20 160 33) (-20 170 35) (-20 180 37) (-20 190 39) (-20 200 41) (-20 210 43) (-20 220 45) (-20 230 47) (-20 240 49) (30 0 2) (30 10 4) (30 20 6) (30 30 8) (30 40 10) (30 50 12) (30 60 14) (30 70 16) (30 80 18) (30 90 20) (30 100 22) (30 110 24) (30 120 26) (30 130 28) (30 140 30) (30 150 32) (30 160 34) (30 170 36) (30 180 38) (30 190 40) (30 200 42) (30 210 44) (30 220 46) (30 230 48) (30 240 50) PMT-12 (-10 -3)(10 -3) (10 10)(30 10) (10 30)(30 30) (10 50)(30 50) (10 70)(30 70) (10 90)(30 90) (10 110)(30 110) (10 130)(30 130) (10 150)(30 150) (10 170)(30 170) (10 190)(30 190) (10 210)(30 210) (-10 230)(30 230) (0 -30)(0 -3) (10 5)(10 15) (10 25)(10 35) (10 45)(10 55) (10 65)(10 75) (10 85)(10 95) (10 105)(10 115) (10 125)(10 135) (10 145)(10 155) (10 165)(10 175) (10 185)(10 195) (10 205)(10 215) (15 0)(15 235) (-15 0)(-15 235) (-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) (-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) (10 30 10) (30 30 9) (50 30 8) (70 30 7) (90 30 6) (110 30 5) (130 30 4) (150 30 3) (170 30 2) (190 30 1) (210 30 13) (230 30 14) (0 -30 11) PMT-10 (-10 -3)(10 -3) (10 10)(30 10) (10 30)(30 30) (10 50)(30 50) (10 70)(30 70) (10 90)(30 90) (10 110)(30 110) (10 130)(30 130) (10 150)(30 150) (10 170)(30 170) (-10 190)(30 190) (0 -30)(0 -3) (10 5)(10 15) (10 25)(10 35) (10 45)(10 55) (10 65)(10 75) (10 85)(10 95) (10 105)(10 115) (10 125)(10 135) (10 145)(10 155) (10 165)(10 175) (15 0)(15 195) (-15 0)(-15 195) (-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) (-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) (10 30 9) (30 30 8) (50 30 7) (70 30 6) (90 30 5) (110 30 4) (130 30 3) (150 30 2) (170 30 1) (190 30 11) (0 -30 10) Connector DB-9 DB9 connector DB-9 Reference designator @refdes (0 -25) yes 1 1 (26 -10) no 6 6 (26 0) no 2 2 (26 10) no 7 7 (26 20) no 3 3 (26 30) no 8 8 (26 40) no 4 4 (26 50) no 9 9 (26 60) no 5 5 (26 70) no Refdes J Model DB-9 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 @model Connector DB-15 DB15 connector DB-15 Reference designator @refdes (0 -25) yes 1 1 (26 -10) no 9 9 (26 0) no 2 2 (26 10) no 10 10 (26 20) no 3 3 (26 30) no 11 11 (26 40) no 4 4 (26 50) no 12 12 (26 60) no 5 5 (26 70) no 13 13 (26 80) no 6 6 (26 90) no 14 14 (26 100) no 7 7 (26 110) no 15 15 (26 120) no 8 8 (26 130) no Refdes J Model DB-15 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @model Connector DB-25 DB25 connector DB-25 Reference designator @refdes (0 -25) yes 1 1 (26 -10) no 14 14 (26 0) no 2 2 (26 10) no 15 15 (26 20) no 3 3 (26 30) no 16 16 (26 40) no 4 4 (26 50) no 17 17 (26 60) no 5 5 (26 70) no 18 18 (26 80) no 6 6 (26 90) no 19 19 (26 100) no 7 7 (26 110) no 20 20 (26 120) no 8 8 (26 130) no 21 21 (26 140) no 9 9 (26 150) no 22 22 (26 160) no 10 10 (26 170) no 23 23 (26 180) no 11 11 (26 190) no 24 24 (26 200) no 12 12 (26 210) no 25 25 (26 220) no 13 13 (26 230) no Refdes J Model DB-25 Template 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 Connector DB-37 DB37 connector DB-37 Reference designator @refdes (0 -25) yes 1 1 (26 -10) no 20 20 (26 0) no 2 2 (26 10) no 21 21 (26 20) no 3 3 (26 30) no 22 22 (26 40) no 4 4 (26 50) no 23 23 (26 60) no 5 5 (26 70) no 24 24 (26 80) no 6 6 (26 90) no 25 25 (26 100) no 7 7 (26 110) no 26 26 (26 120) no 8 8 (26 130) no 27 27 (26 140) no 9 9 (26 150) no 28 28 (26 160) no 10 10 (26 170) no 29 29 (26 180) no 11 11 (26 190) no 30 30 (26 200) no 12 12 (26 210) no 31 31 (26 220) no 13 13 (26 230) no 32 32 (26 240) no 14 14 (26 250) no 33 33 (26 260) no 15 15 (26 270) no 34 34 (26 280) no 16 16 (26 290) no 35 35 (26 300) no 17 17 (26 310) no 36 36 (26 320) no 18 18 (26 330) no 37 37 (26 340) no 19 19 (26 350) no Refdes J Model DB-37 Template 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 Connector BNC BNC BNC connector Reference designator @refdes (0 -20) yes Refdes J Model BNC Template XV_@refdes %1 %2 @model Header 2x2 H2x2 connector Header 2x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 3 3 (-15 10) no 2 2 (15 0) no 4 4 (15 10) no Refdes J Model H2x2 Template XV_@refdes %1 %2 %3 %4 @model Header 2 Hx2 connector Header 2 pins Reference designator @refdes (0 -10) yes 1 1 (15 0) no 2 2 (15 10) no Refdes J Model Hx2 Template XV_@refdes %1 %2 @model Header 3x2 H3x2 Header 3x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 2 2 (15 0) no 3 3 (-15 10) no 4 4 (15 10) no 5 5 (-15 20) no 6 6 (15 20) no Refdes J Model H3x2 Template XV_@refdes %1 %2 %3 %4 %5 %6 @model Header 3 Hx3 Header 3 pins Reference designator @refdes (0 -10) yes 1 1 (15 0) no 2 2 (15 10) no 3 3 (15 20) no Refdes J Model Hx3 Template XV_@refdes %1 %2 %3 @model Header 4x2 H4x2 Header 4x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 2 2 (15 0) no 3 3 (-15 10) no 4 4 (15 10) no 5 5 (-15 20) no 6 6 (15 20) no 7 7 (-15 30) no 8 8 (15 30) no Refdes J Model H4x2 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model Header 4 Hx4 Header 4 pins Reference designator @refdes (0 -10) yes 1 1 (15 0) no 2 2 (15 10) no 3 3 (15 20) no 4 4 (15 30) no Refdes J Model Hx4 Template XV_@refdes %1 %2 %3 %4 @model Header 5x2 H5x2 Header 5x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 2 2 (15 0) no 3 3 (-15 10) no 4 4 (15 10) no 5 5 (-15 20) no 6 6 (15 20) no 7 7 (-15 30) no 8 8 (15 30) no 9 9 (-15 40) no 10 10 (15 40) no Refdes J Model H5x2 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 @model Header 5 Hx5 Header 5 pins Reference designator @refdes (0 -10) yes 1 1 (15 0) no 2 2 (15 10) no 3 3 (15 20) no 4 4 (15 30) no 5 5 (15 40) no Refdes J Model Hx5 Template XV_@refdes %1 %2 %3 %4 %5 @model Header 6x2 H6x2 Header 6x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 2 2 (15 0) no 3 3 (-15 10) no 4 4 (15 10) no 5 5 (-15 20) no 6 6 (15 20) no 7 7 (-15 30) no 8 8 (15 30) no 9 9 (-15 40) no 10 10 (15 40) no 11 11 (-15 50) no 12 12 (15 50) no Refdes J Model H6x2 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 @model Header 6 Hx6 Header 6 pins Reference designator @refdes (0 -10) yes 1 1 (15 0) no 2 2 (15 10) no 3 3 (15 20) no 4 4 (15 30) no 5 5 (15 40) no 6 6 (15 50) no Refdes J Model Hx6 Template XV_@refdes %1 %2 %3 %4 %5 %6 @model Header 7x2 H7x2 Header 7x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 2 2 (15 0) no 3 3 (-15 10) no 4 4 (15 10) no 5 5 (-15 20) no 6 6 (15 20) no 7 7 (-15 30) no 8 8 (15 30) no 9 9 (-15 40) no 10 10 (15 40) no 11 11 (-15 50) no 12 12 (15 50) no 13 13 (-15 60) no 14 14 (15 60) no Refdes J Model H7x2 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model Header 7 Hx7 Header 7 pins Reference designator @refdes (0 -10) yes 1 1 (15 0) no 2 2 (15 10) no 3 3 (15 20) no 4 4 (15 30) no 5 5 (15 40) no 6 6 (15 50) no 7 7 (15 60) no Refdes J Model Hx7 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 @model Header 8x2 H8x2 Header 8x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 2 2 (15 0) no 3 3 (-15 10) no 4 4 (15 10) no 5 5 (-15 20) no 6 6 (15 20) no 7 7 (-15 30) no 8 8 (15 30) no 9 9 (-15 40) no 10 10 (15 40) no 11 11 (-15 50) no 12 12 (15 50) no 13 13 (-15 60) no 14 14 (15 60) no 15 15 (-15 70) no 16 16 (15 70) no Refdes J Model H8x2 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model Header 8 Hx8 Header 8 pins Reference designator @refdes (0 -10) yes 1 1 (15 0) no 2 2 (15 10) no 3 3 (15 20) no 4 4 (15 30) no 5 5 (15 40) no 6 6 (15 50) no 7 7 (15 60) no 8 8 (15 70) no Refdes J Model Hx8 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model Header 9 Hx9 Header 9 pins Reference designator @refdes (0 -10) yes 1 1 (15 0) no 2 2 (15 10) no 3 3 (15 20) no 4 4 (15 30) no 5 5 (15 40) no 6 6 (15 50) no 7 7 (15 60) no 8 8 (15 70) no 9 9 (15 80) no Refdes J Model Hx9 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 @model Header 10x2 H10x2 Header 10x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 2 2 (15 0) no 3 3 (-15 10) no 4 4 (15 10) no 5 5 (-15 20) no 6 6 (15 20) no 7 7 (-15 30) no 8 8 (15 30) no 9 9 (-15 40) no 10 10 (15 40) no 11 11 (-15 50) no 12 12 (15 50) no 13 13 (-15 60) no 14 14 (15 60) no 15 15 (-15 70) no 16 16 (15 70) no 17 17 (-15 80) no 18 18 (15 80) no 19 19 (-15 90) no 20 20 (15 90) no Refdes J Model H10x2 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model Header 10 Hx10 Header 10 pins Reference designator @refdes (0 -10) yes 1 1 (15 0) no 2 2 (15 10) no 3 3 (15 20) no 4 4 (15 30) no 5 5 (15 40) no 6 6 (15 50) no 7 7 (15 60) no 8 8 (15 70) no 9 9 (15 80) no 10 10 (15 90) no Refdes J Model Hx10 Template XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 @model Header 13x2 H13x2 Header 13x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 2 2 (15 0) no 3 3 (-15 10) no 4 4 (15 10) no 5 5 (-15 20) no 6 6 (15 20) no 7 7 (-15 30) no 8 8 (15 30) no 9 9 (-15 40) no 10 10 (15 40) no 11 11 (-15 50) no 12 12 (15 50) no 13 13 (-15 60) no 14 14 (15 60) no 15 15 (-15 70) no 16 16 (15 70) no 17 17 (-15 80) no 18 18 (15 80) no 19 19 (-15 90) no 20 20 (15 90) no 21 21 (-15 100) no 22 22 (15 100) no 23 23 (-15 110) no 24 24 (15 110) no 25 25 (-15 120) no 26 26 (15 120) no Refdes J Model H13x2 Template 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 Header 17x2 H17x2 Header 17x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 2 2 (15 0) no 3 3 (-15 10) no 4 4 (15 10) no 5 5 (-15 20) no 6 6 (15 20) no 7 7 (-15 30) no 8 8 (15 30) no 9 9 (-15 40) no 10 10 (15 40) no 11 11 (-15 50) no 12 12 (15 50) no 13 13 (-15 60) no 14 14 (15 60) no 15 15 (-15 70) no 16 16 (15 70) no 17 17 (-15 80) no 18 18 (15 80) no 19 19 (-15 90) no 20 20 (15 90) no 21 21 (-15 100) no 22 22 (15 100) no 23 23 (-15 110) no 24 24 (15 110) no 25 25 (-15 120) no 26 26 (15 120) no 27 27 (-15 130) no 28 28 (15 130) no 29 29 (-15 140) no 30 30 (15 140) no 31 31 (-15 150) no 32 32 (15 150) no 33 33 (-15 160) no 34 34 (15 160) no Refdes J Model H17x2 Template 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 Header 20x2 H20x2 Header 20x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 2 2 (15 0) no 3 3 (-15 10) no 4 4 (15 10) no 5 5 (-15 20) no 6 6 (15 20) no 7 7 (-15 30) no 8 8 (15 30) no 9 9 (-15 40) no 10 10 (15 40) no 11 11 (-15 50) no 12 12 (15 50) no 13 13 (-15 60) no 14 14 (15 60) no 15 15 (-15 70) no 16 16 (15 70) no 17 17 (-15 80) no 18 18 (15 80) no 19 19 (-15 90) no 20 20 (15 90) no 21 21 (-15 100) no 22 22 (15 100) no 23 23 (-15 110) no 24 24 (15 110) no 25 25 (-15 120) no 26 26 (15 120) no 27 27 (-15 130) no 28 28 (15 130) no 29 29 (-15 140) no 30 30 (15 140) no 31 31 (-15 150) no 32 32 (15 150) no 33 33 (-15 160) no 34 34 (15 160) no 35 35 (-15 170) no 36 36 (15 170) no 37 37 (-15 180) no 38 38 (15 180) no 39 39 (-15 190) no 40 40 (15 190) no Refdes J Model H20x2 Template 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 Header 25x2 H25x2 Header 25x2 pins Reference designator @refdes (0 -10) yes 1 1 (-15 0) no 2 2 (15 0) no 3 3 (-15 10) no 4 4 (15 10) no 5 5 (-15 20) no 6 6 (15 20) no 7 7 (-15 30) no 8 8 (15 30) no 9 9 (-15 40) no 10 10 (15 40) no 11 11 (-15 50) no 12 12 (15 50) no 13 13 (-15 60) no 14 14 (15 60) no 15 15 (-15 70) no 16 16 (15 70) no 17 17 (-15 80) no 18 18 (15 80) no 19 19 (-15 90) no 20 20 (15 90) no 21 21 (-15 100) no 22 22 (15 100) no 23 23 (-15 110) no 24 24 (15 110) no 25 25 (-15 120) no 26 26 (15 120) no 27 27 (-15 130) no 28 28 (15 130) no 29 29 (-15 140) no 30 30 (15 140) no 31 31 (-15 150) no 32 32 (15 150) no 33 33 (-15 160) no 34 34 (15 160) no 35 35 (-15 170) no 36 36 (15 170) no 37 37 (-15 180) no 38 38 (15 180) no 39 39 (-15 190) no 40 40 (15 190) no 41 41 (-15 200) no 42 42 (15 200) no 43 43 (-15 210) no 44 44 (15 210) no 45 45 (-15 220) no 46 46 (15 220) no 47 47 (-15 230) no 48 48 (15 230) no 49 49 (-15 240) no 50 50 (15 240) no Refdes J Model H25x2 Template 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 oregano-0.84.41/data/libraries/breakout.oreglib0000644000175000017500000034324313413640652020415 0ustar rubenruben breakout PSpice eval library 1.0 Rbreak 0 (28 14)(30 10) 0 (25 6)(28 14) 0 (22 14)(25 6) 0 (19 6)(22 14) 0 (16 14)(19 6) 0 (13 6)(16 14) 0 (11 10)(13 6) 0 (10 10)(11 10) 0 (10 10)(0 10) 0 (30 10)(40 10) (0 10) (40 10) Wbreak 0 (10 20)(14 20) 0 (10 10)(14 10) 0 (14 10)(14 20) 0 (30 20)(25 20) 0 (25 10)(30 10) 0 (12 13)(14 18)(16 13) 0 (25 20)(20 12) 0 (10 5)(10 25)(30 25)(30 5)(10 5) 0 (30 20)(40 20) 0 (30 10)(40 10) 0 (10 20)(0 20) 0 (10 10)(0 10) (40 20) (40 10) (0 20) (0 10) ZbreakN 0 (21 28)(28 29)(23 24) 0 (20 25)(30 30) 0 (30 10)(20 15) 0 (10 30)(17 30) 0 (17 10)(17 30) 0 (20 10)(20 30) 0 (30 30)(30 40) 0 (30 10)(30 0) 0 (10 30)(0 30) (30 40) (30 0) (0 30) DbreakCR 0 (12 5)(12 15)(20 10)(12 5) 0 (10 10)(12 10) 0 (20 5)(20 15) 0 (18 15)(22 15) 0 (18 5)(22 5) 0 (20 10)(30 10) 0 (10 10)(0 10) (30 10) (0 10) Dbreak 0 (10 10)(12 10) 0 (12 5)(12 15)(20 10)(12 5) 0 (20 5)(20 15) 0 (20 10)(30 10) 0 (10 10)(0 10) (30 10) (0 10) ADC10break 0 (10 10)(10 130)(60 130)(60 10)(10 10) 0 (60 30)(70 30) 0 (60 20)(70 20) 0 (10 100)(0 100) 0 (10 80)(0 80) 0 (10 60)(0 60) 0 (10 40)(0 40) 0 (10 20)(0 20) 0 (40 130)(40 140) 0 (30 130)(30 140) 0 (30 10)(30 0) 0 (60 110)(70 110) 0 (60 100)(70 100) 0 (60 90)(70 90) 0 (60 80)(70 80) 0 (60 70)(70 70) 0 (60 60)(70 60) 0 (60 50)(70 50) 0 (60 40)(70 40) (70 30) (70 20) (0 100) (0 80) (0 60) (0 40) (0 20) (40 140) (30 140) (30 0) (70 110) (70 100) (70 90) (70 80) (70 70) (70 60) (70 50) (70 40) Sbreak 0 (30 20)(25 20) 0 (25 10)(30 10) 0 (25 20)(20 12) 0 (10 5)(10 25)(30 25)(30 5)(10 5) 0 (30 20)(40 20) 0 (30 10)(40 10) 0 (10 20)(0 20) 0 (10 10)(0 10) (40 20) (40 10) (0 20) (0 10) Dbreak3 0 (12 25)(12 35)(20 30)(12 25) 0 (10 30)(12 30) 0 (12 5)(12 15)(20 10)(12 5) 0 (10 10)(12 10) 0 (30 10)(20 10) 0 (30 30)(30 10) 0 (20 30)(30 30) 0 (20 25)(20 35) 0 (20 5)(20 15) 0 (30 20)(40 20) 0 (10 30)(0 30) 0 (10 10)(0 10) (40 20) (0 30) (0 10) MbreakN3D 0 (20 7)(20 33) 0 (29 22)(23 20)(29 18) 0 (30 20)(30 30) 0 (20 20)(30 20) 0 (20 10)(30 10) 0 (20 30)(30 30) 0 (15 10)(15 30) 0 (10 20)(15 20) 0 (30 10)(30 0) 0 (10 20)(0 20) 0 (30 30)(30 40) (30 0) (0 20) (30 40) MbreakP4D 0 (20 7)(20 33) 0 (23 18)(29 20)(23 22) 0 (40 20)(40 30) 0 (20 20)(40 20) 0 (20 10)(30 10) 0 (20 30)(30 30) 0 (15 10)(15 30) 0 (10 20)(15 20) 0 (40 30)(40 40) 0 (30 10)(30 0) 0 (30 30)(30 40) 0 (10 20)(0 20) (40 40) (30 0) (30 40) (0 20) Bbreak 0 (20 10)(30 10) 0 (20 7)(20 33) 0 (20 30)(30 30) 0 (10 20)(20 20) 0 (10 20)(0 20) 0 (30 30)(30 40) 0 (30 10)(30 0) (0 20) (30 40) (30 0) ADC8break 0 (10 10)(10 110)(60 110)(60 10)(10 10) 0 (10 100)(0 100) 0 (10 80)(0 80) 0 (10 60)(0 60) 0 (10 40)(0 40) 0 (10 20)(0 20) 0 (40 110)(40 120) 0 (30 110)(30 120) 0 (30 10)(30 0) 0 (60 90)(70 90) 0 (60 80)(70 80) 0 (60 70)(70 70) 0 (60 60)(70 60) 0 (60 50)(70 50) 0 (60 40)(70 40) 0 (60 30)(70 30) 0 (60 20)(70 20) (0 100) (0 80) (0 60) (0 40) (0 20) (40 120) (30 120) (30 0) (70 90) (70 80) (70 70) (70 60) (70 50) (70 40) (70 30) (70 20) DAC8break 0 (10 10)(10 110)(60 110)(60 10)(10 10) 0 (60 80)(70 80) 0 (60 50)(70 50) 0 (40 110)(40 120) 0 (30 110)(30 120) 0 (30 10)(30 0) 0 (10 90)(0 90) 0 (10 80)(0 80) 0 (10 70)(0 70) 0 (10 60)(0 60) 0 (10 50)(0 50) 0 (10 40)(0 40) 0 (10 30)(0 30) 0 (10 20)(0 20) (70 80) (70 50) (40 120) (30 120) (30 0) (0 90) (0 80) (0 70) (0 60) (0 50) (0 40) (0 30) (0 20) QbreakN3 0 (20 10)(10 15) 0 (11 28)(18 29)(13 24) 0 (20 30)(10 25) 0 (10 10)(10 30) 0 (20 30)(20 40) 0 (20 10)(20 0) 0 (10 20)(0 20) (20 40) (20 0) (0 20) MbreakN3 0 (29 22)(23 20)(29 18) 0 (20 27)(20 33) 0 (20 17)(20 23) 0 (20 7)(20 13) 0 (30 20)(30 30) 0 (20 20)(30 20) 0 (20 10)(30 10) 0 (20 30)(30 30) 0 (15 10)(15 30) 0 (10 20)(15 20) 0 (30 10)(30 0) 0 (10 20)(0 20) 0 (30 30)(30 40) (30 0) (0 20) (30 40) MbreakN4 0 (29 22)(23 20)(29 18) 0 (20 27)(20 33) 0 (20 17)(20 23) 0 (20 7)(20 13) 0 (40 20)(40 30) 0 (20 20)(40 20) 0 (20 10)(30 10) 0 (20 30)(30 30) 0 (15 10)(15 30) 0 (10 20)(15 20) 0 (40 30)(40 40) 0 (30 10)(30 0) 0 (10 20)(0 20) 0 (30 30)(30 40) (40 40) (30 0) (0 20) (30 40) MbreakP4 0 (23 18)(29 20)(23 22) 0 (20 27)(20 33) 0 (20 17)(20 23) 0 (20 7)(20 13) 0 (40 20)(40 30) 0 (20 20)(40 20) 0 (20 10)(30 10) 0 (20 30)(30 30) 0 (15 10)(15 30) 0 (10 20)(15 20) 0 (40 30)(40 40) 0 (30 10)(30 0) 0 (30 30)(30 40) 0 (10 20)(0 20) (40 40) (30 0) (30 40) (0 20) kbreak 0 (0 0)(0 10)(10 10)(10 0)(0 0) (-8 -2)K MbreakP3 0 (23 18)(29 20)(23 22) 0 (20 27)(20 33) 0 (20 17)(20 23) 0 (20 7)(20 13) 0 (30 20)(30 30) 0 (20 20)(30 20) 0 (20 10)(30 10) 0 (20 30)(30 30) 0 (15 10)(15 30) 0 (10 20)(15 20) 0 (30 10)(30 0) 0 (30 30)(30 40) 0 (10 20)(0 20) (30 0) (30 40) (0 20) QbreakN4 0 (30 17)(30 10) 0 (27 17)(33 17) 0 (30 30)(30 22) 0 (30 17)(27 22)(33 22)(30 17) 0 (20 10)(10 15) 0 (11 28)(18 29)(13 24) 0 (20 30)(10 25) 0 (20 10)(30 10) 0 (10 10)(10 30) 0 (30 30)(30 40) 0 (20 30)(20 40) 0 (20 10)(20 0) 0 (10 20)(0 20) (30 40) (20 40) (20 0) (0 20) QbreakP4 0 (30 23)(30 30) 0 (33 23)(27 23) 0 (30 10)(30 18) 0 (30 23)(33 18)(27 18)(30 23) 0 (19 27)(12 26)(17 31) 0 (10 25)(20 30) 0 (20 10)(30 10) 0 (20 10)(10 15) 0 (10 10)(10 30) 0 (30 30)(30 40) 0 (20 30)(20 40) 0 (20 10)(20 0) 0 (10 20)(0 20) (30 40) (20 40) (20 0) (0 20) DAC12break 0 (10 10)(10 150)(60 150)(60 10)(10 10) 0 (10 20)(0 20) 0 (10 30)(0 30) 0 (10 40)(0 40) 0 (10 50)(0 50) 0 (60 80)(70 80) 0 (60 50)(70 50) 0 (40 150)(40 160) 0 (30 150)(30 160) 0 (30 10)(30 0) 0 (10 130)(0 130) 0 (10 120)(0 120) 0 (10 110)(0 110) 0 (10 100)(0 100) 0 (10 90)(0 90) 0 (10 80)(0 80) 0 (10 70)(0 70) 0 (10 60)(0 60) (0 20) (0 30) (0 40) (0 50) (70 80) (70 50) (40 160) (30 160) (30 0) (0 130) (0 120) (0 110) (0 100) (0 90) (0 80) (0 70) (0 60) RAM8Kx8break 0 (10 0)(10 180)(60 180)(60 0)(10 0) 0 (60 100)(70 100) 0 (60 110)(70 110) 0 (60 120)(70 120) 0 (60 130)(70 130) 0 (60 140)(70 140) 0 (60 150)(70 150) 0 (60 160)(70 160) 0 (60 170)(70 170) 0 (30 180)(30 190) 0 (40 0)(40 -10) 0 (60 80)(70 80) 0 (60 70)(70 70) 0 (60 60)(70 60) 0 (60 50)(70 50) 0 (60 40)(70 40) 0 (60 30)(70 30) 0 (60 20)(70 20) 0 (60 10)(70 10) 0 (10 170)(0 170) 0 (10 160)(0 160) 0 (10 130)(0 130) 0 (10 120)(0 120) 0 (10 110)(0 110) 0 (10 100)(0 100) 0 (10 90)(0 90) 0 (10 80)(0 80) 0 (10 70)(0 70) 0 (10 60)(0 60) 0 (10 50)(0 50) 0 (10 40)(0 40) 0 (10 30)(0 30) 0 (10 20)(0 20) 0 (10 10)(0 10) (70 100) (70 110) (70 120) (70 130) (70 140) (70 150) (70 160) (70 170) (30 190) (40 -10) (70 80) (70 70) (70 60) (70 50) (70 40) (70 30) (70 20) (70 10) (0 170) (0 160) (0 130) (0 120) (0 110) (0 100) (0 90) (0 80) (0 70) (0 60) (0 50) (0 40) (0 30) (0 20) (0 10) QbreakL 0 (10 27)(10 20) 0 (7 27)(13 27) 0 (10 40)(10 32) 0 (10 27)(7 32)(13 32)(10 27) 0 (29 27)(22 26)(27 31) 0 (20 25)(30 30) 0 (30 30)(30 40) 0 (10 20)(20 20) 0 (30 10)(20 15) 0 (20 10)(20 30) 0 (10 40)(10 50) 0 (30 40)(30 50) 0 (30 10)(30 0) 0 (10 20)(0 20) (10 50) (30 50) (30 0) (0 20) QDarBreakN 0 (20 10)(40 10)(40 20) 0 (20 30)(30 30) 0 (30 20)(30 40) 0 (31 38)(38 39)(33 34) 0 (40 40)(30 35) 0 (40 20)(30 25) 0 (10 10)(10 30) 0 (11 28)(18 29)(13 24) 0 (20 30)(10 25) 0 (20 10)(10 15) 0 (40 40)(40 50) 0 (40 10)(40 0) 0 (10 20)(0 20) (40 50) (40 0) (0 20) QbreakN 0 (11 28)(18 29)(13 24) 0 (20 30)(10 25) 0 (20 10)(10 15) 0 (10 10)(10 30) 0 (20 30)(20 40) 0 (20 10)(20 0) 0 (10 20)(0 20) (20 40) (20 0) (0 20) QDarBreakP 0 (30 20)(30 40) 0 (39 37)(32 36)(37 41) 0 (30 35)(40 40) 0 (40 20)(30 25) 0 (10 10)(10 30) 0 (19 27)(12 26)(17 31) 0 (10 25)(20 30) 0 (20 10)(10 15) 0 (20 10)(40 10)(40 20) 0 (20 30)(30 30) 0 (40 40)(40 50) 0 (40 10)(40 0) 0 (10 20)(0 20) (40 50) (40 0) (0 20) QbreakP 0 (19 27)(12 26)(17 31) 0 (10 25)(20 30) 0 (20 10)(10 15) 0 (10 10)(10 30) 0 (20 30)(20 40) 0 (20 10)(20 0) 0 (10 20)(0 20) (20 40) (20 0) (0 20) QbreakP3 0 (19 27)(12 26)(17 31) 0 (10 25)(20 30) 0 (20 10)(10 15) 0 (10 10)(10 30) 0 (20 30)(20 40) 0 (20 10)(20 0) 0 (10 20)(0 20) (20 40) (20 0) (0 20) Cbreak 0 (17 10)(20 10) 0 (17 5)(17 15) 0 (13 5)(13 15) 0 (10 10)(13 10) 0 (20 10)(30 10) 0 (10 10)(0 10) (30 10) (0 10) DAC10break 0 (10 10)(10 130)(60 130)(60 10)(10 10) 0 (10 20)(0 20) 0 (10 30)(0 30) 0 (60 80)(70 80) 0 (60 50)(70 50) 0 (40 130)(40 140) 0 (30 130)(30 140) 0 (30 10)(30 0) 0 (10 110)(0 110) 0 (10 100)(0 100) 0 (10 90)(0 90) 0 (10 80)(0 80) 0 (10 70)(0 70) 0 (10 60)(0 60) 0 (10 50)(0 50) 0 (10 40)(0 40) (0 20) (0 30) (70 80) (70 50) (40 140) (30 140) (30 0) (0 110) (0 100) (0 90) (0 80) (0 70) (0 60) (0 50) (0 40) DbreakVV 0 (12 5)(12 15)(20 10)(12 5) 0 (10 10)(12 10) 1 (24 6)(22 10)(24 14) 0 (20 5)(20 15) 0 (20 10)(30 10) 0 (10 10)(0 10) (30 10) (0 10) ROM32KX8break 0 (10 0)(10 190)(60 190)(60 0)(10 0) 0 (40 190)(40 200) 0 (40 0)(40 -10) 0 (60 120)(70 120) 0 (60 110)(70 110) 0 (60 100)(70 100) 0 (60 90)(70 90) 0 (60 80)(70 80) 0 (60 70)(70 70) 0 (60 60)(70 60) 0 (60 50)(70 50) 0 (10 170)(0 170) 0 (10 150)(0 150) 0 (10 140)(0 140) 0 (10 130)(0 130) 0 (10 120)(0 120) 0 (10 110)(0 110) 0 (10 100)(0 100) 0 (10 90)(0 90) 0 (10 80)(0 80) 0 (10 70)(0 70) 0 (10 60)(0 60) 0 (10 50)(0 50) 0 (10 40)(0 40) 0 (10 30)(0 30) 0 (10 20)(0 20) 0 (10 10)(0 10) (40 200) (40 -10) (70 120) (70 110) (70 100) (70 90) (70 80) (70 70) (70 60) (70 50) (0 170) (0 150) (0 140) (0 130) (0 120) (0 110) (0 100) (0 90) (0 80) (0 70) (0 60) (0 50) (0 40) (0 30) (0 20) (0 10) JbreakN 0 (11 18)(17 20)(11 22) 0 (20 10)(30 10) 0 (20 7)(20 33) 0 (20 30)(30 30) 0 (10 20)(20 20) 0 (30 10)(30 0) 0 (10 20)(0 20) 0 (30 30)(30 40) (30 0) (0 20) (30 40) POT 0 (19 20)(19 20) 0 (20 14)(20 14) 0 (20 20)(20 14) 0 (20 14)(20 14) 0 (10 10)(11 10) 0 (21 20)(21 20) 0 (19 20)(21 20) 0 (21 20)(20 14) 0 (20 14)(19 20) 0 (28 14)(30 10) 0 (11 10)(13 6) 0 (25 6)(28 14) 0 (19 6)(22 14) 0 (16 14)(19 6) 0 (13 6)(16 14) 0 (22 14)(25 6) 0 (20 20)(20 30) 0 (10 10)(0 10) 0 (30 10)(40 10) (20 30) (0 10) (40 10) JbreakP 0 (17 22)(11 20)(17 18) 0 (20 30)(30 30) 0 (20 10)(30 10) 0 (20 7)(20 33) 0 (10 20)(20 20) 0 (30 10)(30 0) 0 (30 30)(30 40) 0 (10 20)(0 20) (30 0) (30 40) (0 20) MbreakP3D 0 (20 7)(20 33) 0 (23 18)(29 20)(23 22) 0 (30 20)(30 30) 0 (20 20)(30 20) 0 (20 10)(30 10) 0 (20 30)(30 30) 0 (15 10)(15 30) 0 (10 20)(15 20) 0 (30 10)(30 0) 0 (30 30)(30 40) 0 (10 20)(0 20) (30 0) (30 40) (0 20) MbreakN4D 0 (20 7)(20 33) 0 (29 22)(23 20)(29 18) 0 (40 20)(40 30) 0 (20 20)(40 20) 0 (20 10)(30 10) 0 (20 30)(30 30) 0 (15 10)(15 30) 0 (10 20)(15 20) 0 (40 30)(40 40) 0 (30 10)(30 0) 0 (10 20)(0 20) 0 (30 30)(30 40) (40 40) (30 0) (0 20) (30 40) MbreakN 0 (29 22)(23 20)(29 18) 0 (20 27)(20 33) 0 (20 17)(20 23) 0 (20 7)(20 13) 0 (40 20)(40 30) 0 (20 20)(40 20) 0 (20 10)(30 10) 0 (20 30)(30 30) 0 (15 10)(15 30) 0 (10 20)(15 20) 0 (40 30)(40 40) 0 (30 10)(30 0) 0 (10 20)(0 20) 0 (30 30)(30 40) (40 40) (30 0) (0 20) (30 40) DbreakZ 0 (12 5)(12 15)(20 10)(12 5) 0 (10 10)(12 10) 0 (20 5)(20 15) 0 (20 15)(23 17) 0 (17 3)(20 5) 0 (20 10)(30 10) 0 (10 10)(0 10) (30 10) (0 10) MbreakP 0 (23 18)(29 20)(23 22) 0 (20 27)(20 33) 0 (20 17)(20 23) 0 (20 7)(20 13) 0 (40 20)(40 30) 0 (20 20)(40 20) 0 (20 10)(30 10) 0 (20 30)(30 30) 0 (15 10)(15 30) 0 (10 20)(15 20) 0 (40 30)(40 40) 0 (30 10)(30 0) 0 (30 30)(30 40) 0 (10 20)(0 20) (40 40) (30 0) (30 40) (0 20) RAM8Kx1break 0 (10 0)(10 220)(60 220)(60 0)(10 0) 0 (10 180)(0 180) 0 (10 160)(0 160) 0 (10 150)(0 150) 0 (10 140)(0 140) 0 (60 100)(70 100) 0 (30 220)(30 230) 0 (40 0)(40 -10) 0 (10 210)(0 210) 0 (10 200)(0 200) 0 (10 130)(0 130) 0 (10 120)(0 120) 0 (10 110)(0 110) 0 (10 100)(0 100) 0 (10 90)(0 90) 0 (10 80)(0 80) 0 (10 70)(0 70) 0 (10 60)(0 60) 0 (10 50)(0 50) 0 (10 40)(0 40) 0 (10 30)(0 30) 0 (10 20)(0 20) 0 (10 10)(0 10) (0 180) (0 160) (0 150) (0 140) (70 100) (30 230) (40 -10) (0 210) (0 200) (0 130) (0 120) (0 110) (0 100) (0 90) (0 80) (0 70) (0 60) (0 50) (0 40) (0 30) (0 20) (0 10) ADC12break 0 (70 140)(70 140)(70 140)(70 140)(70 140) 0 (10 10)(10 150)(60 150)(60 10)(10 10) 0 (60 20)(70 20) 0 (60 30)(70 30) 0 (60 50)(70 50) 0 (60 40)(70 40) 0 (10 100)(0 100) 0 (10 80)(0 80) 0 (10 60)(0 60) 0 (10 40)(0 40) 0 (10 20)(0 20) 0 (40 150)(40 160) 0 (30 150)(30 160) 0 (30 10)(30 0) 0 (60 130)(70 130) 0 (60 120)(70 120) 0 (60 110)(70 110) 0 (60 100)(70 100) 0 (60 90)(70 90) 0 (60 80)(70 80) 0 (60 70)(70 70) 0 (60 60)(70 60) (70 20) (70 30) (70 50) (70 40) (0 100) (0 80) (0 60) (0 40) (0 20) (40 160) (30 160) (30 0) (70 130) (70 120) (70 110) (70 100) (70 90) (70 80) (70 70) (70 60) Lbreak 1 (50 10)(45 5)(40 10) 1 (40 10)(35 5)(30 10) 1 (30 10)(25 5)(20 10) 1 (20 10)(15 5)(10 10) 0 (50 10)(60 10) 0 (10 10)(0 10) (60 10) (0 10) XFRM_NONLINEAR 0 (18 50)(18 50) 0 (18 10)(18 50) 0 (22 50)(22 50) 0 (22 10)(22 50) 0 (30 50)(30 60) 0 (30 0)(30 10) 0 (10 50)(10 60) 0 (10 0)(10 10) 1 (30 40)(25 45)(30 50) 1 (30 30)(25 35)(30 40) 1 (30 20)(25 25)(30 30) 1 (30 10)(25 15)(30 20) 1 (10 20)(15 15)(10 10) 1 (10 30)(15 25)(10 20) 1 (10 40)(15 35)(10 30) 1 (10 50)(15 45)(10 40) 0 (30 60)(40 60) 0 (30 0)(40 0) 0 (10 60)(0 60) 0 (10 0)(0 0) (40 60) (40 0) (0 60) (0 0) copyright 0 (0 0)(0 60)(230 60)(230 0)(0 0) Rbreak Rbreak resistor breakout device VALUE 1K Template R_@REFDES %1 %2 @MODEL @VALUE RefDes R Model RBREAK MODEL (20 25) @model yes REFDES (15 0) @refdes yes Wbreak Wbreak Current-controlled switch breakout device Template W_@REFDES %3 %4 VW_@REFDES @MODEL\nVW_@REFDES %1 %2 0V RefDes W Model WBREAK REFDES (10 4) @refdes yes MODEL (10 34) @model yes ZbreakN ZbreakN N channel IGBT breakout symbol WB TAU KP AREA AGD Template Z_@REFDES %1 %2 %3 @MODEL ?AGD|\n+ AGD=@AGD| ?AREA|\n+ AREA=@AREA| ?KP|\n+ KP=@KP| ?TAU|\n+ TAU=@TAU| ?WB|\n+ WB=@WB| RefDes Z Model ZBREAKN MODEL (-14 40) @model yes REFDES (0 0) @refdes yes DbreakCR DbreakCR current regulator diode breakout device AREA Template D_@REFDES %1 %2 @MODEL ?AREA/@AREA/ RefDes D Model DBREAK REFDES (15 0) @refdes yes MODEL (15 25) @model yes Dbreak Dbreak diode breakout device AREA Template D_@REFDES %1 %2 @MODEL ?AREA/@AREA/ RefDes D Model DBREAK REFDES (15 0) @refdes yes MODEL (15 25) @model yes ADC10break ADC10break 10Bit ADC MNTYMXDLY 0 IO_LEVEL 0 IPIN(DGND) $G_DGND IPIN(DPWR) $G_DPWR Template X_@REFDES %1 %2 %3 %4 %5 %6 \n+ %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 @MODEL \n+PARAMS: MNTYMXDLY=@MNTYMXDLY IO_LEVEL=@IO_LEVEL RefDes U Model ADC10BREAK REFDES (10 8) @refdes yes Sbreak Sbreak Voltage-controlled switch breakout device Template S_@REFDES %3 %4 %1 %2 @MODEL\nRS_@REFDES %1 %2 1G RefDes S Model SBREAK REFDES (10 2) @refdes yes MODEL (20 35) @model yes Dbreak3 Dbreak3 3-terminal diode breakout device VALUE Template X_@REFDES %1 %2 %3 @MODEL RefDes D Model DBREAK3 REFDES (15 0) @refdes yes MODEL (15 45) @model yes MbreakN3D MbreakN3D n-channel mosfet (depletion) breakout device M NRB NRG NRS NRD PS PD AS AD W L Template M_@REFDES %1 %2 %3 %4 @MODEL ?L/ \n+ L=@L/ ?W/ \n+ W=@W/ ?AD/ \n+ AD=@AD/ ?AS/ \n+ AS=@AS/ ?PD/ \n+ PD=@PD/ ?PS/ \n+ PS=@PS/ ?NRD/ \n+ NRD=@NRD/ ?NRS/ \n+ NRS=@NRS/ ?NRG/ \n+ NRG=@NRG/ ?NRB/ \n+ NRB=@NRB/ ?M/ \n+ M=@M/ RefDes M Model MBREAKND MODEL (-18 40) @model yes REFDES (5 10) @refdes yes MbreakP4D MbreakP4D p-channel mosfet (depletion) breakout device M NRB NRG NRS NRD PS PD AS AD W L Template M_@REFDES %1 %2 %3 %4 @MODEL ?L/ \n+ L=@L/ ?W/ \n+ W=@W/ ?AD/ \n+ AD=@AD/ ?AS/ \n+ AS=@AS/ ?PD/ \n+ PD=@PD/ ?PS/ \n+ PS=@PS/ ?NRD/ \n+ NRD=@NRD/ ?NRS/ \n+ NRS=@NRS/ ?NRG/ \n+ NRG=@NRG/ ?NRB/ \n+ NRB=@NRB/ ?M/ \n+ M=@M/ RefDes M Model MBREAKPD MODEL (-12 40) @model yes REFDES (5 10) @refdes yes Bbreak Bbreak gaasfet (enhancement) breakout device AREA Template B_@REFDES %1 %2 %3 @MODEL ?AREA/@AREA/ RefDes B Model BBREAK MODEL (10 40) @model yes REFDES (5 10) @refdes yes ADC8break ADC8break 8 Bit ADC MNTYMXDLY 0 IO_LEVEL 0 IPIN(DGND) $G_DGND IPIN(DPWR) $G_DPWR Template X_@REFDES %1 %2 %3 %4 %5 %6 \n+ %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @MODEL \n+ PARAMS: MNTYMXDLY=@MNTYMXDLY IO_LEVEL=@IO_LEVEL RefDes U Model ADC8BREAK REFDES (10 8) @refdes yes DAC8break DAC8break 8 Bit DAC MNTYMXDLY 0 IO_LEVEL 0 IPIN(DGND) $G_DGND IPIN(DPWR) $G_DPWR Template X_@REFDES %1 %2 %3 \n+ %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 @MODEL \n+PARAMS: MNTYMXDLY=@MNTYMXDLY IO_LEVEL=@IO_LEVEL RefDes U Model DAC8BREAK REFDES (10 8) @refdes yes QbreakN3 QbreakN3 npn bipolar transistor breakout device AREA Template Q_@REFDES %1 %2 %3 @MODEL ?AREA/@AREA/ RefDes Q Model QBREAKN REFDES (5 5) @refdes yes MODEL (5 40) @model yes MbreakN3 MbreakN3 n-channel mosfet (enhancement) breakout device M NRB NRG NRS NRD PS PD AS AD W L Template M_@REFDES %1 %2 %3 %4 @MODEL ?L/ \n+ L=@L/ ?W/ \n+ W=@W/ ?AD/ \n+ AD=@AD/ ?AS/ \n+ AS=@AS/ ?PD/ \n+ PD=@PD/ ?PS/ \n+ PS=@PS/ ?NRD/ \n+ NRD=@NRD/ ?NRS/ \n+ NRS=@NRS/ ?NRG/ \n+ NRG=@NRG/ ?NRB/ \n+ NRB=@NRB/ ?M/ \n+ M=@M/ RefDes M Model MBREAKN MODEL (-18 40) @model yes REFDES (5 10) @refdes yes MbreakN4 MbreakN4 n-channel mosfet (enhancement) breakout device M NRB NRG NRS NRD PS PD AS AD W L Template M_@REFDES %1 %2 %3 %4 @MODEL ?L/ \n+ L=@L/ ?W/ \n+ W=@W/ ?AD/ \n+ AD=@AD/ ?AS/ \n+ AS=@AS/ ?PD/ \n+ PD=@PD/ ?PS/ \n+ PS=@PS/ ?NRD/ \n+ NRD=@NRD/ ?NRS/ \n+ NRS=@NRS/ ?NRG/ \n+ NRG=@NRG/ ?NRB/ \n+ NRB=@NRB/ ?M/ \n+ M=@M/ RefDes M Model MBREAKN MODEL (-16 40) @model yes REFDES (5 10) @refdes yes MbreakP4 MbreakP4 p-channel mosfet (enhancement) breakout device M NRB NRG NRS NRD PS PD AS AD W L Template M_@REFDES %1 %2 %3 %4 @MODEL ?L/ \n+ L=@L/ ?W/ \n+ W=@W/ ?AD/ \n+ AD=@AD/ ?AS/ \n+ AS=@AS/ ?PD/ \n+ PD=@PD/ ?PS/ \n+ PS=@PS/ ?NRD/ \n+ NRD=@NRD/ ?NRS/ \n+ NRS=@NRS/ ?NRG/ \n+ NRG=@NRG/ ?NRB/ \n+ NRB=@NRB/ ?M/ \n+ M=@M/ RefDes M Model MBREAKP MODEL (-12 40) @model yes REFDES (5 10) @refdes yes kbreak kbreak Multi-winding Coupling (with CORE model) COUPLING 1 L6 L5 L4 L3 L2 L1 Template KN_@REFDES L_@L1 ?L2|L_@L2| ?L3|\n+ L_@L3| ?L4|L_@L4| ?L5|\n+ L_@L5| ?L6|L_@L6| @COUPLING RefDes K Model KBREAK MODEL (1 20) @model yes COUPLING (31 30) @coupling yes L6 (4 99) @l6 yes L5 (4 88) @l5 yes L4 (4 77) @l4 yes L3 (4 65) @l3 yes L2 (4 53) @l2 yes L1 (4 42) @l1 yes REFDES (22 8) @refdes yes MbreakP3 MbreakP3 p-channel mosfet (enhancement) breakout device M NRB NRG NRS NRD PS PD AS AD W L Template M_@REFDES %1 %2 %3 %4 @MODEL ?L/ \n+ L=@L/ ?W/ \n+ W=@W/ ?AD/ \n+ AD=@AD/ ?AS/ \n+ AS=@AS/ ?PD/ \n+ PD=@PD/ ?PS/ \n+ PS=@PS/ ?NRD/ \n+ NRD=@NRD/ ?NRS/ \n+ NRS=@NRS/ ?NRG/ \n+ NRG=@NRG/ ?NRB/ \n+ NRB=@NRB/ ?M/ \n+ M=@M/ RefDes M Model MBREAKP MODEL (-14 40) @model yes REFDES (5 10) @refdes yes QbreakN4 QbreakN4 npn bipolar transistor breakout device AREA Template Q_@REFDES %1 %2 %3 [%4 @MODEL ?AREA/@AREA/ RefDes Q Model QBREAKN REFDES (5 5) @refdes yes MODEL (5 40) @model yes QbreakP4 QbreakP4 pnp bipolar transistor breakout device AREA Template Q_@REFDES %1 %2 %3 [%4 @MODEL ?AREA/@AREA/ RefDes Q Model QBREAKP REFDES (5 5) @refdes yes MODEL (5 40) @model yes DAC12break DAC12break 10 Bit DAC MNTYMXDLY 0 IO_LEVEL 0 IPIN(DGND) $G_DGND IPIN(DPWR) $G_DPWR Template X_@REFDES %1 %2 %3 \n+ %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 \n+ @MODEL \n+PARAMS: MNTYMXDLY=@MNTYMXDLY IO_LEVEL=@IO_LEVEL RefDes U Model DAC12BREAK REFDES (10 8) @refdes yes RAM8Kx8break RAM8Kx8break 8K x 8 STATIC RAM IO_LEVEL 0 MNTYMXDLY 0 IPIN(VCC) $G_DPWR IPIN(GND) $G_DGND Template X_@REFDES %1 %2 \n+ %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 \n+ %16 %17 %18 %19 %20 %21 %22 %23 \n+ %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 @MODEL \n+ PARAMS: MNTYMXDLY=@MNTYMXDLY IO_LEVEL=@IO_LEVEL RefDes U Model RAM8KX8BREAK REFDES (0 0) @refdes yes QbreakL QbreakL pnp bipolar transistor breakout device AREA Template Q_@REFDES %1 %2 %3 [%4] @MODEL ?AREA/@AREA/ RefDes Q Model QBREAKL REFDES (5 5) @refdes yes MODEL (29 22) @model yes QDarBreakN QDarBreakN npn darlington transistor device Template X_@REFDES %1 %2 %3 @MODEL RefDes X Model QDARBREAKN REFDES (5 5) @refdes yes MODEL (43 44) @model yes QbreakN QbreakN npn bipolar transistor breakout device AREA Template Q_@REFDES %1 %2 %3 @MODEL ?AREA/@AREA/ RefDes Q Model QBREAKN REFDES (5 5) @refdes yes MODEL (5 40) @model yes QDarBreakP QDarBreakP pnp darlington transistor device Template X_@REFDES %1 %2 %3 @MODEL RefDes X Model QDARBREAKP REFDES (5 5) @refdes yes MODEL (43 44) @model yes QbreakP QbreakP pnp bipolar transistor breakout device AREA Template Q_@REFDES %1 %2 %3 @MODEL ?AREA/@AREA/ RefDes Q Model QBREAKP REFDES (5 5) @refdes yes MODEL (5 40) @model yes QbreakP3 QbreakP3 pnp bipolar transistor breakout device AREA Template Q_@REFDES %1 %2 %3 @MODEL ?AREA/@AREA/ RefDes Q Model QBREAKP REFDES (5 5) @refdes yes MODEL (5 40) @model yes Cbreak Cbreak Capacitor breakout device IC VALUE 1N Template C_@REFDES %1 %2 @MODEL @VALUE ?IC/IC=@IC/ RefDes C Model CBREAK REFDES (15 0) @refdes yes MODEL (20 25) @model yes DAC10break DAC10break 10 Bit DAC MNTYMXDLY 0 IO_LEVEL 0 IPIN(DGND) $G_DGND IPIN(DPWR) $G_DPWR Template X_@REFDES %1 %2 %3 \n+ %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @MODEL \n+PARAMS: MNTYMXDLY=@MNTYMXDLY IO_LEVEL=@IO_LEVEL RefDes U Model DAC10BREAK REFDES (10 8) @refdes yes DbreakVV DbreakVV voltage-variable capacitance diode breakout device AREA Template D_@REFDES %1 %2 @MODEL ?AREA/@AREA/ RefDes D Model DBREAK REFDES (15 0) @refdes yes MODEL (15 25) @model yes ROM32KX8break ROM32KX8break IO_LEVEL 0 MNTYMXDLY 0 IPIN(GND) $G_DGND IPIN(VCC) $G_DPWR Template X_@REFDES %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 \n+ %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 @MODEL \n+ PARAMS: MNTYMXDLY=@MNTYMXDLY IO_LEVEL=@IO_LEVEL RefDes U Model ROM32KX8BREAK REFDES (0 0) @refdes yes JbreakN JbreakN n-channel jfet (enhancement) breakout device AREA Template J_@REFDES %1 %2 %3 @MODEL ?AREA/@AREA/ RefDes J Model JBREAKN MODEL (10 40) @model yes REFDES (5 10) @refdes yes POT POT Potentiometer (generic - defaults to 1K) SET 0.5 VALUE 1K Template RT_@REFDES %1 %2 {(@VALUE*(1-@SET))+.001}\nRB_@REFDES %3 %4 {(@VALUE*@SET)+.001} RefDes R REFDES (15 0) @refdes yes JbreakP JbreakP p-channel jfet (enhancement) breakout device AREA Template J_@REFDES %1 %2 %3 @MODEL ?AREA/@AREA/ RefDes J Model JBREAKP MODEL (10 40) @model yes REFDES (5 10) @refdes yes MbreakP3D MbreakP3D p-channel mosfet (depletion) breakout device M NRB NRG NRS NRD PS PD AS AD W L Template M_@REFDES %1 %2 %3 %4 @MODEL ?L/ \n+ L=@L/ ?W/ \n+ W=@W/ ?AD/ \n+ AD=@AD/ ?AS/ \n+ AS=@AS/ ?PD/ \n+ PD=@PD/ ?PS/ \n+ PS=@PS/ ?NRD/ \n+ NRD=@NRD/ ?NRS/ \n+ NRS=@NRS/ ?NRG/ \n+ NRG=@NRG/ ?NRB/ \n+ NRB=@NRB/ ?M/ \n+ M=@M/ RefDes M Model MBREAKPD MODEL (-14 40) @model yes REFDES (5 10) @refdes yes MbreakN4D MbreakN4D n-channel mosfet (depletion) breakout device M NRB NRG NRS NRD PS PD AS AD W L Template M_@REFDES %1 %2 %3 %4 @MODEL ?L/ \n+ L=@L/ ?W/ \n+ W=@W/ ?AD/ \n+ AD=@AD/ ?AS/ \n+ AS=@AS/ ?PD/ \n+ PD=@PD/ ?PS/ \n+ PS=@PS/ ?NRD/ \n+ NRD=@NRD/ ?NRS/ \n+ NRS=@NRS/ ?NRG/ \n+ NRG=@NRG/ ?NRB/ \n+ NRB=@NRB/ ?M/ \n+ M=@M/ RefDes M Model MBREAKND MODEL (-16 40) @model yes REFDES (5 10) @refdes yes MbreakN MbreakN n-channel mosfet (enhancement) breakout device M NRB NRG NRS NRD PS PD AS AD W L Template M_@REFDES %1 %2 %3 %4 @MODEL ?L/ \n+ L=@L/ ?W/ \n+ W=@W/ ?AD/ \n+ AD=@AD/ ?AS/ \n+ AS=@AS/ ?PD/ \n+ PD=@PD/ ?PS/ \n+ PS=@PS/ ?NRD/ \n+ NRD=@NRD/ ?NRS/ \n+ NRS=@NRS/ ?NRG/ \n+ NRG=@NRG/ ?NRB/ \n+ NRB=@NRB/ ?M/ \n+ M=@M/ RefDes M Model MBREAKN MODEL (-12 40) @model yes REFDES (5 10) @refdes yes DbreakZ DbreakZ zener diode breakout device AREA Template D_@REFDES %1 %2 @MODEL ?AREA/@AREA/ RefDes D Model DBREAK REFDES (15 0) @refdes yes MODEL (15 25) @model yes MbreakP MbreakP p-channel mosfet (enhancement) breakout device M NRB NRG NRS NRD PS PD AS AD W L Template M_@REFDES %1 %2 %3 %4 @MODEL ?L/ \n+ L=@L/ ?W/ \n+ W=@W/ ?AD/ \n+ AD=@AD/ ?AS/ \n+ AS=@AS/ ?PD/ \n+ PD=@PD/ ?PS/ \n+ PS=@PS/ ?NRD/ \n+ NRD=@NRD/ ?NRS/ \n+ NRS=@NRS/ ?NRG/ \n+ NRG=@NRG/ ?NRB/ \n+ NRB=@NRB/ ?M/ \n+ M=@M/ RefDes M Model MBREAKP MODEL (-12 40) @model yes REFDES (5 10) @refdes yes RAM8Kx1break RAM8Kx1break 8K x 1 STATIC RAM IO_LEVEL 0 MNTYMXDLY 0 IPIN(VCC) $G_DPWR IPIN(GND) $G_DGND Template X_@REFDES %1 %2 \n+ %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 \n+ %19 %20 %21 %22 @MODEL \n+ PARAMS: MNTYMXDLY=@MNTYMXDLY IO_LEVEL=@IO_LEVEL RefDes U Model RAM8KX1BREAK REFDES (0 0) @refdes yes ADC12break ADC12break 12Bit ADC MNTYMXDLY 0 IO_LEVEL 0 MNTYMAX 0 IPIN(DGND) $G_DGND IPIN(DPWR) $G_DPWR Template X_@REFDES %1 %2 %3 %4 %5 %6 \n+ %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 \n+ @MODEL \n+PARAMS: MNTYMXDLY=@MNTYMXDLY IO_LEVEL=@IO_LEVEL RefDes U Model ADC12BREAK REFDES (10 8) @refdes yes Lbreak Lbreak inductor breakout device IC VALUE Template L_@REFDES %1 %2 @MODEL @VALUE ?IC/IC=@IC/ RefDes L Model LBREAK REFDES (15 0) @refdes yes MODEL (20 25) @model yes XFRM_NONLINEAR XFRM_NONLINEAR non-linear, magnetic core L2_TURNS L1_TURNS COUPLING Template K_@REFDES L1_@REFDES L2_@REFDES @COUPLING @MODEL\nL1_@REFDES %1 %2 @L1_TURNS \nL2_@REFDES %3 %4 @L2_TURNS RefDes TX Model KBREAK MODEL (0 68) @model yes REFDES (20 0) @refdes yes copyright copyright Copyright RefDes U REFDES (0 0) @refdes yes oregano-0.84.41/data/netlist.lang0000644000175000017500000000473013413640652015600 0ustar rubenruben application/x-oregano *.netlist