+++ /dev/null
-## @configure_input@
-# Makefile for BlueGnu Testing Framework.
-# Copyright (C) 1988, 1990, 1991, 1992, 1994, 1995 Free Software Foundation, # Copyright (C) 1998 jotOmega dsc, Inc.
-
-#This file is part of BlueGnu.
-
-#BlueGnu is open software; you can redistribute it and/or modify
-#it under the terms of the GNU General Public License as published by
-#the Free Software Foundation; either version 2, or (at your option)
-#any later version.
-
-#BlueGnu 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 BlueGnu; see the file COPYING. If not, write to
-#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-VPATH = @srcdir@
-srcdir = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = $(exec_prefix)/bin
-libdir = $(exec_prefix)/lib
-
-datadir = $(libdir)/bluegnu
-infodir = $(prefix)/info
-includedir = $(prefix)/include
-gxx_includedir = $(tooldir)/g++-include
-docdir = $(datadir)/doc
-
-SHELL = /bin/sh
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC = @CC@
-CFLAGS = -g
-
-SUBDIRS = @subdirs@
-
-# These let the BlueGnu test suite run when BlueGnu isn't
-# installed yet, so run it from the srcdir and objdir.
-EXPECT = ` \
- if [ -f $${rootme}/../expect/expect ] ; then \
- echo $${rootme}/../expect/expect ; \
- else echo expect ; fi`
-
-BLUEGNUFLAGS =
-BLUEGNU = ` \
- if [ -f ${srcdir}/bluegnu ] ; then \
- echo ${srcdir}/bluegnu ; \
- else echo bluegnu ; fi`
-
-TCLIBRARY = `if [ -f $${rootme}/expect/expect ] ; \
- then echo TCL_LIBRARY=$${srcdir}/../tcl/library ; \
- else echo "" ; fi`
-
-FLAGS_TO_PASS = \
- "CC=$(CC)" \
- "CFLAGS=$(CFLAGS)" \
- "INSTALL=$(INSTALL)" \
- "INSTALL_DATA=$(INSTALL_DATA)" \
- "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
- "LDFLAGS=$(LDFLAGS)" \
- "MAKEINFO=$(MAKEINFO)" \
- "EXPECT=$(EXPECT)" \
- "TCLIBRARY=$(TCLIBRARY)" \
- "BLUEGNU=$(BLUEGNU)" \
- "BLUEGNUFLAGS=$(BLUEGNUFLAGS)" \
- "exec_prefix=$(exec_prefix)" \
- "prefix=$(prefix)" \
- "tooldir=$(tooldir)"
-
-all: force
- @$(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS)
-
-contents: force
- ls -lLAR -I CVS -I Makefile \
- -I config.status -I config.log -I config.cache \
- -I READMEdvi -I calc.h > $@
-
-.PHONY: check installcheck
-installcheck:
-
-.NOEXPORT:
-
-MAKEOVERRIDES=
-
-INFODIRS=doc
-dvi info:
- @rootme=`pwd`/ ; export rootme ; \
- rootsrc=`cd $(srcdir); pwd`/ ; export rootsrc ; \
- $(MAKE) subdir_do DO=$@ "DODIRS=$(INFODIRS)" $(FLAGS_TO_PASS)
-
-install-info:
- @rootme=`pwd`/ ; export rootme ; \
- $(MAKE) subdir_do DO=install-info $(FLAGS_TO_PASS)
-
-install:
- ${srcdir}/mkinstalldirs $(bindir) $(datadir)
- $(INSTALL_PROGRAM) $(srcdir)/runtest $(bindir)/runtest
- $(INSTALL_PROGRAM) $(srcdir)/runtest.exp $(datadir)/runtest.exp
- $(INSTALL_PROGRAM) $(srcdir)/dejagnu $(bindir)/dejagnu
- $(INSTALL_PROGRAM) $(srcdir)/bluegnu $(bindir)/bluegnu
- $(INSTALL_PROGRAM) $(srcdir)/bluegnutk $(bindir)
- $(INSTALL_PROGRAM) $(srcdir)/bluegnutk.itcl $(bindir)
- $(INSTALL_PROGRAM) $(srcdir)/bluegnutk.rc $(bindir)
- $(INSTALL_PROGRAM) $(srcdir)/bluegnutkUtils.itcl $(bindir)
- $(INSTALL_PROGRAM) $(srcdir)/config.guess $(datadir)/config.guess
- -for file in $(srcdir)/lib/*.exp; \
- do \
- $(INSTALL_DATA) $$file $(datadir) ; \
- done
- -for file in $(srcdir)/lib/*.tcl; \
- do \
- $(INSTALL_DATA) $$file $(datadir) ; \
- done
- -for file in $(srcdir)/lib/*.itcl; \
- do \
- $(INSTALL_DATA) $$file $(datadir) ; \
- done
- $(INSTALL_DATA) $(srcdir)/lib/tclIndex $(datadir)
- @$(MAKE) subdir_do DO=install $(FLAGS_TO_PASS)
-
-subdir_do: force
- @for i in $(SUBDIRS); do \
- echo "Making $(DO) in $${i}..." ; \
- if [ -d ./$$i ] ; then \
- if (rootme=`pwd`/ ; export rootme ; \
- rootsrc=`cd $(srcdir); pwd`/ ; export rootsrc ; \
- cd ./$$i; \
- $(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \
- else exit 1 ; fi ; \
- else true ; fi ; \
- done
-force:
-
-clean mostlyclean:
- @echo "Doing clean mosttlyclean +++++"
- -rm -f \#* *~ core *.o a.out xgdb *.x
- $(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS)
- @for l in `find . -name logs`; do rm -fr $$l; done
- @for f in `find . -name '*~'`; do rm -fr $$f; done
-
-distclean: clean
- @echo "Doing distclean +++++"
- $(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS)
- -rm -f Makefile *-init.exp site.bak site.exp conftest.c
- -rm -f config.status config.log config.cache
- -rm -fr *.log summary detail *.sum blockit
-
-maintainer-clean realclean:
- @echo "Doing maintainer-clean realclean +++++"
- $(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS)
- -rm -f Makefile *-init.exp site.bak site.exp conftest.c
- -rm -f config.status config.log config.cache
- -rm -fr *.log summary detail *.sum blockit
- -rm -f README.bluegnu contents
-
-check:
- @if [ -f testsuite/Makefile ]; then \
- rootme=`pwd`; export rootme; \
- cd testsuite; \
- $(MAKE) $(FLAGS_TO_PASS) check; \
- else true; fi
-
-Makefile: $(srcdir)/Makefile.in config.status
- @echo "Rebuilding the Makefile..."
- $(SHELL) ./config.status
-
-configure: $(srcdir)/configure.in $(srcdir)/Makefile.in $(srcdir)/aclocal.m4
- @echo "Rebuilding configure..."
- @if [ x"${srcdir}" = x"@srcdir@" ] ; then \
- srcdir=. ; export srcdir ; \
- else true ; fi ; \
- (cd $${srcdir}; autoconf)
-
-config.status:
- @echo "Rebuilding config.status..."
- $(SHELL) ./config.status --recheck
+++ /dev/null
-
-
-
-
-
-
-
-
- Release Notice
-
- BlueGnu Testing Framework
-
- Version 2.0.3
-
- Jan-Willem Neurdenburg
-
- jotOmega dsc
-
-
- 56 Brigham Hill Road
-
- Grafton MA 01519-1135
-
- neurdenburgj@acm.org
-
-
- Tel: (508) 839-0276
-
- Fax: (508) 839-7267
-
- September 19, 1999
-
-
-1 Introduction
-
-BlueGnu is a framework for testing other programs. It has been
-created to be compatible with DejaGnu. Its purpose is to provide
-a single front end for all tests. Beyond this, BlueGnu offers
-several advantages for testing:
-
- * The flexibility and consistency of the BlueGnu framework
- makes it easy to write tests for any program, with the
- exception of GUI applications.
-
- * BlueGnu provides a layer of abstraction, which makes all
- tests (if correctly written) portable to any host or target
- where a program must be tested.
- * BlueGnu is written in [incr Tcl], which in turn is based on
- Tcl (Tool Command Language). The framework comprises two
- parts:
-
-
-
- 1
-\f
-
-
-
-
- 1. the testing framework,
-
- 2. the test-suites or test-sets themselves.
- * BlueGnu will work with any Tcl based interpreter as long as
- [incr Tcl] has been included. You can include 'expect',
- 'Tk', and/or other extensions.
-
- * Includes DejaGnu release 1.6
-
-
-2 Requirements
-The following modules should have been installed, before you can
-install and/or use BlueGnu:
-
- * Tcl release 8.0 or higher,
-
- * incr Tcl release 3.0 or higher.
-
- Any other extensions that is compatible with Tcl release 8.0
-can be used as well.
-
-
-3 Structure and Contents of the Release
-The root directory of the release contains the README files
-with installation instructions and the files needed to build and
-install this product. It also contains the executable scripts of
-the BlueGnu testing framework.
- The top-level directories are listed below:
-
-lib: the packages and procedures that make the BlueGnu and
- DejaGnu testing framework. This also includes the default
- target definition files.
-
-testsets: the BlueGnu test-suites and test examples. It contains
- the following subdirectories.
-
- BlueGnu: test scripts to test the testing framework itself.
- examples: test suite and test script examples.
- config, lib, tools: currently empty, but can be used for
- test-set dependent configuration files, library files,
- and tools.
-
-config: currently empty.
-
-
-
-
-
- 2
-\f
-
-
-
-
-doc: the DejaGnu texinfo source and the documentation in
- 'info', 'dvi', 'ps', and 'pdf' representation, respectively
- dejagnu.info*, dejagnu.dvi, dejagnu.ps, and dejagnu.pdf. A
- DejaGnu man page is also available.
-
- It also contains the TeX version (README.tex) of this
- document as well as the 'dvi', 'ps' 'html', and
- 'pdf' representation, respectively notice.dvi, notice.ps,
- notice.html, and notice.pdf.
-testsuite: contains a mixture of DejaGnu and BlueGnu test
- scripts.
-
-contrib: contains examples how DejaGnu is used at Cygnus.
-example: contains a full DejaGnu test framework example for
- testing the program 'calc' which is also included.
-
-
-4 Installation and use under Unix
-
-Before you can install and use BlueGnu you need to have installed
-the following three packages:
- * Tcl version 8.0.3
-
- * Tk version 8.0.3
- * incr Tcl version 3.0.1
-
-The source for these packages should all be located in one
-directory. The subdirectory in the directory should be:
- * tcl8.0.3
- * tk8.0.3
-
- * itcl3.0.1
- The following examples use the command `./configure --
-prefix=/tools/...`. This will install all packages in a
-directory ``/tools''. When you omit the ``--prefix''-switch then
-the installation default will be the directory ``/usr/local''.
-
-
-4.1 Installation of needed Packages
-When you have not installed Tcl and the other needed
-extensions, then you need to retrieve the sources from
-``www.tcltk.com/itcl''. You need to `gunzip` the files and do a
-`tar xf` of all these packages in one directory, let's call this
-directory ``TclTk''.
- From the directory ``TclTk'', you should do the following to
-install the packages:
-
-
- 3
-\f
-
-
-
-
-% cd tcl8.0.3/unix
-% ./configure --prefix=/tools/tcl8.0.3 --enable-gcc --enable-
-shared
-% make
-% mkdir /tools/tcl8.0.3
-% make install
-% cd ../../tk8.0.3/unix
-% ./configure --prefix=/tools/tk8.0.3 --enable-gcc --enable-
-shared
-% make
-% mkdir /tools/tk8.0.3
-% make install
-% cd ../../itcl3.0.1
-% ./configure --prefix=/tools/itcl3.0.1 --enable-gcc --enable-
-shared
-% make
-% mkdir /tools/itcl3.0.1
-% make install
-
-
-4.2 Installing BlueGnu
-You can now `gunzip` and `tar xf` the BlueGnu version 2.0.3
-in the directory ``TckTk''. This will create the directory
-``bluegnu2.0.3''. Now do the following:
-
-% cd bluegnu2.0.3
-% ./configure --prefix=/tools/bluegnu2.0.3
-% make
-% mkdir /tools/bluegnu2.0.3
-% make install
-
- This will install BlueGnu in the directories:
- * /tools/bluegnu2.0.3/bin
-
- * /tools/bluegnu2.0.3/lib/bluegnu
-
- * /tools/bluegnu2.0.3/info
- * /tools/bluegnu2.0.3/man
-
-
-4.3 Using BlueGnu
-When you have installed [incr Tcl] and BlueGnu and you have the
-respective ``bin'' directories in your PATH variable, then you
-can start running some tests. You can go into the BlueGnu
-source directory ``bluegnu2.0.3/testsets/examples'' and run the
-following:
-
-
- 4
-\f
-
-
-
-
-% bluegnu versionTcl.itcl
-% bluegnu ts_001
-% bluegnu ts_002
-% bluegnu ts_003
-
- The above test result should all be PASS. The following test
-will give a result UNKNOWN, because no pass/fail instruction have
-been given.
-
-% bluegnu tc001
-
- The last test you can run will fail in its simple form:
-% bluegnu tc002
-
- But will pass if you execute the test as follows:
-
-% bluegnu tc002[English]
-
- This is because the test scripts need a test case identifier
-to find the correct benchmark code.
-
-5 Changes
-
-5.1 Version 2.0.3
-
-This being the first public release it is not to useful to
-list all the changes. BlueGnu has been modeled after DejaGnu
-and is a complete new implementation which has been tested
-thoroughly. When documentation is being written more changes
-will be made. An example of some of these changes as a result of
-this documentation effort can be found in the test-suites ts_001,
-ts_002, and ts_003. The first two are not as easy to write as
-the third. The test suite ts_001 is a script implementation of
-the command line:
-
-% cd bluegnu2.0.3/testsets
-% bluegnu examples/tc002[English=B] \
-> "examples/tc002[Dutch=B]={MSG=Hallo Wereld}"
-This may be useful for simple tests but when you want to
-write more complex test-suite scripts you would like some more
-flexibility, so two procedures were introduced, which are shown
-in test-suite ts_002. This makes writing rather complex so
-the procedures have become part of the procedures 'appendQueue',
-'prependQueue', and 'runtest'. The resulting script is shown in
-test-suit ts_003.
- Changes like this will be made in the future!
-
-
- 5
-\f
-
-
-
-
-6 Future Enhancements
-
-The following enhancements are being planned:
-
- * Target code will be made into a class with methods
- 'start', 'load', 'exit', and 'version'. Instead of the
- current '<target>_start', '<target>_load', '<target>_exit',
- and '<target>_version', which have been taken from DejaGnu.
- * Procedures will be created that make it easy to test WEB
- application from the framework.
-
- * Other enhancements will be made depending on the use of the
- framework in testing different applications.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 6
-\f
\ No newline at end of file
+++ /dev/null
- DejaGnu is a framework for testing other programs. Its purpose is to
-provide a single front end for all tests. Beyond this, DejaGnu offers
-several advantages for testing:
-
- - The flexibility and consistency of the DejaGnu framework
- make it easy to write tests for any program.
-
- - DejaGnu provides a layer of abstraction which makes all
- tests (if correctly written) portable to any host or target
- where a program must be tested. For instance, a test for
- GDB can run (from any Unix based host) on any target
- architecture supported by DejaGnu. Currently DejaGnu runs
- tests on several single board computers, whose operating
- software ranges from just a boot monitor to a full-fledged,
- Unix-like realtime OS.
-
- - DejaGnu is written in expect, which in turn uses Tcl
- (Tool command language). The framework comprises two parts:
- the testing framework and the testsuites themselves. Tests
- are usually written in expect using Tcl.
-
- Bugs can be reported to bug-dejagnu@prep.ai.mit.edu.
-
- How To Configure and Build
-
- To build DejaGnu, run the ``configure'' script here, e.g.:
-
- ./configure MYHOSTTYPE
-
-followed by running ``make''. (MYHOSTTYPE is a name for your host computer,
-for instance "sun4". You can use the script ``config.sub'' to test whether
-a name is recognized; if it is, config.sub translates it to a triplet
-specifying CPU, vendor, and OS.) This is used when you plan to
-configure and build in the source tree.
-
- If you use a separate tree for object files, (the recommended way),
-then the --srcdir option must also be specified. This would also
-require that the configure script be run from the top level directory.
-
- PATH/configure MYHOSTYPE --srcdir PATH/dejagnu
-
-where PATH is is the directory that the contains the sources.
-
- To configure it so it gets installed somewhere other than the
-default of /usr/local, use the --prefix option.
-
- configure MYHOSTYPE --prefix [PATH]
-
-where PATH is the prefix used to install the programs.
-
- The configure testing and building will use the native compiler "cc"
-on your host machine. To change which compiler gets used (like gcc)
-set a the variable "CC" in your environment to point to it.
-
- For csh users: "setenv CC gcc"
- For bourne shell users: "CC=gcc;export CC"
-
- Then when you compile, use "make CC=$CC".
-
-See etc/cfg-paper.texi, etc/configure.texi, and/or the README files in
-various subdirectories, for more details.
-
- As DejaGnu is a Tcl program, there is nothing to build. However, the
-documentation is not built by default. Use these targets:
-"make info" - Convert the texinfo document to something that can
- be used the GNU info program or info mode in emacs.
-"make dvi" - Convert the texinfo document to something that can
- be printed. This produces dvi output.
-"make doc" - This builds both.
-"make ps" - This converts the dvi file into postscript. This
- requires a copy of dvips.
-"make install" - This installs DejaGnu based on the --prefix option
- when configuring. Otherwise it defaults to
- /usr/local. See the DejaGnu manual for more
- information on installation.
-
- Changes from 1.1.1
- 1. Works with (included in release) Tcl 7.3 and Expect 5.6.
- 2. Much better error trapping and handling, including the
- execution of sub scripts.
- 3. Re-worked configuration subsystem.
- 4. Default handling for testing unknown targets.
- 5. New testsuite for expect and runtest.
- 6. More debugging procedures.
-
- Changes from 1.0
-
- 1. DejaGnu now conforms to POSIX 1003.3, a standard for
- testing frameworks.
- 2. A Tcl debugger written by Don Libes has been added.
- 3. Lots of bug fixes.
-
- Changes from 0.9
-
- 1. DejaGnu now installs itself like other utilities.
- 2. 700 G++ tests are included.
- 3. The bugs in the GCC tests have been fixed.
- 4. Testsuites are released separately.
- 5. Testsuite sources now reside with the within each tool's
- source tree.
-
--------------------------------------------------------------------
-Here's is a posting on the Free OS testing project. (FROST)
--------------------------------------------------------------------
-If you have built up your own tests for system calls, library
-routines, networking protocols, or common utilities, this posting
-offers you an opportunity to put them to good use. You can do a good
-deed for the Linux community, the Berkeley UNIX community, and the
-wider world of free software users.
-
-Also, if you would like to learn some good test tools and strategies,
-and devote some time on a volunteer basis to writing tests -- perhaps
-a couple of weeks full-time, or a couple hours per week over a period
-of several months -- then here is a project you should get involved
-in.
-
-I am helping to coordinate a test effort for Linux. In the following
-four sections of this message I will describe the goals, the process,
-the people trying to do it, and what you can do to help.
-
-Goals
-
- Linux and BSD share a number of libraries and utilities, both
- because BSD software was ported to Linux, and because several free
- software (GNU) utilities have been ported to both operating
- systems.
-
- Linux shows startling differences and failures as you move from one
- set of hardware to another. People who hope to base their own
- commercial products on Linux would like to see proof that it is
- robust, portable, and standard-conforming. The problem is that
- cross-platform testing is very hard to do, and few decent test
- suites exist either for free software or for UNIX. (Look at all the
- differences you find among systems that are SVID-conforming,
- particularly at higher levels such as the utilities.)
-
- Therefore, a number of us who are interested n Linux have decided to
- enter the modern age of formal, automated software testing -- but in
- a manner that is proper for the free software community.
-
- Using DejaGnu, a test platform developed by Cygnus Support and
- placed under the GPL, we want to collect the best tests we can from
- people everywhere, and integrate them into suites that any user can
- download, run, and interpret with a few commands. DejaGnu already
- runs under BSD, and Cygnus is porting it to Linux.
-
- Our goal is to test as many parts of the system as possible,
- including system calls (particularly for POSIX 1003.1 compliance),
- libraries in the official distribution, networking protocols,
- and utilities. We need help with
-
- 1) integrating good tests donated by the community (and probably
- written in a variety of programming languages and command
- shells) into the DejaGnu framework, and
-
- 2) writing new tests for major functional areas for which no
- adequate tests exist.
-
- The tests we use will be placed under the GPL and distributed by
- Cygnus Support along with DejaGnu. H. J. Lu, who maintains the C
- library for Linux, has offered to run the POSIX 1003.1 tests and as
- many others as he can.
-
-Process
-
- First let me summarize the advantages of using DejaGnu, a free
- software product that will be the umbrella for all the tests, and
- then explain how we plan to conduct this project.
-
- Cygnus Support released DejaGnu to the public on January 3, along
- with several test suites for GNU language tools. The product is
- designed for portability and easy cross-platform development and
- execution. It works more uniformly than typical tests using the
- UNIX shell, and also supports interactive testing better than most
- test platforms -- for instance, Cygnus has written over 1300 unit
- tests for the gdb debugger using it.
-
- The implementation of DejaGnu is based on tcl and expect, two simple
- existing languages for writing commands. You can develop new tests
- in two major ways: by placing keyword-based comments in C source
- code, or by writing tests in tcl.
-
- While Cygnus is still increasing their body of tests for language
- tools, they are also turning their resources toward the libraries
- and GNU utilities. While most of the tests are written at Cygnus,
- they have reached out to communities of testers and are now porting
- substantial sets of donated tests.
-
- We are hoping to broaden this successful use of collaboration across
- user communities. We hope that suites of useful tests are sitting
- in desk drawers out there. We also hope to gather and mobilize
- people who appreciate the value of formal tests in legitimizing free
- software, and would like to help write them.
-
- I am not an employee of Cygnus, but have volunteered to talk to
- interested people and do an initial classification of tests, just to
- offload some of this routine work from them. I will discuss all
- offers with Cygnus staff to find out what is most needed and decide
- which tests to incorporate into DejaGnu. There are several criteria
- for choosing tests, including the degree to which an area is
- covered, and its importance in the overall stability of the
- operating system. Some tests may have to be rejected just because
- they are hard to fit into the DejaGnu model.
-
-People
-
- Now you can find out why each of us got involved with this project.
-
- Cygnus writes and distributes free software, selling support as a
- means to make money. The company is not directly in the business of
- supporting operating systems or common UNIX utilities, so this kind
- of testing is tangential to their main goals. But they may want to
- support those things in the future. In any case, they would like to
- see Linux do well, and this big test project will be a good
- promotion for DejaGnu.
- H. K. Lu, as a volunteer for Linux, has been using his own system to
- implement, port, maintain, and ensure ANSI and POSIX compliance for
- the C library (mostly the GNU C library along with the iostream
- class from the g++ library). He is looking for ways to validate the
- work that he and many other contributors have put in.
-
- As an editor at a publisher of computer books, my relationship to
- Linux and BSD is even more distant than that of Cygnus. But we are
- thinking about putting out books about Linux, from either the Linux
- Documentation Project or independent authors, and would like to make
- sure Linux is stable enough to be documented. The testing of
- utilities is particularly important to me, because it can provide
- quality assurance for our books, including the BSD version of UNIX
- in a Nutshell.
-
-What you can do
-
- We ask people who have written tests in the areas I have described
- to donate them to this project and see them benefit the public.
- Don't just send me stuff -- write or call to discuss what you've got
- in general. You also have to assign the tests to the Free Software
- Foundation (a simple matter, so long as you are the owner of the
- tests) so that they can be distributed under the GPL.
-
- Also, please don't starting flaming about the GPL. Either join our
- project and donate your tests, or don't. Personally, I do not take
- a side in this war.
-
- People who are interested in testing as a discipline, and have some
- time to donate, are invited to contact me to help write tests. Tell
- me:
-
- Your knowledge of computer languages and tools
-
- Previous software test efforts you have engaged in, if any
-
- How much time you can devote
-
- What functional areas you think are important and have a
- particular interest in
-
- Cygnus staff will tell volunteers which areas need testing, and
- offer guidance while you learn and apply DejaGnu. The most
- important trait for the project is rigorous thinking along the lines
- of software quality (so the best preparation is to have done some
- formal testing before). You do not need to know any particular
- language or tool; you can learn tcl or other aspects of DejaGnu
- fairly quickly.
-
- Contact information for me is in my signature. I am at the phone
- number during traditional U.S. business hours. So send mail any
- time, or try calling from Monday through Friday, 9:00 AM to 5:00 PM,
- Eastern Daylight Saving Time (four hours later than Greenwich Mean
- Time).
-
- Feel free to distribute and repost this message elsewhere, in its
- entirety.
-
-----------------------------------------------------------------------
-Andy Oram O'Reilly & Associates, Inc. andyo@ora.com
- 90 Sherman Street, Cambridge, MA 02140 (617) 354-5800
- fax (617) 661-1116
-----------------------------------------------------------------------
-
-There is a new listserv based mailing list for the FROST project. To
-subscribe, send email to "listserv@cygnus.com" and the body should
-contain "SUBSCRIBE FROST <your name>". Messages sent to
-frost@cygnus.com go to the mailing list.
\ No newline at end of file
+++ /dev/null
- Thu Mar 16 17:34:33 MST 1995
-
-. Add more support for target boards and realtime OS's.
-. Use the new expect terminal support for an "escape codes" API.
-. Use expectk and write a GUI testing API, complete with
- record/playback.
-. Add a "testing methodologies" section to the manual.
+++ /dev/null
-dnl This file is duplicated in four places:
-dnl * gdb/aclocal.m4
-dnl * gdb/testsuite/aclocal.m4
-dnl * expect/aclocal.m4
-dnl * dejagnu/aclocal.m4
-dnl Consider modifying all copies in parallel.
-dnl written by Rob Savoye <rob@welcomehome.org> for Cygnus Support
-dnl CYGNUS LOCAL: This gets the right posix flag for gcc
-AC_DEFUN(CY_AC_TCL_LYNX_POSIX,
-[AC_REQUIRE([AC_PROG_CC])AC_REQUIRE([AC_PROG_CPP])
-AC_MSG_CHECKING([to see if this is LynxOS])
-AC_CACHE_VAL(ac_cv_os_lynx,
-[AC_EGREP_CPP(yes,
-[/*
- * The old Lynx "cc" only defines "Lynx", but the newer one uses "__Lynx__"
- */
-#if defined(__Lynx__) || defined(Lynx)
-yes
-#endif
-], ac_cv_os_lynx=yes, ac_cv_os_lynx=no)])
-#
-if test "$ac_cv_os_lynx" = "yes" ; then
- AC_MSG_RESULT(yes)
- AC_DEFINE(LYNX)
- AC_MSG_CHECKING([whether -mposix or -X is available])
- AC_CACHE_VAL(ac_cv_c_posix_flag,
- [AC_TRY_COMPILE(,[
- /*
- * This flag varies depending on how old the compiler is.
- * -X is for the old "cc" and "gcc" (based on 1.42).
- * -mposix is for the new gcc (at least 2.5.8).
- */
- #if defined(__GNUC__) && __GNUC__ >= 2
- choke me
- #endif
- ], ac_cv_c_posix_flag=" -mposix", ac_cv_c_posix_flag=" -X")])
- CC="$CC $ac_cv_c_posix_flag"
- AC_MSG_RESULT($ac_cv_c_posix_flag)
- else
- AC_MSG_RESULT(no)
-fi
-])
-#
-# Sometimes the native compiler is a bogus stub for gcc or /usr/ucb/cc. This
-# makes configure think it's cross compiling. If --target wasn't used, then
-# we can't configure, so something is wrong.
-AC_DEFUN(CY_AC_C_CROSS,
-[# If we cannot run a trivial program, we must be cross compiling.
-AC_MSG_CHECKING(whether cross-compiling)
-AC_CACHE_VAL(ac_cv_c_cross,[
-AC_TRY_RUN([
- main(){return(0);}],
- ac_cv_c_cross=no, ac_cv_c_cross=yes, ac_cv_c_cross=yes)
-])
-if test x"${target}" = x"${host}" -a x"${ac_cv_c_cross}" = x"yes"; then
- dnl this hack is cause the message is so long we don't call AC_MSG_ERROR
- echo "configure: error: You need to specify --target to cross compile," 1>&2;
- echo " or the native compiler is broken" 1>&2;
- exit 1;
-else
- cross_compiling=$ac_cv_c_cross
- AC_MSG_RESULT($ac_cv_c_cross)
-fi
-])
-AC_DEFUN(CY_AC_PATH_TCLH, [
-#
-# Ok, lets find the tcl source trees so we can use the headers
-# Warning: transition of version 9 to 10 will break this algorithm
-# because 10 sorts before 9. We also look for just tcl. We have to
-# be careful that we don't match stuff like tclX by accident.
-# the alternative search directory is involked by --with-tclinclude
-#
-no_tcl=true
-AC_MSG_CHECKING(for Tcl private headers)
-AC_ARG_WITH(tclinclude, [ --with-tclinclude directory where tcl private headers are], with_tclinclude=${withval})
-AC_CACHE_VAL(ac_cv_c_tclh,[
-# first check to see if --with-tclinclude was specified
-if test x"${with_tclinclude}" != x ; then
- if test -f ${with_tclinclude}/tclInt.h ; then
- ac_cv_c_tclh=`(cd ${with_tclinclude}; pwd)`
- else
- AC_MSG_ERROR([${with_tclinclude} directory doesn't contain private headers])
- fi
-fi
-# next check in private source directory
-#
-# since ls returns lowest version numbers first, reverse its output
-if test x"${ac_cv_c_tclh}" = x ; then
- for i in \
- ${srcdir}/../tcl \
- `ls -dr ${srcdir}/../tcl[[0-9]]* 2>/dev/null` \
- ${srcdir}/../../tcl \
- `ls -dr ${srcdir}/../../tcl[[0-9]]* 2>/dev/null` \
- ${srcdir}/../../../tcl \
- `ls -dr ${srcdir}/../../../tcl[[0-9]]* 2>/dev/null ` ; do
- if test -f $i/tclInt.h ; then
- ac_cv_c_tclh=`(cd $i; pwd)`
- break
- fi
- # Tcl 7.5 and greater puts headers in subdirectory.
- if test -f $i/generic/tclInt.h ; then
- ac_cv_c_tclh=`(cd $i; pwd)`/generic
- fi
- done
-fi
-# finally check in a few common install locations
-#
-# since ls returns lowest version numbers first, reverse its output
-if test x"${ac_cv_c_tclh}" = x ; then
- for i in \
- `ls -dr /usr/local/src/tcl[[0-9]]* 2>/dev/null` \
- `ls -dr /usr/local/lib/tcl[[0-9]]* 2>/dev/null` \
- /usr/local/src/tcl \
- /usr/local/lib/tcl \
- ${prefix}/include ; do
- if test -f $i/tclInt.h ; then
- ac_cv_c_tclh=`(cd $i; pwd)`
- break
- fi
- done
-fi
-# see if one is installed
-if test x"${ac_cv_c_tclh}" = x ; then
- AC_HEADER_CHECK(tclInt.h, ac_cv_c_tclh=installed, ac_cv_c_tclh="")
-fi
-])
-if test x"${ac_cv_c_tclh}" = x ; then
- TCLHDIR="# no Tcl private headers found"
- AC_MSG_ERROR([Can't find Tcl private headers])
-fi
-if test x"${ac_cv_c_tclh}" != x ; then
- no_tcl=""
- if test x"${ac_cv_c_tkh}" = x"installed" ; then
- AC_MSG_RESULT([is installed])
- TCLHDIR=""
- else
- AC_MSG_RESULT([found in ${ac_cv_c_tclh}])
- # this hack is cause the TCLHDIR won't print if there is a "-I" in it.
- TCLHDIR="-I${ac_cv_c_tclh}"
- fi
-fi
-
-AC_MSG_CHECKING([Tcl version])
-rm -rf tclmajor tclminor
-orig_includes="$CPPFLAGS"
-
-if test x"${TCLHDIR}" != x ; then
- CPPFLAGS="$CPPFLAGS $TCLHDIR"
-fi
-
-AC_TRY_RUN([
-#include <stdio.h>
-#include "tcl.h"
-main() {
- FILE *maj = fopen("tclmajor","w");
- FILE *min = fopen("tclminor","w");
- fprintf(maj,"%d",TCL_MAJOR_VERSION);
- fprintf(min,"%d",TCL_MINOR_VERSION);
- fclose(maj);
- fclose(min);
- return 0;
-}],
- tclmajor=`cat tclmajor`
- tclminor=`cat tclminor`
- tclversion=$tclmajor.$tclminor
- AC_MSG_RESULT($tclversion)
- rm -f tclmajor tclminor
-,
- AC_MSG_RESULT([can't happen])
-,
- AC_MSG_ERROR([can't be cross compiled])
-)
-CPPFLAGS="${orig_includes}"
-
-AC_PROVIDE([$0])
-AC_SUBST(TCLHDIR)
-])
-AC_DEFUN(CY_AC_PATH_TCLLIB, [
-#
-# Ok, lets find the tcl library
-# First, look for one uninstalled.
-# the alternative search directory is invoked by --with-tcllib
-#
-
-if test $tclmajor -ge 7 -a $tclminor -ge 4 ; then
- installedtcllibroot=tcl$tclversion
-else
- installedtcllibroot=tcl
-fi
-
-if test x"${no_tcl}" = x ; then
- # we reset no_tcl incase something fails here
- no_tcl=true
- AC_ARG_WITH(tcllib, [ --with-tcllib directory where the tcl library is],
- with_tcllib=${withval})
- AC_MSG_CHECKING([for Tcl library])
- AC_CACHE_VAL(ac_cv_c_tcllib,[
- # First check to see if --with-tcllib was specified.
- # This requires checking for both the installed and uninstalled name-styles
- # since we have no idea if it's installed or not.
- if test x"${with_tcllib}" != x ; then
- if test -f "${with_tcllib}/lib$installedtcllibroot.so" ; then
- ac_cv_c_tcllib=`(cd ${with_tcllib}; pwd)`/lib$installedtcllibroot.so
- elif test -f "${with_tcllib}/libtcl.so" ; then
- ac_cv_c_tcllib=`(cd ${with_tcllib}; pwd)`/libtcl.so
- # then look for a freshly built statically linked library
- # if Makefile exists we assume its configured and libtcl will be built first.
- elif test -f "${with_tcllib}/lib$installedtcllibroot.a" ; then
- ac_cv_c_tcllib=`(cd ${with_tcllib}; pwd)`/lib$installedtcllibroot.a
- elif test -f "${with_tcllib}/libtcl.a" ; then
- ac_cv_c_tcllib=`(cd ${with_tcllib}; pwd)`/libtcl.a
- else
- AC_MSG_ERROR([${with_tcllib} directory doesn't contain libraries])
- fi
- fi
- # then check for a private Tcl library
- # Since these are uninstalled, use the simple lib name root.
- if test x"${ac_cv_c_tcllib}" = x ; then
- for i in \
- ../tcl \
- `ls -dr ../tcl[[0-9]]* 2>/dev/null` \
- ../../tcl \
- `ls -dr ../../tcl[[0-9]]* 2>/dev/null` \
- ../../../tcl \
- `ls -dr ../../../tcl[[0-9]]* 2>/dev/null` ; do
- # Tcl 7.5 and greater puts library in subdir. Look there first.
- if test -f "$i/unix/libtcl.so" ; then
- ac_cv_c_tcllib=`(cd $i; pwd)`/unix/libtcl.so
- break
- elif test -f "$i/unix/libtcl.a" -o -f "$i/unix/Makefile"; then
- ac_cv_c_tcllib=`(cd $i; pwd)`/unix/libtcl.a
- break
- # look for a freshly built dynamically linked library
- elif test -f "$i/libtcl.so" ; then
- ac_cv_c_tcllib=`(cd $i; pwd)`/libtcl.so
- break
-
- # then look for a freshly built statically linked library
- # if Makefile exists we assume its configured and libtcl will be
- # built first.
- elif test -f "$i/libtcl.a" -o -f "$i/Makefile" ; then
- ac_cv_c_tcllib=`(cd $i; pwd)`/libtcl.a
- break
- fi
- done
- fi
- # check in a few common install locations
- if test x"${ac_cv_c_tcllib}" = x ; then
- for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do
- # first look for a freshly built dynamically linked library
- if test -f "$i/lib$installedtcllibroot.so" ; then
- ac_cv_c_tcllib=`(cd $i; pwd)`/lib$installedtcllibroot.so
- break
- # then look for a freshly built statically linked library
- # if Makefile exists we assume its configured and libtcl will be built first.
- elif test -f "$i/lib$installedtcllibroot.a" -o -f "$i/Makefile" ; then
- ac_cv_c_tcllib=`(cd $i; pwd)`/lib$installedtcllibroot.a
- break
- fi
- done
- fi
- # check in a few other private locations
- if test x"${ac_cv_c_tcllib}" = x ; then
- for i in \
- ${srcdir}/../tcl \
- `ls -dr ${srcdir}/../tcl[[0-9]]* 2>/dev/null` ; do
- # Tcl 7.5 and greater puts library in subdir. Look there first.
- if test -f "$i/unix/libtcl.so" ; then
- ac_cv_c_tcllib=`(cd $i; pwd)`/unix/libtcl.so
- break
- elif test -f "$i/unix/libtcl.a" -o -f "$i/unix/Makefile"; then
- ac_cv_c_tcllib=`(cd $i; pwd)`/unix/libtcl.a
- break
- # look for a freshly built dynamically linked library
- elif test -f "$i/libtcl.so" ; then
- ac_cv_c_tcllib=`(cd $i; pwd)`/libtcl.so
- break
-
- # then look for a freshly built statically linked library
- # if Makefile exists we assume its configured and libtcl will be
- # built first.
- elif test -f "$i/libtcl.a" -o -f "$i/Makefile" ; then
- ac_cv_c_tcllib=`(cd $i; pwd)`/libtcl.a
- break
- fi
- done
- fi
-
- # see if one is conveniently installed with the compiler
- if test x"${ac_cv_c_tcllib}" = x ; then
- orig_libs="$LIBS"
- LIBS="$LIBS -l$installedtcllibroot -lm"
- AC_TRY_RUN([
- Tcl_AppInit()
- { exit(0); }], ac_cv_c_tcllib="-l$installedtcllibroot", ac_cv_c_tcllib=""
- , ac_cv_c_tclib="-l$installedtcllibroot")
- LIBS="${orig_libs}"
- fi
- ])
- if test x"${ac_cv_c_tcllib}" = x ; then
- TCLLIB="# no Tcl library found"
- AC_MSG_WARN(Can't find Tcl library)
- else
- TCLLIB=${ac_cv_c_tcllib}
- AC_MSG_RESULT(found $TCLLIB)
- no_tcl=
- fi
-fi
-
-AC_PROVIDE([$0])
-AC_SUBST(TCLLIB)
-])
-AC_DEFUN(CY_AC_PATH_TKH, [
-#
-# Ok, lets find the tk source trees so we can use the headers
-# If the directory (presumably symlink) named "tk" exists, use that one
-# in preference to any others. Same logic is used when choosing library
-# and again with Tcl. The search order is the best place to look first, then in
-# decreasing significance. The loop breaks if the trigger file is found.
-# Note the gross little conversion here of srcdir by cd'ing to the found
-# directory. This converts the path from a relative to an absolute, so
-# recursive cache variables for the path will work right. We check all
-# the possible paths in one loop rather than many seperate loops to speed
-# things up.
-# the alternative search directory is invoked by --with-tkinclude
-#
-AC_MSG_CHECKING(for Tk private headers)
-AC_ARG_WITH(tkinclude, [ --with-tkinclude directory where the tk private headers are],
- with_tkinclude=${withval})
-no_tk=true
-AC_CACHE_VAL(ac_cv_c_tkh,[
-# first check to see if --with-tkinclude was specified
-if test x"${with_tkinclude}" != x ; then
- if test -f ${with_tkinclude}/tk.h ; then
- ac_cv_c_tkh=`(cd ${with_tkinclude}; pwd)`
- else
- AC_MSG_ERROR([${with_tkinclude} directory doesn't contain private headers])
- fi
-fi
-# next check in private source directory
-#
-# since ls returns lowest version numbers first, reverse the entire list
-# and search for the worst fit, overwriting it with better fits as we find them
-if test x"${ac_cv_c_tkh}" = x ; then
- for i in \
- ${srcdir}/../tk \
- `ls -dr ${srcdir}/../tk[[0-9]]* 2>/dev/null` \
- ${srcdir}/../../tk \
- `ls -dr ${srcdir}/../../tk[[0-9]]* 2>/dev/null` \
- ${srcdir}/../../../tk \
- `ls -dr ${srcdir}/../../../tk[[0-9]]* 2>/dev/null ` ; do
- if test -f $i/tk.h ; then
- ac_cv_c_tkh=`(cd $i; pwd)`
- break
- fi
- # Tk 4.1 and greater puts this in a subdir.
- if test -f $i/generic/tk.h; then
- ac_cv_c_tkh=`(cd $i; pwd)`/generic
- fi
- done
-fi
-# finally check in a few common install locations
-#
-# since ls returns lowest version numbers first, reverse the entire list
-# and search for the worst fit, overwriting it with better fits as we find them
-if test x"${ac_cv_c_tkh}" = x ; then
- for i in \
- `ls -dr /usr/local/src/tk[[0-9]]* 2>/dev/null` \
- `ls -dr /usr/local/lib/tk[[0-9]]* 2>/dev/null` \
- /usr/local/src/tk \
- /usr/local/lib/tk \
- ${prefix}/include ; do
- if test -f $i/tk.h ; then
- ac_cv_c_tkh=`(cd $i; pwd)`
- break
- fi
- done
-fi
-# see if one is installed
-if test x"${ac_cv_c_tkh}" = x ; then
- AC_HEADER_CHECK(tk.h, ac_cv_c_tkh=installed)
-fi
-])
-if test x"${ac_cv_c_tkh}" != x ; then
- no_tk=""
- if test x"${ac_cv_c_tkh}" = x"installed" ; then
- AC_MSG_RESULT([is installed])
- TKHDIR=""
- else
- AC_MSG_RESULT([found in $ac_cv_c_tkh])
- # this hack is cause the TKHDIR won't print if there is a "-I" in it.
- TKHDIR="-I${ac_cv_c_tkh}"
- fi
-else
- TKHDIR="# no Tk directory found"
- AC_MSG_WARN([Can't find Tk private headers])
- no_tk=true
-fi
-
-# if Tk is installed, extract the major/minor version
-if test x"${no_tk}" = x ; then
-AC_MSG_CHECKING([Tk version])
-rm -rf tkmajor tkminor
-orig_includes="$CPPFLAGS"
-
-if test x"${TCLHDIR}" != x ; then
- CPPFLAGS="$CPPFLAGS $TCLHDIR"
-fi
-if test x"${TKHDIR}" != x ; then
- CPPFLAGS="$CPPFLAGS $TKHDIR"
-fi
-if test x"${x_includes}" != x -a x"${x_includes}" != xNONE ; then
- CPPFLAGS="$CPPFLAGS -I$x_includes"
-fi
-
-AC_TRY_RUN([
-#include <stdio.h>
-#include "tk.h"
- main() {
- FILE *maj = fopen("tkmajor","w");
- FILE *min = fopen("tkminor","w");
- fprintf(maj,"%d",TK_MAJOR_VERSION);
- fprintf(min,"%d",TK_MINOR_VERSION);
- fclose(maj);
- fclose(min);
- return 0;
-}],
- tkmajor=`cat tkmajor`
- tkminor=`cat tkminor`
- tkversion=$tkmajor.$tkminor
- AC_MSG_RESULT($tkversion)
- rm -f tkmajor tkminor
-,
- AC_MSG_ERROR([
-cannot compile a simple X program - suspect your xmkmf is
-misconfigured and is incorrectly reporting the location of your X
-include or libraries - report this to your system admin]) ,
- AC_MSG_ERROR([can't be cross compiled])
-)
-CPPFLAGS="${orig_includes}"
-fi
-
-AC_PROVIDE([$0])
-AC_SUBST(TKHDIR)
-])
-AC_DEFUN(CY_AC_PATH_TKLIB, [
-AC_REQUIRE([CY_AC_PATH_TCL])
-#
-# Ok, lets find the tk library
-# First, look for the latest private (uninstalled) copy
-# Notice that the destinations in backwards priority since the tests have
-# no break.
-# Then we look for either .a, .so, or Makefile. A Makefile is acceptable
-# is it indicates the target has been configured and will (probably)
-# soon be built. This allows an entire tree of Tcl software to be
-# configured at once and then built.
-# the alternative search directory is invoked by --with-tklib
-#
-
-if test x"${no_tk}" = x ; then
- # reset no_tk incase something fails here
- no_tk="true"
-
- if test $tkmajor -ge 4 ; then
- installedtklibroot=tk$tkversion
- else
- installedtkllibroot=tk
- fi
-
- AC_ARG_WITH(tklib, [ --with-tklib directory where the tk library is],
- with_tklib=${withval})
- AC_MSG_CHECKING([for Tk library])
- AC_CACHE_VAL(ac_cv_c_tklib,[
- # first check to see if --with-tklib was specified
- # This requires checking for both the installed and uninstalled name-styles
- # since we have no idea if it's installed or not.
- if test x"${with_tklib}" != x ; then
- if test -f "${with_tklib}/lib$installedtklibroot.so" ; then
- ac_cv_c_tklib=`(cd ${with_tklib}; pwd)`/lib$installedtklibroot.so
- no_tk=""
- elif test -f "${with_tklib}/libtk.so" ; then
- ac_cv_c_tklib=`(cd ${with_tklib}; pwd)`/libtk.so
- no_tk=""
- # then look for a freshly built statically linked library
- # if Makefile exists we assume its configured and libtk will be built
- elif test -f "${with_tklib}/lib$installedtklibroot.a" ; then
- ac_cv_c_tklib=`(cd ${with_tklib}; pwd)`/lib$installedtklibroot.a
- no_tk=""
- elif test -f "${with_tklib}/libtk.a" ; then
- ac_cv_c_tklib=`(cd ${with_tklib}; pwd)`/libtk.a
- no_tk=""
- else
- AC_MSG_ERROR([${with_tklib} directory doesn't contain libraries])
- fi
- fi
- # then check for a private Tk library
- # Since these are uninstalled, use the simple lib name root.
- if test x"${ac_cv_c_tklib}" = x ; then
- for i in \
- ../tk \
- `ls -dr ../tk[[0-9]]* 2>/dev/null` \
- ../../tk \
- `ls -dr ../../tk[[0-9]]* 2>/dev/null` \
- ../../../tk \
- `ls -dr ../../../tk[[0-9]]* 2>/dev/null` ; do
- # Tk 4.1 and greater puts things in subdirs. Check these first.
- if test -f "$i/unix/libtk.so" ; then
- ac_cv_c_tklib=`(cd $i; pwd)`/unix/libtk.so
- no_tk=
- break
- elif test -f "$i/unix/libtk.a" -o -f "$i/unix/Makefile"; then
- ac_cv_c_tklib=`(cd $i; pwd)`/unix/libtk.a
- no_tk=
- break
- # look for a freshly built dynamically linked library
- elif test -f "$i/libtk.so" ; then
- ac_cv_c_tklib=`(cd $i; pwd)`/libtk.so
- no_tk=
- break
- # then look for a freshly built statically linked library
- # if Makefile exists we assume its configured and libtk will be built
- elif test -f "$i/libtk.a" -o -f "$i/Makefile" ; then
- ac_cv_c_tklib=`(cd $i; pwd)`/libtk.a
- no_tk=""
- break
- fi
- done
- fi
- # finally check in a few common install locations
- if test x"${ac_cv_c_tklib}" = x ; then
- for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do
- # first look for a freshly built dynamically linked library
- if test -f "$i/lib$installedtklibroot.so" ; then
- ac_cv_c_tklib=`(cd $i; pwd)`/lib$installedtklibroot.so
- no_tk=""
- break
- # then look for a freshly built statically linked library
- # if Makefile exists, we assume it's configured and libtcl will be built
- elif test -f "$i/lib$installedtklibroot.a" -o -f "$i/Makefile" ; then
- ac_cv_c_tklib=`(cd $i; pwd)`/lib$installedtklibroot.a
- no_tk=""
- break
- fi
- done
- fi
- # check in a few other private locations
- if test x"${ac_cv_c_tklib}" = x ; then
- for i in \
- ${srcdir}/../tk \
- `ls -dr ${srcdir}/../tk[[0-9]]* 2>/dev/null` ; do
- # Tk 4.1 and greater puts things in subdirs. Check these first.
- if test -f "$i/unix/libtk.so" ; then
- ac_cv_c_tklib=`(cd $i; pwd)`/unix/libtk.so
- no_tk=
- break
- elif test -f "$i/unix/libtk.a" -o -f "$i/unix/Makefile"; then
- ac_cv_c_tcllib=`(cd $i; pwd)`/unix/libtk.a
- no_tk=
- break
- # look for a freshly built dynamically linked library
- elif test -f "$i/libtk.so" ; then
- ac_cv_c_tklib=`(cd $i; pwd)`/libtk.so
- no_tk=""
- break
- # then look for a freshly built statically linked library
- # if Makefile exists, we assume it's configured and libtcl will be built
- elif test -f "$i/libtk.a" -o -f "$i/Makefile" ; then
- ac_cv_c_tklib=`(cd $i; pwd)`/libtk.a
- no_tk=""
- break
- fi
- done
- fi
- # see if one is conveniently installed with the compiler
- if test x"${ac_cv_c_tklib}" = x ; then
- AC_REQUIRE([AC_PATH_X])
- orig_libs="$LIBS"
- LIBS="$LIBS -l$installedtklibroot $x_libraries $ac_cv_c_tcllib -lm"
- AC_TRY_RUN([
- Tcl_AppInit()
- { exit(0); }], ac_cv_c_tklib="-l$installedtklibroot", ac_cv_c_tklib=""
- , ac_cv_c_tklib="-l$installedtklibroot")
- LIBS="${orig_libs}"
- fi
- ])
- if test x"${ac_cv_c_tklib}" = x ; then
- TKLIB="# no Tk library found"
- AC_MSG_WARN(Can't find Tk library)
- else
- TKLIB=$ac_cv_c_tklib
- AC_MSG_RESULT(found $TKLIB)
- no_tk=
- fi
-fi
-AC_PROVIDE([$0])
-AC_SUBST(TKLIB)
-])
-AC_DEFUN(CY_AC_PATH_TK, [
- CY_AC_PATH_TKH
- CY_AC_PATH_TKLIB
-])
-AC_DEFUN(CY_AC_PATH_TCL, [
- CY_AC_PATH_TCLH
- CY_AC_PATH_TCLLIB
-])
+++ /dev/null
-#! /bin/sh
-#
-# This application is using [incr Tcl]
-#
-# Copyright (C) 1998, 1999 jotOmega dsc, Inc.
-
-# This file is part of BlueGnu testing framework.
-# It asumes that the itclsh3.0 program is on your PATH
-#
-
-#
-# Get the execution path to this script
-#
-execpath=`echo ${0-.} | sed -e 's@/[^/]*$@@'`
-
-#
-# get the name by which bluegnu was invoked and extract the config triplet
-#
-bluegnu=`echo ${0-.} | sed -e 's@^.*/@@'`
-target=`echo $bluegnu | sed -e 's/-bluegnu$//'`
-if [ "$target" != bluegnu ] ; then
- target="--target=${target}"
-else
- target=""
-fi
-
-#
-# Find the right interpreter binary to use. If a variable EXPECT exists,
-# it takes precedence over all other tests. Otherwise look for a freshly
-# built one, and then use one in the path.
-#
-if [ x"$EXPECT" != x ] ; then
- expectbin=$EXPECT
-else
- if [ -x "$execpath/itclsh3.0" ] ; then
- expectbin=$execpath/itclsh3.0
- else
- expectbin=itclsh3.0
- fi
-fi
-
-# just to be safe...
-if [ -z "$expectbin" ]; then
- echo "ERROR: No $expectbin shell found"
- exit 1
-fi
-
-#
-# Extract a few options from the option list.
-#
-verbose=0
-debug=""
-for a in "$@" ; do
- case $a in
- -v|--v|-verb*|--verb*) verbose=`expr $verbose + 1`;;
- -D0|--D0) debug="-D 0" ;;
- -D1|--D1) debug="-D 1" ;;
- esac
-done
-
-if expr $verbose \> 0 \& "$DEBUG" > /dev/null ; then
- echo Using $expectbin as interpreter for the BlueGnu testing framework.
-fi
-
-#
-# find bluegnu.itcl. First we look in it's installed location, otherwise
-# start if from the source tree.
-#
-for i in $execpath/../lib/bluegnu $execpath/../lib $execpath $execpath/lib ; do
- if expr $verbose \> 2 \& "$DEBUG" > /dev/null ; then
- echo Looking for $i/bluegnu.itcl.
- fi
- if [ -f $i/bluegnu.itcl ] ; then
- runpath=$i
- if expr $verbose \> 0 \& "$DEBUG" > /dev/null ; then
- echo Using $i/bluegnu.itcl as default main test driver
- fi
- break
- fi
-done
-
-# check for an environment variable
-if [ x"$BLUEGNULIB" != x ] ; then
- runpath=$BLUEGNULIB
-else
- BLUEGNULIB=$runpath; export BLUEGNULIB
-fi
-if expr $verbose \> 0 \& "$DEBUG" > /dev/null ; then
- echo Using $BLUEGNULIB as the BlueGnu library
-fi
-
-#
-# Find the right test framework. If a variable FRAMEWORK exists,
-# it takes precedence over all other frameworks. Otherwise look for the
-# default one.
-if [ x"$FRAMEWORK" != x ] ; then
- framework=$FRAMEWORK
-else
- if [ -r "$runpath/bluegnu.itcl" ] ; then
- framework=bluegnu.itcl
- else
- echo "ERROR: $runpath/bluegnu.itcl does not exist."
- exit 1
- fi
-fi
-
-if [ x"$runpath" = x ] ; then
- echo "ERROR: bluegnu.itcl does not exist."
- exit 1
-fi
-
-if [ ! -r "$runpath/$framework" ] ; then
- echo "ERROR: $runpath/$framework does not exist."
-else
- if expr $verbose \> 0 \& "$DEBUG" > /dev/null ; then
- echo "Using $runpath/$framework as main test driver"
- fi
-fi
-
-# Find Test Suite Root directory
-#
-if [ x"$TESTSUITEROOT" = x ] ; then
- TESTSUITEROOT=`pwd`; export TESTSUITEROOT
-else
- cd $TESTSUITEROOT
-fi
-if expr $verbose \> 0 \& "$DEBUG" > /dev/null ; then
- echo "Using $TESTSUITEROOT as Test Suite Directory."
-fi
-
-# Start the BlueGnu Test Framework
-#
-if expr $verbose \> 2 \& "$DEBUG" > /dev/null ; then
- echo Command: $expectbin $debug $runpath/$framework $target ${1+"$@"}
-fi
-exec $expectbin $debug $runpath/$framework $target ${1+"$@"}
+++ /dev/null
-#! /bin/ksh
-#
-
-
-exec itkwish2.2 $0.itcl $*
+++ /dev/null
-#
-#
-#
-
-set szApplName [file dirname $argv0]/[file root [file tail $argv0]]
-
-# puts "MAIA TK application: $szApplName"
-
-source ${szApplName}Utils.itcl
-
-if [file exists ~/.[file tail ${szApplName}]rc] {
- puts stderr "Using Resource ~/.[file tail ${szApplName}]rc"
- if [catch {option readfile ~/.[file tail ${szApplName}]rc} szErrMsg] {
- puts stderr "error in ~/.[file tail ${szApplName}]rc: $szErrMsg"
- }
-} elseif [file exists ${szApplName}.rc] {
- puts stderr "Using Resource ${szApplName}.rc"
- if [catch {option readfile ${szApplName}.rc} szErrMsg] {
- puts stderr "error in ${szApplName}.rc: $szErrMsg"
- }
-}
-
-wm title . "BlueGnu Tk"
-set iLabelWidth 25
-
-frame .options -borderwidth 3
-pack .options -side top -fill both -expand true
-# puts "grid: [grid columnconfigure .options 1 -weight 1]"
-
-set iRow 0
-label .options.lCmd -text "BlueGnu Command Line:" -padx 0 -width $iLabelWidth -anchor e
-entry .options.cmd -relief sunken -textvariable szCommand -width 60
-set wRun [button .options.run -text "Run it" -command run]
-button .options.quit -text Quit -command exit
-grid .options.lCmd -row $iRow -column 0 -sticky w
-grid .options.cmd -row $iRow -column 1 -columnspan 4 -sticky ew
-grid .options.run -row $iRow -column 5 -sticky ew
-grid .options.quit -row $iRow -column 6 -sticky ew
-bind .options.cmd <Return> run
-bind .options.cmd <Control-c> stop
-focus .options.cmd
-
-incr iRow
-set szPWD [exec /bin/sh -c pwd]
-set wPWDentry [entry .options.pwdText -textvariable szPWD]
-set wPWDlabel [label .options.pwdLabel -text "Current Working Dir:" -padx 0 \
- -width $iLabelWidth -anchor e]
-set wPWD [menubutton .options.pwd -text "Subdirectories" \
- -menu .options.pwd.menu -relief raised]
-set wPWDmenu [menu .options.pwd.menu -tearoff 0]
-$wPWDmenu add command -label "." -command {setPWD "."}
-$wPWDmenu add command -label ".." -command {setPWD ".."}
-$wPWDmenu add command -label "dummy" -command {setPWD "dummy"}
-setPWD "."
-grid .options.pwdLabel -row $iRow -column 0 -sticky w
-grid .options.pwdText -row $iRow -column 1 -columnspan 4 -sticky ew
-grid .options.pwd -row $iRow -column 5 -columnspan 2 -sticky ew
-set iRowPWD $iRow
-
-incr iRow
-set wEXPECTentry [entry .options.expectEntry \
- -textvariable szEXPECT -state disabled]
-set wEXPECTlabel [label .options.expectLabel -text env(EXPECT): \
- -padx 0 -width $iLabelWidth -anchor e]
-set wEXPECT [menubutton .options.expect -text "EXPECT choices" \
- -menu .options.expect.menu -relief raised]
-set wEXPECTmenu [menu .options.expect.menu -tearoff 0]
-set lTesters [option get $wEXPECTmenu choices {}]
-if [info exists env(EXPECT)] {
- setEXPECT $env(EXPECT)
- if {[lsearch -exact $lTesters $szExpect] < 0} {
- $wEXPECTmenu add command -label "$szExpect" \
- -command [list setEXPECT "$szExpect"]
- }
-} else {
- setEXPECT {}
-}
-foreach szTester $lTesters {
- #puts "tester choice: >$szTester<"
- $wEXPECTmenu add command -label "$szTester" \
- -command [list setEXPECT "$szTester"]
-}
-$wEXPECTmenu add command -label "" \
- -command [list setEXPECT ""]
-grid .options.expectLabel -row $iRow -column 0 -sticky w
-grid .options.expectEntry -row $iRow -column 1 -columnspan 4 -sticky ew
-grid .options.expect -row $iRow -column 5 -columnspan 2 -sticky ew
-
-incr iRow
-label .options.targetLabel -text Target: -padx 0 -width $iLabelWidth -anchor e
-label .options.targetChoice -textvariable szTarget -relief sunken -anchor w
-menubutton .options.target -text "Target choices" \
- -menu .options.target.menu -relief raised
-menu .options.target.menu -tearoff 0
-set lChoices [option get .options.target.menu choices {}]
-foreach szChoice $lChoices {
- .options.target.menu add command -label $szChoice \
- -command [list set szTarget $szChoice]
-}
-.options.target.menu add command -label "" \
- -command [list set szTarget ""]
-grid .options.targetLabel -row $iRow -column 0 -sticky w
-grid .options.targetChoice -row $iRow -column 1 -columnspan 4 -sticky ew -padx 2
-grid .options.target -row $iRow -column 5 -columnspan 2 -sticky ew
-
-incr iRow
-label .options.viewLabel -text view: -padx 0 -width $iLabelWidth \
- -anchor e
-label .options.viewChoice -textvariable szView -relief sunken -anchor w
-menubutton .options.view -text "View choices" \
- -menu .options.view.menu -relief raised
-menu .options.view.menu -tearoff 0
-set lChoices [option get .options.view.menu choices {}]
-foreach szChoice $lChoices {
- .options.view.menu add command -label $szChoice \
- -command [list set szView $szChoice]
-}
-.options.view.menu add command -label "" \
- -command [list set szView ""]
-grid .options.viewLabel -row $iRow -column 0 -sticky w
-grid .options.viewChoice -row $iRow -column 1 -columnspan 4 -sticky ew -padx 2
-grid .options.view -row $iRow -column 5 -columnspan 2 -sticky ew
-
-incr iRow
-label .options.xipcLabel -text XIPCINSTANCE: \
- -padx 0 -width $iLabelWidth -anchor e
-label .options.xipcChoice -textvariable szXipc -relief sunken -anchor w
-menubutton .options.xipc -text "XIPCINSTANCE choices" \
- -menu .options.xipc.menu -relief raised
-menu .options.xipc.menu -tearoff 0
-set lChoices [option get .options.xipc.menu choices {}]
-foreach szChoice $lChoices {
- .options.xipc.menu add command -label $szChoice \
- -command [list set szXipc $szChoice]
-}
-.options.xipc.menu add command -label "" \
- -command [list set szXipc ""]
-grid .options.xipcLabel -row $iRow -column 0 -sticky w
-grid .options.xipcChoice -row $iRow -column 1 -columnspan 4 -sticky ew -padx 2
-grid .options.xipc -row $iRow -column 5 -columnspan 2 -sticky ew
-
-set szTestScript "tools/xterm"
-#set szArguments "\{title=\"\$szTarget -- \$szView\"\}"
-
-incr iRow
-set wTSentry [entry .options.tsText -textvariable szTS -state disabled]
-set wTSlabel [label .options.tsLabel -text "Current Test Scripts Dir:" \
- -padx 0 \
- -width $iLabelWidth -anchor e]
-set wTS [menubutton .options.ts -text "Subdirectories" \
- -menu .options.ts.menu -relief raised]
-set wTSmenu [menu .options.ts.menu -tearoff 0]
-$wTSmenu add command -label "." -command {setTS "."}
-$wTSmenu add command -label ".." -command {setTS ".."}
-setTS "."
-grid .options.tsLabel -row $iRow -column 0 -sticky w
-grid .options.tsText -row $iRow -column 1 -columnspan 4 -sticky ew
-grid .options.ts -row $iRow -column 5 -columnspan 2 -sticky ew
-set iRowTS $iRow
-
-incr iRow
-set wTSLlabel [label .options.tslLabel -text "Selected Test Scripts:" \
- -padx 0 \
- -width $iLabelWidth -anchor e]
-frame .options.lists -background blue
-#grid rowconfigure .options.lists 0 -weight 1
-#grid columnconfigure .options.lists 0 -weight 1
-grid .options.lists -row $iRow -column 1 -columnspan 6 -sticky news
-set wLL [scrolledListBox .options.lists.fl]
-set wLR [scrolledListBox .options.lists.fr]
-grid .options.tslLabel -row $iRow -column 0 -sticky wn
-grid rowconfigure .options.lists 0 -weight 1
-grid columnconfigure .options.lists 0 -weight 1
-grid .options.lists.fl -row 0 -column 0 -sticky news
-#grid rowconfigure .options.lists.fr 0 -weight 1
-grid columnconfigure .options.lists 1 -weight 1
-grid .options.lists.fr -row 0 -column 1 -sticky news
-bind $wLR <ButtonRelease-3> [list listTransferSelected %W $wLL]
-bind $wLL <ButtonRelease-1> [list listTransferData %W]
-bind $wLL <ButtonRelease-3> [list listTransferRemoved %W $wLR]
-insertTests $wLR
-
-incr iRow
-set wArguments [entry .options.arguments -textvariable szArguments -width 40]
-label .options.argumentsLabel -text "Arguments:" -padx 0 \
- -width $iLabelWidth -anchor e
-grid .options.argumentsLabel -row $iRow -column 0 -sticky w
-grid .options.arguments -row $iRow -column 1 -columnspan 6 -sticky ew
-
-incr iRow
-set wTestcase [entry .options.testcase -textvariable szTestcase -width 40]
-label .options.testcaseLabel -text "Testcase ID:" -padx 0 \
- -width $iLabelWidth -anchor e
-grid .options.testcaseLabel -row $iRow -column 0 -sticky w
-grid .options.testcase -row $iRow -column 1 -columnspan 6 -sticky ew
-
-set szTestcase ""
-lostSelection $wLL
-
-frame .txt
-set wLog [text .txt.log -width 80 -height 10 -borderwidth 2 -relief raised \
- -setgrid true -yscrollcommand {.txt.scroll set}]
-scrollbar .txt.scroll -command {.txt.log yview}
-pack .txt.scroll -side right -fill y
-pack .txt.log -side left -fill both -expand true
-pack .txt -side top -fill both -expand true
-
-trace variable szPWD w setPWDoverwrite
-trace variable szExpect w setExpect
-trace variable szTarget w cmdUpdate
-trace variable szView w cmdUpdate
-trace variable szXipc w cmdUpdate
-trace variable szTS w setTSoverwrite
-trace variable szArguments w cmdUpdate
-trace variable szTestcase w cmdUpdate
-
+++ /dev/null
-!
-! This is the resource file for MAIA Tk
-!
-
-*background: #d9d9d9
-*foreground: black
-*activeBackground: #ececec
-*run.activeBackground: red
-*activeForeground: blue
-*run.activeForeground: yellow
-*selectColor: #b03060
-*selectBackground: #c3c3c3
-*troughColor: #c3c3c3
-*disabledForeground: #a3a3a3
-
-*expect.menu.choices: /home/jann/tools/MAIA/bin/botester \
- /home/jann/tools/MAIA/bin/ibotester \
- /home/jann/tools/MAIA/bin/pqltester \
- /home/jann/tools/MAIA/bin/cpqltester \
- /home/jann/tools/MAIA/bin/tester \
- /home/jann/tools/bin/iexpect
-
-*target.menu.choices: BusObj BusObj=Atlas BusObj=Corba \
- BusObj=TTX/Atlas TTX=Atlas \
- BusObj=ICR/Atlas ICR=Corba ICR=Atlas \
- BusObj=PQL/Atlas BusObj=PQL/Corba PQL=Corba PQL=Atlas
-
-*view.menu.choices: testB_spr1 testB_spr2
-*xipc.menu.choices: atsqa1 atsqa2 atsqa3 atsqa4 atsqa5 atsqa6
+++ /dev/null
-#
-#
-#
-
-# puts "MAIA TK Utilities"
-
-set szView [file tail $env(CLEARCASE_ROOT)]
-set szXipc $env(XIPCINSTANCE)
-
-proc run {} {
- global env
- global szCommand wRun input wLog wRun
- global szView szXipc
-
- set env(CLEARCASE_ROOT) /view/$szView
- set env(XIPCINSTANCE) $szXipc
-
- set szCmd "xterm -sl 50000 -sb"
- if {[string length $szCommand] == 0} {
- set szCommand "$szCmd"
- } else {
- append szCmd " -e $szCommand"
- }
- if [catch {eval exec "$szCmd &"} input] {
- $wLog insert end $input
- bell
- } else {
- #fileevent $input readable log
- $wLog insert end "$env(PS1)$szCommand &\n"
- $wLog see end
- #$wRun config -text Stop -command stop
- }
-}
-
-proc log {} {
- global input wLog
-
- if [eof $input] {
- stop
- } else {
- gets $input szLine
- $wLog insert end "$szLine\n"
- $wLog see end
- }
-}
-
-
-proc stop {} {
- global input wRun
-
- catch {close $input}
- $wRun config -text "Run it" -command run
-}
-
-proc cmdUpdate {name1 name2 ops} {
- global szCommand szTarget szView szXipc \
- szTestScript szTestcase szArguments
- global iSelect
- global lTestScripts lTestcaseIDs lArguments
-
- switch $name1 {
- szArguments {
- set lArguments($iSelect) $szArguments
- }
- szTestcase {
- set lTestcaseIDs($iSelect) $szTestcase
- }
- }
-
- set szCommand "bluegnu "
- if {[string compare $szTarget ""] != 0} {
- append szCommand "\"--target=$szTarget"
- if {[string compare $szView ""] != 0} {
- append szCommand " view=$szView"
- }
- if {[string compare $szXipc ""] != 0} {
- append szCommand " XIPCINSTANCE=$szXipc"
- }
- append szCommand "\" "
- }
- foreach i [lsort -integer [array names lTestScripts]] {
- # puts "test script index = $i"
- append szCommand "\"$lTestScripts($i)"
- if {[string compare $lTestcaseIDs($i) ""] !=0} {
- append szCommand "\[$lTestcaseIDs($i)\]"
- }
- if {[string compare $lArguments($i) ""] != 0} {
- #puts "szArguments: >$lArguments($i)<"
- append szCommand "=$lArguments($i)"
- }
- append szCommand "\" "
- }
- #puts "szCommand: >$szCommand<"
-}
-
-proc setPWD {dir} {
- global szPWD wPWDmenu wPWDentry env
- #puts "setPWD $dir:"
- set szPWD $dir
- #puts "szPWD:: $szPWD"
- cd $szPWD
- catch {setTS "."}
- if {[string compare $szPWD "/"] != 0} {
- set szPWD "[exec /bin/sh -c pwd]/"
- regsub "/tmp_mnt" $szPWD "" szPWD
- }
- #puts "szPWD>: $szPWD"
- $wPWDentry insert [$wPWDentry index end] \
- [string range $szPWD [$wPWDentry index end] end]
- #update idletasks
- $wPWDentry icursor end
-
- if {[$wPWDmenu index end] > 1} {
- $wPWDmenu delete 2 end
- }
- foreach F [lsort [glob *]] {
- if [file isdirectory $F] {
- set szFile [file tail $F]
- $wPWDmenu add command -label $szFile -command "setPWD $szFile"
- }
- }
-}
-
-proc setPWDoverwrite {name1 name2 ops} {
- global wPWDmenu env
- catch {upvar #0 $name1 szPWD} szErrMsg
-
- if {[file isdirectory $szPWD]} {
- trace vdelete szPWD w setPWDoverwrite
- setPWD $szPWD
- trace variable szPWD w setPWDoverwrite
- } else {
- set szDir {}
- foreach F [glob -nocomplain "${szPWD}*"] {
- if [file isdirectory $F] {
- lappend szDir $F
- }
- }
- # puts "szDir: >$szDir< [llength $szDir]"
- if {[llength $szDir] == 1} {
- set szPWD $szDir
- setPWD $szPWD
- } elseif {[llength $szDir] == 0} {
- bell
- }
- }
-}
-
-proc checkDir {szDir} {
- regsub "^.*/home" $szDir "/home" szDir
- return $szDir
-}
-
-proc setTS {dir} {
- global szTS szTSdir wTSmenu wTSentry env wLR
-
- trace vdelete szTS w setTSoverwrite
- $wTSentry configure -state normal
- #puts "setTS $dir: [checkDir [exec /bin/sh -c pwd]]"
- if {[string compare $dir ".."] == 0} {
- # puts "##szTS: >$szTS<1"
- set szTStmp [file dirname $szTS]
- # puts "##szTS: >[set szTStmp [file dirname $szTS]]<2"
- $wTSentry delete 0 end
- # puts "##szTS: >$szTS<3"
- $wTSentry insert end "$szTStmp/"
- } elseif {[string compare $dir "."] == 0} {
- set szTStmp "."
- $wTSentry delete 0 end
- $wTSentry insert end "$szTStmp/"
- catch {listRemoved} szErrMsg
- #puts "err: $szErrMsg"
- } else {
- $wTSentry insert end "$dir/"
- }
- set szTmp [$wTSentry get]
- # puts "####### TS: >[set szTmp [$wTSentry get]]<"
- #puts "######szTS: >$szTS<"
- catch {insertTests $wLR}
-
-# update idletasks
-# $wTSentry icursor end
-
- # puts "TS menu index: [$wTSmenu index end]"
- if {[$wTSmenu index end] != "none"} {
- $wTSmenu delete 0 end
- }
- if {[string compare $szTmp "./"] != 0} {
- $wTSmenu add command -label .. \
- -command "setTS .."
- }
- foreach F [lsort [glob -nocomplain ${szTmp}*]] {
- if [file isdirectory $F] {
- set szFile [file tail $F]
- $wTSmenu add command -label $szFile \
- -command "setTS $szFile"
- }
- }
- $wTSentry configure -state disabled
- trace variable szTS w setTSoverwrite
- # puts "TS menu end"
-}
-
-proc setEXPECT {dir} {
- global szExpect wEXPECTentry env
- # puts "Set env(EXPECT) to $dir"
-
- trace vdelete szExpect w setExpectOverwrite
- $wEXPECTentry configure -state normal
- $wEXPECTentry delete 0 end
- $wEXPECTentry insert end "$dir"
- set szExpect $dir
- $wEXPECTentry configure -state disabled
- trace variable szExpect w setExpectOverwrite
-}
-
-proc setTSoverwrite {name1 name2 ops} {
- global wTSmenu env
- catch {upvar #0 $name1 szTS} szErrMsg
-
- # puts "szTS >$szTS<"
- #setTS $szTS
-}
-
-proc setExpectOverwrite {name1 name2 ops} {
- #global wEmenu env
- catch {upvar #0 $name1 szExpect} szErrMsg
-}
-
-proc setExpect {name1 name2 ops} {
- global szExpect env
-
- if {[string length $szExpect] == 0} {
- catch {unset env(EXPECT)}
- } else {
- set env(EXPECT) $szExpect
- }
-}
-
-proc scrollSet {wScroll geoCmd offset size} {
- if {$offset != 0.0 || $size != 1.0} {
- eval $geoCmd; # make sure it is visible
- $wScroll set $offset $size
- } else {
- set manager [lindex $geoCmd 0]
- $manager forget $wScroll; # hide it
- }
-}
-
-proc scrolledListBox {w args} {
- frame $w -width 200
- grid rowconfigure $w 0 -weight 1
- grid columnconfigure $w 0 -weight 1
- listbox $w.list \
- -xscrollcommand [list scrollSet $w.xscroll \
- [list grid $w.xscroll -row 1 -column 0 -sticky we]] \
- -yscrollcommand [list scrollSet $w.yscroll \
- [list grid $w.yscroll -row 0 -column 1 -sticky ns]]
- eval {$w.list configure} $args
- scrollbar $w.xscroll -orient horizontal \
- -command [list $w.list xview]
- scrollbar $w.yscroll -orient vertical \
- -command [list $w.list yview]
- grid $w.list $w.yscroll -sticky news
- grid $w.xscroll -sticky news
- return $w.list
-}
-
-proc listTransferSelected {w wL} {
- global szTS wLR
- global lTestScripts lTestcaseIDs lArguments
-
- set i [lindex [$w curselection] 0]
- set szTest [$w get $i]
- set szTestScript [file join $szTS $szTest]
- # puts "selected: >$szTest<"
- set i [$wL index end]
- set lTestScripts($i) $szTestScript
- set lTestcaseIDs($i) ""
- set lArguments($i) [getArguments $szTestScript]
- # puts "set lArguments($i) $lArguments($i)"
- $wL insert end $szTestScript
- cmdUpdate lArguments {} u
-}
-
-proc listRemoved {} {
- global lTestScripts lTestcaseIDs lArguments
- global wLL szCommand
-
- if [catch {set jMax [$wLL index end]}] return
- for {set i $jMax} {$i > 0} {incr i -1} {
- catch {unset lTestScripts($i)}
- catch {unset lTestcaseIDs($i)}
- catch {unset lArguments($i)}
- $wLL delete $i
- }
- set szCommand ""
-}
-
-proc listTransferRemoved {w wL} {
- global lTestScripts lTestcaseIDs lArguments
-
- set jMax [$w index end]
- foreach i [lsort -integer -decreasing [$w curselection]] {
- # puts "i = $i; jMax = $jMax"
- if {$i + 1 < $jMax} {
- for {set j $i} {$j < $jMax - 1} {incr j} {
- set k [expr $j + 1]
- # puts "j = $j; k = $k"
- set lTestScripts($j) $lTestScripts($k)
- set lTestcaseIDs($j) $lTestcaseIDs($k)
- set lArguments($j) $lArguments($k)
- unset lTestScripts($k)
- unset lTestcaseIDs($k)
- unset lArguments($k)
- }
- } else {
- unset lTestScripts($i)
- unset lTestcaseIDs($i)
- unset lArguments($i)
- }
- cmdUpdate lArguments {} u
- $w delete $i
- }
-}
-
-proc listTransferData {w} {
- global iSelect szArguments wArguments szTestcase wTestcase
- global lTestcaseIDs lArguments
-
- if {! [catch {set iSelect [lindex [$w curselection] 0]}]} {
- if {[llength iSelect] == 1} {
- selection own -command [list lostSelection $w] $w
- # trace vdelete szArguments w cmdUpdate
- set szArguments $lArguments($iSelect)
- $wArguments configure -state normal
- # trace variable szArguments w cmdUpdate
- # trace vdelete szTestcase w cmdUpdate
- set szTestcase $lTestcaseIDs($iSelect)
- $wTestcase configure -state normal
- # trace variable szTestcase w cmdUpdate
- cmdUpdate lArguments {} u
- }
- }
-}
-
-proc lostSelection {w} {
- global wArguments wTestcase
- global iSelect szArguments szTestcase
-
- set i [$w index active]
- # $w selection clear $i
- # trace vdelete szArguments w cmdUpdate
- # trace vdelete szTestcase w cmdUpdate
- # set szArguments ""
- # set szTestcase ""
- # trace variable szArguments w cmdUpdate
- # trace variable szTestcase w cmdUpdate
- $wArguments configure -state disabled
- $wTestcase configure -state disabled
-}
-
-proc getArguments {ts} {
- if [file exists $ts] {
- set F [open $ts r]
- set bArg 0
- set szArgs ""
- while {[gets $F szLine] >= 0} {
- switch -regexp $szLine {
- "Mandatory Arguments:" -
- "Optional Arguments:" {
- set bArg 1
- continue
- }
- {^# *$} {
- set bArg 0
- continue
- }
- {^processTestScriptArgs} {
- break
- }
- default {
- if {$bArg} {
- set bRepl [regsub {^# *} $szLine {} szArg]
- if {! $bRepl} {
- set bRepl [regsub "^\[ \t ]*set *" \
- $szLine {} szArg]
- if {$bRepl} {
- regsub " " $szArg "=" szArg
- regsub -all {"} $szArg "" szArg
- regsub -all "\{" $szArg "" szArg
- regsub -all "\}" $szArg "" szArg
- }
- }
- if {$bRepl} {
- regsub { *; *#.*$} $szArg {} szArg
- if {[string first " " $szArg] >= 0} {
- append szArgs "\{[string trim $szArg]\} "
- } else {
- append szArgs "[string trim $szArg] "
- }
- }
- }
- }
- }
- }
- close $F
- return [string trim $szArgs]
- }
- return ""
-}
-
-proc insertTests {w} {
- global szTS
-
- $w delete 0 end
- foreach F [lsort [glob -nocomplain ${szTS}/*]] {
- if {! [file isdirectory $F]} {
- switch -regexp $F {
- {~$} -
- {[.]sql$} -
- {[.]err$} -
- {[.]log$} -
- {[.]out$} -
- {[.]txt$} -
- {tclIndex$} {
- # Nothing to be done, will not be added to list
- }
- default {
- set szFile [file tail $F]
- $w insert end "$szFile"
- }
- }
- }
- }
-}
+++ /dev/null
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Written by Per Bothner <bothner@cygnus.com>.
-# The master version of this file is at the FSF in /home/gd/gnu/lib.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 8/24/94.)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- alpha:OSF1:[VX]*:*)
- # After 1.2, OSF1 uses "V1.3" for uname -r.
- # After 4.x, OSF1 uses "X4.x" for uname -r.
- echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VX]//'`
- exit 0 ;;
- alpha:OSF1:*:*)
- # 1.2 uses "1.2" for uname -r.
- echo alpha-dec-osf${UNAME_RELEASE}
- exit 0 ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit 0 ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-cbm-sysv4
- exit 0;;
- amiga:NetBSD:*:*)
- echo m68k-cbm-netbsd${UNAME_RELEASE}
- exit 0 ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
- Pyramid*:OSx*:*:*)
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit 0 ;;
- sun4*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- i86pc:SunOS:5.*:*)
- echo i386-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- atari*:NetBSD:*:*)
- echo m68k-atari-netbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3*:NetBSD:*:*)
- echo m68k-sun-netbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:NetBSD:*:*)
- echo m68k-apple-netbsd${UNAME_RELEASE}
- exit 0 ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- mips:*:4*:UMIPS)
- echo mips-mips-riscos4sysv
- exit 0 ;;
- mips:*:5*:RISCos)
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit 0 ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit 0 ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit 0 ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit 0 ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`uname -p`
- if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88100 ] ; then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
- -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit 0 ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit 0 ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit 0 ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit 0 ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit 0 ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i[34]86:AIX:*:*)
- echo i386-ibm-aix
- exit 0 ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- sed 's/^ //' << EOF >dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- echo rs6000-ibm-aix3.2.5
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit 0 ;;
- *:AIX:*:4)
- if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=4.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit 0 ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit 0 ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit 0 ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit 0 ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit 0 ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit 0 ;;
- 9000/[3478]??:HP-UX:*:*)
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/7?? | 9000/8?[679] ) HP_ARCH=hppa1.1 ;;
- 9000/8?? ) HP_ARCH=hppa1.0 ;;
- esac
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
- 3050*:HI-UX:*:*)
- sed 's/^ //' << EOF >dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit 0 ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit 0 ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit 0 ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit 0 ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit 0 ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit 0 ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit 0 ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
- CRAY*X-MP:*:*:*)
- echo xmp-cray-unicos
- exit 0 ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE}
- exit 0 ;;
- CRAY*C90:*:*:*)
- echo c90-cray-unicos${UNAME_RELEASE}
- exit 0 ;;
- CRAY-2:*:*:*)
- echo cray2-cray-unicos
- exit 0 ;;
- hp3[0-9][05]:NetBSD:*:*)
- echo m68k-hp-netbsd${UNAME_RELEASE}
- exit 0 ;;
- i[34]86:BSD/386:*:* | *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- *:NetBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- i*:CYGWIN*:*)
- echo i386-unknown-cygwin32
- exit 0 ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin32
- exit 0 ;;
- *:GNU:*:*)
- echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
- *:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us.
- ld_help_string=`ld --help 2>&1`
- if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i[345]86"; then
- echo "${UNAME_MACHINE}-unknown-linux" ; exit 0
- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86linux"; then
- echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0
- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86coff"; then
- echo "${UNAME_MACHINE}-unknown-linuxcoff" ; exit 0
- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then
- echo "${UNAME_MACHINE}-unknown-linux" ; exit 0
- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then
- echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0
- elif test "${UNAME_MACHINE}" = "alpha" ; then
- echo alpha-unknown-linux ; exit 0
- else
- # Either a pre-BFD a.out linker (linuxoldld) or one that does not give us
- # useful --help. Gcc wants to distinguish between linuxoldld and linuxaout.
- test ! -d /usr/lib/ldscripts/. \
- && echo "${UNAME_MACHINE}-unknown-linuxoldld" && exit 0
- # Determine whether the default compiler is a.out or elf
- cat >dummy.c <<EOF
-main(argc, argv)
-int argc;
-char *argv[];
-{
-#ifdef __ELF__
- printf ("%s-unknown-linux\n", argv[1]);
-#else
- printf ("%s-unknown-linuxaout\n", argv[1]);
-#endif
- return 0;
-}
-EOF
- ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- fi ;;
-# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
-# are messed up and put the nodename in both sysname and nodename.
- i[34]86:DYNIX/ptx:4*:*)
- echo i386-sequent-sysv4
- exit 0 ;;
- i[34]86:*:4.*:* | i[34]86:SYSTEM_V:4.*:*)
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
- else
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- i[34]86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-unknown-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-unknown-sysv32
- fi
- exit 0 ;;
- Intel:Mach:3*:*)
- echo i386-unknown-mach3
- exit 0 ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit 0 ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit 0 ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
- M680[234]0:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0)
- uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3 && exit 0 ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
- m680[234]0:LynxOS:2.[23]*:*)
- echo m68k-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
- i[34]86:LynxOS:2.[23]*:*)
- echo i386-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- TSUNAMI:LynxOS:2.[23]*:*)
- echo sparc-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- rs6000:LynxOS:2.[23]*:*)
- echo rs6000-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit 0 ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-cat >dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- printf ("%s-next-nextstep%s\n", __ARCHITECTURE__, version==2 ? "2" : "3");
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-unknown-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-#if !defined (ultrix)
- printf ("vax-dec-bsd\n"); exit (0);
-#else
- printf ("vax-dec-ultrix\n"); exit (0);
-#endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
-rm -f dummy.c dummy
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit 0 ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- c34*)
- echo c34-convex-bsd
- exit 0 ;;
- c38*)
- echo c38-convex-bsd
- exit 0 ;;
- c4*)
- echo c4-convex-bsd
- exit 0 ;;
- esac
-fi
-
-#echo '(Unable to guess system type)' 1>&2
-
-exit 1
+++ /dev/null
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.7
-# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
-# Copyright (C) 1998 jotOmega dsc, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir="$ac_optarg" ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [same as prefix]
- --bindir=DIR user executables in DIR [EPREFIX/bin]
- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data in DIR
- [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data in DIR
- [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
- --includedir=DIR C header files in DIR [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
- --infodir=DIR info documentation in DIR [PREFIX/info]
- --mandir=DIR man documentation in DIR [PREFIX/man]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM
- run sed PROGRAM on installed program names
-EOF
- cat << EOF
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-EOF
- if test -n "$ac_help"; then
- echo "--enable and --with options recognized:$ac_help"
- fi
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir="$ac_optarg" ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir="$ac_optarg" ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir="$ac_optarg" ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir="$ac_optarg" ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir="$ac_optarg" ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir="$ac_optarg" ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir="$ac_optarg" ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir="$ac_optarg" ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.7"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=runtest.exp
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='echo $CPP $CPPFLAGS 1>&5;
-$CPP $CPPFLAGS'
-ac_compile='echo ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5;
-${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5'
-ac_link='echo ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5;
-${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5'
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="gcc"
- break
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_prog_CC" && ac_cv_prog_CC="cc"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if ${CC-cc} -E conftest.c 2>&5 | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gcc=yes
-else
- ac_cv_prog_gcc=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
- if test "${CFLAGS+set}" != set; then
- echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_gcc_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
- ac_cv_prog_gcc_g=yes
-else
- ac_cv_prog_gcc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6
- if test $ac_cv_prog_gcc_g = yes; then
- CFLAGS="-g -O"
- else
- CFLAGS="-O"
- fi
- fi
-else
- GCC=
- test "${CFLAGS+set}" = set || CFLAGS="-g"
-fi
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- # Account for people who put trailing slashes in PATH elements.
- case "$ac_dir/" in
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- for ac_prog in ginstall installbsd scoinst install; do
- if test -f $ac_dir/$ac_prog; then
- if test $ac_prog = install &&
- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- # OSF/1 installbsd also uses dspmsg, but is usable.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
- IFS="$ac_save_ifs"
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL="$ac_cv_path_install"
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL="$ac_install_sh"
- fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-subdirs="doc example testsuite"
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
- >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%-D\1=\2%g
-s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.7"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@CC@%$CC%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@subdirs@%$subdirs%g
-
-CEOF
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust relative srcdir, etc. for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
-fi; done
-rm -f conftest.subs
-
-
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
-if test "$no_recursion" != yes; then
-
- # Remove --cache-file and --srcdir arguments so they do not pile up.
- ac_sub_configure_args=
- ac_prev=
- for ac_arg in $ac_configure_args; do
- if test -n "$ac_prev"; then
- ac_prev=
- continue
- fi
- case "$ac_arg" in
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- ;;
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- ;;
- *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
- esac
- done
-
- for ac_config_dir in doc example testsuite; do
-
- # Do not complain, so a configure script can configure whichever
- # parts of a large source tree are present.
- if test ! -d $srcdir/$ac_config_dir; then
- continue
- fi
-
- echo configuring in $ac_config_dir
-
- case "$srcdir" in
- .) ;;
- *)
- if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :;
- else
- { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; }
- fi
- ;;
- esac
-
- ac_popdir=`pwd`
- cd $ac_config_dir
-
- case "$srcdir" in
- .) # No --srcdir option. We are building in place.
- ac_sub_srcdir=$srcdir ;;
- /*) # Absolute path.
- ac_sub_srcdir=$srcdir/$ac_config_dir ;;
- *) # Relative path.
- ac_sub_srcdir=../$srcdir/$ac_config_dir ;;
- esac
-
- # Check for guested configure; otherwise get Cygnus style configure.
- if test -f $ac_sub_srcdir/configure; then
- ac_sub_configure=$ac_sub_srcdir/configure
- elif test -f $ac_sub_srcdir/configure.in; then
- ac_sub_configure=$ac_configure
- else
- echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2
- ac_sub_configure=
- fi
-
- # The recursion is here.
- if test -n "$ac_sub_configure"; then
-
- # Make the cache file name correct relative to the subdirectory.
- # A "../" for each directory in /$ac_config_dir.
- ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
- case "$cache_file" in
- /*) ac_sub_cache_file=$cache_file ;;
- *) # Relative path.
- ac_sub_cache_file="$ac_dots$cache_file" ;;
- esac
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
-
- echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir"
- # The eval makes quoting arguments work.
- if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir
- then :
- else
- { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; }
- fi
- fi
-
- cd $ac_popdir
- done
-fi
-
+++ /dev/null
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(runtest.exp)
-
-AC_PROG_CC
-AC_PROG_INSTALL
-
-AC_CONFIG_SUBDIRS(doc example testsuite)
-
-AC_OUTPUT(Makefile)
+++ /dev/null
-total 266
--rw-r--r-- 1 janw users 5396 Sep 19 21:10 Makefile.in
--rw-r--r-- 1 janw users 8202 Sep 19 21:18 README.bluegnu
--rw-r--r-- 1 janw users 12903 Aug 3 1998 README.dejagnu
--rw-r--r-- 1 janw users 284 Aug 3 1998 TODO.dejagnu
--rw-r--r-- 1 janw users 19640 Aug 3 1998 aclocal.m4
--rwxr-xr-x 1 janw users 3323 Sep 19 15:37 bluegnu
--rwxr-xr-x 1 janw users 43 Feb 11 1999 bluegnutk
--rw-r--r-- 1 janw users 8456 Sep 17 18:17 bluegnutk.itcl
--rw-r--r-- 1 janw users 839 Feb 11 1999 bluegnutk.rc
--rw-r--r-- 1 janw users 10554 Sep 17 18:17 bluegnutkUtils.itcl
--rwxr-xr-- 1 janw users 17007 Aug 3 1998 config.guess
--rwxr-xr-x 1 janw users 32591 Aug 3 1998 configure
--rw-r--r-- 1 janw users 179 Aug 3 1998 configure.in
--rw-r--r-- 1 janw users 0 Sep 19 21:55 contents
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 contrib
--rwxr-xr-x 1 janw users 2204 Aug 3 1998 dejagnu
-drwxr-xr-x 2 janw users 1024 Sep 19 21:55 doc
-drwxr-xr-x 3 janw users 1024 Sep 19 21:55 example
--rwxr-xr-x 1 janw users 4772 Aug 3 1998 install-sh
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 lib
--rwxr-xr-x 1 janw users 650 Aug 3 1998 mkinstalldirs
--rwxr-xr-- 1 janw users 2102 Aug 3 1998 runtest
--rwxr-xr-- 1 janw users 33061 Aug 3 1998 runtest.exp
--rw-r--r-- 1 janw users 7843 Aug 3 1998 site.tmpl
--rw-r--r-- 1 janw users 77247 Aug 3 1998 tcl-mode.el
-drwxr-xr-x 4 janw users 1024 Sep 19 21:15 testsets
-drwxr-xr-x 7 janw users 1024 Sep 19 21:55 testsuite
-
-contrib:
-total 45
--rw-r--r-- 1 janw users 868 Aug 3 1998 README
--rwxr-xr-- 1 janw users 1500 Aug 3 1998 test-g++
--rwxr-xr-- 1 janw users 8256 Aug 3 1998 test-tool
--rwxr-xr-x 1 janw users 32055 Aug 3 1998 testit
-
-doc:
-total 1867
--rw-r--r-- 1 janw users 4796 Sep 19 21:10 Makefile.in
--rw-r--r-- 1 janw users 7917 Sep 19 21:10 README.tex
--rw-r--r-- 1 janw users 10840 Sep 19 21:16 READMEdvi.dvi
--rw-r--r-- 1 janw users 52 Sep 19 15:37 READMEdvi.tex
--rw-r--r-- 1 janw users 23 Sep 19 21:10 READMEdvi.title
--rw-r--r-- 1 janw users 9344 Sep 19 21:16 READMEtxt.dvi
--rw-r--r-- 1 janw users 52 Sep 19 15:37 READMEtxt.tex
--rwxr-xr-x 1 janw users 22137 Aug 3 1998 configure
--rw-r--r-- 1 janw users 125 Aug 3 1998 configure.in
--rw-r--r-- 1 janw users 3289 Sep 18 21:42 dejagnu.1
--rw-r--r-- 1 janw users 263684 Sep 19 21:52 dejagnu.dvi
--rw-r--r-- 1 janw users 2041 Sep 19 21:52 dejagnu.info
--rw-r--r-- 1 janw users 49656 Sep 19 21:52 dejagnu.info-1
--rw-r--r-- 1 janw users 50053 Sep 19 21:52 dejagnu.info-2
--rw-r--r-- 1 janw users 47866 Sep 19 21:52 dejagnu.info-3
--rw-r--r-- 1 janw users 651210 Sep 19 21:52 dejagnu.pdf
--rw-r--r-- 1 janw users 438510 Sep 19 21:52 dejagnu.ps
--rw-r--r-- 1 janw users 139117 Aug 3 1998 dejagnu.texi
--rw-r--r-- 1 janw users 11008 Sep 19 21:52 notice.html
--rw-r--r-- 1 janw users 78227 Sep 19 21:20 notice.pdf
--rw-r--r-- 1 janw users 95621 Sep 19 21:20 notice.ps
-
-example:
-total 29
--rw-r--r-- 1 janw users 2297 Feb 11 1999 Makefile.in
-drwxr-xr-x 3 janw users 1024 Sep 19 21:55 calc
--rwxr-xr-x 1 janw users 23014 Aug 3 1998 configure
--rw-r--r-- 1 janw users 159 Aug 3 1998 configure.in
-
-example/calc:
-total 37
--rw-r--r-- 1 janw users 3336 Feb 11 1999 Makefile.in
--rw-r--r-- 1 janw users 416 Aug 3 1998 calc.1
--rw-r--r-- 1 janw users 1380 Aug 3 1998 calc.c
--rw-r--r-- 1 janw users 225 Aug 3 1998 calc.h.in
--rwxr-xr-x 1 janw users 25611 Aug 3 1998 configure
--rw-r--r-- 1 janw users 363 Aug 3 1998 configure.in
-drwxr-xr-x 4 janw users 1024 Sep 19 21:15 testsuite
-
-example/calc/testsuite:
-total 2
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 calc.test
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 config
-
-example/calc/testsuite/calc.test:
-total 2
--rw-r--r-- 1 janw users 1151 Aug 3 1998 calc.exp
-
-example/calc/testsuite/config:
-total 1
--rw-r--r-- 1 janw users 825 Aug 3 1998 unix.exp
-
-lib:
-total 274
--rw-r--r-- 1 janw users 2776 Sep 18 19:53 BlueGnu_target.itcl
--rw-r--r-- 1 janw users 2183 Sep 18 19:53 Default_target.itcl
--rw-r--r-- 1 janw users 5795 Sep 18 19:53 Types.itcl
--rw-r--r-- 1 janw users 561 Sep 17 18:18 bluegnu.itcl
--rw-r--r-- 1 janw users 2959 Aug 3 1998 bug.exp
--rw-r--r-- 1 janw users 5353 Aug 3 1998 debugger.exp
--rw-r--r-- 1 janw users 1890 Aug 3 1998 dejagnu.itcl
--rw-r--r-- 1 janw users 31724 Aug 3 1998 dejagnu.tcl
--rw-r--r-- 1 janw users 27666 Aug 3 1998 dg.exp
--rw-r--r-- 1 janw users 340 Aug 3 1998 foo.itcl
--rw-r--r-- 1 janw users 15692 Aug 3 1998 framework.exp
--rw-r--r-- 1 janw users 6926 Aug 3 1998 libgloss.exp
--rw-r--r-- 1 janw users 1499 Sep 17 18:18 nonexpect.itcl
--rw-r--r-- 1 janw users 22986 Aug 3 1998 remote.exp
--rw-r--r-- 1 janw users 1069 Aug 3 1998 serverUtils.itcl
--rw-r--r-- 1 janw users 14175 Aug 3 1998 target.exp
--rw-r--r-- 1 janw users 537 Sep 17 18:18 tclIndex
--rw-r--r-- 1 janw users 9084 Sep 17 18:18 testSessionApplication.itcl
--rw-r--r-- 1 janw users 34819 Sep 17 18:18 testSessionClasses.itcl
--rw-r--r-- 1 janw users 36461 Sep 17 18:18 testSessionFramework.itcl
--rw-r--r-- 1 janw users 476 Sep 17 18:18 testSessionUtils.itcl
--rw-r--r-- 1 janw users 5357 Aug 3 1998 udi.exp
--rw-r--r-- 1 janw users 2923 Aug 3 1998 util-defs.exp
--rw-r--r-- 1 janw users 11309 Aug 3 1998 utils.exp
--rw-r--r-- 1 janw users 7377 Aug 3 1998 vrtx.exp
--rw-r--r-- 1 janw users 7603 Aug 3 1998 vxworks.exp
-
-testsets:
-total 3
-drwxr-xr-x 4 janw users 1024 Sep 19 21:15 BlueGnu
-drwxr-xr-x 3 janw users 1024 Sep 19 21:15 examples
--rw-r--r-- 1 janw users 190 Sep 18 19:53 tclIndex
-
-testsets/BlueGnu:
-total 29
--rw-r--r-- 1 janw users 257 Sep 18 19:53 appendQueue.itcl
--rw-r--r-- 1 janw users 4325 Sep 18 19:53 clone_output.itcl
--rw-r--r-- 1 janw users 1364 Sep 18 19:53 locateFile.itcl
--rw-r--r-- 1 janw users 918 Sep 18 19:53 namespaceVariables.itcl
--rw-r--r-- 1 janw users 152 Sep 18 19:53 prependQueue.itcl
--rw-r--r-- 1 janw users 686 Sep 18 19:53 runtest.itcl
--rw-r--r-- 1 janw users 659 Sep 18 19:53 testNaming.itcl
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 ts001
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 ts002
--rw-r--r-- 1 janw users 968 Sep 18 19:53 types.itcl
--rw-r--r-- 1 janw users 13282 Sep 18 19:53 verbose.itcl
-
-testsets/BlueGnu/ts001:
-total 1
--rw-r--r-- 1 janw users 20 Sep 18 19:53 A.itcl
-
-testsets/BlueGnu/ts002:
-total 1
--rw-r--r-- 1 janw users 20 Sep 18 19:53 A.itcl
-
-testsets/examples:
-total 7
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 lib
--rw-r--r-- 1 janw users 54 Sep 18 19:53 tc001
--rw-r--r-- 1 janw users 73 Sep 18 19:53 tc002
--rw-r--r-- 1 janw users 97 Sep 18 19:53 ts_001
--rw-r--r-- 1 janw users 181 Sep 18 19:53 ts_002
--rw-r--r-- 1 janw users 76 Sep 18 19:53 ts_003
--rw-r--r-- 1 janw users 228 Sep 18 19:53 versionTcl.itcl
-
-testsets/examples/lib:
-total 2
--rw-r--r-- 1 janw users 1358 Sep 18 19:53 benchmark.itcl
-
-testsuite:
-total 45
--rw-r--r-- 1 janw users 3155 Sep 18 20:39 Makefile.in
-drwxr-xr-x 3 janw users 1024 Sep 19 21:15 T
-drwxr-xr-x 3 janw users 1024 Sep 19 21:15 bluegnu.all
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 config
--rwxr-xr-x 1 janw users 34637 Aug 3 1998 configure
--rw-r--r-- 1 janw users 166 Aug 3 1998 configure.in
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 lib
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 tools
-
-testsuite/T:
-total 10
--rw-r--r-- 1 janw users 232 Aug 3 1998 env.exp
--rw-r--r-- 1 janw users 1355 Aug 3 1998 env.iexp
--rw-r--r-- 1 janw users 129 Aug 3 1998 foo.exp
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 subT
--rw-r--r-- 1 janw users 132 Aug 3 1998 test_000.exp
--rw-r--r-- 1 janw users 484 Aug 3 1998 test_001.exp
--rw-r--r-- 1 janw users 453 Aug 3 1998 test_002.exp
--rw-r--r-- 1 janw users 55 Aug 3 1998 test_003.exp
--rw-r--r-- 1 janw users 34 Aug 3 1998 test_004.exp
-
-testsuite/T/subT:
-total 1
--rw-r--r-- 1 janw users 391 Aug 3 1998 test_002.exp
-
-testsuite/bluegnu.all:
-total 32
--rw-r--r-- 1 janw users 2431 Aug 3 1998 clone_output.test
--rw-r--r-- 1 janw users 2908 Aug 3 1998 config.test
--rw-r--r-- 1 janw users 1893 Aug 3 1998 default_procs.tcl
--rw-r--r-- 1 janw users 1580 Aug 3 1998 libs.exp
--rw-r--r-- 1 janw users 3486 Aug 3 1998 options.exp
--rw-r--r-- 1 janw users 4938 Aug 3 1998 remote.test
--rw-r--r-- 1 janw users 407 Aug 3 1998 stats-sub.exp
--rw-r--r-- 1 janw users 1626 Aug 3 1998 stats.exp
--rw-r--r-- 1 janw users 6001 Aug 3 1998 target.test
-drwxr-xr-x 4 janw users 1024 Sep 19 21:15 topdir
--rw-r--r-- 1 janw users 2750 Aug 3 1998 utils.test
-
-testsuite/bluegnu.all/topdir:
-total 2
-drwxr-xr-x 3 janw users 1024 Sep 19 21:15 subdir1
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 subdir2
-
-testsuite/bluegnu.all/topdir/subdir1:
-total 3
--rw-r--r-- 1 janw users 31 Aug 3 1998 subfile1
--rw-r--r-- 1 janw users 32 Aug 3 1998 subfile2
-drwxr-xr-x 2 janw users 1024 Sep 19 21:15 subsubdir1
-
-testsuite/bluegnu.all/topdir/subdir1/subsubdir1:
-total 1
--rw-r--r-- 1 janw users 32 Aug 3 1998 subsubfile1
-
-testsuite/bluegnu.all/topdir/subdir2:
-total 1
--rw-r--r-- 1 janw users 32 Aug 3 1998 subfile2
-
-testsuite/config:
-total 2
--rw-r--r-- 1 janw users 2008 Aug 3 1998 default.exp
-
-testsuite/lib:
-total 5
--rw-r--r-- 1 janw users 5114 Aug 3 1998 libsup.exp
-
-testsuite/tools:
-total 1
--rw-r--r-- 1 janw users 609 Aug 3 1998 env.exp
+++ /dev/null
-These are "user" contributed scripts that automate testing. These all
-depend on using "make check", so they are included here as an aid to
-helping others automate their own testing. All of these script do
-report filtering on the output from DejaGnu. test-tool and test-g++
-are basically the same script. test-target is the script I use for our
-quarterly release and it is the most sophisticated. It still uses
-"make check" (a make target that start runtest) to produce the
-results, but tests our entire tool chain for native and crosses. It
-also produces a short summary report that gets emailed, as well as
-summary reports. It does regression analysis using the previous test
-run. testit is a very crude and simple Tk GUI for accessing all the
-testing results. Hope these are helpful to anyone, I'd like to collect
-more from the net as they get developed.
-
- - rob -
-
+++ /dev/null
-#!/bin/sh
-
-# Default DEVOSRCDIR
-if [ "$DEVOSRCDIR" = "" ]; then
- DEVOSRCDIR=$HOME/devo ; export DEVOSRCDIR
-fi
-
-# Check DEVOSRCDIR
-if [ ! -d "$DEVOSRCDIR" ]; then
- echo "$0: no directory $DEVOSRCDIR" >&2
- exit 2
-fi
-
-# Default DEVOBINDIR
-if [ "$DEVOBINDIR" = "" ]; then
- CPU=`$DEVOSRCDIR/config.guess`
- if [ $? != 0 ]; then
- echo "$0: cannot run config.guess" >&2
- exit 2
- fi
- DEVOBINDIR=$HOME/$CPU ; export DEVOBINDIR
-fi
-
-# Check DEVOBINDIR
-if [ ! -d "$DEVOBINDIR" ]; then
- echo "$0: no directory $DEVOBINDIR" >&2
- exit 2
-fi
-
-# Default LOGDIR
-if [ "$LOGDIR" = "" ]; then
- LOGDIR=$HOME/logs ; export LOGDIR
-fi
-
-# Check LOGDIR
-if [ ! -d "$LOGDIR" ]; then
- echo "$0: no directory $LOGDIR" >&2
- exit 2
-fi
-
-cd $LOGDIR || exit 2
-
-sum=g++-`date '+%y%m%d'`
-
-$DEVOSRCDIR/dejagnu/contrib/test-tool g++ > $sum 2>&1
-status=$?
-
-cd $DEVOBINDIR/libg++
-make check >/tmp/clgpp$$ 2>&1
-if [ $? != 0 ]; then
- cd $LOGDIR
- echo "" >> $sum
- echo "libg++ fails to make check:" >> $sum
- tail -20 /tmp/clgpp$$ >> $sum
- if [ $status = 0 ]; then
- status=1
- fi
-fi
-
-cd $DEVOBINDIR/libio
-make check >/tmp/clgpp$$ 2>&1
-if [ $? != 0 ]; then
- cd $LOGDIR
- echo "" >> $sum
- echo "libio fails to make check:" >> $sum
- tail -20 /tmp/clgpp$$ >> $sum
- if [ $status = 0 ]; then
- status=1
- fi
-fi
-
-cd $DEVOBINDIR/libstdc++
-make check >/tmp/clgpp$$ 2>&1
-if [ $? != 0 ]; then
- cd $LOGDIR
- echo "" >> $sum
- echo "libstdc++ fails to make check:" >> $sum
- tail -20 /tmp/clgpp$$ >> $sum
- if [ $status = 0 ]; then
- status=1
- fi
-fi
-
-exit $status
+++ /dev/null
-#!/bin/sh
-# This script automatically test the given tool with the tool's test cases,
-# reporting anything of interest.
-
-# exits with 1 if there is nothing of interest
-# exits with 0 if there is something interesting
-# exits with 2 if an error occurred
-
-# Syntax: test-tool [-expectedpass] [-keepoutput] [-noupdate] g++|gcc|gdb|...
-#
-# -expectedpass: Turn XFAIL into "pass", XPASS into "fail".
-# The default is XFAIL->fail, XPASS->pass.
-# -keepoutput: Save "make check" output in test-$tool.log.
-# -noupdate: Don't update log files.
-
-# Limitations, don't run this multiple times in one day, unless the -noupdate
-# flag is given.
-
-# Written by Mike Stump <mrs@cygnus.com>
-
-expectedpass=no
-keepoutput=no
-update=yes
-tool=""
-
-for arg in $*
-do
- case $arg in
- -expectedpass) expectedpass=yes ;;
- -keepoutput) keepoutput=yes ;;
- -noupdate) update=no ;;
- -*)
- echo "Usage: [-expectedpass] [-keepoutput] [-noupdate] tool_name" >&2
- exit 2
- ;;
- *)
- if [ "$tool" != "" ]; then
- echo "Usage: [-expectedpass] [-keepoutput] [-noupdate] tool_name" >&2
- exit 2
- fi
- tool=$arg
- ;;
- esac
-done
-
-# FIXME: It sure would be nice if `testdir' wasn't necessary. :-(
-
-if [ "$tool" = g++ ]; then
- devoname=gcc
- checktarget=check-g++
- testdir=.
-elif [ "$tool" = gcc ]; then
- devoname=gcc
- checktarget=check-gcc
- testdir=.
-elif [ "$tool" = gdb ]; then
- devoname=gdb
- checktarget=check
- testdir=testsuite
-elif [ "$tool" = gas ]; then
- devoname=gas
- checktarget=check
- testdir=testsuite
-elif [ "$tool" = gld -o "$tool" = ld ]; then
- devoname=ld
- checktarget=check
- testdir=.
-elif [ "$tool" = binutils ]; then
- devoname=binutils
- checktarget=check
- testdir=.
-else
- echo "Only gcc, g++, gdb, gas, gld, and binutils supported." >&2
- exit 2
-fi
-
-# Default DEVOSRCDIR
-if [ "$DEVOSRCDIR" = "" ]; then
- DEVOSRCDIR=$HOME/devo ; export DEVOSRCDIR
-fi
-
-# Check DEVOSRCDIR
-if [ ! -d "$DEVOSRCDIR" ]; then
- echo "$0: no directory $DEVOSRCDIR" >&2
- exit 2
-fi
-
-# Default DEVOBINDIR
-if [ "$DEVOBINDIR" = "" ]; then
- CPU=`$DEVOSRCDIR/config.guess`
- if [ $? != 0 ]; then
- echo "$0: cannot run config.guess" >&2
- exit 2
- fi
- DEVOBINDIR=$HOME/$CPU ; export DEVOBINDIR
-fi
-
-# Check DEVOBINDIR
-if [ ! -d "$DEVOBINDIR" ]; then
- echo "$0: no directory $DEVOBINDIR" >&2
- exit 2
-fi
-
-# Specialize DEVOSRCDIR
-if [ -d "$DEVOSRCDIR/$devoname" ]; then
- DEVOSRCDIR=$DEVOSRCDIR/$devoname
-else
- echo "$0: Cannot find source directory." >&2
- exit 2
-fi
-
-# Default LOGDIR
-if [ "$LOGDIR" = "" ]; then
- LOGDIR=$HOME/logs ; export LOGDIR
-fi
-
-# Check LOGDIR
-if [ ! -d "$LOGDIR" ]; then
- echo "$0: no directory $LOGDIR" >&2
- exit 2
-fi
-
-# Specialize DEVOBINDIR
-if [ -d "$DEVOBINDIR/$devoname" ]; then
- DEVOBINDIR=$DEVOBINDIR/$devoname
-else
- echo "$0: Cannot find binary directory." >&2
- exit 2
-fi
-
-# Binary directory
-cd $DEVOBINDIR || exit 2
-
-TMPDIR=${TMPDIR-/tmp}
-
-tmp=$TMPDIR/$tool-testing.$$a
-tmp1=$TMPDIR/$tool-testing.$$b
-tmp2=$TMPDIR/$tool-testing.$$c
-now_s=$TMPDIR/$tool-testing.$$d
-before_s=$TMPDIR/$tool-testing.$$e
-
-if [ "$keepoutput" = yes ]; then
- rm -f test-$tool.log
- make RUNTESTFLAGS="-v -v" $checktarget >test-$tool.log 2>&1
-else
- make RUNTESTFLAGS="-v -v" $checktarget >/dev/null 2>&1
-fi
-
-# Check for DEJAGNU errors that prevented any output at all.
-if [ ! -f $testdir/$tool.sum ]; then
- echo "Tests didn't run, probably because of a framework error."
- if [ "$keepoutput" = yes ]; then
- echo
- tail -20 test-$tool.log
- else
- echo "Unable to determine why. Rerun with -keepoutput."
- fi
- exit 2
-fi
-
-# Canonicalize XFAIL and XPASS so the rest of the script can ignore them.
-if [ "$expectedpass" = yes ]; then
- sed 's/^XFAIL/PASS(XFAIL)/; s/^XPASS/FAIL(XPASS)/' <$testdir/$tool.sum >$testdir/$tool.1.sum || exit 2
-else
- sed 's/^XFAIL/FAIL(XFAIL)/; s/^XPASS/PASS(XPASS)/' <$testdir/$tool.sum >$testdir/$tool.1.sum || exit 2
-fi
-mv $testdir/$tool.1.sum $testdir/$tool.sum
-
-todayname=`date '+%y%m%d'`
-if [ "$update" = no ]; then
- now=$testdir/$tool.sum
- before=`ls $LOGDIR/$tool-??????.sum | tail -1`
-else
- mv -f $testdir/$tool.sum $LOGDIR/$tool-$todayname.sum || exit 2
- mv -f $testdir/$tool.log $LOGDIR/$tool-$todayname.log || exit 2
-
- now=`ls $LOGDIR/$tool-??????.sum | tail -1`
- before=`ls $LOGDIR/$tool-??????.sum | tail -2 | sed 1q`
-fi
-trap "rm -f $tmp $tmp1 $tmp2 $now_s $before_s" 0 1 2 3 5 9 13 15
-
-if [ "$before" = "" ]; then
- echo "Need previous summary to compare against." >&2
- exit 2
-fi
-
-# Say where the logs are stored so they appear in email messages.
-echo
-echo "Log files: $LOGDIR/$tool-$todayname.*"
-echo
-
-grep '^[PFU][A-Z()]*:' | sort -t ':' +1 "$now" > "$now_s"
-grep '^[PFU][A-Z()]*:' | sort -t ':' +1 "$before" > "$before_s"
-
-grep '^FAIL:' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1
-grep '^PASS' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -12 $tmp1 - >$tmp2
-
-grep -s . $tmp2 >/dev/null
-if [ $? = 0 ]; then
- echo "Tests that now unexpectedly fail, but worked before:"
- echo
- cat $tmp2
- showchangelog=1
- echo
-fi
-
-grep '^PASS' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1
-grep '^FAIL' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -12 $tmp1 - >$tmp2
-
-grep -s . $tmp2 >/dev/null
-if [ $? = 0 ]; then
- echo "Tests that now work, but didn't before:"
- echo
- cat $tmp2
- echo
-fi
-
-grep '^FAIL:' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1
-grep '^[PFU][A-Z()]*:' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -23 $tmp1 - >$tmp2
-
-grep -s . $tmp2 >/dev/null
-if [ $? = 0 ]; then
- echo "New tests that unexpectedly FAIL:"
- echo
- cat $tmp2
- echo
-fi
-
-grep '^PASS' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1
-grep '^[PFU][A-Z()]*:' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -23 $tmp1 - >$tmp2
-
-grep -s . $tmp2 >/dev/null
-if [ $? = 0 ]; then
- echo "New tests that PASS:"
- echo
- cat $tmp2
- echo
-fi
-
-grep '^[PFU][A-Z()]*:' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1
-grep '^PASS' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -13 $tmp1 - >$tmp2
-
-grep -s . $tmp2 >/dev/null
-if [ $? = 0 ]; then
- echo "Old tests that passed, that have disappeared: (Eeek!)"
- echo
- cat $tmp2
- echo
-fi
-
-grep '^[PFU][A-Z()]*:' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1
-grep '^FAIL' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -13 $tmp1 - >$tmp2
-
-grep -s . $tmp2 >/dev/null
-if [ $? = 0 ]; then
- echo "Old tests that failed, that have disappeared: (Eeek!)"
- echo
- cat $tmp2
- echo
-fi
-
-grep '^FAIL:' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1
-grep '^FAIL' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -12 $tmp1 - >$tmp2
-
-grep -s . $tmp2 >/dev/null
-if [ $? = 0 ]; then
- echo "Tests that still don't work:"
- echo
- cat $tmp2
- echo
-fi
-
-egrep '^(ERROR|WARNING):' "$now" >$tmp1
-
-if grep -s . $tmp1 > /dev/null; then
- echo "Errors and warnings:"
- echo
- cat $tmp1
- echo
-fi
-
-if [ "$tool" = g++ ]; then
- if [ -f $DEVOBINDIR/libio/run-make-check ]; then
- cd $DEVOBINDIR/libio
- make check >$TMPDIR/clgpp$$ 2>&1
- if [ $? != 0 ]; then
- echo
- echo "libio fails to make check:"
- tail -20 $TMPDIR/clgpp$$
- fi
- fi
- if [ -f $DEVOBINDIR/libstdc++/run-make-check ]; then
- cd $DEVOBINDIR/libstdc++
- make check >$TMPDIR/clgpp$$ 2>&1
- if [ $? != 0 ]; then
- echo
- echo "libstdc++ fails to make check:"
- tail -20 $TMPDIR/clgpp$$
- fi
- fi
- if [ -f $DEVOBINDIR/libg++/run-make-check ]; then
- cd $DEVOBINDIR/libg++
- make check >$TMPDIR/clgpp$$ 2>&1
- if [ $? != 0 ]; then
- echo
- echo "libg++ fails to make check:"
- tail -20 $TMPDIR/clgpp$$
- fi
- fi
- rm -f $TMPDIR/clgpp$$
- cd $DEVOBINDIR
-fi
-
-if [ "$devoname" != "" ]; then
- if [ "$showchangelog" = 1 ]; then
- echo "Here is what's new in the ChangeLog:"
- echo
- diff -c $LOGDIR/$devoname.ChangeLog $DEVOSRCDIR/ChangeLog
- echo
- if [ "$tool" = g++ ]; then
- echo "Here is what's new in the cp/ChangeLog:"
- echo
- diff -c $LOGDIR/g++.ChangeLog $DEVOSRCDIR/cp/ChangeLog
- fi
- echo
- fi
- if [ "$update" != no ]; then
- # save the old ChangeLog as a reference for next time
- rm -f $LOGDIR/$devoname.ChangeLog.BAK
- mv $LOGDIR/$devoname.ChangeLog $LOGDIR/$devoname.ChangeLog.BAK 2>/dev/null
- cp -p $DEVOSRCDIR/ChangeLog $LOGDIR/$devoname.ChangeLog
- if [ "$tool" = g++ ]; then
- rm -f $LOGDIR/g++.ChangeLog.BAK
- mv $LOGDIR/g++.ChangeLog $LOGDIR/g++.ChangeLog.BAK 2>/dev/null
- cp -p $DEVOSRCDIR/cp/ChangeLog $LOGDIR/g++.ChangeLog
- fi
- fi
-fi
-
-diff $before $now | grep -s . >/dev/null
-if [ $? = 0 ]; then
- echo "Details:"
- echo
- diff $before $now
- echo
-fi
+++ /dev/null
-#!/usr/latest/bin/wish -f
-# Program: testit
-# Tcl version: 7.2 (Tcl/Tk/XF)
-# Tk version: 3.5
-# XF version: 2.2
-#
-
-
-# procedure to show window .
-proc ShowWindow. {args} {# xf ignore me 7
-
- # Window manager configurations
- global tkVersion
- wm positionfrom . user
- wm sizefrom . ""
- wm maxsize . 1152 900
- wm title . {xf}
-
- # bindings
- bind . <Button-3> {MenuPopupPost .frame0.menubutton3.m.menu4 %X %Y}
- bind . <ButtonRelease-3> {MenuPopupRelease .frame0.menubutton3.m.menu4 %W}
-
- # build widget .frame0
- frame .frame0 \
- -background {white} \
- -borderwidth {2} \
- -relief {raised}
-
- # build widget .frame0.menubutton0
- menubutton .frame0.menubutton0 \
- -background {white} \
- -foreground {black} \
- -menu {.frame0.menubutton0.m} \
- -text {Summaries}
-
- # build widget .frame0.menubutton0.m
- menu .frame0.menubutton0.m \
- -background {white} \
- -foreground {black}
- .frame0.menubutton0.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/gcc.sum
-
-} \
- -label {Gcc}
- .frame0.menubutton0.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/g++.sum
-
-} \
- -label {G++}
- .frame0.menubutton0.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/gdb.sum
-
-} \
- -label {Gdb}
- .frame0.menubutton0.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/gas.sum
-
-} \
- -label {Gas}
- .frame0.menubutton0.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/binutils.sum
-
-} \
- -label {Binutils}
- .frame0.menubutton0.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/runtest.sum
-
-} \
- -label {Runtest}
- .frame0.menubutton0.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/tcl.sum
-
-} \
- -label {Tcl}
- .frame0.menubutton0.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/expect.sum
-
-} \
- -label {Expect}
- .frame0.menubutton0.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/libg++.sum
-
-} \
- -label {Libg++}
- .frame0.menubutton0.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/libio.sum
-
-} \
- -label {Libio}
- .frame0.menubutton0.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/libm.sum
-
-} \
- -label {Libm}
-
- # build widget .frame0.menubutton1
- menubutton .frame0.menubutton1 \
- -background {white} \
- -foreground {black} \
- -menu {.frame0.menubutton1.m} \
- -text {Misc}
-
- # build widget .frame0.menubutton1.m
- menu .frame0.menubutton1.m \
- -background {white} \
- -foreground {black}
- .frame0.menubutton1.m add command \
- -command {EndSrc
-destroy .} \
- -label {Exit}
- .frame0.menubutton1.m add command \
- -command {.frame6.frame.text2 delete 0.0 end} \
- -label {Clear window}
- .frame0.menubutton1.m add command \
- -command {dialogbox} \
- -label {Editor}
- .frame0.menubutton1.m add command \
- -command {.frame6.frame.text2 insert 0.0 "Top of tree is $testbase\n"} \
- -label {Show filename}
-
- # build widget .frame0.menubutton3
- menubutton .frame0.menubutton3 \
- -background {white} \
- -foreground {black} \
- -menu {.frame0.menubutton3.m} \
- -text {Host}
-
- # build widget .frame0.menubutton3.m
- menu .frame0.menubutton3.m \
- -background {white} \
- -foreground {black}
- .frame0.menubutton3.m add command \
- -command {set host "alpha-dec-osf1.3"} \
- -label {alpha-dec-osf1.3}
- .frame0.menubutton3.m add command \
- -command {set host "hppa1.1-hp-hpux"} \
- -label {hppa1.1-hp-hpux}
- .frame0.menubutton3.m add command \
- -command {set host "i386-unknown-sysv4.2"} \
- -label {i386-unknown-sysv4.2}
- .frame0.menubutton3.m add command \
- -command {set host "m68k-hp-hpux"} \
- -label {m68k-hp-hpux}
- .frame0.menubutton3.m add command \
- -command {set host "m68k-sun-sunos4.1.1"} \
- -label {m68k-sun-sunos4.1.1}
- .frame0.menubutton3.m add command \
- -command {set host "mips-dec-ultrix4.2"} \
- -label {mips-dec-ultrix4.2}
- .frame0.menubutton3.m add command \
- -command {set host "mips-sgi-irix4.0.5H"} \
- -label {mips-sgi-irix4.0.5H}
- .frame0.menubutton3.m add command \
- -command {set host "rs6000-ibm-aix3.2"} \
- -label {rs6000-ibm-aix3.2}
- .frame0.menubutton3.m add command \
- -command {set host "sparc-sun-solaris2.3"} \
- -label {sparc-sun-solaris2.3}
- .frame0.menubutton3.m add command \
- -command {set host "sparc-sun-sunos4.1.3"} \
- -label {sparc-sun-sunos4.1.3}
-
- # build widget .frame0.menubutton2
- menubutton .frame0.menubutton2 \
- -background {white} \
- -foreground {black} \
- -menu {.frame0.menubutton2.m} \
- -text {Target}
-
- # build widget .frame0.menubutton2.m
- menu .frame0.menubutton2.m \
- -background {white} \
- -foreground {black}
- .frame0.menubutton2.m add command \
- -command {set target "a29k-amd-udi"} \
- -label {a29k-amd-udi}
- .frame0.menubutton2.m add command \
- -command {set target "h8300-hms"} \
- -label {h8300-hms}
- .frame0.menubutton2.m add command \
- -command {set target "i386-aout"} \
- -label {i386-aout}
- .frame0.menubutton2.m add command \
- -command {set target "i386-lynx"} \
- -label {i386-lynx}
- .frame0.menubutton2.m add command \
- -command {set target "i960-intel-nindy"} \
- -label {i960-intel-nindy}
- .frame0.menubutton2.m add command \
- -command {set target "i960-vxwork"} \
- -label {i960-vxworks}
- .frame0.menubutton2.m add command \
- -command {set target "m68k-aout"} \
- -label {m68k-aout}
- .frame0.menubutton2.m add command \
- -command {set target "m68k-coff"} \
- -label {m68k-coff}
- .frame0.menubutton2.m add command \
- -command {set target "m68k-lynx"} \
- -label {m68k-lynx}
- .frame0.menubutton2.m add command \
- -command {set target "m68k-vxworks"} \
- -label {m68k-vxworks}
- .frame0.menubutton2.m add command \
- -command {set target "mips-idt-ecoff"} \
- -label {mips-idt-ecoff}
- .frame0.menubutton2.m add command \
- -command {set target "sh-hms"} \
- -label {sh-hms}
- .frame0.menubutton2.m add command \
- -command {set target "sparc-aout"} \
- -label {sparc-aout}
- .frame0.menubutton2.m add command \
- -command {set target "sparc-sun-sunos4.1.3"} \
- -label {sparc-sun-sunos4.1.3}
- .frame0.menubutton2.m add command \
- -command {set target "sparc-vxworks"} \
- -label {sparc-vxworks}
- .frame0.menubutton2.m add command \
- -command {set target "sparclite-aout"} \
- -label {sparclite-aout}
- .frame0.menubutton2.m add command \
- -command {set target "sparclite-coff"} \
- -label {sparclite-coff}
- .frame0.menubutton2.m add command \
- -command {set target "hppa1.1-hp-hpux"} \
- -label {hppa1.1-hp-hpux}
- .frame0.menubutton2.m add command \
- -command {set target "i386-unknown-sysv4.2"} \
- -label {i386-unknown-sysv4.2}
- .frame0.menubutton2.m add command \
- -command {set target "m68k-hp-hpux"} \
- -label {m68k-hp-hpux}
- .frame0.menubutton2.m add command \
- -command {set target "m68k-sun-sunos4.1.1"} \
- -label {m68k-sun-sunos4.1.1}
- .frame0.menubutton2.m add command \
- -command {set target "mips-dec-ultrix4.2"} \
- -label {mips-dec-ultrix4.2}
- .frame0.menubutton2.m add command \
- -command {set target "mips-sgi-irix4.0.5H"} \
- -label {mips-sgi-irix4.0.5H}
- .frame0.menubutton2.m add command \
- -command {set target "rs6000-ibm-aix3.2"} \
- -label {rs6000-ibm-aix3.2}
- .frame0.menubutton2.m add command \
- -command {set target "sparc-sun-solaris2.3"} \
- -label {sparc-sun-solaris2.3}
-
- # build widget .frame0.menubutton9
- menubutton .frame0.menubutton9 \
- -background {white} \
- -foreground {black} \
- -menu {.frame0.menubutton9.m} \
- -text {Results}
-
- # build widget .frame0.menubutton9.m
- menu .frame0.menubutton9.m \
- -background {white} \
- -foreground {black}
- .frame0.menubutton9.m add command \
- -command {getresult $testbase/objdir/$host/$target/logs/gcc
-
-} \
- -label {Gcc}
- .frame0.menubutton9.m add command \
- -command {getresult $testbase/objdir/$host/$target/logs/g++
-
-} \
- -label {G++}
- .frame0.menubutton9.m add command \
- -command {getresult $testbase/objdir/$host/$target/logs/gdb
-
-} \
- -label {Gdb}
- .frame0.menubutton9.m add command \
- -command {getresult $testbase/objdir/$host/$target/logs/gas
-
-} \
- -label {Gas}
- .frame0.menubutton9.m add command \
- -command {getresult $testbase/objdir/$host/$target/logs/binutils
-
-} \
- -label {Binutils}
- .frame0.menubutton9.m add command \
- -command {getresult $testbase/objdir/$host/$target/logs/runtest
-} \
- -label {Runtest}
- .frame0.menubutton9.m add command \
- -command {getresult $testbase/objdir/$host/$target/logs/tcl
-
-} \
- -label {Tcl}
- .frame0.menubutton9.m add command \
- -command {getresult $testbase/objdir/$host/$target/logs/expect
-
-} \
- -label {Expect}
- .frame0.menubutton9.m add command \
- -command {getresult $testbase/objdir/$host/$target/logs/libg++
-
-} \
- -label {Libg++}
- .frame0.menubutton9.m add command \
- -command {getresult $testbase/objdir/$host/$target/logs/libio
-} \
- -label {Libio}
- .frame0.menubutton9.m add command \
- -command {getresult $testbase/objdir/$host/$target/logs/libm
-
-} \
- -label {Libm}
-
- # build widget .frame0.menubutton10
- menubutton .frame0.menubutton10 \
- -background {white} \
- -foreground {black} \
- -menu {.frame0.menubutton10.m} \
- -text {Logs}
-
- # build widget .frame0.menubutton10.m
- menu .frame0.menubutton10.m \
- -background {white} \
- -foreground {black}
- .frame0.menubutton10.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/gcc.log
-
-} \
- -label {Gcc}
- .frame0.menubutton10.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/g++.log
-
-} \
- -label {G++}
- .frame0.menubutton10.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/gdb.log
-
-} \
- -label {Gdb}
- .frame0.menubutton10.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/gas.log
-
-} \
- -label {Gas}
- .frame0.menubutton10.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/binutils.log
-
-} \
- -label {Binutils}
- .frame0.menubutton10.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/runtest.log
-
-} \
- -label {Runtest}
- .frame0.menubutton10.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/tcl.log
-
-} \
- -label {Tcl}
- .frame0.menubutton10.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/expect.log
-
-} \
- -label {Expect}
- .frame0.menubutton10.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/libg++.log
-
-} \
- -label {Libg++}
- .frame0.menubutton10.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/libio.log
-
-} \
- -label {Libio}
- .frame0.menubutton10.m add command \
- -command {loadfile $testbase/objdir/$host/$target/logs/libm.log
-
-} \
- -label {Libm}
-
- # pack widget .frame0
- pack append .frame0 \
- .frame0.menubutton0 {left frame center} \
- .frame0.menubutton1 {right frame center} \
- .frame0.menubutton3 {left frame center} \
- .frame0.menubutton2 {left frame center} \
- .frame0.menubutton9 {left frame center} \
- .frame0.menubutton10 {left frame center}
-
- # build widget .frame1
- frame .frame1 \
- -background {white} \
- -borderwidth {2} \
- -relief {raised}
-
- # build widget .frame1.message3
- message .frame1.message3 \
- -aspect {1500} \
- -background {white} \
- -borderwidth {0} \
- -foreground {black} \
- -padx {5} \
- -pady {2} \
- -relief {raised} \
- -text {sparc-sun-sunos4.1.3} \
- -textvariable {host}
-
- # build widget .frame1.message4
- message .frame1.message4 \
- -aspect {1500} \
- -background {white} \
- -borderwidth {0} \
- -foreground {black} \
- -padx {5} \
- -pady {2} \
- -relief {raised} \
- -text {sparc-sun-sunos4.1.3} \
- -textvariable {target}
-
- # pack widget .frame1
- pack append .frame1 \
- .frame1.message3 {left frame center} \
- .frame1.message4 {right frame center}
-
- # build widget .frame6
- frame .frame6 \
- -background {white} \
- -borderwidth {2} \
- -relief {raised}
-
- # build widget .frame6.frame
- frame .frame6.frame \
- -background {white} \
- -relief {raised}
-
- # build widget .frame6.frame.scrollbar1
- scrollbar .frame6.frame.scrollbar1 \
- -background {white} \
- -command {.frame6.frame.text2 yview} \
- -foreground {black} \
- -relief {raised}
-
- # build widget .frame6.frame.text2
- text .frame6.frame.text2 \
- -background {white} \
- -borderwidth {2} \
- -foreground {black} \
- -relief {raised} \
- -wrap {word} \
- -yscrollcommand {.frame6.frame.scrollbar1 set}
-
- # pack widget .frame6.frame
- pack append .frame6.frame \
- .frame6.frame.scrollbar1 {left frame center filly} \
- .frame6.frame.text2 {top frame center expand fill}
-
- # pack widget .frame6
- pack append .frame6 \
- .frame6.frame {top frame center fill}
-
- # pack widget .
- pack append . \
- .frame0 {top frame center fillx} \
- .frame1 {bottom frame center fillx} \
- .frame6 {top frame center expand fill}
-
- .frame6.frame.text2 insert end {}
-
-
-
- if {"[info procs XFEdit]" != ""} {
- catch "XFMiscBindWidgetTree ."
- after 2 "catch {XFEditSetShowWindows}"
- }
-}
-
-
-# Procedure: Alias
-if {"[info procs Alias]" == ""} {
-proc Alias { args} {
-# xf ignore me 7
-##########
-# Procedure: Alias
-# Description: establish an alias for a procedure
-# Arguments: args - no argument means that a list of all aliases
-# is returned. Otherwise the first parameter is
-# the alias name, and the second parameter is
-# the procedure that is aliased.
-# Returns: nothing, the command that is bound to the alias or a
-# list of all aliases - command pairs.
-# Sideeffects: internalAliasList is updated, and the alias
-# proc is inserted
-##########
- global internalAliasList
-
- if {[llength $args] == 0} {
- return $internalAliasList
- } {
- if {[llength $args] == 1} {
- set xfTmpIndex [lsearch $internalAliasList "[lindex $args 0] *"]
- if {$xfTmpIndex != -1} {
- return [lindex [lindex $internalAliasList $xfTmpIndex] 1]
- }
- } {
- if {[llength $args] == 2} {
- eval "proc [lindex $args 0] {args} {#xf ignore me 4
-return \[eval \"[lindex $args 1] \$args\"\]}"
- set xfTmpIndex [lsearch $internalAliasList "[lindex $args 0] *"]
- if {$xfTmpIndex != -1} {
- set internalAliasList [lreplace $internalAliasList $xfTmpIndex $xfTmpIndex "[lindex $args 0] [lindex $args 1]"]
- } {
- lappend internalAliasList "[lindex $args 0] [lindex $args 1]"
- }
- } {
- error "Alias: wrong number or args: $args"
- }
- }
- }
-}
-}
-
-
-# Procedure: GetSelection
-if {"[info procs GetSelection]" == ""} {
-proc GetSelection {} {
-# xf ignore me 7
-##########
-# Procedure: GetSelection
-# Description: get current selection
-# Arguments: none
-# Returns: none
-# Sideeffects: none
-##########
-
- # the save way
- set xfSelection ""
- catch "selection get" xfSelection
- if {"$xfSelection" == "selection doesn't exist or form \"STRING\" not defined"} {
- return ""
- } {
- return $xfSelection
- }
-}
-}
-
-
-# Procedure: MenuPopupAdd
-if {"[info procs MenuPopupAdd]" == ""} {
-proc MenuPopupAdd { xfW xfButton xfMenu {xfModifier ""} {xfCanvasTag ""}} {
-# xf ignore me 7
-# the popup menu handling is from (I already gave up with popup handling :-):
-#
-# Copyright 1991,1992 by James Noble.
-# Everyone is granted permission to copy, modify and redistribute.
-# This notice must be preserved on all copies or derivates.
-#
-##########
-# Procedure: MenuPopupAdd
-# Description: attach a popup menu to widget
-# Arguments: xfW - the widget
-# xfButton - the button we use
-# xfMenu - the menu to attach
-# {xfModifier} - a optional modifier
-# {xfCanvasTag} - a canvas tagOrId
-# Returns: none
-# Sideeffects: none
-##########
- global tk_popupPriv
-
- set tk_popupPriv($xfMenu,focus) ""
- set tk_popupPriv($xfMenu,grab) ""
- if {"$xfModifier" != ""} {
- set press "$xfModifier-"
- set motion "$xfModifier-"
- set release "Any-"
- } {
- set press ""
- set motion ""
- set release ""
- }
-
- bind $xfMenu "<${motion}B${xfButton}-Motion>" "MenuPopupMotion $xfMenu %W %X %Y"
- bind $xfMenu "<${release}ButtonRelease-${xfButton}>" "MenuPopupRelease $xfMenu %W"
- if {"$xfCanvasTag" == ""} {
- bind $xfW "<${press}ButtonPress-${xfButton}>" "MenuPopupPost $xfMenu %X %Y"
- bind $xfW "<${release}ButtonRelease-${xfButton}>" "MenuPopupRelease $xfMenu %W"
- } {
- $xfW bind $xfCanvasTag "<${press}ButtonPress-${xfButton}>" "MenuPopupPost $xfMenu %X %Y"
- $xfW bind $xfCanvasTag "<${release}ButtonRelease-${xfButton}>" "MenuPopupRelease $xfMenu %W"
- }
-}
-}
-
-
-# Procedure: MenuPopupMotion
-if {"[info procs MenuPopupMotion]" == ""} {
-proc MenuPopupMotion { xfMenu xfW xfX xfY} {
-# xf ignore me 7
-##########
-# Procedure: MenuPopupMotion
-# Description: handle the popup menu motion
-# Arguments: xfMenu - the topmost menu
-# xfW - the menu
-# xfX - the root x coordinate
-# xfY - the root x coordinate
-# Returns: none
-# Sideeffects: none
-##########
- global tk_popupPriv
-
- if {"[info commands $xfW]" != "" && [winfo ismapped $xfW] &&
- "[winfo class $xfW]" == "Menu" &&
- [info exists tk_popupPriv($xfMenu,focus)] &&
- "$tk_popupPriv($xfMenu,focus)" != "" &&
- [info exists tk_popupPriv($xfMenu,grab)] &&
- "$tk_popupPriv($xfMenu,grab)" != ""} {
- set xfPopMinX [winfo rootx $xfW]
- set xfPopMaxX [expr $xfPopMinX+[winfo width $xfW]]
- if {$xfX >= $xfPopMinX && $xfX <= $xfPopMaxX} {
- $xfW activate @[expr $xfY-[winfo rooty $xfW]]
- if {![catch "$xfW entryconfig @[expr $xfY-[winfo rooty $xfW]] -menu" result]} {
- if {"[lindex $result 4]" != ""} {
- foreach binding [bind $xfMenu] {
- bind [lindex $result 4] $binding [bind $xfMenu $binding]
- }
- }
- }
- } {
- $xfW activate none
- }
- }
-}
-}
-
-
-# Procedure: MenuPopupPost
-if {"[info procs MenuPopupPost]" == ""} {
-proc MenuPopupPost { xfMenu xfX xfY} {
-# xf ignore me 7
-##########
-# Procedure: MenuPopupPost
-# Description: post the popup menu
-# Arguments: xfMenu - the menu
-# xfX - the root x coordinate
-# xfY - the root x coordinate
-# Returns: none
-# Sideeffects: none
-##########
- global tk_popupPriv
-
- if {"[info commands $xfMenu]" != ""} {
- if {![info exists tk_popupPriv($xfMenu,focus)]} {
- set tk_popupPriv($xfMenu,focus) [focus]
- } {
- if {"$tk_popupPriv($xfMenu,focus)" == ""} {
- set tk_popupPriv($xfMenu,focus) [focus]
- }
- }
- set tk_popupPriv($xfMenu,grab) $xfMenu
-
- catch "$xfMenu activate none"
- catch "$xfMenu post $xfX $xfY"
- catch "focus $xfMenu"
- catch "grab -global $xfMenu"
- }
-}
-}
-
-
-# Procedure: MenuPopupRelease
-if {"[info procs MenuPopupRelease]" == ""} {
-proc MenuPopupRelease { xfMenu xfW} {
-# xf ignore me 7
-##########
-# Procedure: MenuPopupRelease
-# Description: remove the popup menu
-# Arguments: xfMenu - the topmost menu widget
-# xfW - the menu widget
-# Returns: none
-# Sideeffects: none
-##########
- global tk_popupPriv
- global tkVersion
-
- if {"[info commands $xfW]" != "" && [winfo ismapped $xfW] &&
- "[winfo class $xfW]" == "Menu" &&
- [info exists tk_popupPriv($xfMenu,focus)] &&
- "$tk_popupPriv($xfMenu,focus)" != "" &&
- [info exists tk_popupPriv($xfMenu,grab)] &&
- "$tk_popupPriv($xfMenu,grab)" != ""} {
- if {$tkVersion >= 3.0} {
- catch "grab release $tk_popupPriv($xfMenu,grab)"
- } {
- catch "grab none"
- }
- catch "focus $tk_popupPriv($xfMenu,focus)"
- set tk_popupPriv($xfMenu,focus) ""
- set tk_popupPriv($xfMenu,grab) ""
- if {"[$xfW index active]" != "none"} {
- $xfW invoke active; catch "$xfMenu unpost"
- }
- }
- catch "$xfMenu unpost"
-}
-}
-
-
-# Procedure: NoFunction
-if {"[info procs NoFunction]" == ""} {
-proc NoFunction { args} {
-# xf ignore me 7
-##########
-# Procedure: NoFunction
-# Description: do nothing (especially with scales and scrollbars)
-# Arguments: args - a number of ignored parameters
-# Returns: none
-# Sideeffects: none
-##########
-}
-}
-
-
-# Procedure: SN
-if {"[info procs SN]" == ""} {
-proc SN { {xfName ""}} {
-# xf ignore me 7
-##########
-# Procedure: SN
-# Description: map a symbolic name to the widget path
-# Arguments: xfName
-# Returns: the symbolic name
-# Sideeffects: none
-##########
-
- SymbolicName $xfName
-}
-}
-
-
-# Procedure: SymbolicName
-if {"[info procs SymbolicName]" == ""} {
-proc SymbolicName { {xfName ""}} {
-# xf ignore me 7
-##########
-# Procedure: SymbolicName
-# Description: map a symbolic name to the widget path
-# Arguments: xfName
-# Returns: the symbolic name
-# Sideeffects: none
-##########
-
- global symbolicName
-
- if {"$xfName" != ""} {
- set xfArrayName ""
- append xfArrayName symbolicName ( $xfName )
- if {![catch "set \"$xfArrayName\"" xfValue]} {
- return $xfValue
- } {
- if {"[info commands XFProcError]" != ""} {
- XFProcError "Unknown symbolic name:\n$xfName"
- } {
- puts stderr "XF error: unknown symbolic name:\n$xfName"
- }
- }
- }
- return ""
-}
-}
-
-
-# Procedure: Unalias
-if {"[info procs Unalias]" == ""} {
-proc Unalias { aliasName} {
-# xf ignore me 7
-##########
-# Procedure: Unalias
-# Description: remove an alias for a procedure
-# Arguments: aliasName - the alias name to remove
-# Returns: none
-# Sideeffects: internalAliasList is updated, and the alias
-# proc is removed
-##########
- global internalAliasList
-
- set xfIndex [lsearch $internalAliasList "$aliasName *"]
- if {$xfIndex != -1} {
- rename $aliasName ""
- set internalAliasList [lreplace $internalAliasList $xfIndex $xfIndex]
- }
-}
-}
-
-
-# Procedure: getbase
-proc getbase {} {
- global env
- global testbase
- if [info exists env(TESTBASE)] then {
- set testbase $env(TESTBASE)
- } else {
- set testbase /lisa/test/rob
- }
- return $testbase
-}
-
-
-# Procedure: getresult
-proc getresult { name} {
-set tmp "[lsort [glob -nocomplain $name-results-??????-????]]"
-set tmp [lindex $tmp [expr [llength $tmp] - 1]]
-if [string match "" $tmp] then {
- .frame6.frame.text2 delete 0.0 end
- .frame6.frame.text2 insert 0.0 "Couldn't find results for: $name\n"
- return
-} else {
- return [loadfile $tmp]
-}
-}
-
-# Procedure: dialogbox
-proc dialogbox {} {
- set w .frame6.top2
- catch {destroy $w}
- catch {destroy $w.e1}
- toplevel $w
-# dpos $w
- wm title $w "Change Editor"
- wm iconname $w "Entries"
- message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 200 \
- -text "Hey Now. Click the \"OK\" button when you've seen enough."
- frame $w.frame -borderwidth 10
- button $w.ok -text OK -command "destroy $w"
- pack $w.msg $w.frame $w.ok -side top -fill both
-
- entry $w.frame.e1 -relief sunken -textvariable editor
- pack $w.frame.e1 -side top -pady 5 -fill x
- bind $w.frame.e1 <Return> "destroy $w"
-}
-
-# Procedure: loadfile
-proc loadfile { name} {
-if ![file exists $name] then {
- .frame6.frame.text2 delete 0.0 end
- .frame6.frame.text2 insert 0.0 "Couldn't find:\t$name\n"
- return
-}
-
-global editor
-if [info exists editor] then {
- if ![string match "" $editor] then {
- catch "exec $editor $name&" tmp
- if [info exists tmp] then {
- .frame6.frame.text2 delete 0.0 end
- .frame6.frame.text2 insert 0.0 "Editor returned $tmp\n"
- }
- }
-}
-.frame6.frame.text2 delete 0.0 end
-set fd [open $name r]
-while { [gets $fd line]>=0 } {
-.frame6.frame.text2 insert end "$line\n"
-.frame6.frame.text2 mark set insert 0.0
-}
-close $fd
-unset fd
-}
-
-
-
-# application parsing procedure
-proc XFLocalParseAppDefs {xfAppDefFile} {
- global xfAppDefaults
-
- # basically from: Michael Moore
- if {[file exists $xfAppDefFile] &&
- [file readable $xfAppDefFile] &&
- "[file type $xfAppDefFile]" == "link"} {
- catch "file type $xfAppDefFile" xfType
- while {"$xfType" == "link"} {
- if {[catch "file readlink $xfAppDefFile" xfAppDefFile]} {
- return
- }
- catch "file type $xfAppDefFile" xfType
- }
- }
- if {!("$xfAppDefFile" != "" &&
- [file exists $xfAppDefFile] &&
- [file readable $xfAppDefFile] &&
- "[file type $xfAppDefFile]" == "file")} {
- return
- }
- if {![catch "open $xfAppDefFile r" xfResult]} {
- set xfAppFileContents [read $xfResult]
- close $xfResult
- foreach line [split $xfAppFileContents "\n"] {
- # backup indicates how far to backup. It applies to the
- # situation where a resource name ends in . and when it
- # ends in *. In the second case you want to keep the *
- # in the widget name for pattern matching, but you want
- # to get rid of the . if it is the end of the name.
- set backup -2
- set line [string trim $line]
- if {[string index $line 0] == "#" || "$line" == ""} {
- # skip comments and empty lines
- continue
- }
- set list [split $line ":"]
- set resource [string trim [lindex $list 0]]
- set i [string last "." $resource]
- set j [string last "*" $resource]
- if {$j > $i} {
- set i $j
- set backup -1
- }
- incr i
- set name [string range $resource $i end]
- incr i $backup
- set widname [string range $resource 0 $i]
- set value [string trim [lindex $list 1]]
- if {"$widname" != "" && "$widname" != "*"} {
- # insert the widget and resourcename to the application
- # defaults list.
- if {![info exists xfAppDefaults]} {
- set xfAppDefaults ""
- }
- lappend xfAppDefaults [list $widname [string tolower $name] $value]
- }
- }
- }
-}
-
-# application loading procedure
-proc XFLocalLoadAppDefs {{xfClasses ""} {xfPriority "startupFile"} {xfAppDefFile ""}} {
- global env
-
- if {"$xfAppDefFile" == ""} {
- set xfFileList ""
- if {[info exists env(XUSERFILESEARCHPATH)]} {
- append xfFileList [split $env(XUSERFILESEARCHPATH) :]
- }
- if {[info exists env(XAPPLRESDIR)]} {
- append xfFileList [split $env(XAPPLRESDIR) :]
- }
- if {[info exists env(XFILESEARCHPATH)]} {
- append xfFileList [split $env(XFILESEARCHPATH) :]
- }
- append xfFileList " /usr/lib/X11/app-defaults"
- append xfFileList " /usr/X11/lib/X11/app-defaults"
-
- foreach xfCounter1 $xfClasses {
- foreach xfCounter2 $xfFileList {
- set xfPathName $xfCounter2
- if {[regsub -all "%N" "$xfPathName" "$xfCounter1" xfResult]} {
- set xfPathName $xfResult
- }
- if {[regsub -all "%T" "$xfPathName" "app-defaults" xfResult]} {
- set xfPathName $xfResult
- }
- if {[regsub -all "%S" "$xfPathName" "" xfResult]} {
- set xfPathName $xfResult
- }
- if {[regsub -all "%C" "$xfPathName" "" xfResult]} {
- set xfPathName $xfResult
- }
- if {[file exists $xfPathName] &&
- [file readable $xfPathName] &&
- ("[file type $xfPathName]" == "file" ||
- "[file type $xfPathName]" == "link")} {
- catch "option readfile $xfPathName $xfPriority"
- if {"[info commands XFParseAppDefs]" != ""} {
- XFParseAppDefs $xfPathName
- } {
- if {"[info commands XFLocalParseAppDefs]" != ""} {
- XFLocalParseAppDefs $xfPathName
- }
- }
- } {
- if {[file exists $xfCounter2/$xfCounter1] &&
- [file readable $xfCounter2/$xfCounter1] &&
- ("[file type $xfCounter2/$xfCounter1]" == "file" ||
- "[file type $xfCounter2/$xfCounter1]" == "link")} {
- catch "option readfile $xfCounter2/$xfCounter1 $xfPriority"
- if {"[info commands XFParseAppDefs]" != ""} {
- XFParseAppDefs $xfCounter2/$xfCounter1
- } {
- if {"[info commands XFLocalParseAppDefs]" != ""} {
- XFLocalParseAppDefs $xfCounter2/$xfCounter1
- }
- }
- }
- }
- }
- }
- } {
- # load a specific application defaults file
- if {[file exists $xfAppDefFile] &&
- [file readable $xfAppDefFile] &&
- ("[file type $xfAppDefFile]" == "file" ||
- "[file type $xfAppDefFile]" == "link")} {
- catch "option readfile $xfAppDefFile $xfPriority"
- if {"[info commands XFParseAppDefs]" != ""} {
- XFParseAppDefs $xfAppDefFile
- } {
- if {"[info commands XFLocalParseAppDefs]" != ""} {
- XFLocalParseAppDefs $xfAppDefFile
- }
- }
- }
- }
-}
-
-# application setting procedure
-proc XFLocalSetAppDefs {{xfWidgetPath "."}} {
- global xfAppDefaults
-
- if {![info exists xfAppDefaults]} {
- return
- }
- foreach xfCounter $xfAppDefaults {
- if {"$xfCounter" == ""} {
- break
- }
- set widname [lindex $xfCounter 0]
- if {[string match $widname ${xfWidgetPath}] ||
- [string match "${xfWidgetPath}*" $widname]} {
- set name [string tolower [lindex $xfCounter 1]]
- set value [lindex $xfCounter 2]
- # Now lets see how many tcl commands match the name
- # pattern specified.
- set widlist [info command $widname]
- if {"$widlist" != ""} {
- foreach widget $widlist {
- # make sure this command is a widget.
- if {![catch "winfo id $widget"] &&
- [string match "${xfWidgetPath}*" $widget]} {
- catch "$widget configure -$name $value"
- }
- }
- }
- }
- }
-}
-
-
-
-# startup source
-proc StartupSrc {args} {
-global testbase
-global hostlist
-global targlist
-global host
-
-set host [exec config.guess]
-set target $host
-}
-
-
-# end source
-proc EndSrc {} {
-.frame6.frame.text2 delete 0.0 end
-}
-
-# startup source
-StartupSrc
-
-# initialize global variables
-global {editor}
-set {editor} {}
-global {fsBox}
-set {fsBox(activeBackground)} {}
-set {fsBox(activeForeground)} {}
-set {fsBox(all)} {0}
-set {fsBox(background)} {}
-set {fsBox(button)} {0}
-set {fsBox(extensions)} {0}
-set {fsBox(font)} {}
-set {fsBox(foreground)} {}
-set {fsBox(internalPath)} {/offsite/rob/DejaGnu/devo/dejagnu}
-set {fsBox(name)} {}
-set {fsBox(path)} {/offsite/rob/DejaGnu/devo/dejagnu}
-set {fsBox(pattern)} {*}
-set {fsBox(scrollActiveForeground)} {}
-set {fsBox(scrollBackground)} {}
-set {fsBox(scrollForeground)} {}
-set {fsBox(scrollSide)} {left}
-set {fsBox(showPixmap)} {0}
-global {host}
-set {host} {sparc-sun-sunos4.1.3}
-global {result}
-set {result} {can't read "editor": no such variable}
-global {target}
-set {target} {sparc-sun-sunos4.1.3}
-global {testbase}
-set {testbase} {/lisa/test/rob}
-
-# please don't modify the following
-# variables. They are needed by xf.
-global {autoLoadList}
-set {autoLoadList(testit)} {0}
-global {internalAliasList}
-set {internalAliasList} {}
-global {moduleList}
-set {moduleList(testit)} {}
-global {preloadList}
-set {preloadList(xfInternal)} {}
-global {symbolicName}
-set {symbolicName(binutils)} {.frame0.menubutton7}
-set {symbolicName(dialogbox)} {.top2}
-set {symbolicName(editor)} {.top2.entry4}
-set {symbolicName(g++)} {.frame0.menubutton4}
-set {symbolicName(gas)} {.frame0.menubutton6}
-set {symbolicName(gdb)} {.frame0.menubutton5}
-set {symbolicName(host)} {.frame0.menubutton3.m}
-set {symbolicName(hostlist)} {.frame0.menubutton3}
-set {symbolicName(logs)} {.frame0.menubutton10}
-set {symbolicName(misc)} {.frame0.menubutton1}
-set {symbolicName(ok)} {.top2.button7}
-set {symbolicName(results)} {.frame0.menubutton9}
-set {symbolicName(root)} {.}
-set {symbolicName(sum)} {.frame0.menubutton0}
-set {symbolicName(targlist)} {.frame0.menubutton2}
-global {xfWmSetPosition}
-set {xfWmSetPosition} {}
-global {xfWmSetSize}
-set {xfWmSetSize} {}
-global {xfAppDefToplevels}
-set {xfAppDefToplevels} {}
-
-# display/remove toplevel windows.
-ShowWindow.
-
-# load default bindings.
-if {[info exists env(XF_BIND_FILE)] &&
- "[info procs XFShowHelp]" == ""} {
- source $env(XF_BIND_FILE)
-}
-
-# parse and apply application defaults.
-XFLocalLoadAppDefs Testit
-XFLocalSetAppDefs
-
-# end source
-EndSrc
-
-# eof
-#
-
+++ /dev/null
-#! /bin/sh
-#
-# This scripts should start a fully compatible DejaGnu runtest
-# application using [incr Expect] and Classes compatible with [incr Tcl]
-#
-# Copyright (C) 1998 jotOmega dsc, Inc.
-
-# This file is part of BlueGnu.
-# It asumes that the iexpect program is on your PATH
-#
-
-#
-# Get the execution path to this script
-#
-execpath=`echo ${0-.} | sed -e 's@/[^/]*$@@'`
-
-#
-# get the name by which dejagnu was invoked and extract the config triplet
-#
-dejagnu=`echo ${0-.} | sed -e 's@^.*/@@'`
-target=`echo $dejagnu | sed -e 's/-dejagnu$//'`
-if [ "$target" != dejagnu ] ; then
- target="--target ${target}"
-else
- target=""
-fi
-
-#
-# Find the right expect binary to use. If a variable EXPECT exists,
-# it takes precedence over all other tests. Otherwise look for a freshly
-# built one, and then use one in the path.
-#
-if [ x"$EXPECT" != x ] ; then
- expectbin=$EXPECT
-else
- if [ -x "$execpath/expect" ] ; then
- expectbin=$execpath/iexpect
- else
- expectbin=iexpect
- fi
-fi
-
-# just to be safe...
-if [ -z "$expectbin" ]; then
- echo "ERROR: No $expectbin shell found"
- exit 1
-fi
-
-#
-# Extract a few options from the option list.
-#
-verbose=0
-debug=""
-for a in "$@" ; do
- case $a in
- -v|--v|-verb*|--verb*) verbose=`expr $verbose + 1`;;
- -D0|--D0) debug="-D 0" ;;
- -D1|--D1) debug="-D 1" ;;
- esac
-done
-
-if expr $verbose \> 0 > /dev/null ; then
- echo Expect binary is $expectbin
-fi
-
-#
-# find dejagnu.itcl. First we look in it's installed location, otherwise
-# start if from the source tree.
-#
-for i in $execpath/../lib/bluegnu $execpath ; do
- if expr $verbose \> 1 > /dev/null ; then
- echo Looking for $i/dejagnu.itcl.
- fi
- if [ -f $i/dejagnu.itcl ] ; then
- runpath=$i
- if expr $verbose \> 0 > /dev/null ; then
- echo Using $i/dejagnu.itcl as main test driver
- fi
- fi
-done
-# check for an environment variable
-if [ x"$BLUEGNULIBS" != x ] ; then
- runpath=$BLUEGNULIBS
- if expr $verbose \> 0 > /dev/null ; then
- echo Using $BLUEGNULIBS/dejagnu.itcl as main test driver
- fi
-fi
-if [ x"$runpath" = x ] ; then
- echo "ERROR: dejagnu.itcl does not exist."
- exit 1
-fi
-
-exec $expectbin $debug -- $runpath/dejagnu.itcl $target ${1+"$@"}
+++ /dev/null
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-srcdir = @srcdir@
-
-mandir = $(prefix)/man
-man1dir = $(mandir)/man1
-infodir = $(prefix)/info
-
-MAKEINFO = makeinfo
-TEXI2DVI = TEXINPUTS=$(TEXIDIR):$(srcdir):$$TEXINPUTS texi2dvi
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = $(INSTALL)
-INSTALL_DATA = $(INSTALL)
-
-# Where to find texinfo.tex to format docn with TeX
-TEXIDIR = $(srcdir)/../../texinfo
-
-MANPAGES= $(srcdir)/dejagnu.1
-DEJAGNU = dejagnu.dvi dejagnu.info dejagnu.ps dejagnu.pdf
-README = ../README.bluegnu notice.ps notice.pdf notice.html
-
-%.dvi: %.tex
- latex $<
-%.pdf: %.dvi
- dvipdfm -o $@ $<
-%.html: %.dvi
- rm -fr $(basename $@)
- rm -f $@
- latex2html -t "`cat $(basename $<).title`" -split 0 $(basename $<).tex
- ln -s $(basename $@)/$@
-
-all:
-
-doc: ${README} ${DEJAGNU}
-
-dejagnu.pdf: dejagnu.dvi
-
-READMEtxt.dvi: READMEtxt.tex README.tex
-READMEdvi.dvi: READMEdvi.tex README.tex
-
-../README.bluegnu: READMEtxt.dvi
- dvidoc $< >$@
-
-notice.ps: READMEdvi.dvi
- dvips $< -o $@
-
-notice.pdf: READMEdvi.dvi
- dvipdfm -o $@ $<
-
-notice.html: READMEdvi.dvi
- rm -fr $(basename $<)
- rm -f $@
- latex2html -t "`cat $(basename $<).title`" -split 0 $(basename $<).tex
- cp $(basename $<)/$(basename $<).html notice.html
-
-######################################################################
-# DOCUMENTATION TARGETS
-# TeX output
-dejagnu.dvi: $(srcdir)/dejagnu.texi
- $(TEXI2DVI) $(srcdir)/dejagnu.texi
-
-# info file for online browsing
-dejagnu.info: $(srcdir)/dejagnu.texi
- $(MAKEINFO) -I $(srcdir) -o dejagnu.info $(srcdir)/dejagnu.texi
-
-dejagnu.ps: dejagnu.dvi
- dvips -f dejagnu.dvi > dejagnu.ps
-
-# different targets for -ms, -mm, -me
-# Try to use a recent texi2roff. v2 was put on prep in jan91.
-# If you want an index, see texi2roff doc for postprocessing
-# and add -i to texi2roff invocations below.
-# Workarounds for texi2roff-2 (probably fixed in later texi2roff's, delete
-# correspondint -e lines when later texi2roff's are current)
-# + @ifinfo's deleted explicitly due to texi2roff-2 bug w nested constructs.
-# + @c's deleted explicitly because texi2roff sees texinfo commands in them
-# + @ (that's at-BLANK) not recognized by texi2roff, turned into blank
-# + @alphaenumerate is ridiculously new, turned into @enumerate
-
-# roff output (-ms)
-dejagnu.ms: $(srcdir)/dejagnu.texi
- sed -e '/\\input texinfo/d' \
- -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \
- -e '/^@ifinfo/,/^@end ifinfo/d' \
- -e '/^@c/d' \
- -e 's/{.*,,/{/' \
- -e 's/@ / /g' \
- -e 's/^@alphaenumerate/@enumerate/g' \
- -e 's/^@end alphaenumerate/@end enumerate/g' \
- $(srcdir)/dejagnu.texi | \
- $(TEXI2ROFF) -ms | \
- sed -e 's/---/\\(em/g' >dejagnu.ms
-
-# roff output (-mm)
-# '@noindent's removed due to texi2roff-2 mm bug; if yours is newer,
-# try leaving them in
-dejagnu.mm: $(srcdir)/dejagnu.texi
- sed -e '/\\input texinfo/d' \
- -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \
- -e '/^@ifinfo/,/^@end ifinfo/d' \
- -e '/^@c/d' \
- -e 's/{.*,,/{/' \
- -e '/@noindent/d' \
- -e 's/@ / /g' \
- -e 's/^@alphaenumerate/@enumerate/g' \
- -e 's/^@end alphaenumerate/@end enumerate/g' \
- $(srcdir)/dejagnu.texi | \
- $(TEXI2ROFF) -mm | \
- sed -e 's/---/\\(em/g' >dejagnu.mm
-
-# roff output (-me)
-dejagnu.me: $(srcdir)/dejagnu.texi
- sed -e '/\\input texinfo/d' \
- -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \
- -e '/^@ifinfo/,/^@end ifinfo/d' \
- -e '/^@c/d' \
- -e 's/{.*,,/{/' \
- -e 's/@ / /g' \
- -e 's/^@alphaenumerate/@enumerate/g' \
- -e 's/^@end alphaenumerate/@end enumerate/g' \
- $(srcdir)/dejagnu.texi | \
- $(TEXI2ROFF) -me | \
- sed -e 's/---/\\(em/g' >dejagnu.me
-
-######################################################################
-
-clean mostlyclean:
- -rm -f \#* *~ core *.o a.out xgdb *.x
- -rm -f core *.aux *.log
- -rm -f dejagnu.cp \
- dejagnu.fn dejagnu.ky dejagnu.log dejagnu.pg dejagnu.toc \
- dejagnu.tp dejagnu.vr dejagnu.cps dejagnu.fns dejagnu.kys \
- dejagnu.pgs dejagnu.tps dejagnu.vrs
-
-clean-info:
- -rm -rf *.info*
-
-distclean: clean
- -rm -f Makefile config.status config.log config.cache gdbme.c
- -rm -fr READMEdvi
-
-maintainer-clean realclean: clean clean-info
- -rm -f Makefile config.status config.log config.cache gdbme.c
- -rm -fr READMEdvi
- -rm -f *.pdf *.ps *.html
-
-install:
- $(srcdir)/../mkinstalldirs $(man1dir)
- for i in $(MANPAGES) ; do \
- $(INSTALL_DATA) $$i \
- $(man1dir)/$(program_prefix)`echo $$i |sed -e \
- 's@^.*doc/@@'` ; \
- done
- $(srcdir)/../mkinstalldirs $(bindir) $(infodir)
- for i in *.info* ; do \
- $(INSTALL_DATA) $$i $(infodir)/$$i ; \
- done
-
-Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) config.status
- @echo "Rebuilding the Makefile..."
- $(SHELL) ./config.status
-
-configure:
- @echo "Rebuilding configure..."
- @cd ${srcdir}; autoconf
-
-config.status: $(srcdir)/configure
- @echo "Rebuilding config.status..."
- $(SHELL) ./config.status --recheck
+++ /dev/null
-%%
-%%
-
-\begin{document}
-
-\title{Release Notice\\BlueGnu Testing Framework\\
-Version 2.0.3}
-\author{Jan-Willem Neurdenburg\\jotOmega dsc\\
-56 Brigham Hill Road\\Grafton~MA~~01519-1135\\
-neurdenburgj@acm.org\\Tel: (508) 839-0276\\Fax: (508) 839-7267}
-
-\maketitle
-
-\section{Introduction}
-BlueGnu is a framework for testing other programs. It has been created
-to be compatible with DejaGnu. Its purpose is to provide a single
-front end for all tests. Beyond this, BlueGnu offers several
-advantages for testing:
-
-\begin{itemize}
-
-\item The flexibility and consistency of the BlueGnu framework makes it
-easy to write tests for any program, with the exception of GUI
-applications.
-
-\item BlueGnu provides a layer of abstraction, which makes all tests
-(if correctly written) portable to any host or target where a program
-must be tested.
-
-\item BlueGnu is written in [incr Tcl], which in turn is based on Tcl
-(Tool Command Language). The framework comprises two parts:
-\begin{enumerate}
-\item the testing framework,
-\item the test-suites or test-sets themselves.
-\end{enumerate}
-
-\item BlueGnu will work with any Tcl based interpreter as long as
-[incr Tcl] has been included. You can include 'expect', 'Tk', and/or
-other extensions.
-
-\item Includes DejaGnu release 1.6
-
-\end{itemize}
-
-\section{Requirements}
-The following modules should have been installed, before you can
-install and/or use BlueGnu:
-
-\begin{itemize}
-\item Tcl release 8.0 or higher,
-\item incr Tcl release 3.0 or higher.
-\end{itemize}
-
-Any other extensions that is compatible with Tcl release 8.0 can be used
-as well.
-
-\section{Structure and Contents of the Release}
-
-The root directory of the release contains the README files with
-installation instructions and the files needed to build and install
-this product. It also contains the executable scripts of the
-BlueGnu testing framework.
-
-The top-level directories are listed below:
-
-\begin{description}
-\item[lib:] the packages and procedures that make the BlueGnu and
-DejaGnu testing framework. This also includes the default target
-definition files.
-
-\item[testsets:] the BlueGnu test-suites and test examples. It contains
-the following subdirectories.
-
-\begin{description}
-\item[BlueGnu:]
-test scripts to test the testing framework itself.
-
-\item[examples:]
-test suite and test script examples.
-
-\item[config, lib, tools:]
-currently empty, but can be used for
-test-set dependent configuration files, library files, and tools.
-\end{description}
-
-\item[config:]
-currently empty.
-
-\item[doc:] the DejaGnu texinfo source and the documentation in
-'info', 'dvi', 'ps', and 'pdf' representation, respectively
-dejagnu.info*, dejagnu.dvi, dejagnu.ps, and dejagnu.pdf. A DejaGnu man
-page is also available.
-
-It also contains
-the \TeX{} version (README.tex) of this document as well as the 'dvi', 'ps'
-'html', and 'pdf' representation, respectively notice.dvi, notice.ps,
-notice.html, and notice.pdf.
-
-\item[testsuite:] contains a mixture of DejaGnu and BlueGnu test
-scripts.
-
-\item[contrib:] contains examples how DejaGnu is used at Cygnus.
-
-\item[example:] contains a full DejaGnu test framework example for testing the program 'calc' which is also included.
-
-\end{description}
-
-\section{Installation and use under Unix}
-
-Before you can install and use BlueGnu you need to have installed the
-following three packages:
-\begin{itemize}
-\item Tcl version 8.0.3
-\item Tk version 8.0.3
-\item incr Tcl version 3.0.1
-\end{itemize}
-The source for these packages should all be located in one directory.
-The subdirectory in the directory should be:
-\begin{itemize}
-\item tcl8.0.3
-\item tk8.0.3
-\item itcl3.0.1
-\end{itemize}
-
-The following examples use the command `./configure
---prefix=/tools/...`. This will install all packages in a directory
-``/tools''. When you omit the ``--prefix''-switch then the
-installation default will be the directory ``/usr/local''.
-
-\subsection{Installation of needed Packages}
-
-When you have not installed Tcl and the other needed extensions, then
-you need to retrieve the sources from ``www.tcltk.com/itcl''. You need
-to `gunzip` the files and do a `tar xf` of all these packages in one
-directory, let's call this directory ``TclTk''.
-
-From the directory ``TclTk'', you should do the following to install
-the packages:
-
-\begin{verbatim}
-% cd tcl8.0.3/unix
-% ./configure --prefix=/tools/tcl8.0.3 --enable-gcc --enable-shared
-% make
-% mkdir /tools/tcl8.0.3
-% make install
-% cd ../../tk8.0.3/unix
-% ./configure --prefix=/tools/tk8.0.3 --enable-gcc --enable-shared
-% make
-% mkdir /tools/tk8.0.3
-% make install
-% cd ../../itcl3.0.1
-% ./configure --prefix=/tools/itcl3.0.1 --enable-gcc --enable-shared
-% make
-% mkdir /tools/itcl3.0.1
-% make install
-\end{verbatim}
-
-\subsection{Installing BlueGnu}
-You can now `gunzip` and `tar xf` the BlueGnu version 2.0.3 in the
-directory ``TckTk''. This will create the directory
-``bluegnu2.0.3''. Now do the following:
-
-\begin{verbatim}
-% cd bluegnu2.0.3
-% ./configure --prefix=/tools/bluegnu2.0.3
-% make
-% mkdir /tools/bluegnu2.0.3
-% make install
-\end{verbatim}
-
-This will install BlueGnu in the directories:
-\begin{itemize}
-\item /tools/bluegnu2.0.3/bin
-\item /tools/bluegnu2.0.3/lib/bluegnu
-\item /tools/bluegnu2.0.3/info
-\item /tools/bluegnu2.0.3/man
-\end{itemize}
-
-\subsection{Using BlueGnu}
-When you have installed [incr Tcl] and BlueGnu and you have the
-respective ``bin'' directories in your PATH variable, then you can
-start running some tests. You can go into the BlueGnu source directory
-``bluegnu2.0.3/testsets/examples'' and run the following:
-
-\begin{verbatim}
-% bluegnu versionTcl.itcl
-% bluegnu ts_001
-% bluegnu ts_002
-% bluegnu ts_003
-\end{verbatim}
-
-The above test result should all be PASS. The following test will give
-a result UNKNOWN, because no pass/fail instruction have been given.
-
-\begin{verbatim}
-% bluegnu tc001
-\end{verbatim}
-
-The last test you can run will fail in its simple form:
-
-\begin{verbatim}
-% bluegnu tc002
-\end{verbatim}
-
-But will pass if you execute the test as follows:
-
-\begin{verbatim}
-% bluegnu tc002[English]
-\end{verbatim}
-
-This is because the test scripts need a test case identifier to find
-the correct benchmark code.
-
-\section{Changes}
-\subsection{Version 2.0.3}
-This being the first public release it is not to useful to list all
-the changes. BlueGnu has been modeled after DejaGnu and is a complete
-new implementation which has been tested thoroughly. When
-documentation is being written more changes will be made. An example
-of some of these changes as a result of this documentation effort can
-be found in the test-suites ts\verb+_+001, ts\verb+_+002, and
-ts\verb+_+003. The first two are not as easy to write as the
-third. The test suite ts\verb+_+001 is a script implementation of the
-command line:
-\begin{verbatim}
-% cd bluegnu2.0.3/testsets
-% bluegnu examples/tc002[English=B] \
-> "examples/tc002[Dutch=B]={MSG=Hallo Wereld}"
-\end{verbatim}
-This may be useful for simple tests but when you want to write more
-complex test-suite scripts you would like some more flexibility, so two
-procedures were introduced, which are shown in test-suite ts\verb+_+002. This
-makes writing rather complex so the procedures have become part of
-the procedures 'appendQueue', 'prependQueue', and 'runtest'. The
-resulting script is shown in test-suit ts\verb+_+003.
-
-Changes like this will be made in the future!
-
-\section{Future Enhancements}
-The following enhancements are being planned:
-\begin{itemize}
-\item Target code will be made into a class with methods 'start',
-'load', 'exit', and 'version'. Instead of the current
-'$<$target$>$\verb+_+start', '$<$target$>$\verb+_+load', '$<$target$>$\verb+_+exit', and
-'$<$target$>$\verb+_+version', which have been taken from DejaGnu.
-
-\item Procedures will be created that make it easy to test WEB
-application from the framework.
-
-\item Other enhancements will be made depending on the use of the
-framework in testing different applications.
-\end{itemize}
-\end{document}
\ No newline at end of file
+++ /dev/null
-%%
-%%
-
-\documentclass[12pt]{article}
-\input{README}
+++ /dev/null
-BlueGnu Release Notice
+++ /dev/null
-%%
-%%
-
-\documentclass[10pt]{dvidoc}
-\input{README}
-
+++ /dev/null
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.4
-# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Initialize some other variables.
-subdirs=
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -build | --build | --buil | --bui | --bu | --b)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=PREFIX install architecture-dependent files in PREFIX
- [same as prefix]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
---enable and --with options recognized:$ac_help
-EOF
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.4"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=dejagnu.texi
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5'
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- # Account for people who put trailing slashes in PATH elements.
- case "$ac_dir/" in
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- for ac_prog in ginstall installbsd scoinst install; do
- if test -f $ac_dir/$ac_prog; then
- if test $ac_prog = install &&
- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- # OSF/1 installbsd also uses dspmsg, but is usable.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
- IFS="$ac_save_ifs"
- # As a last resort, use the slow shell script.
- test -z "$ac_cv_path_install" && ac_cv_path_install="$ac_install_sh"
-fi
- INSTALL="$ac_cv_path_install"
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
- >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%-D\1=\2%g
-s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.4"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF
-$ac_vpsub
-$extrasub
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-
-CEOF
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust relative srcdir, etc. for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
-fi; done
-rm -f conftest.subs
-
-
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
+++ /dev/null
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(dejagnu.texi)
-AC_PROG_INSTALL
-AC_OUTPUT(Makefile)
+++ /dev/null
-.TH runtest 1 "31 Dec 1992"
-.SH NAME
-runtest \- the DejaGnu test driver program
-.SH SYNOPSIS
-.B runtest
-[ options ]
-.SH DESCRIPTION
-.I DejaGnu
-is a framework for running test suites on GNU tools. It is written in
-expect, which uses TCL (Tool command language).
-.B runtest
-is the test driver program; use it to control what tests to run,
-and variations on how to run them.
-
-You can find a comprehensive description of DejaGnu and \fBruntest\fR in
-.I
-The DejaGnu Testing Framework
-or its Info version,
-.BR dejagnu.info .
-.SH OPTIONS
-.TP
-.B --all
-Print all test output to screen. By default, only unexpected results are
-displayed.
-.TP
-.BI --baud \ rate
-Set the baud rate for a serial line connection. Some serial interface
-programs (like \fBtip\fR) don't use this value but instead use a separate
-initialization file.
-.TP
-.BI --connect \ type
-The type of connection to use. The choices are
-.BR rlogin ,
-.BR telnet ,
-.BR rsh ,
-.BR kermit ,
-.BR tip
-and
-.BR mondfe .
-.TP
-.B --debug
-Turn on
-.B expect
-internal debugging output. All output is logged to
-a file called \fBdbg.out\fR.
-The output of the \fB--strace\fR also goes into this file.
-.TP
-.B --help
-Prints out a help screen and then exits.
-.TP
-.BI --host \ type
-The configuration string for the host.
-.TP
-.BI --ignore \ test1.exp\ test2.exp\ ...
-Do not run the specified tests.
-.TP
-.BI --mail \ \'name1\ name2\ ...\'
-Electronic mail addresses to receive test results.
-.TP
-.BI --name \ hostname
-The network hostname of the target board.
-.TP
-.BI --objdir \ path
-\fIpath\fR is a directory containing compiled test code.
-.TP
-.BI --outdir \ directory
-The name of a directory for test log output.
-.TP
-.B --reboot
-Reboot the target board when \fBruntest\fR initializes
-(if supported).
-.TP
-.BI --srcdir \ path
-\fIpath\fR is a directory containing test directories.
-.TP
-.BI --strace \ N
-Turns on
-.B expect
-internal tracing to \fIN\fR levels deep.
-.TP
-.BI --target \ type
-The configuration string for the target.
-.TP
-.BI --tool \ toolname
-Specify the tool to be tested. \fItoolname\fR controls the test suite
-applied, and the associated initialization module.
-.TP
-.B --verbose,\ -v
-Turns on more debugging output from test cases and DejaGnu utility code.
-Use more than once to increase output further.
-.TP
-.B --version,\ -V
-Prints out the versions of DejaGnu, expect and Tcl.
-.TP
-.B -D[number]
-Activate the Tcl debugger.\fBnumber\fR can be either 1 or 0. If it is
-1, then the expect shell will break when it starts to run. All ^C's
-drop DejaGnu back to the debugger prompt. A 0 starts DejaGnu like
-normal, but a ^C drops to the debugger prompt.
-.TP 0
-Any file name on the command line is assumed to be a subset
-of the test names to run. Usually these are the names of the
-expect test driver, ie... special.exp.
-
-Makefile style variables are used to specify tool names and their
-flags; these and other configuration dependent values are saved in the
-file \fBsite.exp\fR, created during configuration.
-.SH EXIT CODES
-.B runtest
-sets the exit code to 1 if any of the tests failed, or
-sets it to 0 if all the tests passed.
-.SH SEE ALSO
-.I The DejaGnu Testing Framework
-.RB ( dejagnu.info ).
-This is the DejaGnu manual; its source is the Texinfo file
-.B
-doc/dejagnu.texi
-in the DejaGnu distribution.
-.SH AUTHOR
-Rob Savoye (rob@welcomehome.org)
+++ /dev/null
-This is Info file dejagnu.info, produced by Makeinfo version 1.68 from
-the input file ./dejagnu.texi.
-
-START-INFO-DIR-ENTRY
-* DejaGnu: (dejagnu). The GNU testing framework.
-END-INFO-DIR-ENTRY
-
- Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided also
-that the entire resulting derived work is distributed under the terms
-of a permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions.
-
-\1f
-Indirect:
-dejagnu.info-1: 845
-dejagnu.info-2: 49656
-dejagnu.info-3: 98864
-\1f
-Tag Table:
-(Indirect)
-Node: Top\7f845
-Node: Overview\7f1569
-Node: What is New\7f3526
-Node: Running Tests\7f4893
-Node: Sample Test\7f8001
-Node: Design Goals\7f9824
-Node: Posix\7f11617
-Node: Future Directions\7f17145
-Node: Tcl and Expect\7f17988
-Node: Invoking runtest\7f18731
-Node: Customizing\7f31866
-Node: Config Values\7f34287
-Node: Master Config File\7f40542
-Node: Local Config File\7f44541
-Node: Personal Config File\7f46789
-Node: Internals\7f47575
-Node: Names\7f49656
-Node: Init Module\7f51171
-Node: DejaGnu Builtins\7f55274
-Node: framework.exp\7f56083
-Node: remote.exp\7f65293
-Node: utils.exp\7f69799
-Node: target.exp\7f73522
-Node: debugger.exp\7f76091
-Node: Target Dependent\7f77622
-Node: Cross Targets\7f80980
-Node: Input Files\7f86280
-Node: Output Files\7f87772
-Node: Summary\7f88390
-Node: Detail\7f90141
-Node: Debug\7f91993
-Node: Tests\7f95959
-Node: Writing\7f96405
-Node: Debugging\7f98864
-Node: Adding\7f101241
-Node: Hints\7f103253
-Node: Variables\7f106051
-Node: Extending\7f107396
-Node: Adding Tools\7f107928
-Node: Adding Targets\7f116563
-Node: Porting\7f118758
-Node: Installation\7f119227
-Node: Configuring DejaGnu\7f119607
-Node: Installing DejaGnu\7f121510
-Node: Index\7f122634
-\1f
-End Tag Table
+++ /dev/null
-This is Info file dejagnu.info, produced by Makeinfo version 1.68 from
-the input file ./dejagnu.texi.
-
-START-INFO-DIR-ENTRY
-* DejaGnu: (dejagnu). The GNU testing framework.
-END-INFO-DIR-ENTRY
-
- Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided also
-that the entire resulting derived work is distributed under the terms
-of a permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions.
-
-\1f
-File: dejagnu.info, Node: Top, Next: Overview, Up: (dir)
-
-DejaGnu
-*******
-
- DejaGnu is a framework for running test suites on software tools.
-
- This file describes version 1.3 of DejaGnu.
-
-* Menu:
-
-* Overview:: What is DejaGnu?
-* What is New:: What is new in this release.
-* Invoking runtest:: Using `runtest', the main test driver
-* Customizing:: Setting `runtest' defaults
-* Internals:: The DejaGnu implementation
-* Tests:: How to write a test case
-* Extending:: New tools, new targets, and new hosts
-* Installation:: Configuring and Installing DejaGnu
-* Index:: Index
-
-\1f
-File: dejagnu.info, Node: Overview, Next: What is New, Prev: Top, Up: Top
-
-What is DejaGnu?
-****************
-
- DejaGnu is a framework for testing other programs. Its purpose is to
-provide a single front end for all tests. Beyond this, DejaGnu offers
-several advantages for testing:
-
- 1. The flexibility and consistency of the DejaGnu framework make it
- easy to write tests for any program.
-
- 2. DejaGnu provides a layer of abstraction which allows you to write
- tests that are portable to any host or target where a program must
- be tested. For instance, a test for GDB can run (from any Unix
- based host) on any target architecture that DejaGnu supports.
- Currently DejaGnu runs tests on several single board computers,
- whose operating software ranges from just a boot monitor to a
- full-fledged, Unix-like realtime OS.
-
- 3. All tests have the same output format. This makes it easy to
- integrate testing into other software development processes.
- DejaGnu's output is designed to be parsed by other filtering
- script, and it is also human readable.
-
- DejaGnu is written in `expect', which in turn uses "Tcl"--Tool
-command language.
-
- Running tests requires two things: the testing framework, and the
-test suites themselves. Tests are usually written in `expect' using
-Tcl, but you can also use a Tcl script to run a test suite that is not
-based on `expect'. (`expect' script filenames conventionally use
-`.exp' as a suffix; for example, the main implementation of the DejaGnu
-test driver is in the file `runtest.exp'.)
-
-* Menu:
-
-* Running Tests:: A first look at running DejaGnu tests
-* Sample Test:: What does a DejaGnu test case look like?
-* Design Goals:: Goals behind DejaGnu
-* Posix:: DejaGnu conforms to POSIX 1003.3
-* Future Directions:: Where is DejaGnu going?
-* Tcl and Expect:: Reading more about Tcl and Expect
-
-\1f
-File: dejagnu.info, Node: What is New, Next: Invoking runtest, Prev: Overview, Up: Top
-
-What is new in this release ?
-*****************************
-
- This release has a number of substantial changes over version 1.2.
-The most visible change is that the version of expect and Tcl included
-in the release are up-to-date with the current stable net releases.
-Other changes are:
-
- 1. The config sub-system in DejaGnu has been completely redesigned.
- It now supports testing on remote hosts as well as remote targets.
-
- 2. More builtin support for building target binaries with the correct
- linker flags. Currently this only works with GCC, preferably with a
- target support by `libgloss'.
-
- 3. Lots of little bug fixes from a year of heavy use here at Cygnus
- Support.
-
- 4. DejaGnu now uses `autoconf' for configuration.
-
- 5. New test cases for DejaGnu have been added for the new features,
- plus the "-tool" option bug in the 1.2 testsuite has been fixed.
-
- 6. The `--tool' option is now optional.
-
- 7. `runtest' when searching for test drivers ignores all directories
- named SCCS, RCS, and CVS.
-
- 8. There is now a generic keyword based test harness that uses
- comments in source code to control how each test case gets built
- and run.
-
- 9. There is now some support for running a testsuite with multiple
- passes.
-
-
-\1f
-File: dejagnu.info, Node: Running Tests, Next: Sample Test, Up: Overview
-
-Running existing tests
-======================
-
- To run tests from an existing collection, first use `configure' as
-usual to set up the source directory containing the tests. Then try
-running
-
- make check
-
- If the `check' target exists, it usually saves you some trouble--for
-instance, it can set up any auxiliary programs or other files needed by
-the tests.
-
- Once you have run `make check' to build any auxiliary files, you
-might want to call the test driver `runtest' directly to repeat the
-tests. You may also have to call `runtest' directly for test
-collections with no `check' target in the `Makefile'.
-
- Typically, you must use two command-line options: `--tool', to
-specify which set of tests to run(1), and `--srcdir', to specify where
-to find test directories.
-
- For example, if the directory `gdb/testsuite' contains a collection
-of DejaGnu tests for GDB, you can run them like this:
-
- eg$ cd gdb/testsuite
- eg$ runtest --tool gdb
-*Test output follows, ending with:*
-
- === gdb Summary ===
-
- # of expected passes 508
- # of expected failures 103
- /usr/latest/bin/gdb version 4.14.4 -nx
-
- You can use the option `--srcdir' to point to some other directory
-containing a collection of tests:
-
- eg$ runtest --tool gdb --srcdir /devo/gdb/testsuite
-
- These examples assume a "native" configuration, where the same
-computer runs both `runtest' and the tests themselves. When you have a
-"cross" configuration, the tests run on a different computer,
-controlled by the host running `runtest'. In this situation, you need
-the option `--name' to specify the network address for the other
-computer:
-
- eg$ runtest --tool gdb --name vx9.munist.com
-
- If you always use the same option values, you can record them in a
-file called `site.exp', rather than typing them each time. *Note
-Setting defaults for `runtest' options: Config Values.
-
- By default, `runtest' prints only the names of the tests it runs,
-output from any tests that have unexpected results, and a summary
-showing how many tests passed and how many failed. To display output
-from all tests (whether or not they behave as expected), use the
-`--all' option. For more verbose output about processes being run,
-communication, and so on, use `--verbose'. To see even more output, use
-multiple `--verbose' options. *Note Using `runtest': Invoking runtest,
-for a more detailed explanation of each `runtest' option.
-
- Test output goes into two files in your current directory: summary
-output in `TOOL.sum', and detailed output in `TOOL.log'. (TOOL refers
-to the collection of tests; for example, after a run with `--tool gdb',
-look for output files `gdb.sum' and `gdb.log'.) *Note The files
-DejaGnu writes: Output Files.
-
- ---------- Footnotes ----------
-
- (1) `--tool' selects a particular suite of tests, *not* the name of
-the executable program to run. *Note Configuration dependent values:
-Config Values, for information on the variables that you can use to
-specify the names of programs to run.
-
-\1f
-File: dejagnu.info, Node: Sample Test, Next: Design Goals, Prev: Running Tests, Up: Overview
-
-What does a DejaGnu test look like?
-===================================
-
- Each DejaGnu test is an `expect' script; the tests vary widely in
-complexity, depending on the nature of the tool and the feature tested.
-
- Here is a very simple GDB test--one of the simplest tests shipped
-with DejaGnu (extracted from `gdb.t00/echo.exp'):(1)
-
- # send a string to the GDB stdin:
- send "echo Hello world!\n"
-
- # inspect the GDB stdout for the correct reply,
- # and determine whether the test passes or fails:
- expect {
- -re "Hello world.*$prompt $" { pass "Echo test" }
- -re "$prompt $" { fail "Echo test" }
- timeout { fail "(timeout) Echo test" }
- }
-
- Though brief, this example is a complete test. It illustrates some
-of the main features of DejaGnu test scripts:
-
- * The test case does not start the tested program (GDB in this case);
- all test scripts for interactive tools can assume the
- corresponding tool is running.
-
- * Comments start with `#'.
-
- * The main commands you use to control a tested program are `send'
- (to give it commands) and `expect' (to analyze its responses).
-
- * The `expect' command uses a list of pairs; a pattern (regular
- expression if `-re' specified), followed by an action to run if the
- pattern matches output from the program. Only the action for the
- *first* matching pattern will execute.
-
- * Test cases use the commands `pass' and `fail' to record the test
- outcome.
-
- ---------- Footnotes ----------
-
- (1) More recent GDB tests use the `gdb_test' procedure. An
-equivalent test using that procedure is ` gdb_test "echo Hello world!"
-"Hello world!" '
-
-\1f
-File: dejagnu.info, Node: Design Goals, Next: Posix, Prev: Sample Test, Up: Overview
-
-Design goals
-============
-
- DejaGnu grew out of the internal needs of Cygnus Support. Cygnus
-maintains and enhances a variety of free programs in many different
-environments, and we needed a testing tool that:
-
- * is useful to developers while fixing bugs;
-
- * automates running many tests during a software release process;
-
- * is portable among a variety of host computers;
-
- * supports cross-development testing;
-
- * permits testing interactive programs, like GDB; and
-
- * permits testing batch oriented programs, like GCC.
-
- Some of the requirements proved challenging. For example,
-interactive programs do not lend themselves very well to automated
-testing. But all the requirements are important: for instance, it is
-imperative to make sure that GDB works as well when cross-debugging as
-it does in a native configuration.
-
- Probably the greatest challenge was testing in a cross-development
-environment (which can be a real nightmare). Most cross-development
-environments are customized by each developer. Even when buying
-packaged boards from vendors there are many differences. The
-communication interfaces vary from a serial line to ethernet. DejaGnu
-was designed with a modular communication setup, so that each kind of
-communication can be added as required, and supported thereafter. Once
-a communication procedure is coded, any test can use it. Currently
-DejaGnu can use `rsh', `rlogin', `telnet', `tip', `kermit', and
-`mondfe' for remote communications.
-
- Julia Menapace first coined the term "Deja Gnu" to describe an
-earlier testing framework at Cygnus Support. When we replaced it with
-the Expect-based framework, it was like DejaGnu all over again...
-
-\1f
-File: dejagnu.info, Node: Posix, Next: Future Directions, Prev: Design Goals, Up: Overview
-
-A POSIX conforming test framework
-=================================
-
- DejaGnu conforms to the POSIX standard for test frameworks.
-
- POSIX standard 1003.3 defines what a testing framework needs to
-provide, in order to permit the creation of POSIX conformance test
-suites. This standard is primarily oriented to running POSIX
-conformance tests, but its requirements also support testing of features
-not related to POSIX conformance. POSIX 1003.3 does not specify a
-particular testing framework, but at this time there is only one other
-POSIX conforming test framework: TET.(1)
-
- The POSIX documentation refers to "assertions". An assertion is a
-description of behavior. For example, if a standard says "The sun
-shall shine", a corresponding assertion might be "The sun is shining."
-A test based on this assertion would pass or fail depending on whether
-it is daytime or nighttime. It is important to note that the standard
-being tested is never 1003.3; the standard being tested is some other
-standard, for which the assertions were written.
-
- As there is no test suite to test *testing frameworks* for POSIX
-1003.3 conformance, verifying conformance to this standard is done by
-repeatedly reading the standard and experimenting. One of the main
-things 1003.3 does specify is the set of allowed output messages, and
-their definitions. Four messages are supported for a required feature
-of POSIX conforming systems, and a fifth for a conditional feature.
-DejaGnu supports the use of all five output messages; in this sense a
-test suite that uses exactly these messages can be considered POSIX
-conforming. These definitions specify the output of a test case:
-
-`PASS'
- A test has succeeded. That is, it demonstrated that the assertion
- is true.
-
-`XFAIL'
- POSIX 1003.3 does not incorporate the notion of expected failures,
- so `PASS', instead of `XPASS', must also be returned for test
- cases which were expected to fail and did not. This means that
- `PASS' is in some sense more ambiguous than if `XPASS' is also
- used. For information on `XPASS' and `XFAIL', see *Note Using
- `runtest': Invoking runtest.
-
-`FAIL'
- A test *has* produced the bug it was intended to capture. That is,
- it has demonstrated that the assertion is false. The `FAIL'
- message is based on the test case only. Other messages are used to
- indicate a failure of the framework.
-
- As with `PASS', POSIX tests must return `FAIL' rather than `XFAIL'
- even if a failure was expected.
-
-`UNRESOLVED'
- A test produced indeterminate results. Usually, this means the
- test executed in an unexpected fashion; this outcome requires that
- a human being go over results, to determine if the test should
- have passed or failed. This message is also used for any test
- that requires human intervention because it is beyond the
- abilities of the testing framework. Any unresolved test should
- resolved to `PASS' or `FAIL' before a test run can be considered
- finished.
-
- Note that for POSIX, each assertion must produce a test result
- code. If the test isn't actually run, it must produce `UNRESOLVED'
- rather than just leaving that test out of the output. This means
- that you have to be careful when writing tests, to not carelessly
- use tcl statements like `return'--if you alter the flow of control
- of the tcl code you must insure that every test still produces
- some result code.
-
- Here are some of the ways a test may wind up `UNRESOLVED':
-
- * A test's execution is interrupted.
-
- * A test does not produce a clear result. This is usually
- because there was an `ERROR' from DejaGnu while processing
- the test, or because there were three or more `WARNING'
- messages. Any `WARNING' or `ERROR' messages can invalidate
- the output of the test. This usually requires a human being
- to examine the output to determine what really happened--and
- to improve the test case.
-
- * A test depends on a previous test, which fails.
-
- * The test was set up incorrectly.
-
-`UNTESTED'
- A test was not run. This is a placeholder, used when there is no
- real test case yet.
-
-The only remaining output message left is intended to test features that
-are specified by the applicable POSIX standard as conditional:
-
-`UNSUPPORTED'
- There is no support for the tested case. This may mean that a
- conditional feature of an operating system, or of a compiler, is
- not implemented. DejaGnu also uses this message when a testing
- environment (often a "bare board" target) lacks basic support for
- compiling or running the test case. For example, a test for the
- system subroutine `gethostname' would never work on a target board
- running only a boot monitor.
-
- DejaGnu uses the same output procedures to produce these messages for
-all test suites, and these procedures are already known to conform to
-POSIX 1003.3. For a DejaGnu test suite to conform to POSIX 1003.3, you
-must avoid the `setup_xfail' procedure as described in the `PASS'
-section above, and you must be careful to return `UNRESOLVED' where
-appropriate, as described in the `UNRESOLVED' section above.
-
- ---------- Footnotes ----------
-
- (1) TET was created by Unisoft for a consortium comprised of X/Open,
-Unix International, and the Open Software Foundation.
-
-\1f
-File: dejagnu.info, Node: Future Directions, Next: Tcl and Expect, Prev: Posix, Up: Overview
-
-Future directions
-=================
-
- In the near future, there are two parallel directions for DejaGnu
-development. The first is to add support for more hosts and targets.
-
- The second would permit testing programs with a more complex
-interface, whether text based or GUI based. Two components already
-exist: a Tcl based X window toolkit, and a terminal package for
-`expect'. Both of these could be merged into DejaGnu in a way that
-permits testing programs that run in each environment.
-
- Meanwhile, we hope DejaGnu enables the creation of test suites for
-conformance to ANSI C and C++, to POSIX, and to other standards. We
-encourage you to make any test suites you create freely available,
-under the same terms as DejaGnu itself.
-
-\1f
-File: dejagnu.info, Node: Tcl and Expect, Prev: Future Directions, Up: Overview
-
-Tcl and Expect
-==============
-
- Tcl was introduced in a paper by John K. Ousterhout at the 1990
-Winter Usenix conference, `Tcl: An Embeddable Command Language'. That
-paper is included in PostScript form in the `doc' subdirectory of the
-Tcl distribution. The version of Tcl included in DejaGnu at this time is
-Tcl 7.4p3.
-
- Don Libes introduced `expect' in his paper `expect: Curing Those
-Uncontrollable Fits of Interaction' at the 1990 Summer Usenix
-conference. The paper is included in PostScript form in the `expect'
-distribution (as are several other papers about `expect'). The version
-of expect included in DejaGnu at this time is expect 5.18.0.
-
-\1f
-File: dejagnu.info, Node: Invoking runtest, Next: Customizing, Prev: What is New, Up: Top
-
-Using `runtest'
-***************
-
- `runtest' is the executable test driver for DejaGnu. You can
-specify two kinds of things on the `runtest' command line: command line
-options, and Tcl variables for the test scripts. The options are
-listed alphabetically below.
-
- `runtest' returns an exit code of `1' if any test has an unexpected
-result; otherwise (if all tests pass or fail as expected) it returns
-`0' as the exit code.
-
- `runtest' flags the outcome of each test as one of these cases.
-(*Note A POSIX conforming test framework: Posix, for a discussion of
-how POSIX specifies the meanings of these cases.)
-
-`PASS'
- The most desirable outcome: the test succeeded, and was expected to
- succeed.
-
-`XPASS'
- A pleasant kind of failure: a test was expected to fail, but
- succeeded. This may indicate progress; inspect the test case to
- determine whether you should amend it to stop expecting failure.
-
-`FAIL'
- A test failed, although it was expected to succeed. This may
- indicate regress; inspect the test case and the failing software
- to locate the bug.
-
-`XFAIL'
- A test failed, but it was expected to fail. This result indicates
- no change in a known bug. If a test fails because the operating
- system where the test runs lacks some facility required by the
- test, the outcome is `UNSUPPORTED' instead.
-
-`UNRESOLVED'
- Output from a test requires manual inspection; the test suite
- could not automatically determine the outcome. For example, your
- tests can report this outcome is when a test does not complete as
- expected.
-
-`UNTESTED'
- A test case is not yet complete, and in particular cannot yet
- produce a `PASS' or `FAIL'. You can also use this outcome in dummy
- "tests" that note explicitly the absence of a real test case for a
- particular property.
-
-`UNSUPPORTED'
- A test depends on a conditionally available feature that does not
- exist (in the configured testing environment). For example, you
- can use this outcome to report on a test case that does not work
- on a particular target because its operating system support does
- not include a required subroutine.
-
- `runtest' may also display the following messages:
-
-`ERROR'
- Indicates a major problem (detected by the test case itself) in
- running the test. This is usually an unrecoverable error, such as
- a missing file or loss of communication to the target. (POSIX
- test suites should not emit this message; use `UNSUPPORTED',
- `UNTESTED', or `UNRESOLVED' instead, as appropriate.)
-
-`WARNING'
- Indicates a possible problem in running the test. Usually warnings
- correspond to recoverable errors, or display an important message
- about the following tests.
-
-`NOTE'
- An informational message about the test case.
-
- This is the full set of command line options that `runtest'
-recognizes. Arguments may be abbreviated to the shortest unique string.
-
- runtest --tool TOOL [ TESTSUITE.exp ... ]
- [ TESTSUITE.exp="testfile1 ..." ]
- [ TCLVAR=VALUE... ]
- [ --all ] [ --baud BAUD-RATE ] [ --connect TYPE ]
- [ --debug ] [ --help ] [ --host STRING ]
- [ --mail "NAME ..." ] [ --name STRING ]
- [ --name NAME ] [ --outdir PATH ]
- [ --objdir PATH ] [ --reboot ]
- [ --srcdir PATH ] [ --strace N ]
- [ --target STRING --build STRING ]
- [ -v | --verbose ] [ -V | --version ] [ --DN ]
-
-`--tool TOOL'
- TOOL specifies what set of tests to run, and what initialization
- module to use. TOOL is used *only* for these two purposes: it is
- *not* used to name the executable program to test. Executable
- tool names (and paths) are recorded in `site.exp' (*note
- Configuration dependent values: Config Values.), and you can
- override them by specifying Tcl variables on the command line.
-
- For example, including `--tool gcc' on the `runtest' command line
- runs tests from all test subdirectories whose names match `gcc.*',
- and uses one of the initialization modules named
- `config/*-gcc.exp'. To specify the name of the compiler (perhaps
- as an alternative path to what `runtest' would use by default), use
- `GCC=BINNAME' on the `runtest' command line.
-
-`TESTSUITE.exp ...'
- Specify the names of testsuites to run. By default, `runtest'
- runs all tests for the tool, but you can restrict it to particular
- testsuites by giving the names of the `.exp' `expect' scripts that
- control them.
-
- TESTSUITE.exp may not include path information; use plain
- filenames.
-
-`TESTFILE.exp="testfile1 ..."'
- Specify a subset of tests in a suite to run. For compiler or
- assembler tests, which often use a single `.exp' script covering
- many different source files, this option allows you to further
- restrict the tests by listing particular source files to compile.
- Some tools even support wildcards here. The wildcards supported
- depend upon the tool, but typically they are `?', `*', and
- `[chars]'.
-
-`TCLVAR=VALUE'
- You can define Tcl variables for use by your test scripts in the
- same style used with `make' for environment variables. For
- example, `runtest GDB=gdb.old' defines a variable called `GDB';
- when your scripts refer to `$GDB' in this run, they use the value
- `gdb.old'.
-
- The default Tcl variables used for most tools are defined in the
- main DejaGnu `Makefile'; their values are captured in the
- `site.exp' file. *Note Configuration dependent values: Config
- Values.
-
-`--all'
- Display all test output. By default, `runtest' shows only the
- output of tests that produce unexpected results; that is, tests
- with status `FAIL' (unexpected failure), `XPASS' (unexpected
- success), or `ERROR' (a severe error in the test case itself).
- Specify `--all' to see output for tests with status `PASS'
- (success, as expected) `XFAIL' (failure, as expected), or
- `WARNING' (minor error in the test case itself).
-
-`--baud BAUD-RATE'
-`-b BAUD-RATE'
- Set the default baud rate to something other than 9600. (Some
- serial interface programs, like `tip', use a separate
- initialization file instead of this value.)
-
-`--connect TYPE'
- Connect to a target testing environment as specified by TYPE, if
- the target is not the computer running `runtest'. For example, use
- `--connect' to change the program used to connect to a "bare
- board" boot monitor. The choices for TYPE in the DejaGnu 1.0
- distribution are `rlogin', `telnet', `rsh', `tip', `kermit', and
- `mondfe'.
-
- The default for this option depends on the configuration (*note
- Remote targets supported: Cross Targets.). The default is chosen
- to be the most convenient communication method available, but
- often other alternatives work as well; you may find it useful to
- try alternative connect methods if you suspect a communication
- problem with your testing target.
-
-`--debug'
- Turns on the `expect' internal debugging output. Debugging output
- is displayed as part of the `runtest' output, and logged to a file
- called `dbg.log'. The extra debugging output does *not* appear on
- standard output, unless the verbose level is greater than 2 (for
- instance, to see debug output immediately, specify `--debug -v
- -v'). The debugging output shows all attempts at matching the test
- output of the tool with the scripted patterns describing expected
- output. The output generated with `--strace' also goes into
- `dbg.log'.
-
-`--help'
-`-he'
- Prints out a short summary of the `runtest' options, then exits
- (even if you also specify other options).
-
-`--host STRING'
- STRING is a full configuration "triple" name as used by
- `configure'. Use this option to override the default string
- recorded by your configuration's choice of host. This choice does
- not change how anything is actually configured unless -build is
- also specified; it affects *only* DejaGnu procedures that compare
- the host string with particular values. The procedures `ishost',
- `istarget', `isnative', and `setup_xfail' are affected by
- `--host'. In this usage, `host' refers to the machine that the
- tests are to be run on, which may not be the same as the `build'
- machine. If `--build' is also specified, then `--host' refers to
- the machine that the tests wil, be run on, not the machine DejaGnu
- is run on.
-
-`--build STRING'
- STRING is a full configuration "triple" name as used by
- `configure'. This is the type of machine DejaGnu and the tools to
- be tested are built on. For a normal cross this is the same as the
- host, but for a canadian cross, they are seperate.
-
-`--name NAME'
- NAME is a name for the particular testing target machine (for
- cross testing). If the testing target has IP network support (for
- example, `RPC' or `NFS'), this is the network name for the target
- itself. (NAME is *not the configuration string* you specify as a
- target with `configure'; the `--name' option names a particular
- target, rather than describing a class of targets.) For targets
- that connect in other ways, the meaning of the NAME string depends
- on the connection method. *Note Remote targets supported: Cross
- Targets.
-
-`--name STRING'
- Specify a network name of testing target or its host. The
- particular names that are meaningful with `--name' will depend on
- your site configuration, and on the connection protocol: for
- example, `tip' connections require names from a serial line
- configuration file (usually called `/etc/remote'), while `telnet'
- connections use IP hostnames.
-
-`--objdir PATH'
- Use PATH as the top directory containing any auxiliary compiled
- test code. This defaults to `.'. Use this option to locate
- pre-compiled test code. You can normally prepare any auxiliary
- files needed with `make'.
-
-`--outdir PATH'
- Write output logs in directory PATH. The default is `.', the
- directory where you start `runtest'. This option affects only the
- summary and the detailed log files `TOOL.sum' and `TOOL.log'. The
- DejaGnu debug log `dbg.log' always appears (when requested) in the
- local directory.
-
-`--reboot'
- Reboot the target board when `runtest' initializes. Usually, when
- running tests on a separate target board, it is safer to reboot
- the target to be certain of its state. However, when developing
- test scripts, rebooting takes a lot of time.
-
-`--srcdir PATH'
- Use PATH as the top directory for test scripts to run. `runtest'
- looks in this directory for any subdirectory whose name begins
- with the toolname (specified with `--tool'). For instance, with
- `--tool gdb', `runtest' uses tests in subdirectories `gdb.*' (with
- the usual shell-like filename expansion). If you do not use
- `--srcdir', `runtest' looks for test directories under the current
- working directory.
-
-`--strace N'
- Turn on internal tracing for `expect', to N levels deep. By
- adjusting the level, you can control the extent to which your
- output expands multi-level Tcl statements. This allows you to
- ignore some levels of `case' or `if' statements. Each procedure
- call or control structure counts as one "level".
-
- The output is recorded in the same file, `dbg.log', used for output
- from `--debug'.
-
-`--target STRING'
- Use this option to override the default setting (running native
- tests). STRING is a full configuration "triple" name(1) as used
- by `configure'. This option changes the configuration `runtest'
- uses for the default tool names, and other setup information.
- *Note Using `configure': (configure.info)Using configure, for
- details about `configure' names.
-
-`--verbose'
-`-v'
- Turns on more output. Repeating this option increases the amount
- of output displayed. Level one (`-v') is simply test output. Level
- two (`-v -v') shows messages on options, configuration, and process
- control. Verbose messages appear in the detailed (`*.log') log
- file, but not in the summary (`*.sum') log file.
-
-`--version'
-`-V'
- Prints out the version numbers of DejaGnu, `expect' and Tcl, and
- exits without running any tests.
-
-`-D0'
-`-D1'
- Start the internal Tcl debugger. The Tcl debugger supports
- breakpoints, single stepping, and other common debugging
- activities. (See `A Debugger for Tcl Applications' by Don Libes.
- (2))
-
- If you specify `-D1', the `expect' shell stops at a breakpoint as
- soon as DejaGnu invokes it.
-
- If you specify `-D0', DejaGnu starts as usual, but you can enter
- the debugger by sending an interrupt (e.g. by typing <C-c>).
-
- ---------- Footnotes ----------
-
- (1) Configuration triples have the form `CPU-VENDOR-OS'.
-
- (2) Distributed in PostScript form with `expect' as the file
-`expect/tcl-debug.ps'.
-
-\1f
-File: dejagnu.info, Node: Customizing, Next: Internals, Prev: Invoking runtest, Up: Top
-
-Setting `runtest' defaults
-**************************
-
- The site configuration file, `site.exp', captures
-configuration-dependent values and propagates them to the DejaGnu test
-environment using Tcl variables. This ties the DejaGnu test scripts
-into the `configure' and `make' programs.
-
- DejaGnu supports more than one `site.exp' file. The multiple
-instances of `site.exp' are loaded in a fixed order built into DejaGnu
-(the more local last). The first file loaded is the optional
-`~/.dejagnurc', then the local files, and finally the global file.
-
- 1. There is am optional "master" `site.exp', capturing configuration
- values that apply to DejaGnu across the board, in each
- configuration-specific subdirectory of the DejaGnu library
- directory. `runtest' loads these values first. *Note Configuring
- and Installing DejaGnu: Installation. The master `site.exp'
- contains the default values for all targets and hosts supported by
- DejaGnu. This master file is identified by setting the environment
- variable `DEJAGNU' to the name of the file. This is also refered
- to as the "global" config file.
-
- 2. Any directory containing a configured test suite also has a
- `site.exp', capturing configuration values specific to the tool
- under test. Since `runtest' loads these values last, the
- individual test configuration can either rely on and use, or
- override, any of the global values from the "master" `site.exp'.
-
- You can usually generate or update the testsuite `site.exp' by
- typing `make site.exp' in the test suite directory, after the test
- suite is configured.
-
- 3. You can also have a file in your home directory called
- `.dejagnurc'. This gets loaded first before the other config
- files. Usually this is used for personal stuff, like setting
- `all_flag' so all the output gets printed, or verbosity levels.
-
- You can further override the default values in a user-editable
-section of any `site.exp', or by setting variables on the `runtest'
-command line.
-
-* Menu:
-
-* Config Values:: Variables used in the configuration file.
-* Master Config File:: The master configuration file.
-* Local Config File:: The local configuration file.
-* Personal Config File:: The personal configuration file.
-
-\1f
-File: dejagnu.info, Node: Config Values, Next: Master Config File, Up: Customizing
-
-Config Variables
-----------------
-
- DejaGnu uses a named array in Tcl to hold all the info for each
-machine. In the case of a canadian cross, this means host information as
-well as target information. The named array is called `target_info',
-and it has two indices. The following fields are part of the array.
-
-`name'
- The name of the target. (mostly for error messages) This should
- also be the string used for this target's array. It should also
- be the same as the linker script so we can find them dynamically.
- This should be the same as the argument used for `push_target{}'.
-
-`ldflags'
- This is the linker flags required to produce a fully linked
- executable. For `libgloss' supported targets this is usually just
- the name of the linker script.
-
-`config'
- The target canonical for this target. This is used by some init
- files to make sure the target is supported.
-
-`cflags'
- The flags required to produce an object file from a source file.
-
-`connect'
- This is the connectmode for this target. This is for both IP and
- serial connections. Typically this is either `telnet', `rlogin',
- or `rsh'.
-
-`target'
- This is the hostname of the target. This is for TCP/IP based
- connections, and is also used for version of tip that use
- /etc/remote.
-
-`serial'
- This is the serial port. This is typically /dev/tty? or com?:.
-
-`netport'
- This is the IP port. This is commonly used for telneting to target
- boards that are connected to a terminal server. In that case the
- IP port specifies the which serial port to use.
-
-`baud'
- This is the baud rate for a serial port connection.
-
-`x10'
- This is the parameters for an x10 controller. These are simple
- devices that let us power cycle or reset a target board remotely.
-
-`fileid'
- This is the fileid or spawn id of of the connection.
-
-`prompt'
- a glob style pattern to recognize the prompt.
-
-`abbrev'
- abbreviation for tool init files.
-
-`ioport'
- This is the port for I/O on dual port systems. In this
- configuration, the main serial port `0' is usually used for stdin
- and stdout, which the second serial port can be used for debugging.
-
- The first index into the array is the same value as used in the
-`name' field. This is usually a short version of the name of the target
-board. For an example, here's the settings I use for my `Motorola's'
-`IDP' board and my `Motorola' 6U VME `MVME135-1' board. (both m68k
-targets)
-
- # IDP board
- set target_info(idp,name) "idp"
- set target_info(idp,ldflags) "-Tidp.ld"
- set target_info(idp,config) m68k-unknown-aout
- set target_info(idp,cflags) ""
- set target_info(idp,connect) telnet
- set target_info(idp,target) "s7"
- set target_info(idp,serial) "tstty7"
- set target_info(idp,netport) "wharfrat:1007"
- set target_info(idp,baud) "9600"
- # MVME 135 board
- set target_info(idp,name) "mvme"
- set target_info(idp,ldflags) "-Tmvme.ld"
- set target_info(idp,config) m68k-unknown-aout
- set target_info(idp,cflags) ""
- set target_info(idp,connect) telnet
- set target_info(idp,target) "s8"
- set target_info(idp,serial) "tstty8"
- set target_info(idp,netport) "wharfrat:1008"
- set target_info(idp,baud) "9600"
-
- DejaGnu can use this information to switch between multiple targets
-in one test run. This is done through the use of the `push_target'
-procedure, which is discussed elsewhere.
-
- This array can also hold information for a remote host, which is used
-when testing a candain cross. In this case, the only thing different is
-the index is just `host'. Here's the settings I use to run tests on my
-NT machine while running DejaGnu on a Unix machine. (in this case a
-Linux box)
-
- set target_info(host,name) "nt-host"
- set target_info(host,config) "386-unknown-winnt"
- set target_info(host,connect) "telnet"
- set target_info(host,target) "ripple"
-
- There is more info on how to use these variables in the sections on
-the config files. *Note Configuration Files: Master Config File.
-
- In the user editable second section of `site.exp', you can not only
-override the configuration variables captured in the first section, but
-also specify default values for all the `runtest' command line options.
-Save for `--debug', `--help', and `--version', each command line
-option has an associated Tcl variable. Use the Tcl `set' command to
-specify a new default value (as for the configuration variables). The
-following table describes the correspondence between command line
-options and variables you can set in `site.exp'. *Note Running the
-Tests: Invoking runtest, for explanations of the command-line options.
-
- runtest Tcl
- option variable description
- __________ ________ ___________________________________________
-
- --all all_flag display all test results if set
-
- --baud baud set the default baud rate to something other
- than 9600.
- --connect connectmode `rlogin', `telnet', `rsh',
- `kermit', `tip', or `mondfe'
-
- --outdir outdir directory for `TOOL.sum' and `TOOL.log'
-
- --objdir objdir directory for pre-compiled binaries
-
- --reboot reboot reboot the target if set to `"1"';
- do not reboot if set to `"0"' (the default)
-
- --srcdir srcdir directory of test subdirectories
-
- --strace tracelevel a number: Tcl trace depth
-
- --tool tool name of tool to test; identifies init, test subdir
-
- --verbose verbose verbosity level. As option, use multiple times;
- as variable, set a number, 0 or greater
- --target target_triplet The canonical configuration string for the target.
- --host host_triplet The canonical configuration string for the host.
- --build build_triplet The canonical configuration string for the
- build host.
-
-\1f
-File: dejagnu.info, Node: Master Config File, Next: Local Config File, Prev: Config Values, Up: Customizing
-
-Master Config File
-------------------
-
- The master config file is where all the target specific config
-variables get set for a whole site get set. The idea is that for a
-centralized testing lab where people have to share a target between
-multiple developers. There are settings for both remote targets and
-remote hosts. Here's an example of a Master Config File (also called
-the Global config file) for a *canadian cross*. A canadian cross is
-when you build and test a cross compiler on a machine other than the
-one it's to be hosted on.
-
- Here we have the config settings for our California office. Note that
-all config values are site dependant. Here we have two sets of values
-that we use for testing m68k-aout cross compilers. As both of these
-target boards has a different debugging protocol, we test on both of
-them in sequence.
-
- global CFLAGS
- global CXXFLAGS
-
- case "$target_triplet" in {
- { "native" } {
- set target_abbrev unix
- }
- { "m68*-unknown-aout" } {
- set target_abbrev "rom68k"
- # IDP target # IDP board with rom68k monitor
- set target_info(idp,name) "idp"
- set target_info(idp,ldflags) "-Tidp.ld"
- set target_info(idp,config) m68k-unknown-aout
- set target_info(idp,cflags) ""
- set target_info(idp,connect) telnet
- set target_info(idp,target) "s7"
- set target_info(idp,serial) "tstty12"
- set target_info(idp,netport) "truckin:1007"
- set target_info(idp,baud) "9600"
- # MVME target # Motorola MVME 135 with BUG monitor
- set target_info(mvme,name) "mvme"
- set target_info(mvme,ldflags) "-Tmvme.ld"
- set target_info(mvme,config) m68k-unknown-aout
- set target_info(mvme,cflags) ""
- set target_info(mvme,connect) telnet
- set target_info(mvme,target) "s4"
- set target_info(mvme,serial) "tstty8"
- set target_info(mvme,netport) "truckin:1004"
- set target_info(mvme,baud) "9600"
- }
- }
-
- In this case, we have support for several remote hosts for our
-m68k-aout cross compiler. Typically the remote Unix hosts run DejaGnu
-locally, but we also use them for debugging the testsuites when we find
-problems in running on remote hosts. Expect won't run on NT, so DejaGnu
-is run on the local build machine, and it'll connect to the NT host and
-run all the tests for this cross compiler on that host.
-
- case "$host_triplet" in {
- "native" {
- }
- "i?86-*-linux*" { # Linux host
- set target_info(host,name) "linux-host"
- set target_info(host,config) $host_triplet
- set target_info(host,connect) rlogin
- set target_info(host,target) chinadoll
- }
- "i?86-*-winnt # NT host
- set target_info(host,name) "nt-host"
- set target_info(host,config) i386-unknown-winnt
- set target_info(host,connect) telnet
- set target_info(host,target) ripple
- }
- "hppa*-hp-hpux*" { # HP-UX host
- set target_info(host,name) "hpux-host"
- set target_info(host,config) $host_triplet
- set target_info(host,connect) rlogin
- set target_info(host,target) slipknot
- }
- "sparc-sun-sunos*" { # SunOS (sun4)
- set target_info(host,name) "sunos-host"
- set target_info(host,config) $host_triplet
- set target_info(host,connect) rlogin
- set target_info(host,target) darkstar
- }
- }
-
-\1f
-File: dejagnu.info, Node: Local Config File, Next: Personal Config File, Prev: Master Config File, Up: Customizing
-
-Local Config File
------------------
-
- It is usually more convenient to keep these "manual overrides" in the
-`site.exp' local to each test directory, rather than in the "master"
-`site.exp' in the DejaGnu library.
-
- All local `site.exp' usually files have two sections, separated by
-comment text. The first section is the part that is generated by
-`make'. It is essentially a collection of Tcl variable definitions
-based on `Makefile' environment variables. Since they are generated by
-`make', they contain the values as specified by `configure'. (You can
-also customize these values by using the `--site' option to
-`configure'.) In particular, this section contains the `Makefile'
-variables for host and target configuration data. Do not edit this
-first section; if you do, your changes are replaced next time you run
-`make'.
-
- The first section starts with:
-
- ## these variables are automatically generated by make ##
- # Do not edit here. If you wish to override these values
- # add them to the last section
-
- In the second section, you can override any default values (locally
-to DejaGnu) for all the variables. The second section can also contain
-your preferred defaults for all the command line options to `runtest'.
-This allows you to easily customize `runtest' for your preferences in
-each configured test-suite tree, so that you need not type options
-repeatedly on the command line. (The second section may also be empty,
-if you do not wish to override any defaults.)
-
- The first section ends with this line:
-
- ## All variables above are generated by configure. Do Not Edit ##
-
- You can make any changes under this line. If you wish to redefine a
-variable in the top section, then just put a duplicate value in this
-second section. Usually the values defined in this config file are
-related to the configuration of the test run. This is the ideal place to
-set the variables `host_triplet', `build_triplet', `target_triplet'.
-All other variables are tool dependant. ie for testing a compiler, the
-value for CC might be set to a freshly built binary, as opposed to one
-in the user's path.
-
-\1f
-File: dejagnu.info, Node: Personal Config File, Prev: Local Config File, Up: Customizing
-
-Personal Config File
---------------------
-
- The personal config file is used to customize `runtest's' behaviour
-for each person. It's typically used to set the user prefered setting
-for verbosity, and any experimental Tcl procedures. My personal
-`~/.dejagnurc' file looks like:
-
- set all_flag 1
- set RLOGIN /usr/ucb/rlogin
- set RSH /usr/ucb/rsh
-
- Here I set `all_flag' so I see all the test cases that PASS along
-with the ones that FAIL. I also set RLOGIN and `RSH' to the BSD
-version. I have `kerberos' installed, and when I rlogin to a target
-board, it usually isn't supported. So I use the non secure versions of
-these programs rather than the default that's in my path.
-
-\1f
-File: dejagnu.info, Node: Internals, Next: Tests, Prev: Customizing, Up: Top
-
-The DejaGnu Implementation
-**************************
-
- DejaGnu is entirely written in `expect', which uses Tcl as a command
-language. `expect' serves as a very programmable shell; you can run
-any program, as with the usual Unix command shells--but once the
-program is started, your `expect' script has fully programmable control
-of its input and output. This does not just apply to the programs
-under test; `expect' can also run any auxiliary program, such as `diff'
-or `sh', with full control over its input and output.
-
- DejaGnu itself is merely a framework for the set of test suites
-distributed separately for each GNU tool. Future releases of GNU tools
-will include even more tests, developed throughout the free software
-community.
-
- `runtest' is the glue to tie together and manage the test scripts.
-The `runtest' program is actually a simple Bourne shell script that
-locates a copy of the `expect' shell and then starts the main Tcl code,
-`runtest.exp'. `runtest.exp' itself has these essential functions:
-
- 1. Parse the command line options, load the library files, and load
- the default configuration files.
-
- 2. Locating the individual test scripts. `runtest.exp' locates the
- tests by exploiting a straightforward naming convention based on
- the string you specify with the `--tool' option.
-
- 3. Providing an extended test environment, by defining additional Tcl
- procedures beyond those already in `expect'.
-
- 4. Locating target-dependent functions, to standardize the test
- environment across a wide variety of test platforms.
-
-* Menu:
-
-* Names:: Conventions for using tool names
-* Init Module:: Initialization module
-* DejaGnu Builtins:: DejaGnu provides these Tcl procedures
-* Target Dependent:: Procedures supplied by the init module
-* Cross Targets:: Remote targets supported
-* Input Files:: The files DejaGnu depends on
-* Output Files:: The files DejaGnu produces
-
+++ /dev/null
-This is Info file dejagnu.info, produced by Makeinfo version 1.68 from
-the input file ./dejagnu.texi.
-
-START-INFO-DIR-ENTRY
-* DejaGnu: (dejagnu). The GNU testing framework.
-END-INFO-DIR-ENTRY
-
- Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided also
-that the entire resulting derived work is distributed under the terms
-of a permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions.
-
-\1f
-File: dejagnu.info, Node: Names, Next: Init Module, Up: Internals
-
-Conventions for using tool names
-================================
-
- DejaGnu uses `$tool', the name of the tool under test, to tie
-together the testing configuration in a straightforward but flexible
-way. If there is only one testsuite for a particular application, then
-`$tool' is optional.
-
- `$tool' is *not* used to invoke the tool, since sites that run
-multiple configurations of a particular tool often call each
-configuration by a different name. `runtest' uses the
-configuration-dependent variables captured in `site.exp' to determine
-how to call each tool.
-
- `runtest' uses tool names to find directories containing tests.
-`runtest' scans the source directory (specified with `--srcdir') for
-all directories whose names start with the tool name. It is a common
-practice to put a period after the tool part of the name. For instance,
-directories that start with `g++.' contain G++ tests. To add a new
-test, just put it in any directory (create an entirely new directory,
-if you wish) whose name follows this convention.
-
- A test is any file in an appropriately named subdirectory whose name
-ends in `.exp' (the conventional way of naming `expect' scripts).
-These simple naming conventions make it as simple as possible to
-install new tests: all you must do is put the test in the right
-directory.
-
- `runtest' sorts the tests in each subdirectory by name (using the
-Tcl `lsort' command) and runs them in the resulting order.
-
-\1f
-File: dejagnu.info, Node: Init Module, Next: DejaGnu Builtins, Prev: Names, Up: Internals
-
-Initialization module
-=====================
-
- The initialization module (or "init file") has two purposes: to
-provide tool and target dependent procedures, and to start up an
-interactive tool to the point where it is ready to operate. The latter
-includes establishing communications with the target. All the tests for
-interactive programs assume that the tool is already running and
-communicating. Initialization modules for non-interactive programs may
-only need to supply the support functions.
-
- Each test suite directory must contain (in its `config'
-subdirectory) a separate initialization module for each target. The
-appropriate init file is can be named several ways. The prefered name is
-the *os* part of the canonical configuration name with `.exp' as the
-suffix. An example would be that for an `m68k-coff' system, the
-`target_os' part would be `coff'. The next way is for system where
-there are short filenames, or a shortcut is desired to refer to the OS
-name for that target. This is uses the value of `$target_abbrev' rather
-than the `target_os'.
-
- The final file looked for is simply `default.exp'. If there is only
-one operating system to support, then this file can be used. It's main
-purpose is to offer some support for new operating systems, or for
-unsupported cross targets. The last file looked for is `unknown.exp'.
-This is usually limited to error handling for unsupported targets. It's
-whole contents is typically.
-
- perror "Sorry, there is no support for this target"
- exit 1
-
- At the beginning of the init file, you must first determine the
-proper executable name of the tool to execute, since the actual name of
-the tool to be tested my vary from system to system. Here's an example
-for the GNU C compiler.
-
- global AR
- # look for the archiver ar
- if ![info exists AR] {
- set AR [findfile $base_dir/../../binutils/ar $base_dir/../../binutils/ar [tr
- ansform ar]]
- verbose "AR defaulting to $AR" 2
- }
- }
-
- global CFLAGS
- if ![info exists CFLAGS] then {
- set CFLAGS ""
- }
-
- It is always a good idea to first check the variable, and only set
-it if it has not yet been defined. Often the proper value of `AR' is
-set on the command line that invokes `runtest'.
-
- The `findfile' procedure takes as it's first argument a file name to
-look for. The second argument is returned if the file is found, and the
-third argument is returned if the file is not found. `base_dir' is set
-internally by DejaGnu to the top level directory of the object tree.
-
- The `transform' procedure takes as its argument the native name of a
-tool (such as `gcc' for the compiler), and returns the name as
-configured for that tool in the current installation. (For example, a
-cross-compiling version of GNU CC that generates MIPS code may be
-installed with a name like `mips-idt-ecoff-gcc'.)
-
- In a test running native, writing the Tcl code for initialization is
-usually quite simple. For cross configurations, however, more elaborate
-instructions are usually needed to describe how to talk to a remote
-target.
-
- Each initialization module defines up to four procedures with
-standard names and purposes. The names of these procedures begin with
-`$tool', the string that identifies tests for a particular tool:
-`$tool_start', `$tool_load', `$tool_exit', and `$tool_version'. For
-example, the start procedure for GDB is called `gdb_start'. (Since
-start procedures are used differently for batch and interactive tools,
-however, `runtest' itself never calls the start procedure. Init files
-for interactive tools are expected to end by running the start
-procedure.)
-
- The initialization module is also a good place to call `load_lib' to
-get any collections of utility procedures meant for a family of test
-cases, and to set up default values for any additional Tcl variables
-needed for a specific set of tests.
-
- *Note Target dependent procedures: Target Dependent, for full
-descriptions of these procedures.
-
-\1f
-File: dejagnu.info, Node: DejaGnu Builtins, Next: Target Dependent, Prev: Init Module, Up: Internals
-
-DejaGnu procedures
-==================
-
- DejaGnu provides these Tcl procedures for use in test scripts. You
-can also use any standard `expect' or Tcl function. These procedures
-are stored in libraries, which DejaGnu loads at runtime. Here's
-explanation of the library procedures that get loaded at runtime. All
-other librarys are optional, and need to be loaded by the testsuite.
-
-* Menu:
-
-* framework.exp:: Core Internal Procedures.
-* remote.exp:: Procedures for remote communication.
-* utils.exp:: Utility procedures.
-* target.exp:: Cross target procedures.
-* debugger.exp:: Procedures for debugging your Tcl code.
-
-\1f
-File: dejagnu.info, Node: framework.exp, Next: remote.exp, Up: DejaGnu Builtins
-
-Core Internal Procedures
-------------------------
-
- *Note A POSIX conforming test framework: Posix, for more detailed
-explanations of the test outcomes (`FAIL', `PASS', `UNTESTED',
-`UNRESOLVED', `UNSUPPORTED').
-
-`perror "STRING NUMBER"'
- Declares a severe error in the testing framework itself. `perror'
- writes in the log files a message beginning with `ERROR',
- appending the argument STRING. If the optional NUMBER is supplied,
- then this is used to set the internal count of errors to that
- value.
-
- As a side effect, `perror' also changes the effect of the next
- `pass' or `fail' command: the test outcome becomes `UNRESOLVED',
- since an automatic `PASS' or `FAIL' cannot be trusted after a
- severe error in the test framework. If the optional numeric value
- is `0', then there are no further side effects to calling this
- function, and the following test outcome doesn't become
- `UNRESOLVED'. This can be used for errors with no known side
- effects.
-
-`warning "STRING NUMBER"'
- Declares detection of a minor error in the test case itself.
- `warning' writes in the log files a message beginning with
- `WARNING', appending the argument STRING. Use `warning' rather
- than `error' for cases (such as communication failure to be
- followed by a retry) where the test case can recover from the
- error. If the optional NUMBER is supplied, then this is used to
- set the internal count of warnings to that value.
-
- As a side effect, `warning_threshold' or more calls to `warning'
- in a single test case also changes the effect of the next `pass'
- or `fail' command: the test outcome becomes `UNRESOLVED' since an
- automatic `PASS' or `FAIL' may not be trustworthy after many
- warnings. If the optional numeric value is `0', then there are no
- further side effects to calling this function, and the following
- test outcome doesn't become `UNRESOLVED'. This can be used for
- errors with no known side effects.
-
-`note "STRING"'
- Appends an informational message to the log file. `note' writes
- in the log files a message beginning with `NOTE', appending the
- argument STRING. Use `note' sparingly. `verbose' should be used
- for most such messages, but in cases where a message is needed in
- the log file regardless of the verbosity level use `note'.
-
-`pass "STRING"'
- Declares a test to have passed. `pass' writes in the log files a
- message beginning with `PASS' (or `XPASS', if failure was
- expected), appending the argument STRING.
-
-`fail "STRING"'
- Declares a test to have failed. `fail' writes in the log files a
- message beginning with `FAIL' (or `XFAIL', if failure was
- expected), appending the argument STRING.
-
-`unresolved "STRING"'
- Declares a test to have an unresolved outcome. `unresolved' writes
- in the log file a message beginning with `UNRESOLVED', appending
- the argument STRING. This usually means the test did not execute
- as expected, and a human being must go over results to determine
- if it passed or failed (and to improve the test case).
-
-`untested "STRING"'
- Declares a test was not run. `untested' writes in the log file a
- message beginning with `UNTESTED', appending the argument STRING.
- For example, you might use this in a dummy test whose only role is
- to record that a test does not yet exist for some feature.
-
-`unsupported "STRING"'
- Declares that a test case depends on some facility that does not
- exist in the testing environment. `unsupported' writes in the log
- file a message beginning with `UNSUPPORTED', appending the argument
- STRING.
-
-`get_warning_threshold'
- Returns the current value of `warning_threshold'. The default
- value is 3.
-
-`set_warning_threshold THRESHOLD'
- Sets the value of `warning_threshold'. A value of `0' disables
- it: calls to `warning' will not turn a `PASS' or `FAIL' into an
- `UNRESOLVED'.
-
-`transform "TOOLNAME"'
- Generates a string for the name of a tool as it was configured and
- installed, given its native name (as the argument TOOLNAME). This
- makes the assumption that all tools are installed using the same
- naming conventions: it extrapolates from the invocation name for
- `runtest'. For example, if you call `runtest' as
- `m68k-vxworks-runtest', the result of ` transform "gcc" ' is
- `m68k-vxworks-gcc'.
-
-`ishost "HOST"'
- Tests for a particular *host* environment. If the currently
- configured host matches the argument string, the result is `1';
- otherwise the result is `0'. HOST must be a full three-part
- `configure' host name; in particular, you may not use the shorter
- nicknames supported by `configure' (but you can use wildcard
- characters, using shell syntax, to specify sets of names).
-
-`istarget "TARGET"'
- Tests for a particular *target* environment. If the currently
- configured target matches the argument string, the result is `1';
- otherwise the result is `0'. TARGET must be a full three-part
- `configure' target name; in particular, you may not use the
- shorter nicknames supported by `configure' (but you can use
- wildcard characters, using shell syntax, to specify sets of
- names). If it is passed a `NULL' string, then it returns the name
- of the build canonical configuration.
-
-`isbuild "HOST"'
- Tests for a particular *build host* environment. If the currently
- configured host matches the argument string, the result is `1';
- otherwise the result is `0'. HOST must be a full three-part
- `configure' host name; in particular, you may not use the shorter
- nicknames supported by `configure' (but you can use wildcard
- characters, using shell syntax, to specify sets of names). If it is
- passed a `NULL' string, then it returns the name of the build
- canonical configuration.
-
- item is3way "HOST" Tests for a canadian cross. This is when the
- tests will be run on a remotly hosted cross compiler. If it is a
- canadian cross, then the result is `1'; otherwise the result is
- `0'.
-
-`isnative'
- Tests whether the current configuration has the same host and
- target. When it runs in a *native* configuration this procedure
- returns a `1'; otherwise it returns a `0'.
-
-`load_lib "LIBRARY-FILE"'
- Loads the file LIBRARY-FILE by searching a fixed path built into
- `runtest'. If DejaGnu has been installed, it looks in a path
- starting with the installed library directory. If you are running
- DejaGnu directly from a source directory, without first running
- `make install', this path defaults to the current directory. In
- either case, it then looks in the current directory for a directory
- called `lib'. If there are duplicate definitions, the last one
- loaded takes precedence over the earlier ones.
-
-`setup_xfail "CONFIG [BUGID]"'
- Declares that the test is expected to fail on a particular set of
- configurations. The CONFIG argument must be a list of full
- three-part `configure' target name; in particular, you may not use
- the shorter nicknames supported by `configure' (but you can use the
- common shell wildcard characters to specify sets of names). The
- BUGID argument is optional, and used only in the logging file
- output; use it as a link to a bug-tracking system such as GNATS
- (*note Overview: (gnats.info)Overview.).
-
- Once you use `setup_xfail', the `fail' and `pass' procedures
- produce the messages `XFAIL' and `XPASS' respectively, allowing
- you to distinguish expected failures (and unexpected success!)
- from other test outcomes.
-
- *Warning:* you must clear the expected failure after using
- `setup_xfail' in a test case. Any call to `pass' or `fail' clears
- the expected failure implicitly; if the test has some other
- outcome, e.g. an error, you can call `clear_xfail' to clear the
- expected failure explicitly. Otherwise, the expected-failure
- declaration applies to whatever test runs next, leading to
- surprising results.
-
-`clear_xfail CONFIG'
- Cancel an expected failure (previously declared with `setup_xfail')
- for a particular set of configurations. The CONFIG argument is a
- list of configuration target names. It is only necessary to call
- `clear_xfail' if a test case ends without calling either `pass' or
- `fail', after calling `setup_xfail'.
-
-`verbose [-log] [-n] [--] "STRING" NUMBER'
- Test cases can use this function to issue helpful messages
- depending on the number of `--verbose' options on the `runtest'
- command line. It prints STRING if the value of the variable
- `verbose' is higher than or equal to the optional NUMBER. The
- default value for NUMBER is 1. Use the optional `-log' argument
- to cause STRING to always be added to the log file, even if it
- won't be printed. Use the optional `-n' argument to print STRING
- without a trailing newline. Use the optional `--' argument if
- STRING begins with "-".
-
-\1f
-File: dejagnu.info, Node: remote.exp, Next: utils.exp, Prev: framework.exp, Up: DejaGnu Builtins
-
-Remote Communication Procedures
--------------------------------
-
-`lib/remote.exp' defines these functions, for establishing and managing
-communications:
-
- *Procedures to establish a connection:* Each of these procedures
-tries to establish the connection up to three times before returning.
-Warnings (if retries will continue) or errors (if the attempt is
-abandoned) report on communication failures. The result for any of
-these procedures is either `-1', when the connection cannot be
-established, or the spawn ID returned by the `expect' command `spawn'.
-
- It use the value of the `connect' field in the `target_info' array
-(was `connectmode' as the type of connection to make. Current supported
-connection types are tip, kermit, telnet, rsh, rlogin, and netdata. If
-the `--reboot' option was used on the runtest command line, then the
-target is rebooted before the connection is made.
-
-`remote_open TYPE'
- *Remote Connection Procedure.* This is passed *host* or *target*.
- Host or target refers to whether it is a connection to a remote
- target, or a remote host. This opens the connection to the desired
- target or host using the default values in the configuration
- system. It returns that `spawn_id' of the process that manages the
- connection. This value can be used in `expect' or `exp_send'
- statements, or passed to other procedures that need the connection
- process's id. This also sets the `fileid' field in the
- `target_info' array.
-
-`remote_close SHELLID'
- *shellid* is value returned by a call to `remote_open'. This
- closes the connection to the target so resources can be used by
- others. This parameter can be left off if the `fileid' field in the
- `target_info' array is set.
-
-`telnet HOSTNAME PORT'
-`rlogin HOSTNAME'
-`rsh HOSTNAME'
- *IP network procedures.* HOSTNAME refers to the IP address or name
- (for example, an entry in `/etc/hosts') for this target. The
- procedure names reflect the Unix utility used to establish a
- connection. The optional PORT is used to specify the IP port
- number. The value of the `netport' field in the `target_info'
- array is used. (was `$netport') This value has two parts, the
- hostname and the port number, seperated by a *:*. If `host' or
- `target' is used in the `hostname' field, than the config array is
- used for all information.
-
-`tip PORT'
- *Serial line procedure.* Connect using the Unix utility `tip'.
- PORT must be a name from the `tip' configuration file
- `/etc/remote'. Often, this is called `hardwire', or something
- like `ttya'. This file holds all the configuration data for the
- serial port. The value of the `serial' field in the `target_info'
- array is used. (was `$serialport') If `host' or `target' is used
- in the `port' field, than the config array is used for all
- information.
-
-`kermit PORT BPS'
- *Serial line procedure.* Connect using the program `kermit'.
- PORT is the device name, e.g. `/dev/ttyb'. BPS is the line speed
- to use (in bits per second) for the connection. The value of the
- `serial' field in the `target_info' array is used. (was
- `$serialport') If `host' or `target' is used in the `port' field,
- than the config array is used for all information.
-
-*Procedures to manage a connection:*
-
-`tip_download SPAWNID FILE'
- Download `FILE' to the process SPAWNID (the value returned when
- the connection was established), using the `~put' command under
- `tip'. Most often used for single board computers that require
- downloading programs in ASCII S-records. Returns `1' if an error
- occurs, `0' otherwise.
-
-`exit_remote_shell SPAWNID'
- Exits a remote process started by any of the connection procedures.
- SPAWNID is the result of the connection procedure that started the
- remote process.
-
-`download FILE [ SPAWNID ]'
- After you establish a connection to a target, you can download
- programs using this command. `download' reads in FILE (object
- code in S-record format) and writes it to the device controlling
- this SPAWNID. (From the point of view of the target, the S-record
- file comes in via standard input.)
-
- If you have more than one target active, you can use the optional
- argument SPAWNID to specify an alternative target (the default is
- the most recently established SPAWNID.)
-
-\1f
-File: dejagnu.info, Node: utils.exp, Next: target.exp, Prev: remote.exp, Up: DejaGnu Builtins
-
-Utility Procedures
-------------------
-
-`lib/utils.exp' defines these utility procedures:
-
-`getdirs DIR'
-`getdirs DIR PATTERN'
- Returns a list of all the directories in the single directory DIR
- that match PATTERN. If you do not specify PATTERN, `getdirs'
- assumes `*'. You may use the common shell wildcard characters in
- PATTERN. If no directories match the pattern, then a `NULL' string
- is returned.
-
-`find DIR PATTERN'
- Search for files whose names match PATTERN (using shell wildcard
- characters for filename expansion). Search subdirectories
- recursively, starting at DIR. The result is the list of files
- whose names match; if no files match, the result is empty.
- Filenames in the result include all intervening subdirectory
- names. If no files match the pattern, then a `NULL' string is
- returned.
-
-`which BINARY'
- Searches the execution path for an executable file BINARY, like
- the the BSD `which' utility. This procedure uses the shell
- environment variable `PATH'. It returns `0' if the binary is not
- in the path, or if there is no `PATH' environment variable. If
- BINARY is in the path, it returns the full path to BINARY.
-
-`grep FILENAME REGEXP'
-
-`grep FILENAME REGEXP line'
- Search the file called FILENAME (a fully specified path) for lines
- that contain a match for regular expression REGEXP. The result is
- a list of all the lines that match. If no lines match, the result
- is an empty string. Specify REGEXP using the standard regular
- expression style used by the Unix utility program `grep'.
-
- Use the optional third argument `line' to start lines in the result
- with the line number in FILENAME. (This argument is simply an
- option flag; type it just as shown--`line'.)
-
-`diff FILENAME FILENAME'
- Compares the two files and returns a 1 if they match, or a 0 if
- they don't. If `verbose' is set, then it'll print the differences
- to the screen.
-
-`slay NAME'
- This look in the process tabel for NAME and send it a unix
- `SIGINT', killing the process.
-
-`absolute PATH'
- This procedure takes the relative PATH, and converts it to an
- absolute path.
-
-`psource FILENAME'
- This sources the file FILENAME, and traps all errors. It also
- ignores all extraneous output. If there was an error it returns a
- 1, otherwise it returns a 0.
-
-`prune LIST PATTERN'
- Remove elements of the Tcl list LIST. Elements are fields
- delimited by spaces. The result is a copy of LIST, without any
- elements that match PATTERN. You can use the common shell
- wildcard characters to specify PATTERN.
-
-`setenv VAR VAL'
- Sets the variable VAR to the value VAL.
-
-`unsetenv VAR'
- Unsets the environment variable VAR
-
-`getenv VAR'
- returns the value of VAR in the environment if it exists,
- otherwise it returns `NULL'.
-
-`runtest_file_p RUNTESTS TESTCASE'
- Search RUNTESTS for TESTCASE and return 1 if found, 0 if not.
- RUNTESTS is a list of two elements. The first is the pathname of
- the testsuite expect script running. The second is a copy of what
- was on the right side of the `=' if `foo.exp="..."' was specified,
- or an empty string if no such argument is present. This is used
- by tools like compilers where each testcase is a file.
-
-`prune_system_crud SYSTEM TEXT'
- For system SYSTEM, delete text the host or target operating system
- might issue that will interfere with pattern matching of program
- output in TEXT. An example is the message that is printed if a
- shared library is out of date.
-
-\1f
-File: dejagnu.info, Node: target.exp, Next: debugger.exp, Prev: utils.exp, Up: DejaGnu Builtins
-
-Cross target procedure
-----------------------
-
-`lib/target.exp' defines these utility procedures:
-
-`push_target *name*'
- This makes the target named *name* be the current target
- connection. The value of *name* is an index into the `target_info'
- array and is set in the global config file.
-
-`pop_target'
- This unsets the current target connection.
-
-`list_targets'
- This lists all the supported targets for this architecture.
-
-`push_host *name*'
- This makes the host named *name* be the current remote host
- connection. The value of *name* is an index into the `target_info'
- array and is set in the global config file.
-
-`pop_host'
- This unsets the current host connection.
-
- This invokes the compiler as set by `CC' to compile the file
- *file*. The default options for many cross compilation targets are
- *guessed* by DejaGnu, and these options can be added to by passing
- in more parameters as arguments to `compile'. Optionally, this will
- also use the value of the `cflags' field in the target config
- array. If the host is not the same as the build machines, then then
- compiler is run on the remote host using `execute_anywhere'.
-
- This produces an archive file. Any parameters passed to `archive'
- are used in addition to the default flags. Optionally, this will
- also use the value of the `arflags' field in the target config
- array. If the host is not the same as the build machines, then then
- archiver is run on the remote host using `execute_anywhere'.
-
- This generates an index for the archive file for systems that
- aren't POSIX yet. Any parameters passed to `ranlib' are used in
- for the flags.
-
-`execute_anywhere *cmdline*'
- This executes the *cmdline* on the proper host. This should be used
- as a replacement for the Tcl command `exec' as this version
- utilizes the target config info to execute this command on the
- build machine or a remote host. All config information for the
- remote host must be setup to have this command work. If this is a
- canadian cross, (where we test a cross compiler that runs on a
- different host then where DejaGnu is running) then a connection is
- made to the remote host and the command is executed there. It
- returns either *REMOTERROR* (for an error) or the output produced
- when the command was executed. This is used for running the tool
- to be tested, not a test case.
-
-\1f
-File: dejagnu.info, Node: debugger.exp, Prev: target.exp, Up: DejaGnu Builtins
-
-Debugging Procedures
---------------------
-
- `lib/debugger.exp' defines these utility procedures:
-
-`dumpvars *expr*'
- This takes a csh style regular expression (glob rules) and prints
- the values of the global variable names that match. It is
- abbreviated as `dv'
-
-`dumplocals *expr*'
- This takes a csh style regular expression (glob rules) and prints
- the values of the local variable names that match. It is
- abbreviated as `dl'.
-
-`dumprocs *expr*'
- This takes a csh style regular expression (glob rules) and prints
- the body of all procs that match. It is abbreviated as `dp'
-
-`dumpwatch *expr*'
- This takes a csh style regular expression (glob rules) and prints
- all the watchpoints. It is abbreviated as `dw'.
-
-`watchunset *var*'
- This breaks program execution when the variable *var* is unset. It
- is abbreviated as `wu'.
-
-`watchwrite *var*'
- This breaks program execution when the variable *var* is written.
- It is abbreviated as `ww'.
-
-`watchread *var*'
- This breaks program execution when the variable *var* is read. It
- is abbreviated as `wr'.
-
-`watchdel *watch*'
- This deletes a the watchpoint for *watch*. It is abbreviated as
- `wd'.
-
-`print *var*'
- This prints the value of the variable *var*. It is abbreviated as
- `p'.
-
-`quit'
- This makes runtest exit. It is abbreviated as `q'.
-
-`bt'
- This prints a backtrace of the executed Tcl commands.
-
-\1f
-File: dejagnu.info, Node: Target Dependent, Next: Cross Targets, Prev: DejaGnu Builtins, Up: Internals
-
-Target dependent procedures
-===========================
-
- Each combination of target and tool requires some target-dependent
-procedures. The names of these procedures have a common form: the tool
-name, followed by an underbar `_', and finally a suffix describing the
-procedure's purpose. For example, a procedure to extract the version
-from GDB is called `gdb_version'. *Note Initialization Module: Init
-Module, for a discussion of how DejaGnu arranges to find the right
-procedures for each target.
-
- `runtest' itself calls only two of these procedures, `TOOL_exit' and
-`TOOL_version'; these procedures use no arguments.
-
- The other two procedures, `TOOL_start' and `TOOL_load', are only
-called by the test suites themselves (or by testsuite-specific
-initialization code); they may take arguments or not, depending on the
-conventions used within each test suite.
-
-`TOOL_start'
- Starts a particular tool. For an interactive tool, `TOOL_start'
- starts and initializes the tool, leaving the tool up and running
- for the test cases; an example is `gdb_start', the start function
- for GDB. For a batch oriented tool, `TOOL_start' is optional; the
- recommended convention is to let `TOOL_start' run the tool,
- leaving the output in a variable called `comp_output'. Test
- scripts can then analyze `$comp_output' to determine the test
- results. An example of this second kind of start function is
- `gcc_start', the start function for GCC.
-
- `runtest' itself *does not call* `TOOL_start'. The initialization
- module `TOOL_init.exp' must call `TOOL_start' for interactive
- tools; for batch-oriented tools, each individual test script calls
- `TOOL_start' (or makes other arrangements to run the tool).
-
-`TOOL_load'
- Loads something into a tool. For an interactive tool, this
- conditions the tool for a particular test case; for example,
- `gdb_load' loads a new executable file into the debugger. For
- batch oriented tools, `TOOL_load' may do nothing--though, for
- example, the GCC support uses `gcc_load' to load and run a binary
- on the target environment. Conventionally, `TOOL_load' leaves the
- output of any program it runs in a variable called `exec_output'.
- Writing `TOOL_load' can be the most complex part of extending
- DejaGnu to a new tool or a new target, if it requires much
- communication coding or file downloading.
-
- Test scripts call `TOOL_load'.
-
-`TOOL_exit'
- Cleans up (if necessary) before `runtest' exits. For interactive
- tools, this usually ends the interactive session. You can also use
- `TOOL_exit' to remove any temporary files left over from the tests.
-
- `runtest' calls `TOOL_exit'.
-
-`TOOL_version'
- Prints the version label and number for TOOL. This is called by
- the DejaGnu procedure that prints the final summary report. The
- output should consist of the full path name used for the tested
- tool, and its version number.
-
- `runtest' calls `TOOL_version'.
-
- The usual convention for return codes from any of these procedures
-(although it is not required by `runtest') is to return `0' if the
-procedure succeeded, `1' if it failed, and `-1' if there was a
-communication error.
-
-\1f
-File: dejagnu.info, Node: Cross Targets, Next: Input Files, Prev: Target Dependent, Up: Internals
-
-Remote targets supported
-========================
-
- The DejaGnu distribution includes support for the following remote
-targets. You can set the target name and the connect mode in the
-`site.exp' file (using the Tcl variables `targetname' and
-`connectmode', respectively), or on the `runtest' command line (using
-`--name' and `--connect').
-
-*AMD 29000, with UDI protocol*
- Configure DejaGnu for target `a29k-amd-udi'. (Cygnus `configure'
- also recognizes the abbreviation `udi29k'.) Then, to run tests,
- use the `runtest' target name to specify whether you want to use a
- simulator, or a particular hardware board. The particular string
- to use with `--name' will depend on your UDI setup file, `udi_soc'
- (if `udi_soc' is not in your working directory, the environment
- variable `UDICONF' should contain a path to this file). For
- example, if your UDI setup file includes these lines:
-
- iss AF_UNIX * isstip -r /home/gnu/29k/src/osboot/sim/osboot
- mon AF_UNIX * montip -t serial -baud 9600 -com /dev/ttyb
-
-* *
- You can use `--name iss' to run tests on the simulator, and
- `--name mon' to run tests on the 29K hardware. See the
- manufacturer's manuals for more information on UDI and `udi_soc'.
-
- The default connect protocol is `mondfe' with either back end.
- `mondfe' is the only shell DejaGnu supports for UDI targets.
- `mondfe' is an AMD specific monitor program freely available from
- AMD.
-
- *Warning:* This target requires GDB version 4.7.2 (or greater).
- Earlier versions of GDB do not fully support the `load' command on
- this target, so DejaGnu has no way to load executable files from
- the debugger.
-
-*Motorola 680x0 boards, a.out or COFF object format*
- Configure DejaGnu for any remote target matching `m68k-*'.
-
- *Warning:* Most `m68k-*' configurations run all tests only for
- native testing (when the target is the same as the host). When you
- specify most of these targets for a cross configuration, you will
- only be able to use tests that run completely within the host (for
- example, tests of the binary utilities such as the archiver; or
- compiler tests that only generate code rather than running it).
-
- To run a.out or COFF binaries on a remote M68K, you must configure
- DejaGnu for a particular target board. `m68k-abug' is an example.
- (In general for an embedded environment, because it does not have
- absolute addresses, a.out is not a good choice for output format
- in any case; most often S-records or Hex-32 are used instead.)
-
-*Motorola 68K MVME 135 board running ABug boot monitor*
- Configure for `m68k-abug-aout' or `m68k-abug-coff' (as a target).
- This boot monitor can only download S-records; therefore, the
- DejaGnu tests for this environment require a linker command script
- to convert either output format to S-records, setting the default
- addresses for `.text', `.bss', and `.data'.
-
- With this configuration, the default for `--connect' is `tip'.
- `tip' is the only communications protocol supported for connecting
- to `m68k-abug-*' targets. `tip' uses an ASCII downloader (the
- `~put' command) to load S-records into the target board. The
- `--name' string must be a machine name that `tip' understands (for
- example, on some `tip' implementations it must be an entry from
- the initialization file for `tip'; this file is sometimes called
- `/etc/remote').
-
- See your system documentation for information on how to create new
- entries in `/etc/remote'. (Some UNIX systems are distributed with
- at least one default entry with a name resembling `hardwire'; if
- your system has one, you can edit it, or make a modified copy with
- a new name.) When you have a working `/etc/remote' entry
- ABUGTARGET, you should be able to type `tip ABUGTARGET', and get
- the prompt `135ABUG>' from the board. Use the same ABUGTARGET
- string with `runtest --name'.
-
-*Motorola IDP board running the rom68k boot monitor*
- This is the same in functionality as the MVME board running the
- `BUG' boot monitor. Only the monitor commands and the addresses are
- different.
-
-*VxWorks (Motorola 68K or Intel 960)*
- Configure DejaGnu for either `m68k-wrs-vxworks' (abbreviated
- `vxworks68') or `i960-wrs-vxworks' (abbreviated `vxworks960').
- Since both targets support IP addressing, specify the network
- address (for example, a host name from `/etc/hosts') with `--name'.
-
- The default connect protocol is `rlogin', but you can use any of
- `--connect rlogin', `--connect telnet', or `--connect rsh'.
-
- Test scripts need no special code to load programs into these
- targets; since VxWorks supports NFS, all you must do is ensure
- test programs are on an exported filesystem.
-
- When you compile for VxWorks, use the linker `-r' option to make
- the linker output relocatable--at least if you want to use library
- routines. Many standard C routines are included in VxWorks; often
- no additional libraries are needed. See your VxWorks system
- documentation for additional details.
-
-\1f
-File: dejagnu.info, Node: Input Files, Next: Output Files, Prev: Cross Targets, Up: Internals
-
-The files DejaGnu reads
-=======================
-
- The `runtest' program used to invoke DejaGnu is a short shell script
-generated by `make' during the configuration process. Its main task is
-to read the main test framework driver, `runtest.exp'.
-
- `runtest.exp', in turn, reads `expect' code from certain other
-files, in this order:
-
- 1. Each of the `site.exp' local definition files available. *Note
- Setting `runtest' defaults: Customizing, for details.
-
- 2. `lib/utils.exp', a collection of utility procedures. *Note
- DejaGnu Builtins: DejaGnu Builtins, for descriptions of these
- procedures.
-
- 3. `lib/framework.exp', a file of subroutines meant for `runtest'
- itself rather than for general-purpose use in both `runtest' and
- test suites.
-
- 4. `debugger.exp', Don Libes' Tcl Debugger. (See `A Debugger for Tcl
- Applications' by Don Libes. This paper is distributed with
- `expect' in PostScript form as the file `expect/tcl-debug.ps'.)
-
- 5. `lib/remote.exp', a collection of subroutines meant for connecting
- to remote machines.
-
- 6. `lib/target.exp', a collection of subroutines used for the
- configuration systems in DejaGnu. These procedures typically
- manipulate or utilize the configuration system.
-
- 7. An initialization file `TOOL_init.exp'. *Note Initialization
- module: Init Module, for more discussion of init files.
-
-\1f
-File: dejagnu.info, Node: Output Files, Prev: Input Files, Up: Internals
-
-The files DejaGnu writes
-========================
-
- `runtest' always writes two kinds of output files: summary logs and
-detailed logs. The contents of both of these are determined by your
-tests.
-
- For troubleshooting, a third kind of output file is useful: use
-`--debug' to request an output file showing details of what `expect' is
-doing internally.
-
-* Menu:
-
-* Summary:: Files that summarize tests
-* Detail:: Files that contain complete test results
-* Debug:: Logging expect internal actions
-
-\1f
-File: dejagnu.info, Node: Summary, Next: Detail, Up: Output Files
-
-Summary log
------------
-
- `runtest' always produces a summary output file `TOOL.sum'. This
-summary shows the names of all test files run; for each test file, one
-line of output from each `pass' command (showing status `PASS' or
-`XPASS') or `fail' command (status `FAIL' or `XFAIL'); trailing summary
-statistics that count passing and failing tests (expected and
-unexpected); and the full pathname and version number of the tool
-tested. (All possible outcomes, and all errors, are always reflected in
-the summary output file, regardless of whether or not you specify
-`--all'.)
-
- If any of your tests use the procedures `unresolved', `unsupported',
-or `untested', the summary output also tabulates the corresponding
-outcomes.
-
- For example, after `runtest --tool binutils', look for a summary log
-in `binutils.sum'. Normally, `runtest' writes this file in your
-current working directory; use the `--outdir' option to select a
-different directory.
-
-Here is a short sample summary log:
-
- Test Run By rob on Mon May 25 21:40:57 PDT 1992
- === gdb tests ===
- Running ./gdb.t00/echo.exp ...
- PASS: Echo test
- Running ./gdb.all/help.exp ...
- PASS: help add-symbol-file
- PASS: help aliases
- PASS: help breakpoint "bre" abbreviation
- FAIL: help run "r" abbreviation
- Running ./gdb.t10/crossload.exp ...
- PASS: m68k-elf (elf-big) explicit format; loaded
- XFAIL: mips-ecoff (ecoff-bigmips) "ptype v_signed_char" signed
- C types
- === gdb Summary ===
- # of expected passes 5
- # of expected failures 1
- # of unexpected failures 1
- /usr/latest/bin/gdb version 4.6.5 -q
-
-\1f
-File: dejagnu.info, Node: Detail, Next: Debug, Prev: Summary, Up: Output Files
-
-Detailed log
-------------
-
- `runtest' also saves a detailed log file `TOOL.log', showing any
-output generated by tests as well as the summary output. For example,
-after `runtest --tool binutils', look for a detailed log in
-`binutils.log'. Normally, `runtest' writes this file in your current
-working directory; use the `--outdir' option to select a different
-directory.
-
-Here is a brief example showing a detailed log for G++ tests:
-
- Test Run By rob on Mon May 25 21:40:43 PDT 1992
-
- === g++ tests ===
-
- --- Running ./g++.other/t01-1.exp ---
- PASS: operate delete
-
- --- Running ./g++.other/t01-2.exp ---
- FAIL: i960 bug EOF
- p0000646.C: In function `int warn_return_1 ()':
- p0000646.C:109: warning: control reaches end of non-void function
- p0000646.C: In function `int warn_return_arg (int)':
- p0000646.C:117: warning: control reaches end of non-void function
- p0000646.C: In function `int warn_return_sum (int, int)':
- p0000646.C:125: warning: control reaches end of non-void function
- p0000646.C: In function `struct foo warn_return_foo ()':
- p0000646.C:132: warning: control reaches end of non-void function
-
- --- Running ./g++.other/t01-4.exp ---
- FAIL: abort
- 900403_04.C:8: zero width for bit-field `foo'
- --- Running ./g++.other/t01-3.exp ---
- FAIL: segment violation
- 900519_12.C:9: parse error before `;'
- 900519_12.C:12: Segmentation violation
- /usr/latest/bin/gcc: Internal compiler error: program cc1plus got
- fatal signal
-
- === g++ Summary ===
-
- # of expected passes 1
- # of expected failures 3
- /usr/ps/bin/g++ version cygnus-2.0.1
-
-\1f
-File: dejagnu.info, Node: Debug, Prev: Detail, Up: Output Files
-
-Logging `expect' internal actions
----------------------------------
-
- With the `--debug' option, you can request a log file showing the
-output from `expect' itself, running in debugging mode. This file
-(`dbg.log', in the directory where you start `runtest') shows each
-pattern `expect' considers in analyzing test output.
-
- This file reflects each `send' command, showing the string sent as
-input to the tool under test; and each `expect' command, showing each
-pattern it compares with the tool output.
-
- The log messages for `expect' begin with a message of the form
-
- expect: does {TOOL OUTPUT} (spawn_id N) match pattern
- {EXPECTED PATTERN}?
-
-For every unsuccessful match, `expect' issues a `no' after this
-message; if other patterns are specified for the same `expect' command,
-they are reflected also, but without the first part of the message
-(`expect...match pattern').
-
- When `expect' finds a match, the log for the successful match ends
-with `yes', followed by a record of the `expect' variables set to
-describe a successful match. Here is an excerpt from the debugging log
-for a GDB test:
-
- send: sent {break gdbme.c:34\n} to spawn id 6
- expect: does {} (spawn_id 6) match pattern {Breakpoint.*at.* file
- gdbme.c, line 34.*\(gdb\) $}? no
- {.*\(gdb\) $}? no
- expect: does {} (spawn_id 0) match pattern {<return>}? no
- {\(y or n\) }? no
- {buffer_full}? no
- {virtual}? no
- {memory}? no
- {exhausted}? no
- {Undefined}? no
- {command}? no
- break gdbme.c:34
- Breakpoint 8 at 0x23d8: file gdbme.c, line 34.
- (gdb) expect: does {break gdbme.c:34\r\nBreakpoint 8 at 0x23d8:
- file gdbme.c, line 34.\r\n(gdb) } (spawn_id 6) match pattern
- {Breakpoint.*at.* file gdbme.c, line 34.*\(gdb\) $}? yes
- expect: set expect_out(0,start) {18}
- expect: set expect_out(0,end) {71}
- expect: set expect_out(0,string) {Breakpoint 8 at 0x23d8: file
- gdbme.c, line 34.\r\n(gdb) }
- expect: set expect_out(spawn_id) {6}
- expect: set expect_out(buffer) {break gdbme.c:34\r\nBreakpoint 8
- at 0x23d8: file gdbme.c, line 34.\r\n(gdb) }
- PASS: 70 0 breakpoint line number in file
-
-This example exhibits three properties of `expect' and DejaGnu that
-might be surprising at first glance:
-
- * Empty output for the first attempted match. The first set of
- attempted matches shown ran against the output `{}'--that is, no
- output. `expect' begins attempting to match the patterns supplied
- immediately; often, the first pass is against incomplete output (or
- completely before all output, as in this case).
-
- * Interspersed tool output. The beginning of the log entry for the
- second attempted match may be hard to spot: this is because the
- prompt `(gdb) ' appears on the same line, just before the `expect:'
- that marks the beginning of the log entry.
-
- * Fail-safe patterns. Many of the patterns tested are fail-safe
- patterns provided by GDB testing utilities, to reduce possible
- indeterminacy. It is useful to anticipate potential variations
- caused by extreme system conditions (GDB might issue the message
- `virtual memory exhausted' in rare circumstances), or by changes in
- the tested program (`Undefined command' is the likeliest outcome if
- the name of a tested command changes).
-
- The pattern `{<return>}' is a particularly interesting fail-safe
- to notice; it checks for an unexpected <RET> prompt. This may
- happen, for example, if the tested tool can filter output through a
- pager.
-
- These fail-safe patterns (like the debugging log itself) are
- primarily useful while developing test scripts. Use the `error'
- procedure to make the actions for fail-safe patterns produce
- messages starting with `ERROR' on the `runtest' standard output,
- and in the detailed log file.
-
-\1f
-File: dejagnu.info, Node: Tests, Next: Extending, Prev: Internals, Up: Top
-
-How To Write a Test Case
-************************
-
-* Menu:
-
-* Writing:: Writing a test case
-* Debugging:: Debugging a test case
-* Adding:: Adding a test case to a test suite
-* Hints:: Hints on writing a test case
-* Variables:: Special variables used by test cases
-
-\1f
-File: dejagnu.info, Node: Writing, Next: Debugging, Up: Tests
-
-Writing a test case
-===================
-
- The easiest way to prepare a new test case is to base it on an
-existing one for a similar situation. There are two major categories
-of tests: batch or interactive. Batch oriented tests are usually
-easier to write.
-
- The GCC tests are a good example of batch oriented tests. All GCC
-tests consist primarily of a call to a single common procedure, since
-all the tests either have no output, or only have a few warning
-messages when successfully compiled. Any non-warning output is a test
-failure. All the C code needed is kept in the test directory. The test
-driver, written in `expect', need only get a listing of all the C files
-in the directory, and compile them all using a generic procedure. This
-procedure and a few others supporting for these tests are kept in the
-library module `lib/c-torture.exp' in the GCC test suite. Most tests
-of this kind use very few `expect' features, and are coded almost
-purely in Tcl.
-
-Writing the complete suite of C tests, then, consisted of these steps:
-
- 1. Copying all the C code into the test directory. These tests were
- based on the C-torture test created by Torbjorn Granlund (on
- behalf of the Free Software Foundation) for GCC development.
-
- 2. Writing (and debugging) the generic `expect' procedures for
- compilation.
-
- 3. Writing the simple test driver: its main task is to search the
- directory (using the Tcl procedure `glob' for filename expansion
- with wildcards) and call a Tcl procedure with each filename. It
- also checks for a few errors from the testing procedure.
-
- Testing interactive programs is intrinsically more complex. Tests
-for most interactive programs require some trial and error before they
-are complete.
-
- However, some interactive programs can be tested in a simple fashion
-reminiscent of batch tests. For example, prior to the creation of
-DejaGnu, the GDB distribution already included a wide-ranging testing
-procedure. This procedure was very robust, and had already undergone
-much more debugging and error checking than many recent DejaGnu test
-cases. Accordingly, the best approach was simply to encapsulate the
-existing GDB tests, for reporting purposes. Thereafter, new GDB tests
-built up a family of `expect' procedures specialized for GDB testing.
-
- `gdb.t10/crossload.exp' is a good example of an interactive test.
-
+++ /dev/null
-This is Info file dejagnu.info, produced by Makeinfo version 1.68 from
-the input file ./dejagnu.texi.
-
-START-INFO-DIR-ENTRY
-* DejaGnu: (dejagnu). The GNU testing framework.
-END-INFO-DIR-ENTRY
-
- Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided also
-that the entire resulting derived work is distributed under the terms
-of a permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions.
-
-\1f
-File: dejagnu.info, Node: Debugging, Next: Adding, Prev: Writing, Up: Tests
-
-Debugging a test case
-=====================
-
-These are the kinds of debugging information available from DejaGnu:
-
- 1. Output controlled by test scripts themselves, explicitly allowed
- for by the test author. This kind of debugging output appears in
- the detailed output recorded in the `TOOL.log' file. To do the
- same for new tests, use the `verbose' procedure (which in turn
- uses the variable also called `verbose') to control how much
- output to generate. This will make it easier for other people
- running the test to debug it if necessary. Whenever possible, if
- `$verbose' is `0', there should be no output other than the output
- from `pass', `fail', `error', and `warning'. Then, to whatever
- extent is appropriate for the particular test, allow successively
- higher values of `$verbose' to generate more information. Be kind
- to other programmers who use your tests: provide for a lot of
- debugging information.
-
- 2. Output from the internal debugging functions of Tcl and `expect'.
- There is a command line options for each; both forms of debugging
- output are recorded in the file `dbg.log' in the current directory.
-
- Use `--debug' for information from the `expect' level; it
- generates displays of the `expect' attempts to match the tool
- output with the patterns specified (*note Debug Log: Debug.). This
- output can be very helpful while developing test scripts, since it
- shows precisely the characters received. Iterating between the
- latest attempt at a new test script and the corresponding
- `dbg.log' can allow you to create the final patterns by "cut and
- paste". This is sometimes the best way to write a test case.
-
- Use `--strace' to see more detail at the Tcl level; this shows how
- Tcl procedure definitions expand, as they execute. The associated
- number controls the depth of definitions expanded; see the
- discussion of `--strace' in *Note Running the Tests: Invoking
- runtest.
-
- 3. Finally, if the value of `verbose' is 3 or greater, `runtest'
- turns on the `expect' command `log_user'. This command prints all
- `expect' actions to the `expect' standard output, to the detailed
- log file, and (if `--debug' is on) to `dbg.log'.
-
-\1f
-File: dejagnu.info, Node: Adding, Next: Hints, Prev: Debugging, Up: Tests
-
-Adding a test case to a test suite
-==================================
-
- There are two slightly different ways to add a test case. One is to
-add the test case to an existing directory. The other is to create a new
-directory to hold your test. The existing test directories represent
-several styles of testing, all of which are slightly different; examine
-the directories for the tool of interest to see which (if any) is most
-suitable.
-
- Adding a GCC test can be very simple: just add the C code to any
-directory beginning with `gcc.' and it runs on the next `runtest --tool
-gcc'.
-
- To add a test to GDB, first add any source code you will need to the
-test directory. Then you can either create a new `expect' file, or add
-your test to an existing one (any file with a `.exp' suffix). Creating
-a new `.exp' file is probably a better idea if the test is
-significantly different from existing tests. Adding it as a separate
-file also makes upgrading easier. If the C code has to be already
-compiled before the test will run, then you'll have to add it to the
-`Makefile.in' file for that test directory, then run `configure' and
-`make'.
-
- Adding a test by creating a new directory is very similar:
-
- 1. Create the new directory. All subdirectory names begin with the
- name of the tool to test; e.g. G++ tests might be in a directory
- called `g++.other'. There can be multiple test directories that
- start with the same tool name (such as `g++').
-
- 2. Add the new directory name to the `configdirs' definition in the
- `configure.in' file for the test suite directory. This way when
- `make' and `configure' next run, they include the new directory.
-
- 3. Add the new test case to the directory, as above.
-
- 4. To add support in the new directory for configure and make, you
- must also create a `Makefile.in' and a `configure.in'. *Note What
- Configure Does: (configure.info)What Configure Does.
-
-\1f
-File: dejagnu.info, Node: Hints, Next: Variables, Prev: Adding, Up: Tests
-
-Hints on writing a test case
-============================
-
- There may be useful existing procedures already written for your
-test in the `lib' directory of the DejaGnu distribution. *Note DejaGnu
-Builtins: DejaGnu Builtins.
-
- It is safest to write patterns that match *all* the output generated
-by the tested program; this is called "closure". If a pattern does not
-match the entire output, any output that remains will be examined by
-the *next* `expect' command. In this situation, the precise boundary
-that determines which `expect' command sees what is very sensitive to
-timing between the `expect' task and the task running the tested tool.
-As a result, the test may sometimes appear to work, but is likely to
-have unpredictable results. (This problem is particularly likely for
-interactive tools, but can also affect batch tools--especially for
-tests that take a long time to finish.) The best way to ensure closure
-is to use the `-re' option for the `expect' command to write the
-pattern as a full regular expressions; then you can match the end of
-output using a `$'. It is also a good idea to write patterns that
-match all available output by using `.*\' after the text of interest;
-this will also match any intervening blank lines. Sometimes an
-alternative is to match end of line using `\r' or `\n', but this is
-usually too dependent on terminal settings.
-
- Always escape punctuation, such as `(' or `"', in your patterns; for
-example, write `\('. If you forget to escape punctuation, you will
-usually see an error message like `extra characters after close-quote'.
-
- If you have trouble understanding why a pattern does not match the
-program output, try using the `--debug' option to `runtest', and
-examine the debug log carefully. *Note Debug Log: Debug.
-
- Be careful not to neglect output generated by setup rather than by
-the interesting parts of a test case. For example, while testing GDB,
-I issue a send `set height 0\n' command. The purpose is simply to make
-sure GDB never calls a paging program. The `set height' command in GDB
-does not generate any output; but running *any* command makes GDB issue
-a new `(gdb) ' prompt. If there were no `expect' command to match this
-prompt, the output `(gdb) ' begins the text seen by the next `expect'
-command--which might make *that* pattern fail to match.
-
- To preserve basic sanity, I also recommended that no test ever pass
-if there was any kind of problem in the test case. To take an extreme
-case, tests that pass even when the tool will not spawn are misleading.
-Ideally, a test in this sort of situation should not fail either.
-Instead, print an error message by calling one of the DejaGnu procedures
-`error' or `warning'.
-
-\1f
-File: dejagnu.info, Node: Variables, Prev: Hints, Up: Tests
-
-Special variables used by test cases
-====================================
-
- Your test cases can use these variables, with conventional meanings
-(as well as the variables saved in `site.exp' *note Setting `runtest'
-defaults: Customizing.):
-
- *These variables are available to all test cases.*
-
-`prms_id'
- The tracking system (e.g. GNATS) number identifying a corresponding
- bugreport. (`0' if you do not specify it in the test script.)
-
-`bug_id'
- An optional bug id; may reflect a bug identification from another
- organization. (`0' if you do not specify it.)
-
-`subdir'
- The subdirectory for the current test case.
-
- *These variables should never be changed. They appear in most
- tests.*
-
-`expect_out(buffer)'
- The output from the last command. This is an internal variable set
- by `expect'.
-
-`exec_output'
- This is the output from a `TOOL_load' command. This only applies
- to tools like GCC and GAS which produce an object file that must
- in turn be executed to complete a test.
-
-`comp_output'
- This is the output from a `TOOL_start' command. This is
- conventionally used for batch oriented programs, like GCC and GAS,
- that may produce interesting output (warnings, errors) without
- further interaction.
-
-\1f
-File: dejagnu.info, Node: Extending, Next: Installation, Prev: Tests, Up: Top
-
-New Tools, Targets, or Hosts
-****************************
-
- The most common ways to extend the DejaGnu framework are: adding a
-suite of tests for a new tool to be tested; adding support for testing
-on a new target; and porting `runtest' to a new host.
-
-* Menu:
-
-* Adding Tools:: How to add tests for a new tool
-* Adding Targets:: How to add a new target
-* Porting:: Porting DejaGnu to a new host
-
-\1f
-File: dejagnu.info, Node: Adding Tools, Next: Adding Targets, Up: Extending
-
-Writing tests for a new tool
-============================
-
- In general, the best way to learn how to write (code or even prose)
-is to read something similar. This principle applies to test cases and
-to test suites. Unfortunately, well-established test suites have a way
-of developing their own conventions: as test writers become more
-experienced with DejaGnu and with Tcl, they accumulate more utilities,
-and take advantage of more and more features of `expect' and Tcl in
-general.
-
- Inspecting such established test suites may make the prospect of
-creating an entirely new test suite appear overwhelming. Nevertheless,
-it is quite straightforward to get a new test suite going.
-
- There is one test suite that is guaranteed not to grow more elaborate
-over time: both it and the tool it tests were created expressly to
-illustrate what it takes to get started with DejaGnu. The `example/'
-directory of the DejaGnu distribution contains both an interactive tool
-called `calc', and a test suite for it. Reading this test suite, and
-experimenting with it, is a good way to supplement the information in
-this section. (Thanks to Robert Lupton for creating `calc' and its
-test suite--and also the first version of this section of the manual!)
-
- To help orient you further in this task, here is an outline of the
-steps to begin building a test suite for a program EXAMPLE.
-
- 1. Create or select a directory to contain your new collection of
- tests. Change to that directory (shown here as `testsuite'):
-
- eg$ cd testsuite/
-
- 2. Create a `configure.in' file in this directory, to control
- configuration-dependent choices for your tests. So far as DejaGnu
- is concerned, the important thing is to set a value for the
- variable `target_abbrev'; this value is the link to the init file
- you will write soon. (For simplicity, we assume the environment
- is Unix, and use `unix' as the value.)
-
- What else is needed in `configure.in' depends on the requirements
- of your tool, your intended test environments, and which
- `configure' system you use. This example is a minimal
- `configure.in' for use with Cygnus Configure. (For an alternative
- based on the FSF `autoconf' system, see the `calc' example
- distributed with DejaGnu.) Replace EXAMPLE with the name of your
- program:
-
- # This file is a shell script fragment
- # for use with Cygnus configure.
-
- srctrigger="EXAMPLE.0"
- srcname="The DejaGnu EXAMPLE tests"
-
- # per-host:
-
- # per-target:
-
- # everything defaults to unix for a target
- target_abbrev=unix
-
- # post-target:
-
- 3. Create `Makefile.in', the source file used by `configure' to build
- your `Makefile'. Its leading section should as usual contain the
- values that `configure' may override:
-
- srcdir = .
- prefix = /usr/local
-
- exec_prefix = $(prefix)
- bindir = $(exec_prefix)/bin
- libdir = $(exec_prefix)/lib
- tooldir = $(libdir)/$(target_alias)
-
- datadir = $(exec_prefix)/lib/dejagnu
-
- RUNTEST = runtest
- RUNTESTFLAGS =
- FLAGS_TO_PASS =
-
- #### host, target, site specific Makefile frags come in here.
-
- This should be followed by the standard targets at your site. To
- begin with, they need not do anything--for example, these
- definitions will do:
-
-
- all:
-
- info:
-
- install-info:
-
- install:
- uninstall:
-
- clean:
- -rm -f *~ core *.info*
-
- It is also a good idea to make sure your `Makefile' can rebuild
- itself if `Makefile.in' changes, with a target like this (which
- works for either Cygnus or FSF Configure):
-
- Makefile : $(srcdir)/Makefile.in $(host_makefile_frag) \
- $(target_makefile_frag)
- $(SHELL) ./config.status
-
- You also need to include two targets important to DejaGnu: `check',
- to run the tests, and `site.exp', to set up the Tcl copies of
- configuration-dependent values. The `check' target must run
- `runtest --tool EXAMPLE':
-
- check: site.exp all
- $(RUNTEST) $(RUNTESTFLAGS) $(FLAGS_TO_PASS) \
- --tool EXAMPLE --srcdir $(srcdir)
-
- The `site.exp' target should usually set up (among other things!) a
- Tcl variable for the name of your program:
-
- site.exp: ./config.status Makefile
- @echo "Making a new config file..."
- -@rm -f ./tmp?
- @touch site.exp
-
- -@mv site.exp site.bak
- @echo "## these variables are automatically\
- generated by make ##" > ./tmp0
- @echo "# Do not edit here. If you wish to\
- override these values" >> ./tmp0
- @echo "# add them to the last section" >> ./tmp0
- @echo "set host_os ${host_os}" >> ./tmp0
- @echo "set host_alias ${host_alias}" >> ./tmp0
- @echo "set host_cpu ${host_cpu}" >> ./tmp0
- @echo "set host_vendor ${host_vendor}" >> ./tmp0
- @echo "set target_os ${target_os}" >> ./tmp0
- @echo "set target_alias ${target_alias}" >> ./tmp0
- @echo "set target_cpu ${target_cpu}" >> ./tmp0
- @echo "set target_vendor ${target_vendor}" >> ./tmp0
- @echo "set host_triplet ${host_canonical}" >> ./tmp0
- @echo "set target_triplet ${target_canonical}">>./tmp0
- @echo "set tool binutils" >> ./tmp0
- @echo "set srcdir ${srcdir}" >> ./tmp0
- @echo "set objdir `pwd`" >> ./tmp0
- @echo "set EXAMPLENAME EXAMPLE" >> ./tmp0
- @echo "## All variables above are generated by\
- configure. Do Not Edit ##" >> ./tmp0
- @cat ./tmp0 > site.exp
- @sed < site.bak \
- -e '1,/^## All variables above are.*##/ d' \
- >> site.exp
- -@rm -f ./tmp?
-
- 4. Create a directory (in `testsuite/') called `config/':
-
- eg$ mkdir config
-
- 5. Make an init file in this directory; its name must start with the
- `target_abbrev' value, so call it `config/unix.exp'. This is the
- file that contains the target-dependent procedures; fortunately,
- most of them do not have to do very much in order for `runtest' to
- run.
-
- If EXAMPLE is not interactive, you can get away with this minimal
- `unix.exp' to begin with:
-
- proc foo_exit {} {}
- proc foo_version {} {}
-
- If EXAMPLE is interactive, however, you might as well define a
- start routine *and invoke it* by using an init file like this:
-
- proc foo_exit {} {}
- proc foo_version {} {}
-
- proc foo_start {} {
- global EXAMPLENAME
- spawn $EXAMPLENAME
- expect {
- -re "" {}
- }
- }
- foo_start
-
- 6. Create a directory whose name begins with your tool's name, to
- contain tests:
-
- eg$ mkdir EXAMPLE.0
-
- 7. Create a sample test file in `EXAMPLE.0'. Its name must end with
- `.exp'; you can use `first-try.exp' To begin with, just write
- there a line of Tcl code to issue a message:
-
- send_user "Testing: one, two...\n"
-
- 8. Back in the `testsuite/' (top level) directory, run
-
- eg$ configure
-
- (You may have to specify more of a path, if a suitable `configure'
- is not available in your execution path.)
-
- 9. You are now ready to triumphantly type `make check' or `runtest
- --tool EXAMPLE'. You should see something like this:
-
- Test Run By rhl on Fri Jan 29 16:25:44 EST 1993
-
- === EXAMPLE tests ===
-
- Running ./EXAMPLE.0/first-try.exp ...
- Testing: one, two...
-
- === EXAMPLE Summary ===
-
- There is no output in the summary, because so far the example does
- not call any of the procedures that establish a test outcome.
-
- 10. Begin writing some real tests. For an interactive tool, you should
- probably write a real exit routine in fairly short order; in any
- case, you should also write a real version routine soon.
-
-\1f
-File: dejagnu.info, Node: Adding Targets, Next: Porting, Prev: Adding Tools, Up: Extending
-
-Adding a target
-===============
-
- DejaGnu has some additional requirements for target support, beyond
-the general-purpose provisions of Cygnus `configure'. `runtest' must
-actively communicate with the target, rather than simply generating or
-managing code for the target architecture. Therefore, each tool
-requires an initialization module for each target. For new targets, you
-must supply a few Tcl procedures to adapt DejaGnu to the target. This
-permits DejaGnu itself to remain target independent. *Note
-Initialization module: Init Module, for a discussion of the naming
-conventions that enable DejaGnu to locate and use init files.
-
- Usually the best way to write a new initialization module is to edit
-an existing initialization module; some trial and error will be
-required. If necessary, you can use the `--debug' option to see what
-is really going on.
-
- When you code an initialization module, be generous in printing
-information controlled by the `verbose' procedure (*note DejaGnu
-procedures: DejaGnu Builtins.).
-
- Most of the work is in getting the communications right.
-Communications code (for several situations involving IP networks or
-serial lines) is available in a DejaGnu library file, `lib/remote.exp'.
-*Note DejaGnu Builtins: DejaGnu Builtins.
-
- If you suspect a communication problem, try running the connection
-interactively from `expect'. (There are three ways of running `expect'
-as an interactive interpreter. You can run `expect' with no arguments,
-and control it completely interactively; or you can use `expect -i'
-together with other command-line options and arguments; or you can run
-the command `interpreter' from any `expect' procedure. Use `return' to
-get back to the calling procedure (if any), or `return -tcl' to make
-the calling procedure itself return to its caller; use `exit' or
-end-of-file to leave `expect' altogether.) Run the program whose name
-is recorded in `$connectmode', with the arguments in `$targetname', to
-establish a connection. You should at least be able to get a prompt
-from any target that is physically connected.
-
-\1f
-File: dejagnu.info, Node: Porting, Prev: Adding Targets, Up: Extending
-
-Porting to a new host
-=====================
-
- The task of porting DejaGnu is basically that of porting Tcl and
-`expect'. Tcl and `expect', as distributed with DejaGnu, both use
-`autoconf'; they should port automatically to most Unix systems.
-
- Once Tcl and `expect' are ported, DejaGnu should run. Most system
-dependencies are taken care of by using `expect' as the main command
-shell.
-
-\1f
-File: dejagnu.info, Node: Installation, Next: Index, Prev: Extending, Up: Top
-
-Installing DejaGnu
-******************
-
- Once you have the DejaGnu source unpacked and available, you must
-first configure the software to specify where it is to run (and the
-associated defaults); then you can proceed to installing it.
-
-* Menu:
-
-* Configuring DejaGnu::
-* Installing DejaGnu::
-
-\1f
-File: dejagnu.info, Node: Configuring DejaGnu, Next: Installing DejaGnu, Up: Installation
-
-Configuring the DejaGnu test driver
-===================================
-
- It is usually best to configure in a directory separate from the
-source tree, specifying where to find the source with the optional
-`--srcdir' option to `configure'. DejaGnu uses the GNU `autoconf' to
-configure itself. For more info on using autoconf, read the GNU
-autoconf manual. To configure, execute the `configure' program, no
-other options are required. For an example, to configure in a seperate
-tree for objects, execute the configure script from the source tree
-like this:
-
- ../dejagnu-1.3/configure
-
- DejaGnu doesn't care at config time if it's for testing a native
-system or a cross system. That is determined at runtime by using the
-config files.
-
- You may also want to use the `configure' option `--prefix' to
-specify where you want DejaGnu and its supporting code installed. By
-default, installation is in subdirectories of `/usr/local', but you can
-select any alternate directory ALTDIR by including `--prefix=ALTDIR' on
-the `configure' command line. (This value is captured in the Makefile
-variables `prefix' and `exec_prefix'.)
-
- Save for a small number of example tests, the DejaGnu distribution
-itself does not include any test suites; these are available separately.
-Test suites for the GNU compiler (testing both GCC and G++) and for the
-GNU binary utilities are distributed in parallel with the DejaGnu
-distribution (but packaged as separate files). The test suite for the
-GNU debugger is distributed in parallel with each release of GDB
-itself, starting with GDB 4.9. After configuring the top-level DejaGnu
-directory, unpack and configure the test directories for the tools you
-want to test; then, in each test directory, run `make' to build
-auxiliary programs required by some of the tests.
-
-\1f
-File: dejagnu.info, Node: Installing DejaGnu, Prev: Configuring DejaGnu, Up: Installation
-
-Installing DejaGnu
-==================
-
- To install DejaGnu in your filesystem (either in `/usr/local', or as
-specified by your `--prefix' option to `configure'), execute
-
- eg$ make install
-
-`make install' does these things for DejaGnu:
-
- 1. Look in the path specified for executables (`$exec_prefix') for
- directories called `lib' and `bin'. If these directories do not
- exist, `make install' creates them.
-
- 2. Create another directory in the `lib' directory, called `dejagnu'.
-
- 3. Copy the `runtest' shell script into `$exec_prefix/bin'.
-
- 4. Copy all the library files (used to support the framework) into
- `$exec_prefix/lib/dejagnu'.
-
- 5. Copy `runtest.exp' into `$exec_prefix/lib/dejagnu'. This is the
- main Tcl code implementing DejaGnu.
-
-
- Each test suite collection comes with simple installation
-instructions in a `README' file; in general, the test suites are
-designed to be unpacked in the source directory for the corresponding
-tool, and extract into a directory called `testsuite'.
-
-\1f
-File: dejagnu.info, Node: Index, Prev: Installation, Up: Top
-
-Index
-*****
-
-* Menu:
-
-* --all (runtest option): Invoking runtest.
-* --baud (runtest option): Invoking runtest.
-* --build (runtest option): Invoking runtest.
-* --connect (runtest option): Invoking runtest.
-* --debug (runtest option): Invoking runtest.
-* --help (runtest option): Invoking runtest.
-* --host (runtest option): Invoking runtest.
-* --name (runtest option): Invoking runtest.
-* --objdir (runtest option): Invoking runtest.
-* --outdir (runtest option): Invoking runtest.
-* --reboot (runtest option): Invoking runtest.
-* --srcdir (runtest option): Invoking runtest.
-* --strace (runtest option): Invoking runtest.
-* --target (runtest option): Invoking runtest.
-* --tool (runtest option): Invoking runtest.
-* --tool and naming conventions: Names.
-* --verbose (runtest option): Invoking runtest.
-* --version (runtest option): Invoking runtest.
-* -b (runtest option): Invoking runtest.
-* -V (runtest option): Invoking runtest.
-* -v (runtest option): Invoking runtest.
-* .exp: Overview.
-* absolute PATH: utils.exp.
-* adding a target: Adding Targets.
-* adding a test case: Adding.
-* all_flag: Config Values.
-* ambiguity, required for POSIX: Posix.
-* archive object files: target.exp.
-* auxiliary files, building: Running Tests.
-* auxiliary programs: Configuring DejaGnu.
-* auxiliary test programs: Invoking runtest.
-* baud: Config Values.
-* baud rate, specifying: Invoking runtest.
-* bps, specifying: Invoking runtest.
-* bt: debugger.exp.
-* bug number: Variables.
-* bug number, extra: Variables.
-* bug_id: Variables.
-* build config name, changing: Invoking runtest.
-* build host configuration test: framework.exp.
-* build_triplet: Config Values.
-* built in procedures, DejaGnu: DejaGnu Builtins.
-* C torture test: Writing.
-* canadian cross configuration test: framework.exp.
-* cancelling expected failure: framework.exp.
-* check makefile target: Running Tests.
-* clear_xfail CONFIG: framework.exp.
-* Closing a remote connection: remote.exp.
-* command line option variables: Config Values.
-* command line options: Invoking runtest.
-* command line Tcl variable definition: Invoking runtest.
-* communications procedures: remote.exp.
-* comp_output: Variables.
-* comparing files: utils.exp.
-* compile a file: target.exp.
-* configuration dependent defaults: Config Values.
-* configuring DejaGnu: Installation.
-* connecting to target: Invoking runtest.
-* connectmode: Config Values.
-* converting relative paths to absolute: utils.exp.
-* Core Internal Procedures: framework.exp.
-* cross configuration: Running Tests.
-* current test subdirectory: Variables.
-* dbg.log file: Invoking runtest.
-* debug log: Debug.
-* debug log for test cases: Invoking runtest.
-* debugger.exp: debugger.exp.
-* debugging a test case: Debugging.
-* default options, controlling: Config Values.
-* defaults, option: Config Values.
-* defaults, setting in init file: Init Module.
-* DejaGnu configuration: Installation.
-* DejaGnu test driver: Invoking runtest.
-* DejaGnu, the name: Design Goals.
-* Delete a watchpoint.: debugger.exp.
-* design goals: Design Goals.
-* detailed log: Detail.
-* diff FILENAME FILENAME: utils.exp.
-* directories matching a pattern: utils.exp.
-* directory names and --tool: Names.
-* download a file: remote.exp.
-* download FILE [ SPAWNID ]: remote.exp.
-* download, tip: remote.exp.
-* dumplocals *expr*: debugger.exp.
-* dumprocs *expr*: debugger.exp.
-* dumpvars *expr*: debugger.exp.
-* dumpwatch *expr*: debugger.exp.
-* echo.exp: Sample Test.
-* ERROR <1>: framework.exp.
-* ERROR: Invoking runtest.
-* example: Sample Test.
-* exec_output: Variables.
-* exec_prefix, configure options.: Configuring DejaGnu.
-* execute_anywhere *cmdline*: target.exp.
-* executing commands remotely: target.exp.
-* existing tests, running: Running Tests.
-* exit code from runtest: Invoking runtest.
-* exit procedure, tested tools: Target Dependent.
-* exit_remote_shell SPAWNID: remote.exp.
-* exp filename suffix: Names.
-* expect internal tracing: Invoking runtest.
-* expect script names: Overview.
-* expect scripting language: Tcl and Expect.
-* expect_out(buffer): Variables.
-* expected failure <1>: framework.exp.
-* expected failure: Invoking runtest.
-* expected failure, cancelling: framework.exp.
-* FAIL <1>: Invoking runtest.
-* FAIL: Posix.
-* fail "STRING": framework.exp.
-* failing test, expected: Invoking runtest.
-* failing test, unexpected: Invoking runtest.
-* failure, expected: framework.exp.
-* failure, POSIX definition: Posix.
-* filename for test files: Names.
-* files matching a pattern: utils.exp.
-* find DIR PATTERN: utils.exp.
-* findfile: Init Module.
-* finding file differences: utils.exp.
-* future directions: Future Directions.
-* gdb.t00/echo.exp: Sample Test.
-* get_warning_threshold: framework.exp.
-* getdirs DIR: utils.exp.
-* getdirs DIR PATTERN: utils.exp.
-* getenv VAR: utils.exp.
-* getting environment variables: utils.exp.
-* GNATS bug number: Variables.
-* Granlund, Torbjorn: Writing.
-* grep FILENAME REGEXP: utils.exp.
-* grep FILENAME REGEXP line: utils.exp.
-* help with runtest: Invoking runtest.
-* hints on test case writing: Hints.
-* host config name, changing: Invoking runtest.
-* host configuration test: framework.exp.
-* host, explained: Installation.
-* host_triplet: Config Values.
-* ignoretests: Config Values.
-* init file name: Init Module.
-* init file, purpose: Init Module.
-* initialization: Init Module.
-* input files: Input Files.
-* installed tool name: framework.exp.
-* installing DejaGnu: Installing DejaGnu.
-* internal details: Internals.
-* invoking: Invoking runtest.
-* IP network procedures: remote.exp.
-* isbuild "HOST": framework.exp.
-* ishost "HOST": framework.exp.
-* isnative: framework.exp.
-* istarget "TARGET": framework.exp.
-* kermit PORT BPS: remote.exp.
-* kermit, remote testing via: Invoking runtest.
-* last command output: Variables.
-* lib/debugger.exp: debugger.exp.
-* lib/remote.exp: remote.exp.
-* lib/target.exp: target.exp.
-* lib/utils.exp: utils.exp.
-* Libes, Don: Tcl and Expect.
-* list, pruning: utils.exp.
-* list_targets: target.exp.
-* lists supported targets: target.exp.
-* load library file: framework.exp.
-* load procedure, tested tools: Target Dependent.
-* load_lib "LIBRARY-FILE": framework.exp.
-* local site.exp: Local Config File.
-* log files, where to write: Invoking runtest.
-* Lupton, Robert: Adding Tools.
-* make builds part of tests: Configuring DejaGnu.
-* make check: Running Tests.
-* master site.exp: Master Config File.
-* Menapace, Julia: Design Goals.
-* mondfe: Cross Targets.
-* mondfe, remote testing via: Invoking runtest.
-* name "DejaGnu": Design Goals.
-* name for remote test machine: Invoking runtest.
-* name transformations: framework.exp.
-* name, initialization module: Init Module.
-* naming conventions: Names.
-* naming tests to run: Invoking runtest.
-* native configuration: Running Tests.
-* native configuration test: framework.exp.
-* network (IP) procedures: remote.exp.
-* NOTE <1>: framework.exp.
-* NOTE: Invoking runtest.
-* note "STRING": framework.exp.
-* objdir: Config Values.
-* object directory: Invoking runtest.
-* Opening a remote connection: remote.exp.
-* operating principles: Internals.
-* option defaults: Config Values.
-* option list, runtest: Invoking runtest.
-* options: Invoking runtest.
-* options for runtest, common: Running Tests.
-* options, Tcl variables for defaults: Config Values.
-* order of tests: Names.
-* Ousterhout, John K.: Tcl and Expect.
-* outdir: Config Values.
-* output directory: Invoking runtest.
-* output files: Output Files.
-* output, additional: Invoking runtest.
-* overriding site.exp: Customizing.
-* overview: Overview.
-* PASS <1>: Invoking runtest.
-* PASS: Posix.
-* pass "STRING": framework.exp.
-* path lookup: utils.exp.
-* pattern match, directory: utils.exp.
-* pattern match, filenames: utils.exp.
-* perror "STRING NUMBER": framework.exp.
-* personal config site.exp: Personal Config File.
-* pop_host: target.exp.
-* pop_target: target.exp.
-* porting to a new host: Porting.
-* POSIX conformance: Posix.
-* prefix, configure options: Configuring DejaGnu.
-* print *var*: debugger.exp.
-* Print a backtrace: debugger.exp.
-* Print global variable values: debugger.exp.
-* Print local variable value: debugger.exp.
-* Print procedure bodies: debugger.exp.
-* Print watchpoints: debugger.exp.
-* Printing variable values: debugger.exp.
-* PRMS bug number: Variables.
-* prms_id: Variables.
-* problem, detected by test case: Invoking runtest.
-* prune LIST PATTERN: utils.exp.
-* prune_system_crud SYSTEM TEXT: utils.exp.
-* pruning system output, examining program output: utils.exp.
-* psource FILENAME: utils.exp.
-* push_host *name*: target.exp.
-* push_target *name*: target.exp.
-* quit: debugger.exp.
-* Quiting DejaGnu: debugger.exp.
-* ranlib a file: target.exp.
-* reboot: Config Values.
-* rebooting remote targets: Invoking runtest.
-* regular expression, file contents: utils.exp.
-* remote connection procedures: remote.exp.
-* remote connection, ending: remote.exp.
-* remote test machine name: Invoking runtest.
-* remote testbed, connecting to: Invoking runtest.
-* remote testing: Cross Targets.
-* remote testing via kermit: Invoking runtest.
-* remote testing via mondfe: Invoking runtest.
-* remote testing via rlogin: Invoking runtest.
-* remote testing via rsh: Invoking runtest.
-* remote testing via telnet: Invoking runtest.
-* remote testing via tip: Invoking runtest.
-* remote.exp: remote.exp.
-* remote_close SHELLID: remote.exp.
-* remote_open TYPE: remote.exp.
-* rlogin HOSTNAME: remote.exp.
-* rlogin, remote testing via: Invoking runtest.
-* rsh HOSTNAME: remote.exp.
-* rsh, remote testing via: Invoking runtest.
-* running: Invoking runtest.
-* running tests: Running Tests.
-* runtest description: Invoking runtest.
-* runtest exit code: Invoking runtest.
-* runtest option defaults: Config Values.
-* runtest option list: Invoking runtest.
-* runtest, listing options: Invoking runtest.
-* runtest, most common options: Running Tests.
-* runtest, variable defns on cmdline: Invoking runtest.
-* runtest.exp: Internals.
-* runtest_file_p RUNTESTS TESTCASE: utils.exp.
-* runtests: Config Values.
-* searching file contents: utils.exp.
-* selecting a range of tests <1>: utils.exp.
-* selecting a range of tests: Invoking runtest.
-* selecting tests for a tool: Invoking runtest.
-* serial download, tip: remote.exp.
-* serial line connection, kermit: remote.exp.
-* serial line connection, tip: remote.exp.
-* set current host: target.exp.
-* set current target: target.exp.
-* set_warning_threshold THRESHOLD: framework.exp.
-* setenv VAR VAL: utils.exp.
-* setting defaults for DejaGnu variables: Config Values.
-* setting environment variables: utils.exp.
-* setting up targets: Init Module.
-* setup_xfail "CONFIG [BUGID]": framework.exp.
-* site.exp: Customizing.
-* site.exp for all of DejaGnu: Master Config File.
-* site.exp for each person: Personal Config File.
-* site.exp for each tool: Local Config File.
-* site.exp, multiple: Customizing.
-* slay NAME: utils.exp.
-* slaying processes: utils.exp.
-* source directory: Invoking runtest.
-* sourcing Tcl files: utils.exp.
-* special variables: Variables.
-* specifying target name: Invoking runtest.
-* specifying the build config name: Invoking runtest.
-* specifying the host config name: Invoking runtest.
-* specifying the target configuration: Invoking runtest.
-* srcdir: Config Values.
-* standard conformance: POSIX 1003.3: Posix.
-* start procedure, tested tools: Target Dependent.
-* starting interactive tools: Init Module.
-* starting the tcl debugger: Invoking runtest.
-* subdir: Variables.
-* success, POSIX definition: Posix.
-* successful test: Invoking runtest.
-* successful test, unexpected: Invoking runtest.
-* suffix, expect scripts: Overview.
-* summary log: Summary.
-* target configuration test: framework.exp.
-* target configuration, specifying: Invoking runtest.
-* target dependent procedures: Target Dependent.
-* target machine name: Invoking runtest.
-* target, explained: Installation.
-* target.exp: target.exp.
-* target_triplet: Config Values.
-* targetname: Config Values.
-* targets: Cross Targets.
-* tcl: Tcl and Expect.
-* tcl debugger: Invoking runtest.
-* Tcl variables for option defaults: Config Values.
-* Tcl variables, defining for runtest: Invoking runtest.
-* TCLVAR=VALUE: Invoking runtest.
-* telnet HOSTNAME PORT: remote.exp.
-* telnet, remote testing via: Invoking runtest.
-* terminating remote connection: remote.exp.
-* test case cannot run: Invoking runtest.
-* test case messages: Invoking runtest.
-* test case warnings: Invoking runtest.
-* test case, debugging: Debugging.
-* test case, declaring ambiguity: framework.exp.
-* test case, declaring failure: framework.exp.
-* test case, declaring no support: framework.exp.
-* test case, declaring no test: framework.exp.
-* test case, declaring success: framework.exp.
-* test case, ERROR in: framework.exp.
-* test case, expecting failure: framework.exp.
-* test case, informational messages: framework.exp.
-* test case, WARNING in: framework.exp.
-* test case, WARNING threshold: framework.exp.
-* test case, writing: Tests.
-* test cases, debug log: Invoking runtest.
-* test directories, naming: Names.
-* test filename: Names.
-* test output, displaying all: Invoking runtest.
-* test programs, auxiliary: Invoking runtest.
-* test suite distributions: Configuring DejaGnu.
-* test, failing: Invoking runtest.
-* test, successful: Invoking runtest.
-* test, unresolved outcome: Invoking runtest.
-* test, unsupported: Invoking runtest.
-* tests, running: Running Tests.
-* tests, running order: Names.
-* tests, running specifically <1>: utils.exp.
-* tests, running specifically: Invoking runtest.
-* TET: Posix.
-* tip PORT: remote.exp.
-* tip, remote testing via: Invoking runtest.
-* tip_download SPAWNID FILE: remote.exp.
-* tool: Config Values.
-* tool command language: Tcl and Expect.
-* tool initialization: Init Module.
-* tool name, as installed: framework.exp.
-* tool names and naming conventions: Names.
-* TOOL_exit: Target Dependent.
-* TOOL_load: Target Dependent.
-* TOOL_start: Target Dependent.
-* TOOL_version: Target Dependent.
-* tracelevel: Config Values.
-* tracing Tcl commands: Invoking runtest.
-* transform: Init Module.
-* transform "TOOLNAME": framework.exp.
-* transform tool name: framework.exp.
-* turning on output: Invoking runtest.
-* unexpected success: Invoking runtest.
-* UNRESOLVED <1>: Invoking runtest.
-* UNRESOLVED: Posix.
-* unresolved "STRING": framework.exp.
-* unset current host: target.exp.
-* unset current target: target.exp.
-* unsetenv VAR: utils.exp.
-* unsetting environment variables: utils.exp.
-* UNSUPPORTED <1>: Invoking runtest.
-* UNSUPPORTED: Posix.
-* unsupported "STRING": framework.exp.
-* unsupported test: Invoking runtest.
-* UNTESTED <1>: Invoking runtest.
-* UNTESTED: Posix.
-* untested "STRING": framework.exp.
-* untested properties: Invoking runtest.
-* utilities, loading from init file: Init Module.
-* utils.exp: utils.exp.
-* variables for all tests: Variables.
-* variables for option defaults: Config Values.
-* variables of DejaGnu, defaults: Customizing.
-* verbose: Config Values.
-* verbose [-log] [-n] [-] "STRING" NUMBER: framework.exp.
-* verbose builtin function: framework.exp.
-* version numbers: Invoking runtest.
-* version procedure, tested tools: Target Dependent.
-* VxWorks, link with -r: Cross Targets.
-* WARNING <1>: framework.exp.
-* WARNING: Invoking runtest.
-* warning "STRING NUMBER": framework.exp.
-* Watch when a variable is read: debugger.exp.
-* Watch when a variable is unset: debugger.exp.
-* Watch when a variable is written: debugger.exp.
-* watchdel *watch*: debugger.exp.
-* watchread *var*: debugger.exp.
-* watchunset *var*: debugger.exp.
-* watchwrite *var*: debugger.exp.
-* What is New: What is New.
-* which BINARY: utils.exp.
-* writing a test case: Tests.
-* XFAIL <1>: Invoking runtest.
-* XFAIL: Posix.
-* XFAIL, avoiding for POSIX: Posix.
-* XFAIL, producing: framework.exp.
-* XPASS: Invoking runtest.
-* XPASS, producing: framework.exp.
-
-
+++ /dev/null
-%PDF-1.2
-8 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -194.44
-/Flags 4
-/FontBBox [-40 -250 1009 969]
-/FontName /CMR10
-/ItalicAngle 0
-/XHeight 431
-/StemV 80
-/FontFile 7 0 R
->>
-endobj
-9 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F1
-/FontDescriptor 8 0 R
-/BaseFont /PNKVMB+CMR10
-/FirstChar 0
-/LastChar 127
-/Widths [625 833.34 777.78 694.45 666.67 750 722.22 777.78 722.22 777.78 722.22 583.34
-555.56 555.56 833.34 833.34 277.78 305.56 500 500 500 500 500 750 444.45 500 722.22
-777.78 500 902.78 1013.89 777.78 277.78 277.78 500 833.34 500 833.34 777.78 277.78
-388.89 388.89 500 777.78 277.78 333.33 277.78 500 500 500 500 500 500 500 500 500
-500 500 277.78 277.78 277.78 777.78 472.22 472.22 777.78 750 708.34 722.22 763.89
-680.56 652.78 784.72 750 361.11 513.89 777.78 625 916.67 750 777.78 680.56 777.78
-736.11 555.56 722.22 750 750 1027.78 750 750 611.11 277.78 500 277.78 500 277.78
-277.78 500 555.56 444.45 555.56 444.45 305.56 500 555.56 277.78 305.56 527.78 277.78
-833.34 555.56 500 555.56 527.78 391.67 394.45 388.89 555.56 527.78 722.22 527.78
-527.78 444.45 500 1000 500 500 500]
->>
-endobj
-11 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 686.11
-/Ascent 694.44
-/Descent -194.44
-/Flags 4
-/FontBBox [-296 -251 1139 946]
-/FontName /CMBX12
-/ItalicAngle 0
-/XHeight 444
-/StemV 80
-/FontFile 10 0 R
->>
-endobj
-12 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F2
-/FontDescriptor 11 0 R
-/BaseFont /XOEAXU+CMBX12
-/FirstChar 0
-/LastChar 127
-/Widths [675.93 937.5 875 787.04 750 879.63 812.5 875 812.5 875 812.5 656.25 625
-625 937.5 937.5 312.5 343.75 562.5 562.5 562.5 562.5 562.5 849.54 500 574.07 812.5
-875 562.5 1018.52 1143.52 875 312.5 342.59 581.02 937.5 562.5 937.5 875 312.5 437.5
-437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5
-562.5 562.5 312.5 312.5 342.59 875 531.25 531.25 875 849.54 799.77 812.5 862.27 738.43
-707.18 884.26 879.63 418.98 581.02 880.79 675.93 1067.13 879.63 844.91 768.52 844.91
-839.12 625 782.41 864.58 849.54 1162.04 849.54 849.54 687.5 312.5 581.02 312.5 562.5
-312.5 312.5 546.88 625 500 625 513.31 343.75 562.5 625 312.5 343.75 593.75 312.5
-937.5 625 562.5 625 593.75 459.49 443.75 437.5 625 593.75 812.5 593.75 593.75 500
-562.5 1125 562.5 562.5 562.5]
->>
-endobj
-14 0 obj
-<<
-/Length 480
->>
-stream
-0 w 0 g 0 G BT/F1 9.96 Tf 37.93 -9.96 TD[(o)]TJ/F2 20.66 Tf -19.93 -123.44 TD[(The)-374(DejaGn)30(u)-374(T)93(esting)-374(F)92(ramew)32(ork)]TJ ET 18.00 -145.39 m 450.00 -145.39 l 450.00 -141.41 l 18.00 -141.41 l b BT/F1 10.91 Tf 334.5 -156.95 TD[(for)-333(DejaGn)27(u)-332(V)82(ersion)-332(1.3)]TJ 72.92 -26.1 TD[(Jan)-333(1996)]TJ/F2 14.35 Tf -389.42 -425.07 TD[(Rob)-374(Sa)30(v)31(o)31(y)32(e)]TJ ET 18.00 -616.89 m 450.00 -616.89 l 450.00 -614.89 l 18.00 -614.89 l b 0 g 0 G
-endstream
-endobj
-16 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
->>
-endobj
-6 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 16 0 R
->>
-endobj
-20 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -960
-/Flags 68
-/FontBBox [-29 -960 1116 775]
-/FontName /CMSY10
-/ItalicAngle -14
-/XHeight 431
-/StemV 80
-/FontFile 19 0 R
->>
-endobj
-21 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F3
-/FontDescriptor 20 0 R
-/BaseFont /ZRNQXX+CMSY10
-/FirstChar 0
-/LastChar 127
-/Widths [777.78 277.78 777.78 500 777.78 500 777.78 777.78 777.78 777.78 777.78 777.78
-777.78 1000 500 500 777.78 777.78 777.78 777.78 777.78 777.78 777.78 777.78 777.78
-777.78 777.78 777.78 1000 1000 777.78 777.78 1000 1000 500 500 1000 1000 1000 777.78
-1000 1000 611.11 611.11 1000 1000 1000 777.78 275 1000 666.67 666.67 888.89 888.89
-0 0 555.56 555.56 666.67 500 722.22 722.22 777.78 777.78 611.11 798.47 656.81 526.53
-771.39 527.78 718.75 594.87 844.52 544.52 677.78 761.95 689.72 1200.9 820.49 796.11
-695.56 816.67 847.5 605.56 544.64 625.83 612.78 987.78 713.3 668.34 724.73 666.67
-666.67 666.67 666.67 666.67 611.11 611.11 444.45 444.45 444.45 444.45 500 500 388.89
-388.89 277.78 500 500 611.11 500 277.78 833.34 750 833.34 416.67 666.67 666.67 777.78
-777.78 444.45 444.45 444.45 611.11 777.78 777.78 777.78 777.78]
->>
-endobj
-22 0 obj
-<<
-/Length 1550
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 372.64 -49.02 TD[(Cygn)27(us)-332(Supp)-28(ort)]TJ -354.64 -488.63 TD[(Cop)27(yrigh)28(t)]TJ 54.27 0.32 TD[(c)]TJ/F3 10.91 Tf -3.03 -0.32 TD[(\015)]TJ/F1 10.91 Tf 14.55 0 TD[(92,)-333(93,)-333(94,)-333(95,)-334(1996)-333(F)82(ree)-332(Soft)27(w)27(are)-332(F)82(oundation,)-332(Inc.)]TJ -65.79 -16.14 TD[(P)27(ermission)-352(is)-354(gran)27(ted)-352(to)-354(mak)27(e)-352(and)-354(distribute)-353(v)27(erbatim)-353(copies)-353(of)-354(this)-353(man)27(ual)-353(pro)27(vided)-352(the)]TJ 0 -13.15 TD[(cop)27(yrigh)28(t)-332(notice)-334(and)-333(this)-333(p)-28(ermission)-333(notice)-334(are)-333(preserv)27(ed)-333(on)-333(all)-333(copies.)]TJ 0 -16.14 TD[(P)27(ermission)-418(is)-419(gran)27(ted)-419(to)-419(cop)27(y)-418(and)-420(distribute)-419(mo)-28(di\014ed)-419(v)27(ersions)-418(of)-419(this)-420(man)27(ual)-418(under)-419(the)]TJ 0 -13.15 TD[(conditions)-460(for)-461(v)27(erbatim)-459(cop)26(ying,)-491(pro)27(vided)-460(also)-460(that)-461(the)-460(en)26(tire)-459(resulting)-461(deriv)27(ed)-459(w)26(ork)-459(is)]TJ 0 -13.16 TD[(distributed)-333(under)-333(the)-333(terms)-334(of)-333(a)-333(p)-28(ermission)-334(notice)-333(iden)27(tical)-332(to)-334(this)-333(one.)]TJ 0 -16.13 TD[(P)27(ermission)-362(is)-364(gran)27(ted)-363(to)-364(cop)27(y)-363(and)-363(distribute)-364(translations)-364(of)-363(this)-364(man)27(ual)-363(in)27(to)-363(another)-363(lan-)]TJ 0 -13.16 TD[(guage,)-333(under)-333(the)-333(ab)-28(o)27(v)27(e)-332(conditions)-333(for)-334(mo)-27(di\014ed)-334(v)27(ersions.)]TJ ET 0 g 0 G
-endstream
-endobj
-23 0 obj
-<<
-/F1 9 0 R
-/F3 21 0 R
->>
-endobj
-18 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 23 0 R
->>
-endobj
-27 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 611.11
-/Ascent 611.11
-/Descent -222.22
-/Flags 5
-/FontBBox [-4 -235 731 800]
-/FontName /CMTT10
-/ItalicAngle 0
-/XHeight 431
-/StemV 80
-/FontFile 26 0 R
->>
-endobj
-28 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F4
-/FontDescriptor 27 0 R
-/BaseFont /YSVNVS+CMTT10
-/FirstChar 0
-/LastChar 127
-/Widths [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
-525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
-525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
-525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
-525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
-525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
-525 525 525 525 525]
->>
-endobj
-30 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -194.44
-/Flags 68
-/FontBBox [-200 -250 1123 969]
-/FontName /CMSL10
-/ItalicAngle -9
-/XHeight 431
-/StemV 80
-/FontFile 29 0 R
->>
-endobj
-31 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F5
-/FontDescriptor 30 0 R
-/BaseFont /YXBGJA+CMSL10
-/FirstChar 0
-/LastChar 127
-/Widths [625 833.34 777.78 694.45 666.67 750 722.22 777.78 722.22 777.78 722.22 583.34
-555.56 555.56 833.34 833.34 277.78 305.56 500 500 500 500 500 808.65 444.45 500 722.22
-777.78 500 902.78 1013.89 777.78 277.78 277.78 500 833.34 500 833.34 777.78 277.78
-388.89 388.89 500 777.78 277.78 333.33 277.78 500 500 500 500 500 500 500 500 500
-500 500 277.78 277.78 277.78 777.78 472.22 472.22 777.78 750 708.34 722.22 763.89
-680.56 652.78 784.72 750 361.11 513.89 777.78 625 916.67 750 777.78 680.56 777.78
-736.11 555.56 722.22 750 750 1027.78 750 750 611.11 277.78 500 277.78 500 277.78
-277.78 500 555.56 444.45 555.56 444.45 305.56 500 555.56 277.78 305.56 527.78 277.78
-833.34 555.56 500 555.56 527.78 391.67 394.45 388.89 555.56 527.78 722.22 527.78
-527.78 444.45 500 1000 500 500 500]
->>
-endobj
-32 0 obj
-<<
-/Length 3690
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(1:)-444(What)-334(is)-333(DejaGn)27(u?)-25820(1)]TJ/F2 17.22 Tf 0 -25.91 TD[(1)-562(What)-375(is)-375(DejaGn)30(u?)]TJ/F1 10.91 Tf 14.94 -28.09 TD[(DejaGn)27(u)-378(is)-379(a)-379(framew)27(ork)-378(for)-379(testing)-379(other)-379(programs.)-582(Its)-379(purp)-28(ose)-379(is)-379(to)-379(pro)27(vide)-378(a)-379(single)]TJ -14.94 -13.15 TD[(fron)27(t)-332(end)-333(for)-334(all)-333(tests.)-444(Bey)26(ond)-332(this,)-333(DejaGn)26(u)-332(o\013ers)-333(sev)27(eral)-333(adv)55(an)28(tages)-333(for)-333(testing:)]TJ 5.91 -16.14 TD[(1.)-660(The)-359(\015exibilit)27(y)-359(and)-359(consistency)-360(of)-359(the)-360(DejaGn)27(u)-359(framew)27(ork)-359(mak)27(e)-358(it)-360(easy)-359(to)-360(write)-360(tests)]TJ 15.69 -13.15 TD[(for)-333(an)27(y)-332(program.)]TJ -15.69 -16.14 TD[(2.)-660(DejaGn)27(u)-225(pro)27(vides)-225(a)-226(la)26(y)28(er)-225(of)-226(abstraction)-226(whic)27(h)-226(allo)27(ws)-225(y)27(ou)-225(to)-226(write)-226(tests)-227(that)-226(are)-226(p)-28(ortable)]TJ 15.69 -13.15 TD[(to)-372(an)27(y)-372(host)-373(or)-373(target)-372(where)-373(a)-373(program)-372(m)26(ust)-371(b)-28(e)-373(tested.)-562(F)82(or)-372(instance,)-382(a)-373(test)-373(for)-372(GDB)]TJ 0 -13.15 TD[(can)-282(run)-282(\(from)-283(an)27(y)-281(Unix)-283(based)-282(host\))-283(on)-282(an)27(y)-282(target)-282(arc)27(hitecture)-282(that)-282(DejaGn)27(u)-282(supp)-27(orts.)]TJ 0 -13.15 TD[(Curren)27(tly)-284(DejaGn)27(u)-284(runs)-285(tests)-286(on)-285(sev)27(eral)-284(single)-285(b)-28(oard)-285(computers,)-295(whose)-285(op)-28(erating)-285(soft-)]TJ 0 -13.15 TD[(w)27(are)-332(ranges)-333(from)-334(just)-333(a)-333(b)-28(o)-28(ot)-333(monitor)-334(to)-333(a)-333(full-\015edged,)-334(Unix-lik)27(e)-332(realtime)-333(OS.)]TJ -15.69 -16.14 TD[(3.)-660(All)-414(tests)-414(ha)26(v)28(e)-413(the)-415(same)-414(output)-415(format.)-687(This)-415(mak)27(es)-413(it)-415(easy)-414(to)-415(in)27(tegrate)-413(testing)-415(in)27(to)]TJ 15.69 -13.15 TD[(other)-373(soft)27(w)28(are)-372(dev)27(elopmen)28(t)-372(pro)-28(cesses.)-564(DejaGn)27(u's)-372(output)-373(is)-373(designed)-373(to)-373(b)-28(e)-373(parsed)-373(b)27(y)]TJ 0 -13.15 TD[(other)-333(\014ltering)-333(script,)-333(and)-334(it)-333(is)-333(also)-334(h)27(uman)-332(readable.)]TJ -6.66 -19.13 TD[(DejaGn)27(u)-332(is)-333(written)-334(in)]TJ/F4 10.91 Tf 107.9 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(,)-333(whic)27(h)-332(in)-334(turn)-333(uses)]TJ/F5 10.91 Tf 98.03 0 TD[(Tcl)]TJ/F1 10.91 Tf 15.76 0 TD[(|T)83(o)-27(ol)-333(command)-334(language.)]TJ -256.05 -16.14 TD[(Running)-262(tests)-263(requires)-263(t)26(w)28(o)-262(things:)-409(the)-263(testing)-263(framew)27(ork,)-276(and)-263(the)-263(test)-263(suites)-263(themselv)26(es.)]TJ -14.94 -13.15 TD[(T)83(ests)-379(are)-379(usually)-380(written)-380(in)]TJ/F4 10.91 Tf 137.31 0 TD[(expect)]TJ/F1 10.91 Tf 38.51 0 TD[(using)-379(Tcl,)-391(but)-380(y)27(ou)-379(can)-379(also)-380(use)-380(a)-379(Tcl)-380(script)-379(to)-380(run)-380(a)]TJ -175.82 -13.15 TD[(test)-353(suite)-353(that)-353(is)-353(not)-353(based)-353(on)]TJ/F4 10.91 Tf 148.42 0 TD[(expect)]TJ/F1 10.91 Tf 34.37 0 TD[(.)-503(\()]TJ/F4 10.91 Tf 12.77 0 TD[(expect)]TJ/F1 10.91 Tf 38.21 0 TD[(script)-353(\014lenames)-353(con)27(v)28(en)28(tionally)-353(use)-353(`)]TJ/F4 10.91 Tf 172.29 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')]TJ -428.97 -13.15 TD[(as)-359(a)-359(su\016x;)-373(for)-359(example,)-366(the)-360(main)-359(implemen)27(tation)-359(of)-359(the)-360(DejaGn)27(u)-358(test)-360(driv)27(er)-359(is)-359(in)-360(the)-359(\014le)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 63 0 TD[('.\))]TJ ET 0 g 0 G
-endstream
-endobj
-33 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F5 31 0 R
->>
-endobj
-25 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 33 0 R
->>
-endobj
-36 0 obj
-<<
-/Length 116
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(2)-26498(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ ET 0 g 0 G
-endstream
-endobj
-37 0 obj
-<<
-/F1 9 0 R
->>
-endobj
-35 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 37 0 R
->>
-endobj
-40 0 obj
-<<
-/Length 4839
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(2:)-444(What)-334(is)-333(new)-333(in)-334(this)-333(release)-333(?)-21300(3)]TJ/F2 17.22 Tf 0 -25.91 TD[(2)-562(What)-375(is)-375(new)-375(in)-375(this)-375(release)-375(?)]TJ/F1 10.91 Tf 14.94 -28.09 TD[(This)-448(release)-448(has)-448(a)-449(n)27(um)28(b)-27(er)-448(of)-449(substan)27(tial)-447(c)27(hanges)-448(o)27(v)28(er)-447(v)26(ersion)-447(1.2.)-789(The)-449(most)-448(visible)]TJ -14.94 -13.15 TD[(c)27(hange)-309(is)-310(that)-310(the)-311(v)27(ersion)-309(of)-310(exp)-28(ect)-310(and)-311(Tcl)-310(included)-310(in)-310(the)-311(release)-310(are)-310(up-to-date)-310(with)-311(the)]TJ 0 -13.15 TD[(curren)27(t)-332(stable)-333(net)-334(releases.)-444(Other)-333(c)26(hanges)-332(are:)]TJ 5.91 -16.14 TD[(1.)-660(The)-390(con\014g)-391(sub-system)-391(in)-391(DejaGn)26(u)-390(has)-391(b)-27(een)-391(completely)-391(redesigned.)-618(It)-390(no)26(w)-390(supp)-27(orts)]TJ 15.69 -13.15 TD[(testing)-333(on)-333(remote)-333(hosts)-334(as)-333(w)27(ell)-333(as)-333(remote)-333(targets.)]TJ -15.69 -16.14 TD[(2.)-660(More)-244(builtin)-244(supp)-28(ort)-245(for)-244(building)-244(target)-245(binaries)-244(with)-245(the)-244(correct)-244(link)26(er)-243(\015ags.)-415(Curren)27(tly)]TJ 15.69 -13.15 TD[(this)-333(only)-333(w)27(orks)-333(with)-333(GCC,)-333(preferably)-334(with)-333(a)-333(target)-334(supp)-27(ort)-334(b)27(y)]TJ/F4 10.91 Tf 305.26 0 TD[(libgloss)]TJ/F1 10.91 Tf 45.82 0 TD[(.)]TJ -366.77 -16.14 TD[(3.)-660(Lots)-333(of)-333(little)-334(bug)-333(\014xes)-333(from)-334(a)-333(y)27(ear)-332(of)-334(hea)27(vy)-332(use)-334(here)-333(at)-333(Cygn)26(us)-332(Supp)-28(ort.)]TJ 0 -16.14 TD[(4.)-660(DejaGn)27(u)-332(no)27(w)-333(uses)]TJ/F4 10.91 Tf 107.55 0 TD[(autoconf)]TJ/F1 10.91 Tf 49.46 0 TD[(for)-333(con\014guration.)]TJ -157.01 -16.14 TD[(5.)-660(New)-412(test)-412(cases)-412(for)-412(DejaGn)26(u)-411(ha)27(v)28(e)-412(b)-27(een)-413(added)-412(for)-412(the)-412(new)-412(features,)-432(plus)-413(the)]TJ/F4 10.91 Tf 390.7 0 TD[(")]TJ/F1 10.91 Tf 5.72 0 TD[({to)-27(ol)]TJ/F4 10.91 Tf 23.94 0 TD[(")]TJ/F1 10.91 Tf -404.67 -13.15 TD[(option)-333(bug)-333(in)-333(the)-334(1.2)-333(testsuite)-333(has)-334(b)-28(een)-333(\014xed.)]TJ -15.69 -16.14 TD[(6.)-660(The)]TJ/F4 10.91 Tf 38.11 0 TD[(--tool)]TJ/F1 10.91 Tf 38 0 TD[(option)-333(is)-333(no)27(w)-333(optional.)]TJ -76.11 -16.14 TD[(7.)]TJ/F4 10.91 Tf 15.69 0 TD[(runtest)]TJ/F1 10.91 Tf 43.39 0 TD[(when)-302(searc)26(hing)-301(for)-303(test)-303(driv)27(ers)-302(ignores)-303(all)-303(directories)-303(named)-302(SCCS,)-303(R)27(CS,)-302(and)]TJ -43.39 -13.15 TD[(CVS.)]TJ -15.69 -16.14 TD[(8.)-660(There)-331(is)-331(no)26(w)-330(a)-331(generic)-332(k)27(eyw)28(ord)-331(based)-331(test)-331(harness)-332(that)-331(uses)-331(commen)26(ts)-330(in)-331(source)-332(co)-28(de)]TJ 15.69 -13.15 TD[(to)-333(con)27(trol)-332(ho)26(w)-332(eac)27(h)-332(test)-334(case)-333(gets)-333(built)-334(and)-333(run.)]TJ -15.69 -16.14 TD[(9.)-660(There)-333(is)-333(no)27(w)-333(some)-333(supp)-28(ort)-333(for)-334(running)-333(a)-333(testsuite)-334(with)-333(m)27(ultiple)-332(passes.)]TJ/F2 14.35 Tf -5.91 -30.88 TD[(2.1)-562(Running)-375(existing)-375(tests)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(T)83(o)-271(run)-272(tests)-271(from)-272(an)-272(existing)-272(collection,)-284(\014rst)-272(use)]TJ/F4 10.91 Tf 229.94 0 TD[(configure)]TJ/F1 10.91 Tf 54.51 0 TD[(as)-271(usual)-272(to)-272(set)-272(up)-271(the)-272(source)]TJ -299.39 -13.15 TD[(directory)-333(con)27(taining)-332(the)-334(tests.)-444(Then)-333(try)-334(running)]TJ/F4 10.91 Tf 28.8 -15.44 TD[(make)-524(check)]TJ/F1 10.91 Tf -13.86 -16.14 TD[(If)-325(the)]TJ/F4 10.91 Tf 29.53 0 TD[(check)]TJ/F1 10.91 Tf 32.19 0 TD[(target)-325(exists,)-327(it)-326(usually)-325(sa)27(v)27(es)-324(y)27(ou)-325(some)-325(trouble|for)-326(instance,)-327(it)-325(can)-326(set)-325(up)]TJ -76.66 -13.15 TD[(an)27(y)-332(auxiliary)-333(programs)-334(or)-333(other)-333(\014les)-334(needed)-333(b)27(y)-333(the)-333(tests.)]TJ 14.94 -16.14 TD[(Once)-329(y)27(ou)-328(ha)27(v)27(e)-328(run)-329(`)]TJ/F4 10.91 Tf 96.52 0 TD[(make)-333(check)]TJ/F1 10.91 Tf 55.18 0 TD[(')-329(to)-329(build)-329(an)27(y)-328(auxiliary)-330(\014les,)-330(y)27(ou)-328(migh)27(t)-328(w)26(an)28(t)-328(to)-329(call)-329(the)]TJ -166.64 -13.15 TD[(test)-293(driv)26(er)]TJ/F4 10.91 Tf 51.99 0 TD[(runtest)]TJ/F1 10.91 Tf 43.3 0 TD[(directly)-293(to)-294(rep)-28(eat)-294(the)-294(tests.)-432(Y)83(ou)-293(ma)27(y)-293(also)-294(ha)26(v)28(e)-293(to)-294(call)]TJ/F4 10.91 Tf 257.32 0 TD[(runtest)]TJ/F1 10.91 Tf 43.3 0 TD[(directly)]TJ -395.91 -13.15 TD[(for)-333(test)-333(collections)-333(with)-334(no)]TJ/F4 10.91 Tf 130.76 0 TD[(check)]TJ/F1 10.91 Tf 32.27 0 TD[(target)-333(in)-333(the)-333(`)]TJ/F4 10.91 Tf 66.7 0 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[('.)]TJ ET 0 g 0 G
-endstream
-endobj
-41 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
->>
-endobj
-39 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 41 0 R
->>
-endobj
-45 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -194.44
-/Flags 4
-/FontBBox [-286 -250 1122 967]
-/FontName /CMR7
-/ItalicAngle 0
-/XHeight 431
-/StemV 80
-/FontFile 44 0 R
->>
-endobj
-46 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F6
-/FontDescriptor 45 0 R
-/BaseFont /AAPMXE+CMR7
-/FirstChar 0
-/LastChar 127
-/Widths [706.35 938.5 876.99 781.75 753.97 843.26 815.48 876.99 815.48 876.99 815.48
-677.58 646.83 646.83 970.24 970.24 323.41 354.17 569.45 569.45 569.45 569.45 569.45
-843.26 507.94 569.45 815.48 876.99 569.45 1013.89 1136.91 876.99 323.41 323.41 569.45
-938.5 569.45 938.5 876.99 323.41 446.43 446.43 569.45 876.99 323.41 384.92 323.41
-569.45 569.45 569.45 569.45 569.45 569.45 569.45 569.45 569.45 569.45 569.45 323.41
-323.41 323.41 876.99 538.69 538.69 876.99 843.26 798.62 815.48 860.12 767.86 737.11
-883.93 843.26 412.7 583.34 874.01 706.35 1027.78 843.26 876.99 767.86 876.99 829.37
-630.96 815.48 843.26 843.26 1150.8 843.26 843.26 692.46 323.41 569.45 323.41 569.45
-323.41 323.41 569.45 630.96 507.94 630.96 507.94 354.17 569.45 630.96 323.41 354.17
-600.2 323.41 938.5 630.96 569.45 630.96 600.2 446.43 452.58 446.43 630.96 600.2 815.48
-600.2 600.2 507.94 569.45 1138.89 569.45 569.45 569.45]
->>
-endobj
-48 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 513.89
-/Descent -194.44
-/Flags 4
-/FontBBox [-276 -250 1077 969]
-/FontName /CMCSC10
-/ItalicAngle 0
-/XHeight 431
-/StemV 80
-/FontFile 47 0 R
->>
-endobj
-49 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F7
-/FontDescriptor 48 0 R
-/BaseFont /NVUTVS+CMCSC10
-/FirstChar 0
-/LastChar 127
-/Widths [683.33 902.77 844.44 755.55 727.77 813.88 786.1 844.44 786.1 844.44 786.1
-552.77 552.77 319.44 319.44 523.61 302.22 424.44 552.77 552.77 552.77 552.77 552.77
-813.88 494.44 915.55 735.55 824.44 635.55 974.99 1091.66 844.44 319.44 319.44 552.77
-902.77 552.77 902.77 844.44 319.44 436.11 436.11 552.77 844.44 319.44 377.77 319.44
-552.77 552.77 552.77 552.77 552.77 552.77 552.77 552.77 552.77 552.77 552.77 319.44
-319.44 844.44 844.44 844.44 523.61 844.44 813.88 770.83 786.1 829.16 741.66 712.49
-851.38 813.88 405.55 566.66 843.05 683.33 988.88 813.88 844.44 741.66 844.44 799.99
-611.1 786.1 813.88 813.88 1105.55 813.88 813.88 669.44 319.44 552.77 319.44 552.77
-319.44 319.44 613.33 580 591.11 624.44 557.78 535.55 641.11 613.33 302.22 424.44
-635.55 513.33 746.66 613.33 635.55 557.78 635.55 602.22 457.78 591.11 613.33 613.33
-835.55 613.33 613.33 502.22 552.77 1105.55 552.77 552.77 552.77]
->>
-endobj
-51 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -194.44
-/Flags 68
-/FontBBox [-163 -250 1146 969]
-/FontName /CMTI10
-/ItalicAngle -14
-/XHeight 431
-/StemV 80
-/FontFile 50 0 R
->>
-endobj
-52 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F8
-/FontDescriptor 51 0 R
-/BaseFont /OXLDNK+CMTI10
-/FirstChar 0
-/LastChar 127
-/Widths [627.22 817.77 766.66 692.22 664.44 743.33 715.55 766.66 715.55 766.66 715.55
-613.33 562.22 587.77 881.66 894.44 306.67 332.22 511.11 511.11 511.11 511.11 511.11
-831.29 460 536.66 715.55 715.55 511.11 882.77 984.99 766.66 255.55 306.67 514.44
-817.77 769.09 817.77 766.66 306.67 408.89 408.89 511.11 766.66 306.67 357.78 306.67
-511.11 511.11 511.11 511.11 511.11 511.11 511.11 511.11 511.11 511.11 511.11 306.67
-306.67 306.67 766.66 511.11 511.11 766.66 743.33 703.89 715.55 755 678.33 652.77
-773.61 743.33 385.55 525 768.88 627.22 896.66 743.33 766.66 678.33 766.66 729.44
-562.22 715.55 743.33 743.33 998.88 743.33 743.33 613.33 306.67 514.44 306.67 511.11
-306.67 306.67 511.11 460 460 511.11 460 306.67 460 511.11 306.67 306.67 460 255.55
-817.77 562.22 511.11 511.11 460 421.66 408.89 332.22 536.66 460 664.44 463.89 485.55
-408.89 511.11 1022.22 511.11 511.11 511.11]
->>
-endobj
-53 0 obj
-<<
-/Length 6907
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(4)-26498(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 14.94 -23.91 TD[(T)27(ypically)84(,)-446(y)27(ou)-422(m)26(ust)-422(use)-424(t)27(w)28(o)-423(command-line)-424(options:)-625(`)]TJ/F4 10.91 Tf 261.34 0 TD[(--tool)]TJ/F1 10.91 Tf 34.37 0 TD[(',)-446(to)-423(sp)-28(ecify)-424(whic)27(h)-423(set)-423(of)]TJ -310.65 -13.15 TD[(tests)-333(to)-333(run)]TJ/F6 6.97 Tf 55.3 3.96 TD[(1)]TJ/F1 10.91 Tf 4.47 -3.96 TD[(,)-333(and)-333(`)]TJ/F4 10.91 Tf 30.91 0 TD[(--srcdir)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-333(to)-333(sp)-28(ecify)-333(where)-334(to)-333(\014nd)-333(test)-334(directories.)]TJ -121.56 -16.14 TD[(F)83(or)-293(example,)-302(if)-294(the)-294(directory)-295(`)]TJ/F4 10.91 Tf 141.53 0 TD[(gdb/testsuite)]TJ/F1 10.91 Tf 74.45 0 TD[(')-294(con)27(tains)-293(a)-294(collection)-294(of)-294(DejaGn)27(u)-294(tests)-294(for)]TJ/F7 10.91 Tf -230.92 -13.15 TD[(gdb)]TJ/F1 10.91 Tf 20.13 0 TD[(,)-333(y)27(ou)-332(can)-334(run)-333(them)-333(lik)26(e)-332(this:)]TJ/F4 10.91 Tf 8.67 -15.45 TD[(eg$)-524(cd)-525(gdb/testsuite)]TJ 0 -12.45 TD[(eg$)-524(runtest)-525(--tool)-525(gdb)]TJ/F8 10.91 Tf -28.8 -12.45 TD[(T)76(est)-357(output)-357(fol)-51(lows,)-358(ending)-358(with:)]TJ/F4 10.91 Tf 28.8 -24.91 TD[(===)-524(gdb)-525(Summary)-525(===)]TJ 0 -24.91 TD[(#)-524(of)-525(expected)-525(passes)-525(508)]TJ 0 -12.45 TD[(#)-524(of)-525(expected)-525(failures)-525(103)]TJ 0 -12.45 TD[(/usr/latest/bin/gdb)-524(version)-525(4.14.4)-525(-nx)]TJ/F1 10.91 Tf -13.86 -16.14 TD[(Y)83(ou)-222(can)-223(use)-223(the)-223(option)-223(`)]TJ/F4 10.91 Tf 111.02 0 TD[(--srcdir)]TJ/F1 10.91 Tf 45.81 0 TD[(')-222(to)-223(p)-28(oin)27(t)-222(to)-223(some)-223(other)-223(directory)-223(con)26(taining)-222(a)-223(collection)]TJ -171.77 -13.15 TD[(of)-333(tests:)]TJ/F4 10.91 Tf 28.8 -15.44 TD[(eg$)-524(runtest)-525(--tool)-525(gdb)-525(--srcdir)-525(/devo/gdb/testsuite)]TJ/F1 10.91 Tf -13.86 -16.14 TD[(These)-468(examples)-468(assume)-468(a)]TJ/F5 10.91 Tf 131.29 0 TD[(nativ)27(e)]TJ/F1 10.91 Tf 34.81 0 TD[(con\014guration,)-502(where)-468(the)-468(same)-468(computer)-469(runs)-468(b)-28(oth)]TJ/F4 10.91 Tf -181.04 -13.15 TD[(runtest)]TJ/F1 10.91 Tf 44.02 0 TD[(and)-360(the)-361(tests)-360(themselv)27(es.)-525(When)-361(y)27(ou)-360(ha)27(v)28(e)-360(a)]TJ/F5 10.91 Tf 214.12 0 TD[(cross)]TJ/F1 10.91 Tf 27.57 0 TD[(con\014guration,)-367(the)-360(tests)-361(run)-360(on)]TJ -285.71 -13.16 TD[(a)-366(di\013eren)27(t)-365(computer,)-374(con)26(trolled)-365(b)27(y)-365(the)-366(host)-366(running)]TJ/F4 10.91 Tf 255.56 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(.)-542(In)-366(this)-367(situation,)-374(y)27(ou)-365(need)]TJ -295.65 -13.15 TD[(the)-333(option)-333(`)]TJ/F4 10.91 Tf 55.76 0 TD[(--name)]TJ/F1 10.91 Tf 34.36 0 TD[(')-333(to)-333(sp)-28(ecify)-333(the)-334(net)27(w)28(ork)-332(address)-334(for)-333(the)-333(other)-334(computer:)]TJ/F4 10.91 Tf -61.32 -15.44 TD[(eg$)-524(runtest)-525(--tool)-525(gdb)-525(--name)-525(vx9.munist.com)]TJ/F1 10.91 Tf -13.86 -16.14 TD[(If)-270(y)27(ou)-269(alw)27(a)27(ys)-269(use)-270(the)-270(same)-270(option)-271(v)55(alues,)-282(y)27(ou)-269(can)-270(record)-271(them)-270(in)-270(a)-270(\014le)-270(called)-271(`)]TJ/F4 10.91 Tf 365.18 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)]TJ -425.94 -13.15 TD[(rather)-362(than)-362(t)27(yping)-361(them)-362(eac)27(h)-361(time.)-531(See)-362(Chapter)-362(4)-362([Setting)-362(defaults)-362(for)]TJ/F4 10.91 Tf 347.29 0 TD[(runtest)]TJ/F1 10.91 Tf 44.04 0 TD[(options],)]TJ -391.33 -13.15 TD[(page)-333(15.)]TJ 14.94 -16.14 TD[(By)-392(default,)]TJ/F4 10.91 Tf 58.26 0 TD[(runtest)]TJ/F1 10.91 Tf 44.37 0 TD[(prin)27(ts)-391(only)-392(the)-392(names)-392(of)-392(the)-392(tests)-392(it)-392(runs,)-407(output)-392(from)-392(an)26(y)-391(tests)]TJ -117.57 -13.15 TD[(that)-439(ha)26(v)28(e)-439(unexp)-27(ected)-440(results,)-467(and)-439(a)-440(summary)-440(sho)27(wing)-439(ho)27(w)-439(man)27(y)-439(tests)-440(passed)-440(and)-440(ho)27(w)]TJ 0 -13.15 TD[(man)27(y)-282(failed.)-427(T)82(o)-282(displa)27(y)-282(output)-282(from)-283(all)-283(tests)-283(\(whether)-283(or)-283(not)-282(they)-283(b)-28(eha)27(v)28(e)-282(as)-283(exp)-28(ected\),)-293(use)]TJ 0 -13.15 TD[(the)-392(`)]TJ/F4 10.91 Tf 22.47 0 TD[(--all)]TJ/F1 10.91 Tf 28.63 0 TD[(')-392(option.)-623(F)83(or)-392(more)-393(v)27(erb)-27(ose)-392(output)-393(ab)-28(out)-392(pro)-28(cesses)-393(b)-28(eing)-392(run,)-408(comm)27(unication,)]TJ -51.1 -13.15 TD[(and)-391(so)-391(on,)-406(use)-391(`)]TJ/F4 10.91 Tf 77.35 0 TD[(--verbose)]TJ/F1 10.91 Tf 51.55 0 TD[('.)-618(T)83(o)-391(see)-391(ev)27(en)-390(more)-391(output,)-406(use)-391(m)26(ultiple)-390(`)]TJ/F4 10.91 Tf 206.62 0 TD[(--verbose)]TJ/F1 10.91 Tf 51.55 0 TD[(')-391(options.)]TJ -387.07 -13.15 TD[(See)-393(Chapter)-394(3)-394([Using)]TJ/F4 10.91 Tf 107.27 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(],)-408(page)-394(9,)-409(for)-393(a)-394(more)-394(detailed)-393(explanation)-394(of)-394(eac)27(h)]TJ/F4 10.91 Tf 244.55 0 TD[(runtest)]TJ/F1 10.91 Tf -391.91 -13.15 TD[(option.)]TJ 14.94 -16.14 TD[(T)83(est)-302(output)-303(go)-28(es)-303(in)27(to)-302(t)27(w)28(o)-302(\014les)-303(in)-303(y)27(our)-302(curren)27(t)-302(directory:)-429(summary)-303(output)-303(in)-303(`)]TJ/F5 10.91 Tf 369.61 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.48 0 TD[(.sum)]TJ/F1 10.91 Tf 22.91 0 TD[(',)]TJ -425.94 -13.15 TD[(and)-350(detailed)-351(output)-351(in)-351(`)]TJ/F5 10.91 Tf 114.71 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.48 0 TD[(.log)]TJ/F1 10.91 Tf 22.91 0 TD[('.)-497(\()]TJ/F5 10.91 Tf 15.73 0 TD[(to)-27(ol)]TJ/F1 10.91 Tf 22.74 0 TD[(refers)-350(to)-351(the)-351(collection)-351(of)-351(tests;)-360(for)-350(example,)-356(after)]TJ -194.57 -13.15 TD[(a)-401(run)-402(with)-401(`)]TJ/F4 10.91 Tf 59.24 0 TD[(--tool)-333(gdb)]TJ/F1 10.91 Tf 55.18 0 TD[(',)-418(lo)-28(ok)-402(for)-401(output)-402(\014les)-402(`)]TJ/F4 10.91 Tf 114.61 0 TD[(gdb.sum)]TJ/F1 10.91 Tf 40.09 0 TD[(')-401(and)-402(`)]TJ/F4 10.91 Tf 32.4 0 TD[(gdb.log)]TJ/F1 10.91 Tf 40.09 0 TD[('.\))-649(See)-402(Section)-401(5.7)]TJ -341.61 -13.15 TD[([The)-333(\014les)-333(DejaGn)27(u)-333(writes],)-333(page)-333(35.)]TJ ET 18.00 -488.41 m 162.00 -488.41 l 162.00 -488.01 l 18.00 -488.01 l b BT/F6 6.97 Tf 23.02 -496.35 TD[(1)]TJ/F1 10.91 Tf 9.92 -3.96 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--tool)]TJ/F1 10.91 Tf 34.37 0 TD[(')-373(selects)-373(a)-373(particular)-373(suite)-374(of)-373(tests,)]TJ/F8 10.91 Tf 170.49 0 TD[(not)]TJ/F1 10.91 Tf 20.44 0 TD[(the)-373(name)-373(of)-373(the)-373(executable)-374(program)-373(to)]TJ -228.33 -13.15 TD[(run.)-620(See)-392(Chapter)-392(4)-391([Con\014guration)-392(dep)-28(enden)27(t)-391(v)54(alues],)-405(page)-392(15,)-407(for)-392(information)-392(on)-392(the)]TJ 0 -13.15 TD[(v)55(ariables)-332(that)-334(y)27(ou)-332(can)-334(use)-333(to)-333(sp)-28(ecify)-333(the)-334(names)-333(of)-333(programs)-334(to)-333(run.)]TJ ET 0 g 0 G
-endstream
-endobj
-54 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F6 46 0 R
-/F7 49 0 R
-/F8 52 0 R
-/F5 31 0 R
->>
-endobj
-43 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 54 0 R
->>
-endobj
-58 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 0
-/Ascent 750
-/Descent -2000
-/Flags 4
-/FontBBox [-2000 -2000 2040 2040]
-/FontName /LCIRCLE10
-/ItalicAngle 0
-/XHeight 431
-/StemV 80
-/FontFile 57 0 R
->>
-endobj
-59 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F9
-/FontDescriptor 58 0 R
-/BaseFont /BMCYBZ+LCIRCLE10
-/FirstChar 0
-/LastChar 126
-/Widths [400 400 400 400 800 800 800 800 1200 1200 1200 1200 1600 1600 1600 1600
-2000 2000 2000 2000 2400 2400 2400 2400 2800 2800 2800 2800 3200 3200 3200 3200 3600
-3600 3600 3600 4000 4000 4000 4000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 200 300 400
-500 600 700 800 900 1000 1100 1200 1300 1400 1500 0 100 200 300 400 500 600 700 800
-900 1000 1100 1200 1300 1400 1500]
->>
-endobj
-60 0 obj
-<<
-/Length 6627
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(2:)-444(What)-334(is)-333(new)-333(in)-334(this)-333(release)-333(?)-21300(5)]TJ/F2 14.35 Tf 0 -23.91 TD[(2.2)-562(What)-375(do)-31(es)-375(a)-375(DejaGn)30(u)-374(test)-375(lo)-31(ok)-375(lik)30(e?)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(Eac)27(h)-353(DejaGn)27(u)-354(test)-354(is)-355(an)]TJ/F4 10.91 Tf 121.65 0 TD[(expect)]TJ/F1 10.91 Tf 38.23 0 TD[(script;)-364(the)-355(tests)-354(v)54(ary)-353(widely)-355(in)-354(complexit)27(y)83(,)-359(dep)-27(ending)]TJ -174.82 -13.15 TD[(on)-333(the)-333(nature)-333(of)-334(the)-333(to)-28(ol)-333(and)-334(the)-333(feature)-333(tested.)]TJ 14.94 -16.14 TD[(Here)-411(is)-411(a)-411(v)26(ery)-410(simple)]TJ/F7 10.91 Tf 108.07 0 TD[(gdb)]TJ/F1 10.91 Tf 24.63 0 TD[(test|one)-411(of)-411(the)-411(simplest)-412(tests)-411(shipp)-28(ed)-411(with)-411(DejaGn)26(u)-410(\(ex-)]TJ -147.64 -13.15 TD[(tracted)-333(from)-333(`)]TJ/F4 10.91 Tf 66.42 0 TD[(gdb.t00/echo.exp)]TJ/F1 10.91 Tf 91.64 0 TD[('\):)]TJ/F6 6.97 Tf 10.3 3.96 TD[(2)]TJ/F9 9.96 Tf -168.36 -14.01 TD[(\013)]TJ ET 23.98 -85.57 m 450.40 -85.57 l 450.40 -85.17 l 23.98 -85.17 l b BT 456.38 -85.57 TD[(\010)]TJ ET 18.00 -219.92 m 18.40 -219.92 l 18.40 -91.30 l 18.00 -91.30 l b BT/F4 10.91 Tf 21.39 -103.94 TD[(#)-524(send)-525(a)-525(string)-525(to)-525(the)-525(GDB)-525(stdin:)]TJ 0 -12.45 TD[(send)-524("echo)-525(Hello)-525(world!\\n")]TJ 0 -24.91 TD[(#)-524(inspect)-525(the)-525(GDB)-525(stdout)-525(for)-525(the)-525(correct)-525(reply,)]TJ 0 -12.45 TD[(#)-524(and)-525(determine)-525(whether)-525(the)-525(test)-525(passes)-525(or)-525(fails:)]TJ 0 -12.46 TD[(expect)-524({)]TJ 11.45 -12.45 TD[(-re)-524("Hello)-525(world.*$prompt)-525($")-2100({)-525(pass)-525("Echo)-525(test")-525(})]TJ 0 -12.45 TD[(-re)-524("$prompt)-525($")-8925({)-525(fail)-525("Echo)-525(test")-525(})]TJ 0 -12.46 TD[(timeout)-13124({)-525(fail)-525("\(timeout\))-525(Echo)-525(test")-525(})]TJ 0 -12.45 TD[(})]TJ ET 456.38 -219.92 m 456.77 -219.92 l 456.77 -91.30 l 456.38 -91.30 l b BT/F9 9.96 Tf 18 -226.14 TD[(\012)]TJ ET 23.98 -226.14 m 450.40 -226.14 l 450.40 -225.74 l 23.98 -225.74 l b BT 456.38 -226.14 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(Though)-373(brief,)-384(this)-374(example)-373(is)-374(a)-373(complete)-374(test.)-565(It)-374(illustrates)-374(some)-373(of)-374(the)-374(main)-373(features)]TJ -14.94 -13.15 TD[(of)-333(DejaGn)27(u)-332(test)-334(scripts:)]TJ/F3 10.91 Tf 8.95 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(The)-345(test)-346(case)-346(do)-28(es)-345(not)-346(start)-346(the)-346(tested)-345(program)-346(\()]TJ/F7 10.91 Tf 237.07 0 TD[(gdb)]TJ/F1 10.91 Tf 23.9 0 TD[(in)-345(this)-346(case\);)-352(all)-346(test)-345(scripts)-346(for)]TJ -260.97 -13.15 TD[(in)27(teractiv)28(e)-332(to)-28(ols)-333(can)-334(assume)-333(the)-333(corresp)-28(onding)-333(to)-28(ol)-334(is)-333(running.)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(Commen)27(ts)-332(start)-333(with)-334(`)]TJ/F4 10.91 Tf 108.33 0 TD[(#)]TJ/F1 10.91 Tf 5.73 0 TD[('.)]TJ/F3 10.91 Tf -126.71 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(The)-223(main)-223(commands)-223(y)27(ou)-222(use)-224(to)-223(con)27(trol)-222(a)-223(tested)-224(program)-223(are)]TJ/F4 10.91 Tf 283.15 0 TD[(send)]TJ/F1 10.91 Tf 25.34 0 TD[(\(to)-223(giv)27(e)-222(it)-223(commands\))]TJ -308.49 -13.15 TD[(and)]TJ/F4 10.91 Tf 21.21 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(\(to)-333(analyze)-333(its)-333(resp)-28(onses\).)]TJ/F3 10.91 Tf -71.86 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(The)]TJ/F4 10.91 Tf 22.77 0 TD[(expect)]TJ/F1 10.91 Tf 38.34 0 TD[(command)-364(uses)-365(a)-364(list)-365(of)-364(pairs;)-381(a)-364(pattern)-365(\(regular)-365(expression)-364(if)-365(`)]TJ/F4 10.91 Tf 301.1 0 TD[(-re)]TJ/F1 10.91 Tf 17.18 0 TD[(')-364(sp)-28(ec-)]TJ -379.39 -13.15 TD[(i\014ed\),)-395(follo)27(w)27(ed)-382(b)27(y)-382(an)-384(action)-383(to)-383(run)-384(if)-383(the)-383(pattern)-383(matc)26(hes)-382(output)-383(from)-383(the)-384(program.)]TJ 0 -13.15 TD[(Only)-333(the)-333(action)-333(for)-334(the)]TJ/F8 10.91 Tf 113.97 0 TD[(\014rst)]TJ/F1 10.91 Tf 23.49 0 TD[(matc)27(hing)-332(pattern)-333(will)-334(execute.)]TJ/F3 10.91 Tf -150.11 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(T)83(est)-332(cases)-334(use)-333(the)-333(commands)]TJ/F4 10.91 Tf 143.03 0 TD[(pass)]TJ/F1 10.91 Tf 26.55 0 TD[(and)]TJ/F4 10.91 Tf 21.21 0 TD[(fail)]TJ/F1 10.91 Tf 26.54 0 TD[(to)-333(record)-333(the)-333(test)-334(outcome.)]TJ/F2 14.35 Tf -238.93 -30.89 TD[(2.3)-562(Design)-375(goals)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(DejaGn)27(u)-464(grew)-465(out)-465(of)-465(the)-465(in)26(ternal)-464(needs)-465(of)-465(Cygn)27(us)-464(Supp)-28(ort.)-840(Cygn)27(us)-465(main)27(tains)-464(and)]TJ -14.94 -13.15 TD[(enhances)-259(a)-259(v)55(ariet)27(y)-258(of)-259(free)-259(programs)-260(in)-259(man)27(y)-258(di\013eren)26(t)-258(en)27(vironmen)28(ts,)-273(and)-260(w)27(e)-258(needed)-259(a)-260(testing)]TJ 0 -13.15 TD[(to)-27(ol)-334(that:)]TJ/F3 10.91 Tf 8.95 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(is)-333(useful)-333(to)-333(dev)26(elop)-26(ers)-334(while)-333(\014xing)-333(bugs;)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(automates)-333(running)-333(man)27(y)-333(tests)-333(during)-333(a)-334(soft)27(w)28(are)-332(release)-334(pro)-28(cess;)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(is)-333(p)-28(ortable)-333(among)-333(a)-334(v)55(ariet)28(y)-333(of)-333(host)-333(computers;)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(supp)-27(orts)-334(cross-dev)27(elopmen)28(t)-332(testing;)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(p)-27(ermits)-334(testing)-333(in)27(teractiv)28(e)-333(programs,)-333(lik)27(e)]TJ/F7 10.91 Tf 200.3 0 TD[(gdb)]TJ/F1 10.91 Tf 20.14 0 TD[(;)-333(and)]TJ/F3 10.91 Tf -233.09 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(p)-27(ermits)-334(testing)-333(batc)27(h)-332(orien)26(ted)-332(programs,)-333(lik)26(e)]TJ/F7 10.91 Tf 218.79 0 TD[(gcc)]TJ/F1 10.91 Tf 19.89 0 TD[(.)]TJ ET 18.00 -578.60 m 162.00 -578.60 l 162.00 -578.21 l 18.00 -578.21 l b BT/F6 6.97 Tf 23.02 -586.55 TD[(2)]TJ/F1 10.91 Tf 9.92 -3.96 TD[(More)-460(recen)26(t)]TJ/F7 10.91 Tf 63.45 0 TD[(gdb)]TJ/F1 10.91 Tf 25.16 0 TD[(tests)-460(use)-461(the)-461(`)]TJ/F4 10.91 Tf 70.42 0 TD[(gdb_test)]TJ/F1 10.91 Tf 45.81 0 TD[(')-460(pro)-28(cedure.)-827(An)-461(equiv)55(alen)28(t)-460(test)-461(using)-461(that)]TJ -204.84 -13.15 TD[(pro)-27(cedure)-334(is)-333(`)]TJ/F4 10.91 Tf 68.31 0 TD[(gdb_test)-333("echo)-333(Hello)-333(world!")-334("Hello)-333(world!")]TJ/F1 10.91 Tf 239.45 0 TD[(')]TJ ET 0 g 0 G
-endstream
-endobj
-61 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F7 49 0 R
-/F6 46 0 R
-/F9 59 0 R
-/F3 21 0 R
-/F8 52 0 R
->>
-endobj
-56 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 61 0 R
->>
-endobj
-64 0 obj
-<<
-/Length 8942
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(6)-26498(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 14.94 -23.91 TD[(Some)-310(of)-311(the)-310(requiremen)27(ts)-310(pro)27(v)28(ed)-310(c)27(hallenging.)-436(F)82(or)-309(example,)-315(in)27(teractiv)27(e)-309(programs)-311(do)-310(not)]TJ -14.94 -13.15 TD[(lend)-398(themselv)27(es)-398(v)27(ery)-397(w)27(ell)-398(to)-398(automated)-399(testing.)-639(But)-399(all)-398(the)-399(requiremen)27(ts)-397(are)-399(imp)-27(ortan)26(t:)]TJ 0 -13.15 TD[(for)-318(instance,)-321(it)-319(is)-318(imp)-28(erativ)27(e)-318(to)-318(mak)27(e)-318(sure)-318(that)]TJ/F7 10.91 Tf 225.51 0 TD[(gdb)]TJ/F1 10.91 Tf 23.61 0 TD[(w)27(orks)-317(as)-319(w)27(ell)-317(when)-319(cross-debugging)-318(as)]TJ -249.12 -13.15 TD[(it)-333(do)-28(es)-333(in)-333(a)-334(nativ)27(e)-332(con\014guration.)]TJ 14.94 -16.14 TD[(Probably)-328(the)-329(greatest)-329(c)27(hallenge)-328(w)27(as)-328(testing)-329(in)-329(a)-329(cross-dev)27(elopmen)28(t)-328(en)27(vironmen)28(t)-328(\(whic)27(h)]TJ -14.94 -13.15 TD[(can)-410(b)-28(e)-410(a)-411(real)-410(nigh)27(tmare\).)-675(Most)-411(cross-dev)27(elopmen)28(t)-410(en)27(vironmen)28(ts)-410(are)-410(customized)-410(b)26(y)-409(eac)27(h)]TJ 0 -13.16 TD[(dev)27(elop)-26(er.)-668(Ev)27(en)-407(when)-408(buying)-407(pac)26(k)56(aged)-407(b)-27(oards)-408(from)-408(v)27(endors)-407(there)-407(are)-408(man)27(y)-407(di\013erences.)]TJ 0 -13.15 TD[(The)-387(comm)26(unication)-387(in)27(terfaces)-387(v)55(ary)-387(from)-388(a)-388(serial)-388(line)-388(to)-388(ethernet.)-609(DejaGn)27(u)-387(w)27(as)-387(designed)]TJ 0 -13.15 TD[(with)-392(a)-392(mo)-28(dular)-392(comm)27(unication)-391(setup,)-407(so)-393(that)-392(eac)27(h)-391(kind)-393(of)-392(comm)27(unication)-391(can)-393(b)-27(e)-393(added)]TJ 0 -13.15 TD[(as)-323(required,)-325(and)-324(supp)-28(orted)-323(thereafter.)-441(Once)-324(a)-323(comm)27(unication)-323(pro)-27(cedure)-324(is)-323(co)-28(ded,)-325(an)26(y)-322(test)]TJ 0 -13.15 TD[(can)-335(use)-335(it.)-450(Curren)27(tly)-334(DejaGn)26(u)-334(can)-335(use)]TJ/F4 10.91 Tf 188.77 0 TD[(rsh)]TJ/F1 10.91 Tf 17.19 0 TD[(,)]TJ/F4 10.91 Tf 6.69 0 TD[(rlogin)]TJ/F1 10.91 Tf 34.36 0 TD[(,)]TJ/F4 10.91 Tf 6.69 0 TD[(telnet)]TJ/F1 10.91 Tf 34.37 0 TD[(,)]TJ/F4 10.91 Tf 6.69 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(,)]TJ/F4 10.91 Tf 6.69 0 TD[(kermit)]TJ/F1 10.91 Tf 34.37 0 TD[(,)-335(and)]TJ/F4 10.91 Tf 27.92 0 TD[(mondfe)]TJ/F1 10.91 Tf 38.02 0 TD[(for)]TJ -418.94 -13.15 TD[(remote)-333(comm)27(unications.)]TJ 14.94 -16.14 TD[(Julia)-243(Menapace)-243(\014rst)-243(coined)-243(the)-243(term)-243(\\Deja)-243(Gn)27(u")-242(to)-243(describ)-28(e)-243(an)-243(earlier)-243(testing)-243(framew)27(ork)]TJ -14.94 -13.15 TD[(at)-426(Cygn)27(us)-426(Supp)-27(ort.)-724(When)-426(w)26(e)-425(replaced)-426(it)-427(with)-426(the)-427(Exp)-27(ect-based)-427(framew)27(ork,)-449(it)-426(w)27(as)-426(lik)27(e)]TJ 0 -13.15 TD[(DejaGn)27(u)-332(all)-333(o)26(v)28(er)-332(again)-61(.)-242(.)-243(.)]TJ/F2 14.35 Tf 0 -30.88 TD[(2.4)-562(A)-375(POSIX)-375(conforming)-375(test)-375(framew)30(ork)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(DejaGn)27(u)-332(conforms)-333(to)-334(the)]TJ/F7 10.91 Tf 124.56 0 TD[(posix)]TJ/F1 10.91 Tf 31.64 0 TD[(standard)-333(for)-333(test)-333(framew)26(orks.)]TJ/F7 10.91 Tf -156.2 -16.14 TD[(posix)]TJ/F1 10.91 Tf 32.27 0 TD[(standard)-390(1003.3)-391(de\014nes)-391(what)-391(a)-391(testing)-391(framew)27(ork)-390(needs)-391(to)-391(pro)26(vide,)-404(in)-391(order)-391(to)]TJ -47.21 -13.15 TD[(p)-27(ermit)-271(the)-271(creation)-271(of)]TJ/F7 10.91 Tf 105.82 0 TD[(posix)]TJ/F1 10.91 Tf 30.96 0 TD[(conformance)-270(test)-271(suites.)-424(This)-271(standard)-271(is)-271(primarily)-271(orien)27(ted)-270(to)]TJ -136.78 -13.15 TD[(running)]TJ/F7 10.91 Tf 40.66 0 TD[(posix)]TJ/F1 10.91 Tf 31.66 0 TD[(conformance)-335(tests,)-336(but)-336(its)-335(requiremen)26(ts)-334(also)-336(supp)-28(ort)-335(testing)-336(of)-335(features)-336(not)]TJ -72.32 -13.15 TD[(related)-244(to)]TJ/F7 10.91 Tf 47.78 0 TD[(posix)]TJ/F1 10.91 Tf 30.66 0 TD[(conformance.)]TJ/F7 10.91 Tf 67.29 0 TD[(posix)]TJ/F1 10.91 Tf 30.66 0 TD[(1003.3)-244(do)-27(es)-245(not)-244(sp)-27(ecify)-245(a)-244(particular)-244(testing)-244(framew)27(ork,)]TJ -176.39 -13.15 TD[(but)-333(at)-333(this)-333(time)-334(there)-333(is)-333(only)-334(one)-333(other)]TJ/F7 10.91 Tf 190.79 0 TD[(posix)]TJ/F1 10.91 Tf 31.63 0 TD[(conforming)-333(test)-333(framew)27(ork:)]TJ/F7 10.91 Tf 135.91 0 TD[(tet)]TJ/F1 10.91 Tf 18.99 0 TD[(.)]TJ/F6 6.97 Tf 3.03 3.96 TD[(3)]TJ/F1 10.91 Tf -365.41 -20.1 TD[(The)]TJ/F7 10.91 Tf 22.05 0 TD[(posix)]TJ/F1 10.91 Tf 31.25 0 TD[(do)-27(cumen)27(tation)-298(refers)-298(to)]TJ/F5 10.91 Tf 116.24 0 TD[(assertions)]TJ/F1 10.91 Tf 46.28 0 TD[(.)-432(An)-298(assertion)-299(is)-298(a)-298(description)-298(of)-299(b)-27(eha)26(vior.)]TJ -230.76 -13.15 TD[(F)83(or)-445(example,)-475(if)-446(a)-446(standard)-446(sa)27(ys)-445(\\The)-446(sun)-446(shall)-446(shine",)-475(a)-446(corresp)-28(onding)-446(assertion)-446(migh)27(t)]TJ 0 -13.15 TD[(b)-27(e)-405(\\The)-405(sun)-405(is)-405(shining.")-659(A)-405(test)-405(based)-405(on)-405(this)-405(assertion)-405(w)27(ould)-404(pass)-405(or)-405(fail)-405(dep)-28(ending)-405(on)]TJ 0 -13.15 TD[(whether)-342(it)-342(is)-342(da)27(ytime)-341(or)-342(nigh)26(ttime.)-470(It)-342(is)-342(imp)-28(ortan)27(t)-341(to)-342(note)-342(that)-343(the)-342(standard)-342(b)-28(eing)-342(tested)]TJ 0 -13.15 TD[(is)-337(nev)27(er)-337(1003.3;)-339(the)-338(standard)-337(b)-28(eing)-337(tested)-338(is)-337(some)-338(other)-337(standard,)-339(for)-337(whic)26(h)-336(the)-337(assertions)]TJ 0 -13.15 TD[(w)27(ere)-332(written.)]TJ 14.94 -16.14 TD[(As)-343(there)-343(is)-343(no)-343(test)-344(suite)-343(to)-343(test)]TJ/F8 10.91 Tf 153.02 0 TD[(testing)-366(fr)50(ameworks)]TJ/F1 10.91 Tf 93.67 0 TD[(for)]TJ/F7 10.91 Tf 16.81 0 TD[(posix)]TJ/F1 10.91 Tf 31.74 0 TD[(1003.3)-343(conformance,)-345(v)26(eri-)]TJ -310.18 -13.15 TD[(fying)-323(conformance)-323(to)-323(this)-323(standard)-323(is)-323(done)-323(b)27(y)-322(rep)-28(eatedly)-323(reading)-323(the)-323(standard)-323(and)-323(exp)-28(eri-)]TJ 0 -13.15 TD[(men)27(ting.)-437(One)-316(of)-316(the)-316(main)-316(things)-316(1003.3)-316(do)-27(es)-316(sp)-28(ecify)-316(is)-316(the)-316(set)-316(of)-316(allo)27(w)28(ed)-315(output)-316(messages,)]TJ 0 -13.15 TD[(and)-436(their)-437(de\014nitions.)-755(F)82(our)-436(messages)-437(are)-436(supp)-28(orted)-437(for)-437(a)-437(required)-437(feature)-436(of)]TJ/F7 10.91 Tf 379.24 0 TD[(posix)]TJ/F1 10.91 Tf 32.76 0 TD[(con-)]TJ -412 -13.15 TD[(forming)-441(systems,)-468(and)-442(a)-441(\014fth)-442(for)-441(a)-442(conditional)-441(feature.)-769(DejaGn)27(u)-441(supp)-27(orts)-442(the)-441(use)-442(of)-441(all)]TJ 0 -13.16 TD[(\014v)27(e)-443(output)-444(messages;)-499(in)-444(this)-445(sense)-444(a)-444(test)-444(suite)-444(that)-444(uses)-444(exactly)-444(these)-444(messages)-444(can)-444(b)-28(e)]TJ 0 -13.15 TD[(considered)]TJ/F7 10.91 Tf 53.42 0 TD[(posix)]TJ/F1 10.91 Tf 31.64 0 TD[(conforming.)-444(These)-333(de\014nitions)-334(sp)-27(ecify)-334(the)-333(output)-333(of)-334(a)-333(test)-333(case:)]TJ/F4 10.91 Tf -85.06 -28.09 TD[(PASS)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-333(test)-333(has)-333(succeeded.)-445(That)-333(is,)-334(it)-333(demonstrated)-333(that)-334(the)-333(assertion)-333(is)-334(true.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(XFAIL)]TJ/F7 10.91 Tf 57.6 0 TD[(posix)]TJ/F1 10.91 Tf 33.05 0 TD[(1003.3)-463(do)-28(es)-463(not)-463(incorp)-28(orate)-463(the)-463(notion)-464(of)-463(exp)-28(ected)-463(failures,)-496(so)]TJ/F4 10.91 Tf 315.41 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(,)]TJ -371.37 -13.15 TD[(instead)-361(of)]TJ/F4 10.91 Tf 50.67 0 TD[(XPASS)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-368(m)27(ust)-361(also)-361(b)-28(e)-361(returned)-362(for)-361(test)-362(cases)-361(whic)27(h)-361(w)27(ere)-361(exp)-27(ected)-362(to)]TJ -79.31 -13.15 TD[(fail)-277(and)-278(did)-278(not.)-426(This)-278(means)-278(that)]TJ/F4 10.91 Tf 160.23 0 TD[(PASS)]TJ/F1 10.91 Tf 25.95 0 TD[(is)-277(in)-278(some)-278(sense)-278(more)-278(am)27(biguous)-277(than)-278(if)]TJ/F4 10.91 Tf -186.18 -13.15 TD[(XPASS)]TJ/F1 10.91 Tf 32.13 0 TD[(is)-320(also)-320(used.)-440(F)83(or)-320(information)-320(on)]TJ/F4 10.91 Tf 155.08 0 TD[(XPASS)]TJ/F1 10.91 Tf 32.13 0 TD[(and)]TJ/F4 10.91 Tf 21.06 0 TD[(XFAIL)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-322(see)-320(Chapter)-320(3)-321([Using)]TJ/F4 10.91 Tf -269.04 -13.15 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(],)-333(page)-333(9.)]TJ ET 18.00 -614.63 m 162.00 -614.63 l 162.00 -614.23 l 18.00 -614.23 l b BT/F6 6.97 Tf 23.02 -622.58 TD[(3)]TJ/F7 10.91 Tf 9.92 -3.96 TD[(tet)]TJ/F1 10.91 Tf 22.45 0 TD[(w)27(as)-316(created)-318(b)27(y)-317(Unisoft)-318(for)-317(a)-318(consortium)-318(comprised)-317(of)-318(X/Op)-28(en,)-321(Unix)-317(In)27(ternational,)]TJ -22.45 -13.15 TD[(and)-333(the)-333(Op)-28(en)-333(Soft)27(w)27(are)-332(F)82(oundation.)]TJ ET 0 g 0 G
-endstream
-endobj
-65 0 obj
-<<
-/F1 9 0 R
-/F7 49 0 R
-/F4 28 0 R
-/F2 12 0 R
-/F6 46 0 R
-/F5 31 0 R
-/F8 52 0 R
->>
-endobj
-63 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 65 0 R
->>
-endobj
-68 0 obj
-<<
-/Length 7942
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(2:)-444(What)-334(is)-333(new)-333(in)-334(this)-333(release)-333(?)-21300(7)]TJ/F4 10.91 Tf 0 -23.91 TD[(FAIL)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-290(test)]TJ/F8 10.91 Tf 32.15 0 TD[(has)]TJ/F1 10.91 Tf 19.67 0 TD[(pro)-27(duced)-290(the)-291(bug)-290(it)-290(w)27(as)-289(in)26(tended)-289(to)-290(capture.)-430(That)-290(is,)-299(it)-290(has)-290(demon-)]TJ -51.82 -13.15 TD[(strated)-348(that)-348(the)-348(assertion)-348(is)-348(false.)-489(The)]TJ/F4 10.91 Tf 188.79 0 TD[(FAIL)]TJ/F1 10.91 Tf 26.7 0 TD[(message)-348(is)-348(based)-348(on)-348(the)-348(test)-348(case)]TJ -215.49 -13.15 TD[(only)83(.)-444(Other)-333(messages)-333(are)-334(used)-333(to)-333(indicate)-334(a)-333(failure)-333(of)-334(the)-333(framew)27(ork.)]TJ 0 -16.14 TD[(As)-301(with)]TJ/F4 10.91 Tf 40.27 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(,)]TJ/F7 10.91 Tf 6.39 0 TD[(posix)]TJ/F1 10.91 Tf 31.29 0 TD[(tests)-301(m)27(ust)-300(return)]TJ/F4 10.91 Tf 84.95 0 TD[(FAIL)]TJ/F1 10.91 Tf 26.2 0 TD[(rather)-301(than)]TJ/F4 10.91 Tf 57.54 0 TD[(XFAIL)]TJ/F1 10.91 Tf 31.93 0 TD[(ev)27(en)-300(if)-301(a)-302(failure)]TJ -301.48 -13.15 TD[(w)27(as)-332(exp)-28(ected.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(A)-387(test)-387(pro)-28(duced)-387(indeterminate)-388(results.)-606(Usually)82(,)-400(this)-387(means)-387(the)-388(test)-387(executed)]TJ 0 -13.15 TD[(in)-408(an)-408(unexp)-27(ected)-408(fashion;)-446(this)-408(outcome)-408(requires)-408(that)-408(a)-408(h)27(uman)-407(b)-28(eing)-408(go)-408(o)27(v)27(er)]TJ 0 -13.15 TD[(results,)-383(to)-374(determine)-374(if)-374(the)-374(test)-373(should)-374(ha)27(v)27(e)-372(passed)-374(or)-374(failed.)-566(This)-374(message)-374(is)]TJ 0 -13.15 TD[(also)-279(used)-280(for)-280(an)27(y)-279(test)-279(that)-280(requires)-280(h)27(uman)-279(in)27(terv)28(en)27(tion)-278(b)-28(ecause)-280(it)-280(is)-279(b)-28(ey)27(ond)-279(the)]TJ 0 -13.15 TD[(abilities)-309(of)-310(the)-310(testing)-310(framew)26(ork.)-435(An)26(y)-309(unresolv)27(ed)-309(test)-310(should)-310(resolv)27(ed)-309(to)]TJ/F4 10.91 Tf 351.49 0 TD[(PASS)]TJ/F1 10.91 Tf -351.49 -13.16 TD[(or)]TJ/F4 10.91 Tf 13.36 0 TD[(FAIL)]TJ/F1 10.91 Tf 26.55 0 TD[(b)-27(efore)-334(a)-333(test)-333(run)-334(can)-333(b)-28(e)-333(considered)-333(\014nished.)]TJ -39.91 -16.13 TD[(Note)-311(that)-311(for)]TJ/F7 10.91 Tf 65.97 0 TD[(posix)]TJ/F1 10.91 Tf 28 0 TD[(,)-315(eac)27(h)-310(assertion)-312(m)27(ust)-310(pro)-28(duce)-311(a)-311(test)-311(result)-311(co)-28(de.)-437(If)-311(the)-312(test)]TJ -93.97 -13.16 TD[(isn't)-401(actually)-401(run,)-418(it)-402(m)27(ust)-400(pro)-28(duce)]TJ/F4 10.91 Tf 173 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 61.65 0 TD[(rather)-401(than)-401(just)-401(lea)26(ving)-400(that)]TJ -234.65 -13.15 TD[(test)-383(out)-383(of)-383(the)-383(output.)-594(This)-383(means)-384(that)-383(y)27(ou)-382(ha)27(v)27(e)-382(to)-383(b)-28(e)-383(careful)-383(when)-383(writing)]TJ 0 -13.15 TD[(tests,)-363(to)-358(not)-357(carelessly)-357(use)-358(tcl)-357(statemen)26(ts)-356(lik)27(e)]TJ/F4 10.91 Tf 221.42 0 TD[(return)]TJ/F1 10.91 Tf 34.36 0 TD[(|if)-357(y)27(ou)-357(alter)-357(the)-358(\015o)27(w)-356(of)]TJ -255.78 -13.15 TD[(con)27(trol)-272(of)-273(the)-273(tcl)-273(co)-28(de)-273(y)27(ou)-272(m)27(ust)-272(insure)-273(that)-273(ev)26(ery)-272(test)-273(still)-273(pro)-28(duces)-273(some)-273(result)]TJ 0 -13.15 TD[(co)-27(de.)]TJ 0 -16.14 TD[(Here)-333(are)-333(some)-333(of)-334(the)-333(w)27(a)27(ys)-332(a)-333(test)-334(ma)27(y)-332(wind)-333(up)]TJ/F4 10.91 Tf 225.39 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.28 0 TD[(:)]TJ/F3 10.91 Tf -273.72 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(A)-333(test's)-333(execution)-333(is)-334(in)27(terrupted.)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(A)-367(test)-367(do)-27(es)-368(not)-367(pro)-27(duce)-368(a)-367(clear)-367(result.)-546(This)-367(is)-367(usually)-367(b)-28(ecause)-367(there)-367(w)27(as)]TJ 0 -13.15 TD[(an)]TJ/F4 10.91 Tf 15.71 0 TD[(ERROR)]TJ/F1 10.91 Tf 32.83 0 TD[(from)-384(DejaGn)27(u)-384(while)-384(pro)-28(cessing)-384(the)-385(test,)-397(or)-384(b)-28(ecause)-384(there)-385(w)27(ere)]TJ -48.54 -13.15 TD[(three)-445(or)-446(more)]TJ/F4 10.91 Tf 72.25 0 TD[(WARNING)]TJ/F1 10.91 Tf 44.96 0 TD[(messages.)-781(An)27(y)]TJ/F4 10.91 Tf 78.72 0 TD[(WARNING)]TJ/F1 10.91 Tf 44.95 0 TD[(or)]TJ/F4 10.91 Tf 14.59 0 TD[(ERROR)]TJ/F1 10.91 Tf 33.5 0 TD[(messages)-445(can)]TJ -288.97 -13.15 TD[(in)27(v)56(alidate)-361(the)-361(output)-362(of)-361(the)-362(test.)-529(This)-362(usually)-361(requires)-362(a)-362(h)27(uman)-360(b)-28(eing)-362(to)]TJ 0 -13.15 TD[(examine)-382(the)-383(output)-382(to)-383(determine)-382(what)-383(really)-382(happ)-28(ened|and)-382(to)-383(impro)27(v)28(e)]TJ 0 -13.15 TD[(the)-333(test)-333(case.)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(A)-333(test)-333(dep)-28(ends)-333(on)-334(a)-333(previous)-333(test,)-334(whic)27(h)-332(fails.)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(The)-333(test)-333(w)27(as)-333(set)-333(up)-333(incorrectly)82(.)]TJ/F4 10.91 Tf -79.2 -22.12 TD[(UNTESTED)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-341(test)-342(w)27(as)-341(not)-342(run.)-469(This)-342(is)-342(a)-341(placeholder,)-344(used)-342(when)-342(there)-342(is)-341(no)-342(real)-342(test)-341(case)]TJ 0 -13.15 TD[(y)27(et.)]TJ -57.6 -19.12 TD[(The)-395(only)-395(remaining)-395(output)-395(message)-395(left)-395(is)-395(in)27(tended)-394(to)-395(test)-395(features)-395(that)-395(are)-395(sp)-28(eci\014ed)-395(b)27(y)]TJ 0 -13.16 TD[(the)-333(applicable)]TJ/F7 10.91 Tf 70.3 0 TD[(posix)]TJ/F1 10.91 Tf 31.64 0 TD[(standard)-333(as)-333(conditional:)]TJ/F4 10.91 Tf -101.94 -22.11 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(There)-444(is)-445(no)-445(supp)-28(ort)-445(for)-445(the)-444(tested)-445(case.)-779(This)-445(ma)27(y)-444(mean)-445(that)-445(a)-445(conditional)]TJ 0 -13.15 TD[(feature)-320(of)-320(an)-320(op)-27(erating)-320(system,)-323(or)-320(of)-320(a)-320(compiler,)-323(is)-320(not)-320(implemen)27(ted.)-439(DejaGn)27(u)]TJ 0 -13.15 TD[(also)-256(uses)-256(this)-256(message)-257(when)-256(a)-256(testing)-257(en)27(vironmen)28(t)-255(\(often)-257(a)-256(\\bare)-256(b)-28(oard")-256(target\))]TJ 0 -13.16 TD[(lac)27(ks)-333(basic)-334(supp)-27(ort)-334(for)-334(compiling)-334(or)-334(running)-334(the)-334(test)-334(case.)-446(F)82(or)-332(example,)-335(a)-333(test)]TJ 0 -13.15 TD[(for)-420(the)-420(system)-420(subroutine)]TJ/F4 10.91 Tf 129.49 0 TD[(gethostname)]TJ/F1 10.91 Tf 67.58 0 TD[(w)27(ould)-419(nev)27(er)-419(w)26(ork)-419(on)-420(a)-420(target)-421(b)-27(oard)]TJ -197.07 -13.15 TD[(running)-333(only)-333(a)-333(b)-28(o)-28(ot)-333(monitor.)]TJ -42.66 -19.13 TD[(DejaGn)27(u)-326(uses)-326(the)-327(same)-327(output)-327(pro)-27(cedures)-327(to)-327(pro)-28(duce)-327(these)-326(messages)-327(for)-327(all)-327(test)-326(suites,)]TJ -14.94 -13.15 TD[(and)-365(these)-366(pro)-28(cedures)-366(are)-366(already)-366(kno)27(wn)-365(to)-366(conform)-366(to)]TJ/F7 10.91 Tf 267.41 0 TD[(posix)]TJ/F1 10.91 Tf 31.99 0 TD[(1003.3.)-542(F)83(or)-365(a)-366(DejaGn)27(u)-365(test)]TJ -299.4 -13.15 TD[(suite)-318(to)-318(conform)-319(to)]TJ/F7 10.91 Tf 94.29 0 TD[(posix)]TJ/F1 10.91 Tf 31.47 0 TD[(1003.3,)-321(y)27(ou)-317(m)26(ust)-317(a)27(v)28(oid)-318(the)]TJ/F4 10.91 Tf 131.4 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 66.47 0 TD[(pro)-27(cedure)-319(as)-318(describ)-28(ed)]TJ -323.63 -13.15 TD[(in)-246(the)]TJ/F4 10.91 Tf 29.63 0 TD[(PASS)]TJ/F1 10.91 Tf 25.6 0 TD[(section)-246(ab)-28(o)27(v)27(e,)-263(and)-246(y)26(ou)-245(m)26(ust)-245(b)-28(e)-247(careful)-247(to)-247(return)]TJ/F4 10.91 Tf 227.96 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 59.97 0 TD[(where)-246(appropriate,)]TJ -343.16 -13.15 TD[(as)-333(describ)-28(ed)-333(in)-333(the)]TJ/F4 10.91 Tf 93.18 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 60.91 0 TD[(section)-333(ab)-28(o)27(v)28(e.)]TJ ET 0 g 0 G
-endstream
-endobj
-69 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F8 52 0 R
-/F7 49 0 R
-/F3 21 0 R
->>
-endobj
-67 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 69 0 R
->>
-endobj
-72 0 obj
-<<
-/Length 3732
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(8)-26498(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(2.5)-562(F)93(uture)-374(directions)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(In)-318(the)-318(near)-318(future,)-321(there)-318(are)-318(t)27(w)28(o)-318(parallel)-318(directions)-318(for)-318(DejaGn)27(u)-317(dev)27(elopmen)28(t.)-439(The)-318(\014rst)]TJ -14.94 -13.15 TD[(is)-333(to)-333(add)-333(supp)-28(ort)-334(for)-333(more)-333(hosts)-334(and)-333(targets.)]TJ 14.94 -16.14 TD[(The)-302(second)-303(w)26(ould)-302(p)-27(ermit)-303(testing)-303(programs)-303(with)-303(a)-303(more)-303(complex)-303(in)27(terface,)-308(whether)-303(text)]TJ -14.94 -13.15 TD[(based)-338(or)-338(GUI)-338(based.)-459(Tw)27(o)-337(comp)-28(onen)27(ts)-337(already)-338(exist:)-454(a)-338(Tcl)-339(based)-338(X)-338(windo)27(w)-337(to)-28(olkit,)-339(and)-338(a)]TJ 0 -13.15 TD[(terminal)-371(pac)27(k)55(age)-370(for)]TJ/F4 10.91 Tf 102.22 0 TD[(expect)]TJ/F1 10.91 Tf 34.37 0 TD[(.)-559(Both)-372(of)-371(these)-372(could)-371(b)-28(e)-372(merged)-372(in)27(to)-370(DejaGn)26(u)-370(in)-372(a)-372(w)27(a)28(y)-371(that)]TJ -136.59 -13.15 TD[(p)-27(ermits)-334(testing)-333(programs)-333(that)-334(run)-333(in)-333(eac)27(h)-333(en)27(vironmen)28(t.)]TJ 14.94 -16.14 TD[(Mean)27(while,)-292(w)27(e)-282(hop)-28(e)-283(DejaGn)26(u)-282(enables)-283(the)-283(creation)-284(of)-283(test)-283(suites)-283(for)-284(conformance)-283(to)]TJ/F7 10.91 Tf 395.39 0 TD[(ansi)]TJ/F1 10.91 Tf -410.33 -13.15 TD[(C)-369(and)-370(C)]TJ/F4 10.91 Tf 41.4 0 TD[(++)]TJ/F1 10.91 Tf 11.45 0 TD[(,)-378(to)]TJ/F7 10.91 Tf 20.89 0 TD[(posix)]TJ/F1 10.91 Tf 28 0 TD[(,)-378(and)-370(to)-369(other)-370(standards.)-553(W)83(e)-369(encourage)-369(y)26(ou)-368(to)-370(mak)27(e)-368(an)26(y)-368(test)-370(suites)]TJ -101.74 -13.15 TD[(y)27(ou)-332(create)-333(freely)-334(a)27(v)56(ailable,)-333(under)-333(the)-333(same)-334(terms)-333(as)-333(DejaGn)26(u)-332(itself.)]TJ/F2 14.35 Tf 0 -30.88 TD[(2.6)-562(Tcl)-375(and)-375(Exp)-31(ect)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(Tcl)-284(w)27(as)-284(in)27(tro)-27(duced)-285(in)-284(a)-285(pap)-27(er)-285(b)27(y)-284(John)-285(K.)-284(Ousterhout)-285(at)-284(the)-285(1990)-285(Win)27(ter)-283(Usenix)-285(confer-)]TJ -14.94 -13.15 TD[(ence,)]TJ/F5 10.91 Tf 26.8 0 TD[(Tcl:)-417(An)-280(Em)27(b)-27(eddable)-279(Command)-280(Language)]TJ/F1 10.91 Tf 200.37 0 TD[(.)-426(That)-280(pap)-27(er)-280(is)-279(included)-280(in)-279(P)26(ostScript)-278(form)]TJ -227.17 -13.15 TD[(in)-368(the)-368(`)]TJ/F4 10.91 Tf 35.31 0 TD[(doc)]TJ/F1 10.91 Tf 17.18 0 TD[(')-368(sub)-28(directory)-368(of)-368(the)-369(Tcl)-368(distribution.)-549(The)-369(v)27(ersion)-367(of)-368(Tcl)-369(included)-368(in)-368(DejaGn)26(u)]TJ -52.49 -13.15 TD[(at)-333(this)-333(time)-333(is)-334(Tcl)-333(7.4p3.)]TJ 14.94 -16.14 TD[(Don)-331(Lib)-28(es)-331(in)27(tro)-27(duced)]TJ/F4 10.91 Tf 107 0 TD[(expect)]TJ/F1 10.91 Tf 37.98 0 TD[(in)-331(his)-331(pap)-28(er)]TJ/F5 10.91 Tf 60.33 0 TD[(exp)-27(ect:)-444(Curing)-331(Those)-331(Uncon)26(trollable)-330(Fits)-331(of)]TJ -220.25 -13.15 TD[(In)27(teraction)]TJ/F1 10.91 Tf 56.68 0 TD[(at)-414(the)-415(1990)-415(Summer)-414(Usenix)-415(conference.)-688(The)-415(pap)-28(er)-415(is)-414(included)-415(in)-415(P)27(ostScript)]TJ -56.68 -13.15 TD[(form)-306(in)-306(the)]TJ/F4 10.91 Tf 56.42 0 TD[(expect)]TJ/F1 10.91 Tf 37.71 0 TD[(distribution)-306(\(as)-306(are)-307(sev)27(eral)-306(other)-306(pap)-28(ers)-306(ab)-28(out)]TJ/F4 10.91 Tf 223.8 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(\).)-435(The)-306(v)26(ersion)-305(of)]TJ -352.29 -13.15 TD[(exp)-27(ect)-334(included)-333(in)-333(DejaGn)27(u)-333(at)-333(this)-333(time)-334(is)-333(exp)-28(ect)-333(5.18.0.)]TJ ET 0 g 0 G
-endstream
-endobj
-73 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F7 49 0 R
-/F5 31 0 R
->>
-endobj
-71 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 73 0 R
->>
-endobj
-77 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 611.11
-/Ascent 611.11
-/Descent -222.22
-/Flags 5
-/FontBBox [-1 -234 716 801]
-/FontName /CMTT12
-/ItalicAngle 0
-/XHeight 431
-/StemV 80
-/FontFile 76 0 R
->>
-endobj
-78 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F10
-/FontDescriptor 77 0 R
-/BaseFont /QZZRHI+CMTT12
-/FirstChar 0
-/LastChar 127
-/Widths [514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58]
->>
-endobj
-79 0 obj
-<<
-/Length 7234
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(3:)-444(Using)]TJ/F4 10.91 Tf 86.45 0 TD[(runtest)]TJ/F1 10.91 Tf 340.1 0 TD[(9)]TJ/F2 17.22 Tf -426.55 -25.91 TD[(3)-562(Using)]TJ/F10 17.22 Tf 74.17 0 TD[(runtest)]TJ/F4 10.91 Tf -59.23 -28.09 TD[(runtest)]TJ/F1 10.91 Tf 43.77 0 TD[(is)-336(the)-337(executable)-337(test)-336(driv)27(er)-336(for)-337(DejaGn)27(u.)-454(Y)83(ou)-336(can)-337(sp)-27(ecify)-337(t)27(w)27(o)-335(kinds)-337(of)-337(things)]TJ -58.71 -13.15 TD[(on)-274(the)]TJ/F4 10.91 Tf 32.66 0 TD[(runtest)]TJ/F1 10.91 Tf 43.09 0 TD[(command)-274(line:)-416(command)-274(line)-275(options,)-287(and)-275(Tcl)-275(v)55(ariables)-274(for)-275(the)-275(test)-274(scripts.)]TJ -75.75 -13.15 TD[(The)-333(options)-333(are)-333(listed)-334(alphab)-28(etically)-333(b)-28(elo)27(w.)]TJ/F4 10.91 Tf 14.94 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 43.74 0 TD[(returns)-334(an)-334(exit)-335(co)-28(de)-334(of)]TJ/F4 10.91 Tf 112.01 0 TD[(1)]TJ/F1 10.91 Tf 9.37 0 TD[(if)-334(an)27(y)-334(test)-334(has)-335(an)-334(unexp)-28(ected)-334(result;)-335(otherwise)-335(\(if)-334(all)]TJ -180.06 -13.15 TD[(tests)-333(pass)-333(or)-333(fail)-334(as)-333(exp)-28(ected\))-333(it)-334(returns)]TJ/F4 10.91 Tf 192.88 0 TD[(0)]TJ/F1 10.91 Tf 9.36 0 TD[(as)-333(the)-333(exit)-333(co)-28(de.)]TJ/F4 10.91 Tf -187.3 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 43.34 0 TD[(\015ags)-297(the)-298(outcome)-297(of)-298(eac)27(h)-297(test)-297(as)-298(one)-298(of)-297(these)-298(cases.)-432(\(See)-298(Section)-298(2.4)-297([A)-298(POSIX)]TJ -58.28 -13.15 TD[(conforming)-301(test)-301(framew)26(ork],)-307(page)-301(6,)-308(for)-301(a)-302(discussion)-301(of)-302(ho)27(w)]TJ/F7 10.91 Tf 284 0 TD[(posix)]TJ/F1 10.91 Tf 31.29 0 TD[(sp)-27(eci\014es)-302(the)-301(meanings)-302(of)]TJ -315.29 -13.15 TD[(these)-333(cases.\))]TJ/F4 10.91 Tf 0 -19.13 TD[(PASS)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-320(most)-320(desirable)-321(outcome:)-438(the)-320(test)-321(succeeded,)-323(and)-320(w)27(as)-320(exp)-28(ected)-320(to)-320(succeed.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(XPASS)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-288(pleasan)27(t)-287(kind)-288(of)-288(failure:)-422(a)-288(test)-288(w)27(as)-287(exp)-28(ected)-288(to)-288(fail,)-297(but)-288(succeeded.)-430(This)-288(ma)27(y)]TJ 0 -13.15 TD[(indicate)-283(progress;)-300(insp)-28(ect)-284(the)-283(test)-284(case)-284(to)-283(determine)-284(whether)-284(y)27(ou)-282(should)-284(amend)]TJ 0 -13.15 TD[(it)-333(to)-333(stop)-333(exp)-28(ecting)-334(failure.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(FAIL)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-358(test)-359(failed,)-366(although)-358(it)-359(w)26(as)-358(exp)-27(ected)-359(to)-359(succeed.)-521(This)-359(ma)27(y)-358(indicate)-359(regress;)]TJ 0 -13.15 TD[(insp)-27(ect)-334(the)-333(test)-333(case)-334(and)-333(the)-333(failing)-334(soft)27(w)28(are)-332(to)-334(lo)-28(cate)-333(the)-333(bug.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(XFAIL)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-414(test)-414(failed,)-435(but)-414(it)-415(w)27(as)-413(exp)-28(ected)-414(to)-415(fail.)-687(This)-415(result)-414(indicates)-415(no)-414(c)27(hange)-414(in)]TJ 0 -13.15 TD[(a)-360(kno)26(wn)-359(bug.)-527(If)-361(a)-361(test)-361(fails)-360(b)-28(ecause)-361(the)-361(op)-27(erating)-361(system)-361(where)-361(the)-361(test)-360(runs)]TJ 0 -13.15 TD[(lac)27(ks)-332(some)-333(facilit)26(y)-332(required)-333(b)27(y)-333(the)-333(test,)-333(the)-334(outcome)-333(is)]TJ/F4 10.91 Tf 264.55 0 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 66.63 0 TD[(instead.)]TJ/F4 10.91 Tf -388.78 -19.13 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(Output)-444(from)-445(a)-445(test)-445(requires)-445(man)27(ual)-444(insp)-28(ection;)-501(the)-445(test)-445(suite)-445(could)-445(not)-444(au-)]TJ 0 -13.15 TD[(tomatically)-430(determine)-431(the)-430(outcome.)-737(F)82(or)-429(example,)-455(y)27(our)-430(tests)-431(can)-430(rep)-28(ort)-431(this)]TJ 0 -13.15 TD[(outcome)-333(is)-333(when)-333(a)-334(test)-333(do)-28(es)-333(not)-334(complete)-333(as)-333(exp)-28(ected.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(UNTESTED)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-305(test)-305(case)-305(is)-305(not)-305(y)27(et)-304(complete,)-311(and)-305(in)-305(particular)-305(cannot)-305(y)27(et)-304(pro)-28(duce)-305(a)]TJ/F4 10.91 Tf 338.44 0 TD[(PASS)]TJ/F1 10.91 Tf 26.23 0 TD[(or)]TJ/F4 10.91 Tf -364.67 -13.15 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(.)-436(Y)83(ou)-308(can)-308(also)-308(use)-309(this)-308(outcome)-309(in)-308(dumm)27(y)-308(\\tests")-308(that)-308(note)-309(explicitly)-308(the)]TJ -22.91 -13.15 TD[(absence)-333(of)-333(a)-333(real)-334(test)-333(case)-333(for)-334(a)-333(particular)-333(prop)-28(ert)27(y)83(.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(A)-351(test)-352(dep)-28(ends)-352(on)-351(a)-352(conditionally)-352(a)27(v)56(ailable)-351(feature)-352(that)-352(do)-27(es)-352(not)-352(exist)-352(\(in)-351(the)]TJ 0 -13.15 TD[(con\014gured)-446(testing)-447(en)26(vironmen)28(t\).)-784(F)82(or)-446(example,)-475(y)26(ou)-446(can)-447(use)-446(this)-447(outcome)-447(to)]TJ 0 -13.15 TD[(rep)-27(ort)-462(on)-463(a)-462(test)-462(case)-462(that)-462(do)-28(es)-462(not)-462(w)27(ork)-462(on)-462(a)-462(particular)-462(target)-462(b)-28(ecause)-462(its)]TJ 0 -13.15 TD[(op)-27(erating)-334(system)-333(supp)-28(ort)-333(do)-28(es)-333(not)-334(include)-333(a)-333(required)-334(subroutine.)]TJ/F4 10.91 Tf -42.66 -19.13 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(ma)27(y)-332(also)-333(displa)26(y)-332(the)-333(follo)27(wing)-333(messages:)]TJ/F4 10.91 Tf -58.67 -19.13 TD[(ERROR)]TJ/F1 10.91 Tf 57.6 0 TD[(Indicates)-473(a)-474(ma)-55(jor)-474(problem)-474(\(detected)-473(b)26(y)-472(the)-474(test)-474(case)-473(itself)-78(\))-474(in)-473(running)-474(the)]TJ 0 -13.15 TD[(test.)-705(This)-420(is)-421(usually)-420(an)-421(unreco)27(v)28(erable)-419(error,)-443(suc)27(h)-419(as)-420(a)-421(missing)-420(\014le)-421(or)-420(loss)-420(of)]TJ 0 -13.15 TD[(comm)27(unication)-338(to)-339(the)-339(target.)-461(\()]TJ/F7 10.91 Tf 149.18 0 TD[(posix)]TJ/F1 10.91 Tf 31.7 0 TD[(test)-338(suites)-339(should)-339(not)-339(emit)-339(this)-339(message;)]TJ -180.88 -13.15 TD[(use)]TJ/F4 10.91 Tf 18.85 0 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 63 0 TD[(,)]TJ/F4 10.91 Tf 6.66 0 TD[(UNTESTED)]TJ/F1 10.91 Tf 45.82 0 TD[(,)-333(or)]TJ/F4 10.91 Tf 20.03 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 60.91 0 TD[(instead,)-333(as)-333(appropriate.\))]TJ/F4 10.91 Tf -272.87 -19.13 TD[(WARNING)]TJ/F1 10.91 Tf 57.6 0 TD[(Indicates)-337(a)-337(p)-27(ossible)-338(problem)-337(in)-337(running)-337(the)-337(test.)-456(Usually)-337(w)27(arnings)-336(corresp)-28(ond)]TJ 0 -13.15 TD[(to)-250(reco)27(v)28(erable)-249(errors,)-267(or)-250(displa)27(y)-249(an)-250(imp)-28(ortan)27(t)-249(message)-250(ab)-28(out)-250(the)-250(follo)27(wing)-249(tests.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(NOTE)]TJ/F1 10.91 Tf 57.6 0 TD[(An)-333(informational)-333(message)-333(ab)-28(out)-334(the)-333(test)-333(case.)]TJ -42.66 -19.12 TD[(This)-371(is)-371(the)-372(full)-371(set)-372(of)-371(command)-372(line)-371(options)-372(that)]TJ/F4 10.91 Tf 239.56 0 TD[(runtest)]TJ/F1 10.91 Tf 44.14 0 TD[(recognizes.)-558(Argumen)26(ts)-370(ma)27(y)]TJ -298.64 -13.15 TD[(b)-27(e)-334(abbreviated)-333(to)-333(the)-334(shortest)-333(unique)-333(string.)]TJ ET 0 g 0 G
-endstream
-endobj
-80 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F2 12 0 R
-/F10 78 0 R
-/F7 49 0 R
->>
-endobj
-75 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 80 0 R
->>
-endobj
-83 0 obj
-<<
-/Length 9347
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(10)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F4 10.91 Tf 28.8 -23.91 TD[(runtest)-524(--tool)]TJ/F5 10.91 Tf 85.91 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 30.37 0 TD[([)]TJ/F5 10.91 Tf 11.45 0 TD[(testsuite)]TJ/F4 10.91 Tf 40.12 0 TD[(.exp)-524(...)-525(])]TJ -167.85 -12.46 TD[([)]TJ/F5 10.91 Tf 11.45 0 TD[(testsuite)]TJ/F4 10.91 Tf 40.13 0 TD[(.exp="testfile1)-524(...")-525(])]TJ -51.58 -12.45 TD[([)]TJ/F5 10.91 Tf 11.45 0 TD[(tclv)55(ar)]TJ/F4 10.91 Tf 27.79 0 TD[(=)]TJ/F5 10.91 Tf 5.72 0 TD[(v)55(alue)]TJ/F4 10.91 Tf 25.16 0 TD[(...)-524(])]TJ -70.12 -12.45 TD[([)-524(--all)-525(])-1050([)-525(--baud)]TJ/F5 10.91 Tf 114.54 0 TD[(baud-rate)]TJ/F4 10.91 Tf 52.43 0 TD[(])-1049([)-525(--connect)]TJ/F5 10.91 Tf 85.91 0 TD[(t)27(yp)-26(e)]TJ/F4 10.91 Tf 27.25 0 TD[(])]TJ -280.13 -12.46 TD[([)-524(--debug)-525(])-1050([)-525(--help)-525(])-1050([)-525(--host)]TJ/F5 10.91 Tf 194.73 0 TD[(string)]TJ/F4 10.91 Tf 34.02 0 TD[(])]TJ -228.75 -12.45 TD[([)-524(--mail)-525(")]TJ/F5 10.91 Tf 57.27 0 TD[(name)]TJ/F4 10.91 Tf 31.79 0 TD[(...")-524(])-1050([)-525(--name)]TJ/F5 10.91 Tf 97.37 0 TD[(string)]TJ/F4 10.91 Tf 34.02 0 TD[(])]TJ -220.45 -12.45 TD[([)-524(--name)]TJ/F5 10.91 Tf 51.54 0 TD[(name)]TJ/F4 10.91 Tf 31.8 0 TD[(])-1049([)-525(--outdir)]TJ/F5 10.91 Tf 80.18 0 TD[(path)]TJ/F4 10.91 Tf 27.54 0 TD[(])]TJ -191.06 -12.46 TD[([)-524(--objdir)]TJ/F5 10.91 Tf 63 0 TD[(path)]TJ/F4 10.91 Tf 27.54 0 TD[(])-1049([)-525(--reboot)-525(])]TJ -90.54 -12.45 TD[([)-524(--srcdir)]TJ/F5 10.91 Tf 63 0 TD[(path)]TJ/F4 10.91 Tf 27.54 0 TD[(])-1049([)-525(--strace)]TJ/F5 10.91 Tf 80.19 0 TD[(n)]TJ/F4 10.91 Tf 11.78 0 TD[(])]TJ -182.51 -12.45 TD[([)-524(--target)]TJ/F5 10.91 Tf 63 0 TD[(string)]TJ/F4 10.91 Tf 34.02 0 TD[(--build)]TJ/F5 10.91 Tf 45.82 0 TD[(string)]TJ/F4 10.91 Tf 34.03 0 TD[(])]TJ -176.87 -12.46 TD[([)-524(-v)-525(|)-525(--verbose)-525(])-1050([)-525(-V)-525(|)-525(--version)-525(])-1050([)-525(--D)]TJ/F5 10.91 Tf 257.72 0 TD[(n)]TJ/F4 10.91 Tf 11.79 0 TD[(])]TJ -298.31 -18.2 TD[(--tool)]TJ/F5 10.91 Tf 38 0 TD[(to)-27(ol)]TJ 19.6 -13.15 TD[(to)-27(ol)]TJ/F1 10.91 Tf 23.21 0 TD[(sp)-27(eci\014es)-394(what)-394(set)-393(of)-394(tests)-394(to)-394(run,)-408(and)-394(what)-394(initialization)-394(mo)-27(dule)-394(to)-394(use.)]TJ/F5 10.91 Tf -23.21 -13.16 TD[(to)-27(ol)]TJ/F1 10.91 Tf 22.47 0 TD[(is)-325(used)]TJ/F8 10.91 Tf 35.71 0 TD[(only)]TJ/F1 10.91 Tf 24.31 0 TD[(for)-325(these)-326(t)27(w)28(o)-325(purp)-28(oses:)-440(it)-326(is)]TJ/F8 10.91 Tf 136.2 0 TD[(not)]TJ/F1 10.91 Tf 19.92 0 TD[(used)-325(to)-326(name)-325(the)-326(executable)]TJ -238.61 -13.15 TD[(program)-276(to)-276(test.)-425(Executable)-276(to)-28(ol)-276(names)-276(\(and)-276(paths\))-277(are)-276(recorded)-276(in)-276(`)]TJ/F4 10.91 Tf 325.55 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')]TJ -371.37 -13.15 TD[(\(see)-251(Chapter)-251(4)-252([Con\014guration)-251(dep)-28(enden)27(t)-250(v)54(alues],)-266(page)-252(15\),)-268(and)-251(y)27(ou)-251(can)-251(o)27(v)28(erride)]TJ 0 -13.15 TD[(them)-333(b)27(y)-332(sp)-28(ecifying)-333(Tcl)-334(v)55(ariables)-333(on)-333(the)-333(command)-334(line.)]TJ 0 -15.68 TD[(F)83(or)-356(example,)-364(including)-357(`)]TJ/F4 10.91 Tf 116.48 0 TD[(--tool)-333(gcc)]TJ/F1 10.91 Tf 55.19 0 TD[(')-357(on)-357(the)]TJ/F4 10.91 Tf 41.38 0 TD[(runtest)]TJ/F1 10.91 Tf 43.99 0 TD[(command)-357(line)-357(runs)-357(tests)]TJ -257.04 -13.15 TD[(from)-413(all)-413(test)-414(sub)-28(directories)-413(whose)-413(names)-414(matc)27(h)-412(`)]TJ/F4 10.91 Tf 239.54 0 TD[(gcc.*)]TJ/F1 10.91 Tf 28.64 0 TD[(',)-433(and)-413(uses)-414(one)-413(of)-414(the)]TJ -268.18 -13.15 TD[(initialization)-329(mo)-27(dules)-329(named)-329(`)]TJ/F4 10.91 Tf 144.47 0 TD[(config/*-gcc.exp)]TJ/F1 10.91 Tf 91.63 0 TD[('.)-443(T)83(o)-328(sp)-28(ecify)-329(the)-329(name)-329(of)-329(the)]TJ -236.1 -13.15 TD[(compiler)-225(\(p)-28(erhaps)-225(as)-225(an)-225(alternativ)26(e)-224(path)-225(to)-225(what)]TJ/F4 10.91 Tf 229.27 0 TD[(runtest)]TJ/F1 10.91 Tf 42.55 0 TD[(w)27(ould)-224(use)-225(b)27(y)-225(default\),)]TJ -271.82 -13.15 TD[(use)-333(`)]TJ/F4 10.91 Tf 21.88 0 TD[(GCC=)]TJ/F5 10.91 Tf 22.91 0 TD[(binname)]TJ/F1 10.91 Tf 41.22 0 TD[(')-333(on)-333(the)]TJ/F4 10.91 Tf 40.6 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(command)-333(line.)]TJ/F5 10.91 Tf -227.94 -18.21 TD[(testsuite)]TJ/F4 10.91 Tf 40.12 0 TD[(.exp)-333(...)]TJ/F1 10.91 Tf 17.48 -13.15 TD[(Sp)-27(ecify)-379(the)-379(names)-379(of)-379(testsuites)-379(to)-379(run.)-581(By)-379(default,)]TJ/F4 10.91 Tf 250.56 0 TD[(runtest)]TJ/F1 10.91 Tf 44.23 0 TD[(runs)-378(all)-379(tests)-379(for)]TJ -294.79 -13.15 TD[(the)-339(to)-28(ol,)-341(but)-339(y)27(ou)-339(can)-339(restrict)-339(it)-340(to)-339(particular)-340(testsuites)-339(b)27(y)-339(giving)-339(the)-340(names)-339(of)]TJ 0 -13.15 TD[(the)-333(`)]TJ/F4 10.91 Tf 21.82 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')]TJ/F4 10.91 Tf 6.66 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(scripts)-333(that)-333(con)27(trol)-333(them.)]TJ/F5 10.91 Tf -89.39 -15.68 TD[(testsuite)]TJ/F1 10.91 Tf 40.12 0 TD[(.exp)-333(ma)27(y)-332(not)-334(include)-333(path)-333(information;)-334(use)-333(plain)-333(\014lenames.)]TJ/F5 10.91 Tf -97.72 -18.21 TD[(test\014le)]TJ/F4 10.91 Tf 31.58 0 TD[(.exp="testfile1)-333(...")]TJ/F1 10.91 Tf 26.02 -13.15 TD[(Sp)-27(ecify)-441(a)-440(subset)-441(of)-440(tests)-441(in)-440(a)-441(suite)-440(to)-441(run.)-766(F)83(or)-440(compiler)-440(or)-441(assem)27(bler)-439(tests,)]TJ 0 -13.15 TD[(whic)27(h)-353(often)-355(use)-354(a)-355(single)-354(`)]TJ/F4 10.91 Tf 121.27 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')-354(script)-354(co)26(v)28(ering)-353(man)26(y)-353(di\013eren)27(t)-354(source)-354(\014les,)-360(this)]TJ -144.18 -13.15 TD[(option)-373(allo)27(ws)-373(y)27(ou)-373(to)-374(further)-373(restrict)-374(the)-374(tests)-373(b)27(y)-373(listing)-374(particular)-373(source)-374(\014les)]TJ 0 -13.15 TD[(to)-339(compile.)-462(Some)-340(to)-27(ols)-340(ev)27(en)-338(supp)-28(ort)-339(wildcards)-340(here.)-462(The)-339(wildcards)-340(supp)-27(orted)]TJ 0 -13.15 TD[(dep)-27(end)-334(up)-27(on)-334(the)-333(to)-28(ol,)-333(but)-334(t)27(ypically)-332(they)-333(are)]TJ/F4 10.91 Tf 216.7 0 TD[(?)]TJ/F1 10.91 Tf 5.72 0 TD[(,)]TJ/F4 10.91 Tf 6.67 0 TD[(*)]TJ/F1 10.91 Tf 5.73 0 TD[(,)-333(and)]TJ/F4 10.91 Tf 27.88 0 TD[([chars])]TJ/F1 10.91 Tf 40.09 0 TD[(.)]TJ/F5 10.91 Tf -360.39 -18.21 TD[(tclv)55(ar)]TJ/F4 10.91 Tf 27.78 0 TD[(=)]TJ/F5 10.91 Tf 5.73 0 TD[(v)55(alue)]TJ/F1 10.91 Tf 24.09 -13.15 TD[(Y)83(ou)-324(can)-325(de\014ne)-325(Tcl)-325(v)54(ariables)-324(for)-325(use)-325(b)27(y)-324(y)27(our)-324(test)-325(scripts)-325(in)-325(the)-325(same)-326(st)27(yle)-324(used)]TJ 0 -13.15 TD[(with)]TJ/F4 10.91 Tf 26.57 0 TD[(make)]TJ/F1 10.91 Tf 28.27 0 TD[(for)-491(en)27(vironmen)28(t)-491(v)55(ariables.)-918(F)83(or)-491(example,)-531(`)]TJ/F4 10.91 Tf 209.8 0 TD[(runtest)-333(GDB=gdb.old)]TJ/F1 10.91 Tf 106.73 0 TD[(')]TJ -371.37 -13.15 TD[(de\014nes)-435(a)-436(v)54(ariable)-434(called)-436(`)]TJ/F4 10.91 Tf 124.26 0 TD[(GDB)]TJ/F1 10.91 Tf 17.18 0 TD[(';)-487(when)-435(y)26(our)-435(scripts)-435(refer)-436(to)-436(`)]TJ/F4 10.91 Tf 146.61 0 TD[($GDB)]TJ/F1 10.91 Tf 22.9 0 TD[(')-435(in)-436(this)-436(run,)]TJ -310.95 -13.15 TD[(they)-333(use)-333(the)-333(v)54(alue)-332(`)]TJ/F4 10.91 Tf 93.39 0 TD[(gdb.old)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ -133.48 -15.68 TD[(The)-326(default)-326(Tcl)-326(v)54(ariables)-325(used)-326(for)-326(most)-326(to)-28(ols)-326(are)-327(de\014ned)-326(in)-326(the)-326(main)-327(DejaGn)27(u)]TJ/F4 10.91 Tf 0 -13.15 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[(;)-572(their)-493(v)55(alues)-492(are)-493(captured)-493(in)-493(the)-493(`)]TJ/F4 10.91 Tf 176.53 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-492(\014le.)-923(See)-493(Chapter)-493(4)]TJ -268.17 -13.15 TD[([Con\014guration)-333(dep)-28(enden)27(t)-332(v)54(alues],)-332(page)-333(15.)]TJ/F4 10.91 Tf -57.6 -18.21 TD[(--all)]TJ/F1 10.91 Tf 57.6 0 TD[(Displa)27(y)-422(all)-423(test)-423(output.)-713(By)-423(default,)]TJ/F4 10.91 Tf 180.62 0 TD[(runtest)]TJ/F1 10.91 Tf 44.71 0 TD[(sho)27(ws)-422(only)-423(the)-423(output)-423(of)-423(tests)]TJ -225.33 -13.15 TD[(that)-357(pro)-28(duce)-357(unexp)-28(ected)-357(results;)-370(that)-357(is,)-364(tests)-357(with)-357(status)-358(`)]TJ/F4 10.91 Tf 286.38 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-357(\(unexp)-28(ected)]TJ -309.29 -13.15 TD[(failure\),)-286(`)]TJ/F4 10.91 Tf 43.46 0 TD[(XPASS)]TJ/F1 10.91 Tf 28.64 0 TD[(')-275(\(unexp)-27(ected)-276(success\),)-286(or)-276(`)]TJ/F4 10.91 Tf 126.89 0 TD[(ERROR)]TJ/F1 10.91 Tf 28.64 0 TD[(')-275(\(a)-275(sev)27(ere)-274(error)-275(in)-276(the)-275(test)-275(case)]TJ -227.63 -13.16 TD[(itself)-77(\).)-629(Sp)-28(ecify)-395(`)]TJ/F4 10.91 Tf 79.35 0 TD[(--all)]TJ/F1 10.91 Tf 28.63 0 TD[(')-394(to)-395(see)-395(output)-395(for)-394(tests)-395(with)-395(status)-395(`)]TJ/F4 10.91 Tf 181.15 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(')-394(\(success,)-410(as)]TJ -312.04 -13.15 TD[(exp)-27(ected\))-369(`)]TJ/F4 10.91 Tf 53.12 0 TD[(XFAIL)]TJ/F1 10.91 Tf 28.63 0 TD[(')-368(\(failure,)-378(as)-369(exp)-28(ected\),)-378(or)-369(`)]TJ/F4 10.91 Tf 132.26 0 TD[(WARNING)]TJ/F1 10.91 Tf 40.09 0 TD[(')-368(\(minor)-369(error)-369(in)-369(the)-369(test)]TJ -254.1 -13.15 TD[(case)-333(itself)-78(\).)]TJ ET 0 g 0 G
-endstream
-endobj
-84 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F8 52 0 R
->>
-endobj
-82 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 84 0 R
->>
-endobj
-87 0 obj
-<<
-/Length 8947
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(3:)-444(Using)]TJ/F4 10.91 Tf 86.45 0 TD[(runtest)]TJ/F1 10.91 Tf 334.64 0 TD[(11)]TJ/F4 10.91 Tf -421.09 -23.91 TD[(--baud)]TJ/F5 10.91 Tf 38 0 TD[(baud-rate)]TJ/F4 10.91 Tf -38 -13.15 TD[(-b)]TJ/F5 10.91 Tf 15.09 0 TD[(baud-rate)]TJ/F1 10.91 Tf 42.51 -13.15 TD[(Set)-322(the)-323(default)-323(baud)-323(rate)-323(to)-323(something)-322(other)-323(than)-323(9600.)-441(\(Some)-323(serial)-323(in)27(terface)]TJ 0 -13.15 TD[(programs,)-333(lik)27(e)]TJ/F4 10.91 Tf 71.03 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(,)-333(use)-333(a)-333(separate)-334(initialization)-333(\014le)-333(instead)-334(of)-333(this)-333(v)54(alue.\))]TJ/F4 10.91 Tf -145.81 -19.13 TD[(--connect)]TJ/F5 10.91 Tf 55.18 0 TD[(t)27(yp)-26(e)]TJ/F1 10.91 Tf 2.42 -13.15 TD[(Connect)-269(to)-270(a)-270(target)-270(testing)-269(en)26(vironmen)28(t)-269(as)-269(sp)-28(eci\014ed)-270(b)27(y)]TJ/F5 10.91 Tf 262.49 0 TD[(t)27(yp)-26(e)]TJ/F1 10.91 Tf 20.91 0 TD[(,)-282(if)-270(the)-269(target)-270(is)-270(not)]TJ -283.4 -13.15 TD[(the)-397(computer)-397(running)]TJ/F4 10.91 Tf 110.03 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(.)-635(F)82(or)-396(example,)-413(use)-397(`)]TJ/F4 10.91 Tf 99.44 0 TD[(--connect)]TJ/F1 10.91 Tf 51.54 0 TD[(')-397(to)-397(c)27(hange)-396(the)]TJ -301.1 -13.15 TD[(program)-302(used)-303(to)-303(connect)-303(to)-303(a)-303(\\bare)-303(b)-28(oard")-303(b)-28(o)-28(ot)-303(monitor.)-434(The)-303(c)27(hoices)-302(for)]TJ/F5 10.91 Tf 353.49 0 TD[(t)27(yp)-26(e)]TJ/F1 10.91 Tf -353.49 -13.16 TD[(in)-368(the)-368(DejaGn)27(u)-367(1.0)-368(distribution)-368(are)-368(`)]TJ/F4 10.91 Tf 178.08 0 TD[(rlogin)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-376(`)]TJ/F4 10.91 Tf 13.21 0 TD[(telnet)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-376(`)]TJ/F4 10.91 Tf 13.2 0 TD[(rsh)]TJ/F1 10.91 Tf 17.18 0 TD[(',)-376(`)]TJ/F4 10.91 Tf 13.2 0 TD[(tip)]TJ/F1 10.91 Tf 17.19 0 TD[(',)-376(`)]TJ/F4 10.91 Tf 13.2 0 TD[(kermit)]TJ/F1 10.91 Tf 34.36 0 TD[(',)]TJ -368.34 -13.15 TD[(and)-333(`)]TJ/F4 10.91 Tf 24.24 0 TD[(mondfe)]TJ/F1 10.91 Tf 34.37 0 TD[('.)]TJ -58.61 -16.14 TD[(The)-363(default)-364(for)-364(this)-364(option)-364(dep)-28(ends)-364(on)-364(the)-364(con\014guration)-364(\(see)-364(Section)-364(5.5)-363([Re-)]TJ 0 -13.15 TD[(mote)-370(targets)-370(supp)-28(orted],)-380(page)-370(32\).)-555(The)-371(default)-370(is)-370(c)26(hosen)-369(to)-370(b)-28(e)-370(the)-371(most)-370(con-)]TJ 0 -13.15 TD[(v)27(enien)28(t)-347(comm)27(unication)-347(metho)-28(d)-347(a)26(v)56(ailable,)-350(but)-348(often)-348(other)-348(alternativ)27(es)-347(w)27(ork)-347(as)]TJ 0 -13.15 TD[(w)27(ell;)-316(y)26(ou)-309(ma)27(y)-309(\014nd)-310(it)-310(useful)-310(to)-310(try)-310(alternativ)27(e)-309(connect)-310(metho)-28(ds)-310(if)-310(y)27(ou)-309(susp)-28(ect)-310(a)]TJ 0 -13.15 TD[(comm)27(unication)-332(problem)-333(with)-334(y)27(our)-332(testing)-334(target.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--debug)]TJ/F1 10.91 Tf 57.6 0 TD[(T)83(urns)-269(on)-271(the)]TJ/F4 10.91 Tf 63.18 0 TD[(expect)]TJ/F1 10.91 Tf 37.31 0 TD[(in)27(ternal)-269(debugging)-270(output.)-424(Debugging)-270(output)-270(is)-271(displa)27(y)28(ed)]TJ -100.49 -13.15 TD[(as)-482(part)-482(of)-482(the)]TJ/F4 10.91 Tf 74.76 0 TD[(runtest)]TJ/F1 10.91 Tf 45.35 0 TD[(output,)-519(and)-482(logged)-482(to)-482(a)-482(\014le)-482(called)-482(`)]TJ/F4 10.91 Tf 179.64 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[('.)-890(The)]TJ -339.84 -13.15 TD[(extra)-261(debugging)-262(output)-261(do)-28(es)]TJ/F8 10.91 Tf 137.57 0 TD[(not)]TJ/F1 10.91 Tf 19.22 0 TD[(app)-27(ear)-262(on)-261(standard)-262(output,)-276(unless)-262(the)-261(v)27(erb)-27(ose)]TJ -156.79 -13.15 TD[(lev)27(el)-369(is)-369(greater)-370(than)-370(2)-370(\(for)-370(instance,)-379(to)-369(see)-370(debug)-370(output)-370(immediately)82(,)-377(sp)-28(ecify)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--debug)-333(-v)-333(-v)]TJ/F1 10.91 Tf 70.27 0 TD[('\).)-618(The)-392(debugging)-391(output)-392(sho)27(ws)-390(all)-392(attempts)-391(at)-392(matc)27(hing)-391(the)]TJ -73.3 -13.15 TD[(test)-364(output)-365(of)-365(the)-364(to)-28(ol)-365(with)-364(the)-365(scripted)-365(patterns)-365(describing)-364(exp)-28(ected)-365(output.)]TJ 0 -13.15 TD[(The)-333(output)-333(generated)-333(with)-334(`)]TJ/F4 10.91 Tf 135.79 0 TD[(--strace)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(also)-333(go)-28(es)-333(in)27(to)-333(`)]TJ/F4 10.91 Tf 77.69 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ/F4 10.91 Tf -356.99 -19.13 TD[(--help)]TJ 0 -13.15 TD[(-he)]TJ/F1 10.91 Tf 57.6 0 TD[(Prin)27(ts)-284(out)-286(a)-285(short)-286(summary)-285(of)-286(the)]TJ/F4 10.91 Tf 164.35 0 TD[(runtest)]TJ/F1 10.91 Tf 43.2 0 TD[(options,)-295(then)-285(exits)-285(\(ev)26(en)-284(if)-286(y)27(ou)-284(also)]TJ -207.55 -13.15 TD[(sp)-27(ecify)-334(other)-333(options\).)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--host)]TJ/F5 10.91 Tf 38 0 TD[(string)]TJ 19.6 -13.15 TD[(string)]TJ/F1 10.91 Tf 33.12 0 TD[(is)-442(a)-442(full)-442(con\014guration)-442(\\triple")-442(name)-442(as)-442(used)-443(b)27(y)]TJ/F4 10.91 Tf 238.5 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.)-770(Use)-442(this)]TJ -323.17 -13.15 TD[(option)-334(to)-334(o)26(v)28(erride)-333(the)-335(default)-334(string)-334(recorded)-335(b)27(y)-333(y)26(our)-333(con\014guration's)-334(c)26(hoice)-333(of)]TJ 0 -13.15 TD[(host.)-438(This)-317(c)27(hoice)-316(do)-28(es)-317(not)-316(c)27(hange)-316(ho)27(w)-316(an)27(ything)-316(is)-317(actually)-316(con\014gured)-317(unless)-317({)]TJ 0 -13.15 TD[(build)-258(is)-259(also)-259(sp)-28(eci\014ed;)-284(it)-259(a\013ects)]TJ/F8 10.91 Tf 147.77 0 TD[(only)]TJ/F1 10.91 Tf 23.58 0 TD[(DejaGn)27(u)-258(pro)-27(cedures)-259(that)-259(compare)-259(the)-259(host)]TJ -171.35 -13.15 TD[(string)-435(with)-436(particular)-435(v)55(alues.)-750(The)-436(pro)-28(cedures)]TJ/F4 10.91 Tf 229.25 0 TD[(ishost)]TJ/F1 10.91 Tf 34.36 0 TD[(,)]TJ/F4 10.91 Tf 8.06 0 TD[(istarget)]TJ/F1 10.91 Tf 45.82 0 TD[(,)]TJ/F4 10.91 Tf 8.06 0 TD[(isnative)]TJ/F1 10.91 Tf 45.82 0 TD[(,)]TJ -371.37 -13.15 TD[(and)]TJ/F4 10.91 Tf 22.08 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 67.5 0 TD[(are)-412(a\013ected)-413(b)27(y)-412(`)]TJ/F4 10.91 Tf 79.3 0 TD[(--host)]TJ/F1 10.91 Tf 34.36 0 TD[('.)-682(In)-413(this)-413(usage,)]TJ/F4 10.91 Tf 84.02 0 TD[(host)]TJ/F1 10.91 Tf 27.41 0 TD[(refers)-412(to)-413(the)]TJ -314.67 -13.15 TD[(mac)27(hine)-418(that)-420(the)-420(tests)-419(are)-420(to)-420(b)-28(e)-419(run)-420(on,)-441(whic)26(h)-418(ma)27(y)-419(not)-420(b)-28(e)-419(the)-420(same)-420(as)-419(the)]TJ/F4 10.91 Tf 0 -13.15 TD[(build)]TJ/F1 10.91 Tf 32.01 0 TD[(mac)27(hine.)-435(If)]TJ/F4 10.91 Tf 57.53 0 TD[(--build)]TJ/F1 10.91 Tf 43.46 0 TD[(is)-309(also)-309(sp)-28(eci\014ed,)-314(then)]TJ/F4 10.91 Tf 103.73 0 TD[(--host)]TJ/F1 10.91 Tf 37.73 0 TD[(refers)-309(to)-309(the)-309(mac)27(hine)]TJ -274.46 -13.15 TD[(that)-333(the)-333(tests)-333(wil,)-334(b)-28(e)-333(run)-333(on,)-334(not)-333(the)-333(mac)27(hine)-333(DejaGn)27(u)-332(is)-334(run)-333(on.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--build)]TJ/F5 10.91 Tf 43.73 0 TD[(string)]TJ 13.87 -13.15 TD[(string)]TJ/F1 10.91 Tf 32.21 0 TD[(is)-358(a)-359(full)-359(con\014guration)-359(\\triple")-359(name)-359(as)-359(used)-359(b)27(y)]TJ/F4 10.91 Tf 230.34 0 TD[(configure)]TJ/F1 10.91 Tf 51.54 0 TD[(.)-521(This)-359(is)-359(the)]TJ -314.09 -13.15 TD[(t)27(yp)-26(e)-310(of)-309(mac)27(hine)-308(DejaGn)26(u)-308(and)-309(the)-309(to)-28(ols)-309(to)-310(b)-27(e)-310(tested)-309(are)-309(built)-309(on.)-437(F)83(or)-309(a)-309(normal)]TJ 0 -13.16 TD[(cross)-333(this)-333(is)-333(the)-334(same)-333(as)-333(the)-334(host,)-333(but)-333(for)-334(a)-333(canadian)-333(cross,)-334(they)-333(are)-333(sep)-28(erate.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(--name)]TJ/F5 10.91 Tf 38 0 TD[(name)]TJ 19.6 -13.15 TD[(name)]TJ/F1 10.91 Tf 30.68 0 TD[(is)-423(a)-423(name)-424(for)-423(the)-423(particular)-424(testing)-423(target)-424(mac)27(hine)-422(\(for)-424(cross)-423(testing\).)]TJ -30.68 -13.15 TD[(If)-350(the)-351(testing)-351(target)-351(has)-351(IP)-350(net)26(w)28(ork)-350(supp)-27(ort)-351(\(for)-351(example,)]TJ/F4 10.91 Tf 282.71 0 TD[(RPC)]TJ/F1 10.91 Tf 21.01 0 TD[(or)]TJ/F4 10.91 Tf 13.55 0 TD[(NFS)]TJ/F1 10.91 Tf 17.19 0 TD[(\),)-355(this)-350(is)]TJ -334.46 -13.16 TD[(the)-412(net)27(w)28(ork)-411(name)-413(for)-412(the)-412(target)-412(itself.)-682(\()]TJ/F5 10.91 Tf 199.72 0 TD[(name)]TJ/F1 10.91 Tf 30.56 0 TD[(is)]TJ/F8 10.91 Tf 11.83 0 TD[(not)-430(the)-430(c)50(on\014gur)51(ation)-429(string)]TJ/F1 10.91 Tf -242.11 -13.15 TD[(y)27(ou)-285(sp)-28(ecify)-286(as)-286(a)-286(target)-286(with)]TJ/F4 10.91 Tf 133.11 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(;)-301(the)-286(`)]TJ/F4 10.91 Tf 27.62 0 TD[(--name)]TJ/F1 10.91 Tf 34.37 0 TD[(')-286(option)-286(names)-286(a)-286(particular)]TJ -246.65 -13.15 TD[(target,)-402(rather)-388(than)-389(describing)-388(a)-389(class)-389(of)-388(targets.\))-610(F)82(or)-387(targets)-389(that)-388(connect)-389(in)]TJ ET 0 g 0 G
-endstream
-endobj
-88 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F8 52 0 R
->>
-endobj
-86 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 88 0 R
->>
-endobj
-91 0 obj
-<<
-/Length 8100
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(12)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 57.6 -23.91 TD[(other)-273(w)26(a)28(ys,)-284(the)-274(meaning)-274(of)-274(the)]TJ/F5 10.91 Tf 147.84 0 TD[(name)]TJ/F1 10.91 Tf 29.05 0 TD[(string)-273(dep)-28(ends)-274(on)-274(the)-273(connection)-274(metho)-28(d.)]TJ -176.89 -13.15 TD[(See)-333(Section)-333(5.5)-333([Remote)-334(targets)-333(supp)-28(orted],)-333(page)-334(32.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--name)]TJ/F5 10.91 Tf 38 0 TD[(string)]TJ/F1 10.91 Tf 19.6 -13.15 TD[(Sp)-27(ecify)-287(a)-286(net)26(w)28(ork)-285(name)-287(of)-286(testing)-287(target)-286(or)-287(its)-286(host.)-429(The)-287(particular)-286(names)-287(that)]TJ 0 -13.15 TD[(are)-271(meaningful)-271(with)-271(`)]TJ/F4 10.91 Tf 100.12 0 TD[(--name)]TJ/F1 10.91 Tf 34.36 0 TD[(')-271(will)-271(dep)-28(end)-271(on)-271(y)27(our)-271(site)-271(con\014guration,)-284(and)-271(on)-271(the)]TJ -134.48 -13.15 TD[(connection)-339(proto)-28(col:)-457(for)-340(example,)]TJ/F4 10.91 Tf 164.37 0 TD[(tip)]TJ/F1 10.91 Tf 20.89 0 TD[(connections)-339(require)-340(names)-340(from)-340(a)-339(serial)]TJ -185.26 -13.15 TD[(line)-286(con\014guration)-286(\014le)-286(\(usually)-286(called)-286(`)]TJ/F4 10.91 Tf 177.21 0 TD[(/etc/remote)]TJ/F1 10.91 Tf 63 0 TD[('\),)-295(while)]TJ/F4 10.91 Tf 41.49 0 TD[(telnet)]TJ/F1 10.91 Tf 37.49 0 TD[(connections)]TJ -319.19 -13.15 TD[(use)-333(IP)-333(hostnames.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--objdir)]TJ/F5 10.91 Tf 49.45 0 TD[(path)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(Use)]TJ/F5 10.91 Tf 22.69 0 TD[(path)]TJ/F1 10.91 Tf 27.18 0 TD[(as)-491(the)-491(top)-492(directory)-491(con)26(taining)-490(an)27(y)-491(auxiliary)-491(compiled)-492(test)-491(co)-28(de.)]TJ -49.87 -13.15 TD[(This)-332(defaults)-332(to)-332(`)]TJ/F4 10.91 Tf 82.21 0 TD[(.)]TJ/F1 10.91 Tf 5.72 0 TD[('.)-444(Use)-332(this)-332(option)-332(to)-332(lo)-28(cate)-332(pre-compiled)-332(test)-333(co)-27(de.)-444(Y)82(ou)-331(can)]TJ -87.93 -13.16 TD[(normally)-333(prepare)-333(an)27(y)-333(auxiliary)-333(\014les)-333(needed)-334(with)]TJ/F4 10.91 Tf 234.43 0 TD[(make)]TJ/F1 10.91 Tf 22.9 0 TD[(.)]TJ/F4 10.91 Tf -314.93 -19.12 TD[(--outdir)]TJ/F5 10.91 Tf 49.45 0 TD[(path)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(W)83(rite)-297(output)-298(logs)-299(in)-298(directory)]TJ/F5 10.91 Tf 145.2 0 TD[(path)]TJ/F1 10.91 Tf 21.82 0 TD[(.)-432(The)-298(default)-298(is)-299(`)]TJ/F4 10.91 Tf 79.69 0 TD[(.)]TJ/F1 10.91 Tf 5.73 0 TD[(',)-305(the)-298(directory)-298(where)-298(y)27(ou)]TJ -252.44 -13.15 TD[(start)]TJ/F4 10.91 Tf 26.17 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(.)-450(This)-335(option)-336(a\013ects)-335(only)-335(the)-336(summary)-335(and)-336(the)-335(detailed)-335(log)-336(\014les)]TJ -66.26 -13.16 TD[(`)]TJ/F5 10.91 Tf 3.03 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.sum)]TJ/F1 10.91 Tf 22.9 0 TD[(')-393(and)-393(`)]TJ/F5 10.91 Tf 32.22 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.log)]TJ/F1 10.91 Tf 22.91 0 TD[('.)-624(The)-393(DejaGn)26(u)-392(debug)-393(log)-394(`)]TJ/F4 10.91 Tf 136.63 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[(')-393(alw)27(a)28(ys)-393(app)-27(ears)]TJ -294.76 -13.15 TD[(\(when)-333(requested\))-333(in)-333(the)-334(lo)-28(cal)-333(directory)82(.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(--reboot)]TJ/F1 10.91 Tf 57.6 0 TD[(Reb)-27(o)-28(ot)-296(the)-295(target)-296(b)-28(oard)-296(when)]TJ/F4 10.91 Tf 146.95 0 TD[(runtest)]TJ/F1 10.91 Tf 43.31 0 TD[(initializes.)-431(Usually)82(,)-302(when)-296(running)-296(tests)]TJ -190.26 -13.16 TD[(on)-364(a)-364(separate)-364(target)-364(b)-28(oard,)-372(it)-364(is)-364(safer)-364(to)-364(reb)-28(o)-28(ot)-364(the)-364(target)-364(to)-364(b)-28(e)-364(certain)-364(of)-364(its)]TJ 0 -13.15 TD[(state.)-444(Ho)27(w)28(ev)27(er,)-332(when)-333(dev)27(eloping)-333(test)-333(scripts,)-333(reb)-28(o)-28(oting)-333(tak)26(es)-332(a)-333(lot)-334(of)-333(time.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(--srcdir)]TJ/F5 10.91 Tf 49.45 0 TD[(path)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(Use)]TJ/F5 10.91 Tf 22.07 0 TD[(path)]TJ/F1 10.91 Tf 26.56 0 TD[(as)-434(the)-435(top)-434(directory)-435(for)-434(test)-435(scripts)-435(to)-434(run.)]TJ/F4 10.91 Tf 220.43 0 TD[(runtest)]TJ/F1 10.91 Tf 44.83 0 TD[(lo)-27(oks)-435(in)-434(this)]TJ -313.89 -13.16 TD[(directory)-303(for)-303(an)27(y)-303(sub)-28(directory)-303(whose)-303(name)-304(b)-28(egins)-303(with)-303(the)-304(to)-28(olname)-303(\(sp)-28(eci\014ed)]TJ 0 -13.15 TD[(with)-366(`)]TJ/F4 10.91 Tf 28.24 0 TD[(--tool)]TJ/F1 10.91 Tf 34.36 0 TD[('\).)-543(F)82(or)-366(instance,)-374(with)-367(`)]TJ/F4 10.91 Tf 110.39 0 TD[(--tool)-333(gdb)]TJ/F1 10.91 Tf 55.18 0 TD[(',)]TJ/F4 10.91 Tf 10.15 0 TD[(runtest)]TJ/F1 10.91 Tf 44.09 0 TD[(uses)-366(tests)-366(in)-367(sub)-28(di-)]TJ -282.41 -13.15 TD[(rectories)-378(`)]TJ/F4 10.91 Tf 47.28 0 TD[(gdb.*)]TJ/F1 10.91 Tf 28.63 0 TD[(')-378(\(with)-378(the)-378(usual)-378(shell-lik)26(e)-377(\014lename)-378(expansion\).)-579(If)-379(y)27(ou)-377(do)-378(not)]TJ -75.91 -13.15 TD[(use)-416(`)]TJ/F4 10.91 Tf 22.78 0 TD[(--srcdir)]TJ/F1 10.91 Tf 45.82 0 TD[(',)]TJ/F4 10.91 Tf 10.82 0 TD[(runtest)]TJ/F1 10.91 Tf 44.63 0 TD[(lo)-27(oks)-416(for)-416(test)-416(directories)-416(under)-417(the)-416(curren)27(t)-415(w)27(orking)]TJ -124.05 -13.15 TD[(directory)83(.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--strace)]TJ/F5 10.91 Tf 49.45 0 TD[(n)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(T)83(urn)-240(on)-240(in)26(ternal)-239(tracing)-241(for)]TJ/F4 10.91 Tf 131.12 0 TD[(expect)]TJ/F1 10.91 Tf 34.37 0 TD[(,)-259(to)]TJ/F5 10.91 Tf 18.18 0 TD[(n)]TJ/F1 10.91 Tf 8.68 0 TD[(lev)27(els)-239(deep.)-414(By)-240(adjusting)-241(the)-241(lev)27(el,)-258(y)27(ou)]TJ -192.35 -13.15 TD[(can)-256(con)26(trol)-255(the)-257(exten)26(t)-255(to)-257(whic)27(h)-256(y)26(our)-255(output)-257(expands)-257(m)27(ulti-lev)27(el)-255(Tcl)-257(statemen)26(ts.)]TJ 0 -13.15 TD[(This)-281(allo)27(ws)-281(y)27(ou)-281(to)-281(ignore)-282(some)-281(lev)26(els)-280(of)]TJ/F4 10.91 Tf 188.48 0 TD[(case)]TJ/F1 10.91 Tf 25.98 0 TD[(or)]TJ/F4 10.91 Tf 12.8 0 TD[(if)]TJ/F1 10.91 Tf 14.53 0 TD[(statemen)27(ts.)-426(Eac)27(h)-281(pro)-27(cedure)]TJ -241.79 -13.15 TD[(call)-333(or)-333(con)27(trol)-333(structure)-333(coun)27(ts)-333(as)-333(one)-333(\\lev)27(el".)]TJ 0 -16.14 TD[(The)-547(output)-547(is)-547(recorded)-547(in)-547(the)-547(same)-548(\014le,)-600(`)]TJ/F4 10.91 Tf 215.18 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[(',)-600(used)-547(for)-547(output)-548(from)]TJ -255.27 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ/F4 10.91 Tf -100.72 -19.13 TD[(--target)]TJ/F5 10.91 Tf 49.45 0 TD[(string)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(Use)-340(this)-341(option)-340(to)-341(o)27(v)28(erride)-340(the)-340(default)-341(setting)-340(\(running)-341(nativ)27(e)-340(tests\).)]TJ/F5 10.91 Tf 335.05 0 TD[(string)]TJ/F1 10.91 Tf 32.02 0 TD[(is)]TJ -367.07 -13.15 TD[(a)-316(full)-316(con\014guration)-316(\\triple")-317(name)]TJ/F6 6.97 Tf 159.02 3.96 TD[(1)]TJ/F1 10.91 Tf 7.92 -3.96 TD[(as)-316(used)-316(b)27(y)]TJ/F4 10.91 Tf 52.89 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.)-438(This)-317(option)-316(c)27(hanges)]TJ -271.38 -13.15 TD[(the)-469(con\014guration)]TJ/F4 10.91 Tf 87.85 0 TD[(runtest)]TJ/F1 10.91 Tf 45.21 0 TD[(uses)-469(for)-469(the)-470(default)-469(to)-28(ol)-469(names,)-504(and)-469(other)-470(setup)]TJ -133.06 -13.15 TD[(information.)-661(See)-406(section)-405(\\Using)]TJ/F4 10.91 Tf 160.04 0 TD[(configure)]TJ/F1 10.91 Tf 51.54 0 TD[(")-405(in)]TJ/F5 10.91 Tf 23.4 0 TD[(Cygn)27(us)-404(con\014gure)]TJ/F1 10.91 Tf 83.31 0 TD[(,)-423(for)-406(details)]TJ -318.29 -13.15 TD[(ab)-27(out)]TJ/F4 10.91 Tf 31.21 0 TD[(configure)]TJ/F1 10.91 Tf 55.18 0 TD[(names.)]TJ ET 18.00 -579.46 m 162.00 -579.46 l 162.00 -579.06 l 18.00 -579.06 l b BT/F6 6.97 Tf 23.02 -587.41 TD[(1)]TJ/F1 10.91 Tf 9.92 -3.96 TD[(Con\014guration)-333(triples)-333(ha)27(v)27(e)-332(the)-333(form)-334(`)]TJ/F5 10.91 Tf 175.31 0 TD[(cpu)]TJ/F4 10.91 Tf 16.97 0 TD[(-)]TJ/F5 10.91 Tf 5.72 0 TD[(v)27(endor)]TJ/F4 10.91 Tf 32.16 0 TD[(-)]TJ/F5 10.91 Tf 5.72 0 TD[(os)]TJ/F1 10.91 Tf 10.21 0 TD[('.)]TJ ET 0 g 0 G
-endstream
-endobj
-92 0 obj
-<<
-/F1 9 0 R
-/F5 31 0 R
-/F4 28 0 R
-/F6 46 0 R
->>
-endobj
-90 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 92 0 R
->>
-endobj
-96 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -958
-/Flags 68
-/FontBBox [-30 -958 1146 777]
-/FontName /CMSY9
-/ItalicAngle -14
-/XHeight 431
-/StemV 80
-/FontFile 95 0 R
->>
-endobj
-97 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F11
-/FontDescriptor 96 0 R
-/BaseFont /UJKJVH+CMSY9
-/FirstChar 0
-/LastChar 127
-/Widths [799.38 285.49 799.38 513.89 799.38 513.89 799.38 799.38 799.38 799.38 799.38
-799.38 799.38 1027.77 513.89 513.89 799.38 799.38 799.38 799.38 799.38 799.38 799.38
-799.38 799.38 799.38 799.38 799.38 1027.77 1027.77 799.38 799.38 1027.77 1027.77
-513.89 513.89 1027.77 1027.77 1027.77 799.38 1027.77 1027.77 628.08 628.08 1027.77
-1027.77 1027.77 799.38 279.32 1027.77 685.18 685.18 913.57 913.57 0 0 570.98 570.98
-685.18 513.89 742.28 742.28 799.38 799.38 628.08 821.12 673.62 542.57 793.76 542.43
-736.33 610.91 871.05 562.72 696.6 782.16 707.93 1229.16 842.08 816.32 716.77 839.34
-873.88 622.37 563.16 642.26 632.06 1017.48 732.43 685 742 685.18 685.18 685.18 685.18
-685.18 628.08 628.08 456.79 456.79 456.79 456.79 513.89 513.89 399.69 399.69 285.49
-513.89 513.89 628.08 513.89 285.49 856.48 770.67 856.48 428.24 685.18 685.18 799.38
-799.38 456.79 456.79 456.79 628.08 799.38 799.38 799.38 799.38]
->>
-endobj
-99 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -194.44
-/Flags 4
-/FontBBox [-267 -250 1070 968]
-/FontName /CMR8
-/ItalicAngle 0
-/XHeight 431
-/StemV 80
-/FontFile 98 0 R
->>
-endobj
-100 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F12
-/FontDescriptor 99 0 R
-/BaseFont /PLCKEA+CMR8
-/FirstChar 0
-/LastChar 127
-/Widths [663.55 885.43 826.4 736.82 708.34 795.85 767.37 826.4 767.37 826.4 767.37
-619.8 590.29 590.29 885.43 885.43 295.14 324.66 531.26 531.26 531.26 531.26 531.26
-795.85 472.23 531.26 767.37 826.4 531.26 958.69 1076.75 826.4 295.14 295.14 531.26
-885.43 531.26 885.43 826.4 295.14 413.2 413.2 531.26 826.4 295.14 354.17 295.14 531.26
-531.26 531.26 531.26 531.26 531.26 531.26 531.26 531.26 531.26 531.26 295.14 295.14
-295.14 826.4 501.74 501.74 826.4 795.85 752.09 767.37 811.12 722.58 693.07 833.52
-795.85 382.64 545.49 825.36 663.55 972.93 795.85 826.4 722.58 826.4 781.61 590.29
-767.37 795.85 795.85 1090.99 795.85 795.85 649.31 295.14 531.26 295.14 531.26 295.14
-295.14 531.26 590.29 472.23 590.29 472.23 324.66 531.26 590.29 295.14 324.66 560.77
-295.14 885.43 590.29 531.26 590.29 560.77 414.07 419.1 413.2 590.29 560.77 767.37
-560.77 560.77 472.23 531.26 1062.52 531.26 531.26 531.26]
->>
-endobj
-101 0 obj
-<<
-/Length 3470
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(3:)-444(Using)]TJ/F4 10.91 Tf 86.45 0 TD[(runtest)]TJ/F1 10.91 Tf 334.64 0 TD[(13)]TJ/F4 10.91 Tf -421.09 -23.91 TD[(--verbose)]TJ 0 -13.15 TD[(-v)]TJ/F1 10.91 Tf 57.6 0 TD[(T)83(urns)-367(on)-367(more)-367(output.)-547(Rep)-27(eating)-368(this)-367(option)-368(increases)-367(the)-367(amoun)27(t)-367(of)-367(output)]TJ 0 -13.15 TD[(displa)27(y)28(ed.)-726(Lev)27(el)-427(one)-428(\(`)]TJ/F4 10.91 Tf 112.93 0 TD[(-v)]TJ/F1 10.91 Tf 11.46 0 TD[('\))-427(is)-428(simply)-427(test)-428(output.)-727(Lev)26(el)-426(t)27(w)27(o)-426(\(`)]TJ/F4 10.91 Tf 183.83 0 TD[(-v)-333(-v)]TJ/F1 10.91 Tf 26.55 0 TD[('\))-427(sho)27(ws)]TJ -334.77 -13.15 TD[(messages)-497(on)-498(options,)-539(con\014guration,)-538(and)-498(pro)-28(cess)-497(con)26(trol.)-936(V)82(erb)-27(ose)-497(messages)]TJ 0 -13.16 TD[(app)-27(ear)-342(in)-342(the)-342(detailed)-342(\(`)]TJ/F4 10.91 Tf 116.47 0 TD[(*.log)]TJ/F1 10.91 Tf 28.63 0 TD[('\))-341(log)-342(\014le,)-345(but)-342(not)-342(in)-341(the)-342(summary)-342(\(`)]TJ/F4 10.91 Tf 175.72 0 TD[(*.sum)]TJ/F1 10.91 Tf 28.64 0 TD[('\))-341(log)]TJ -349.46 -13.15 TD[(\014le.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(--version)]TJ 0 -13.15 TD[(-V)]TJ/F1 10.91 Tf 57.6 0 TD[(Prin)27(ts)-296(out)-296(the)-297(v)26(ersion)-295(n)26(um)28(b)-27(ers)-296(of)-297(DejaGn)26(u,)]TJ/F4 10.91 Tf 210.67 0 TD[(expect)]TJ/F1 10.91 Tf 37.61 0 TD[(and)-296(Tcl,)-305(and)-296(exits)-297(without)]TJ -248.28 -13.16 TD[(running)-333(an)27(y)-332(tests.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(-D0)]TJ 0 -13.15 TD[(-D1)]TJ/F1 10.91 Tf 57.6 0 TD[(Start)-281(the)-282(in)26(ternal)-281(Tcl)-282(debugger.)-427(The)-282(Tcl)-282(debugger)-282(supp)-28(orts)-282(breakp)-28(oin)27(ts,)-291(single)]TJ 0 -13.16 TD[(stepping,)-470(and)-443(other)-443(common)-443(debugging)-442(activities.)-774(\(See)]TJ/F5 10.91 Tf 277.57 0 TD[(A)-442(Debugger)-443(for)-443(Tcl)]TJ -277.57 -13.15 TD[(Applications)]TJ/F1 10.91 Tf 63.84 0 TD[(b)27(y)-332(Don)-333(Lib)-28(es.)]TJ/F6 6.97 Tf 67.03 3.96 TD[(2)]TJ/F1 10.91 Tf 4.47 -3.96 TD[(\))]TJ -135.34 -16.14 TD[(If)-303(y)27(ou)-303(sp)-27(ecify)-304(`)]TJ/F4 10.91 Tf 69.69 0 TD[(-D1)]TJ/F1 10.91 Tf 17.18 0 TD[(',)-309(the)]TJ/F4 10.91 Tf 27.9 0 TD[(expect)]TJ/F1 10.91 Tf 37.67 0 TD[(shell)-303(stops)-303(at)-304(a)-303(breakp)-28(oin)27(t)-303(as)-303(so)-28(on)-304(as)-303(DejaGn)27(u)]TJ -152.44 -13.15 TD[(in)27(v)28(ok)28(es)-332(it.)]TJ 0 -16.14 TD[(If)-369(y)26(ou)-369(sp)-27(ecify)-370(`)]TJ/F4 10.91 Tf 71.86 0 TD[(-D0)]TJ/F1 10.91 Tf 17.19 0 TD[(',)-379(DejaGn)27(u)-369(starts)-370(as)-369(usual,)-379(but)-370(y)26(ou)-368(can)-370(en)26(ter)-368(the)-370(debugger)]TJ -89.05 -13.15 TD[(b)27(y)-332(sending)-333(an)-334(in)27(terrupt)-332(\(e.g.)-445(b)27(y)-332(t)27(yping)]TJ/F11 8.97 Tf 190.73 0.4 TD[(h)]TJ ET 269.23 -231.58 m 281.94 -231.58 l 281.94 -231.18 l 269.23 -231.18 l b BT/F12 7.97 Tf 269.23 -238.31 TD[(C-c)]TJ ET 269.23 -240.15 m 281.94 -240.15 l 281.94 -239.75 l 269.23 -239.75 l b BT/F11 8.97 Tf 281.43 -237.91 TD[(i)]TJ/F1 10.91 Tf 3.58 -0.4 TD[(\).)]TJ ET 18.00 -611.91 m 162.00 -611.91 l 162.00 -611.51 l 18.00 -611.51 l b BT/F6 6.97 Tf 23.02 -619.85 TD[(2)]TJ/F1 10.91 Tf 9.92 -3.96 TD[(Distributed)-333(in)-333(P)27(ostScript)-333(form)-333(with)]TJ/F4 10.91 Tf 174.76 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(as)-333(the)-333(\014le)]TJ -212.76 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(expect/tcl-debug.ps)]TJ/F1 10.91 Tf 108.82 0 TD[('.)]TJ ET 0 g 0 G
-endstream
-endobj
-102 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F6 46 0 R
-/F11 97 0 R
-/F12 100 0 R
->>
-endobj
-94 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 102 0 R
->>
-endobj
-105 0 obj
-<<
-/Length 117
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(14)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ ET 0 g 0 G
-endstream
-endobj
-106 0 obj
-<<
-/F1 9 0 R
->>
-endobj
-104 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 106 0 R
->>
-endobj
-109 0 obj
-<<
-/Length 8271
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(4:)-444(Setting)]TJ/F4 10.91 Tf 93.36 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(defaults)-22611(15)]TJ/F2 17.22 Tf -137.09 -25.91 TD[(4)-562(Setting)]TJ/F10 17.22 Tf 86.31 0 TD[(runtest)]TJ/F2 17.22 Tf 68.46 0 TD[(defaults)]TJ/F1 10.91 Tf -139.83 -28.09 TD[(The)-513(site)-514(con\014guration)-514(\014le,)-558(`)]TJ/F4 10.91 Tf 140.58 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-558(captures)-514(con\014guration-dep)-28(enden)27(t)-513(v)55(alues)-513(and)]TJ -201.34 -13.15 TD[(propagates)-386(them)-387(to)-387(the)-387(DejaGn)27(u)-386(test)-386(en)27(vironmen)27(t)-385(using)-387(Tcl)-387(v)55(ariables.)-604(This)-387(ties)-387(the)-386(De-)]TJ 0 -13.15 TD[(jaGn)27(u)-332(test)-333(scripts)-334(in)27(to)-332(the)]TJ/F4 10.91 Tf 129.68 0 TD[(configure)]TJ/F1 10.91 Tf 55.18 0 TD[(and)]TJ/F4 10.91 Tf 21.22 0 TD[(make)]TJ/F1 10.91 Tf 26.54 0 TD[(programs.)]TJ -217.68 -16.14 TD[(DejaGn)27(u)-332(supp)-28(orts)-334(more)-333(than)-334(one)-334(`)]TJ/F4 10.91 Tf 166.49 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(\014le.)-445(The)-334(m)27(ultiple)-333(instances)-334(of)-333(`)]TJ/F4 10.91 Tf 155.9 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')]TJ -428.97 -13.15 TD[(are)-326(loaded)-326(in)-326(a)-326(\014xed)-326(order)-326(built)-326(in)27(to)-326(DejaGn)27(u)-325(\(the)-326(more)-326(lo)-28(cal)-326(last\).)-442(The)-326(\014rst)-326(\014le)-326(loaded)-326(is)]TJ 0 -13.15 TD[(the)-333(optional)]TJ/F4 10.91 Tf 61.21 0 TD[(~/.dejagnurc)]TJ/F1 10.91 Tf 68.73 0 TD[(,)-333(then)-333(the)-333(lo)-28(cal)-334(\014les,)-333(and)-333(\014nally)-334(the)-333(global)-333(\014le.)]TJ -124.03 -16.14 TD[(1.)-660(There)-256(is)-256(am)-257(optional)-256(\\master")-257(`)]TJ/F4 10.91 Tf 164.41 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-271(capturing)-257(con\014guration)-256(v)54(alues)-255(that)-257(apply)-256(to)]TJ -194.54 -13.15 TD[(DejaGn)27(u)-342(across)-342(the)-343(b)-28(oard,)-345(in)-343(eac)27(h)-342(con\014guration-sp)-28(eci\014c)-343(sub)-28(directory)-343(of)-342(the)-343(DejaGn)26(u)]TJ 0 -13.15 TD[(library)-364(directory)83(.)]TJ/F4 10.91 Tf 86.62 0 TD[(runtest)]TJ/F1 10.91 Tf 44.06 0 TD[(loads)-364(these)-364(v)55(alues)-363(\014rst.)-537(See)-364(App)-28(endix)-364(A)-364([Con\014guring)-364(and)]TJ -130.68 -13.15 TD[(Installing)-390(DejaGn)27(u],)-404(page)-391(49.)-617(The)-390(master)-391(`)]TJ/F4 10.91 Tf 211 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-390(con)27(tains)-390(the)-391(default)-391(v)55(alues)-390(for)]TJ -256.82 -13.15 TD[(all)-386(targets)-386(and)-387(hosts)-386(supp)-28(orted)-386(b)26(y)-385(DejaGn)27(u.)-603(This)-386(master)-387(\014le)-386(is)-387(iden)27(ti\014ed)-385(b)26(y)-385(setting)]TJ 0 -13.15 TD[(the)-298(en)27(vironmen)27(t)-297(v)54(ariable)]TJ/F4 10.91 Tf 121.35 0 TD[(DEJAGNU)]TJ/F1 10.91 Tf 43.35 0 TD[(to)-298(the)-299(name)-298(of)-299(the)-298(\014le.)-433(This)-299(is)-298(also)-299(refered)-299(to)-298(as)-299(the)]TJ -164.7 -13.16 TD[(\\global")-333(con\014g)-333(\014le.)]TJ -15.69 -16.14 TD[(2.)-660(An)27(y)-334(directory)-336(con)27(taining)-334(a)-336(con\014gured)-335(test)-336(suite)-335(also)-335(has)-336(a)-335(`)]TJ/F4 10.91 Tf 301.4 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-335(capturing)-336(con-)]TJ -331.53 -13.15 TD[(\014guration)-325(v)55(alues)-324(sp)-28(eci\014c)-326(to)-325(the)-325(to)-28(ol)-325(under)-325(test.)-442(Since)]TJ/F4 10.91 Tf 258.6 0 TD[(runtest)]TJ/F1 10.91 Tf 43.64 0 TD[(loads)-325(these)-325(v)55(alues)-325(last,)]TJ -302.24 -13.15 TD[(the)-435(individual)-435(test)-436(con\014guration)-435(can)-436(either)-435(rely)-436(on)-435(and)-436(use,)-461(or)-435(o)27(v)27(erride,)-460(an)27(y)-434(of)-436(the)]TJ 0 -13.15 TD[(global)-333(v)55(alues)-333(from)-333(the)-333(\\master")-334(`)]TJ/F4 10.91 Tf 158.97 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[('.)]TJ -204.79 -16.14 TD[(Y)83(ou)-261(can)-261(usually)-261(generate)-262(or)-261(up)-28(date)-261(the)-262(testsuite)-261(`)]TJ/F4 10.91 Tf 232.76 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.81 0 TD[(')-261(b)27(y)-261(t)27(yping)-260(`)]TJ/F4 10.91 Tf 56.44 0 TD[(make)-333(site.exp)]TJ/F1 10.91 Tf 72.36 0 TD[(')]TJ -407.37 -13.15 TD[(in)-333(the)-333(test)-333(suite)-334(directory)83(,)-333(after)-333(the)-333(test)-334(suite)-333(is)-333(con\014gured.)]TJ -15.69 -16.14 TD[(3.)-660(Y)83(ou)-371(can)-373(also)-372(ha)27(v)28(e)-372(a)-372(\014le)-372(in)-372(y)26(our)-371(home)-372(directory)-372(called)]TJ/F4 10.91 Tf 280.51 0 TD[(.dejagnurc)]TJ/F1 10.91 Tf 57.28 0 TD[(.)-561(This)-372(gets)-372(loaded)]TJ -322.1 -13.15 TD[(\014rst)-410(b)-28(efore)-410(the)-410(other)-410(con\014g)-411(\014les.)-675(Usually)-410(this)-411(is)-410(used)-410(for)-410(p)-28(ersonal)-411(stu\013,)-429(lik)27(e)-410(setting)]TJ/F4 10.91 Tf 0 -13.15 TD[(all_flag)]TJ/F1 10.91 Tf 49.45 0 TD[(so)-333(all)-333(the)-333(output)-334(gets)-333(prin)27(ted,)-333(or)-333(v)27(erb)-27(osit)27(y)-333(lev)27(els.)]TJ -56.11 -19.13 TD[(Y)83(ou)-318(can)-318(further)-318(o)27(v)27(erride)-317(the)-318(default)-319(v)55(alues)-317(in)-319(a)-318(user-editable)-319(section)-318(of)-318(an)27(y)-318(`)]TJ/F4 10.91 Tf 365.18 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)]TJ -425.94 -13.15 TD[(or)-333(b)27(y)-332(setting)-334(v)55(ariables)-332(on)-334(the)]TJ/F4 10.91 Tf 143.52 0 TD[(runtest)]TJ/F1 10.91 Tf 43.72 0 TD[(command)-333(line.)]TJ/F2 13.09 Tf -187.24 -26.9 TD[(4.0.1)-562(Con\014g)-375(V)93(ariables)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(DejaGn)27(u)-380(uses)-381(a)-381(named)-381(arra)27(y)-380(in)-381(Tcl)-381(to)-381(hold)-381(all)-381(the)-381(info)-381(for)-382(eac)27(h)-380(mac)27(hine.)-587(In)-381(the)-381(case)]TJ -14.94 -13.15 TD[(of)-324(a)-324(canadian)-325(cross,)-326(this)-325(means)-324(host)-324(information)-325(as)-324(w)26(ell)-323(as)-324(target)-325(information.)-441(The)-325(named)]TJ 0 -13.15 TD[(arra)27(y)-405(is)-407(called)]TJ/F4 10.91 Tf 72.82 0 TD[(target_info)]TJ/F1 10.91 Tf 63 0 TD[(,)-424(and)-407(it)-407(has)-406(t)27(w)27(o)-405(indices.)-665(The)-406(follo)27(wing)-406(\014elds)-407(are)-406(part)-407(of)-406(the)]TJ -135.82 -13.15 TD[(arra)27(y)84(.)]TJ/F4 10.91 Tf 0 -19.13 TD[(name)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-395(name)-396(of)-395(the)-396(target.)-631(\(mostly)-396(for)-395(error)-396(messages\))-395(This)-396(should)-396(also)-395(b)-28(e)-396(the)]TJ 0 -13.15 TD[(string)-273(used)-273(for)-273(this)-274(target's)-273(arra)27(y)83(.)-423(It)-274(should)-273(also)-273(b)-28(e)-273(the)-274(same)-273(as)-273(the)-273(link)26(er)-272(script)]TJ 0 -13.15 TD[(so)-411(w)26(e)-410(can)-412(\014nd)-412(them)-412(dynamically)82(.)-679(This)-412(should)-412(b)-27(e)-412(the)-412(same)-412(as)-412(the)-412(argumen)27(t)]TJ 0 -13.15 TD[(used)-333(for)]TJ/F4 10.91 Tf 41.61 0 TD[(push_target{})]TJ/F1 10.91 Tf 74.45 0 TD[(.)]TJ/F4 10.91 Tf -173.66 -19.13 TD[(ldflags)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-509(is)-510(the)-510(link)27(er)-509(\015ags)-510(required)-509(to)-510(pro)-28(duce)-510(a)-509(fully)-510(link)27(ed)-509(executable.)-974(F)83(or)]TJ/F4 10.91 Tf 0 -13.15 TD[(libgloss)]TJ/F1 10.91 Tf 49.45 0 TD[(supp)-27(orted)-334(targets)-333(this)-333(is)-334(usually)-333(just)-333(the)-334(name)-333(of)-333(the)-334(link)27(er)-332(script.)]TJ/F4 10.91 Tf -107.05 -19.13 TD[(config)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-414(target)-415(canonical)-415(for)-415(this)-415(target.)-690(This)-415(is)-415(used)-415(b)27(y)-414(some)-415(init)-415(\014les)-415(to)-415(mak)27(e)]TJ 0 -13.15 TD[(sure)-333(the)-333(target)-333(is)-334(supp)-28(orted.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(cflags)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-333(\015ags)-333(required)-333(to)-334(pro)-28(duce)-333(an)-333(ob)-56(ject)-333(\014le)-333(from)-334(a)-333(source)-333(\014le.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(connect)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-337(is)-338(the)-337(connectmo)-28(de)-337(for)-338(this)-337(target.)-458(This)-337(is)-338(for)-337(b)-28(oth)-337(IP)-338(and)-337(serial)-338(connec-)]TJ 0 -13.15 TD[(tions.)-444(T)27(ypically)-332(this)-334(is)-333(either)]TJ/F4 10.91 Tf 142.33 0 TD[(telnet)]TJ/F1 10.91 Tf 34.37 0 TD[(,)]TJ/F4 10.91 Tf 6.66 0 TD[(rlogin)]TJ/F1 10.91 Tf 34.37 0 TD[(,)-333(or)]TJ/F4 10.91 Tf 20.03 0 TD[(rsh)]TJ/F1 10.91 Tf 17.18 0 TD[(.)]TJ ET 0 g 0 G
-endstream
-endobj
-110 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F2 12 0 R
-/F10 78 0 R
->>
-endobj
-108 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 110 0 R
->>
-endobj
-113 0 obj
-<<
-/Length 6054
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(16)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F4 10.91 Tf 0 -23.91 TD[(target)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-310(is)-310(the)-310(hostname)-311(of)-310(the)-310(target.)-437(This)-310(is)-310(for)-311(TCP/IP)-310(based)-310(connections,)-315(and)]TJ 0 -13.15 TD[(is)-333(also)-333(used)-333(for)-334(v)27(ersion)-332(of)-334(tip)-333(that)-333(use)-334(/etc/remote.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(serial)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(is)-333(the)-333(serial)-334(p)-28(ort.)-444(This)-333(is)-334(t)27(ypically)-332(/dev/tt)27(y?)-444(or)-333(com?:.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(netport)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-334(is)-334(the)-334(IP)-334(p)-28(ort.)-446(This)-334(is)-334(commonly)-334(used)-334(for)-334(telneting)-334(to)-335(target)-334(b)-27(oards)-334(that)]TJ 0 -13.15 TD[(are)-309(connected)-310(to)-310(a)-310(terminal)-310(serv)27(er.)-435(In)-310(that)-310(case)-310(the)-310(IP)-310(p)-27(ort)-310(sp)-28(eci\014es)-310(the)-310(whic)27(h)]TJ 0 -13.15 TD[(serial)-333(p)-28(ort)-333(to)-333(use.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(baud)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(is)-333(the)-333(baud)-334(rate)-333(for)-333(a)-334(serial)-333(p)-28(ort)-333(connection.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(x10)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-340(is)-340(the)-340(parameters)-340(for)-341(an)-340(x10)-340(con)27(troller.)-464(These)-341(are)-340(simple)-340(devices)-340(that)-340(let)]TJ 0 -13.15 TD[(us)-333(p)-28(o)27(w)28(er)-332(cycle)-334(or)-333(reset)-333(a)-334(target)-333(b)-28(oard)-333(remotely)82(.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(fileid)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(is)-333(the)-333(\014leid)-334(or)-333(spa)27(wn)-333(id)-333(of)-333(of)-334(the)-333(connection.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(prompt)]TJ/F1 10.91 Tf 57.6 0 TD[(a)-333(glob)-333(st)27(yle)-333(pattern)-333(to)-333(recognize)-334(the)-333(prompt.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(abbrev)]TJ/F1 10.91 Tf 57.6 0 TD[(abbreviation)-333(for)-333(to)-28(ol)-333(init)-334(\014les.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(ioport)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-350(is)-350(the)-350(p)-28(ort)-350(for)-351(I/O)-350(on)-350(dual)-351(p)-27(ort)-351(systems.)-495(In)-350(this)-351(con\014guration,)-354(the)-350(main)]TJ 0 -13.15 TD[(serial)-351(p)-28(ort)]TJ/F4 10.91 Tf 52.95 0 TD[(0)]TJ/F1 10.91 Tf 9.57 0 TD[(is)-351(usually)-352(used)-352(for)-352(stdin)-352(and)-352(stdout,)-356(whic)26(h)-350(the)-352(second)-352(serial)-352(p)-28(ort)]TJ -62.52 -13.15 TD[(can)-333(b)-28(e)-333(used)-333(for)-334(debugging.)]TJ -42.66 -19.13 TD[(The)-302(\014rst)-303(index)-302(in)27(to)-302(the)-302(arra)26(y)-301(is)-303(the)-302(same)-303(v)55(alue)-302(as)-302(used)-303(in)-302(the)]TJ/F4 10.91 Tf 294.18 0 TD[(name)]TJ/F1 10.91 Tf 26.21 0 TD[(\014eld.)-434(This)-302(is)-303(usually)]TJ -335.33 -13.15 TD[(a)-359(short)-360(v)27(ersion)-359(of)-360(the)-359(name)-360(of)-360(the)-360(target)-359(b)-28(oard.)-524(F)83(or)-359(an)-360(example,)-366(here's)-360(the)-360(settings)-360(I)-359(use)]TJ 0 -13.15 TD[(for)-347(m)26(y)]TJ/F4 10.91 Tf 35.19 0 TD[(Motorola's)-347(IDP)]TJ/F1 10.91 Tf 82.05 0 TD[(b)-27(oard)-348(and)-348(m)27(y)]TJ/F4 10.91 Tf 71.11 0 TD[(Motorola)]TJ/F1 10.91 Tf 49.61 0 TD[(6U)-347(VME)]TJ/F4 10.91 Tf 46.83 0 TD[(MVME135-1)]TJ/F1 10.91 Tf 55.34 0 TD[(b)-27(oard.)-488(\(b)-28(oth)-348(m68k)]TJ -340.13 -13.15 TD[(targets\))]TJ/F9 9.96 Tf 0 -10.05 TD[(\013)]TJ ET 23.98 -310.52 m 450.40 -310.52 l 450.40 -310.12 l 23.98 -310.12 l b BT 456.38 -310.52 TD[(\010)]TJ ET 18.00 -570.92 m 18.40 -570.92 l 18.40 -316.25 l 18.00 -316.25 l b BT/F4 10.91 Tf 21.39 -328.9 TD[(#)-524(IDP)-525(board)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,name\))-3675("idp")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,ldflags\))-2100("-Tidp.ld")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,config\))-2625(m68k-unknown-aout)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,cflags\))-2625("")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,connect\))-2100(telnet)]TJ 0 -12.46 TD[(set)-524(target_info\(idp,target\))-2625("s7")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,serial\))-2625("tstty7")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,netport\))-2100("wharfrat:1007")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,baud\))-3675("9600")]TJ 0 -12.45 TD[(#)-524(MVME)-525(135)-525(board)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,name\))-3675("mvme")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,ldflags\))-2100("-Tmvme.ld")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,config\))-2625(m68k-unknown-aout)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,cflags\))-2625("")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,connect\))-2100(telnet)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,target\))-2625("s8")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,serial\))-2625("tstty8")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,netport\))-2100("wharfrat:1008")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,baud\))-3675("9600")]TJ ET 456.38 -570.92 m 456.77 -570.92 l 456.77 -316.25 l 456.38 -316.25 l b BT/F9 9.96 Tf 18 -577.15 TD[(\012)]TJ ET 23.98 -577.15 m 450.40 -577.15 l 450.40 -576.75 l 23.98 -576.75 l b BT 456.38 -577.15 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(DejaGn)27(u)-403(can)-404(use)-405(this)-404(information)-404(to)-405(switc)27(h)-403(b)-28(et)27(w)27(een)-403(m)27(ultiple)-403(targets)-405(in)-404(one)-405(test)-404(run.)]TJ -14.94 -13.15 TD[(This)-333(is)-333(done)-333(through)-334(the)-333(use)-333(of)-334(the)]TJ/F4 10.91 Tf 172.03 0 TD[(push_target)]TJ/F1 10.91 Tf 66.64 0 TD[(pro)-27(cedure,)-334(whic)27(h)-332(is)-334(discussed)-333(elsewhere.)]TJ -223.73 -16.14 TD[(This)-409(arra)27(y)-408(can)-409(also)-409(hold)-409(information)-409(for)-409(a)-409(remote)-409(host,)-428(whic)26(h)-408(is)-409(used)-409(when)-409(testing)-409(a)]TJ -14.94 -13.15 TD[(candain)-397(cross.)-639(In)-398(this)-398(case,)-414(the)-398(only)-398(thing)-398(di\013eren)27(t)-397(is)-398(the)-398(index)-397(is)-398(just)]TJ/F4 10.91 Tf 350.12 0 TD[(host)]TJ/F1 10.91 Tf 22.91 0 TD[(.)-638(Here's)-398(the)]TJ ET 0 g 0 G
-endstream
-endobj
-114 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F9 59 0 R
->>
-endobj
-112 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 114 0 R
->>
-endobj
-117 0 obj
-<<
-/Length 7261
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(4:)-444(Setting)]TJ/F4 10.91 Tf 93.36 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(defaults)-22611(17)]TJ -137.09 -23.91 TD[(settings)-348(I)-348(use)-349(to)-348(run)-348(tests)-349(on)-348(m)27(y)-348(NT)-348(mac)27(hine)-347(while)-349(running)-348(DejaGn)27(u)-348(on)-348(a)-348(Unix)-349(mac)27(hine.)]TJ 0 -13.15 TD[(\(in)-333(this)-333(case)-333(a)-334(Lin)27(ux)-332(b)-28(o)27(x\))]TJ/F9 9.96 Tf 0 -10.05 TD[(\013)]TJ ET 23.98 -33.16 m 450.40 -33.16 l 450.40 -32.76 l 23.98 -32.76 l b BT 456.38 -33.16 TD[(\010)]TJ ET 18.00 -95.22 m 18.40 -95.22 l 18.40 -38.89 l 18.00 -38.89 l b BT/F4 10.91 Tf 21.39 -52.44 TD[(set)-524(target_info\(host,name\))-3150("nt-host")]TJ 0 -12.46 TD[(set)-524(target_info\(host,config\))-2100("386-unknown-winnt")]TJ 0 -12.45 TD[(set)-524(target_info\(host,connect\))-1575("telnet")]TJ 0 -12.45 TD[(set)-524(target_info\(host,target\))-2100("ripple")]TJ ET 456.38 -95.22 m 456.77 -95.22 l 456.77 -38.89 l 456.38 -38.89 l b BT/F9 9.96 Tf 18 -101.44 TD[(\012)]TJ ET 23.98 -101.44 m 450.40 -101.44 l 450.40 -101.05 l 23.98 -101.05 l b BT 456.38 -101.44 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(There)-347(is)-347(more)-348(info)-347(on)-347(ho)27(w)-347(to)-347(use)-347(these)-348(v)55(ariables)-347(in)-347(the)-347(sections)-348(on)-347(the)-347(con\014g)-348(\014les.)-486(See)]TJ -14.94 -13.15 TD[(Chapter)-333(4)-333([Con\014guration)-333(Files],)-334(page)-333(18.)]TJ 14.94 -16.14 TD[(In)-419(the)-419(user)-420(editable)-419(second)-420(section)-419(of)-420(`)]TJ/F4 10.91 Tf 190.43 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-440(y)26(ou)-418(can)-420(not)-419(only)-420(o)27(v)28(erride)-418(the)-420(con-)]TJ -251.19 -13.15 TD[(\014guration)-358(v)55(ariables)-358(captured)-358(in)-359(the)-358(\014rst)-359(section,)-365(but)-358(also)-359(sp)-27(ecify)-359(default)-358(v)54(alues)-357(for)-359(all)-358(the)]TJ/F4 10.91 Tf 0 -13.15 TD[(runtest)]TJ/F1 10.91 Tf 43.78 0 TD[(command)-337(line)-338(options.)-458(Sa)27(v)28(e)-337(for)-338(`)]TJ/F4 10.91 Tf 158 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(',)-338(`)]TJ/F4 10.91 Tf 12.79 0 TD[(--help)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-338(and)-338(`)]TJ/F4 10.91 Tf 34.05 0 TD[(--version)]TJ/F1 10.91 Tf 51.55 0 TD[(',)-338(eac)26(h)-336(com-)]TJ -374.62 -13.16 TD[(mand)-395(line)-395(option)-395(has)-395(an)-395(asso)-28(ciated)-395(Tcl)-395(v)55(ariable.)-629(Use)-395(the)-395(Tcl)]TJ/F4 10.91 Tf 303.88 0 TD[(set)]TJ/F1 10.91 Tf 21.49 0 TD[(command)-395(to)-395(sp)-27(ecify)-396(a)]TJ -325.37 -13.15 TD[(new)-427(default)-427(v)54(alue)-426(\(as)-427(for)-428(the)-427(con\014guration)-428(v)55(ariables\).)-726(The)-427(follo)27(wing)-427(table)-427(describ)-28(es)-427(the)]TJ 0 -13.15 TD[(corresp)-27(ondence)-445(b)-28(et)27(w)27(een)-444(command)-445(line)-445(options)-446(and)-445(v)55(ariables)-444(y)26(ou)-444(can)-445(set)-445(in)-445(`)]TJ/F4 10.91 Tf 380.12 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[('.)]TJ -425.94 -13.15 TD[(See)-333(Chapter)-333(3)-333([Running)-334(the)-333(T)82(ests],)-332(page)-333(9,)-334(for)-333(explanations)-333(of)-334(the)-333(command-line)-333(options.)]TJ/F8 10.91 Tf 23.96 -16.97 TD[(runtest)-2049(Tcl)]TJ 3.48 -13.15 TD[(option)-2049(variable)-4342(description)]TJ ET 18.00 -261.39 m 450.00 -261.39 l 450.00 -260.99 l 18.00 -260.99 l b BT/F4 10.91 Tf 40.91 -274.54 TD[(--all)-2574(all)]TJ ET 115.50 -274.54 m 118.94 -274.54 l 118.94 -274.07 l 115.50 -274.07 l b BT 118.94 -274.54 TD[(flag)]TJ/F1 10.91 Tf 63 0 TD[(displa)27(y)-332(all)-333(test)-334(results)-333(if)-333(set)]TJ/F4 10.91 Tf -146.76 -13.15 TD[(--baud)-2574(baud)]TJ/F1 10.91 Tf 146.76 0 TD[(set)-333(the)-333(default)-333(baud)-334(rate)-333(to)-333(something)]TJ 0 -13.15 TD[(other)-333(than)-333(9600.)]TJ/F4 10.91 Tf -163.94 -12.51 TD[(--connect)-2574(connectmode)]TJ/F1 10.91 Tf 163.94 0 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(rlogin)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(telnet)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(rsh)]TJ/F1 10.91 Tf 17.18 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(kermit)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(',)]TJ -191.39 -13.15 TD[(or)-333(`)]TJ/F4 10.91 Tf 16.39 0 TD[(mondfe)]TJ/F1 10.91 Tf 34.37 0 TD[(')]TJ/F4 10.91 Tf -197.52 -14.24 TD[(--mail)-2574(mailing)]TJ ET 138.41 -340.74 m 141.85 -340.74 l 141.85 -340.27 l 138.41 -340.27 l b BT 141.85 -340.74 TD[(list)]TJ/F1 10.91 Tf 40.09 0 TD[(address)-333(list)-333(for)-333(mailing)-334(test)-333(output)]TJ/F4 10.91 Tf -146.76 -13.15 TD[(--name)-2574(targetname)]TJ/F1 10.91 Tf 146.76 0 TD[(net)27(w)28(ork)-332(name)-334(of)-333(testing)-333(target)-333(or)-334(its)]TJ 0 -13.15 TD[(host)]TJ/F4 10.91 Tf -158.21 -14.25 TD[(--outdir)-2574(outdir)]TJ/F1 10.91 Tf 158.21 0 TD[(directory)-333(for)-333(`)]TJ/F5 10.91 Tf 66.15 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.sum)]TJ/F1 10.91 Tf 22.9 0 TD[(')-333(and)-333(`)]TJ/F5 10.91 Tf 30.91 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.log)]TJ/F1 10.91 Tf 22.91 0 TD[(')]TJ/F4 10.91 Tf -338.06 -13.15 TD[(--objdir)-2574(objdir)]TJ/F1 10.91 Tf 158.21 0 TD[(directory)-333(for)-333(compiled)-333(binaries)]TJ/F4 10.91 Tf -158.21 -13.15 TD[(--reboot)-2574(reboot)]TJ/F1 10.91 Tf 158.21 0 TD[(reb)-27(o)-28(ot)-333(the)-334(target)-333(if)-333(set)-334(to)]TJ/F4 10.91 Tf 125.88 0 TD[("1")]TJ/F1 10.91 Tf 17.18 0 TD[(;)-333(do)-333(not)]TJ -143.06 -13.15 TD[(reb)-27(o)-28(ot)-333(if)-334(set)-333(to)]TJ/F4 10.91 Tf 74.94 0 TD[("0")]TJ/F1 10.91 Tf 20.82 0 TD[(\(the)-333(default\))]TJ/F4 10.91 Tf -253.97 -14.25 TD[(--srcdir)-2574(srcdir)]TJ/F1 10.91 Tf 158.21 0 TD[(directory)-333(of)-333(test)-333(sub)-28(directories)]TJ/F4 10.91 Tf -158.21 -13.15 TD[(--strace)-2574(tracelevel)]TJ/F1 10.91 Tf 158.21 0 TD[(a)-333(n)27(um)28(b)-27(er:)-500(Tcl)-333(trace)-334(depth)]TJ/F4 10.91 Tf -146.76 -13.15 TD[(--tool)-2574(tool)]TJ/F1 10.91 Tf 146.76 0 TD[(name)-333(of)-333(to)-28(ol)-333(to)-333(test;)-334(iden)27(ti\014es)-332(init,)-334(test)]TJ 0 -13.15 TD[(sub)-27(dir)]TJ/F4 10.91 Tf -163.94 -12.51 TD[(--verbose)-2574(verbose)]TJ/F1 10.91 Tf 163.94 0 TD[(v)27(erb)-26(osit)26(y)-332(lev)27(el.)-499(As)-334(option,)-333(use)-333(m)27(ultiple)]TJ 0 -13.15 TD[(times;)-333(as)-333(v)54(ariable,)-332(set)-333(a)-333(n)26(um)28(b)-27(er,)-333(0)-333(or)]TJ 0 -13.15 TD[(greater)]TJ/F4 10.91 Tf -158.21 -12.51 TD[(--target)-2574(target)]TJ ET 132.69 -525.76 m 136.12 -525.76 l 136.12 -525.29 l 132.69 -525.29 l b BT 136.12 -525.76 TD[(triplet)]TJ/F1 10.91 Tf 45.82 0 TD[(The)-333(canonical)-333(con\014guration)-333(string)-334(for)]TJ 0 -13.15 TD[(the)-333(target.)]TJ/F4 10.91 Tf -146.76 -12.5 TD[(--host)-2574(host)]TJ ET 121.23 -551.41 m 124.67 -551.41 l 124.67 -550.95 l 121.23 -550.95 l b BT 124.67 -551.41 TD[(triplet)]TJ/F1 10.91 Tf 57.27 0 TD[(The)-333(canonical)-333(con\014guration)-333(string)-334(for)]TJ 0 -13.16 TD[(the)-333(host.)]TJ/F4 10.91 Tf -152.49 -12.5 TD[(--build)-2574(build)]TJ ET 126.96 -577.07 m 130.40 -577.07 l 130.40 -576.60 l 126.96 -576.60 l b BT 130.4 -577.07 TD[(triplet)]TJ/F1 10.91 Tf 51.54 0 TD[(The)-333(canonical)-333(con\014guration)-333(string)-334(for)]TJ 0 -13.15 TD[(the)-333(build)-333(host.)]TJ ET 0 g 0 G
-endstream
-endobj
-118 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F9 59 0 R
-/F8 52 0 R
-/F5 31 0 R
->>
-endobj
-116 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 118 0 R
->>
-endobj
-121 0 obj
-<<
-/Length 5295
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(18)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 13.09 Tf 0 -23.91 TD[(4.0.2)-562(Master)-375(Con\014g)-375(File)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(The)-322(master)-323(con\014g)-322(\014le)-323(is)-322(where)-323(all)-322(the)-323(target)-322(sp)-28(eci\014c)-323(con\014g)-322(v)54(ariables)-321(get)-323(set)-322(for)-323(a)-322(whole)]TJ -14.94 -13.15 TD[(site)-427(get)-427(set.)-726(The)-427(idea)-427(is)-427(that)-428(for)-427(a)-427(cen)27(tralized)-426(testing)-428(lab)-427(where)-427(p)-28(eople)-427(ha)27(v)28(e)-427(to)-427(share)-427(a)]TJ 0 -13.15 TD[(target)-321(b)-27(et)26(w)28(een)-320(m)27(ultiple)-320(dev)27(elop)-27(ers.)-441(There)-321(are)-321(settings)-321(for)-321(b)-28(oth)-321(remote)-321(targets)-321(and)-321(remote)]TJ 0 -13.15 TD[(hosts.)-562(Here's)-373(an)-373(example)-373(of)-372(a)-373(Master)-373(Con\014g)-373(File)-372(\(also)-373(called)-373(the)-373(Global)-372(con\014g)-373(\014le\))-373(for)-373(a)]TJ/F8 10.91 Tf 0 -13.15 TD[(c)51(anadian)-333(cr)50(oss)]TJ/F1 10.91 Tf 69.57 0 TD[(.)-435(A)-307(canadian)-308(cross)-307(is)-307(when)-307(y)27(ou)-307(build)-307(and)-307(test)-307(a)-307(cross)-307(compiler)-308(on)-307(a)-307(mac)27(hine)]TJ -69.57 -13.15 TD[(other)-333(than)-333(the)-333(one)-334(it's)-333(to)-333(b)-28(e)-334(hosted)-333(on.)]TJ 14.94 -16.14 TD[(Here)-314(w)27(e)-313(ha)26(v)28(e)-313(the)-314(con\014g)-315(settings)-314(for)-314(our)-315(California)-314(o\016ce.)-438(Note)-314(that)-315(all)-314(con\014g)-314(v)54(alues)-313(are)]TJ -14.94 -13.15 TD[(site)-398(dep)-27(endan)26(t.)-638(Here)-398(w)27(e)-397(ha)26(v)28(e)-397(t)27(w)28(o)-398(sets)-398(of)-398(v)54(alues)-397(that)-398(w)27(e)-397(use)-399(for)-398(testing)-398(m68k-aout)-398(cross)]TJ 0 -13.15 TD[(compilers.)-628(As)-395(b)-28(oth)-394(of)-395(these)-395(target)-394(b)-28(oards)-395(has)-394(a)-395(di\013eren)27(t)-394(debugging)-395(proto)-28(col,)-410(w)27(e)-394(test)-394(on)]TJ 0 -13.15 TD[(b)-27(oth)-334(of)-333(them)-333(in)-334(sequence.)]TJ/F9 9.96 Tf 0 -9.44 TD[(\013)]TJ ET 23.98 -163.86 m 450.40 -163.86 l 450.40 -163.47 l 23.98 -163.47 l b BT 456.38 -163.86 TD[(\010)]TJ ET 18.00 -559.73 m 18.40 -559.73 l 18.40 -169.59 l 18.00 -169.59 l b BT/F4 10.91 Tf 21.39 -182.24 TD[(global)-524(CFLAGS)]TJ 0 -12.45 TD[(global)-524(CXXFLAGS)]TJ 0 -24.91 TD[(case)-524("$target_triplet")-525(in)-525({)]TJ 22.91 -12.45 TD[({)-524("native")-525(})-525({)]TJ 22.9 -12.45 TD[(set)-524(target_abbrev)-525(unix)]TJ -22.9 -12.46 TD[(})]TJ 0 -12.45 TD[({)-524("m68*-unknown-aout")-525(})-525({)]TJ 22.9 -12.45 TD[(set)-524(target_abbrev)-7875("rom68k")]TJ 0 -12.46 TD[(#)-524(IDP)-525(target)-10500(#)-525(IDP)-525(board)-525(with)-525(rom68k)-525(monitor)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,name\))-3675("idp")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,ldflags\))-2100("-Tidp.ld")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,config\))-2625(m68k-unknown-aout)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,cflags\))-2625("")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,connect\))-2100(telnet)]TJ 0 -12.46 TD[(set)-524(target_info\(idp,target\))-2625("s7")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,serial\))-2625("tstty12")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,netport\))-2100("truckin:1007")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,baud\))-3675("9600")]TJ 0 -12.45 TD[(#)-524(MVME)-525(target)-9975(#)-525(Motorola)-525(MVME)-525(135)-525(with)-525(BUG)-525(monitor)]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,name\))-3150("mvme")]TJ 0 -12.46 TD[(set)-524(target_info\(mvme,ldflags\))-1575("-Tmvme.ld")]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,config\))-2100(m68k-unknown-aout)]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,cflags\))-2100("")]TJ 0 -12.46 TD[(set)-524(target_info\(mvme,connect\))-1575(telnet)]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,target\))-2100("s4")]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,serial\))-2100("tstty8")]TJ 0 -12.46 TD[(set)-524(target_info\(mvme,netport\))-1575("truckin:1004")]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,baud\))-3150("9600")]TJ -17.18 -12.45 TD[(})]TJ -28.63 -12.46 TD[(})]TJ ET 456.38 -559.73 m 456.77 -559.73 l 456.77 -169.59 l 456.38 -169.59 l b BT/F9 9.96 Tf 18 -565.96 TD[(\012)]TJ ET 23.98 -565.96 m 450.40 -565.96 l 450.40 -565.56 l 23.98 -565.56 l b BT 456.38 -565.96 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(In)-310(this)-311(case,)-316(w)27(e)-310(ha)27(v)28(e)-310(supp)-28(ort)-311(for)-311(sev)27(eral)-310(remote)-311(hosts)-311(for)-311(our)-311(m68k-aout)-311(cross)-311(compiler.)]TJ -14.94 -13.15 TD[(T)27(ypically)-341(the)-343(remote)-342(Unix)-343(hosts)-343(run)-342(DejaGn)27(u)-342(lo)-28(cally)82(,)-343(but)-343(w)27(e)-342(also)-342(use)-343(them)-343(for)-342(debugging)]TJ 0 -13.15 TD[(the)-291(testsuites)-292(when)-291(w)26(e)-290(\014nd)-292(problems)-292(in)-291(running)-292(on)-292(remote)-291(hosts.)-431(Exp)-28(ect)-291(w)26(on't)-290(run)-292(on)-292(NT,)]TJ 0 -13.15 TD[(so)-327(DejaGn)27(u)-326(is)-327(run)-327(on)-328(the)-327(lo)-28(cal)-327(build)-327(mac)27(hine,)-327(and)-328(it'll)-327(connect)-327(to)-327(the)-327(NT)-327(host)-328(and)-327(run)-327(all)]TJ 0 -13.15 TD[(the)-333(tests)-333(for)-333(this)-334(cross)-333(compiler)-333(on)-334(that)-333(host.)]TJ ET 0 g 0 G
-endstream
-endobj
-122 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F8 52 0 R
-/F9 59 0 R
-/F4 28 0 R
->>
-endobj
-120 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 122 0 R
->>
-endobj
-125 0 obj
-<<
-/Length 5912
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(4:)-444(Setting)]TJ/F4 10.91 Tf 93.36 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(defaults)-22611(19)]TJ/F9 9.96 Tf -108.29 -20.18 TD[(\013)]TJ ET 52.78 -6.23 m 450.40 -6.23 l 450.40 -5.83 l 52.78 -5.83 l b BT 456.38 -6.23 TD[(\010)]TJ ET 46.80 -367.53 m 47.20 -367.53 l 47.20 -11.96 l 46.80 -11.96 l b BT/F4 10.91 Tf 50.19 -27.4 TD[(case)-524("$host_triplet")-525(in)-525({)]TJ 22.91 -12.45 TD[("native")-524({)]TJ 0 -12.45 TD[(})]TJ 0 -12.46 TD[("i?86-*-linux*")-524({)-9975(#)-525(Linux)-525(host)]TJ 22.9 -12.45 TD[(set)-524(target_info\(host,name\))-3150("linux-host")]TJ 0 -12.45 TD[(set)-524(target_info\(host,config\))-2100($host_triplet)]TJ 0 -12.46 TD[(set)-524(target_info\(host,connect\))-1575(rlogin)]TJ 0 -12.45 TD[(set)-524(target_info\(host,target\))-2100(chinadoll)]TJ -22.9 -12.45 TD[(})]TJ 0 -12.46 TD[("i?86-*-winnt)-12074(#)-525(NT)-525(host)]TJ 22.9 -12.45 TD[(set)-524(target_info\(host,name\))-3150("nt-host")]TJ 0 -12.45 TD[(set)-524(target_info\(host,config\))-2100(i386-unknown-winnt)]TJ 0 -12.46 TD[(set)-524(target_info\(host,connect\))-1575(telnet)]TJ 0 -12.45 TD[(set)-524(target_info\(host,target\))-2100(ripple)]TJ -22.9 -12.45 TD[(})]TJ 0 -12.46 TD[("hppa*-hp-hpux*")-524({)-9450(#)-525(HP-UX)-525(host)]TJ 22.9 -12.45 TD[(set)-524(target_info\(host,name\))-3150("hpux-host")]TJ 0 -12.45 TD[(set)-524(target_info\(host,config\))-2100($host_triplet)]TJ 0 -12.46 TD[(set)-524(target_info\(host,connect\))-1575(rlogin)]TJ 0 -12.45 TD[(set)-524(target_info\(host,target\))-2100(slipknot)]TJ 0 -12.45 TD[(})]TJ -22.9 -12.46 TD[("sparc-sun-sunos*")-524({)-8400(#)-525(SunOS)-525(\(sun4\))]TJ 22.9 -12.45 TD[(set)-524(target_info\(host,name\))-3150("sunos-host")]TJ 0 -12.45 TD[(set)-524(target_info\(host,config\))-2100($host_triplet)]TJ 0 -12.46 TD[(set)-524(target_info\(host,connect\))-1575(rlogin)]TJ 0 -12.45 TD[(set)-524(target_info\(host,target\))-2100(darkstar)]TJ -22.9 -12.45 TD[(})]TJ -22.91 -12.46 TD[(})]TJ ET 456.38 -367.53 m 456.77 -367.53 l 456.77 -11.96 l 456.38 -11.96 l b BT/F9 9.96 Tf 46.8 -373.76 TD[(\012)]TJ ET 52.78 -373.76 m 450.40 -373.76 l 450.40 -373.36 l 52.78 -373.36 l b BT 456.38 -373.76 TD[(\011)]TJ/F2 13.09 Tf -438.38 -26.9 TD[(4.0.3)-562(Lo)-31(cal)-375(Con\014g)-375(File)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(It)-369(is)-370(usually)-369(more)-370(con)27(v)28(enien)27(t)-368(to)-370(k)27(eep)-369(these)-369(\\man)26(ual)-368(o)27(v)27(errides")-368(in)-370(the)-370(`)]TJ/F4 10.91 Tf 342.06 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-369(lo)-28(cal)]TJ -402.82 -13.15 TD[(to)-333(eac)27(h)-332(test)-334(directory)83(,)-333(rather)-333(than)-333(in)-334(the)-333(\\master")-333(`)]TJ/F4 10.91 Tf 247.24 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(in)-333(the)-333(DejaGn)26(u)-332(library)82(.)]TJ -278.12 -16.14 TD[(All)-411(lo)-28(cal)-411(`)]TJ/F4 10.91 Tf 48.37 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-411(usually)-411(\014les)-411(ha)26(v)28(e)-410(t)27(w)27(o)-410(sections,)-431(separated)-411(b)27(y)-410(commen)26(t)-410(text.)-678(The)]TJ -109.13 -13.15 TD[(\014rst)-263(section)-264(is)-264(the)-264(part)-264(that)-264(is)-264(generated)-264(b)27(y)]TJ/F4 10.91 Tf 205.04 0 TD[(make)]TJ/F1 10.91 Tf 22.91 0 TD[(.)-421(It)-264(is)-264(essen)27(tially)-263(a)-264(collection)-264(of)-264(Tcl)-264(v)55(ariable)]TJ -227.95 -13.15 TD[(de\014nitions)-360(based)-361(on)-361(`)]TJ/F4 10.91 Tf 102.23 0 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[(')-360(en)27(vironmen)27(t)-359(v)54(ariables.)-525(Since)-361(they)-361(are)-360(generated)-361(b)27(y)]TJ/F4 10.91 Tf 258.01 0 TD[(make)]TJ/F1 10.91 Tf 22.91 0 TD[(,)]TJ -428.97 -13.16 TD[(they)-298(con)27(tain)-297(the)-298(v)54(alues)-297(as)-298(sp)-28(eci\014ed)-298(b)27(y)]TJ/F4 10.91 Tf 184.16 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.)-432(\(Y)82(ou)-297(can)-298(also)-298(customize)-298(these)-299(v)55(alues)-297(b)27(y)]TJ -235.71 -13.15 TD[(using)-263(the)-263(`)]TJ/F4 10.91 Tf 48.83 0 TD[(--site)]TJ/F1 10.91 Tf 34.37 0 TD[(')-263(option)-263(to)]TJ/F4 10.91 Tf 51.64 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.\))-421(In)-263(particular,)-277(this)-263(section)-264(con)27(tains)-262(the)-263(`)]TJ/F4 10.91 Tf 196.76 0 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[(')]TJ -428.97 -13.15 TD[(v)55(ariables)-389(for)-390(host)-389(and)-390(target)-390(con\014guration)-390(data.)-614(Do)-390(not)-390(edit)-389(this)-390(\014rst)-390(section;)-418(if)-390(y)27(ou)-389(do,)]TJ 0 -13.15 TD[(y)27(our)-332(c)27(hanges)-333(are)-333(replaced)-333(next)-334(time)-333(y)27(ou)-332(run)]TJ/F4 10.91 Tf 216.55 0 TD[(make)]TJ/F1 10.91 Tf 22.9 0 TD[(.)]TJ -224.51 -16.14 TD[(The)-333(\014rst)-333(section)-333(starts)-334(with:)]TJ/F9 9.96 Tf -14.94 -7.32 TD[(\013)]TJ ET 23.98 -555.43 m 450.40 -555.43 l 450.40 -555.03 l 23.98 -555.03 l b BT 456.38 -555.43 TD[(\010)]TJ ET 18.00 -601.70 m 18.40 -601.70 l 18.40 -561.16 l 18.00 -561.16 l b BT/F4 10.91 Tf 21.39 -573.8 TD[(##)-524(these)-525(variables)-525(are)-525(automatically)-525(generated)-525(by)-525(make)-525(##)]TJ 0 -12.46 TD[(#)-524(Do)-525(not)-525(edit)-525(here.)-525(If)-525(you)-525(wish)-525(to)-525(override)-525(these)-525(values)]TJ 0 -12.45 TD[(#)-524(add)-525(them)-525(to)-525(the)-525(last)-525(section)]TJ ET 456.38 -601.70 m 456.77 -601.70 l 456.77 -561.16 l 456.38 -561.16 l b BT/F9 9.96 Tf 18 -607.92 TD[(\012)]TJ ET 23.98 -607.92 m 450.40 -607.92 l 450.40 -607.53 l 23.98 -607.53 l b BT 456.38 -607.92 TD[(\011)]TJ/F1 10.91 Tf -423.44 -18 TD[(In)-263(the)-263(second)-263(section,)-277(y)26(ou)-262(can)-263(o)27(v)28(erride)-263(an)27(y)-262(default)-263(v)54(alues)-262(\(lo)-28(cally)-263(to)-263(DejaGn)27(u\))-262(for)-264(all)-263(the)]TJ -14.94 -13.15 TD[(v)55(ariables.)-441(The)-327(second)-326(section)-327(can)-326(also)-327(con)27(tain)-326(y)27(our)-326(preferred)-326(defaults)-327(for)-326(all)-327(the)-326(command)]TJ ET 0 g 0 G
-endstream
-endobj
-126 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F9 59 0 R
-/F2 12 0 R
->>
-endobj
-124 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 126 0 R
->>
-endobj
-129 0 obj
-<<
-/Length 5100
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(20)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 0 -23.91 TD[(line)-347(options)-347(to)]TJ/F4 10.91 Tf 72.63 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(.)-485(This)-347(allo)27(ws)-346(y)26(ou)-346(to)-347(easily)-347(customize)]TJ/F4 10.91 Tf 180.98 0 TD[(runtest)]TJ/F1 10.91 Tf 43.88 0 TD[(for)-347(y)27(our)-346(preferences)]TJ -337.58 -13.15 TD[(in)-466(eac)26(h)-465(con\014gured)-467(test-suite)-467(tree,)-500(so)-467(that)-467(y)27(ou)-466(need)-467(not)-467(t)27(yp)-27(e)-467(options)-467(rep)-27(eatedly)-467(on)-467(the)]TJ 0 -13.15 TD[(command)-340(line.)-465(\(The)-341(second)-340(section)-340(ma)27(y)-340(also)-340(b)-28(e)-340(empt)27(y)83(,)-341(if)-341(y)27(ou)-339(do)-340(not)-341(wish)-340(to)-340(o)26(v)28(erride)-339(an)27(y)]TJ 0 -13.15 TD[(defaults.\))]TJ 14.94 -16.14 TD[(The)-333(\014rst)-333(section)-333(ends)-334(with)-333(this)-333(line:)]TJ/F9 9.96 Tf -14.94 -7.33 TD[(\013)]TJ ET 23.98 -72.88 m 450.40 -72.88 l 450.40 -72.48 l 23.98 -72.48 l b BT 456.38 -72.88 TD[(\010)]TJ ET 18.00 -96.66 m 18.40 -96.66 l 18.40 -78.61 l 18.00 -78.61 l b BT/F4 10.91 Tf 21.39 -91.25 TD[(##)-524(All)-525(variables)-525(above)-525(are)-525(generated)-525(by)-525(configure.)-525(Do)-525(Not)-525(Edit)-525(##)]TJ ET 456.38 -96.66 m 456.77 -96.66 l 456.77 -78.61 l 456.38 -78.61 l b BT/F9 9.96 Tf 18 -102.89 TD[(\012)]TJ ET 23.98 -102.89 m 450.40 -102.89 l 450.40 -102.49 l 23.98 -102.49 l b BT 456.38 -102.89 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(Y)83(ou)-335(can)-335(mak)27(e)-334(an)26(y)-334(c)27(hanges)-335(under)-335(this)-335(line.)-451(If)-335(y)27(ou)-335(wish)-335(to)-335(rede\014ne)-336(a)-335(v)54(ariable)-334(in)-335(the)-336(top)]TJ -14.94 -13.15 TD[(section,)-382(then)-373(just)-373(put)-373(a)-373(duplicate)-373(v)54(alue)-372(in)-373(this)-373(second)-373(section.)-563(Usually)-373(the)-373(v)54(alues)-372(de\014ned)]TJ 0 -13.15 TD[(in)-338(this)-338(con\014g)-338(\014le)-338(are)-338(related)-338(to)-338(the)-338(con\014guration)-338(of)-338(the)-338(test)-338(run.)-459(This)-338(is)-338(the)-338(ideal)-338(place)-338(to)]TJ 0 -13.15 TD[(set)-334(the)-335(v)55(ariables)]TJ/F4 10.91 Tf 81.1 0 TD[(host_triplet)]TJ/F1 10.91 Tf 68.73 0 TD[(,)]TJ/F4 10.91 Tf 6.68 0 TD[(build_triplet)]TJ/F1 10.91 Tf 74.45 0 TD[(,)]TJ/F4 10.91 Tf 6.69 0 TD[(target_triplet)]TJ/F1 10.91 Tf 80.18 0 TD[(.)-448(All)-334(other)-335(v)55(ariables)-334(are)]TJ -317.83 -13.15 TD[(to)-27(ol)-356(dep)-28(endan)27(t.)-511(ie)-355(for)-356(testing)-356(a)-355(compiler,)-362(the)-355(v)54(alue)-354(for)]TJ/F5 10.91 Tf 266.78 0 TD[(CC)]TJ/F1 10.91 Tf 20.57 0 TD[(migh)27(t)-354(b)-28(e)-356(set)-356(to)-355(a)-356(freshly)-356(built)]TJ -287.35 -13.15 TD[(binary)83(,)-332(as)-334(opp)-28(osed)-333(to)-333(one)-334(in)-333(the)-333(user's)-334(path.)]TJ/F2 13.09 Tf 0 -26.9 TD[(4.0.4)-562(P)30(ersonal)-374(Con\014g)-375(File)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(The)-494(p)-28(ersonal)-495(con\014g)-495(\014le)-495(is)-495(used)-495(to)-494(customize)]TJ/F4 10.91 Tf 228.62 0 TD[(runtest's)]TJ/F1 10.91 Tf 56.94 0 TD[(b)-27(eha)27(viour)-494(for)-495(eac)27(h)-494(p)-28(erson.)]TJ -300.5 -13.15 TD[(It's)-362(t)27(ypically)-361(used)-362(to)-362(set)-363(the)-362(user)-362(prefered)-362(setting)-362(for)-363(v)27(erb)-27(osit)27(y)84(,)-369(and)-362(an)27(y)-361(exp)-28(erimen)27(tal)-362(Tcl)]TJ 0 -13.16 TD[(pro)-27(cedures.)-445(My)-333(p)-28(ersonal)-333(`)]TJ/F4 10.91 Tf 125.06 0 TD[(~/.dejagnurc)]TJ/F1 10.91 Tf 68.73 0 TD[(')-333(\014le)-333(lo)-28(oks)-333(lik)27(e:)]TJ/F9 9.96 Tf -193.79 -9.74 TD[(\013)]TJ ET 23.98 -272.09 m 450.40 -272.09 l 450.40 -271.69 l 23.98 -271.69 l b BT 456.38 -272.09 TD[(\010)]TJ ET 18.00 -319.27 m 18.40 -319.27 l 18.40 -277.82 l 18.00 -277.82 l b BT/F4 10.91 Tf 21.39 -290.46 TD[(set)-524(all_flag)-525(1)]TJ 0 -12.46 TD[(set)-524(RLOGIN)-525(/usr/ucb/rlogin)]TJ 0 -12.45 TD[(set)-524(RSH)-525(/usr/ucb/rsh)]TJ ET 456.38 -319.27 m 456.77 -319.27 l 456.77 -277.82 l 456.38 -277.82 l b BT/F9 9.96 Tf 18 -325.5 TD[(\012)]TJ ET 23.98 -325.50 m 450.40 -325.50 l 450.40 -325.10 l 23.98 -325.10 l b BT 456.38 -325.5 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.38 TD[(Here)-299(I)-300(set)]TJ/F4 10.91 Tf 49.29 0 TD[(all_flag)]TJ/F1 10.91 Tf 49.09 0 TD[(so)-299(I)-300(see)-299(all)-300(the)-299(test)-300(cases)-299(that)-300(P)83(ASS)-299(along)-299(with)-300(the)-299(ones)-300(that)-299(F)110(AIL.)]TJ -113.32 -13.16 TD[(I)-398(also)-398(set)]TJ/F5 10.91 Tf 48.61 0 TD[(RLOGIN)]TJ/F1 10.91 Tf 49.54 0 TD[(and)]TJ/F4 10.91 Tf 21.92 0 TD[(RSH)]TJ/F1 10.91 Tf 21.53 0 TD[(to)-398(the)-398(BSD)-398(v)27(ersion.)-639(I)-398(ha)27(v)28(e)]TJ/F4 10.91 Tf 137.57 0 TD[(kerberos)]TJ/F1 10.91 Tf 50.16 0 TD[(installed,)-414(and)-398(when)-399(I)]TJ -329.33 -13.15 TD[(rlogin)-285(to)-286(a)-286(target)-286(b)-28(oard,)-295(it)-286(usually)-285(isn't)-286(supp)-28(orted.)-429(So)-285(I)-286(use)-286(the)-286(non)-286(secure)-286(v)27(ersions)-285(of)-285(these)]TJ 0 -13.15 TD[(programs)-333(rather)-333(than)-333(the)-334(default)-333(that's)-333(in)-334(m)27(y)-332(path.)]TJ ET 0 g 0 G
-endstream
-endobj
-130 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F9 59 0 R
-/F5 31 0 R
-/F2 12 0 R
->>
-endobj
-128 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 130 0 R
->>
-endobj
-133 0 obj
-<<
-/Length 8099
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(21)]TJ/F2 17.22 Tf 0 -25.91 TD[(5)-562(The)-375(DejaGn)30(u)-374(Implemen)31(tation)]TJ/F1 10.91 Tf 14.94 -28.09 TD[(DejaGn)27(u)-322(is)-324(en)27(tirely)-323(written)-323(in)]TJ/F4 10.91 Tf 146.79 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(,)-325(whic)27(h)-323(uses)-323(Tcl)-324(as)-324(a)-323(command)-324(language.)]TJ/F4 10.91 Tf 201.55 0 TD[(expect)]TJ/F1 10.91 Tf -397.64 -13.15 TD[(serv)27(es)-276(as)-277(a)-277(v)27(ery)-276(programmable)-278(shell;)-295(y)26(ou)-276(can)-277(run)-277(an)27(y)-276(program,)-289(as)-277(with)-277(the)-277(usual)-277(Unix)-277(com-)]TJ 0 -13.15 TD[(mand)-338(shells|but)-339(once)-338(the)-339(program)-338(is)-339(started,)-340(y)27(our)]TJ/F4 10.91 Tf 250.53 0 TD[(expect)]TJ/F1 10.91 Tf 38.06 0 TD[(script)-338(has)-339(fully)-338(programmable)]TJ -288.59 -13.15 TD[(con)27(trol)-254(of)-254(its)-255(input)-255(and)-255(output.)-418(This)-255(do)-28(es)-254(not)-255(just)-255(apply)-255(to)-255(the)-255(programs)-254(under)-255(test;)]TJ/F4 10.91 Tf 397.64 0 TD[(expect)]TJ/F1 10.91 Tf -397.64 -13.15 TD[(can)-307(also)-308(run)-308(an)27(y)-307(auxiliary)-307(program,)-313(suc)27(h)-307(as)]TJ/F4 10.91 Tf 210.55 0 TD[(diff)]TJ/F1 10.91 Tf 26.27 0 TD[(or)]TJ/F4 10.91 Tf 13.08 0 TD[(sh)]TJ/F1 10.91 Tf 11.45 0 TD[(,)-312(with)-308(full)-308(con)27(trol)-307(o)27(v)28(er)-307(its)-308(input)-307(and)]TJ -261.35 -13.15 TD[(output.)]TJ 14.94 -16.14 TD[(DejaGn)27(u)-435(itself)-437(is)-437(merely)-436(a)-437(framew)27(ork)-436(for)-436(the)-437(set)-436(of)-437(test)-437(suites)-436(distributed)-437(separately)]TJ -14.94 -13.15 TD[(for)-427(eac)27(h)]TJ/F7 10.91 Tf 43.3 0 TD[(gnu)]TJ/F1 10.91 Tf 25.04 0 TD[(to)-27(ol.)-728(F)82(uture)-426(releases)-428(of)]TJ/F7 10.91 Tf 119.85 0 TD[(gnu)]TJ/F1 10.91 Tf 25.04 0 TD[(to)-27(ols)-428(will)-428(include)-427(ev)26(en)-426(more)-428(tests,)-451(dev)26(elop)-26(ed)]TJ -213.23 -13.15 TD[(throughout)-333(the)-333(free)-333(soft)26(w)28(are)-332(comm)27(unit)27(y)84(.)]TJ/F4 10.91 Tf 14.94 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 43.85 0 TD[(is)-344(the)-345(glue)-344(to)-345(tie)-344(together)-345(and)-345(manage)-344(the)-345(test)-344(scripts.)-479(The)]TJ/F4 10.91 Tf 289.3 0 TD[(runtest)]TJ/F1 10.91 Tf 43.85 0 TD[(program)]TJ -391.94 -13.15 TD[(is)-403(actually)-403(a)-403(simple)-404(Bourne)-403(shell)-403(script)-404(that)-403(lo)-28(cates)-403(a)-403(cop)27(y)-403(of)-403(the)]TJ/F4 10.91 Tf 324.38 0 TD[(expect)]TJ/F1 10.91 Tf 38.76 0 TD[(shell)-403(and)-403(then)]TJ -363.14 -13.15 TD[(starts)-333(the)-333(main)-333(Tcl)-334(co)-28(de,)]TJ/F4 10.91 Tf 124.09 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 63 0 TD[(.)]TJ/F4 10.91 Tf 7.88 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 66.64 0 TD[(itself)-333(has)-333(these)-333(essen)26(tial)-332(functions:)]TJ -255.7 -16.14 TD[(1.)-660(P)27(arse)-221(the)-223(command)-223(line)-223(options,)-244(load)-223(the)-223(library)-223(\014les,)-244(and)-223(load)-223(the)-222(default)-223(con\014guration)]TJ 15.69 -13.16 TD[(\014les.)]TJ -15.69 -16.13 TD[(2.)-660(Lo)-27(cating)-450(the)-450(individual)-450(test)-450(scripts.)]TJ/F4 10.91 Tf 200.12 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 67.91 0 TD[(lo)-27(cates)-450(the)-450(tests)-450(b)26(y)-449(exploiting)-450(a)]TJ -252.34 -13.16 TD[(straigh)27(tforw)28(ard)-367(naming)-368(con)27(v)28(en)27(tion)-367(based)-368(on)-367(the)-368(string)-368(y)26(ou)-367(sp)-27(ecify)-368(with)-368(the)-368(`)]TJ/F4 10.91 Tf 373.01 0 TD[(--tool)]TJ/F1 10.91 Tf 34.36 0 TD[(')]TJ -407.37 -13.15 TD[(option.)]TJ -15.69 -16.14 TD[(3.)-660(Pro)27(viding)-290(an)-290(extended)-291(test)-291(en)27(vironmen)27(t,)-298(b)27(y)-290(de\014ning)-291(additional)-291(Tcl)-291(pro)-27(cedures)-291(b)-28(ey)27(ond)]TJ 15.69 -13.15 TD[(those)-333(already)-333(in)]TJ/F4 10.91 Tf 79.79 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(.)]TJ -129.84 -16.14 TD[(4.)-660(Lo)-27(cating)-264(target-dep)-28(enden)27(t)-263(functions,)-277(to)-264(standardize)-264(the)-263(test)-264(en)27(vironmen)28(t)-263(across)-264(a)-263(wide)]TJ 15.69 -13.15 TD[(v)55(ariet)28(y)-332(of)-334(test)-333(platforms.)]TJ/F2 14.35 Tf -21.6 -30.88 TD[(5.1)-562(Con)30(v)32(en)31(tions)-374(for)-375(using)-375(to)-31(ol)-375(names)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(DejaGn)27(u)-281(uses)-282(`)]TJ/F4 10.91 Tf 71.05 0 TD[($tool)]TJ/F1 10.91 Tf 28.64 0 TD[(',)-292(the)-282(name)-282(of)-282(the)-282(to)-28(ol)-282(under)-282(test,)-292(to)-282(tie)-282(together)-282(the)-282(testing)-282(con\014g-)]TJ -114.63 -13.15 TD[(uration)-346(in)-346(a)-347(straigh)27(tforw)28(ard)-346(but)-346(\015exible)-346(w)26(a)28(y)84(.)-483(If)-347(there)-346(is)-346(only)-347(one)-346(testsuite)-347(for)-346(a)-346(particular)]TJ 0 -13.16 TD[(application,)-333(then)-333(`)]TJ/F4 10.91 Tf 87.27 0 TD[($tool)]TJ/F1 10.91 Tf 28.64 0 TD[(')-333(is)-333(optional.)]TJ -100.97 -16.13 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[($tool)]TJ/F1 10.91 Tf 28.64 0 TD[(')-431(is)]TJ/F8 10.91 Tf 19.78 0 TD[(not)]TJ/F1 10.91 Tf 21.07 0 TD[(used)-431(to)-432(in)27(v)28(ok)28(e)-431(the)-431(to)-28(ol,)-456(since)-432(sites)-431(that)-432(run)-431(m)27(ultiple)-431(con\014gurations)-431(of)]TJ -87.46 -13.16 TD[(a)-513(particular)-514(to)-28(ol)-514(often)-514(call)-514(eac)27(h)-513(con\014guration)-514(b)27(y)-513(a)-514(di\013eren)27(t)-513(name.)]TJ/F4 10.91 Tf 346.03 0 TD[(runtest)]TJ/F1 10.91 Tf 45.7 0 TD[(uses)-513(the)]TJ -391.73 -13.15 TD[(con\014guration-dep)-27(enden)27(t)-452(v)55(ariables)-451(captured)-453(in)-452(`)]TJ/F4 10.91 Tf 230.49 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-452(to)-452(determine)-452(ho)27(w)-452(to)-452(call)-452(eac)27(h)]TJ -276.31 -13.15 TD[(to)-27(ol.)]TJ/F4 10.91 Tf 14.94 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 43.94 0 TD[(uses)-352(to)-28(ol)-352(names)-352(to)-353(\014nd)-352(directories)-352(con)26(taining)-351(tests.)]TJ/F4 10.91 Tf 251.59 0 TD[(runtest)]TJ/F1 10.91 Tf 43.93 0 TD[(scans)-352(the)-352(source)]TJ -354.4 -13.15 TD[(directory)-249(\(sp)-28(eci\014ed)-249(with)]TJ/F4 10.91 Tf 116.77 0 TD[(--srcdir)]TJ/F1 10.91 Tf 45.82 0 TD[(\))-249(for)-250(all)-249(directories)-250(whose)-249(names)-250(start)-250(with)-249(the)-250(to)-27(ol)-250(name.)]TJ -162.59 -13.15 TD[(It)-441(is)-442(a)-442(common)-442(practice)-442(to)-441(put)-442(a)-442(p)-28(erio)-28(d)-441(after)-442(the)-442(to)-28(ol)-442(part)-441(of)-442(the)-442(name.)-770(F)82(or)-440(instance,)]TJ 0 -13.15 TD[(directories)-363(that)-363(start)-363(with)-363(`)]TJ/F4 10.91 Tf 131.81 0 TD[(g++.)]TJ/F1 10.91 Tf 22.91 0 TD[(')-363(con)27(tain)]TJ/F7 10.91 Tf 45.8 0 TD[(g)]TJ/F4 10.91 Tf 7 0 TD[(++)]TJ/F1 10.91 Tf 15.41 0 TD[(tests.)-533(T)82(o)-362(add)-363(a)-363(new)-363(test,)-371(just)-363(put)-363(it)-363(in)-363(an)27(y)]TJ -222.93 -13.15 TD[(directory)-273(\(create)-273(an)-273(en)27(tirely)-272(new)-273(directory)83(,)-284(if)-273(y)26(ou)-272(wish\))-273(whose)-273(name)-273(follo)27(ws)-272(this)-273(con)27(v)28(en)27(tion.)]TJ 14.94 -16.14 TD[(A)-272(test)-273(is)-273(an)27(y)-272(\014le)-272(in)-273(an)-273(appropriately)-273(named)-272(sub)-28(directory)-273(whose)-273(name)-272(ends)-273(in)-273(`)]TJ/F4 10.91 Tf 368.75 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')-272(\(the)]TJ -406.6 -13.15 TD[(con)27(v)28(en)28(tional)-346(w)27(a)27(y)-346(of)-347(naming)]TJ/F4 10.91 Tf 136.96 0 TD[(expect)]TJ/F1 10.91 Tf 38.15 0 TD[(scripts\).)-485(These)-347(simple)-347(naming)-347(con)27(v)27(en)28(tions)-346(mak)27(e)-346(it)-347(as)]TJ -175.11 -13.15 TD[(simple)-298(as)-299(p)-28(ossible)-299(to)-299(install)-299(new)-299(tests:)-427(all)-299(y)27(ou)-298(m)27(ust)-298(do)-299(is)-299(put)-299(the)-298(test)-299(in)-299(the)-299(righ)27(t)-298(directory)82(.)]TJ/F4 10.91 Tf 14.94 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 44.08 0 TD[(sorts)-365(the)-365(tests)-366(in)-365(eac)27(h)-365(sub)-27(directory)-366(b)27(y)-364(name)-366(\(using)-365(the)-365(Tcl)]TJ/F4 10.91 Tf 290.06 0 TD[(lsort)]TJ/F1 10.91 Tf 32.62 0 TD[(command\))]TJ -381.7 -13.15 TD[(and)-333(runs)-333(them)-333(in)-334(the)-333(resulting)-333(order.)]TJ ET 0 g 0 G
-endstream
-endobj
-134 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F7 49 0 R
-/F8 52 0 R
->>
-endobj
-132 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 134 0 R
->>
-endobj
-137 0 obj
-<<
-/Length 7809
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(22)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(5.2)-562(Initialization)-375(mo)-31(dule)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(The)-389(initialization)-389(mo)-28(dule)-390(\(or)-389(\\init)-390(\014le"\))-389(has)-389(t)26(w)28(o)-388(purp)-28(oses:)-557(to)-389(pro)27(vide)-389(to)-28(ol)-389(and)-390(target)]TJ -14.94 -13.15 TD[(dep)-27(enden)27(t)-334(pro)-27(cedures,)-334(and)-334(to)-335(start)-334(up)-334(an)-334(in)27(teractiv)28(e)-333(to)-28(ol)-334(to)-334(the)-334(p)-28(oin)27(t)-333(where)-334(it)-334(is)-334(ready)-334(to)]TJ 0 -13.15 TD[(op)-27(erate.)-443(The)-328(latter)-328(includes)-328(establishing)-328(comm)26(unications)-327(with)-328(the)-328(target.)-443(All)-328(the)-328(tests)-328(for)]TJ 0 -13.15 TD[(in)27(teractiv)28(e)-250(programs)-251(assume)-250(that)-251(the)-251(to)-28(ol)-251(is)-250(already)-251(running)-251(and)-251(comm)27(unicating.)-416(Initializa-)]TJ 0 -13.15 TD[(tion)-333(mo)-28(dules)-333(for)-333(non-in)27(teractiv)27(e)-332(programs)-333(ma)26(y)-332(only)-333(need)-334(to)-333(supply)-333(the)-334(supp)-27(ort)-334(functions.)]TJ 14.94 -16.14 TD[(Eac)27(h)-357(test)-358(suite)-358(directory)-358(m)27(ust)-357(con)27(tain)-358(\(in)-358(its)-358(`)]TJ/F4 10.91 Tf 223.83 0 TD[(config)]TJ/F1 10.91 Tf 34.36 0 TD[(')-358(sub)-27(directory\))-358(a)-358(separate)-359(initial-)]TJ -273.13 -13.15 TD[(ization)-299(mo)-28(dule)-300(for)-300(eac)27(h)-299(target.)-433(The)-300(appropriate)-300(init)-299(\014le)-300(is)-300(can)-300(b)-27(e)-300(named)-300(sev)27(eral)-299(w)27(a)27(ys.)-432(The)]TJ 0 -13.15 TD[(prefered)-373(name)-374(is)-374(the)]TJ/F8 10.91 Tf 102.8 0 TD[(os)]TJ/F1 10.91 Tf 15.01 0 TD[(part)-373(of)-374(the)-374(canonical)-374(con\014guration)-374(name)-374(with)]TJ/F4 10.91 Tf 225.89 0 TD[(.exp)]TJ/F1 10.91 Tf 26.99 0 TD[(as)-373(the)-374(su\016x.)]TJ -370.69 -13.15 TD[(An)-362(example)-363(w)26(ould)-362(b)-27(e)-363(that)-363(for)-363(an)]TJ/F4 10.91 Tf 165.02 0 TD[(m68k-coff)]TJ/F1 10.91 Tf 55.51 0 TD[(system,)-370(the)]TJ/F4 10.91 Tf 58.72 0 TD[(target_os)]TJ/F1 10.91 Tf 55.51 0 TD[(part)-362(w)26(ould)-362(b)-27(e)]TJ/F4 10.91 Tf 71.3 0 TD[(coff)]TJ/F1 10.91 Tf 22.91 0 TD[(.)]TJ -428.97 -13.15 TD[(The)-303(next)-304(w)27(a)28(y)-303(is)-303(for)-304(system)-303(where)-304(there)-303(are)-304(short)-304(\014lenames,)-309(or)-304(a)-303(shortcut)-304(is)-303(desired)-304(to)-304(refer)]TJ 0 -13.15 TD[(to)-334(the)-335(OS)-334(name)-335(for)-334(that)-335(target.)-448(This)-335(is)-334(uses)-335(the)-334(v)54(alue)-333(of)]TJ/F4 10.91 Tf 274.75 0 TD[($target_abbrev)]TJ/F1 10.91 Tf 83.83 0 TD[(rather)-334(than)-335(the)]TJ/F4 10.91 Tf -358.58 -13.15 TD[(target_os)]TJ/F1 10.91 Tf 51.55 0 TD[(.)]TJ -36.61 -16.14 TD[(The)-356(\014nal)-356(\014le)-356(lo)-27(ok)26(ed)-355(for)-356(is)-356(simply)-356(`)]TJ/F4 10.91 Tf 165.83 0 TD[(default.exp)]TJ/F1 10.91 Tf 63 0 TD[('.)-512(If)-356(there)-356(is)-356(only)-356(one)-356(op)-28(erating)-356(system)]TJ -243.77 -13.15 TD[(to)-275(supp)-28(ort,)-287(then)-276(this)-276(\014le)-276(can)-275(b)-28(e)-276(used.)-425(It's)-276(main)-276(purp)-28(ose)-275(is)-276(to)-276(o\013er)-276(some)-275(supp)-28(ort)-276(for)-276(new)-276(op-)]TJ 0 -13.15 TD[(erating)-301(systems,)-308(or)-302(for)-302(unsupp)-28(orted)-301(cross)-302(targets.)-434(The)-302(last)-301(\014le)-302(lo)-28(ok)27(ed)-301(for)-302(is)-301(`)]TJ/F4 10.91 Tf 362.94 0 TD[(unknown.exp)]TJ/F1 10.91 Tf 63 0 TD[('.)]TJ -425.94 -13.15 TD[(This)-428(is)-429(usually)-428(limited)-429(to)-428(error)-429(handling)-428(for)-429(unsupp)-27(orted)-429(targets.)-730(It's)-428(whole)-429(con)27(ten)28(ts)-428(is)]TJ 0 -13.15 TD[(t)27(ypically)84(.)]TJ/F9 9.96 Tf 0 -9.45 TD[(\013)]TJ ET 23.98 -258.91 m 450.40 -258.91 l 450.40 -258.51 l 23.98 -258.51 l b BT 456.38 -258.91 TD[(\010)]TJ ET 18.00 -292.72 m 18.40 -292.72 l 18.40 -264.64 l 18.00 -264.64 l b BT/F4 10.91 Tf 21.39 -277.28 TD[(perror)-524("Sorry,)-525(there)-525(is)-525(no)-525(support)-525(for)-525(this)-525(target")]TJ 0 -12.45 TD[(exit)-524(1)]TJ ET 456.38 -292.72 m 456.77 -292.72 l 456.77 -264.64 l 456.38 -264.64 l b BT/F9 9.96 Tf 18 -298.95 TD[(\012)]TJ ET 23.98 -298.95 m 450.40 -298.95 l 450.40 -298.55 l 23.98 -298.55 l b BT 456.38 -298.95 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(A)27(t)-376(the)-377(b)-28(eginning)-377(of)-377(the)-377(init)-377(\014le,)-389(y)27(ou)-376(m)27(ust)-376(\014rst)-378(determine)-377(the)-377(prop)-28(er)-377(executable)-377(name)]TJ -14.94 -13.15 TD[(of)-340(the)-340(to)-28(ol)-340(to)-341(execute,)-342(since)-340(the)-340(actual)-341(name)-340(of)-340(the)-341(to)-27(ol)-341(to)-340(b)-28(e)-340(tested)-341(m)27(y)-339(v)54(ary)-339(from)-340(system)]TJ 0 -13.15 TD[(to)-333(system.)-444(Here's)-334(an)-333(example)-333(for)-334(the)]TJ/F7 10.91 Tf 180.24 0 TD[(GNU)]TJ/F1 10.91 Tf 30.68 0 TD[(C)-333(compiler.)]TJ/F9 9.96 Tf -210.92 -9.44 TD[(\013)]TJ ET 23.98 -352.08 m 450.40 -352.08 l 450.40 -351.69 l 23.98 -351.69 l b BT 456.38 -352.08 TD[(\010)]TJ ET 18.00 -523.79 m 18.40 -523.79 l 18.40 -357.81 l 18.00 -357.81 l b BT/F4 10.91 Tf 21.39 -370.46 TD[(global)-524(AR)]TJ 0 -12.45 TD[(#)-524(look)-525(for)-525(the)-525(archiver)-525(ar)]TJ 0 -12.45 TD[(if)-524(![info)-525(exists)-525(AR])-525({)]TJ 22.91 -12.46 TD[(set)-524(AR)-525([findfile)-525($base_dir/../../binutils/ar)-525($base_dir/../../binutils/ar)-525([tr)]TJ -22.91 -12.45 TD[(ansform)-524(ar]])]TJ 22.91 -12.45 TD[(verbose)-524("AR)-525(defaulting)-525(to)-525($AR")-525(2)]TJ -22.91 -12.46 TD[(})]TJ 0 -12.45 TD[(})]TJ 0 -24.91 TD[(global)-524(CFLAGS)]TJ 0 -12.45 TD[(if)-524(![info)-525(exists)-525(CFLAGS])-525(then)-525({)]TJ 22.91 -12.45 TD[(set)-524(CFLAGS)-525("")]TJ -22.91 -12.46 TD[(})]TJ ET 456.38 -523.79 m 456.77 -523.79 l 456.77 -357.81 l 456.38 -357.81 l b BT/F9 9.96 Tf 18 -530.02 TD[(\012)]TJ ET 23.98 -530.02 m 450.40 -530.02 l 450.40 -529.62 l 23.98 -529.62 l b BT 456.38 -530.02 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(It)-330(is)-331(alw)27(a)28(ys)-330(a)-331(go)-27(o)-28(d)-331(idea)-330(to)-331(\014rst)-331(c)27(hec)28(k)-330(the)-330(v)54(ariable,)-330(and)-331(only)-330(set)-331(it)-331(if)-330(it)-331(has)-331(not)-330(y)27(et)-330(b)-28(een)]TJ -14.94 -13.15 TD[(de\014ned.)-444(Often)-333(the)-334(prop)-27(er)-334(v)55(alue)-333(of)]TJ/F4 10.91 Tf 166.73 0 TD[(AR)]TJ/F1 10.91 Tf 15.09 0 TD[(is)-333(set)-333(on)-333(the)-334(command)-333(line)-333(that)-334(in)27(v)28(ok)28(es)-333(`)]TJ/F4 10.91 Tf 196.85 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ -403.82 -16.14 TD[(The)]TJ/F4 10.91 Tf 22.14 0 TD[(findfile)]TJ/F1 10.91 Tf 49.18 0 TD[(pro)-27(cedure)-308(tak)27(es)-306(as)-308(it's)-307(\014rst)-307(argumen)27(t)-307(a)-307(\014le)-307(name)-308(to)-307(lo)-28(ok)-307(for.)-436(The)-307(second)]TJ -86.26 -13.15 TD[(argumen)27(t)-293(is)-295(returned)-294(if)-295(the)-294(\014le)-295(is)-294(found,)-302(and)-295(the)-294(third)-295(argumen)27(t)-293(is)-295(returned)-294(if)-295(the)-294(\014le)-295(is)-294(not)]TJ 0 -13.15 TD[(found.)]TJ/F4 10.91 Tf 34.85 0 TD[(base_dir)]TJ/F1 10.91 Tf 49.45 0 TD[(is)-333(set)-333(in)27(ternally)-333(b)27(y)-332(DejaGn)27(u)-333(to)-333(the)-333(top)-334(lev)27(el)-332(directory)-334(of)-333(the)-333(ob)-56(ject)-333(tree.)]TJ -69.36 -16.14 TD[(The)]TJ/F4 10.91 Tf 23.9 0 TD[(transform)]TJ/F1 10.91 Tf 56.65 0 TD[(pro)-27(cedure)-468(tak)26(es)-467(as)-468(its)-468(argumen)27(t)-467(the)-468(nativ)27(e)-467(name)-468(of)-468(a)-468(to)-28(ol)-468(\(suc)27(h)-467(as)]TJ -95.49 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(gcc)]TJ/F1 10.91 Tf 17.18 0 TD[(')-434(for)-435(the)-435(compiler\),)-460(and)-435(returns)-435(the)-434(name)-435(as)-435(con\014gured)-435(for)-435(that)-434(to)-28(ol)-435(in)-435(the)-434(curren)26(t)]TJ ET 0 g 0 G
-endstream
-endobj
-138 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F8 52 0 R
-/F9 59 0 R
-/F7 49 0 R
->>
-endobj
-136 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 138 0 R
->>
-endobj
-141 0 obj
-<<
-/Length 8761
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(23)]TJ 0 -23.91 TD[(installation.)-440(\(F)83(or)-320(example,)-323(a)-321(cross-compiling)-321(v)27(ersion)-320(of)]TJ/F7 10.91 Tf 265.1 0 TD[(gnu)]TJ/F1 10.91 Tf 23.87 0 TD[(CC)-320(that)-321(generates)-321(MIPS)-321(co)-27(de)]TJ -288.97 -13.15 TD[(ma)27(y)-332(b)-28(e)-333(installed)-333(with)-334(a)-333(name)-333(lik)26(e)]TJ/F4 10.91 Tf 165.21 0 TD[(mips-idt-ecoff-gcc)]TJ/F1 10.91 Tf 103.09 0 TD[(.\))]TJ -253.36 -16.14 TD[(In)-372(a)-373(test)-373(running)-372(nativ)27(e,)-382(writing)-373(the)-372(Tcl)-373(co)-28(de)-372(for)-373(initialization)-373(is)-372(usually)-373(quite)-373(simple.)]TJ -14.94 -13.15 TD[(F)83(or)-238(cross)-238(con\014gurations,)-258(ho)27(w)28(ev)28(er,)-257(more)-238(elab)-28(orate)-238(instructions)-239(are)-238(usually)-239(needed)-238(to)-239(describ)-27(e)]TJ 0 -13.15 TD[(ho)27(w)-332(to)-333(talk)-334(to)-333(a)-333(remote)-334(target.)]TJ 14.94 -16.14 TD[(Eac)27(h)-333(initialization)-335(mo)-27(dule)-335(de\014nes)-334(up)-335(to)-334(four)-335(pro)-27(cedures)-335(with)-334(standard)-335(names)-334(and)-335(pur-)]TJ -14.94 -13.15 TD[(p)-27(oses.)-641(The)-399(names)-399(of)-399(these)-399(pro)-28(cedures)-399(b)-28(egin)-398(with)-399(`)]TJ/F4 10.91 Tf 248.73 0 TD[($tool)]TJ/F1 10.91 Tf 28.64 0 TD[(',)-415(the)-399(string)-399(that)-399(iden)27(ti\014es)-398(tests)]TJ -277.37 -13.15 TD[(for)-422(a)-423(particular)-423(to)-28(ol:)]TJ/F4 10.91 Tf 107.4 0 TD[($tool_start)]TJ/F1 10.91 Tf 63 0 TD[(,)]TJ/F4 10.91 Tf 7.89 0 TD[($tool_load)]TJ/F1 10.91 Tf 57.27 0 TD[(,)]TJ/F4 10.91 Tf 7.89 0 TD[($tool_exit)]TJ/F1 10.91 Tf 57.27 0 TD[(,)-445(and)]TJ/F4 10.91 Tf 30.08 0 TD[($tool_version)]TJ/F1 10.91 Tf 74.45 0 TD[(.)-713(F)83(or)]TJ -405.25 -13.16 TD[(example,)-306(the)-299(start)-300(pro)-28(cedure)-299(for)]TJ/F7 10.91 Tf 156.29 0 TD[(gdb)]TJ/F1 10.91 Tf 23.41 0 TD[(is)-299(called)]TJ/F4 10.91 Tf 41.14 0 TD[(gdb_start)]TJ/F1 10.91 Tf 51.54 0 TD[(.)-433(\(Since)-299(start)-300(pro)-28(cedures)-299(are)-300(used)]TJ -272.38 -13.15 TD[(di\013eren)27(tly)-305(for)-307(batc)27(h)-305(and)-307(in)27(teractiv)28(e)-306(to)-27(ols,)-312(ho)27(w)27(ev)28(er,)]TJ/F4 10.91 Tf 245.82 0 TD[(runtest)]TJ/F1 10.91 Tf 43.44 0 TD[(itself)-306(nev)27(er)-306(calls)-306(the)-306(start)-307(pro-)]TJ -289.26 -13.15 TD[(cedure.)-444(Init)-333(\014les)-334(for)-333(in)27(teractiv)28(e)-333(to)-27(ols)-334(are)-333(exp)-28(ected)-333(to)-334(end)-333(b)27(y)-332(running)-334(the)-333(start)-333(pro)-28(cedure.\))]TJ 14.94 -16.14 TD[(The)-411(initialization)-412(mo)-28(dule)-411(is)-412(also)-412(a)-411(go)-28(o)-28(d)-412(place)-411(to)-412(call)]TJ/F4 10.91 Tf 262.91 0 TD[(load_lib)]TJ/F1 10.91 Tf 50.31 0 TD[(to)-411(get)-412(an)27(y)-411(collections)]TJ -328.16 -13.15 TD[(of)-362(utilit)27(y)-361(pro)-28(cedures)-362(mean)26(t)-361(for)-362(a)-363(family)-362(of)-362(test)-363(cases,)-369(and)-362(to)-363(set)-362(up)-362(default)-363(v)55(alues)-361(for)-363(an)27(y)]TJ 0 -13.15 TD[(additional)-333(Tcl)-333(v)54(ariables)-332(needed)-333(for)-334(a)-333(sp)-28(eci\014c)-333(set)-333(of)-334(tests.)]TJ 14.94 -16.14 TD[(See)-439(Section)-440(5.4)-440([T)82(arget)-439(dep)-28(enden)27(t)-439(pro)-28(cedures],)-466(page)-440(31,)-467(for)-440(full)-440(descriptions)-440(of)-440(these)]TJ -14.94 -13.15 TD[(pro)-27(cedures.)]TJ/F2 14.35 Tf 0 -30.88 TD[(5.3)-562(DejaGn)30(u)-374(pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(DejaGn)27(u)-430(pro)27(vides)-430(these)-431(Tcl)-431(pro)-28(cedures)-431(for)-430(use)-431(in)-431(test)-431(scripts.)-738(Y)83(ou)-430(can)-431(also)-431(use)-431(an)27(y)]TJ -14.94 -13.15 TD[(standard)]TJ/F4 10.91 Tf 45.54 0 TD[(expect)]TJ/F1 10.91 Tf 37.99 0 TD[(or)-332(Tcl)-332(function.)-445(These)-332(pro)-28(cedures)-332(are)-333(stored)-332(in)-333(libraries,)-332(whic)26(h)-331(DejaGn)27(u)]TJ -83.53 -13.15 TD[(loads)-343(at)-343(run)27(time.)-473(Here's)-343(explanation)-343(of)-343(the)-343(library)-344(pro)-27(cedures)-344(that)-343(get)-343(loaded)-343(at)-343(run)27(time.)]TJ 0 -13.15 TD[(All)-333(other)-333(librarys)-333(are)-334(optional,)-333(and)-333(need)-334(to)-333(b)-28(e)-333(loaded)-334(b)27(y)-332(the)-333(testsuite.)]TJ/F2 13.09 Tf 0 -26.9 TD[(5.3.1)-562(Core)-375(In)30(ternal)-374(Pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(See)-333(Section)-334(2.4)-333([A)-334(POSIX)-333(conforming)-334(test)-333(framew)27(ork],)-333(page)-333(6,)-334(for)-333(more)-334(detailed)-333(expla-)]TJ -14.94 -13.15 TD[(nations)-333(of)-333(the)-333(test)-334(outcomes)-333(\(`)]TJ/F4 10.91 Tf 145.94 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(PASS)]TJ/F1 10.91 Tf 22.9 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(UNTESTED)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 63 0 TD[('\).)]TJ/F4 10.91 Tf -408.76 -22.12 TD[(perror)-333(")]TJ/F5 10.91 Tf 43.73 0 TD[(string)-418(n)26(um)28(b)-27(er)]TJ/F4 10.91 Tf 68.81 0 TD[(")]TJ/F1 10.91 Tf -54.94 -13.15 TD[(Declares)-299(a)-299(sev)27(ere)-298(error)-299(in)-299(the)-300(testing)-299(framew)27(ork)-298(itself.)]TJ/F4 10.91 Tf 260.23 0 TD[(perror)]TJ/F1 10.91 Tf 37.62 0 TD[(writes)-299(in)-299(the)-299(log)]TJ -297.85 -13.15 TD[(\014les)-356(a)-356(message)-357(b)-28(eginning)-356(with)-356(`)]TJ/F4 10.91 Tf 152.05 0 TD[(ERROR)]TJ/F1 10.91 Tf 28.63 0 TD[(',)-362(app)-27(ending)-357(the)-356(argumen)26(t)]TJ/F5 10.91 Tf 131.41 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)-513(If)-357(the)]TJ -339.45 -13.15 TD[(optional)]TJ/F5 10.91 Tf 41.92 0 TD[(n)27(um)28(b)-27(er)]TJ/F1 10.91 Tf 40.01 0 TD[(is)-287(supplied,)-296(then)-287(this)-287(is)-287(used)-287(to)-287(set)-288(the)-287(in)27(ternal)-286(coun)27(t)-286(of)-287(errors)]TJ -81.93 -13.15 TD[(to)-333(that)-333(v)54(alue.)]TJ 0 -16.14 TD[(As)-347(a)-348(side)-348(e\013ect,)]TJ/F4 10.91 Tf 79.59 0 TD[(perror)]TJ/F1 10.91 Tf 38.16 0 TD[(also)-347(c)26(hanges)-347(the)-348(e\013ect)-347(of)-348(the)-348(next)]TJ/F4 10.91 Tf 166.69 0 TD[(pass)]TJ/F1 10.91 Tf 26.7 0 TD[(or)]TJ/F4 10.91 Tf 13.53 0 TD[(fail)]TJ/F1 10.91 Tf 26.7 0 TD[(com-)]TJ -351.37 -13.15 TD[(mand:)-559(the)-390(test)-391(outcome)-391(b)-27(ecomes)-391(`)]TJ/F4 10.91 Tf 168.42 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[(',)-405(since)-390(an)-391(automatic)-391(`)]TJ/F4 10.91 Tf 108.78 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(')-390(or)]TJ -357.38 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-356(cannot)-357(b)-28(e)-357(trusted)-356(after)-357(a)-357(sev)27(ere)-356(error)-357(in)-357(the)-357(test)-356(framew)26(ork.)-513(If)-357(the)-357(op-)]TJ -25.94 -13.15 TD[(tional)-339(n)26(umeric)-338(v)54(alue)-339(is)-339(`)]TJ/F4 10.91 Tf 114.92 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(',)-341(then)-340(there)-340(are)-339(no)-340(further)-340(side)-340(e\013ects)-340(to)-339(calling)-340(this)]TJ -120.65 -13.15 TD[(function,)-416(and)-400(the)-400(follo)27(wing)-399(test)-399(outcome)-400(do)-28(esn't)-400(b)-28(ecome)-399(`)]TJ/F4 10.91 Tf 282.77 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[('.)-643(This)]TJ -340.04 -13.15 TD[(can)-333(b)-28(e)-333(used)-333(for)-334(errors)-333(with)-333(no)-334(kno)27(wn)-332(side)-333(e\013ects.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(warning)-333(")]TJ/F5 10.91 Tf 49.45 0 TD[(string)-418(n)26(um)28(b)-27(er)]TJ/F4 10.91 Tf 68.81 0 TD[(")]TJ/F1 10.91 Tf -60.66 -13.15 TD[(Declares)-287(detection)-288(of)-288(a)-287(minor)-288(error)-288(in)-288(the)-287(test)-288(case)-288(itself.)]TJ/F4 10.91 Tf 272.07 0 TD[(warning)]TJ/F1 10.91 Tf 43.23 0 TD[(writes)-287(in)-288(the)]TJ -315.3 -13.15 TD[(log)-379(\014les)-380(a)-380(message)-380(b)-28(eginning)-380(with)-380(`)]TJ/F4 10.91 Tf 171.42 0 TD[(WARNING)]TJ/F1 10.91 Tf 40.09 0 TD[(',)-391(app)-28(ending)-380(the)-380(argumen)27(t)]TJ/F5 10.91 Tf 132.5 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)]TJ -371.37 -13.15 TD[(Use)]TJ/F4 10.91 Tf 22.19 0 TD[(warning)]TJ/F1 10.91 Tf 44.95 0 TD[(rather)-445(than)]TJ/F4 10.91 Tf 60.68 0 TD[(error)]TJ/F1 10.91 Tf 33.5 0 TD[(for)-445(cases)-445(\(suc)27(h)-444(as)-446(comm)27(unication)-444(failure)-445(to)]TJ -161.32 -13.15 TD[(b)-27(e)-489(follo)27(w)28(ed)-487(b)27(y)-488(a)-488(retry\))-488(where)-488(the)-489(test)-488(case)-488(can)-488(reco)27(v)27(er)-487(from)-488(the)-488(error.)-909(If)]TJ 0 -13.15 TD[(the)-367(optional)]TJ/F5 10.91 Tf 61.96 0 TD[(n)27(um)28(b)-27(er)]TJ/F1 10.91 Tf 40.88 0 TD[(is)-367(supplied,)-376(then)-368(this)-367(is)-368(used)-367(to)-368(set)-367(the)-368(in)27(ternal)-366(coun)26(t)-366(of)]TJ -102.84 -13.15 TD[(w)27(arnings)-332(to)-333(that)-334(v)55(alue.)]TJ ET 0 g 0 G
-endstream
-endobj
-142 0 obj
-<<
-/F1 9 0 R
-/F7 49 0 R
-/F4 28 0 R
-/F2 12 0 R
-/F5 31 0 R
->>
-endobj
-140 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 142 0 R
->>
-endobj
-145 0 obj
-<<
-/Length 8738
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(24)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 57.6 -23.91 TD[(As)-351(a)-352(side)-351(e\013ect,)]TJ/F4 10.91 Tf 79.76 0 TD[(warning_threshold)]TJ/F1 10.91 Tf 101.2 0 TD[(or)-351(more)-352(calls)-351(to)]TJ/F4 10.91 Tf 79.1 0 TD[(warning)]TJ/F1 10.91 Tf 43.92 0 TD[(in)-351(a)-352(single)-351(test)]TJ -303.98 -13.15 TD[(case)-369(also)-369(c)27(hanges)-369(the)-369(e\013ect)-369(of)-370(the)-369(next)]TJ/F4 10.91 Tf 191.81 0 TD[(pass)]TJ/F1 10.91 Tf 26.93 0 TD[(or)]TJ/F4 10.91 Tf 13.76 0 TD[(fail)]TJ/F1 10.91 Tf 26.94 0 TD[(command:)-516(the)-369(test)-369(out-)]TJ -259.44 -13.15 TD[(come)-416(b)-27(ecomes)-417(`)]TJ/F4 10.91 Tf 76.11 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[(')-416(since)-416(an)-416(automatic)-416(`)]TJ/F4 10.91 Tf 106.71 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(')-416(or)-416(`)]TJ/F4 10.91 Tf 24.87 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-416(ma)27(y)-415(not)-416(b)-28(e)]TJ -310.78 -13.15 TD[(trust)27(w)28(orth)28(y)-449(after)-450(man)27(y)-449(w)27(arnings.)-792(If)-450(the)-450(optional)-450(n)27(umeric)-449(v)55(alue)-449(is)-449(`)]TJ/F4 10.91 Tf 336.18 0 TD[(0)]TJ/F1 10.91 Tf 5.72 0 TD[(',)-478(then)]TJ -341.9 -13.16 TD[(there)-352(are)-353(no)-353(further)-353(side)-353(e\013ects)-353(to)-353(calling)-352(this)-353(function,)-358(and)-353(the)-353(follo)27(wing)-352(test)]TJ 0 -13.15 TD[(outcome)-430(do)-27(esn't)-431(b)-27(ecome)-431(`)]TJ/F4 10.91 Tf 126.87 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[('.)-734(This)-431(can)-430(b)-28(e)-430(used)-430(for)-430(errors)-430(with)-430(no)]TJ -184.14 -13.15 TD[(kno)27(wn)-332(side)-333(e\013ects.)]TJ/F4 10.91 Tf -57.6 -21.87 TD[(note)-333(")]TJ/F5 10.91 Tf 32.27 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F1 10.91 Tf -2.97 -13.15 TD[(App)-27(ends)-374(an)-373(informational)-374(message)-373(to)-374(the)-374(log)-373(\014le.)]TJ/F4 10.91 Tf 246.12 0 TD[(note)]TJ/F1 10.91 Tf 26.98 0 TD[(writes)-373(in)-374(the)-373(log)-374(\014les)]TJ -273.1 -13.15 TD[(a)-431(message)-432(b)-27(eginning)-432(with)-432(`)]TJ/F4 10.91 Tf 133.2 0 TD[(NOTE)]TJ/F1 10.91 Tf 22.9 0 TD[(',)-456(app)-27(ending)-432(the)-432(argumen)27(t)]TJ/F5 10.91 Tf 134.89 0 TD[(string)]TJ/F1 10.91 Tf 27.37 0 TD[(.)-739(Use)]TJ/F4 10.91 Tf 33.13 0 TD[(note)]TJ/F1 10.91 Tf -351.49 -13.15 TD[(sparingly)83(.)]TJ/F4 10.91 Tf 50.52 0 TD[(verbose)]TJ/F1 10.91 Tf 43.76 0 TD[(should)-337(b)-27(e)-337(used)-338(for)-337(most)-337(suc)27(h)-336(messages,)-338(but)-337(in)-337(cases)-337(where)]TJ -94.28 -13.15 TD[(a)-333(message)-333(is)-333(needed)-334(in)-333(the)-333(log)-334(\014le)-333(regardless)-333(of)-334(the)-333(v)27(erb)-27(osit)27(y)-333(lev)27(el)-332(use)]TJ/F4 10.91 Tf 337.49 0 TD[(note)]TJ/F1 10.91 Tf 22.9 0 TD[(.)]TJ/F4 10.91 Tf -417.99 -21.88 TD[(pass)-333(")]TJ/F5 10.91 Tf 32.27 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F1 10.91 Tf -2.97 -13.15 TD[(Declares)-305(a)-305(test)-306(to)-305(ha)26(v)28(e)-304(passed.)]TJ/F4 10.91 Tf 149.71 0 TD[(pass)]TJ/F1 10.91 Tf 26.24 0 TD[(writes)-305(in)-305(the)-306(log)-305(\014les)-306(a)-305(message)-306(b)-27(eginning)]TJ -175.95 -13.15 TD[(with)-295(`)]TJ/F4 10.91 Tf 27.47 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(')-295(\(or)]TJ/F4 10.91 Tf 23.45 0 TD[(XPASS)]TJ/F1 10.91 Tf 28.63 0 TD[(,)-303(if)-295(failure)-296(w)27(as)-295(exp)-28(ected\),)-303(app)-28(ending)-295(the)-296(argumen)27(t)]TJ/F5 10.91 Tf 241.55 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)]TJ/F4 10.91 Tf -428.97 -21.87 TD[(fail)-333(")]TJ/F5 10.91 Tf 32.27 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F1 10.91 Tf -2.97 -13.15 TD[(Declares)-340(a)-340(test)-340(to)-341(ha)27(v)28(e)-339(failed.)]TJ/F4 10.91 Tf 146.67 0 TD[(fail)]TJ/F1 10.91 Tf 26.62 0 TD[(writes)-340(in)-340(the)-340(log)-341(\014les)-340(a)-340(message)-341(b)-27(eginning)]TJ -173.29 -13.15 TD[(with)-295(`)]TJ/F4 10.91 Tf 27.47 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-295(\(or)]TJ/F4 10.91 Tf 23.45 0 TD[(XFAIL)]TJ/F1 10.91 Tf 28.63 0 TD[(,)-303(if)-295(failure)-296(w)27(as)-295(exp)-28(ected\),)-303(app)-28(ending)-295(the)-296(argumen)27(t)]TJ/F5 10.91 Tf 241.55 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)]TJ/F4 10.91 Tf -428.97 -21.88 TD[(unresolved)-333(")]TJ/F5 10.91 Tf 66.64 0 TD[(string)]TJ/F4 10.91 Tf 28.29 0 TD[(")]TJ/F1 10.91 Tf -37.33 -13.15 TD[(Declares)-374(a)-375(test)-375(to)-375(ha)27(v)28(e)-374(an)-375(unresolv)27(ed)-374(outcome.)]TJ/F4 10.91 Tf 234.01 0 TD[(unresolved)]TJ/F1 10.91 Tf 61.37 0 TD[(writes)-374(in)-375(the)-375(log)]TJ -295.38 -13.15 TD[(\014le)-431(a)-432(message)-431(b)-28(eginning)-432(with)-431(`)]TJ/F4 10.91 Tf 151.84 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.28 0 TD[(',)-456(app)-27(ending)-432(the)-432(argumen)27(t)]TJ/F5 10.91 Tf 134.89 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)]TJ -371.37 -13.15 TD[(This)-384(usually)-385(means)-385(the)-384(test)-385(did)-385(not)-385(execute)-384(as)-385(exp)-28(ected,)-397(and)-385(a)-385(h)27(uman)-384(b)-28(eing)]TJ 0 -13.15 TD[(m)27(ust)-304(go)-305(o)27(v)27(er)-304(results)-305(to)-305(determine)-305(if)-306(it)-305(passed)-305(or)-305(failed)-306(\(and)-305(to)-305(impro)27(v)28(e)-305(the)-305(test)]TJ 0 -13.15 TD[(case\).)]TJ/F4 10.91 Tf -57.6 -21.87 TD[(untested)-333(")]TJ/F5 10.91 Tf 55.18 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F1 10.91 Tf -25.88 -13.15 TD[(Declares)-265(a)-265(test)-265(w)27(as)-265(not)-265(run.)]TJ/F4 10.91 Tf 134.62 0 TD[(untested)]TJ/F1 10.91 Tf 48.71 0 TD[(writes)-265(in)-265(the)-265(log)-265(\014le)-266(a)-265(message)-265(b)-28(eginning)]TJ -183.33 -13.15 TD[(with)-353(`)]TJ/F4 10.91 Tf 28.1 0 TD[(UNTESTED)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-358(app)-28(ending)-354(the)-353(argumen)27(t)]TJ/F5 10.91 Tf 131.27 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)-505(F)83(or)-353(example,)-359(y)27(ou)-352(migh)26(t)-352(use)]TJ -232.55 -13.16 TD[(this)-318(in)-318(a)-318(dumm)26(y)-317(test)-318(whose)-319(only)-318(role)-318(is)-319(to)-318(record)-318(that)-319(a)-318(test)-318(do)-28(es)-318(not)-319(y)27(et)-317(exist)]TJ 0 -13.15 TD[(for)-333(some)-333(feature.)]TJ/F4 10.91 Tf -57.6 -21.87 TD[(unsupported)-333(")]TJ/F5 10.91 Tf 72.36 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F1 10.91 Tf -43.06 -13.15 TD[(Declares)-409(that)-410(a)-410(test)-410(case)-409(dep)-28(ends)-410(on)-410(some)-409(facilit)26(y)-408(that)-410(do)-28(es)-410(not)-409(exist)-410(in)-410(the)]TJ 0 -13.15 TD[(testing)-399(en)27(vironmen)27(t.)]TJ/F4 10.91 Tf 105.71 0 TD[(unsupported)]TJ/F1 10.91 Tf 67.36 0 TD[(writes)-399(in)-400(the)-399(log)-400(\014le)-399(a)-400(message)-400(b)-27(eginning)]TJ -173.07 -13.15 TD[(with)-333(`)]TJ/F4 10.91 Tf 27.88 0 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 63 0 TD[(',)-333(app)-28(ending)-333(the)-333(argumen)27(t)]TJ/F5 10.91 Tf 130.33 0 TD[(string)]TJ/F1 10.91 Tf 27.37 0 TD[(.)]TJ/F4 10.91 Tf -306.18 -21.88 TD[(get_warning_threshold)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(Returns)-333(the)-333(curren)27(t)-333(v)55(alue)-332(of)]TJ/F4 10.91 Tf 138.79 0 TD[(warning_threshold)]TJ/F1 10.91 Tf 97.36 0 TD[(.)-444(The)-333(default)-334(v)55(alue)-332(is)-334(3.)]TJ/F4 10.91 Tf -293.75 -21.87 TD[(set_warning_threshold)]TJ/F5 10.91 Tf 123.91 0 TD[(threshold)]TJ/F1 10.91 Tf -66.31 -13.15 TD[(Sets)-265(the)-266(v)54(alue)-264(of)]TJ/F4 10.91 Tf 79.54 0 TD[(warning_threshold)]TJ/F1 10.91 Tf 97.36 0 TD[(.)-421(A)-266(v)54(alue)-264(of)]TJ/F4 10.91 Tf 57.85 0 TD[(0)]TJ/F1 10.91 Tf 8.62 0 TD[(disables)-265(it:)-411(calls)-266(to)]TJ/F4 10.91 Tf 90.94 0 TD[(warning)]TJ/F1 10.91 Tf -334.31 -13.15 TD[(will)-333(not)-333(turn)-333(a)-334(`)]TJ/F4 10.91 Tf 76.39 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(')-333(or)-333(`)]TJ/F4 10.91 Tf 23.06 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-333(in)27(to)-332(an)-334(`)]TJ/F4 10.91 Tf 46.97 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[('.)]TJ/F4 10.91 Tf -307.11 -21.87 TD[(transform)-333(")]TJ/F5 10.91 Tf 60.91 0 TD[(to)-27(olname)]TJ/F4 10.91 Tf 44.55 0 TD[(")]TJ/F1 10.91 Tf -47.86 -13.15 TD[(Generates)-416(a)-416(string)-417(for)-416(the)-417(name)-416(of)-416(a)-417(to)-28(ol)-416(as)-416(it)-417(w)27(as)-415(con\014gured)-417(and)-416(installed,)]TJ 0 -13.16 TD[(giv)27(en)-300(its)-302(nativ)27(e)-301(name)-301(\(as)-302(the)-302(argumen)27(t)]TJ/F5 10.91 Tf 188.34 0 TD[(to)-27(olname)]TJ/F1 10.91 Tf 44.55 0 TD[(\).)-433(This)-302(mak)27(es)-301(the)-301(assumption)]TJ -232.89 -13.15 TD[(that)-528(all)-529(to)-27(ols)-529(are)-528(installed)-529(using)-528(the)-529(same)-528(naming)-529(con)27(v)28(en)27(tions:)-833(it)-529(extrap-)]TJ 0 -13.15 TD[(olates)-568(from)-569(the)-568(in)26(v)28(o)-27(cation)-568(name)-569(for)-568(`)]TJ/F4 10.91 Tf 192.49 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[('.)-1150(F)83(or)-568(example,)-627(if)-569(y)27(ou)-568(call)]TJ ET 0 g 0 G
-endstream
-endobj
-146 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F5 31 0 R
->>
-endobj
-144 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 146 0 R
->>
-endobj
-149 0 obj
-<<
-/Length 8937
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(25)]TJ/F4 10.91 Tf 57.6 -23.91 TD[(runtest)]TJ/F1 10.91 Tf 46.52 0 TD[(as)-589(`)]TJ/F4 10.91 Tf 19.23 0 TD[(m68k-vxworks-runtest)]TJ/F1 10.91 Tf 114.54 0 TD[(',)-653(the)-590(result)-590(of)-590(`)]TJ/F4 10.91 Tf 89.86 0 TD[(transform)-333("gcc")]TJ/F1 10.91 Tf 87.45 0 TD[(')-589(is)]TJ -357.6 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(m68k-vxworks-gcc)]TJ/F1 10.91 Tf 91.64 0 TD[('.)]TJ/F4 10.91 Tf -152.27 -22.12 TD[(ishost)-333(")]TJ/F5 10.91 Tf 43.73 0 TD[(host)]TJ/F4 10.91 Tf 20.29 0 TD[(")]TJ/F1 10.91 Tf -6.42 -13.15 TD[(T)83(ests)-223(for)-223(a)-224(particular)]TJ/F8 10.91 Tf 99.66 0 TD[(host)]TJ/F1 10.91 Tf 22.71 0 TD[(en)27(vironmen)28(t.)-407(If)-223(the)-224(curren)27(tly)-222(con\014gured)-224(host)-223(matc)27(hes)]TJ -122.37 -13.15 TD[(the)-367(argumen)27(t)-367(string,)-376(the)-367(result)-368(is)]TJ/F4 10.91 Tf 164.12 0 TD[(1)]TJ/F1 10.91 Tf 5.73 0 TD[(;)-384(otherwise)-368(the)-367(result)-368(is)]TJ/F4 10.91 Tf 117.44 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F5 10.91 Tf 8.99 0 TD[(host)]TJ/F1 10.91 Tf 24.31 0 TD[(m)27(ust)-366(b)-28(e)-368(a)]TJ -326.32 -13.15 TD[(full)-268(three-part)]TJ/F4 10.91 Tf 69.25 0 TD[(configure)]TJ/F1 10.91 Tf 54.48 0 TD[(host)-268(name;)-290(in)-269(particular,)-281(y)27(ou)-268(ma)27(y)-267(not)-269(use)-268(the)-269(shorter)]TJ -123.73 -13.15 TD[(nic)27(knames)-258(supp)-28(orted)-260(b)27(y)]TJ/F4 10.91 Tf 116.83 0 TD[(configure)]TJ/F1 10.91 Tf 54.38 0 TD[(\(but)-259(y)27(ou)-259(can)-260(use)-259(wildcard)-260(c)27(haracters,)-274(using)]TJ -171.21 -13.15 TD[(shell)-333(syn)27(tax,)-332(to)-334(sp)-27(ecify)-334(sets)-333(of)-334(names\).)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(istarget)-333(")]TJ/F5 10.91 Tf 55.18 0 TD[(target)]TJ/F4 10.91 Tf 28.75 0 TD[(")]TJ/F1 10.91 Tf -26.33 -13.15 TD[(T)83(ests)-437(for)-438(a)-438(particular)]TJ/F8 10.91 Tf 109.01 0 TD[(tar)51(get)]TJ/F1 10.91 Tf 32.72 0 TD[(en)27(vironmen)28(t.)-757(If)-438(the)-437(curren)26(tly)-436(con\014gured)-438(target)]TJ -141.73 -13.15 TD[(matc)27(hes)-374(the)-375(argumen)27(t)-374(string,)-386(the)-375(result)-375(is)]TJ/F4 10.91 Tf 207.28 0 TD[(1)]TJ/F1 10.91 Tf 5.73 0 TD[(;)-396(otherwise)-375(the)-375(result)-375(is)]TJ/F4 10.91 Tf 117.9 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F5 10.91 Tf 9.25 0 TD[(target)]TJ/F1 10.91 Tf -345.89 -13.15 TD[(m)27(ust)-384(b)-28(e)-385(a)-385(full)-385(three-part)]TJ/F4 10.91 Tf 124.46 0 TD[(configure)]TJ/F1 10.91 Tf 55.74 0 TD[(target)-385(name;)-410(in)-385(particular,)-398(y)26(ou)-384(ma)27(y)-384(not)]TJ -180.2 -13.15 TD[(use)-340(the)-341(shorter)-341(nic)26(knames)-340(supp)-27(orted)-341(b)26(y)]TJ/F4 10.91 Tf 194.47 0 TD[(configure)]TJ/F1 10.91 Tf 55.26 0 TD[(\(but)-340(y)26(ou)-340(can)-341(use)-341(wildcard)]TJ -249.73 -13.15 TD[(c)27(haracters,)-356(using)-353(shell)-353(syn)27(tax,)-357(to)-352(sp)-28(ecify)-353(sets)-352(of)-353(names\).)-503(If)-353(it)-352(is)-353(passed)-353(a)]TJ/F4 10.91 Tf 351.49 0 TD[(NULL)]TJ/F1 10.91 Tf -351.49 -13.15 TD[(string,)-333(then)-333(it)-333(returns)-334(the)-333(name)-333(of)-334(the)-333(build)-333(canonical)-334(con\014guration.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(isbuild)-333(")]TJ/F5 10.91 Tf 49.45 0 TD[(host)]TJ/F4 10.91 Tf 20.3 0 TD[(")]TJ/F1 10.91 Tf -12.15 -13.15 TD[(T)83(ests)-356(for)-357(a)-357(particular)]TJ/F8 10.91 Tf 105.48 0 TD[(build)-379(host)]TJ/F1 10.91 Tf 50.88 0 TD[(en)27(vironmen)28(t.)-514(If)-357(the)-356(curren)26(tly)-356(con\014gured)-356(host)]TJ -156.36 -13.15 TD[(matc)27(hes)-423(the)-424(argumen)26(t)-423(string,)-447(the)-425(result)-424(is)]TJ/F4 10.91 Tf 211.17 0 TD[(1)]TJ/F1 10.91 Tf 5.73 0 TD[(;)-469(otherwise)-425(the)-424(result)-425(is)]TJ/F4 10.91 Tf 120.85 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F5 10.91 Tf 10.86 0 TD[(host)]TJ/F1 10.91 Tf -354.34 -13.15 TD[(m)27(ust)-445(b)-27(e)-446(a)-446(full)-446(three-part)]TJ/F4 10.91 Tf 127.77 0 TD[(configure)]TJ/F1 10.91 Tf 56.41 0 TD[(host)-445(name;)-502(in)-446(particular,)-474(y)27(ou)-445(ma)27(y)-445(not)]TJ -184.18 -13.15 TD[(use)-340(the)-341(shorter)-341(nic)26(knames)-340(supp)-27(orted)-341(b)26(y)]TJ/F4 10.91 Tf 194.47 0 TD[(configure)]TJ/F1 10.91 Tf 55.26 0 TD[(\(but)-340(y)26(ou)-340(can)-341(use)-341(wildcard)]TJ -249.73 -13.16 TD[(c)27(haracters,)-356(using)-353(shell)-353(syn)27(tax,)-357(to)-352(sp)-28(ecify)-353(sets)-352(of)-353(names\).)-503(If)-353(it)-352(is)-353(passed)-353(a)]TJ/F4 10.91 Tf 351.49 0 TD[(NULL)]TJ/F1 10.91 Tf -351.49 -13.15 TD[(string,)-333(then)-333(it)-333(returns)-334(the)-333(name)-333(of)-334(the)-333(build)-333(canonical)-334(con\014guration.)]TJ 0 -16.14 TD[(item)-376(is3w)27(a)28(y)]TJ/F4 10.91 Tf 60.69 0 TD[(")]TJ/F5 10.91 Tf 5.73 0 TD[(host)]TJ/F4 10.91 Tf 20.3 0 TD[(")]TJ/F1 10.91 Tf 9.83 0 TD[(T)83(ests)-375(for)-377(a)-376(canadian)-376(cross.)-574(This)-376(is)-376(when)-376(the)-377(tests)-376(will)-376(b)-28(e)]TJ -96.55 -13.15 TD[(run)-279(on)-279(a)-279(remotly)-280(hosted)-279(cross)-279(compiler.)-427(If)-279(it)-280(is)-279(a)-279(canadian)-279(cross,)-291(then)-279(the)-279(result)]TJ 0 -13.15 TD[(is)]TJ/F4 10.91 Tf 10.97 0 TD[(1)]TJ/F1 10.91 Tf 5.73 0 TD[(;)-333(otherwise)-333(the)-333(result)-334(is)]TJ/F4 10.91 Tf 115.39 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F4 10.91 Tf -195.42 -22.11 TD[(isnative)]TJ/F1 10.91 Tf 57.6 0 TD[(T)83(ests)-296(whether)-296(the)-297(curren)27(t)-296(con\014guration)-296(has)-297(the)-297(same)-296(host)-297(and)-297(target.)-432(When)-296(it)]TJ 0 -13.15 TD[(runs)-365(in)-365(a)]TJ/F8 10.91 Tf 47.19 0 TD[(native)]TJ/F1 10.91 Tf 33.52 0 TD[(con\014guration)-365(this)-365(pro)-27(cedure)-365(returns)-365(a)]TJ/F4 10.91 Tf 186.54 0 TD[(1)]TJ/F1 10.91 Tf 5.73 0 TD[(;)-380(otherwise)-365(it)-365(returns)]TJ -272.98 -13.16 TD[(a)]TJ/F4 10.91 Tf 9.09 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F4 10.91 Tf -72.42 -22.11 TD[(load_lib)-333(")]TJ/F5 10.91 Tf 55.18 0 TD[(library-\014le)]TJ/F4 10.91 Tf 50.07 0 TD[(")]TJ/F1 10.91 Tf -47.65 -13.15 TD[(Loads)-500(the)-500(\014le)]TJ/F5 10.91 Tf 73.55 0 TD[(library-\014le)]TJ/F1 10.91 Tf 55.52 0 TD[(b)27(y)-499(searc)27(hing)-499(a)-500(\014xed)-500(path)-500(built)-500(in)27(to)]TJ/F4 10.91 Tf 184.63 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(.)-944(If)]TJ -353.79 -13.15 TD[(DejaGn)27(u)-264(has)-265(b)-27(een)-265(installed,)-279(it)-265(lo)-27(oks)-265(in)-265(a)-265(path)-265(starting)-265(with)-265(the)-265(installed)-265(library)]TJ 0 -13.15 TD[(directory)83(.)-428(If)-286(y)27(ou)-285(are)-285(running)-286(DejaGn)26(u)-284(directly)-286(from)-286(a)-286(source)-286(directory)83(,)-295(without)]TJ 0 -13.16 TD[(\014rst)-440(running)-441(`)]TJ/F4 10.91 Tf 68.53 0 TD[(make)-333(install)]TJ/F1 10.91 Tf 66.63 0 TD[(',)-467(this)-441(path)-441(defaults)-441(to)-441(the)-441(curren)27(t)-440(directory)83(.)-766(In)]TJ -135.16 -13.15 TD[(either)-346(case,)-349(it)-347(then)-346(lo)-28(oks)-346(in)-347(the)-346(curren)27(t)-346(directory)-346(for)-346(a)-347(directory)-346(called)]TJ/F4 10.91 Tf 341.64 0 TD[(lib)]TJ/F1 10.91 Tf 17.18 0 TD[(.)-483(If)]TJ -358.82 -13.15 TD[(there)-411(are)-411(duplicate)-411(de\014nitions,)-431(the)-411(last)-411(one)-411(loaded)-411(tak)27(es)-411(precedence)-411(o)27(v)28(er)-410(the)]TJ 0 -13.15 TD[(earlier)-333(ones.)]TJ/F4 10.91 Tf -57.6 -22.11 TD[(setup_xfail)-333(")]TJ/F5 10.91 Tf 72.36 0 TD[(con\014g)]TJ/F1 10.91 Tf 32.45 0 TD[([)]TJ/F5 10.91 Tf 3.03 0 TD[(bugid)]TJ/F1 10.91 Tf 27.1 0 TD[(])]TJ/F4 10.91 Tf 3.03 0 TD[(")]TJ/F1 10.91 Tf -80.37 -13.15 TD[(Declares)-368(that)-369(the)-369(test)-369(is)-369(exp)-27(ected)-369(to)-369(fail)-369(on)-369(a)-369(particular)-369(set)-368(of)-369(con\014gurations.)]TJ 0 -13.16 TD[(The)]TJ/F5 10.91 Tf 22.64 0 TD[(con\014g)]TJ/F1 10.91 Tf 32.67 0 TD[(argumen)27(t)-352(m)27(ust)-352(b)-28(e)-353(a)-353(list)-353(of)-353(full)-353(three-part)]TJ/F4 10.91 Tf 202.84 0 TD[(configure)]TJ/F1 10.91 Tf 55.4 0 TD[(target)-353(name;)]TJ -313.55 -13.15 TD[(in)-325(particular,)-328(y)27(ou)-325(ma)27(y)-325(not)-326(use)-326(the)-326(shorter)-326(nic)27(knames)-325(supp)-28(orted)-326(b)27(y)]TJ/F4 10.91 Tf 322.86 0 TD[(configure)]TJ/F1 10.91 Tf -322.86 -13.15 TD[(\(but)-241(y)27(ou)-240(can)-241(use)-241(the)-241(common)-241(shell)-241(wildcard)-241(c)27(haracters)-241(to)-241(sp)-27(ecify)-241(sets)-241(of)-242(names\).)]TJ 0 -13.15 TD[(The)]TJ/F5 10.91 Tf 22.81 0 TD[(bugid)]TJ/F1 10.91 Tf 31.11 0 TD[(argumen)27(t)-367(is)-369(optional,)-377(and)-368(used)-369(only)-368(in)-369(the)-368(logging)-369(\014le)-368(output;)-386(use)]TJ -53.92 -13.15 TD[(it)-320(as)-320(a)-320(link)-320(to)-320(a)-320(bug-trac)27(king)-319(system)-320(suc)26(h)-319(as)]TJ/F7 10.91 Tf 213.74 0 TD[(gna)66(ts)]TJ/F1 10.91 Tf 34.58 0 TD[(\(see)-320(section)-320(\\Ov)27(erview")-319(in)]TJ/F5 10.91 Tf -248.32 -13.15 TD[(T)83(rac)28(king)-333(Bugs)-333(With)-333(GNA)82(TS)]TJ/F1 10.91 Tf 139.14 0 TD[(\).)]TJ ET 0 g 0 G
-endstream
-endobj
-150 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F8 52 0 R
-/F7 49 0 R
->>
-endobj
-148 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 150 0 R
->>
-endobj
-153 0 obj
-<<
-/Length 9059
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(26)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 57.6 -23.91 TD[(Once)-391(y)27(ou)-391(use)]TJ/F4 10.91 Tf 69.23 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 63 0 TD[(,)-405(the)]TJ/F4 10.91 Tf 26.88 0 TD[(fail)]TJ/F1 10.91 Tf 27.18 0 TD[(and)]TJ/F4 10.91 Tf 21.85 0 TD[(pass)]TJ/F1 10.91 Tf 27.18 0 TD[(pro)-27(cedures)-392(pro)-27(duce)-392(the)-391(mes-)]TJ -235.32 -13.15 TD[(sages)-463(`)]TJ/F4 10.91 Tf 32.45 0 TD[(XFAIL)]TJ/F1 10.91 Tf 28.64 0 TD[(')-463(and)-464(`)]TJ/F4 10.91 Tf 33.75 0 TD[(XPASS)]TJ/F1 10.91 Tf 28.64 0 TD[(')-463(resp)-28(ectiv)27(ely)83(,)-495(allo)27(wing)-463(y)27(ou)-463(to)-464(distinguish)-464(exp)-27(ected)]TJ -123.48 -13.15 TD[(failures)-333(\(and)-333(unexp)-28(ected)-333(success!\))-445(from)-333(other)-333(test)-334(outcomes.)]TJ/F8 10.91 Tf 0 -16.14 TD[(Warning:)]TJ/F1 10.91 Tf 50.18 0 TD[(y)27(ou)-267(m)27(ust)-267(clear)-268(the)-268(exp)-28(ected)-268(failure)-268(after)-268(using)]TJ/F4 10.91 Tf 220.27 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 65.92 0 TD[(in)-268(a)-268(test)]TJ -336.37 -13.15 TD[(case.)-438(An)27(y)-314(call)-315(to)]TJ/F4 10.91 Tf 83.33 0 TD[(pass)]TJ/F1 10.91 Tf 26.35 0 TD[(or)]TJ/F4 10.91 Tf 13.16 0 TD[(fail)]TJ/F1 10.91 Tf 26.35 0 TD[(clears)-314(the)-315(exp)-28(ected)-315(failure)-315(implicitly;)-321(if)-315(the)-315(test)]TJ -149.19 -13.15 TD[(has)-359(some)-360(other)-360(outcome,)-366(e.g.)-524(an)-359(error,)-367(y)27(ou)-359(can)-359(call)]TJ/F4 10.91 Tf 252.33 0 TD[(clear_xfail)]TJ/F1 10.91 Tf 66.92 0 TD[(to)-359(clear)-360(the)]TJ -319.25 -13.16 TD[(exp)-27(ected)-363(failure)-362(explicitly)82(.)-531(Otherwise,)-370(the)-362(exp)-28(ected-failure)-363(declaration)-362(applies)]TJ 0 -13.15 TD[(to)-333(whatev)27(er)-332(test)-334(runs)-333(next,)-333(leading)-334(to)-333(surprising)-333(results.)]TJ/F4 10.91 Tf -57.6 -22.11 TD[(clear_xfail)]TJ/F5 10.91 Tf 66.64 0 TD[(con\014g)]TJ/F1 10.91 Tf -9.04 -13.15 TD[(Cancel)-258(an)-258(exp)-28(ected)-258(failure)-258(\(previously)-258(declared)-258(with)]TJ/F4 10.91 Tf 248.65 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 63 0 TD[(\))-258(for)-258(a)-258(partic-)]TJ -311.65 -13.15 TD[(ular)-323(set)-324(of)-324(con\014gurations.)-441(The)]TJ/F5 10.91 Tf 148.52 0 TD[(con\014g)]TJ/F1 10.91 Tf 32.35 0 TD[(argumen)27(t)-323(is)-323(a)-324(list)-324(of)-324(con\014guration)-324(target)]TJ -180.87 -13.16 TD[(names.)-745(It)-433(is)-434(only)-433(necessary)-434(to)-433(call)]TJ/F4 10.91 Tf 175.87 0 TD[(clear_xfail)]TJ/F1 10.91 Tf 67.73 0 TD[(if)-433(a)-434(test)-433(case)-434(ends)-433(without)]TJ -243.6 -13.15 TD[(calling)-333(either)]TJ/F4 10.91 Tf 65.49 0 TD[(pass)]TJ/F1 10.91 Tf 26.54 0 TD[(or)]TJ/F4 10.91 Tf 13.36 0 TD[(fail)]TJ/F1 10.91 Tf 22.91 0 TD[(,)-333(after)-333(calling)]TJ/F4 10.91 Tf 67 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 63 0 TD[(.)]TJ/F4 10.91 Tf -315.9 -22.11 TD[(verbose)]TJ/F1 10.91 Tf 43.73 0 TD[([)]TJ/F4 10.91 Tf 3.03 0 TD[(-log)]TJ/F1 10.91 Tf 22.91 0 TD[(])-333([)]TJ/F4 10.91 Tf 9.69 0 TD[(-n)]TJ/F1 10.91 Tf 11.46 0 TD[(])-333([)]TJ/F4 10.91 Tf 9.69 0 TD[(--)]TJ/F1 10.91 Tf 11.46 0 TD[(])]TJ/F4 10.91 Tf 6.67 0 TD[(")]TJ/F5 10.91 Tf 5.72 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F5 10.91 Tf 9.36 0 TD[(n)27(um)28(b)-27(er)]TJ/F1 10.91 Tf -104.42 -13.15 TD[(T)83(est)-452(cases)-452(can)-453(use)-453(this)-452(function)-453(to)-452(issue)-453(helpful)-452(messages)-453(dep)-28(ending)-452(on)-453(the)]TJ 0 -13.15 TD[(n)27(um)28(b)-27(er)-334(of)-333(`)]TJ/F4 10.91 Tf 55.19 0 TD[(--verbose)]TJ/F1 10.91 Tf 51.55 0 TD[(')-333(options)-334(on)-334(the)]TJ/F4 10.91 Tf 78.87 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(command)-333(line.)-446(It)-334(prin)27(ts)]TJ/F5 10.91 Tf 117.7 0 TD[(string)]TJ/F1 10.91 Tf -347.04 -13.16 TD[(if)-455(the)-456(v)54(alue)-454(of)-456(the)-456(v)55(ariable)]TJ/F4 10.91 Tf 137.14 0 TD[(verbose)]TJ/F1 10.91 Tf 45.06 0 TD[(is)-455(higher)-456(than)-456(or)-456(equal)-455(to)-456(the)-456(optional)]TJ/F5 10.91 Tf -182.2 -13.15 TD[(n)27(um)28(b)-27(er)]TJ/F1 10.91 Tf 36.09 0 TD[(.)-473(The)-343(default)-343(v)55(alue)-342(for)]TJ/F5 10.91 Tf 112.58 0 TD[(n)27(um)28(b)-27(er)]TJ/F1 10.91 Tf 40.62 0 TD[(is)-342(1.)-474(Use)-343(the)-343(optional)-343(`)]TJ/F4 10.91 Tf 110.25 0 TD[(-log)]TJ/F1 10.91 Tf 22.91 0 TD[(')-342(argumen)26(t)]TJ -322.45 -13.15 TD[(to)-370(cause)]TJ/F5 10.91 Tf 43.29 0 TD[(string)]TJ/F1 10.91 Tf 32.34 0 TD[(to)-370(alw)27(a)28(ys)-370(b)-27(e)-371(added)-370(to)-370(the)-371(log)-370(\014le,)-379(ev)26(en)-369(if)-370(it)-371(w)27(on't)-369(b)-28(e)-370(prin)26(ted.)]TJ -75.63 -13.15 TD[(Use)-340(the)-341(optional)-340(`)]TJ/F4 10.91 Tf 85.45 0 TD[(-n)]TJ/F1 10.91 Tf 11.45 0 TD[(')-340(argumen)27(t)-340(to)-340(prin)26(t)]TJ/F5 10.91 Tf 96.14 0 TD[(string)]TJ/F1 10.91 Tf 32.01 0 TD[(without)-340(a)-341(trailing)-340(newline.)-466(Use)]TJ -225.05 -13.15 TD[(the)-333(optional)-333(`)]TJ/F4 10.91 Tf 64.24 0 TD[(--)]TJ/F1 10.91 Tf 11.46 0 TD[(')-333(argumen)27(t)-332(if)]TJ/F5 10.91 Tf 65.48 0 TD[(string)]TJ/F1 10.91 Tf 31.94 0 TD[(b)-27(egins)-334(with)]TJ/F4 10.91 Tf 58.54 0 TD[(")]TJ/F1 10.91 Tf 5.73 0 TD[(-)]TJ/F4 10.91 Tf 3.64 0 TD[(")]TJ/F1 10.91 Tf 5.72 0 TD[(.)]TJ/F2 13.09 Tf -304.35 -29.89 TD[(5.3.2)-562(Remote)-375(Comm)30(unication)-374(Pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(lib/remote.exp)]TJ/F1 10.91 Tf 80.19 0 TD[(')-432(de\014nes)-433(these)-433(functions,)-458(for)-433(establishing)-433(and)-433(managing)-433(comm)27(unica-)]TJ -98.16 -13.15 TD[(tions:)]TJ/F8 10.91 Tf 14.94 -16.14 TD[(Pr)51(o)51(c)51(e)51(dur)51(es)-469(to)-471(establish)-470(a)-471(c)50(onne)52(ction:)]TJ/F1 10.91 Tf 187.47 0 TD[(Eac)27(h)-454(of)-456(these)-456(pro)-28(cedures)-456(tries)-455(to)-456(establish)-456(the)]TJ -202.41 -13.15 TD[(connection)-338(up)-338(to)-338(three)-339(times)-338(b)-28(efore)-338(returning.)-460(W)83(arnings)-338(\(if)-338(retries)-338(will)-339(con)27(tin)28(ue\))-337(or)-339(errors)]TJ 0 -13.15 TD[(\(if)-463(the)-464(attempt)-464(is)-464(abandoned\))-464(rep)-28(ort)-464(on)-463(comm)26(unication)-463(failures.)-836(The)-464(result)-463(for)-464(an)26(y)-462(of)]TJ 0 -13.15 TD[(these)-334(pro)-28(cedures)-335(is)-334(either)]TJ/F4 10.91 Tf 124.88 0 TD[(-1)]TJ/F1 10.91 Tf 11.45 0 TD[(,)-335(when)-334(the)-335(connection)-335(cannot)-334(b)-28(e)-335(established,)-335(or)-334(the)-335(spa)27(wn)-334(ID)]TJ -136.33 -13.15 TD[(returned)-333(b)27(y)-332(the)]TJ/F4 10.91 Tf 78.24 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(command)]TJ/F4 10.91 Tf 49.7 0 TD[(spawn)]TJ/F1 10.91 Tf 28.64 0 TD[(.)]TJ -179.64 -16.14 TD[(It)-295(use)-295(the)-295(v)55(alue)-295(of)-295(the)]TJ/F4 10.91 Tf 106.35 0 TD[(connect)]TJ/F1 10.91 Tf 43.32 0 TD[(\014eld)-295(in)-295(the)]TJ/F4 10.91 Tf 53.9 0 TD[(target_info)]TJ/F1 10.91 Tf 66.22 0 TD[(arra)27(y)-294(\(w)27(as)]TJ/F4 10.91 Tf 52.92 0 TD[(connectmode)]TJ/F1 10.91 Tf 66.22 0 TD[(as)-295(the)]TJ -403.87 -13.15 TD[(t)27(yp)-26(e)-414(of)-413(connection)-413(to)-413(mak)26(e.)-683(Curren)27(t)-412(supp)-28(orted)-413(connection)-413(t)26(yp)-26(es)-414(are)-413(tip,)-433(k)27(ermit,)-432(telnet,)]TJ 0 -13.15 TD[(rsh,)-411(rlogin,)-412(and)-396(netdata.)-633(If)-396(the)]TJ/F4 10.91 Tf 156.25 0 TD[(--reboot)]TJ/F1 10.91 Tf 50.14 0 TD[(option)-396(w)27(as)-395(used)-396(on)-396(the)-396(run)26(test)-395(command)-396(line,)]TJ -206.39 -13.15 TD[(then)-333(the)-333(target)-333(is)-334(reb)-28(o)-27(oted)-334(b)-28(efore)-333(the)-333(connection)-334(is)-333(made.)]TJ/F4 10.91 Tf 0 -22.12 TD[(remote_open)]TJ/F5 10.91 Tf 66.64 0 TD[(t)27(yp)-26(e)]TJ/F8 10.91 Tf -9.04 -13.15 TD[(R)51(emote)-430(Conne)50(ction)-430(Pr)50(o)51(c)51(e)51(dur)51(e.)]TJ/F1 10.91 Tf 155.43 0 TD[(This)-412(is)-413(passed)]TJ/F8 10.91 Tf 73.15 0 TD[(host)]TJ/F1 10.91 Tf 24.77 0 TD[(or)]TJ/F8 10.91 Tf 14.24 0 TD[(tar)51(get)]TJ/F1 10.91 Tf 26.9 0 TD[(.)-682(Host)-413(or)-413(target)]TJ -294.49 -13.15 TD[(refers)-344(to)-345(whether)-344(it)-345(is)-345(a)-344(connection)-345(to)-345(a)-344(remote)-345(target,)-347(or)-345(a)-345(remote)-344(host.)-479(This)]TJ 0 -13.15 TD[(op)-27(ens)-379(the)-379(connection)-378(to)-379(the)-379(desired)-378(target)-379(or)-379(host)-378(using)-379(the)-379(default)-378(v)54(alues)-377(in)]TJ 0 -13.15 TD[(the)-270(con\014guration)-271(system.)-424(It)-270(returns)-271(that)]TJ/F4 10.91 Tf 194.81 0 TD[(spawn_id)]TJ/F1 10.91 Tf 48.78 0 TD[(of)-270(the)-271(pro)-28(cess)-271(that)-270(manages)]TJ -243.59 -13.15 TD[(the)-350(connection.)-497(This)-351(v)55(alue)-350(can)-350(b)-28(e)-351(used)-351(in)]TJ/F4 10.91 Tf 205.05 0 TD[(expect)]TJ/F1 10.91 Tf 38.19 0 TD[(or)]TJ/F4 10.91 Tf 13.55 0 TD[(exp_send)]TJ/F1 10.91 Tf 49.65 0 TD[(statemen)27(ts,)-354(or)]TJ -306.44 -13.15 TD[(passed)-282(to)-282(other)-282(pro)-28(cedures)-282(that)-282(need)-282(the)-282(connection)-283(pro)-27(cess's)-282(id.)-428(This)-282(also)-282(sets)]TJ 0 -13.16 TD[(the)]TJ/F4 10.91 Tf 18.79 0 TD[(fileid)]TJ/F1 10.91 Tf 38 0 TD[(\014eld)-333(in)-333(the)]TJ/F4 10.91 Tf 55.15 0 TD[(target_info)]TJ/F1 10.91 Tf 66.64 0 TD[(arra)27(y)84(.)]TJ ET 0 g 0 G
-endstream
-endobj
-154 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F8 52 0 R
-/F5 31 0 R
-/F2 12 0 R
->>
-endobj
-152 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 154 0 R
->>
-endobj
-157 0 obj
-<<
-/Length 8999
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(27)]TJ/F4 10.91 Tf 0 -23.91 TD[(remote_close)]TJ/F5 10.91 Tf 72.36 0 TD[(shellid)]TJ/F8 10.91 Tf -14.76 -13.15 TD[(shel)-51(lid)]TJ/F1 10.91 Tf 35.06 0 TD[(is)-350(v)55(alue)-350(returned)-350(b)27(y)-349(a)-351(call)-350(to)]TJ/F4 10.91 Tf 142.32 0 TD[(remote_open)]TJ/F1 10.91 Tf 63 0 TD[(.)-495(This)-350(closes)-350(the)-351(connection)]TJ -240.38 -13.15 TD[(to)-301(the)-302(target)-302(so)-302(resources)-301(can)-302(b)-28(e)-302(used)-302(b)27(y)-301(others.)-433(This)-302(parameter)-302(can)-302(b)-28(e)-301(left)-302(o\013)]TJ 0 -13.15 TD[(if)-333(the)]TJ/F4 10.91 Tf 28.79 0 TD[(fileid)]TJ/F1 10.91 Tf 38 0 TD[(\014eld)-333(in)-333(the)]TJ/F4 10.91 Tf 55.15 0 TD[(target_info)]TJ/F1 10.91 Tf 66.64 0 TD[(arra)27(y)-332(is)-333(set.)]TJ/F4 10.91 Tf -246.18 -22.12 TD[(telnet)]TJ/F5 10.91 Tf 38 0 TD[(hostname)-389(p)-28(ort)]TJ/F4 10.91 Tf -38 -13.15 TD[(rlogin)]TJ/F5 10.91 Tf 38 0 TD[(hostname)]TJ/F4 10.91 Tf -38 -13.15 TD[(rsh)]TJ/F5 10.91 Tf 20.82 0 TD[(hostname)]TJ/F8 10.91 Tf 36.78 -13.15 TD[(IP)-283(network)-284(pr)50(o)51(c)51(e)51(dur)51(es.)]TJ/F5 10.91 Tf 111.43 0 TD[(hostname)]TJ/F1 10.91 Tf 48.89 0 TD[(refers)-253(to)-253(the)-253(IP)-253(address)-253(or)-253(name)-253(\(for)-253(example,)]TJ -160.32 -13.15 TD[(an)-263(en)27(try)-263(in)-263(`)]TJ/F4 10.91 Tf 57.14 0 TD[(/etc/hosts)]TJ/F1 10.91 Tf 57.27 0 TD[('\))-263(for)-264(this)-263(target.)-421(The)-264(pro)-28(cedure)-263(names)-264(re\015ect)-263(the)-264(Unix)]TJ -114.41 -13.16 TD[(utilit)27(y)-338(used)-340(to)-340(establish)-339(a)-340(connection.)-464(The)-339(optional)]TJ/F5 10.91 Tf 249.36 0 TD[(p)-27(ort)]TJ/F1 10.91 Tf 24.28 0 TD[(is)-339(used)-340(to)-340(sp)-27(ecify)-340(the)]TJ -273.64 -13.15 TD[(IP)-383(p)-28(ort)-384(n)27(um)28(b)-27(er.)-596(The)-383(v)54(alue)-383(of)-383(the)]TJ/F4 10.91 Tf 169.71 0 TD[(netport)]TJ/F1 10.91 Tf 44.27 0 TD[(\014eld)-383(in)-384(the)]TJ/F4 10.91 Tf 56.81 0 TD[(target_info)]TJ/F1 10.91 Tf 67.18 0 TD[(arra)27(y)-382(is)]TJ -337.97 -13.15 TD[(used.)-712(\(w)26(as)]TJ/F4 10.91 Tf 58.27 0 TD[($netport)]TJ/F1 10.91 Tf 45.82 0 TD[(\))-422(This)-423(v)54(alue)-421(has)-423(t)26(w)28(o)-422(parts,)-445(the)-423(hostname)-423(and)-422(the)-423(p)-28(ort)]TJ -104.09 -13.15 TD[(n)27(um)28(b)-27(er,)-297(sep)-28(erated)-288(b)27(y)-287(a)]TJ/F8 10.91 Tf 114.01 0 TD[(:)]TJ/F1 10.91 Tf 3.35 0 TD[(.)-429(If)]TJ/F4 10.91 Tf 18.13 0 TD[(host)]TJ/F1 10.91 Tf 26.05 0 TD[(or)]TJ/F4 10.91 Tf 12.87 0 TD[(target)]TJ/F1 10.91 Tf 37.51 0 TD[(is)-288(used)-288(in)-288(the)]TJ/F4 10.91 Tf 65.43 0 TD[(hostname)]TJ/F1 10.91 Tf 48.96 0 TD[(\014eld,)-297(than)]TJ -326.31 -13.15 TD[(the)-333(con\014g)-333(arra)27(y)-333(is)-333(used)-333(for)-334(all)-333(information.)]TJ/F4 10.91 Tf -57.6 -22.11 TD[(tip)]TJ/F5 10.91 Tf 20.82 0 TD[(p)-27(ort)]TJ/F8 10.91 Tf 36.78 0 TD[(Serial)-314(line)-315(pr)50(o)51(c)51(e)51(dur)51(e.)]TJ/F1 10.91 Tf 103.69 0 TD[(Connect)-286(using)-287(the)-287(Unix)-287(utilit)27(y)]TJ/F4 10.91 Tf 147.22 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(.)]TJ/F5 10.91 Tf 7.71 0 TD[(p)-27(ort)]TJ/F1 10.91 Tf 23.7 0 TD[(m)27(ust)-286(b)-27(e)-287(a)-287(name)]TJ -299.5 -13.16 TD[(from)-300(the)]TJ/F4 10.91 Tf 43.85 0 TD[(tip)]TJ/F1 10.91 Tf 20.46 0 TD[(con\014guration)-300(\014le)-300(`)]TJ/F4 10.91 Tf 85.98 0 TD[(/etc/remote)]TJ/F1 10.91 Tf 63 0 TD[('.)-433(Often,)-307(this)-300(is)-300(called)-301(`)]TJ/F4 10.91 Tf 109.23 0 TD[(hardwire)]TJ/F1 10.91 Tf 45.82 0 TD[(',)]TJ -368.34 -13.15 TD[(or)-301(something)-301(lik)27(e)-300(`)]TJ/F4 10.91 Tf 87.52 0 TD[(ttya)]TJ/F1 10.91 Tf 22.91 0 TD[('.)-433(This)-301(\014le)-302(holds)-301(all)-301(the)-301(con\014guration)-301(data)-301(for)-302(the)-301(serial)]TJ -110.43 -13.15 TD[(p)-27(ort.)-677(The)-410(v)54(alue)-409(of)-411(the)]TJ/F4 10.91 Tf 115.94 0 TD[(serial)]TJ/F1 10.91 Tf 38.84 0 TD[(\014eld)-410(in)-411(the)]TJ/F4 10.91 Tf 57.68 0 TD[(target_info)]TJ/F1 10.91 Tf 67.48 0 TD[(arra)27(y)-409(is)-411(used.)-676(\(w)26(as)]TJ/F4 10.91 Tf -279.94 -13.15 TD[($serialport)]TJ/F1 10.91 Tf 63 0 TD[(\))-289(If)]TJ/F4 10.91 Tf 17.84 0 TD[(host)]TJ/F1 10.91 Tf 26.06 0 TD[(or)]TJ/F4 10.91 Tf 12.89 0 TD[(target)]TJ/F1 10.91 Tf 37.53 0 TD[(is)-289(used)-290(in)-290(the)]TJ/F4 10.91 Tf 65.49 0 TD[(port)]TJ/F1 10.91 Tf 26.07 0 TD[(\014eld,)-298(than)-290(the)-289(con\014g)-290(arra)27(y)]TJ -248.88 -13.15 TD[(is)-333(used)-333(for)-333(all)-334(information.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(kermit)]TJ/F5 10.91 Tf 38 0 TD[(p)-27(ort)-355(bps)]TJ/F8 10.91 Tf 19.6 -13.15 TD[(Serial)-414(line)-414(pr)50(o)51(c)51(e)51(dur)51(e.)]TJ/F1 10.91 Tf 108.04 0 TD[(Connect)-394(using)-395(the)-395(program)]TJ/F4 10.91 Tf 136.74 0 TD[(kermit)]TJ/F1 10.91 Tf 34.36 0 TD[(.)]TJ/F5 10.91 Tf 9.89 0 TD[(p)-27(ort)]TJ/F1 10.91 Tf 24.88 0 TD[(is)-394(the)-395(device)]TJ -313.91 -13.15 TD[(name,)-299(e.g.)-430(`)]TJ/F4 10.91 Tf 55.84 0 TD[(/dev/ttyb)]TJ/F1 10.91 Tf 51.55 0 TD[('.)]TJ/F5 10.91 Tf 10.75 0 TD[(bps)]TJ/F1 10.91 Tf 20.05 0 TD[(is)-291(the)-291(line)-291(sp)-28(eed)-291(to)-291(use)-291(\(in)-291(bits)-291(p)-28(er)-291(second\))-291(for)-291(the)]TJ -138.19 -13.15 TD[(connection.)-644(The)-400(v)54(alue)-399(of)-400(the)]TJ/F4 10.91 Tf 145.7 0 TD[(serial)]TJ/F1 10.91 Tf 38.73 0 TD[(\014eld)-400(in)-400(the)]TJ/F4 10.91 Tf 57.33 0 TD[(target_info)]TJ/F1 10.91 Tf 67.37 0 TD[(arra)27(y)-399(is)-400(used.)]TJ -309.13 -13.15 TD[(\(w)27(as)]TJ/F4 10.91 Tf 24.98 0 TD[($serialport)]TJ/F1 10.91 Tf 63 0 TD[(\))-311(If)]TJ/F4 10.91 Tf 18.32 0 TD[(host)]TJ/F1 10.91 Tf 26.31 0 TD[(or)]TJ/F4 10.91 Tf 13.13 0 TD[(target)]TJ/F1 10.91 Tf 37.76 0 TD[(is)-311(used)-312(in)-312(the)]TJ/F4 10.91 Tf 66.46 0 TD[(port)]TJ/F1 10.91 Tf 26.31 0 TD[(\014eld,)-316(than)-311(the)-312(con\014g)]TJ -276.27 -13.15 TD[(arra)27(y)-332(is)-333(used)-334(for)-333(all)-333(information.)]TJ/F8 10.91 Tf -57.6 -19.13 TD[(Pr)51(o)51(c)51(e)51(dur)51(es)-357(to)-357(manage)-358(a)-358(c)50(onne)51(ction:)]TJ/F4 10.91 Tf 0 -22.11 TD[(tip_download)]TJ/F5 10.91 Tf 72.36 0 TD[(spa)27(wnid)-371(\014le)]TJ/F1 10.91 Tf -14.76 -13.15 TD[(Do)27(wnload)-271(`)]TJ/F5 10.91 Tf 53.42 0 TD[(\014le)]TJ/F1 10.91 Tf 14.55 0 TD[(')-271(to)-272(the)-272(pro)-28(cess)]TJ/F5 10.91 Tf 74.14 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf 41.94 0 TD[(\(the)-271(v)54(alue)-271(returned)-272(when)-272(the)-272(connection)]TJ -184.05 -13.16 TD[(w)27(as)-453(established\),)-485(using)-455(the)]TJ/F4 10.91 Tf 137.08 0 TD[(~put)]TJ/F1 10.91 Tf 27.86 0 TD[(command)-454(under)]TJ/F4 10.91 Tf 83.28 0 TD[(tip)]TJ/F1 10.91 Tf 17.19 0 TD[(.)-808(Most)-454(often)-455(used)-454(for)]TJ -265.41 -13.15 TD[(single)-334(b)-28(oard)-335(computers)-335(that)-335(require)-335(do)27(wnloading)-334(programs)-335(in)]TJ/F7 10.91 Tf 298.99 0 TD[(asci)-22(i)]TJ/F1 10.91 Tf 28.62 0 TD[(S-records.)]TJ -327.61 -13.15 TD[(Returns)]TJ/F4 10.91 Tf 41.45 0 TD[(1)]TJ/F1 10.91 Tf 9.37 0 TD[(if)-333(an)-333(error)-333(o)-28(ccurs,)]TJ/F4 10.91 Tf 88.67 0 TD[(0)]TJ/F1 10.91 Tf 9.36 0 TD[(otherwise.)]TJ/F4 10.91 Tf -206.45 -22.11 TD[(exit_remote_shell)]TJ/F5 10.91 Tf 101 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf -43.4 -13.15 TD[(Exits)-376(a)-377(remote)-377(pro)-28(cess)-376(started)-377(b)27(y)-376(an)27(y)-376(of)-377(the)-376(connection)-377(pro)-28(cedures.)]TJ/F5 10.91 Tf 335.85 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf -335.85 -13.16 TD[(is)-333(the)-333(result)-333(of)-334(the)-333(connection)-333(pro)-28(cedure)-334(that)-333(started)-333(the)-334(remote)-333(pro)-28(cess.)]TJ/F4 10.91 Tf -57.6 -22.11 TD[(download)]TJ/F5 10.91 Tf 49.45 0 TD[(\014le)]TJ/F1 10.91 Tf 18.19 0 TD[([)]TJ/F5 10.91 Tf 6.67 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf 42.61 0 TD[(])]TJ -59.32 -13.15 TD[(After)-308(y)27(ou)-307(establish)-308(a)-308(connection)-309(to)-308(a)-308(target,)-313(y)27(ou)-308(can)-308(do)27(wnload)-307(programs)-308(using)]TJ 0 -13.15 TD[(this)-436(command.)]TJ/F4 10.91 Tf 79.73 0 TD[(download)]TJ/F1 10.91 Tf 50.59 0 TD[(reads)-436(in)]TJ/F5 10.91 Tf 43.56 0 TD[(\014le)]TJ/F1 10.91 Tf 19.32 0 TD[(\(ob)-55(ject)-437(co)-28(de)-437(in)-437(S-record)-437(format\))-437(and)]TJ -193.2 -13.15 TD[(writes)-325(it)-325(to)-325(the)-325(device)-326(con)27(trolling)-324(this)]TJ/F5 10.91 Tf 183.2 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf 38.55 0 TD[(.)-441(\(F)82(rom)-324(the)-325(p)-28(oin)27(t)-325(of)-325(view)-325(of)-325(the)]TJ -221.75 -13.16 TD[(target,)-333(the)-333(S-record)-333(\014le)-334(comes)-333(in)-333(via)-334(standard)-333(input.\))]TJ 0 -16.13 TD[(If)-419(y)27(ou)-418(ha)26(v)28(e)-418(more)-419(than)-420(one)-419(target)-419(activ)26(e,)-439(y)26(ou)-418(can)-419(use)-420(the)-419(optional)-419(argumen)26(t)]TJ/F5 10.91 Tf 0 -13.16 TD[(spa)27(wnid)]TJ/F1 10.91 Tf 42.15 0 TD[(to)-291(sp)-27(ecify)-292(an)-291(alternativ)27(e)-290(target)-292(\(the)-291(default)-291(is)-291(the)-291(most)-292(recen)27(tly)-290(estab-)]TJ -42.15 -13.15 TD[(lished)]TJ/F5 10.91 Tf 30.97 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf 38.55 0 TD[(.\))]TJ ET 0 g 0 G
-endstream
-endobj
-158 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F8 52 0 R
-/F7 49 0 R
->>
-endobj
-156 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 158 0 R
->>
-endobj
-161 0 obj
-<<
-/Length 7101
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(28)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 13.09 Tf 0 -23.91 TD[(5.3.3)-562(Utilit)30(y)-374(Pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(lib/utils.exp)]TJ/F1 10.91 Tf 74.46 0 TD[(')-333(de\014nes)-333(these)-333(utilit)26(y)-332(pro)-28(cedures:)]TJ/F4 10.91 Tf -92.43 -22.11 TD[(getdirs)]TJ/F5 10.91 Tf 43.73 0 TD[(dir)]TJ/F4 10.91 Tf -43.73 -13.15 TD[(getdirs)]TJ/F5 10.91 Tf 43.73 0 TD[(dir)-405(pattern)]TJ/F1 10.91 Tf 13.87 -13.15 TD[(Returns)-237(a)-238(list)-238(of)-238(all)-238(the)-238(directories)-238(in)-238(the)-238(single)-238(directory)]TJ/F5 10.91 Tf 264.86 0 TD[(dir)]TJ/F1 10.91 Tf 16.74 0 TD[(that)-237(matc)26(h)]TJ/F5 10.91 Tf 54.59 0 TD[(pattern)]TJ/F1 10.91 Tf 35.18 0 TD[(.)]TJ -371.37 -13.16 TD[(If)-341(y)27(ou)-340(do)-341(not)-341(sp)-28(ecify)]TJ/F5 10.91 Tf 102.6 0 TD[(pattern)]TJ/F1 10.91 Tf 35.18 0 TD[(,)]TJ/F4 10.91 Tf 6.77 0 TD[(getdirs)]TJ/F1 10.91 Tf 43.82 0 TD[(assumes)-341(`)]TJ/F4 10.91 Tf 45.11 0 TD[(*)]TJ/F1 10.91 Tf 5.73 0 TD[('.)-467(Y)82(ou)-340(ma)27(y)-340(use)-341(the)-341(common)]TJ -239.21 -13.15 TD[(shell)-358(wildcard)-359(c)26(haracters)-358(in)]TJ/F5 10.91 Tf 134.97 0 TD[(pattern)]TJ/F1 10.91 Tf 35.18 0 TD[(.)-521(If)-359(no)-359(directories)-359(matc)27(h)-358(the)-359(pattern,)-365(then)]TJ -170.15 -13.15 TD[(a)]TJ/F4 10.91 Tf 9.09 0 TD[(NULL)]TJ/F1 10.91 Tf 26.55 0 TD[(string)-333(is)-333(returned.)]TJ/F4 10.91 Tf -93.24 -22.11 TD[(find)]TJ/F5 10.91 Tf 26.55 0 TD[(dir)-405(pattern)]TJ/F1 10.91 Tf 31.05 -13.15 TD[(Searc)27(h)-453(for)-455(\014les)-455(whose)-455(names)-455(matc)27(h)]TJ/F5 10.91 Tf 180.01 0 TD[(pattern)]TJ/F1 10.91 Tf 40.14 0 TD[(\(using)-454(shell)-455(wildcard)-455(c)27(haracters)]TJ -220.15 -13.15 TD[(for)-336(\014lename)-337(expansion\).)-456(Searc)27(h)-336(sub)-28(directories)-336(recursiv)26(ely)84(,)-337(starting)-337(at)]TJ/F5 10.91 Tf 334.25 0 TD[(dir)]TJ/F1 10.91 Tf 13.37 0 TD[(.)-455(The)]TJ -347.62 -13.16 TD[(result)-452(is)-452(the)-453(list)-452(of)-453(\014les)-452(whose)-452(names)-453(matc)27(h;)-511(if)-452(no)-453(\014les)-452(matc)27(h,)-482(the)-452(result)-452(is)]TJ 0 -13.15 TD[(empt)27(y)84(.)-580(Filenames)-378(in)-379(the)-378(result)-379(include)-379(all)-378(in)26(terv)28(ening)-377(sub)-28(directory)-379(names.)-580(If)]TJ 0 -13.15 TD[(no)-333(\014les)-333(matc)27(h)-333(the)-333(pattern,)-333(then)-334(a)]TJ/F4 10.91 Tf 164.64 0 TD[(NULL)]TJ/F1 10.91 Tf 26.54 0 TD[(string)-333(is)-333(returned.)]TJ/F4 10.91 Tf -248.78 -22.11 TD[(which)]TJ/F5 10.91 Tf 32.27 0 TD[(binary)]TJ/F1 10.91 Tf 25.33 -13.15 TD[(Searc)27(hes)-461(the)-463(execution)-463(path)-462(for)-463(an)-462(executable)-463(\014le)]TJ/F5 10.91 Tf 251.41 0 TD[(binary)]TJ/F1 10.91 Tf 30.63 0 TD[(,)-494(lik)26(e)-461(the)-463(the)-463(BSD)]TJ/F4 10.91 Tf -282.04 -13.16 TD[(which)]TJ/F1 10.91 Tf 33.34 0 TD[(utilit)27(y)84(.)-737(This)-431(pro)-28(cedure)-431(uses)-431(the)-431(shell)-431(en)27(vironmen)28(t)-430(v)55(ariable)-430(`)]TJ/F4 10.91 Tf 295.86 0 TD[(PATH)]TJ/F1 10.91 Tf 22.91 0 TD[('.)-737(It)]TJ -352.11 -13.15 TD[(returns)]TJ/F4 10.91 Tf 37.99 0 TD[(0)]TJ/F1 10.91 Tf 9.66 0 TD[(if)-360(the)-360(binary)-361(is)-360(not)-360(in)-361(the)-360(path,)-367(or)-361(if)-360(there)-360(is)-361(no)-360(`)]TJ/F4 10.91 Tf 237.76 0 TD[(PATH)]TJ/F1 10.91 Tf 22.91 0 TD[(')-360(en)27(vironmen)28(t)]TJ -308.32 -13.15 TD[(v)55(ariable.)-443(If)]TJ/F5 10.91 Tf 56.09 0 TD[(binary)]TJ/F1 10.91 Tf 35.21 0 TD[(is)-333(in)-333(the)-333(path,)-334(it)-333(returns)-333(the)-334(full)-333(path)-333(to)]TJ/F5 10.91 Tf 196.24 0 TD[(binary)]TJ/F1 10.91 Tf 30.64 0 TD[(.)]TJ/F4 10.91 Tf -375.78 -22.11 TD[(grep)]TJ/F5 10.91 Tf 26.55 0 TD[(\014lename)-389(regexp)]TJ/F4 10.91 Tf -26.55 -19.13 TD[(grep)]TJ/F5 10.91 Tf 26.55 0 TD[(\014lename)-389(regexp)]TJ/F4 10.91 Tf 78.85 0 TD[(line)]TJ/F1 10.91 Tf -47.8 -13.15 TD[(Searc)27(h)-385(the)-387(\014le)-386(called)]TJ/F5 10.91 Tf 104.47 0 TD[(\014lename)]TJ/F1 10.91 Tf 44.23 0 TD[(\(a)-386(fully)-387(sp)-27(eci\014ed)-387(path\))-386(for)-387(lines)-387(that)-386(con)27(tain)-386(a)]TJ -148.7 -13.15 TD[(matc)27(h)-410(for)-411(regular)-411(expression)]TJ/F5 10.91 Tf 142.72 0 TD[(regexp)]TJ/F1 10.91 Tf 31.24 0 TD[(.)-677(The)-411(result)-411(is)-411(a)-411(list)-411(of)-411(all)-411(the)-411(lines)-411(that)]TJ -173.96 -13.15 TD[(matc)27(h.)-574(If)-377(no)-377(lines)-377(matc)27(h,)-387(the)-377(result)-377(is)-377(an)-377(empt)26(y)-376(string.)-575(Sp)-28(ecify)]TJ/F5 10.91 Tf 313.81 0 TD[(regexp)]TJ/F1 10.91 Tf 35.68 0 TD[(using)]TJ -349.49 -13.15 TD[(the)-333(standard)-333(regular)-333(expression)-334(st)27(yle)-332(used)-334(b)27(y)-332(the)-334(Unix)-333(utilit)27(y)-332(program)]TJ/F4 10.91 Tf 341.39 0 TD[(grep)]TJ/F1 10.91 Tf 22.91 0 TD[(.)]TJ -364.3 -16.14 TD[(Use)-310(the)-311(optional)-311(third)-311(argumen)26(t)-309(`)]TJ/F4 10.91 Tf 160.11 0 TD[(line)]TJ/F1 10.91 Tf 22.91 0 TD[(')-310(to)-311(start)-311(lines)-311(in)-311(the)-311(result)-311(with)-311(the)-311(line)]TJ -183.02 -13.15 TD[(n)27(um)28(b)-27(er)-400(in)]TJ/F5 10.91 Tf 53.91 0 TD[(\014lename)]TJ/F1 10.91 Tf 39.4 0 TD[(.)-645(\(This)-400(argumen)27(t)-399(is)-400(simply)-401(an)-400(option)-400(\015ag;)-434(t)27(yp)-27(e)-400(it)-400(just)-400(as)]TJ -93.31 -13.16 TD[(sho)27(wn|`)]TJ/F4 10.91 Tf 43.39 0 TD[(line)]TJ/F1 10.91 Tf 22.91 0 TD[('.\))]TJ/F4 10.91 Tf -123.9 -22.11 TD[(diff)]TJ/F5 10.91 Tf 26.55 0 TD[(\014lename)-389(\014lename)]TJ/F1 10.91 Tf 31.05 -13.15 TD[(Compares)-373(the)-373(t)27(w)28(o)-372(\014les)-373(and)-373(returns)-373(a)-373(1)-373(if)-373(they)-373(matc)26(h,)-382(or)-373(a)-373(0)-373(if)-373(they)-373(don't.)-563(If)]TJ/F4 10.91 Tf 0 -13.15 TD[(verbose)]TJ/F1 10.91 Tf 43.73 0 TD[(is)-333(set,)-333(then)-333(it'll)-334(prin)27(t)-332(the)-334(di\013erences)-333(to)-333(the)-334(screen.)]TJ/F4 10.91 Tf -101.33 -22.12 TD[(slay)]TJ/F5 10.91 Tf 26.55 0 TD[(name)]TJ/F1 10.91 Tf 31.05 -13.15 TD[(This)-348(lo)-27(ok)-348(in)-349(the)-348(pro)-27(cess)-349(tab)-27(el)-348(for)]TJ/F5 10.91 Tf 163.49 0 TD[(name)]TJ/F1 10.91 Tf 29.86 0 TD[(and)-348(send)-348(it)-348(a)-348(unix)]TJ/F4 10.91 Tf 91.48 0 TD[(SIGINT)]TJ/F1 10.91 Tf 34.36 0 TD[(,)-351(killing)-348(the)]TJ -319.19 -13.15 TD[(pro)-27(cess.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(absolute)]TJ/F5 10.91 Tf 49.45 0 TD[(path)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(This)-333(pro)-28(cedure)-333(tak)27(es)-332(the)-334(relativ)27(e)]TJ/F5 10.91 Tf 161.12 0 TD[(path)]TJ/F1 10.91 Tf 21.82 0 TD[(,)-333(and)-333(con)27(v)27(erts)-332(it)-333(to)-334(an)-333(absolute)-333(path.)]TJ/F4 10.91 Tf -240.54 -22.12 TD[(psource)]TJ/F5 10.91 Tf 43.73 0 TD[(\014lename)]TJ/F1 10.91 Tf 13.87 -13.15 TD[(This)-276(sources)-277(the)-276(\014le)]TJ/F5 10.91 Tf 96.52 0 TD[(\014lename)]TJ/F1 10.91 Tf 39.4 0 TD[(,)-287(and)-277(traps)-277(all)-276(errors.)-426(It)-276(also)-277(ignores)-277(all)-276(extraneous)]TJ -135.92 -13.15 TD[(output.)-444(If)-333(there)-334(w)27(as)-332(an)-333(error)-334(it)-333(returns)-333(a)-334(1,)-333(otherwise)-333(it)-334(returns)-333(a)-333(0.)]TJ ET 0 g 0 G
-endstream
-endobj
-162 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F5 31 0 R
->>
-endobj
-160 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 162 0 R
->>
-endobj
-165 0 obj
-<<
-/Length 6747
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(29)]TJ/F4 10.91 Tf 0 -23.91 TD[(prune)]TJ/F5 10.91 Tf 32.27 0 TD[(list)-355(pattern)]TJ/F1 10.91 Tf 25.33 -13.15 TD[(Remo)27(v)28(e)-386(elemen)27(ts)-386(of)-387(the)-387(Tcl)-387(list)]TJ/F5 10.91 Tf 158.02 0 TD[(list)]TJ/F1 10.91 Tf 14.61 0 TD[(.)-605(Elemen)27(ts)-386(are)-387(\014elds)-387(delimited)-387(b)27(y)-386(spaces.)]TJ -172.63 -13.15 TD[(The)-319(result)-320(is)-319(a)-320(cop)27(y)-319(of)]TJ/F5 10.91 Tf 109.86 0 TD[(list)]TJ/F1 10.91 Tf 14.61 0 TD[(,)-322(without)-319(an)26(y)-318(elemen)26(ts)-318(that)-320(matc)27(h)]TJ/F5 10.91 Tf 168.28 0 TD[(pattern)]TJ/F1 10.91 Tf 35.18 0 TD[(.)-439(Y)82(ou)-319(can)]TJ -327.93 -13.15 TD[(use)-333(the)-333(common)-333(shell)-334(wildcard)-333(c)27(haracters)-333(to)-333(sp)-28(ecify)]TJ/F5 10.91 Tf 251.85 0 TD[(pattern)]TJ/F1 10.91 Tf 35.18 0 TD[(.)]TJ/F4 10.91 Tf -344.63 -22.01 TD[(setenv)]TJ/F5 10.91 Tf 38 0 TD[(v)55(ar)-404(v)55(al)]TJ/F1 10.91 Tf 19.6 -13.15 TD[(Sets)-333(the)-333(v)54(ariable)]TJ/F5 10.91 Tf 82.82 0 TD[(v)55(ar)]TJ/F1 10.91 Tf 19.3 0 TD[(to)-333(the)-333(v)54(alue)]TJ/F5 10.91 Tf 60.3 0 TD[(v)55(al)]TJ/F1 10.91 Tf 13.64 0 TD[(.)]TJ/F4 10.91 Tf -233.66 -22 TD[(unsetenv)]TJ/F5 10.91 Tf 49.45 0 TD[(v)55(ar)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(Unsets)-333(the)-333(en)27(vironmen)27(t)-332(v)55(ariable)]TJ/F5 10.91 Tf 158.06 0 TD[(v)55(ar)]TJ/F4 10.91 Tf -215.66 -22 TD[(getenv)]TJ/F5 10.91 Tf 38 0 TD[(v)55(ar)]TJ/F1 10.91 Tf 19.6 -13.15 TD[(returns)-444(the)-445(v)54(alue)-444(of)]TJ/F5 10.91 Tf 101.96 0 TD[(v)55(ar)]TJ/F1 10.91 Tf 20.52 0 TD[(in)-444(the)-445(en)26(vironmen)28(t)-444(if)-445(it)-445(exists,)-472(otherwise)-445(it)-445(returns)]TJ/F4 10.91 Tf -122.48 -13.15 TD[(NULL)]TJ/F1 10.91 Tf 22.91 0 TD[(.)]TJ/F4 10.91 Tf -80.51 -22 TD[(runtest_file_p)]TJ/F5 10.91 Tf 83.82 0 TD[(run)27(tests)-373(testcase)]TJ/F1 10.91 Tf -26.22 -13.15 TD[(Searc)27(h)]TJ/F5 10.91 Tf 34.88 0 TD[(run)27(tests)]TJ/F1 10.91 Tf 42.13 0 TD[(for)]TJ/F5 10.91 Tf 16.7 0 TD[(testcase)]TJ/F1 10.91 Tf 41.34 0 TD[(and)-333(return)-334(1)-334(if)-334(found,)-334(0)-334(if)-334(not.)]TJ/F5 10.91 Tf 150.12 0 TD[(run)27(tests)]TJ/F1 10.91 Tf 42.12 0 TD[(is)-333(a)-334(list)-334(of)]TJ -327.29 -13.15 TD[(t)27(w)28(o)-327(elemen)26(ts.)-441(The)-329(\014rst)-328(is)-329(the)-328(pathname)-329(of)-328(the)-329(testsuite)-328(exp)-28(ect)-329(script)-328(running.)]TJ 0 -13.15 TD[(The)-317(second)-318(is)-318(a)-317(cop)26(y)-316(of)-318(what)-318(w)27(as)-317(on)-318(the)-317(righ)26(t)-316(side)-318(of)-318(the)]TJ/F4 10.91 Tf 274.86 0 TD[(=)]TJ/F1 10.91 Tf 9.2 0 TD[(if)-317(`)]TJ/F4 10.91 Tf 12.86 0 TD[(foo.exp="...")]TJ/F1 10.91 Tf 74.45 0 TD[(')]TJ -371.37 -13.15 TD[(w)27(as)-358(sp)-28(eci\014ed,)-366(or)-360(an)-359(empt)27(y)-359(string)-359(if)-360(no)-359(suc)26(h)-358(argumen)27(t)-359(is)-359(presen)26(t.)-522(This)-359(is)-360(used)]TJ 0 -13.15 TD[(b)27(y)-332(to)-28(ols)-333(lik)27(e)-333(compilers)-333(where)-333(eac)26(h)-332(testcase)-333(is)-334(a)-333(\014le.)]TJ/F4 10.91 Tf -57.6 -22 TD[(prune_system_crud)]TJ/F5 10.91 Tf 101 0 TD[(system)-333(text)]TJ/F1 10.91 Tf -43.4 -13.16 TD[(F)83(or)-320(system)]TJ/F5 10.91 Tf 55.49 0 TD[(system)]TJ/F1 10.91 Tf 32.55 0 TD[(,)-323(delete)-321(text)-321(the)-321(host)-322(or)-321(target)-321(op)-28(erating)-321(system)-321(migh)27(t)-320(issue)]TJ -88.04 -13.15 TD[(that)-230(will)-230(in)26(terfere)-229(with)-230(pattern)-231(matc)27(hing)-230(of)-230(program)-230(output)-231(in)]TJ/F5 10.91 Tf 291.96 0 TD[(text)]TJ/F1 10.91 Tf 19.09 0 TD[(.)-410(An)-230(example)]TJ -311.05 -13.15 TD[(is)-333(the)-333(message)-333(that)-334(is)-333(prin)27(ted)-333(if)-333(a)-333(shared)-334(library)-333(is)-333(out)-334(of)-333(date.)]TJ/F2 13.09 Tf -57.6 -29.73 TD[(5.3.4)-562(Cross)-375(target)-375(pro)-31(cedure)]TJ/F1 10.91 Tf 14.94 -23.07 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(lib/target.exp)]TJ/F1 10.91 Tf 80.19 0 TD[(')-333(de\014nes)-333(these)-333(utilit)26(y)-332(pro)-28(cedures:)]TJ/F4 10.91 Tf -98.16 -22.01 TD[(push_target)]TJ/F8 10.91 Tf 66.64 0 TD[(name)]TJ/F1 10.91 Tf -9.04 -13.15 TD[(This)-260(mak)27(es)-260(the)-261(target)-261(named)]TJ/F8 10.91 Tf 139.83 0 TD[(name)]TJ/F1 10.91 Tf 29.31 0 TD[(b)-27(e)-261(the)-261(curren)27(t)-260(target)-260(connection.)-421(The)-260(v)54(alue)]TJ -169.14 -13.15 TD[(of)]TJ/F8 10.91 Tf 12.39 0 TD[(name)]TJ/F1 10.91 Tf 30.08 0 TD[(is)-330(an)-331(index)-330(in)27(to)-330(the)]TJ/F4 10.91 Tf 96.27 0 TD[(target_info)]TJ/F1 10.91 Tf 66.6 0 TD[(arra)27(y)-329(and)-331(is)-330(set)-331(in)-330(the)-331(global)-330(con\014g)]TJ -205.34 -13.15 TD[(\014le.)]TJ/F4 10.91 Tf -57.6 -22 TD[(pop_target)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(This)-333(unsets)-333(the)-333(curren)26(t)-332(target)-333(connection.)]TJ/F4 10.91 Tf -57.6 -22 TD[(list_targets)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(This)-333(lists)-333(all)-333(the)-334(supp)-28(orted)-333(targets)-333(for)-334(this)-333(arc)27(hitecture.)]TJ/F4 10.91 Tf -57.6 -22 TD[(push_host)]TJ/F8 10.91 Tf 55.18 0 TD[(name)]TJ/F1 10.91 Tf 2.42 -13.15 TD[(This)-331(mak)27(es)-330(the)-331(host)-331(named)]TJ/F8 10.91 Tf 135.21 0 TD[(name)]TJ/F1 10.91 Tf 30.08 0 TD[(b)-27(e)-331(the)-331(curren)26(t)-330(remote)-331(host)-331(connection.)-444(The)]TJ -165.29 -13.15 TD[(v)55(alue)-350(of)]TJ/F8 10.91 Tf 40.99 0 TD[(name)]TJ/F1 10.91 Tf 30.3 0 TD[(is)-350(an)-351(index)-351(in)27(to)-350(the)]TJ/F4 10.91 Tf 97.38 0 TD[(target_info)]TJ/F1 10.91 Tf 66.82 0 TD[(arra)27(y)-350(and)-350(is)-351(set)-351(in)-351(the)-351(global)]TJ -235.49 -13.15 TD[(con\014g)-333(\014le.)]TJ/F4 10.91 Tf -57.6 -22 TD[(pop_host)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(unsets)-333(the)-333(curren)26(t)-332(host)-333(connection.)]TJ 0 -16.1 TD[(This)-344(in)27(v)28(ok)27(es)-343(the)-345(compiler)-344(as)-345(set)-344(b)27(y)]TJ/F4 10.91 Tf 172.34 0 TD[(CC)]TJ/F1 10.91 Tf 15.21 0 TD[(to)-344(compile)-344(the)-345(\014le)]TJ/F8 10.91 Tf 90.18 0 TD[(\014le)]TJ/F1 10.91 Tf 13.94 0 TD[(.)-477(The)-345(default)-344(op-)]TJ -291.67 -13.16 TD[(tions)-273(for)-274(man)27(y)-273(cross)-273(compilation)-274(targets)-274(are)]TJ/F8 10.91 Tf 209.44 0 TD[(guesse)51(d)]TJ/F1 10.91 Tf 38.96 0 TD[(b)27(y)-272(DejaGn)26(u,)-284(and)-274(these)-274(op-)]TJ -248.4 -13.15 TD[(tions)-294(can)-294(b)-27(e)-294(added)-295(to)-294(b)27(y)-293(passing)-294(in)-294(more)-294(parameters)-294(as)-294(argumen)27(ts)-293(to)]TJ/F4 10.91 Tf 331.28 0 TD[(compile)]TJ/F1 10.91 Tf 40.09 0 TD[(.)]TJ -371.37 -13.15 TD[(Optionally)83(,)-365(this)-360(will)-359(also)-360(use)-359(the)-360(v)55(alue)-359(of)-359(the)]TJ/F4 10.91 Tf 219.79 0 TD[(cflags)]TJ/F1 10.91 Tf 38.29 0 TD[(\014eld)-359(in)-359(the)-360(target)-359(con\014g)]TJ ET 0 g 0 G
-endstream
-endobj
-166 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F2 12 0 R
-/F8 52 0 R
->>
-endobj
-164 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 166 0 R
->>
-endobj
-169 0 obj
-<<
-/Length 6552
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(30)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 57.6 -23.91 TD[(arra)27(y)84(.)-463(If)-340(the)-340(host)-340(is)-339(not)-340(the)-340(same)-340(as)-340(the)-339(build)-340(mac)27(hines,)-341(then)-340(then)-340(compiler)-339(is)]TJ 0 -13.15 TD[(run)-333(on)-333(the)-333(remote)-334(host)-333(using)]TJ/F4 10.91 Tf 142.61 0 TD[(execute_anywhere)]TJ/F1 10.91 Tf 91.63 0 TD[(.)]TJ -234.24 -15.82 TD[(This)-370(pro)-27(duces)-370(an)-371(arc)27(hiv)28(e)-369(\014le.)-555(An)27(y)-369(parameters)-370(passed)-370(to)]TJ/F4 10.91 Tf 277.26 0 TD[(archive)]TJ/F1 10.91 Tf 44.13 0 TD[(are)-370(used)-370(in)]TJ -321.39 -13.15 TD[(addition)-453(to)-453(the)-453(default)-453(\015ags.)-803(Optionally)82(,)-482(this)-453(will)-453(also)-453(use)-453(the)-453(v)55(alue)-453(of)-453(the)]TJ/F4 10.91 Tf 0 -13.15 TD[(arflags)]TJ/F1 10.91 Tf 44.99 0 TD[(\014eld)-449(in)-450(the)-449(target)-450(con\014g)-449(arra)27(y)83(.)-792(If)-450(the)-449(host)-450(is)-449(not)-450(the)-449(same)-450(as)-450(the)]TJ -44.99 -13.15 TD[(build)-376(mac)27(hines,)-387(then)-377(then)-376(arc)26(hiv)28(er)-375(is)-377(run)-377(on)-377(the)-376(remote)-377(host)-377(using)]TJ/F4 10.91 Tf 328.58 0 TD[(execute_)]TJ -328.58 -13.15 TD[(anywhere)]TJ/F1 10.91 Tf 45.82 0 TD[(.)]TJ -45.82 -15.81 TD[(This)-325(generates)-326(an)-326(index)-326(for)-326(the)-326(arc)27(hiv)28(e)-325(\014le)-326(for)-326(systems)-326(that)-326(aren't)-326(POSIX)-326(y)27(et.)]TJ 0 -13.15 TD[(An)27(y)-332(parameters)-333(passed)-334(to)]TJ/F4 10.91 Tf 127.82 0 TD[(ranlib)]TJ/F1 10.91 Tf 38 0 TD[(are)-333(used)-333(in)-333(for)-334(the)-333(\015ags.)]TJ/F4 10.91 Tf -223.42 -21.15 TD[(execute_anywhere)]TJ/F8 10.91 Tf 95.27 0 TD[(cmd)-51(line)]TJ/F1 10.91 Tf -37.67 -13.15 TD[(This)-414(executes)-415(the)]TJ/F8 10.91 Tf 89.75 0 TD[(cmd)-51(line)]TJ/F1 10.91 Tf 42.7 0 TD[(on)-414(the)-415(prop)-28(er)-414(host.)-689(This)-414(should)-415(b)-28(e)-414(used)-415(as)-415(a)-414(re-)]TJ -132.45 -13.15 TD[(placemen)27(t)-362(for)-363(the)-363(Tcl)-363(command)]TJ/F4 10.91 Tf 158.01 0 TD[(exec)]TJ/F1 10.91 Tf 26.87 0 TD[(as)-363(this)-363(v)27(ersion)-362(utilizes)-363(the)-363(target)-363(con\014g)]TJ -184.88 -13.15 TD[(info)-281(to)-281(execute)-281(this)-281(command)-281(on)-281(the)-281(build)-281(mac)27(hine)-280(or)-282(a)-281(remote)-281(host.)-427(All)-281(con\014g)]TJ 0 -13.15 TD[(information)-339(for)-339(the)-340(remote)-339(host)-340(m)27(ust)-339(b)-27(e)-340(setup)-339(to)-340(ha)27(v)28(e)-339(this)-339(command)-340(w)27(ork.)-462(If)]TJ 0 -13.15 TD[(this)-285(is)-285(a)-285(canadian)-285(cross,)-295(\(where)-285(w)27(e)-284(test)-285(a)-286(cross)-285(compiler)-285(that)-285(runs)-285(on)-285(a)-285(di\013eren)26(t)]TJ 0 -13.15 TD[(host)-326(then)-327(where)-326(DejaGn)26(u)-325(is)-327(running\))-327(then)-326(a)-327(connection)-326(is)-327(made)-327(to)-326(the)-327(remote)]TJ 0 -13.15 TD[(host)-422(and)-422(the)-422(command)-422(is)-422(executed)-422(there.)-710(It)-422(returns)-422(either)]TJ/F8 10.91 Tf 293.73 0 TD[(REMOTERR)25(OR)]TJ/F1 10.91 Tf -293.73 -13.15 TD[(\(for)-354(an)-354(error\))-354(or)-354(the)-355(output)-354(pro)-27(duced)-355(when)-354(the)-354(command)-354(w)26(as)-353(executed.)-507(This)]TJ 0 -13.15 TD[(is)-333(used)-333(for)-333(running)-334(the)-333(to)-28(ol)-333(to)-334(b)-27(e)-334(tested,)-333(not)-333(a)-334(test)-333(case.)]TJ/F2 13.09 Tf -57.6 -25.92 TD[(5.3.5)-562(Debugging)-375(Pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -22.79 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(lib/debugger.exp)]TJ/F1 10.91 Tf 91.64 0 TD[(')-333(de\014nes)-333(these)-333(utilit)26(y)-332(pro)-28(cedures:)]TJ/F4 10.91 Tf -109.61 -21.14 TD[(dumpvars)]TJ/F8 10.91 Tf 49.45 0 TD[(expr)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(This)-387(tak)27(es)-386(a)-387(csh)-388(st)27(yle)-386(regular)-387(expression)-387(\(glob)-388(rules\))-387(and)-387(prin)27(ts)-387(the)-387(v)55(alues)-386(of)]TJ 0 -13.15 TD[(the)-333(global)-333(v)54(ariable)-332(names)-333(that)-334(matc)27(h.)-443(It)-334(is)-333(abbreviated)-333(as)]TJ/F4 10.91 Tf 282.06 0 TD[(dv)]TJ -339.66 -21.15 TD[(dumplocals)]TJ/F8 10.91 Tf 60.91 0 TD[(expr)]TJ/F1 10.91 Tf -3.31 -13.15 TD[(This)-387(tak)27(es)-386(a)-387(csh)-388(st)27(yle)-386(regular)-387(expression)-387(\(glob)-388(rules\))-387(and)-387(prin)27(ts)-387(the)-387(v)55(alues)-386(of)]TJ 0 -13.15 TD[(the)-333(lo)-28(cal)-333(v)55(ariable)-333(names)-333(that)-333(matc)26(h.)-443(It)-333(is)-334(abbreviated)-333(as)]TJ/F4 10.91 Tf 275.7 0 TD[(dl)]TJ/F1 10.91 Tf 11.45 0 TD[(.)]TJ/F4 10.91 Tf -344.75 -21.14 TD[(dumprocs)]TJ/F8 10.91 Tf 49.45 0 TD[(expr)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(This)-316(tak)27(es)-315(a)-317(csh)-316(st)27(yle)-315(regular)-317(expression)-316(\(glob)-316(rules\))-317(and)-316(prin)27(ts)-316(the)-316(b)-28(o)-27(dy)-317(of)-316(all)]TJ 0 -13.15 TD[(pro)-27(cs)-334(that)-333(matc)27(h.)-444(It)-333(is)-333(abbreviated)-334(as)]TJ/F4 10.91 Tf 185.7 0 TD[(dp)]TJ -243.3 -21.14 TD[(dumpwatch)]TJ/F8 10.91 Tf 55.18 0 TD[(expr)]TJ/F1 10.91 Tf 2.42 -13.15 TD[(This)-349(tak)27(es)-348(a)-349(csh)-349(st)26(yle)-348(regular)-349(expression)-349(\(glob)-349(rules\))-350(and)-349(prin)27(ts)-348(all)-349(the)-350(w)27(atc)28(h-)]TJ 0 -13.15 TD[(p)-27(oin)27(ts.)-444(It)-333(is)-334(abbreviated)-333(as)]TJ/F4 10.91 Tf 132.94 0 TD[(dw)]TJ/F1 10.91 Tf 11.45 0 TD[(.)]TJ/F4 10.91 Tf -201.99 -21.14 TD[(watchunset)]TJ/F8 10.91 Tf 60.91 0 TD[(var)]TJ/F1 10.91 Tf -3.31 -13.15 TD[(This)-262(breaks)-262(program)-262(execution)-263(when)-262(the)-262(v)54(ariable)]TJ/F8 10.91 Tf 234.51 0 TD[(var)]TJ/F1 10.91 Tf 19.23 0 TD[(is)-262(unset.)-421(It)-262(is)-262(abbreviated)]TJ -253.74 -13.15 TD[(as)]TJ/F4 10.91 Tf 13.39 0 TD[(wu)]TJ/F1 10.91 Tf 11.46 0 TD[(.)]TJ/F4 10.91 Tf -82.45 -21.14 TD[(watchwrite)]TJ/F8 10.91 Tf 60.91 0 TD[(var)]TJ/F1 10.91 Tf -3.31 -13.15 TD[(This)-326(breaks)-326(program)-326(execution)-326(when)-327(the)-326(v)55(ariable)]TJ/F8 10.91 Tf 239.4 0 TD[(var)]TJ/F1 10.91 Tf 19.93 0 TD[(is)-326(written.)-442(It)-326(is)-326(abbrevi-)]TJ -259.33 -13.15 TD[(ated)-333(as)]TJ/F4 10.91 Tf 37.64 0 TD[(ww)]TJ/F1 10.91 Tf 11.45 0 TD[(.)]TJ/F4 10.91 Tf -106.69 -21.15 TD[(watchread)]TJ/F8 10.91 Tf 55.18 0 TD[(var)]TJ/F1 10.91 Tf 2.42 -13.15 TD[(This)-301(breaks)-302(program)-302(execution)-301(when)-302(the)-302(v)55(ariable)]TJ/F8 10.91 Tf 237.53 0 TD[(var)]TJ/F1 10.91 Tf 19.66 0 TD[(is)-301(read.)-434(It)-302(is)-302(abbreviated)]TJ -257.19 -13.15 TD[(as)]TJ/F4 10.91 Tf 13.39 0 TD[(wr)]TJ/F1 10.91 Tf 11.46 0 TD[(.)]TJ ET 0 g 0 G
-endstream
-endobj
-170 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F8 52 0 R
-/F2 12 0 R
->>
-endobj
-168 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 170 0 R
->>
-endobj
-173 0 obj
-<<
-/Length 9272
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-333(The)-333(DejaGn)26(u)-332(Implemen)27(tation)-20437(31)]TJ/F4 10.91 Tf 0 -23.91 TD[(watchdel)]TJ/F8 10.91 Tf 49.45 0 TD[(watch)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(This)-333(deletes)-333(a)-333(the)-334(w)27(atc)28(hp)-27(oin)27(t)-333(for)]TJ/F8 10.91 Tf 161.67 0 TD[(watch)]TJ/F1 10.91 Tf 27.04 0 TD[(.)-444(It)-333(is)-334(abbreviated)-333(as)]TJ/F4 10.91 Tf 103.79 0 TD[(wd)]TJ/F1 10.91 Tf 11.45 0 TD[(.)]TJ/F4 10.91 Tf -361.55 -21.59 TD[(print)]TJ/F8 10.91 Tf 32.27 0 TD[(var)]TJ/F1 10.91 Tf 25.33 0 TD[(This)-333(prin)27(ts)-332(the)-334(v)55(alue)-332(of)-334(the)-333(v)54(ariable)]TJ/F8 10.91 Tf 175.33 0 TD[(var)]TJ/F1 10.91 Tf 15.2 0 TD[(.)-444(It)-333(is)-334(abbreviated)-333(as)]TJ/F4 10.91 Tf 103.79 0 TD[(p)]TJ/F1 10.91 Tf 5.72 0 TD[(.)]TJ/F4 10.91 Tf -357.64 -21.58 TD[(quit)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(mak)27(es)-332(run)26(test)-332(exit.)-444(It)-334(is)-333(abbreviated)-333(as)]TJ/F4 10.91 Tf 216.73 0 TD[(q)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F4 10.91 Tf -280.06 -21.59 TD[(bt)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(prin)27(ts)-332(a)-334(bac)27(ktrace)-332(of)-334(the)-333(executed)-333(Tcl)-334(commands.)]TJ/F2 14.35 Tf -57.6 -30.35 TD[(5.4)-562(T)93(arget)-374(dep)-31(enden)30(t)-374(pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -22.94 TD[(Eac)27(h)-398(com)27(bination)-399(of)-399(target)-400(and)-399(to)-28(ol)-400(requires)-399(some)-400(target-dep)-27(enden)26(t)-398(pro)-28(cedures.)-643(The)]TJ -14.94 -13.15 TD[(names)-258(of)-259(these)-259(pro)-27(cedures)-259(ha)27(v)27(e)-257(a)-259(common)-259(form:)-407(the)-259(to)-28(ol)-258(name,)-274(follo)27(w)28(ed)-258(b)27(y)-258(an)-259(underbar)-259(`)]TJ/F4 10.91 Tf 420.21 0 TD[(_)]TJ/F1 10.91 Tf 5.73 0 TD[(',)]TJ -425.94 -13.15 TD[(and)-288(\014nally)-289(a)-289(su\016x)-288(describing)-289(the)-289(pro)-27(cedure's)-289(purp)-28(ose.)-429(F)82(or)-288(example,)-297(a)-289(pro)-28(cedure)-289(to)-288(extract)]TJ 0 -13.15 TD[(the)-497(v)27(ersion)-496(from)]TJ/F7 10.91 Tf 87 0 TD[(gdb)]TJ/F1 10.91 Tf 25.55 0 TD[(is)-497(called)-497(`)]TJ/F4 10.91 Tf 48.49 0 TD[(gdb_version)]TJ/F1 10.91 Tf 63 0 TD[('.)-935(See)-498(Section)-497(5.2)-497([Initialization)-497(Mo)-28(dule],)]TJ -224.04 -13.15 TD[(page)-419(22,)-440(for)-420(a)-419(discussion)-419(of)-419(ho)27(w)-419(DejaGn)27(u)-418(arranges)-419(to)-420(\014nd)-419(the)-419(righ)27(t)-418(pro)-28(cedures)-419(for)-420(eac)27(h)]TJ 0 -13.15 TD[(target.)]TJ/F4 10.91 Tf 14.94 -15.97 TD[(runtest)]TJ/F1 10.91 Tf 44.72 0 TD[(itself)-423(calls)-424(only)-424(t)27(w)28(o)-423(of)-424(these)-424(pro)-27(cedures,)]TJ/F5 10.91 Tf 200.79 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_exit)]TJ/F1 10.91 Tf 33.26 0 TD[(and)]TJ/F5 10.91 Tf 22.2 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_version)]TJ/F1 10.91 Tf 45.82 0 TD[(;)-468(these)]TJ -399.55 -13.15 TD[(pro)-27(cedures)-334(use)-333(no)-333(argumen)27(ts.)]TJ 14.94 -15.96 TD[(The)-334(other)-334(t)27(w)28(o)-333(pro)-28(cedures,)]TJ/F5 10.91 Tf 129.58 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_start)]TJ/F1 10.91 Tf 38.01 0 TD[(and)]TJ/F5 10.91 Tf 21.22 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_load)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-334(are)-334(only)-334(called)-334(b)27(y)-333(the)-334(test)-334(suites)]TJ -270.22 -13.15 TD[(themselv)27(es)-410(\(or)-410(b)26(y)-410(testsuite-sp)-27(eci\014c)-411(initialization)-411(co)-28(de\);)-449(they)-411(ma)26(y)-409(tak)26(e)-410(argumen)27(ts)-410(or)-410(not,)]TJ 0 -13.15 TD[(dep)-27(ending)-334(on)-333(the)-333(con)27(v)27(en)28(tions)-332(used)-334(within)-333(eac)27(h)-332(test)-334(suite.)]TJ/F5 10.91 Tf 0 -21.59 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 38.69 -13.15 TD[(Starts)-236(a)-237(particular)-237(to)-28(ol.)-412(F)82(or)-236(an)-236(in)26(teractiv)28(e)-236(to)-28(ol,)]TJ/F5 10.91 Tf 224.07 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 36.95 0 TD[(starts)-236(and)-237(initializes)]TJ -279.93 -13.15 TD[(the)-308(to)-27(ol,)-314(lea)27(ving)-307(the)-308(to)-28(ol)-308(up)-309(and)-308(running)-308(for)-308(the)-308(test)-309(cases;)-316(an)-308(example)-309(is)]TJ/F4 10.91 Tf 351.49 0 TD[(gdb_)]TJ -351.49 -13.15 TD[(start)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-463(the)-438(start)-438(function)-437(for)]TJ/F7 10.91 Tf 117 0 TD[(gdb)]TJ/F1 10.91 Tf 20.14 0 TD[(.)-757(F)82(or)-436(a)-438(batc)27(h)-437(orien)27(ted)-437(to)-28(ol,)]TJ/F5 10.91 Tf 143.24 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 39.14 0 TD[(is)]TJ -367.07 -13.15 TD[(optional;)-287(the)-266(recommended)-265(con)27(v)28(en)28(tion)-264(is)-266(to)-265(let)]TJ/F5 10.91 Tf 223.01 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 37.26 0 TD[(run)-265(the)-265(to)-28(ol,)-278(lea)26(ving)]TJ -279.18 -13.15 TD[(the)-448(output)-448(in)-449(a)-448(v)55(ariable)-448(called)]TJ/F4 10.91 Tf 155.74 0 TD[(comp_output)]TJ/F1 10.91 Tf 63 0 TD[(.)-789(T)82(est)-447(scripts)-448(can)-449(then)-448(analyze)]TJ -218.74 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[($comp_output)]TJ/F1 10.91 Tf 68.73 0 TD[(')-349(to)-349(determine)-350(the)-349(test)-350(results.)-492(An)-350(example)-349(of)-349(this)-350(second)-349(kind)]TJ -71.76 -13.15 TD[(of)-333(start)-333(function)-333(is)]TJ/F4 10.91 Tf 92.27 0 TD[(gcc_start)]TJ/F1 10.91 Tf 51.55 0 TD[(,)-333(the)-333(start)-333(function)-334(for)]TJ/F7 10.91 Tf 111.03 0 TD[(gcc)]TJ/F1 10.91 Tf 19.89 0 TD[(.)]TJ/F4 10.91 Tf -274.74 -15.96 TD[(runtest)]TJ/F1 10.91 Tf 42.52 0 TD[(itself)]TJ/F8 10.91 Tf 25.21 0 TD[(do)51(es)-255(not)-255(c)50(al)-50(l)]TJ/F5 10.91 Tf 60.7 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 34.37 0 TD[(.)-407(The)-222(initialization)-222(mo)-28(dule)-222(`)]TJ/F5 10.91 Tf 131.41 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_init.exp)]TJ/F1 10.91 Tf 51.54 0 TD[(')]TJ -383.58 -13.15 TD[(m)27(ust)-383(call)]TJ/F5 10.91 Tf 48.14 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_start)]TJ/F1 10.91 Tf 38.55 0 TD[(for)-384(in)27(teractiv)28(e)-383(to)-28(ols;)-410(for)-384(batc)27(h-orien)27(ted)-383(to)-28(ols,)-397(eac)27(h)-383(indi-)]TJ -105.61 -13.15 TD[(vidual)-444(test)-445(script)-445(calls)]TJ/F5 10.91 Tf 113.86 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 39.22 0 TD[(\(or)-444(mak)27(es)-444(other)-445(arrangemen)27(ts)-444(to)-444(run)-445(the)]TJ -171.99 -13.15 TD[(to)-27(ol\).)]TJ/F5 10.91 Tf -57.6 -21.59 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_load)]TJ/F1 10.91 Tf 38.69 0 TD[(Loads)-272(something)-272(in)26(to)-271(a)-273(to)-27(ol.)-425(F)83(or)-272(an)-272(in)27(teractiv)27(e)-271(to)-28(ol,)-285(this)-272(conditions)-272(the)-273(to)-28(ol)-272(for)]TJ 0 -13.15 TD[(a)-379(particular)-381(test)-380(case;)-403(for)-380(example,)]TJ/F4 10.91 Tf 172.74 0 TD[(gdb_load)]TJ/F1 10.91 Tf 49.96 0 TD[(loads)-379(a)-381(new)-380(executable)-380(\014le)-380(in)27(to)]TJ -222.7 -13.15 TD[(the)-263(debugger.)-421(F)82(or)-262(batc)27(h)-263(orien)27(ted)-262(to)-28(ols,)]TJ/F5 10.91 Tf 186.99 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_load)]TJ/F1 10.91 Tf 31.51 0 TD[(ma)27(y)-262(do)-263(nothing|though,)-278(for)]TJ -237.42 -13.15 TD[(example,)-276(the)]TJ/F7 10.91 Tf 63.15 0 TD[(gcc)]TJ/F1 10.91 Tf 22.75 0 TD[(supp)-27(ort)-263(uses)]TJ/F4 10.91 Tf 62 0 TD[(gcc_load)]TJ/F1 10.91 Tf 48.67 0 TD[(to)-262(load)-262(and)-262(run)-262(a)-263(binary)-262(on)-262(the)-262(target)]TJ -196.57 -13.15 TD[(en)27(vironmen)28(t.)-674(Con)27(v)28(en)28(tionally)83(,)]TJ/F5 10.91 Tf 147.53 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_load)]TJ/F1 10.91 Tf 33.12 0 TD[(lea)27(v)28(es)-409(the)-410(output)-410(of)-410(an)26(y)-409(program)-410(it)]TJ -199.56 -13.15 TD[(runs)-414(in)-415(a)-414(v)54(ariable)-413(called)-415(`)]TJ/F4 10.91 Tf 125.46 0 TD[(exec_output)]TJ/F1 10.91 Tf 63 0 TD[('.)-688(W)83(riting)]TJ/F5 10.91 Tf 54.48 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_load)]TJ/F1 10.91 Tf 33.16 0 TD[(can)-414(b)-28(e)-414(the)-415(most)]TJ -295.02 -13.15 TD[(complex)-297(part)-298(of)-298(extending)-298(DejaGn)27(u)-297(to)-298(a)-297(new)-298(to)-28(ol)-298(or)-298(a)-297(new)-298(target,)-305(if)-298(it)-298(requires)]TJ 0 -13.16 TD[(m)27(uc)28(h)-332(comm)27(unication)-333(co)-28(ding)-333(or)-333(\014le)-334(do)27(wnloading.)]TJ 0 -15.96 TD[(T)83(est)-332(scripts)-334(call)]TJ/F5 10.91 Tf 78.7 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_load)]TJ/F1 10.91 Tf 28.64 0 TD[(.)]TJ/F5 10.91 Tf -183.85 -21.58 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_exit)]TJ/F1 10.91 Tf 38.69 0 TD[(Cleans)-375(up)-375(\(if)-375(necessary\))-375(b)-28(efore)]TJ/F4 10.91 Tf 152.82 0 TD[(runtest)]TJ/F1 10.91 Tf 44.19 0 TD[(exits.)-569(F)82(or)-374(in)27(teractiv)28(e)-375(to)-27(ols,)-386(this)-375(usu-)]TJ -197.01 -13.15 TD[(ally)-425(ends)-425(the)-425(in)27(teractiv)28(e)-424(session.)-719(Y)82(ou)-424(can)-425(also)-425(use)]TJ/F5 10.91 Tf 252.61 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_exit)]TJ/F1 10.91 Tf 33.27 0 TD[(to)-425(remo)27(v)28(e)-424(an)27(y)]TJ -304.79 -13.15 TD[(temp)-27(orary)-334(\014les)-333(left)-333(o)27(v)27(er)-332(from)-333(the)-334(tests.)]TJ/F4 10.91 Tf 0 -15.97 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(calls)]TJ/F5 10.91 Tf 24.3 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_exit)]TJ/F1 10.91 Tf 28.64 0 TD[(.)]TJ ET 0 g 0 G
-endstream
-endobj
-174 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F8 52 0 R
-/F2 12 0 R
-/F7 49 0 R
-/F5 31 0 R
->>
-endobj
-172 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 174 0 R
->>
-endobj
-178 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 686.11
-/Ascent 694.44
-/Descent -194.44
-/Flags 4
-/FontBBox [-270 -250 1011 948]
-/FontName /CMB10
-/ItalicAngle 0
-/XHeight 444
-/StemV 80
-/FontFile 177 0 R
->>
-endobj
-179 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F13
-/FontDescriptor 178 0 R
-/BaseFont /EUXRYM+CMB10
-/FirstChar 0
-/LastChar 127
-/Widths [600 833.34 777.78 700 666.67 783.34 722.22 777.78 722.22 777.78 722.22 583.34
-555.56 555.56 833.34 833.34 277.78 305.56 500 500 500 500 500 755.56 444.45 559.72
-722.22 777.78 500 905.56 1016.67 777.78 277.78 305.56 544.45 833.34 500 833.34 777.78
-277.78 388.89 388.89 500 777.78 277.78 333.33 277.78 500 500 500 500 500 500 500
-500 500 500 500 277.78 277.78 305.56 777.78 472.22 472.22 777.78 755.56 711.11 722.22
-766.67 655.56 627.78 786.11 783.34 397.22 516.67 783.34 600 950 783.34 750 683.34
-750 759.72 555.56 694.45 769.45 755.56 1033.34 755.56 755.56 611.11 280 544.45 280
-500 277.78 277.78 486.11 555.56 444.45 555.56 466.67 305.56 500 555.56 277.78 305.56
-527.78 277.78 833.34 555.56 500 555.56 527.78 427.78 394.45 390.28 555.56 527.78
-722.22 527.78 527.78 444.45 500 1000 500 500 500]
->>
-endobj
-180 0 obj
-<<
-/Length 8736
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(32)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F5 10.91 Tf 0 -23.91 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_version)]TJ/F1 10.91 Tf 38.69 -13.15 TD[(Prin)27(ts)-408(the)-409(v)26(ersion)-408(lab)-28(el)-409(and)-410(n)27(um)28(b)-27(er)-409(for)]TJ/F5 10.91 Tf 198.32 0 TD[(to)-27(ol)]TJ/F1 10.91 Tf 18.49 0 TD[(.)-672(This)-409(is)-410(called)-409(b)27(y)-409(the)-409(DejaGn)27(u)]TJ -216.81 -13.15 TD[(pro)-27(cedure)-357(that)-357(prin)27(ts)-355(the)-357(\014nal)-357(summary)-356(rep)-28(ort.)-515(The)-356(output)-357(should)-357(consist)-356(of)]TJ 0 -13.15 TD[(the)-333(full)-333(path)-333(name)-334(used)-333(for)-333(the)-334(tested)-333(to)-28(ol,)-333(and)-334(its)-333(v)27(ersion)-332(n)26(um)28(b)-27(er.)]TJ/F4 10.91 Tf 0 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(calls)]TJ/F5 10.91 Tf 24.3 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_version)]TJ/F1 10.91 Tf 45.82 0 TD[(.)]TJ -175.42 -19.13 TD[(The)-352(usual)-353(con)27(v)28(en)28(tion)-352(for)-352(return)-353(co)-28(des)-352(from)-353(an)27(y)-352(of)-352(these)-353(pro)-27(cedures)-353(\(although)-353(it)-352(is)-353(not)]TJ -14.94 -13.15 TD[(required)-296(b)27(y)]TJ/F4 10.91 Tf 57.13 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(\))-296(is)-296(to)-297(return)]TJ/F4 10.91 Tf 63.97 0 TD[(0)]TJ/F1 10.91 Tf 8.96 0 TD[(if)-296(the)-296(pro)-28(cedure)-296(succeeded,)]TJ/F4 10.91 Tf 131.32 0 TD[(1)]TJ/F1 10.91 Tf 8.96 0 TD[(if)-296(it)-296(failed,)-304(and)]TJ/F4 10.91 Tf 73.01 0 TD[(-1)]TJ/F1 10.91 Tf 14.69 0 TD[(if)-296(there)]TJ -398.13 -13.15 TD[(w)27(as)-332(a)-333(comm)26(unication)-332(error.)]TJ/F2 14.35 Tf 0 -30.89 TD[(5.5)-562(Remote)-375(targets)-375(supp)-31(orted)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(The)-400(DejaGn)27(u)-399(distribution)-400(includes)-400(supp)-28(ort)-400(for)-400(the)-400(follo)27(wing)-399(remote)-400(targets.)-645(Y)82(ou)-399(can)]TJ -14.94 -13.15 TD[(set)-384(the)-384(target)-385(name)-384(and)-385(the)-384(connect)-385(mo)-27(de)-385(in)-384(the)-385(`)]TJ/F4 10.91 Tf 246.58 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.81 0 TD[(')-384(\014le)-384(\(using)-385(the)-384(Tcl)-385(v)55(ariables)]TJ -292.39 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(targetname)]TJ/F1 10.91 Tf 57.27 0 TD[(')-428(and)-428(`)]TJ/F4 10.91 Tf 32.98 0 TD[(connectmode)]TJ/F1 10.91 Tf 63 0 TD[(',)-451(resp)-28(ectiv)27(ely\),)-451(or)-428(on)-428(the)]TJ/F4 10.91 Tf 129.44 0 TD[(runtest)]TJ/F1 10.91 Tf 44.76 0 TD[(command)-428(line)-428(\(using)]TJ -330.48 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--name)]TJ/F1 10.91 Tf 34.36 0 TD[(')-333(and)-333(`)]TJ/F4 10.91 Tf 30.91 0 TD[(--connect)]TJ/F1 10.91 Tf 51.55 0 TD[('\).)]TJ/F7 10.91 Tf -119.85 -19.13 TD[(amd)]TJ/F13 10.91 Tf 25.28 0 TD[(29000,)-333(with)-333(UDI)-333(proto)-28(col)]TJ/F1 10.91 Tf 32.32 -13.15 TD[(Con\014gure)-314(DejaGn)27(u)-314(for)-315(target)-314(`)]TJ/F4 10.91 Tf 146.78 0 TD[(a29k-amd-udi)]TJ/F1 10.91 Tf 68.72 0 TD[('.)-438(\(Cygn)27(us)]TJ/F4 10.91 Tf 53.73 0 TD[(configure)]TJ/F1 10.91 Tf 54.98 0 TD[(also)-314(recog-)]TJ -324.21 -13.15 TD[(nizes)-398(the)-399(abbreviation)-398(`)]TJ/F4 10.91 Tf 114.05 0 TD[(udi29k)]TJ/F1 10.91 Tf 34.36 0 TD[('.\))-640(Then,)-415(to)-398(run)-399(tests,)-415(use)-398(the)]TJ/F4 10.91 Tf 153.04 0 TD[(runtest)]TJ/F1 10.91 Tf 44.44 0 TD[(target)]TJ -345.89 -13.15 TD[(name)-314(to)-314(sp)-28(ecify)-314(whether)-314(y)26(ou)-313(w)27(an)28(t)-314(to)-314(use)-314(a)-314(sim)26(ulator,)-317(or)-314(a)-314(particular)-315(hardw)27(are)]TJ 0 -13.15 TD[(b)-27(oard.)-741(The)-432(particular)-432(string)-432(to)-432(use)-432(with)-432(`)]TJ/F4 10.91 Tf 209.02 0 TD[(--name)]TJ/F1 10.91 Tf 34.36 0 TD[(')-431(will)-432(dep)-28(end)-432(on)-432(y)27(our)-431(UDI)]TJ -243.38 -13.16 TD[(setup)-415(\014le,)-437(`)]TJ/F4 10.91 Tf 54.81 0 TD[(udi_soc)]TJ/F1 10.91 Tf 40.09 0 TD[(')-415(\(if)-416(`)]TJ/F4 10.91 Tf 25.74 0 TD[(udi_soc)]TJ/F1 10.91 Tf 40.09 0 TD[(')-415(is)-416(not)-416(in)-416(y)27(our)-415(w)27(orking)-415(directory)82(,)-435(the)-416(en)27(vi-)]TJ -160.73 -13.15 TD[(ronmen)27(t)-334(v)55(ariable)-335(`)]TJ/F4 10.91 Tf 87.38 0 TD[(UDICONF)]TJ/F1 10.91 Tf 40.09 0 TD[(')-335(should)-335(con)27(tain)-335(a)-335(path)-335(to)-336(this)-335(\014le\).)-450(F)82(or)-334(example,)-336(if)]TJ -127.47 -13.15 TD[(y)27(our)-332(UDI)-333(setup)-334(\014le)-333(includes)-333(these)-334(lines:)]TJ/F9 9.96 Tf -57.6 -12.43 TD[(\013)]TJ ET 23.98 -328.05 m 450.40 -328.05 l 450.40 -327.65 l 23.98 -327.65 l b BT 456.38 -328.05 TD[(\010)]TJ ET 18.00 -365.20 m 18.40 -365.20 l 18.40 -333.78 l 18.00 -333.78 l b BT/F4 10.91 Tf 21.39 -347.33 TD[(iss)-1574(AF_UNIX)-1050(*)-1575(isstip)-525(-r)-525(/home/gnu/29k/src/osboot/sim/osboot)]TJ 0 -12.45 TD[(mon)-1574(AF_UNIX)-1050(*)-1575(montip)-525(-t)-525(serial)-525(-baud)-525(9600)-525(-com)-525(/dev/ttyb)]TJ ET 456.38 -365.20 m 456.77 -365.20 l 456.77 -333.78 l 456.38 -333.78 l b BT/F9 9.96 Tf 18 -371.42 TD[(\012)]TJ ET 23.98 -371.42 m 450.40 -371.42 l 450.40 -371.03 l 23.98 -371.03 l b BT 456.38 -371.42 TD[(\011)]TJ/F1 10.91 Tf -380.78 -20.38 TD[(Y)83(ou)-394(can)-396(use)-395(`)]TJ/F4 10.91 Tf 66.33 0 TD[(--name)-333(iss)]TJ/F1 10.91 Tf 55.18 0 TD[(')-395(to)-395(run)-395(tests)-396(on)-395(the)-395(sim)27(ulator,)-410(and)-396(`)]TJ/F4 10.91 Tf 180.67 0 TD[(--name)-333(mon)]TJ/F1 10.91 Tf 55.18 0 TD[(')-395(to)]TJ -357.36 -13.15 TD[(run)-382(tests)-383(on)-383(the)-383(29K)-383(hardw)26(are.)-592(See)-383(the)-383(man)27(ufacturer's)-382(man)27(uals)-382(for)-383(more)-383(in-)]TJ 0 -13.15 TD[(formation)-333(on)-333(UDI)-333(and)-334(`)]TJ/F4 10.91 Tf 113.52 0 TD[(udi_soc)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ -153.61 -16.14 TD[(The)-381(default)-381(connect)-381(proto)-28(col)-381(is)-381(`)]TJ/F4 10.91 Tf 158.46 0 TD[(mondfe)]TJ/F1 10.91 Tf 34.36 0 TD[(')-381(with)-381(either)-381(bac)27(k)-380(end.)]TJ/F4 10.91 Tf 116.42 0 TD[(mondfe)]TJ/F1 10.91 Tf 38.52 0 TD[(is)-381(the)]TJ -347.76 -13.15 TD[(only)-239(shell)-240(DejaGn)27(u)-239(supp)-28(orts)-240(for)-239(UDI)-240(targets.)]TJ/F4 10.91 Tf 214.55 0 TD[(mondfe)]TJ/F1 10.91 Tf 36.98 0 TD[(is)-239(an)]TJ/F7 10.91 Tf 24.08 0 TD[(amd)]TJ/F1 10.91 Tf 24.27 0 TD[(sp)-27(eci\014c)-240(monitor)]TJ -299.88 -13.15 TD[(program)-333(freely)-333(a)27(v)55(ailable)-332(from)]TJ/F7 10.91 Tf 144.06 0 TD[(amd)]TJ/F1 10.91 Tf 21.65 0 TD[(.)]TJ/F8 10.91 Tf -165.71 -16.14 TD[(Warning:)]TJ/F1 10.91 Tf 50.85 0 TD[(This)-347(target)-348(requires)]TJ/F7 10.91 Tf 98.57 0 TD[(gdb)]TJ/F1 10.91 Tf 23.93 0 TD[(v)27(ersion)-347(4.7.2)-348(\(or)-347(greater\).)-489(Earlier)-348(v)27(ersions)]TJ -173.35 -13.15 TD[(of)]TJ/F7 10.91 Tf 12.18 0 TD[(gdb)]TJ/F1 10.91 Tf 23.52 0 TD[(do)-310(not)-311(fully)-310(supp)-28(ort)-311(the)]TJ/F4 10.91 Tf 117.34 0 TD[(load)]TJ/F1 10.91 Tf 26.3 0 TD[(command)-310(on)-311(this)-310(target,)-316(so)-310(DejaGn)27(u)-310(has)]TJ -179.34 -13.15 TD[(no)-333(w)27(a)28(y)-333(to)-333(load)-333(executable)-334(\014les)-333(from)-333(the)-334(debugger.)]TJ/F13 10.91 Tf -57.6 -19.13 TD[(Motorola)-333(680x0)-333(b)-28(oards,)-333(a.out)-334(or)]TJ/F7 10.91 Tf 159.15 0 TD[(coff)]TJ/F13 10.91 Tf 28.7 0 TD[(ob)-55(ject)-333(format)]TJ/F1 10.91 Tf -130.25 -13.15 TD[(Con\014gure)-333(DejaGn)27(u)-332(for)-334(an)27(y)-332(remote)-334(target)-333(matc)27(hing)-332(`)]TJ/F4 10.91 Tf 252.17 0 TD[(m68k-*)]TJ/F1 10.91 Tf 34.36 0 TD[('.)]TJ/F8 10.91 Tf -286.53 -16.14 TD[(Warning:)]TJ/F1 10.91 Tf 53.35 0 TD[(Most)-462(`)]TJ/F4 10.91 Tf 32.07 0 TD[(m68k-*)]TJ/F1 10.91 Tf 34.36 0 TD[(')-462(con\014gurations)-462(run)-462(all)-463(tests)-462(only)-462(for)-463(nativ)27(e)-461(testing)]TJ -119.78 -13.15 TD[(\(when)-432(the)-432(target)-432(is)-433(the)-432(same)-432(as)-433(the)-432(host\).)-741(When)-433(y)27(ou)-431(sp)-28(ecify)-432(most)-433(of)-432(these)]TJ 0 -13.15 TD[(targets)-432(for)-432(a)-433(cross)-432(con\014guration,)-457(y)27(ou)-432(will)-432(only)-433(b)-27(e)-433(able)-432(to)-433(use)-432(tests)-432(that)-433(run)]TJ 0 -13.15 TD[(completely)-281(within)-282(the)-281(host)-282(\(for)-281(example,)-292(tests)-281(of)-282(the)-281(binary)-282(utilities)-281(suc)26(h)-280(as)-282(the)]TJ 0 -13.16 TD[(arc)27(hiv)28(er;)-332(or)-334(compiler)-333(tests)-333(that)-334(only)-333(generate)-333(co)-28(de)-333(rather)-334(than)-333(running)-333(it\).)]TJ 0 -16.14 TD[(T)83(o)-292(run)-293(a.out)-293(or)]TJ/F7 10.91 Tf 75.58 0 TD[(coff)]TJ/F1 10.91 Tf 28.26 0 TD[(binaries)-293(on)-293(a)-293(remote)-293(M68K,)-293(y)27(ou)-292(m)27(ust)-292(con\014gure)-293(DejaGn)26(u)]TJ -103.84 -13.15 TD[(for)-405(a)-405(particular)-406(target)-405(b)-28(oard.)-661(`)]TJ/F4 10.91 Tf 152.32 0 TD[(m68k-abug)]TJ/F1 10.91 Tf 51.55 0 TD[(')-405(is)-405(an)-406(example.)-660(\(In)-406(general)-405(for)-406(an)]TJ ET 0 g 0 G
-endstream
-endobj
-181 0 obj
-<<
-/F1 9 0 R
-/F5 31 0 R
-/F4 28 0 R
-/F2 12 0 R
-/F7 49 0 R
-/F13 179 0 R
-/F9 59 0 R
-/F8 52 0 R
->>
-endobj
-176 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 181 0 R
->>
-endobj
-184 0 obj
-<<
-/Length 7898
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(33)]TJ 57.6 -23.91 TD[(em)27(b)-26(edded)-397(en)27(vironmen)27(t,)-411(b)-28(ecause)-396(it)-397(do)-28(es)-396(not)-397(ha)27(v)28(e)-396(absolute)-397(addresses,)-412(a.out)-397(is)]TJ 0 -13.15 TD[(not)-273(a)-273(go)-28(o)-27(d)-274(c)27(hoice)-272(for)-273(output)-274(format)-273(in)-273(an)27(y)-272(case;)-294(most)-273(often)-273(S-records)-273(or)-273(Hex-32)]TJ 0 -13.15 TD[(are)-333(used)-333(instead.\))]TJ/F13 10.91 Tf -57.6 -19.13 TD[(Motorola)-333(68K)-333(MVME)-333(135)-334(b)-28(oard)-333(running)-333(ABug)-334(b)-27(o)-28(ot)-334(monitor)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(Con\014gure)-339(for)-340(`)]TJ/F4 10.91 Tf 69.59 0 TD[(m68k-abug-aout)]TJ/F1 10.91 Tf 80.19 0 TD[(')-339(or)-340(`)]TJ/F4 10.91 Tf 23.19 0 TD[(m68k-abug-coff)]TJ/F1 10.91 Tf 80.19 0 TD[(')-339(\(as)-340(a)-340(target\).)-463(This)-340(b)-28(o)-27(ot)]TJ -253.16 -13.15 TD[(monitor)-473(can)-474(only)-474(do)27(wnload)-473(S-records;)-544(therefore,)-509(the)-474(DejaGn)27(u)-473(tests)-474(for)-474(this)]TJ 0 -13.15 TD[(en)27(vironmen)28(t)-378(require)-379(a)-380(link)27(er)-378(command)-379(script)-379(to)-380(con)27(v)28(ert)-378(either)-380(output)-379(format)]TJ 0 -13.15 TD[(to)-333(S-records,)-333(setting)-333(the)-334(default)-333(addresses)-333(for)]TJ/F4 10.91 Tf 219.82 0 TD[(.text)]TJ/F1 10.91 Tf 28.64 0 TD[(,)]TJ/F4 10.91 Tf 6.66 0 TD[(.bss)]TJ/F1 10.91 Tf 22.91 0 TD[(,)-333(and)]TJ/F4 10.91 Tf 27.88 0 TD[(.data)]TJ/F1 10.91 Tf 28.64 0 TD[(.)]TJ -334.55 -16.14 TD[(With)-355(this)-355(con\014guration,)-361(the)-355(default)-355(for)-355(`)]TJ/F4 10.91 Tf 195.25 0 TD[(--connect)]TJ/F1 10.91 Tf 51.54 0 TD[(')-355(is)-355(`)]TJ/F4 10.91 Tf 21.15 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[('.)-510(`)]TJ/F4 10.91 Tf 14.66 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(')-355(is)-355(the)-355(only)]TJ -316.96 -13.16 TD[(comm)27(unications)-422(proto)-28(col)-423(supp)-27(orted)-424(for)-423(connecting)-423(to)-423(`)]TJ/F4 10.91 Tf 267.91 0 TD[(m68k-abug-*)]TJ/F1 10.91 Tf 63 0 TD[(')-423(targets.)]TJ -330.91 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(')-314(uses)-315(an)]TJ/F7 10.91 Tf 44.36 0 TD[(asci)-22(i)]TJ/F1 10.91 Tf 28.4 0 TD[(do)27(wnloader)-313(\(the)]TJ/F4 10.91 Tf 80.53 0 TD[(~put)]TJ/F1 10.91 Tf 26.34 0 TD[(command\))-314(to)-315(load)-314(S-records)-315(in)27(to)-314(the)]TJ -199.84 -13.15 TD[(target)-405(b)-28(oard.)-663(The)-406(`)]TJ/F4 10.91 Tf 97.05 0 TD[(--name)]TJ/F1 10.91 Tf 34.37 0 TD[(')-405(string)-406(m)26(ust)-405(b)-27(e)-406(a)-406(mac)26(hine)-405(name)-406(that)]TJ/F4 10.91 Tf 190.43 0 TD[(tip)]TJ/F1 10.91 Tf 21.61 0 TD[(under-)]TJ -343.46 -13.15 TD[(stands)-404(\(for)-405(example,)-423(on)-405(some)]TJ/F4 10.91 Tf 147.34 0 TD[(tip)]TJ/F1 10.91 Tf 21.59 0 TD[(implemen)27(tations)-404(it)-404(m)26(ust)-403(b)-28(e)-405(an)-405(en)27(try)-404(from)]TJ -168.93 -13.15 TD[(the)-333(initialization)-333(\014le)-333(for)]TJ/F4 10.91 Tf 116.7 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(;)-333(this)-333(\014le)-333(is)-334(sometimes)-333(called)-333(`)]TJ/F4 10.91 Tf 143.27 0 TD[(/etc/remote)]TJ/F1 10.91 Tf 63 0 TD[('\).)]TJ -340.15 -16.14 TD[(See)-285(y)27(our)-285(system)-286(do)-28(cumen)27(tation)-284(for)-286(information)-286(on)-286(ho)27(w)-284(to)-286(create)-286(new)-286(en)27(tries)-284(in)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(/etc/remote)]TJ/F1 10.91 Tf 63 0 TD[('.)-578(\(Some)]TJ/F7 10.91 Tf 46.19 0 TD[(unix)]TJ/F1 10.91 Tf 27.5 0 TD[(systems)-378(are)-378(distributed)-378(with)-378(at)-378(least)-378(one)-378(default)]TJ -139.72 -13.15 TD[(en)27(try)-315(with)-316(a)-316(name)-316(resem)27(bling)-315(`)]TJ/F4 10.91 Tf 147.96 0 TD[(hardwire)]TJ/F1 10.91 Tf 45.82 0 TD[(';)-321(if)-316(y)27(our)-315(system)-316(has)-316(one,)-320(y)27(ou)-315(can)-316(edit)]TJ -193.78 -13.15 TD[(it,)-483(or)-454(mak)27(e)-452(a)-454(mo)-28(di\014ed)-453(cop)27(y)-453(with)-454(a)-453(new)-454(name.\))-805(When)-453(y)27(ou)-453(ha)27(v)28(e)-453(a)-453(w)26(orking)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(/etc/remote)]TJ/F1 10.91 Tf 63 0 TD[(')-356(en)27(try)]TJ/F5 10.91 Tf 35.68 0 TD[(abugtarget)]TJ/F1 10.91 Tf 51.55 0 TD[(,)-362(y)27(ou)-355(should)-356(b)-28(e)-356(able)-357(to)-356(t)27(yp)-27(e)-356(`)]TJ/F4 10.91 Tf 142.48 0 TD[(tip)]TJ/F5 10.91 Tf 20.82 0 TD[(abugtarget)]TJ/F1 10.91 Tf 51.78 0 TD[(',)]TJ -368.34 -13.15 TD[(and)-268(get)-268(the)-268(prompt)-268(`)]TJ/F4 10.91 Tf 97.19 0 TD[(135ABUG>)]TJ/F1 10.91 Tf 45.82 0 TD[(')-268(from)-268(the)-268(b)-28(oard.)-423(Use)-268(the)-268(same)]TJ/F5 10.91 Tf 149.32 0 TD[(abugtarget)]TJ/F1 10.91 Tf 54.71 0 TD[(string)]TJ -347.04 -13.15 TD[(with)-333(`)]TJ/F4 10.91 Tf 27.88 0 TD[(runtest)-333(--name)]TJ/F1 10.91 Tf 78.09 0 TD[('.)]TJ/F13 10.91 Tf -163.57 -19.13 TD[(Motorola)-333(IDP)-333(b)-28(oard)-333(running)-334(the)-333(rom68k)-333(b)-28(o)-28(ot)-333(monitor)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(This)-410(is)-411(the)-411(same)-411(in)-411(functionalit)27(y)-410(as)-411(the)-411(MVME)-411(b)-28(oard)-411(running)-411(the)]TJ/F4 10.91 Tf 330.92 0 TD[(BUG)]TJ/F1 10.91 Tf 21.66 0 TD[(b)-27(o)-28(ot)]TJ -352.58 -13.15 TD[(monitor.)-444(Only)-333(the)-334(monitor)-333(commands)-333(and)-334(the)-333(addresses)-333(are)-334(di\013eren)27(t.)]TJ/F13 10.91 Tf -57.6 -19.13 TD[(VxW)83(orks)-332(\(Motorola)-334(68K)-333(or)-333(In)26(tel)-332(960\))]TJ/F1 10.91 Tf 57.6 -13.15 TD[(Con\014gure)-392(DejaGn)26(u)-392(for)-393(either)-392(`)]TJ/F4 10.91 Tf 148.98 0 TD[(m68k-wrs-vxworks)]TJ/F1 10.91 Tf 91.64 0 TD[(')-392(\(abbreviated)-393(`)]TJ/F4 10.91 Tf 74.96 0 TD[(vxworks68)]TJ/F1 10.91 Tf 51.55 0 TD[('\))]TJ -367.13 -13.15 TD[(or)-229(`)]TJ/F4 10.91 Tf 15.26 0 TD[(i960-wrs-vxworks)]TJ/F1 10.91 Tf 91.64 0 TD[(')-229(\(abbreviated)-229(`)]TJ/F4 10.91 Tf 71.4 0 TD[(vxworks960)]TJ/F1 10.91 Tf 57.27 0 TD[('\).)-409(Since)-230(b)-28(oth)-229(targets)-230(supp)-27(ort)]TJ -235.57 -13.15 TD[(IP)-466(addressing,)-501(sp)-27(ecify)-467(the)-467(net)26(w)28(ork)-466(address)-467(\(for)-467(example,)-500(a)-467(host)-467(name)-467(from)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(/etc/hosts)]TJ/F1 10.91 Tf 57.27 0 TD[('\))-333(with)-333(`)]TJ/F4 10.91 Tf 38.79 0 TD[(--name)]TJ/F1 10.91 Tf 34.36 0 TD[('.)]TJ -133.45 -16.14 TD[(The)-388(default)-389(connect)-389(proto)-28(col)-389(is)-389(`)]TJ/F4 10.91 Tf 158.88 0 TD[(rlogin)]TJ/F1 10.91 Tf 34.37 0 TD[(',)-402(but)-389(y)27(ou)-388(can)-389(use)-389(an)26(y)-387(of)-389(`)]TJ/F4 10.91 Tf 129.61 0 TD[(--connect)]TJ -322.86 -13.15 TD[(rlogin)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(--connect)-333(telnet)]TJ/F1 10.91 Tf 89.55 0 TD[(',)-333(or)-333(`)]TJ/F4 10.91 Tf 26.09 0 TD[(--connect)-333(rsh)]TJ/F1 10.91 Tf 72.36 0 TD[('.)]TJ -235.09 -16.14 TD[(T)83(est)-456(scripts)-457(need)-456(no)-457(sp)-28(ecial)-456(co)-28(de)-457(to)-457(load)-456(programs)-457(in)27(to)-456(these)-457(targets;)-518(since)]TJ 0 -13.15 TD[(VxW)83(orks)-452(supp)-28(orts)-452(NFS,)-453(all)-452(y)26(ou)-451(m)27(ust)-452(do)-453(is)-452(ensure)-453(test)-452(programs)-453(are)-453(on)-452(an)]TJ 0 -13.15 TD[(exp)-27(orted)-334(\014lesystem.)]TJ 0 -16.14 TD[(When)-362(y)27(ou)-362(compile)-362(for)-363(VxW)83(orks,)-369(use)-363(the)-362(link)27(er)-362(`)]TJ/F4 10.91 Tf 233.45 0 TD[(-r)]TJ/F1 10.91 Tf 11.45 0 TD[(')-362(option)-363(to)-362(mak)27(e)-362(the)-362(link)26(er)]TJ -244.9 -13.15 TD[(output)-274(relo)-28(catable|at)-275(least)-275(if)-274(y)26(ou)-273(w)26(an)28(t)-274(to)-274(use)-275(library)-275(routines.)-425(Man)27(y)-274(standard)]TJ 0 -13.15 TD[(C)-377(routines)-378(are)-377(included)-378(in)-377(VxW)82(orks;)-399(often)-377(no)-378(additional)-378(libraries)-377(are)-378(needed.)]TJ 0 -13.15 TD[(See)-333(y)27(our)-332(VxW)82(orks)-332(system)-334(do)-27(cumen)26(tation)-332(for)-333(additional)-334(details.)]TJ ET 0 g 0 G
-endstream
-endobj
-185 0 obj
-<<
-/F1 9 0 R
-/F13 179 0 R
-/F4 28 0 R
-/F7 49 0 R
-/F5 31 0 R
->>
-endobj
-183 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 185 0 R
->>
-endobj
-188 0 obj
-<<
-/Length 3782
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(34)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(5.6)-562(The)-375(\014les)-375(DejaGn)30(u)-374(reads)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(The)]TJ/F4 10.91 Tf 22.3 0 TD[(runtest)]TJ/F1 10.91 Tf 43.6 0 TD[(program)-321(used)-322(to)-322(in)27(v)28(ok)28(e)-321(DejaGn)27(u)-321(is)-322(a)-321(short)-322(shell)-322(script)-321(generated)-322(b)27(y)]TJ/F4 10.91 Tf 328.25 0 TD[(make)]TJ/F1 10.91 Tf -409.09 -13.15 TD[(during)-349(the)-350(con\014guration)-350(pro)-28(cess.)-495(Its)-350(main)-350(task)-350(is)-350(to)-350(read)-350(the)-350(main)-350(test)-350(framew)27(ork)-349(driv)27(er,)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 63 0 TD[('.)]TJ -51.09 -16.14 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 63 0 TD[(',)-333(in)-333(turn,)-333(reads)]TJ/F4 10.91 Tf 78.31 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(co)-27(de)-334(from)-333(certain)-333(other)-334(\014les,)-333(in)-333(this)-334(order:)]TJ -191.37 -16.14 TD[(1.)-660(Eac)27(h)-330(of)-331(the)-331(`)]TJ/F4 10.91 Tf 76.98 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.81 0 TD[(')-330(lo)-28(cal)-331(de\014nition)-331(\014les)-331(a)27(v)55(ailable.)-442(See)-331(Chapter)-331(4)-331([Setting)]TJ/F4 10.91 Tf 263.21 0 TD[(runtest)]TJ/F1 10.91 Tf -370.31 -13.15 TD[(defaults],)-333(page)-333(15,)-333(for)-334(details.)]TJ -15.69 -16.14 TD[(2.)-660(`)]TJ/F4 10.91 Tf 18.72 0 TD[(lib/utils.exp)]TJ/F1 10.91 Tf 74.45 0 TD[(',)-281(a)-269(collection)-269(of)-268(utilit)26(y)-267(pro)-28(cedures.)-423(See)-269(Section)-269(5.3)-268([DejaGn)26(u)-267(Builtins],)]TJ -77.48 -13.15 TD[(page)-333(23,)-333(for)-333(descriptions)-334(of)-333(these)-333(pro)-28(cedures.)]TJ -15.69 -16.14 TD[(3.)-660(`)]TJ/F4 10.91 Tf 18.72 0 TD[(lib/framework.exp)]TJ/F1 10.91 Tf 97.36 0 TD[(',)-452(a)-429(\014le)-428(of)-429(subroutines)-429(mean)27(t)-428(for)]TJ/F4 10.91 Tf 164.39 0 TD[(runtest)]TJ/F1 10.91 Tf 44.77 0 TD[(itself)-428(rather)-429(than)-429(for)]TJ -309.55 -13.15 TD[(general-purp)-27(ose)-334(use)-333(in)-333(b)-28(oth)]TJ/F4 10.91 Tf 135.94 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(and)-333(test)-333(suites.)]TJ -195.36 -16.14 TD[(4.)-660(`)]TJ/F4 10.91 Tf 18.72 0 TD[(debugger.exp)]TJ/F1 10.91 Tf 68.73 0 TD[(',)-525(Don)-487(Lib)-28(es')-487(Tcl)-487(Debugger.)-906(\(See)]TJ/F5 10.91 Tf 175.29 0 TD[(A)-486(Debugger)-488(for)-487(Tcl)-487(Applications)]TJ/F1 10.91 Tf -247.05 -13.15 TD[(b)27(y)-420(Don)-422(Lib)-28(es.)-709(This)-421(pap)-28(er)-422(is)-421(distributed)-422(with)]TJ/F4 10.91 Tf 228.72 0 TD[(expect)]TJ/F1 10.91 Tf 38.96 0 TD[(in)-421(P)27(ostScript)-421(form)-421(as)-422(the)-422(\014le)]TJ -267.68 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(expect/tcl-debug.ps)]TJ/F1 10.91 Tf 108.82 0 TD[('.\))]TJ -127.54 -16.14 TD[(5.)-660(`)]TJ/F4 10.91 Tf 18.72 0 TD[(lib/remote.exp)]TJ/F1 10.91 Tf 80.18 0 TD[(',)-249(a)-227(collection)-228(of)-228(subroutines)-228(mean)26(t)-227(for)-227(connecting)-228(to)-228(remote)-228(mac)26(hines.)]TJ -98.9 -16.14 TD[(6.)-660(`)]TJ/F4 10.91 Tf 18.72 0 TD[(lib/target.exp)]TJ/F1 10.91 Tf 80.18 0 TD[(',)-479(a)-451(collection)-450(of)-451(subroutines)-450(used)-451(for)-450(the)-450(con\014guration)-451(systems)-450(in)]TJ -83.21 -13.15 TD[(DejaGn)27(u.)-443(These)-333(pro)-28(cedures)-334(t)27(ypically)-332(manipulate)-333(or)-334(utilize)-333(the)-333(con\014guration)-334(system.)]TJ -15.69 -16.14 TD[(7.)-660(An)-380(initialization)-381(\014le)]TJ/F5 10.91 Tf 116.33 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_init.exp)]TJ/F1 10.91 Tf 51.54 0 TD[(.)-585(See)-381(Section)-380(5.2)-381([Initialization)-380(mo)-28(dule],)-393(page)-380(22,)]TJ -171.09 -13.15 TD[(for)-333(more)-333(discussion)-333(of)-334(init)-333(\014les.)]TJ ET 0 g 0 G
-endstream
-endobj
-189 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F5 31 0 R
->>
-endobj
-187 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 189 0 R
->>
-endobj
-192 0 obj
-<<
-/Length 5629
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(35)]TJ/F2 14.35 Tf 0 -23.91 TD[(5.7)-562(The)-375(\014les)-375(DejaGn)30(u)-374(writes)]TJ/F4 10.91 Tf 14.94 -23.12 TD[(runtest)]TJ/F1 10.91 Tf 44.08 0 TD[(alw)27(a)28(ys)-364(writes)-365(t)26(w)28(o)-364(kinds)-365(of)-366(output)-365(\014les:)-508(summary)-365(logs)-366(and)-365(detailed)-365(logs.)-540(The)]TJ -59.02 -13.15 TD[(con)27(ten)28(ts)-332(of)-334(b)-27(oth)-334(of)-333(these)-333(are)-334(determined)-333(b)27(y)-333(y)27(our)-332(tests.)]TJ 14.94 -16.14 TD[(F)83(or)-404(troublesho)-27(oting,)-423(a)-404(third)-405(kind)-404(of)-405(output)-404(\014le)-405(is)-404(useful:)-587(use)-405(`)]TJ/F4 10.91 Tf 305.16 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')-404(to)-405(request)-404(an)]TJ -360.19 -13.15 TD[(output)-333(\014le)-333(sho)27(wing)-333(details)-333(of)-333(what)]TJ/F4 10.91 Tf 169.21 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(is)-333(doing)-333(in)27(ternally)83(.)]TJ/F2 13.09 Tf -207.21 -26.9 TD[(5.7.1)-562(Summary)-375(log)]TJ/F4 10.91 Tf 14.94 -23.11 TD[(runtest)]TJ/F1 10.91 Tf 44.35 0 TD[(alw)27(a)28(ys)-389(pro)-28(duces)-390(a)-391(summary)-390(output)-390(\014le)-391(`)]TJ/F5 10.91 Tf 197.61 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.sum)]TJ/F1 10.91 Tf 22.91 0 TD[('.)-615(This)-390(summary)-391(sho)27(ws)-389(the)]TJ -298.3 -13.15 TD[(names)-384(of)-385(all)-385(test)-385(\014les)-385(run;)-410(for)-385(eac)27(h)-384(test)-385(\014le,)-398(one)-384(line)-385(of)-385(output)-385(from)-385(eac)27(h)]TJ/F4 10.91 Tf 358.83 0 TD[(pass)]TJ/F1 10.91 Tf 27.11 0 TD[(command)]TJ -385.94 -13.15 TD[(\(sho)27(wing)-429(status)-429(`)]TJ/F4 10.91 Tf 83.2 0 TD[(PASS)]TJ/F1 10.91 Tf 22.9 0 TD[(')-429(or)-430(`)]TJ/F4 10.91 Tf 25.17 0 TD[(XPASS)]TJ/F1 10.91 Tf 28.64 0 TD[('\))-429(or)]TJ/F4 10.91 Tf 26.37 0 TD[(fail)]TJ/F1 10.91 Tf 27.6 0 TD[(command)-429(\(status)-430(`)]TJ/F4 10.91 Tf 91.32 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-429(or)-430(`)]TJ/F4 10.91 Tf 25.16 0 TD[(XFAIL)]TJ/F1 10.91 Tf 28.64 0 TD[('\);)-478(trailing)]TJ -381.91 -13.15 TD[(summary)-292(statistics)-293(that)-292(coun)26(t)-291(passing)-293(and)-292(failing)-293(tests)-293(\(exp)-27(ected)-293(and)-293(unexp)-27(ected\);)-307(and)-292(the)]TJ 0 -13.15 TD[(full)-286(pathname)-287(and)-286(v)27(ersion)-286(n)27(um)27(b)-26(er)-287(of)-286(the)-287(to)-28(ol)-286(tested.)-429(\(All)-287(p)-28(ossible)-286(outcomes,)-296(and)-287(all)-286(errors,)]TJ 0 -13.15 TD[(are)-391(alw)27(a)27(ys)-390(re\015ected)-392(in)-391(the)-392(summary)-392(output)-391(\014le,)-406(regardless)-392(of)-392(whether)-391(or)-392(not)-392(y)27(ou)-390(sp)-28(ecify)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--all)]TJ/F1 10.91 Tf 28.64 0 TD[('.\))]TJ -16.73 -16.14 TD[(If)-444(an)27(y)-444(of)-444(y)27(our)-444(tests)-444(use)-444(the)-445(pro)-28(cedures)]TJ/F4 10.91 Tf 196.7 0 TD[(unresolved)]TJ/F1 10.91 Tf 57.27 0 TD[(,)]TJ/F4 10.91 Tf 8.18 0 TD[(unsupported)]TJ/F1 10.91 Tf 63 0 TD[(,)-472(or)]TJ/F4 10.91 Tf 22.76 0 TD[(untested)]TJ/F1 10.91 Tf 45.82 0 TD[(,)-472(the)]TJ -408.67 -13.15 TD[(summary)-333(output)-333(also)-333(tabulates)-334(the)-333(corresp)-28(onding)-333(outcomes.)]TJ 14.94 -16.14 TD[(F)83(or)-221(example,)-245(after)-222(`)]TJ/F4 10.91 Tf 90.76 0 TD[(runtest)-333(--tool)-333(binutils)]TJ/F1 10.91 Tf 127.55 0 TD[(',)-244(lo)-28(ok)-222(for)-222(a)-222(summary)-223(log)-222(in)-222(`)]TJ/F4 10.91 Tf 131.88 0 TD[(binutils.sum)]TJ/F1 10.91 Tf 68.72 0 TD[('.)]TJ -433.85 -13.15 TD[(Normally)83(,)]TJ/F4 10.91 Tf 51.15 0 TD[(runtest)]TJ/F1 10.91 Tf 44.62 0 TD[(writes)-415(this)-415(\014le)-416(in)-415(y)26(our)-414(curren)27(t)-415(w)27(orking)-414(directory;)-457(use)-415(the)-416(`)]TJ/F4 10.91 Tf 287.38 0 TD[(--outdir)]TJ/F1 10.91 Tf 45.82 0 TD[(')]TJ -428.97 -13.15 TD[(option)-333(to)-333(select)-333(a)-334(di\013eren)27(t)-332(directory)82(.)]TJ 0 -13.79 TD[(Here)-333(is)-333(a)-333(short)-334(sample)-333(summary)-333(log:)]TJ/F9 9.96 Tf 0 -9.44 TD[(\013)]TJ ET 23.98 -299.39 m 450.40 -299.39 l 450.40 -298.99 l 23.98 -298.99 l b BT 456.38 -299.39 TD[(\010)]TJ ET 18.00 -534.88 m 18.40 -534.88 l 18.40 -305.12 l 18.00 -305.12 l b BT/F4 10.91 Tf 21.39 -317.76 TD[(Test)-524(Run)-525(By)-525(rob)-525(on)-525(Mon)-525(May)-525(25)-525(21:40:57)-525(PDT)-525(1992)]TJ 91.63 -12.46 TD[(===)-524(gdb)-525(tests)-525(===)]TJ -91.63 -12.45 TD[(Running)-524(./gdb.t00/echo.exp)-525(...)]TJ 0 -12.45 TD[(PASS:)-1574(Echo)-525(test)]TJ 0 -12.46 TD[(Running)-524(./gdb.all/help.exp)-525(...)]TJ 0 -12.45 TD[(PASS:)-1574(help)-525(add-symbol-file)]TJ 0 -12.45 TD[(PASS:)-1574(help)-525(aliases)]TJ 0 -12.46 TD[(PASS:)-1574(help)-525(breakpoint)-525("bre")-525(abbreviation)]TJ 0 -12.45 TD[(FAIL:)-1574(help)-525(run)-525("r")-525(abbreviation)]TJ 0 -12.45 TD[(Running)-524(./gdb.t10/crossload.exp)-525(...)]TJ 0 -12.46 TD[(PASS:)-1574(m68k-elf)-525(\(elf-big\))-525(explicit)-525(format;)-525(loaded)]TJ 0 -12.45 TD[(XFAIL:)-1049(mips-ecoff)-525(\(ecoff-bigmips\))-525("ptype)-525(v_signed_char")-525(signed)]TJ 0 -12.45 TD[(C)-524(types)]TJ 91.63 -12.46 TD[(===)-524(gdb)-525(Summary)-525(===)]TJ -91.63 -12.45 TD[(#)-524(of)-525(expected)-525(passes)-525(5)]TJ 0 -12.45 TD[(#)-524(of)-525(expected)-525(failures)-525(1)]TJ 0 -12.46 TD[(#)-524(of)-525(unexpected)-525(failures)-525(1)]TJ 0 -12.45 TD[(/usr/latest/bin/gdb)-524(version)-525(4.6.5)-525(-q)]TJ ET 456.38 -534.88 m 456.77 -534.88 l 456.77 -305.12 l 456.38 -305.12 l b BT/F9 9.96 Tf 18 -541.11 TD[(\012)]TJ ET 23.98 -541.11 m 450.40 -541.11 l 450.40 -540.71 l 23.98 -540.71 l b BT 456.38 -541.11 TD[(\011)]TJ ET 0 g 0 G
-endstream
-endobj
-193 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F9 59 0 R
->>
-endobj
-191 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 193 0 R
->>
-endobj
-196 0 obj
-<<
-/Length 5683
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(36)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 13.09 Tf 0 -23.91 TD[(5.7.2)-562(Detailed)-375(log)]TJ/F4 10.91 Tf 14.94 -22.46 TD[(runtest)]TJ/F1 10.91 Tf 43.69 0 TD[(also)-329(sa)27(v)28(es)-328(a)-329(detailed)-330(log)-329(\014le)-329(`)]TJ/F5 10.91 Tf 137.78 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.log)]TJ/F1 10.91 Tf 22.91 0 TD[(',)-330(sho)27(wing)-328(an)27(y)-328(output)-329(generated)-330(b)27(y)-328(tests)]TJ -237.81 -13.15 TD[(as)-328(w)27(ell)-328(as)-329(the)-329(summary)-329(output.)-442(F)82(or)-328(example,)-330(after)-328(`)]TJ/F4 10.91 Tf 249.11 0 TD[(runtest)-333(--tool)-333(binutils)]TJ/F1 10.91 Tf 127.55 0 TD[(',)-329(lo)-28(ok)-329(for)-328(a)]TJ -376.66 -13.16 TD[(detailed)-332(log)-332(in)-332(`)]TJ/F4 10.91 Tf 74.51 0 TD[(binutils.log)]TJ/F1 10.91 Tf 68.72 0 TD[('.)-444(Normally)83(,)]TJ/F4 10.91 Tf 60.93 0 TD[(runtest)]TJ/F1 10.91 Tf 43.71 0 TD[(writes)-332(this)-332(\014le)-332(in)-332(y)27(our)-331(curren)27(t)-332(w)27(orking)]TJ -247.87 -13.15 TD[(directory;)-333(use)-333(the)-333(`)]TJ/F4 10.91 Tf 90.12 0 TD[(--outdir)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(option)-333(to)-333(select)-334(a)-333(di\013eren)27(t)-333(directory)83(.)]TJ -135.94 -13.13 TD[(Here)-333(is)-333(a)-333(brief)-334(example)-333(sho)27(wing)-333(a)-333(detailed)-333(log)-334(for)]TJ/F7 10.91 Tf 239.91 0 TD[(g)]TJ/F4 10.91 Tf 6.99 0 TD[(++)]TJ/F1 10.91 Tf 15.09 0 TD[(tests:)]TJ/F9 9.96 Tf -261.99 -9.44 TD[(\013)]TJ ET 23.98 -94.45 m 450.40 -94.45 l 450.40 -94.05 l 23.98 -94.05 l b BT 456.38 -94.45 TD[(\010)]TJ ET 18.00 -516.74 m 18.40 -516.74 l 18.40 -100.18 l 18.00 -100.18 l b BT/F4 10.91 Tf 21.39 -112.82 TD[(Test)-524(Run)-525(By)-525(rob)-525(on)-525(Mon)-525(May)-525(25)-525(21:40:43)-525(PDT)-525(1992)]TJ 91.63 -24.91 TD[(===)-524(g++)-525(tests)-525(===)]TJ -91.63 -24.9 TD[(---)-524(Running)-525(./g++.other/t01-1.exp)-525(---)]TJ 45.81 -12.46 TD[(PASS:)-1574(operate)-525(delete)]TJ -45.81 -24.9 TD[(---)-524(Running)-525(./g++.other/t01-2.exp)-525(---)]TJ 45.81 -12.46 TD[(FAIL:)-1574(i960)-525(bug)-525(EOF)]TJ -45.81 -12.45 TD[(p0000646.C:)-524(In)-525(function)-525(`int)-1050(warn_return_1)-525(\(\)':)]TJ 0 -12.45 TD[(p0000646.C:109:)-524(warning:)-525(control)-525(reaches)-525(end)-525(of)-525(non-void)-525(function)]TJ 0 -12.46 TD[(p0000646.C:)-524(In)-525(function)-525(`int)-1050(warn_return_arg)-525(\(int\)':)]TJ 0 -12.45 TD[(p0000646.C:117:)-524(warning:)-525(control)-525(reaches)-525(end)-525(of)-525(non-void)-525(function)]TJ 0 -12.45 TD[(p0000646.C:)-524(In)-525(function)-525(`int)-1050(warn_return_sum)-525(\(int,)-525(int\)':)]TJ 0 -12.46 TD[(p0000646.C:125:)-524(warning:)-525(control)-525(reaches)-525(end)-525(of)-525(non-void)-525(function)]TJ 0 -12.45 TD[(p0000646.C:)-524(In)-525(function)-525(`struct)-525(foo)-525(warn_return_foo)-525(\(\)':)]TJ 0 -12.45 TD[(p0000646.C:132:)-524(warning:)-525(control)-525(reaches)-525(end)-525(of)-525(non-void)-525(function)]TJ 0 -24.91 TD[(---)-524(Running)-525(./g++.other/t01-4.exp)-525(---)]TJ 45.81 -12.45 TD[(FAIL:)-1574(abort)]TJ -45.81 -12.46 TD[(900403_04.C:8:)-524(zero)-525(width)-525(for)-525(bit-field)-525(`foo')]TJ 0 -12.45 TD[(---)-524(Running)-525(./g++.other/t01-3.exp)-525(---)]TJ 45.81 -12.45 TD[(FAIL:)-1574(segment)-525(violation)]TJ -45.81 -12.46 TD[(900519_12.C:9:)-524(parse)-525(error)-525(before)-525(`;')]TJ 0 -12.45 TD[(900519_12.C:12:)-524(Segmentation)-525(violation)]TJ 0 -12.45 TD[(/usr/latest/bin/gcc:)-524(Internal)-525(compiler)-525(error:)-525(program)-525(cc1plus)-525(got)]TJ 0 -12.46 TD[(fatal)-524(signal)]TJ 91.63 -24.9 TD[(===)-524(g++)-525(Summary)-525(===)]TJ -91.63 -24.91 TD[(#)-524(of)-525(expected)-525(passes)-525(1)]TJ 0 -12.45 TD[(#)-524(of)-525(expected)-525(failures)-525(3)]TJ 0 -12.46 TD[(/usr/ps/bin/g++)-524(version)-525(cygnus-2.0.1)]TJ ET 456.38 -516.74 m 456.77 -516.74 l 456.77 -100.18 l 456.38 -100.18 l b BT/F9 9.96 Tf 18 -522.97 TD[(\012)]TJ ET 23.98 -522.97 m 450.40 -522.97 l 450.40 -522.57 l 23.98 -522.57 l b BT 456.38 -522.97 TD[(\011)]TJ/F2 13.09 Tf -438.38 -24.94 TD[(5.7.3)-562(Logging)]TJ/F10 13.09 Tf 93.12 0 TD[(expect)]TJ/F2 13.09 Tf 45.33 0 TD[(in)31(ternal)-374(actions)]TJ/F1 10.91 Tf -123.51 -22.46 TD[(With)-360(the)-361(`)]TJ/F4 10.91 Tf 50.6 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')-360(option,)-368(y)27(ou)-359(can)-361(request)-361(a)-360(log)-361(\014le)-360(sho)26(wing)-359(the)-361(output)-360(from)]TJ/F4 10.91 Tf 292.01 0 TD[(expect)]TJ/F1 10.91 Tf -397.64 -13.15 TD[(itself,)-416(running)-400(in)-400(debugging)-400(mo)-28(de.)-644(This)-400(\014le)-400(\(`)]TJ/F4 10.91 Tf 225.06 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[(',)-416(in)-400(the)-400(directory)-400(where)-400(y)27(ou)-399(start)]TJ/F4 10.91 Tf -265.15 -13.15 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(\))-333(sho)27(ws)-332(eac)26(h)-332(pattern)]TJ/F4 10.91 Tf 102.58 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(considers)-333(in)-333(analyzing)-333(test)-334(output.)]TJ -165.73 -15.49 TD[(This)-305(\014le)-306(re\015ects)-305(eac)27(h)]TJ/F4 10.91 Tf 102.88 0 TD[(send)]TJ/F1 10.91 Tf 26.24 0 TD[(command,)-311(sho)27(wing)-304(the)-306(string)-305(sen)26(t)-304(as)-306(input)-305(to)-306(the)-305(to)-28(ol)-306(under)]TJ -144.06 -13.15 TD[(test;)-333(and)-333(eac)27(h)]TJ/F4 10.91 Tf 70.06 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(command,)-333(sho)27(wing)-332(eac)26(h)-332(pattern)-333(it)-334(compares)-333(with)-333(the)-334(to)-27(ol)-334(output.)]TJ -93.12 -15.49 TD[(The)-333(log)-333(messages)-333(for)]TJ/F4 10.91 Tf 102.94 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(b)-27(egin)-334(with)-333(a)-333(message)-334(of)-333(the)-333(form)]TJ ET 0 g 0 G
-endstream
-endobj
-197 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F7 49 0 R
-/F9 59 0 R
-/F10 78 0 R
->>
-endobj
-195 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 197 0 R
->>
-endobj
-200 0 obj
-<<
-/Length 6757
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(37)]TJ/F4 10.91 Tf 28.8 -23.91 TD[(expect:)-524(does)-525({)]TJ/F5 10.91 Tf 80.18 0 TD[(to)-27(ol)-334(output)]TJ/F4 10.91 Tf 54.48 0 TD[(})-524(\(spawn_id)]TJ/F5 10.91 Tf 68.73 0 TD[(n)]TJ/F4 10.91 Tf 6.06 0 TD[(\))-524(match)-525(pattern)]TJ -209.45 -12.46 TD[({)]TJ/F5 10.91 Tf 5.73 0 TD[(exp)-27(ected)-334(pattern)]TJ/F4 10.91 Tf 80.63 0 TD[(}?)]TJ/F1 10.91 Tf -115.16 -16.14 TD[(F)83(or)-325(ev)27(ery)-325(unsuccessful)-325(matc)26(h,)]TJ/F4 10.91 Tf 145.84 0 TD[(expect)]TJ/F1 10.91 Tf 37.91 0 TD[(issues)-325(a)-326(`)]TJ/F4 10.91 Tf 42.44 0 TD[(no)]TJ/F1 10.91 Tf 11.46 0 TD[(')-325(after)-326(this)-326(message;)-328(if)-326(other)-325(patterns)-326(are)]TJ -237.65 -13.15 TD[(sp)-27(eci\014ed)-341(for)-341(the)-341(same)]TJ/F4 10.91 Tf 107.14 0 TD[(expect)]TJ/F1 10.91 Tf 38.09 0 TD[(command,)-342(they)-341(are)-341(re\015ected)-341(also,)-342(but)-341(without)-341(the)-341(\014rst)-340(part)]TJ -145.23 -13.15 TD[(of)-333(the)-333(message)-333(\(`)]TJ/F4 10.91 Tf 80.42 0 TD[(expect...match)-333(pattern)]TJ/F1 10.91 Tf 123.91 0 TD[('\).)]TJ -189.39 -16.14 TD[(When)]TJ/F4 10.91 Tf 32.05 0 TD[(expect)]TJ/F1 10.91 Tf 38.24 0 TD[(\014nds)-354(a)-355(matc)27(h,)-359(the)-354(log)-355(for)-354(the)-355(successful)-355(matc)27(h)-353(ends)-355(with)-355(`)]TJ/F4 10.91 Tf 281.12 0 TD[(yes)]TJ/F1 10.91 Tf 17.18 0 TD[(',)-359(follo)26(w)28(ed)]TJ -383.53 -13.15 TD[(b)27(y)-356(a)-356(record)-357(of)-357(the)]TJ/F4 10.91 Tf 90.13 0 TD[(expect)]TJ/F1 10.91 Tf 38.25 0 TD[(v)55(ariables)-356(set)-357(to)-356(describ)-28(e)-357(a)-357(successful)-356(matc)26(h.)-514(Here)-356(is)-357(an)-357(excerpt)]TJ -128.38 -13.15 TD[(from)-333(the)-333(debugging)-333(log)-334(for)-333(a)]TJ/F7 10.91 Tf 140.06 0 TD[(gdb)]TJ/F1 10.91 Tf 23.77 0 TD[(test:)]TJ/F9 9.96 Tf -163.83 -9.44 TD[(\013)]TJ ET 23.98 -116.74 m 450.40 -116.74 l 450.40 -116.34 l 23.98 -116.34 l b BT 456.38 -116.74 TD[(\010)]TJ ET 18.00 -440.32 m 18.40 -440.32 l 18.40 -122.47 l 18.00 -122.47 l b BT/F4 10.91 Tf 21.39 -136.02 TD[(send:)-524(sent)-525({break)-525(gdbme.c:34\\n})-525(to)-525(spawn)-525(id)-525(6)]TJ 0 -12.46 TD[(expect:)-524(does)-525({})-525(\(spawn_id)-525(6\))-525(match)-525(pattern)-525({Breakpoint.*at.*)-525(file)]TJ 5.72 -12.45 TD[(gdbme.c,)-524(line)-525(34.*\\\(gdb\\\))-525($}?)-525(no)]TJ -5.72 -12.45 TD[({.*\\\(gdb\\\))-524($}?)-525(no)]TJ 0 -12.46 TD[(expect:)-524(does)-525({})-525(\(spawn_id)-525(0\))-525(match)-525(pattern)-525({<return>}?)-525(no)]TJ 0 -12.45 TD[({\\\(y)-524(or)-525(n\\\))-525(}?)-525(no)]TJ 0 -12.45 TD[({buffer_full}?)-524(no)]TJ 0 -12.46 TD[({virtual}?)-524(no)]TJ 0 -12.45 TD[({memory}?)-524(no)]TJ 0 -12.45 TD[({exhausted}?)-524(no)]TJ 0 -12.46 TD[({Undefined}?)-524(no)]TJ 0 -12.45 TD[({command}?)-524(no)]TJ 0 -12.45 TD[(break)-524(gdbme.c:34)]TJ 0 -12.46 TD[(Breakpoint)-524(8)-525(at)-525(0x23d8:)-525(file)-525(gdbme.c,)-525(line)-525(34.)]TJ 0 -12.45 TD[(\(gdb\))-524(expect:)-525(does)-525({break)-525(gdbme.c:34\\r\\nBreakpoint)-525(8)-525(at)-525(0x23d8:)]TJ 0 -12.45 TD[(file)-524(gdbme.c,)-525(line)-525(34.\\r\\n\(gdb\))-525(})-525(\(spawn_id)-525(6\))-525(match)-525(pattern)]TJ 0 -12.46 TD[({Breakpoint.*at.*)-524(file)-525(gdbme.c,)-525(line)-525(34.*\\\(gdb\\\))-525($}?)-525(yes)]TJ 0 -12.45 TD[(expect:)-524(set)-525(expect_out\(0,start\))-525({18})]TJ 0 -12.45 TD[(expect:)-524(set)-525(expect_out\(0,end\))-525({71})]TJ 0 -12.46 TD[(expect:)-524(set)-525(expect_out\(0,string\))-525({Breakpoint)-525(8)-525(at)-525(0x23d8:)-525(file)]TJ 0 -12.45 TD[(gdbme.c,)-524(line)-525(34.\\r\\n\(gdb\))-525(})]TJ 0 -12.45 TD[(expect:)-524(set)-525(expect_out\(spawn_id\))-525({6})]TJ 0 -12.46 TD[(expect:)-524(set)-525(expect_out\(buffer\))-525({break)-525(gdbme.c:34\\r\\nBreakpoint)-525(8)]TJ 0 -12.45 TD[(at)-524(0x23d8:)-525(file)-525(gdbme.c,)-525(line)-525(34.\\r\\n\(gdb\))-525(})]TJ 45.81 -12.45 TD[(PASS:)-1574(70)-3150(0)-3675(breakpoint)-525(line)-525(number)-525(in)-525(file)]TJ ET 456.38 -440.32 m 456.77 -440.32 l 456.77 -122.47 l 456.38 -122.47 l b BT/F9 9.96 Tf 18 -446.54 TD[(\012)]TJ ET 23.98 -446.54 m 450.40 -446.54 l 450.40 -446.14 l 23.98 -446.14 l b BT 456.38 -446.54 TD[(\011)]TJ/F1 10.91 Tf -438.38 -17.39 TD[(This)-309(example)-310(exhibits)-310(three)-309(prop)-28(erties)-310(of)]TJ/F4 10.91 Tf 198.73 0 TD[(expect)]TJ/F1 10.91 Tf 37.74 0 TD[(and)-309(DejaGn)27(u)-309(that)-310(migh)27(t)-309(b)-28(e)-309(surprising)-310(at)]TJ -236.47 -13.15 TD[(\014rst)-333(glance:)]TJ/F3 10.91 Tf 8.95 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(Empt)27(y)-272(output)-274(for)-274(the)-273(\014rst)-274(attempted)-274(matc)27(h.)-424(The)-273(\014rst)-274(set)-274(of)-273(attempted)-274(matc)27(hes)-273(sho)27(wn)]TJ 0 -13.15 TD[(ran)-377(against)-377(the)-377(output)-377(`)]TJ/F4 10.91 Tf 116.54 0 TD[({})]TJ/F1 10.91 Tf 11.46 0 TD[('|that)-377(is,)-387(no)-378(output.)]TJ/F4 10.91 Tf 109.71 0 TD[(expect)]TJ/F1 10.91 Tf 38.47 0 TD[(b)-27(egins)-377(attempting)-377(to)-377(matc)26(h)]TJ -276.18 -13.15 TD[(the)-401(patterns)-401(supplied)-401(immediately;)-435(often,)-419(the)-401(\014rst)-401(pass)-401(is)-401(against)-402(incomplete)-401(output)]TJ 0 -13.15 TD[(\(or)-333(completely)-333(b)-28(efore)-333(all)-334(output,)-333(as)-333(in)-334(this)-333(case\).)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(In)27(tersp)-26(ersed)-446(to)-27(ol)-445(output.)-780(The)-445(b)-28(eginning)-445(of)-445(the)-445(log)-445(en)27(try)-445(for)-445(the)-445(second)-445(attempted)]TJ 0 -13.15 TD[(matc)27(h)-341(ma)26(y)-341(b)-28(e)-342(hard)-343(to)-343(sp)-27(ot:)-463(this)-343(is)-342(b)-28(ecause)-343(the)-342(prompt)-343(`)]TJ/F4 10.91 Tf 273.03 0 TD[(\(gdb\))]TJ/F1 10.91 Tf 32.27 0 TD[(')-342(app)-28(ears)-342(on)-343(the)-343(same)]TJ -305.3 -13.15 TD[(line,)-333(just)-333(b)-28(efore)-333(the)-334(`)]TJ/F4 10.91 Tf 99.79 0 TD[(expect:)]TJ/F1 10.91 Tf 40.09 0 TD[(')-333(that)-333(marks)-333(the)-334(b)-28(eginning)-333(of)-333(the)-334(log)-333(en)27(try)83(.)]TJ/F3 10.91 Tf -152.53 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(F)83(ail-safe)-342(patterns.)-472(Man)27(y)-342(of)-343(the)-342(patterns)-343(tested)-342(are)-343(fail-safe)-343(patterns)-342(pro)27(vided)-342(b)27(y)]TJ/F7 10.91 Tf 390.27 0 TD[(gdb)]TJ/F1 10.91 Tf -390.27 -13.15 TD[(testing)-471(utilities,)-506(to)-472(reduce)-471(p)-28(ossible)-471(indeterminacy)82(.)-858(It)-472(is)-471(useful)-472(to)-471(an)27(ticipate)-471(p)-28(oten-)]TJ 0 -13.15 TD[(tial)-484(v)55(ariations)-484(caused)-485(b)27(y)-483(extreme)-485(system)-484(conditions)-485(\()]TJ/F7 10.91 Tf 265.55 0 TD[(gdb)]TJ/F1 10.91 Tf 25.42 0 TD[(migh)27(t)-483(issue)-485(the)-484(message)]TJ ET 0 g 0 G
-endstream
-endobj
-201 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F7 49 0 R
-/F9 59 0 R
-/F3 21 0 R
->>
-endobj
-199 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 201 0 R
->>
-endobj
-204 0 obj
-<<
-/Length 2123
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(38)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 21.6 -23.91 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(virtual)-333(memory)-333(exhausted)]TJ/F1 10.91 Tf 133.27 0 TD[(')-361(in)-361(rare)-361(circumstances\),)-368(or)-361(b)27(y)-360(c)27(hanges)-360(in)-361(the)-361(tested)-361(pro-)]TJ -136.3 -13.15 TD[(gram)-354(\(`)]TJ/F4 10.91 Tf 35.41 0 TD[(Undefined)-333(command)]TJ/F1 10.91 Tf 95.28 0 TD[(')-354(is)-355(the)-355(lik)27(eliest)-353(outcome)-355(if)-355(the)-354(name)-355(of)-355(a)-355(tested)-354(command)]TJ -130.69 -13.15 TD[(c)27(hanges\).)]TJ 0 -16.14 TD[(The)-355(pattern)-356(`)]TJ/F4 10.91 Tf 64.76 0 TD[({<return>})]TJ/F1 10.91 Tf 57.27 0 TD[(')-355(is)-356(a)-355(particularly)-356(in)27(teresting)-355(fail-safe)-355(to)-356(notice;)-367(it)-355(c)27(hec)27(ks)-354(for)]TJ -122.03 -13.15 TD[(an)-421(unexp)-28(ected)]TJ/F11 8.97 Tf 74.65 0.39 TD[(h)]TJ ET 117.16 -58.83 m 135.26 -58.83 l 135.26 -58.43 l 117.16 -58.43 l b BT/F12 7.97 Tf 117.16 -65.55 TD[(RET)]TJ ET 117.16 -67.40 m 135.26 -67.40 l 135.26 -67.00 l 117.16 -67.00 l b BT/F11 8.97 Tf 134.76 -65.16 TD[(i)]TJ/F1 10.91 Tf 8.18 -0.39 TD[(prompt.)-709(This)-421(ma)27(y)-421(happ)-28(en,)-443(for)-422(example,)-444(if)-421(the)-422(tested)-421(to)-28(ol)-422(can)]TJ -103.34 -13.15 TD[(\014lter)-333(output)-333(through)-333(a)-334(pager.)]TJ 0 -16.14 TD[(These)-317(fail-safe)-317(patterns)-318(\(lik)27(e)-316(the)-318(debugging)-317(log)-318(itself)-77(\))-318(are)-317(primarily)-318(useful)-317(while)-317(dev)26(el-)]TJ 0 -13.15 TD[(oping)-357(test)-357(scripts.)-516(Use)-357(the)]TJ/F4 10.91 Tf 131.49 0 TD[(error)]TJ/F1 10.91 Tf 32.54 0 TD[(pro)-27(cedure)-358(to)-357(mak)27(e)-356(the)-358(actions)-357(for)-357(fail-safe)-357(patterns)]TJ -164.03 -13.16 TD[(pro)-27(duce)-391(messages)-390(starting)-391(with)-390(`)]TJ/F4 10.91 Tf 158.86 0 TD[(ERROR)]TJ/F1 10.91 Tf 28.64 0 TD[(')-390(on)-391(the)]TJ/F4 10.91 Tf 42.47 0 TD[(runtest)]TJ/F1 10.91 Tf 44.35 0 TD[(standard)-390(output,)-405(and)-390(in)-391(the)]TJ -274.32 -13.15 TD[(detailed)-333(log)-333(\014le.)]TJ ET 0 g 0 G
-endstream
-endobj
-205 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F11 97 0 R
-/F12 100 0 R
->>
-endobj
-203 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 205 0 R
->>
-endobj
-208 0 obj
-<<
-/Length 6090
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(6:)-444(Ho)27(w)-333(T)83(o)-333(W)83(rite)-333(a)-333(T)82(est)-332(Case)-21861(39)]TJ/F2 17.22 Tf 0 -25.91 TD[(6)-562(Ho)30(w)-374(T)93(o)-374(W)93(rite)-374(a)-375(T)93(est)-374(Case)]TJ/F2 14.35 Tf 0 -42.83 TD[(6.1)-562(W)93(riting)-374(a)-375(test)-375(case)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(The)-338(easiest)-338(w)27(a)28(y)-337(to)-338(prepare)-339(a)-338(new)-338(test)-338(case)-338(is)-338(to)-338(base)-339(it)-338(on)-338(an)-338(existing)-338(one)-338(for)-338(a)-338(similar)]TJ -14.94 -13.15 TD[(situation.)-702(There)-419(are)-419(t)26(w)28(o)-418(ma)-56(jor)-419(categories)-419(of)-419(tests:)-617(batc)27(h)-418(or)-420(in)27(teractiv)28(e.)-701(Batc)26(h)-418(orien)27(ted)]TJ 0 -13.15 TD[(tests)-333(are)-333(usually)-333(easier)-334(to)-333(write.)]TJ 14.94 -16.14 TD[(The)]TJ/F7 10.91 Tf 21.56 0 TD[(gcc)]TJ/F1 10.91 Tf 22.66 0 TD[(tests)-253(are)-254(a)-254(go)-28(o)-28(d)-254(example)-253(of)-254(batc)26(h)-252(orien)26(ted)-253(tests.)-418(All)]TJ/F7 10.91 Tf 246.46 0 TD[(gcc)]TJ/F1 10.91 Tf 22.66 0 TD[(tests)-253(consist)-254(primarily)]TJ -328.28 -13.15 TD[(of)-387(a)-388(call)-388(to)-388(a)-388(single)-388(common)-388(pro)-28(cedure,)-401(since)-388(all)-388(the)-388(tests)-388(either)-388(ha)27(v)27(e)-386(no)-388(output,)-402(or)-388(only)]TJ 0 -13.15 TD[(ha)27(v)28(e)-429(a)-431(few)-431(w)27(arning)-429(messages)-431(when)-430(successfully)-431(compiled.)-736(An)27(y)-430(non-w)27(arning)-430(output)-430(is)-431(a)]TJ 0 -13.15 TD[(test)-331(failure.)-444(All)-332(the)-332(C)-332(co)-28(de)-332(needed)-332(is)-332(k)27(ept)-331(in)-332(the)-331(test)-332(directory)82(.)-443(The)-332(test)-332(driv)27(er,)-331(written)-332(in)]TJ/F4 10.91 Tf 0 -13.15 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(,)-302(need)-294(only)-295(get)-294(a)-295(listing)-294(of)-295(all)-294(the)-295(C)-294(\014les)-295(in)-294(the)-295(directory)82(,)-301(and)-294(compile)-295(them)-294(all)-295(using)]TJ -34.36 -13.15 TD[(a)-307(generic)-307(pro)-28(cedure.)-435(This)-308(pro)-27(cedure)-307(and)-308(a)-307(few)-307(others)-307(supp)-28(orting)-307(for)-307(these)-307(tests)-308(are)-307(k)27(ept)-306(in)]TJ 0 -13.15 TD[(the)-325(library)-325(mo)-28(dule)-325(`)]TJ/F4 10.91 Tf 95.55 0 TD[(lib/c-torture.exp)]TJ/F1 10.91 Tf 97.36 0 TD[(')-325(in)-325(the)]TJ/F7 10.91 Tf 37.92 0 TD[(gcc)]TJ/F1 10.91 Tf 23.43 0 TD[(test)-325(suite.)-441(Most)-325(tests)-326(of)-325(this)-325(kind)-325(use)]TJ -254.26 -13.15 TD[(v)27(ery)-332(few)]TJ/F4 10.91 Tf 43.67 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(features,)-333(and)-333(are)-333(co)-28(ded)-334(almost)-333(purely)-333(in)-334(Tcl.)]TJ -81.67 -16.14 TD[(W)83(riting)-332(the)-334(complete)-333(suite)-333(of)-334(C)-333(tests,)-333(then,)-334(consisted)-333(of)-333(these)-334(steps:)]TJ 5.91 -16.14 TD[(1.)-660(Cop)27(ying)-289(all)-290(the)-291(C)-290(co)-28(de)-290(in)27(to)-290(the)-290(test)-291(directory)83(.)-429(These)-291(tests)-290(w)27(ere)-290(based)-290(on)-290(the)-291(C-torture)]TJ 15.69 -13.15 TD[(test)-263(created)-264(b)26(y)-263(T)83(orb)-55(jorn)-264(Granlund)-264(\(on)-264(b)-27(ehalf)-264(of)-264(the)-264(F)82(ree)-263(Soft)27(w)28(are)-263(F)82(oundation\))-263(for)]TJ/F7 10.91 Tf 390.51 0 TD[(gcc)]TJ/F1 10.91 Tf -390.51 -13.15 TD[(dev)27(elopmen)28(t.)]TJ -15.69 -16.14 TD[(2.)-660(W)83(riting)-333(\(and)-333(debugging\))-333(the)-334(generic)]TJ/F4 10.91 Tf 193.33 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(pro)-27(cedures)-334(for)-333(compilation.)]TJ -231.33 -16.14 TD[(3.)-660(W)83(riting)-359(the)-360(simple)-360(test)-360(driv)27(er:)-497(its)-360(main)-360(task)-360(is)-359(to)-360(searc)26(h)-359(the)-359(directory)-360(\(using)-360(the)-360(Tcl)]TJ 15.69 -13.15 TD[(pro)-27(cedure)]TJ/F4 10.91 Tf 50.96 0 TD[(glob)]TJ/F1 10.91 Tf 26.84 0 TD[(for)-360(\014lename)-360(expansion)-361(with)-360(wildcards\))-361(and)-360(call)-361(a)-360(Tcl)-361(pro)-27(cedure)-361(with)]TJ -77.8 -13.15 TD[(eac)27(h)-332(\014lename.)-444(It)-334(also)-333(c)27(hec)27(ks)-332(for)-333(a)-334(few)-333(errors)-333(from)-334(the)-333(testing)-333(pro)-28(cedure.)]TJ -6.66 -19.13 TD[(T)83(esting)-412(in)27(teractiv)28(e)-412(programs)-412(is)-412(in)26(trinsically)-411(more)-413(complex.)-681(T)82(ests)-412(for)-412(most)-412(in)26(teractiv)28(e)]TJ -14.94 -13.15 TD[(programs)-333(require)-333(some)-333(trial)-334(and)-333(error)-333(b)-28(efore)-334(they)-333(are)-333(complete.)]TJ 14.94 -16.14 TD[(Ho)27(w)28(ev)28(er,)-465(some)-439(in)27(teractiv)28(e)-438(programs)-439(can)-439(b)-28(e)-439(tested)-439(in)-439(a)-438(simple)-439(fashion)-439(reminiscen)26(t)-438(of)]TJ -14.94 -13.15 TD[(batc)27(h)-378(tests.)-583(F)83(or)-379(example,)-391(prior)-379(to)-380(the)-379(creation)-379(of)-380(DejaGn)27(u,)-390(the)]TJ/F7 10.91 Tf 312.86 0 TD[(gdb)]TJ/F1 10.91 Tf 24.27 0 TD[(distribution)-379(already)]TJ -337.13 -13.15 TD[(included)-407(a)-408(wide-ranging)-407(testing)-408(pro)-28(cedure.)-667(This)-408(pro)-27(cedure)-408(w)27(as)-407(v)27(ery)-407(robust,)-426(and)-407(had)-408(al-)]TJ 0 -13.15 TD[(ready)-314(undergone)-315(m)27(uc)28(h)-314(more)-315(debugging)-314(and)-315(error)-315(c)27(hec)28(king)-314(than)-315(man)27(y)-314(recen)27(t)-313(DejaGn)26(u)-313(test)]TJ 0 -13.16 TD[(cases.)-685(Accordingly)83(,)-433(the)-413(b)-28(est)-414(approac)27(h)-413(w)27(as)-412(simply)-414(to)-414(encapsulate)-413(the)-414(existing)]TJ/F7 10.91 Tf 382.39 0 TD[(gdb)]TJ/F1 10.91 Tf 24.64 0 TD[(tests,)]TJ -407.03 -13.15 TD[(for)-355(rep)-27(orting)-356(purp)-27(oses.)-510(Thereafter,)-361(new)]TJ/F7 10.91 Tf 194.75 0 TD[(gdb)]TJ/F1 10.91 Tf 24.01 0 TD[(tests)-355(built)-355(up)-355(a)-355(family)-355(of)]TJ/F4 10.91 Tf 123.67 0 TD[(expect)]TJ/F1 10.91 Tf 38.24 0 TD[(pro)-27(cedures)]TJ -380.67 -13.15 TD[(sp)-27(ecialized)-334(for)]TJ/F7 10.91 Tf 71 0 TD[(gdb)]TJ/F1 10.91 Tf 23.77 0 TD[(testing.)]TJ -79.83 -16.14 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(gdb.t10/crossload.exp)]TJ/F1 10.91 Tf 120.28 0 TD[(')-333(is)-333(a)-333(go)-28(o)-28(d)-333(example)-334(of)-333(an)-333(in)26(teractiv)28(e)-332(test.)]TJ ET 0 g 0 G
-endstream
-endobj
-209 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F7 49 0 R
-/F4 28 0 R
->>
-endobj
-207 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 209 0 R
->>
-endobj
-212 0 obj
-<<
-/Length 10014
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(40)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(6.2)-562(Debugging)-375(a)-375(test)-375(case)]TJ/F1 10.91 Tf 0 -23.12 TD[(These)-333(are)-333(the)-333(kinds)-334(of)-333(debugging)-333(information)-334(a)27(v)56(ailable)-333(from)-333(DejaGn)27(u:)]TJ 5.91 -16.14 TD[(1.)-660(Output)-330(con)27(trolled)-329(b)26(y)-329(test)-330(scripts)-331(themselv)27(es,)-330(explicitly)-330(allo)27(w)28(ed)-330(for)-330(b)27(y)-330(the)-330(test)-330(author.)]TJ 15.69 -13.15 TD[(This)-252(kind)-252(of)-252(debugging)-252(output)-252(app)-28(ears)-252(in)-253(the)-252(detailed)-252(output)-252(recorded)-252(in)-252(the)-253(`)]TJ/F5 10.91 Tf 365.98 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.48 0 TD[(.log)]TJ/F1 10.91 Tf 22.91 0 TD[(')]TJ -407.37 -13.15 TD[(\014le.)-455(T)82(o)-336(do)-337(the)-337(same)-337(for)-337(new)-337(tests,)-338(use)-337(the)]TJ/F4 10.91 Tf 205.01 0 TD[(verbose)]TJ/F1 10.91 Tf 43.77 0 TD[(pro)-27(cedure)-337(\(whic)26(h)-336(in)-337(turn)-337(uses)-337(the)]TJ -248.78 -13.15 TD[(v)55(ariable)-328(also)-330(called)]TJ/F4 10.91 Tf 93.6 0 TD[(verbose)]TJ/F1 10.91 Tf 40.09 0 TD[(\))-329(to)-330(con)27(trol)-328(ho)26(w)-328(m)27(uc)27(h)-328(output)-330(to)-329(generate.)-443(This)-330(will)-330(mak)27(e)]TJ -133.69 -13.15 TD[(it)-328(easier)-328(for)-328(other)-328(p)-28(eople)-328(running)-328(the)-328(test)-329(to)-328(debug)-328(it)-328(if)-328(necessary)82(.)-442(Whenev)27(er)-327(p)-28(ossible,)]TJ 0 -13.15 TD[(if)-353(`)]TJ/F4 10.91 Tf 13.25 0 TD[($verbose)]TJ/F1 10.91 Tf 45.82 0 TD[(')-353(is)]TJ/F4 10.91 Tf 18.08 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(,)-358(there)-354(should)-353(b)-28(e)-354(no)-353(output)-354(other)-354(than)-353(the)-354(output)-354(from)]TJ/F4 10.91 Tf 271.73 0 TD[(pass)]TJ/F1 10.91 Tf 22.91 0 TD[(,)]TJ/F4 10.91 Tf 6.94 0 TD[(fail)]TJ/F1 10.91 Tf 22.91 0 TD[(,)]TJ/F4 10.91 Tf -407.37 -13.15 TD[(error)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-370(and)]TJ/F4 10.91 Tf 28.6 0 TD[(warning)]TJ/F1 10.91 Tf 40.1 0 TD[(.)-533(Then,)-371(to)-363(whatev)27(er)-362(exten)27(t)-362(is)-363(appropriate)-363(for)-363(the)-364(particular)-363(test,)]TJ -97.34 -13.15 TD[(allo)27(w)-363(successiv)27(ely)-363(higher)-364(v)54(alues)-363(of)-364(`)]TJ/F4 10.91 Tf 170.44 0 TD[($verbose)]TJ/F1 10.91 Tf 45.82 0 TD[(')-364(to)-364(generate)-364(more)-364(information.)-537(Be)-364(kind)]TJ -216.26 -13.15 TD[(to)-333(other)-333(programmers)-333(who)-334(use)-333(y)27(our)-333(tests:)-444(pro)27(vide)-333(for)-333(a)-333(lot)-334(of)-333(debugging)-333(information.)]TJ -15.69 -16.14 TD[(2.)-660(Output)-293(from)-293(the)-293(in)26(ternal)-292(debugging)-293(functions)-293(of)-294(Tcl)-293(and)]TJ/F4 10.91 Tf 287.64 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(.)-431(There)-293(is)-293(a)-293(command)]TJ -306.31 -13.15 TD[(line)-329(options)-330(for)-329(eac)27(h;)-330(b)-28(oth)-329(forms)-330(of)-329(debugging)-330(output)-329(are)-330(recorded)-329(in)-330(the)-329(\014le)]TJ/F4 10.91 Tf 370.31 0 TD[(dbg.log)]TJ/F1 10.91 Tf -370.31 -13.15 TD[(in)-333(the)-333(curren)27(t)-333(directory)83(.)]TJ 0 -16.14 TD[(Use)-243(`)]TJ/F4 10.91 Tf 23.02 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')-243(for)-243(information)-244(from)-243(the)]TJ/F4 10.91 Tf 122.16 0 TD[(expect)]TJ/F1 10.91 Tf 37.02 0 TD[(lev)27(el;)-272(it)-244(generates)-243(displa)27(ys)-243(of)-243(the)]TJ/F4 10.91 Tf 153.75 0 TD[(expect)]TJ/F1 10.91 Tf -376.04 -13.15 TD[(attempts)-266(to)-267(matc)26(h)-265(the)-267(to)-28(ol)-267(output)-267(with)-267(the)-267(patterns)-267(sp)-28(eci\014ed)-266(\(see)-267(Section)-267(5.7.3)-267([Debug)]TJ 0 -13.15 TD[(Log],)-357(page)-353(36\).)-503(This)-353(output)-353(can)-353(b)-28(e)-353(v)27(ery)-352(helpful)-353(while)-353(dev)27(eloping)-352(test)-353(scripts,)-357(since)-353(it)]TJ 0 -13.15 TD[(sho)27(ws)-322(precisely)-323(the)-323(c)27(haracters)-322(receiv)26(ed.)-440(Iterating)-323(b)-27(et)26(w)28(een)-322(the)-323(latest)-323(attempt)-323(at)-323(a)-323(new)]TJ 0 -13.15 TD[(test)-347(script)-348(and)-348(the)-347(corresp)-28(onding)-348(`)]TJ/F4 10.91 Tf 165.6 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[(')-347(can)-348(allo)27(w)-347(y)27(ou)-347(to)-347(create)-348(the)-348(\014nal)-347(patterns)]TJ -205.69 -13.15 TD[(b)27(y)-332(\\cut)-333(and)-334(paste".)-444(This)-333(is)-334(sometimes)-333(the)-333(b)-28(est)-334(w)27(a)28(y)-332(to)-334(write)-333(a)-333(test)-334(case.)]TJ 0 -16.14 TD[(Use)-486(`)]TJ/F4 10.91 Tf 25.67 0 TD[(--strace)]TJ/F1 10.91 Tf 45.82 0 TD[(')-486(to)-486(see)-486(more)-486(detail)-487(at)-486(the)-486(Tcl)-486(lev)26(el;)-561(this)-487(sho)27(ws)-485(ho)27(w)-486(Tcl)-486(pro)-28(cedure)]TJ -71.49 -13.15 TD[(de\014nitions)-484(expand,)-522(as)-485(they)-484(execute.)-898(The)-485(asso)-28(ciated)-484(n)27(um)27(b)-26(er)-485(con)27(trols)-484(the)-484(depth)-485(of)]TJ 0 -13.16 TD[(de\014nitions)-247(expanded;)-277(see)-248(the)-248(discussion)-247(of)-248(`)]TJ/F4 10.91 Tf 202.3 0 TD[(--strace)]TJ/F1 10.91 Tf 45.81 0 TD[(')-247(in)-248(Chapter)-248(3)-248([Running)-248(the)-248(T)82(ests],)]TJ -248.11 -13.15 TD[(page)-333(9.)]TJ -15.69 -16.14 TD[(3.)-660(Finally)83(,)-273(if)-259(the)-260(v)55(alue)-258(of)-259(`)]TJ/F4 10.91 Tf 123.47 0 TD[(verbose)]TJ/F1 10.91 Tf 40.09 0 TD[(')-259(is)-259(3)-259(or)-259(greater,)]TJ/F4 10.91 Tf 76.27 0 TD[(runtest)]TJ/F1 10.91 Tf 42.92 0 TD[(turns)-259(on)-259(the)]TJ/F4 10.91 Tf 60.09 0 TD[(expect)]TJ/F1 10.91 Tf 37.19 0 TD[(command)]TJ/F4 10.91 Tf -364.34 -13.15 TD[(log_user)]TJ/F1 10.91 Tf 45.82 0 TD[(.)-434(This)-304(command)-305(prin)27(ts)-303(all)]TJ/F4 10.91 Tf 127.56 0 TD[(expect)]TJ/F1 10.91 Tf 37.68 0 TD[(actions)-304(to)-304(the)]TJ/F4 10.91 Tf 68.2 0 TD[(expect)]TJ/F1 10.91 Tf 37.68 0 TD[(standard)-304(output,)-310(to)]TJ -316.94 -13.15 TD[(the)-333(detailed)-333(log)-333(\014le,)-334(and)-333(\(if)-333(`)]TJ/F4 10.91 Tf 136.67 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')-333(is)-333(on\))-333(to)-334(`)]TJ/F4 10.91 Tf 53.39 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ/F2 14.35 Tf -291.84 -30.88 TD[(6.3)-562(Adding)-375(a)-375(test)-375(case)-375(to)-375(a)-375(test)-375(suite)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(There)-357(are)-358(t)27(w)28(o)-357(sligh)27(tly)-357(di\013eren)27(t)-357(w)27(a)27(ys)-356(to)-358(add)-358(a)-358(test)-357(case.)-518(One)-358(is)-358(to)-357(add)-358(the)-358(test)-358(case)-357(to)]TJ -14.94 -13.16 TD[(an)-297(existing)-298(directory)83(.)-432(The)-297(other)-298(is)-297(to)-298(create)-297(a)-298(new)-297(directory)-298(to)-298(hold)-297(y)27(our)-297(test.)-432(The)-298(existing)]TJ 0 -13.15 TD[(test)-284(directories)-285(represen)26(t)-284(sev)27(eral)-284(st)27(yles)-284(of)-285(testing,)-295(all)-285(of)-285(whic)27(h)-284(are)-285(sligh)27(tly)-284(di\013eren)27(t;)-300(examine)]TJ 0 -13.15 TD[(the)-333(directories)-333(for)-333(the)-334(to)-28(ol)-333(of)-333(in)27(terest)-333(to)-333(see)-333(whic)26(h)-332(\(if)-333(an)26(y\))-332(is)-333(most)-334(suitable.)]TJ 14.94 -16.14 TD[(Adding)-347(a)]TJ/F7 10.91 Tf 47.89 0 TD[(gcc)]TJ/F1 10.91 Tf 23.68 0 TD[(test)-347(can)-348(b)-28(e)-347(v)27(ery)-347(simple:)-473(just)-348(add)-347(the)-348(C)-347(co)-28(de)-348(to)-348(an)27(y)-346(directory)-348(b)-28(eginning)]TJ -86.51 -13.15 TD[(with)-333(`)]TJ/F4 10.91 Tf 27.88 0 TD[(gcc.)]TJ/F1 10.91 Tf 22.91 0 TD[(')-333(and)-333(it)-333(runs)-334(on)-333(the)-333(next)-334(`)]TJ/F4 10.91 Tf 124.63 0 TD[(runtest)-333(--tool)-333(gcc)]TJ/F1 10.91 Tf 98.91 0 TD[('.)]TJ -259.39 -16.14 TD[(T)83(o)-288(add)-289(a)-289(test)-289(to)]TJ/F7 10.91 Tf 78.55 0 TD[(gdb)]TJ/F1 10.91 Tf 20.14 0 TD[(,)-297(\014rst)-289(add)-289(an)26(y)-288(source)-289(co)-27(de)-289(y)27(ou)-288(will)-289(need)-289(to)-289(the)-289(test)-289(directory)82(.)-429(Then)]TJ -113.63 -13.15 TD[(y)27(ou)-312(can)-313(either)-313(create)-314(a)-313(new)]TJ/F4 10.91 Tf 133.9 0 TD[(expect)]TJ/F1 10.91 Tf 37.78 0 TD[(\014le,)-317(or)-313(add)-313(y)27(our)-313(test)-313(to)-313(an)-313(existing)-314(one)-313(\(an)27(y)-312(\014le)-314(with)-313(a)]TJ -171.68 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')-309(su\016x\).)-437(Creating)-310(a)-310(new)-310(`)]TJ/F4 10.91 Tf 122.32 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')-309(\014le)-310(is)-310(probably)-310(a)-310(b)-28(etter)-310(idea)-310(if)-310(the)-310(test)-310(is)-310(signi\014can)27(tly)]TJ -171.17 -13.15 TD[(di\013eren)27(t)-395(from)-395(existing)-396(tests.)-632(Adding)-396(it)-396(as)-396(a)-395(separate)-396(\014le)-396(also)-396(mak)27(es)-395(upgrading)-396(easier.)-632(If)]TJ 0 -13.15 TD[(the)-365(C)-365(co)-28(de)-365(has)-365(to)-365(b)-28(e)-365(already)-365(compiled)-365(b)-28(efore)-365(the)-365(test)-365(will)-366(run,)-373(then)-365(y)27(ou'll)-364(ha)27(v)27(e)-364(to)-365(add)-365(it)]TJ 0 -13.15 TD[(to)-333(the)-333(`)]TJ/F4 10.91 Tf 35.15 0 TD[(Makefile.in)]TJ/F1 10.91 Tf 63 0 TD[(')-333(\014le)-333(for)-333(that)-334(test)-333(directory)82(,)-332(then)-333(run)]TJ/F4 10.91 Tf 179.27 0 TD[(configure)]TJ/F1 10.91 Tf 55.19 0 TD[(and)]TJ/F4 10.91 Tf 21.21 0 TD[(make)]TJ/F1 10.91 Tf 22.91 0 TD[(.)]TJ -361.79 -16.14 TD[(Adding)-333(a)-333(test)-333(b)26(y)-332(creating)-333(a)-334(new)-333(directory)-333(is)-334(v)27(ery)-332(similar:)]TJ -9.03 -16.14 TD[(1.)-660(Create)-360(the)-360(new)-360(directory)82(.)-523(All)-360(sub)-28(directory)-360(names)-360(b)-28(egin)-360(with)-360(the)-360(name)-361(of)-360(the)-360(to)-28(ol)-360(to)]TJ 15.69 -13.15 TD[(test;)-341(e.g.)]TJ/F7 10.91 Tf 45.77 0 TD[(g)]TJ/F4 10.91 Tf 6.99 0 TD[(++)]TJ/F1 10.91 Tf 15.15 0 TD[(tests)-338(migh)27(t)-338(b)-27(e)-339(in)-338(a)-339(directory)-338(called)-339(`)]TJ/F4 10.91 Tf 174.21 0 TD[(g++.other)]TJ/F1 10.91 Tf 51.55 0 TD[('.)-459(There)-339(can)-338(b)-28(e)-339(m)27(ultiple)]TJ -293.67 -13.15 TD[(test)-333(directories)-333(that)-333(start)-334(with)-333(the)-333(same)-334(to)-28(ol)-333(name)-333(\(suc)27(h)-333(as)-333(`)]TJ/F4 10.91 Tf 291.36 0 TD[(g++)]TJ/F1 10.91 Tf 17.19 0 TD[('\).)]TJ ET 0 g 0 G
-endstream
-endobj
-213 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F5 31 0 R
-/F4 28 0 R
-/F7 49 0 R
->>
-endobj
-211 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 213 0 R
->>
-endobj
-216 0 obj
-<<
-/Length 9135
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(6:)-444(Ho)27(w)-333(T)83(o)-333(W)83(rite)-333(a)-333(T)82(est)-332(Case)-21861(41)]TJ 5.91 -23.91 TD[(2.)-660(Add)-320(the)-320(new)-320(directory)-320(name)-320(to)-321(the)-320(`)]TJ/F4 10.91 Tf 190.51 0 TD[(configdirs)]TJ/F1 10.91 Tf 57.27 0 TD[(')-320(de\014nition)-320(in)-320(the)-320(`)]TJ/F4 10.91 Tf 89.12 0 TD[(configure.in)]TJ/F1 10.91 Tf 68.73 0 TD[(')-320(\014le)]TJ -389.94 -13.15 TD[(for)-285(the)-287(test)-286(suite)-286(directory)83(.)-428(This)-286(w)27(a)28(y)-285(when)]TJ/F4 10.91 Tf 204.37 0 TD[(make)]TJ/F1 10.91 Tf 26.02 0 TD[(and)]TJ/F4 10.91 Tf 20.7 0 TD[(configure)]TJ/F1 10.91 Tf 54.67 0 TD[(next)-285(run,)-296(they)-286(include)]TJ -305.76 -13.15 TD[(the)-333(new)-333(directory)82(.)]TJ -15.69 -16.14 TD[(3.)-660(Add)-333(the)-333(new)-334(test)-333(case)-333(to)-334(the)-333(directory)82(,)-332(as)-333(ab)-28(o)27(v)28(e.)]TJ 0 -16.14 TD[(4.)-660(T)83(o)-387(add)-389(supp)-27(ort)-389(in)-388(the)-388(new)-388(directory)-388(for)-389(con\014gure)-388(and)-388(mak)27(e,)-401(y)27(ou)-387(m)26(ust)-387(also)-388(create)-388(a)]TJ/F4 10.91 Tf 15.69 -13.15 TD[(Makefile.in)]TJ/F1 10.91 Tf 67.88 0 TD[(and)-447(a)]TJ/F4 10.91 Tf 32.8 0 TD[(configure.in)]TJ/F1 10.91 Tf 68.73 0 TD[(.)-787(See)-448(section)-448(\\What)-447(Con\014gure)-448(Do)-28(es")-448(in)]TJ/F5 10.91 Tf 205.78 0 TD[(Cygn)27(us)]TJ -375.19 -13.15 TD[(Con\014gure)]TJ/F1 10.91 Tf 46.7 0 TD[(.)]TJ/F2 14.35 Tf -68.3 -30.89 TD[(6.4)-562(Hin)30(ts)-374(on)-375(writing)-375(a)-375(test)-375(case)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(There)-305(ma)27(y)-305(b)-28(e)-305(useful)-306(existing)-305(pro)-28(cedures)-305(already)-306(written)-305(for)-306(y)27(our)-305(test)-305(in)-306(the)-305(`)]TJ/F4 10.91 Tf 366.82 0 TD[(lib)]TJ/F1 10.91 Tf 17.18 0 TD[(')-305(direc-)]TJ -398.94 -13.15 TD[(tory)-333(of)-333(the)-333(DejaGn)26(u)-332(distribution.)-444(See)-334(Section)-333(5.3)-333([DejaGn)26(u)-332(Builtins],)-333(page)-334(23.)]TJ 14.94 -16.14 TD[(It)-291(is)-292(safest)-291(to)-292(write)-291(patterns)-292(that)-291(matc)27(h)]TJ/F8 10.91 Tf 190.3 0 TD[(al)-51(l)]TJ/F1 10.91 Tf 16.01 0 TD[(the)-291(output)-292(generated)-291(b)27(y)-291(the)-291(tested)-292(program;)]TJ -221.25 -13.15 TD[(this)-254(is)-255(called)]TJ/F5 10.91 Tf 60.58 0 TD[(closure)]TJ/F1 10.91 Tf 32.82 0 TD[(.)-418(If)-255(a)-254(pattern)-255(do)-28(es)-255(not)-254(matc)26(h)-253(the)-255(en)27(tire)-254(output,)-271(an)27(y)-254(output)-254(that)-255(remains)]TJ -93.4 -13.15 TD[(will)-416(b)-28(e)-416(examined)-416(b)27(y)-416(the)]TJ/F8 10.91 Tf 122.71 0 TD[(next)]TJ/F4 10.91 Tf 25.41 0 TD[(expect)]TJ/F1 10.91 Tf 38.9 0 TD[(command.)-693(In)-416(this)-416(situation,)-437(the)-416(precise)-417(b)-28(oundary)]TJ -187.02 -13.15 TD[(that)-341(determines)-341(whic)26(h)]TJ/F4 10.91 Tf 110.36 0 TD[(expect)]TJ/F1 10.91 Tf 38.09 0 TD[(command)-341(sees)-341(what)-342(is)-341(v)26(ery)-340(sensitiv)27(e)-341(to)-341(timing)-342(b)-27(et)26(w)28(een)-340(the)]TJ/F4 10.91 Tf -148.45 -13.15 TD[(expect)]TJ/F1 10.91 Tf 39.03 0 TD[(task)-427(and)-427(the)-428(task)-427(running)-427(the)-428(tested)-427(to)-28(ol.)-726(As)-428(a)-427(result,)-451(the)-427(test)-428(ma)27(y)-426(sometimes)]TJ -39.03 -13.16 TD[(app)-27(ear)-388(to)-388(w)27(ork,)-400(but)-388(is)-388(lik)27(ely)-387(to)-388(ha)27(v)28(e)-387(unpredictable)-388(results.)-608(\(This)-388(problem)-387(is)-388(particularly)]TJ 0 -13.15 TD[(lik)27(ely)-360(for)-360(in)26(teractiv)28(e)-360(to)-27(ols,)-368(but)-361(can)-361(also)-361(a\013ect)-360(batc)26(h)-359(to)-28(ols|esp)-28(ecially)-361(for)-361(tests)-360(that)-361(tak)27(e)-360(a)]TJ 0 -13.15 TD[(long)-270(time)-271(to)-271(\014nish.\))-424(The)-270(b)-28(est)-271(w)27(a)27(y)-269(to)-271(ensure)-271(closure)-271(is)-271(to)-271(use)-270(the)-271(`)]TJ/F4 10.91 Tf 307.09 0 TD[(-re)]TJ/F1 10.91 Tf 17.18 0 TD[(')-270(option)-271(for)-271(the)]TJ/F4 10.91 Tf 73.37 0 TD[(expect)]TJ/F1 10.91 Tf -397.64 -13.15 TD[(command)-323(to)-323(write)-323(the)-323(pattern)-324(as)-323(a)-323(full)-323(regular)-324(expressions;)-326(then)-323(y)26(ou)-322(can)-323(matc)27(h)-322(the)-324(end)-323(of)]TJ 0 -13.15 TD[(output)-344(using)-345(a)-344(`)]TJ/F4 10.91 Tf 76.79 0 TD[($)]TJ/F1 10.91 Tf 5.73 0 TD[('.)-478(It)-344(is)-345(also)-344(a)-345(go)-28(o)-28(d)-344(idea)-345(to)-344(write)-345(patterns)-345(that)-344(matc)27(h)-344(all)-345(a)27(v)56(ailable)-344(output)]TJ -82.52 -13.15 TD[(b)27(y)-398(using)-399(`)]TJ/F4 10.91 Tf 48.16 0 TD[(.*\\)]TJ/F1 10.91 Tf 17.18 0 TD[(')-398(after)-399(the)-399(text)-399(of)-399(in)27(terest;)-431(this)-399(will)-399(also)-399(matc)27(h)-398(an)27(y)-398(in)27(terv)27(ening)-397(blank)-399(lines.)]TJ -65.34 -13.15 TD[(Sometimes)-356(an)-357(alternativ)27(e)-356(is)-357(to)-357(matc)27(h)-356(end)-357(of)-357(line)-357(using)-356(`)]TJ/F4 10.91 Tf 269.44 0 TD[(\\r)]TJ/F1 10.91 Tf 11.46 0 TD[(')-356(or)-357(`)]TJ/F4 10.91 Tf 23.57 0 TD[(\\n)]TJ/F1 10.91 Tf 11.46 0 TD[(',)-362(but)-357(this)-357(is)-357(usually)-357(to)-27(o)]TJ -315.93 -13.15 TD[(dep)-27(enden)27(t)-333(on)-333(terminal)-333(settings.)]TJ 14.94 -16.14 TD[(Alw)27(a)28(ys)-494(escap)-28(e)-495(punctuation,)-535(suc)26(h)-494(as)-495(`)]TJ/F4 10.91 Tf 186.48 0 TD[(\()]TJ/F1 10.91 Tf 5.73 0 TD[(')-495(or)-495(`)]TJ/F4 10.91 Tf 26.59 0 TD[(")]TJ/F1 10.91 Tf 5.73 0 TD[(',)-535(in)-495(y)27(our)-494(patterns;)-576(for)-496(example,)-535(write)]TJ -239.47 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(\\\()]TJ/F1 10.91 Tf 11.45 0 TD[('.)-448(If)-335(y)27(ou)-334(forget)-335(to)-335(escap)-27(e)-335(punctuation,)-335(y)26(ou)-333(will)-335(usually)-335(see)-335(an)-334(error)-335(message)-335(lik)27(e)-334(`)]TJ/F4 10.91 Tf 388.88 0 TD[(extra)]TJ -403.36 -13.15 TD[(characters)-333(after)-333(close-quote)]TJ/F1 10.91 Tf 156.18 0 TD[('.)]TJ -141.24 -16.14 TD[(If)-372(y)27(ou)-372(ha)27(v)28(e)-372(trouble)-373(understanding)-372(wh)27(y)-372(a)-373(pattern)-372(do)-28(es)-373(not)-372(matc)26(h)-371(the)-373(program)-372(output,)]TJ -14.94 -13.15 TD[(try)-496(using)-497(the)-496(`)]TJ/F4 10.91 Tf 73.61 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')-496(option)-497(to)]TJ/F4 10.91 Tf 59.29 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(,)-537(and)-496(examine)-497(the)-496(debug)-497(log)-497(carefully)83(.)-933(See)]TJ -213.08 -13.15 TD[(Section)-333(5.7.3)-333([Debug)-333(Log],)-334(page)-333(36.)]TJ 14.94 -16.14 TD[(Be)-304(careful)-305(not)-305(to)-304(neglect)-305(output)-305(generated)-305(b)27(y)-304(setup)-304(rather)-305(than)-305(b)27(y)-304(the)-304(in)26(teresting)-303(parts)]TJ -14.94 -13.15 TD[(of)-349(a)-349(test)-350(case.)-493(F)83(or)-349(example,)-353(while)-350(testing)]TJ/F7 10.91 Tf 201.56 0 TD[(gdb)]TJ/F1 10.91 Tf 20.13 0 TD[(,)-353(I)-349(issue)-350(a)-349(send)-350(`)]TJ/F4 10.91 Tf 78.38 0 TD[(set)-333(height)-333(0\\n)]TJ/F1 10.91 Tf 76 0 TD[(')-349(command.)]TJ -376.07 -13.15 TD[(The)-360(purp)-28(ose)-360(is)-360(simply)-361(to)-360(mak)27(e)-360(sure)]TJ/F7 10.91 Tf 176.31 0 TD[(gdb)]TJ/F1 10.91 Tf 24.06 0 TD[(nev)27(er)-359(calls)-360(a)-361(paging)-360(program.)-526(The)-360(`)]TJ/F4 10.91 Tf 173.42 0 TD[(set)-333(height)]TJ/F1 10.91 Tf 55.18 0 TD[(')]TJ -428.97 -13.15 TD[(command)-427(in)]TJ/F7 10.91 Tf 64.48 0 TD[(gdb)]TJ/F1 10.91 Tf 24.8 0 TD[(do)-27(es)-428(not)-427(generate)-428(an)27(y)-427(output;)-475(but)-427(running)]TJ/F8 10.91 Tf 215.41 0 TD[(any)]TJ/F1 10.91 Tf 22.64 0 TD[(command)-427(mak)27(es)]TJ/F7 10.91 Tf 84.54 0 TD[(gdb)]TJ/F1 10.91 Tf -411.87 -13.15 TD[(issue)-318(a)-319(new)-319(`)]TJ/F4 10.91 Tf 60.26 0 TD[(\(gdb\))]TJ/F1 10.91 Tf 32.27 0 TD[(')-318(prompt.)-440(If)-319(there)-319(w)27(ere)-318(no)]TJ/F4 10.91 Tf 128.04 0 TD[(expect)]TJ/F1 10.91 Tf 37.85 0 TD[(command)-318(to)-319(matc)26(h)-318(this)-319(prompt,)-322(the)]TJ -258.42 -13.15 TD[(output)-281(`)]TJ/F4 10.91 Tf 38.22 0 TD[(\(gdb\))]TJ/F1 10.91 Tf 32.27 0 TD[(')-281(b)-27(egins)-282(the)-281(text)-281(seen)-281(b)27(y)-280(the)-282(next)]TJ/F4 10.91 Tf 159.51 0 TD[(expect)]TJ/F1 10.91 Tf 37.43 0 TD[(command|whic)27(h)-280(migh)27(t)-280(mak)27(e)]TJ/F8 10.91 Tf 146.17 0 TD[(that)]TJ/F1 10.91 Tf -413.6 -13.16 TD[(pattern)-333(fail)-333(to)-333(matc)26(h.)]TJ 14.94 -16.13 TD[(T)83(o)-426(preserv)27(e)-426(basic)-426(sanit)27(y)83(,)-449(I)-426(also)-427(recommended)-426(that)-427(no)-427(test)-426(ev)27(er)-426(pass)-427(if)-426(there)-427(w)27(as)-425(an)26(y)]TJ -14.94 -13.16 TD[(kind)-373(of)-374(problem)-374(in)-373(the)-374(test)-374(case.)-566(T)83(o)-373(tak)27(e)-373(an)-374(extreme)-373(case,)-384(tests)-374(that)-374(pass)-373(ev)26(en)-372(when)-374(the)]TJ 0 -13.15 TD[(to)-27(ol)-381(will)-380(not)-381(spa)27(wn)-380(are)-380(misleading.)-586(Ideally)82(,)-391(a)-381(test)-380(in)-381(this)-380(sort)-381(of)-380(situation)-381(should)-380(not)-381(fail)]TJ 0 -13.15 TD[(either.)-453(Instead,)-337(prin)27(t)-336(an)-336(error)-336(message)-337(b)27(y)-335(calling)-336(one)-337(of)-336(the)-336(DejaGn)26(u)-335(pro)-28(cedures)]TJ/F4 10.91 Tf 389.97 0 TD[(error)]TJ/F1 10.91 Tf 32.3 0 TD[(or)]TJ/F4 10.91 Tf -422.27 -13.15 TD[(warning)]TJ/F1 10.91 Tf 40.09 0 TD[(.)]TJ ET 0 g 0 G
-endstream
-endobj
-217 0 obj
-<<
-/F1 9 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F2 12 0 R
-/F8 52 0 R
-/F7 49 0 R
->>
-endobj
-215 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 217 0 R
->>
-endobj
-220 0 obj
-<<
-/Length 3621
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(42)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(6.5)-562(Sp)-31(ecial)-375(v)61(ariables)-374(used)-375(b)31(y)-374(test)-375(cases)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(Y)83(our)-488(test)-489(cases)-489(can)-489(use)-489(these)-490(v)55(ariables,)-527(with)-489(con)27(v)27(en)28(tional)-488(meanings)-489(\(as)-489(w)27(ell)-488(as)-489(the)]TJ -14.94 -13.15 TD[(v)55(ariables)-332(sa)27(v)27(ed)-332(in)-333(`)]TJ/F4 10.91 Tf 90.45 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(see)-333(Chapter)-333(4)-334([Setting)]TJ/F4 10.91 Tf 116.46 0 TD[(runtest)]TJ/F1 10.91 Tf 43.72 0 TD[(defaults],)-333(page)-333(15\):)]TJ/F8 10.91 Tf -267.65 -15.44 TD[(These)-357(variables)-358(ar)50(e)-357(available)-357(to)-358(al)-51(l)-358(test)-358(c)50(ases.)]TJ/F4 10.91 Tf -28.8 -22.12 TD[(prms_id)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-378(trac)27(king)-377(system)-379(\(e.g.)]TJ/F7 10.91 Tf 129.46 0 TD[(gna)66(ts)]TJ/F1 10.91 Tf 31.09 0 TD[(\))-378(n)27(um)28(b)-27(er)-378(iden)26(tifying)-377(a)-378(corresp)-28(onding)-378(bugre-)]TJ -160.55 -13.15 TD[(p)-27(ort.)-445(\(`)]TJ/F4 10.91 Tf 35.49 0 TD[(0)]TJ/F1 10.91 Tf 5.72 0 TD[(')-333(if)-333(y)27(ou)-333(do)-333(not)-333(sp)-28(ecify)-333(it)-334(in)-333(the)-333(test)-334(script.\))]TJ/F4 10.91 Tf -98.81 -22.11 TD[(bug_id)]TJ/F1 10.91 Tf 57.6 0 TD[(An)-307(optional)-308(bug)-307(id;)-316(ma)26(y)-306(re\015ect)-308(a)-307(bug)-308(iden)27(ti\014cation)-307(from)-308(another)-307(organization.)]TJ 0 -13.15 TD[(\(`)]TJ/F4 10.91 Tf 7.27 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(')-333(if)-333(y)27(ou)-333(do)-333(not)-333(sp)-28(ecify)-333(it.\))]TJ/F4 10.91 Tf -70.6 -22.12 TD[(subdir)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-333(sub)-28(directory)-333(for)-333(the)-334(curren)27(t)-332(test)-333(case.)]TJ/F8 10.91 Tf -28.8 -18.43 TD[(These)-357(variables)-358(should)-358(never)-358(b)51(e)-357(change)50(d.)-459(They)-358(app)50(e)51(ar)-356(in)-358(most)-358(tests.)]TJ/F4 10.91 Tf -28.8 -22.12 TD[(expect_out\(buffer\))]TJ/F1 10.91 Tf 57.6 -13.15 TD[(The)-297(output)-297(from)-298(the)-297(last)-297(command.)-433(This)-297(is)-297(an)-298(in)27(ternal)-296(v)54(ariable)-296(set)-297(b)26(y)]TJ/F4 10.91 Tf 337.01 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(.)]TJ/F4 10.91 Tf -428.97 -22.12 TD[(exec_output)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(This)-349(is)-349(the)-349(output)-349(from)-349(a)]TJ/F5 10.91 Tf 126.33 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_load)]TJ/F1 10.91 Tf 32.44 0 TD[(command.)-491(This)-349(only)-349(applies)-349(to)-349(to)-28(ols)-349(lik)26(e)]TJ/F7 10.91 Tf -177.69 -13.15 TD[(gcc)]TJ/F1 10.91 Tf 24.35 0 TD[(and)]TJ/F7 10.91 Tf 22.03 0 TD[(gas)]TJ/F1 10.91 Tf 23.13 0 TD[(whic)27(h)-407(pro)-28(duce)-408(an)-409(ob)-55(ject)-409(\014le)-408(that)-409(m)27(ust)-407(in)-409(turn)-408(b)-28(e)-408(executed)-409(to)]TJ -69.51 -13.15 TD[(complete)-333(a)-333(test.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(comp_output)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(This)-398(is)-399(the)-399(output)-398(from)-399(a)]TJ/F5 10.91 Tf 129.58 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_start)]TJ/F1 10.91 Tf 38.71 0 TD[(command.)-640(This)-399(is)-399(con)27(v)28(en)28(tionally)-398(used)]TJ -187.21 -13.15 TD[(for)-377(batc)27(h)-376(orien)26(ted)-376(programs,)-389(lik)27(e)]TJ/F7 10.91 Tf 162.4 0 TD[(gcc)]TJ/F1 10.91 Tf 24.01 0 TD[(and)]TJ/F7 10.91 Tf 21.69 0 TD[(gas)]TJ/F1 10.91 Tf 18.68 0 TD[(,)-388(that)-377(ma)26(y)-376(pro)-28(duce)-377(in)27(teresting)]TJ -226.78 -13.15 TD[(output)-333(\(w)27(arnings,)-332(errors\))-334(without)-333(further)-333(in)26(teraction.)]TJ ET 0 g 0 G
-endstream
-endobj
-221 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F8 52 0 R
-/F7 49 0 R
-/F5 31 0 R
->>
-endobj
-219 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 221 0 R
->>
-endobj
-224 0 obj
-<<
-/Length 6574
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(7:)-444(New)-334(T)83(o)-27(ols,)-333(T)82(argets,)-332(or)-334(Hosts)-20764(43)]TJ/F2 17.22 Tf 0 -25.91 TD[(7)-562(New)-375(T)93(o)-30(ols,)-375(T)92(argets,)-374(or)-375(Hosts)]TJ/F1 10.91 Tf 14.94 -28.09 TD[(The)-350(most)-350(common)-351(w)27(a)28(ys)-350(to)-350(extend)-351(the)-350(DejaGn)27(u)-350(framew)27(ork)-349(are:)-479(adding)-350(a)-351(suite)-350(of)-351(tests)]TJ -14.94 -13.15 TD[(for)-265(a)-266(new)-265(to)-28(ol)-266(to)-266(b)-27(e)-266(tested;)-288(adding)-266(supp)-28(ort)-265(for)-266(testing)-266(on)-265(a)-266(new)-265(target;)-289(and)-265(p)-28(orting)]TJ/F4 10.91 Tf 391.91 0 TD[(runtest)]TJ/F1 10.91 Tf -391.91 -13.15 TD[(to)-333(a)-333(new)-333(host.)]TJ/F2 14.35 Tf 0 -30.89 TD[(7.1)-562(W)93(riting)-374(tests)-375(for)-375(a)-375(new)-375(to)-31(ol)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(In)-426(general,)-450(the)-426(b)-28(est)-427(w)27(a)28(y)-426(to)-426(learn)-427(ho)27(w)-426(to)-426(write)-427(\(co)-27(de)-427(or)-427(ev)27(en)-425(prose\))-427(is)-426(to)-427(read)-427(some-)]TJ -14.94 -13.15 TD[(thing)-385(similar.)-602(This)-385(principle)-386(applies)-386(to)-385(test)-386(cases)-386(and)-385(to)-386(test)-386(suites.)-601(Unfortunately)82(,)-397(w)26(ell-)]TJ 0 -13.15 TD[(established)-479(test)-479(suites)-479(ha)27(v)28(e)-479(a)-479(w)27(a)28(y)-478(of)-480(dev)27(eloping)-478(their)-479(o)27(wn)-478(con)26(v)28(en)28(tions:)-735(as)-479(test)-480(writers)]TJ 0 -13.15 TD[(b)-27(ecome)-315(more)-315(exp)-28(erienced)-315(with)-315(DejaGn)27(u)-314(and)-315(with)-315(Tcl,)-319(they)-315(accum)27(ulate)-314(more)-315(utilities,)-319(and)]TJ 0 -13.15 TD[(tak)27(e)-332(adv)55(an)27(tage)-332(of)-333(more)-334(and)-333(more)-333(features)-334(of)]TJ/F4 10.91 Tf 216.82 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(and)-333(Tcl)-333(in)-333(general.)]TJ -239.88 -16.14 TD[(Insp)-27(ecting)-425(suc)27(h)-423(established)-425(test)-424(suites)-425(ma)27(y)-424(mak)27(e)-423(the)-425(prosp)-28(ect)-424(of)-425(creating)-424(an)-425(en)27(tirely)]TJ -14.94 -13.15 TD[(new)-342(test)-342(suite)-342(app)-28(ear)-342(o)27(v)28(erwhelming.)-470(Nev)27(ertheless,)-343(it)-342(is)-342(quite)-342(straigh)26(tforw)28(ard)-341(to)-342(get)-342(a)-342(new)]TJ 0 -13.15 TD[(test)-333(suite)-333(going.)]TJ 14.94 -16.14 TD[(There)-315(is)-315(one)-315(test)-315(suite)-316(that)-315(is)-315(guaran)27(teed)-314(not)-316(to)-315(gro)27(w)-314(more)-315(elab)-28(orate)-315(o)26(v)28(er)-314(time:)-435(b)-28(oth)-315(it)]TJ -14.94 -13.15 TD[(and)-377(the)-378(to)-28(ol)-378(it)-378(tests)-378(w)27(ere)-377(created)-378(expressly)-378(to)-378(illustrate)-378(what)-378(it)-378(tak)27(es)-377(to)-378(get)-378(started)-378(with)]TJ 0 -13.15 TD[(DejaGn)27(u.)-681(The)-413(`)]TJ/F4 10.91 Tf 79.14 0 TD[(example/)]TJ/F1 10.91 Tf 45.82 0 TD[(')-412(directory)-413(of)-412(the)-413(DejaGn)27(u)-412(distribution)-412(con)26(tains)-411(b)-28(oth)-413(an)-412(in)27(ter-)]TJ -124.96 -13.15 TD[(activ)27(e)-360(to)-27(ol)-361(called)]TJ/F4 10.91 Tf 85.44 0 TD[(calc)]TJ/F1 10.91 Tf 22.91 0 TD[(,)-367(and)-361(a)-361(test)-361(suite)-360(for)-361(it.)-527(Reading)-361(this)-361(test)-360(suite,)-368(and)-361(exp)-28(erimen)27(ting)]TJ -108.35 -13.15 TD[(with)-389(it,)-404(is)-389(a)-390(go)-27(o)-28(d)-390(w)27(a)28(y)-389(to)-389(supplemen)27(t)-389(the)-390(information)-389(in)-390(this)-389(section.)-613(\(Thanks)-390(to)-389(Rob)-28(ert)]TJ 0 -13.16 TD[(Lupton)-323(for)-324(creating)]TJ/F4 10.91 Tf 96.57 0 TD[(calc)]TJ/F1 10.91 Tf 26.44 0 TD[(and)-323(its)-324(test)-324(suite|and)-324(also)-323(the)-324(\014rst)-324(v)27(ersion)-323(of)-324(this)-324(section)-323(of)-324(the)]TJ -123.01 -13.15 TD[(man)27(ual!\))]TJ 14.94 -16.14 TD[(T)83(o)-344(help)-344(orien)27(t)-344(y)27(ou)-343(further)-345(in)-344(this)-345(task,)-347(here)-344(is)-345(an)-344(outline)-344(of)-345(the)-344(steps)-345(to)-344(b)-28(egin)-344(building)]TJ -14.94 -13.15 TD[(a)-333(test)-333(suite)-333(for)-334(a)-333(program)]TJ/F5 10.91 Tf 125.97 0 TD[(example)]TJ/F1 10.91 Tf 39.09 0 TD[(.)]TJ -159.15 -16.14 TD[(1.)-660(Create)-413(or)-414(select)-413(a)-414(directory)-413(to)-414(con)27(tain)-413(y)27(our)-413(new)-413(collection)-414(of)-413(tests.)-685(Change)-414(to)-414(that)]TJ 15.69 -13.15 TD[(directory)-333(\(sho)27(wn)-332(here)-334(as)]TJ/F4 10.91 Tf 120.82 0 TD[(testsuite)]TJ/F1 10.91 Tf 51.54 0 TD[(\):)]TJ/F4 10.91 Tf -143.56 -15.44 TD[(eg$)-524(cd)-525(testsuite/)]TJ/F1 10.91 Tf -44.49 -16.14 TD[(2.)-660(Create)-555(a)-555(`)]TJ/F4 10.91 Tf 67.83 0 TD[(configure.in)]TJ/F1 10.91 Tf 68.73 0 TD[(')-555(\014le)-555(in)-555(this)-555(directory)83(,)-610(to)-555(con)27(trol)-554(con\014guration-dep)-28(enden)27(t)]TJ -120.87 -13.15 TD[(c)27(hoices)-383(for)-384(y)26(our)-383(tests.)-597(So)-385(far)-384(as)-384(DejaGn)26(u)-383(is)-384(concerned,)-397(the)-385(imp)-27(ortan)26(t)-383(thing)-384(is)-385(to)-384(set)]TJ 0 -13.15 TD[(a)-375(v)55(alue)-375(for)-375(the)-376(v)55(ariable)]TJ/F4 10.91 Tf 116 0 TD[(target_abbrev)]TJ/F1 10.91 Tf 74.45 0 TD[(;)-396(this)-375(v)54(alue)-374(is)-376(the)-375(link)-376(to)-375(the)-376(init)-375(\014le)-376(y)27(ou)-374(will)]TJ -190.45 -13.15 TD[(write)-334(so)-27(on.)-448(\(F)83(or)-333(simplicit)26(y)84(,)-334(w)27(e)-333(assume)-334(the)-335(en)27(vironmen)28(t)-333(is)-334(Unix,)-335(and)-334(use)-334(`)]TJ/F4 10.91 Tf 352.26 0 TD[(unix)]TJ/F1 10.91 Tf 22.91 0 TD[(')-334(as)-334(the)]TJ -375.17 -13.15 TD[(v)55(alue.\))]TJ 0 -16.14 TD[(What)-303(else)-304(is)-303(needed)-304(in)-304(`)]TJ/F4 10.91 Tf 112.74 0 TD[(configure.in)]TJ/F1 10.91 Tf 68.73 0 TD[(')-303(dep)-28(ends)-304(on)-303(the)-304(requiremen)27(ts)-303(of)-303(y)26(our)-302(to)-28(ol,)-310(y)27(our)]TJ -181.47 -13.15 TD[(in)27(tended)-351(test)-352(en)26(vironmen)28(ts,)-356(and)-352(whic)27(h)]TJ/F4 10.91 Tf 189.42 0 TD[(configure)]TJ/F1 10.91 Tf 55.39 0 TD[(system)-352(y)27(ou)-351(use.)-502(This)-352(example)-352(is)-352(a)]TJ -244.81 -13.15 TD[(minimal)]TJ/F4 10.91 Tf 42.96 0 TD[(configure.in)]TJ/F1 10.91 Tf 72.9 0 TD[(for)-382(use)-383(with)-382(Cygn)27(us)-382(Con\014gure.)-592(\(F)83(or)-382(an)-383(alternativ)27(e)-381(based)-383(on)]TJ -115.86 -13.15 TD[(the)-340(FSF)]TJ/F4 10.91 Tf 42.88 0 TD[(autoconf)]TJ/F1 10.91 Tf 49.53 0 TD[(system,)-342(see)-340(the)]TJ/F4 10.91 Tf 75.89 0 TD[(calc)]TJ/F1 10.91 Tf 26.62 0 TD[(example)-340(distributed)-340(with)-341(DejaGn)27(u.\))-465(Replace)]TJ/F5 10.91 Tf -194.92 -13.15 TD[(example)]TJ/F1 10.91 Tf 43.34 0 TD[(with)-333(the)-333(name)-333(of)-334(y)27(our)-332(program:)]TJ ET 0 g 0 G
-endstream
-endobj
-225 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F5 31 0 R
->>
-endobj
-223 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 225 0 R
->>
-endobj
-228 0 obj
-<<
-/Length 3165
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(44)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F9 9.96 Tf 21.6 -20.18 TD[(\013)]TJ ET 45.58 -6.23 m 450.40 -6.23 l 450.40 -5.83 l 45.58 -5.83 l b BT 456.38 -6.23 TD[(\010)]TJ ET 39.60 -201.93 m 40.00 -201.93 l 40.00 -11.96 l 39.60 -11.96 l b BT/F4 10.91 Tf 42.99 -24.6 TD[(#)-524(This)-525(file)-525(is)-525(a)-525(shell)-525(script)-525(fragment)]TJ 0 -12.45 TD[(#)-524(for)-525(use)-525(with)-525(Cygnus)-525(configure.)]TJ 0 -24.91 TD[(srctrigger=")]TJ/F5 10.91 Tf 68.72 0 TD[(example)]TJ/F4 10.91 Tf 39.1 0 TD[(.0")]TJ -107.82 -12.45 TD[(srcname="The)-524(DejaGnu)]TJ/F5 10.91 Tf 120.27 0 TD[(example)]TJ/F4 10.91 Tf 45.43 0 TD[(tests")]TJ -165.7 -24.91 TD[(#)-524(per-host:)]TJ 0 -24.91 TD[(#)-524(per-target:)]TJ 0 -24.9 TD[(#)-524(everything)-525(defaults)-525(to)-525(unix)-525(for)-525(a)-525(target)]TJ 0 -12.46 TD[(target_abbrev=unix)]TJ 0 -24.9 TD[(#)-524(post-target:)]TJ ET 456.38 -201.93 m 456.77 -201.93 l 456.77 -11.96 l 456.38 -11.96 l b BT/F9 9.96 Tf 39.6 -208.16 TD[(\012)]TJ ET 45.58 -208.16 m 450.40 -208.16 l 450.40 -207.76 l 45.58 -207.76 l b BT 456.38 -208.16 TD[(\011)]TJ/F1 10.91 Tf -432.47 -17.39 TD[(3.)-660(Create)-301(`)]TJ/F4 10.91 Tf 53.55 0 TD[(Makefile.in)]TJ/F1 10.91 Tf 63 0 TD[(',)-307(the)-302(source)-301(\014le)-302(used)-301(b)27(y)]TJ/F4 10.91 Tf 117.53 0 TD[(configure)]TJ/F1 10.91 Tf 54.84 0 TD[(to)-301(build)-301(y)26(our)-300(`)]TJ/F4 10.91 Tf 68.07 0 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[('.)-433(Its)]TJ -387.12 -13.15 TD[(leading)-333(section)-333(should)-333(as)-334(usual)-333(con)27(tain)-333(the)-333(v)55(alues)-333(that)]TJ/F4 10.91 Tf 263.94 0 TD[(configure)]TJ/F1 10.91 Tf 55.18 0 TD[(ma)27(y)-332(o)27(v)28(erride:)]TJ/F9 9.96 Tf -319.12 -9.75 TD[(\013)]TJ ET 45.58 -248.45 m 450.40 -248.45 l 450.40 -248.05 l 45.58 -248.05 l b BT 456.38 -248.45 TD[(\010)]TJ ET 39.60 -446.58 m 40.00 -446.58 l 40.00 -254.18 l 39.60 -254.18 l b BT/F4 10.91 Tf 42.99 -266.82 TD[(srcdir)-524(=)-525(.)]TJ 0 -12.45 TD[(prefix)-524(=)-525(/usr/local)]TJ 0 -24.91 TD[(exec_prefix)-524(=)-525($\(prefix\))]TJ 0 -12.45 TD[(bindir)-524(=)-525($\(exec_prefix\)/bin)]TJ 0 -12.46 TD[(libdir)-524(=)-525($\(exec_prefix\)/lib)]TJ 0 -12.45 TD[(tooldir)-524(=)-525($\(libdir\)/$\(target_alias\))]TJ 0 -24.91 TD[(datadir)-524(=)-525($\(exec_prefix\)/lib/dejagnu)]TJ 0 -24.9 TD[(RUNTEST)-524(=)-525(runtest)]TJ 0 -12.46 TD[(RUNTESTFLAGS)-524(=)]TJ 0 -12.45 TD[(FLAGS_TO_PASS)-524(=)]TJ 0 -24.91 TD[(####)-524(host,)-525(target,)-525(site)-525(specific)-525(Makefile)-525(frags)-525(come)-525(in)-525(here.)]TJ ET 456.38 -446.58 m 456.77 -446.58 l 456.77 -254.18 l 456.38 -254.18 l b BT/F9 9.96 Tf 39.6 -452.81 TD[(\012)]TJ ET 45.58 -452.81 m 450.40 -452.81 l 450.40 -452.41 l 45.58 -452.41 l b BT 456.38 -452.81 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.38 TD[(This)-305(should)-306(b)-28(e)-306(follo)27(w)28(ed)-305(b)27(y)-305(the)-306(standard)-306(targets)-306(at)-306(y)27(our)-305(site.)-435(T)82(o)-305(b)-27(egin)-306(with,)-311(they)-306(need)]TJ 0 -13.16 TD[(not)-333(do)-333(an)27(ything|for)-333(example,)-333(these)-333(de\014nitions)-334(will)-333(do:)]TJ ET 0 g 0 G
-endstream
-endobj
-229 0 obj
-<<
-/F1 9 0 R
-/F9 59 0 R
-/F4 28 0 R
-/F5 31 0 R
->>
-endobj
-227 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 229 0 R
->>
-endobj
-232 0 obj
-<<
-/Length 3671
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(7:)-444(New)-334(T)83(o)-27(ols,)-333(T)82(argets,)-332(or)-334(Hosts)-20764(45)]TJ/F9 9.96 Tf 21.6 -20.18 TD[(\013)]TJ ET 45.58 -6.23 m 450.40 -6.23 l 450.40 -5.83 l 45.58 -5.83 l b BT 456.38 -6.23 TD[(\010)]TJ ET 39.60 -170.36 m 40.00 -170.36 l 40.00 -11.96 l 39.60 -11.96 l b BT/F4 10.91 Tf 42.99 -30.39 TD[(all:)]TJ 0 -24.9 TD[(info:)]TJ 0 -24.91 TD[(install-info:)]TJ 0 -24.91 TD[(install:)]TJ 0 -12.45 TD[(uninstall:)]TJ 0 -24.91 TD[(clean:)]TJ 45.82 -12.45 TD[(-rm)-524(-f)-525(*~)-525(core)-525(*.info*)]TJ ET 456.38 -170.36 m 456.77 -170.36 l 456.77 -11.96 l 456.38 -11.96 l b BT/F9 9.96 Tf 39.6 -176.59 TD[(\012)]TJ ET 45.58 -176.59 m 450.40 -176.59 l 450.40 -176.19 l 45.58 -176.19 l b BT 456.38 -176.59 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.39 TD[(It)-328(is)-328(also)-328(a)-328(go)-27(o)-28(d)-328(idea)-328(to)-328(mak)27(e)-327(sure)-328(y)26(our)-327(`)]TJ/F4 10.91 Tf 195.72 0 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[(')-328(can)-328(rebuild)-328(itself)-328(if)-328(`)]TJ/F4 10.91 Tf 102.83 0 TD[(Makefile.in)]TJ/F1 10.91 Tf 63 0 TD[(')]TJ -407.37 -13.15 TD[(c)27(hanges,)-332(with)-333(a)-334(target)-333(lik)27(e)-333(this)-333(\(whic)27(h)-332(w)26(orks)-332(for)-333(either)-334(Cygn)27(us)-332(or)-334(FSF)-333(Con\014gure\):)]TJ/F9 9.96 Tf 0 -10.05 TD[(\013)]TJ ET 45.58 -217.18 m 450.40 -217.18 l 450.40 -216.78 l 45.58 -216.78 l b BT 456.38 -217.18 TD[(\010)]TJ ET 39.60 -266.78 m 40.00 -266.78 l 40.00 -222.91 l 39.60 -222.91 l b BT/F4 10.91 Tf 42.99 -236.46 TD[(Makefile)-524(:)-525($\(srcdir\)/Makefile.in)-525($\(host_makefile_frag\))-525(\\)]TJ 74.45 -12.45 TD[($\(target_makefile_frag\))]TJ -28.63 -12.46 TD[($\(SHELL\))-524(./config.status)]TJ ET 456.38 -266.78 m 456.77 -266.78 l 456.77 -222.91 l 456.38 -222.91 l b BT/F9 9.96 Tf 39.6 -273.01 TD[(\012)]TJ ET 45.58 -273.01 m 450.40 -273.01 l 450.40 -272.61 l 45.58 -272.61 l b BT 456.38 -273.01 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.38 TD[(Y)83(ou)-363(also)-365(need)-364(to)-364(include)-364(t)26(w)28(o)-363(targets)-364(imp)-28(ortan)27(t)-364(to)-364(DejaGn)27(u:)]TJ/F4 10.91 Tf 296.54 0 TD[(check)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-371(to)-365(run)-364(the)-364(tests,)]TJ -325.18 -13.15 TD[(and)]TJ/F4 10.91 Tf 21.3 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.81 0 TD[(,)-342(to)-341(set)-341(up)-341(the)-341(Tcl)-341(copies)-341(of)-341(con\014guration-dep)-28(enden)27(t)-340(v)54(alues.)-466(The)]TJ/F4 10.91 Tf 314.65 0 TD[(check)]TJ/F1 10.91 Tf -381.76 -13.16 TD[(target)-333(m)27(ust)-332(run)-334(`)]TJ/F4 10.91 Tf 82.24 0 TD[(runtest)-333(--tool)]TJ/F5 10.91 Tf 81.73 0 TD[(example)]TJ/F1 10.91 Tf 39.7 0 TD[(':)]TJ/F9 9.96 Tf -203.67 -9.44 TD[(\013)]TJ ET 45.58 -326.14 m 450.40 -326.14 l 450.40 -325.74 l 45.58 -325.74 l b BT 456.38 -326.14 TD[(\010)]TJ ET 39.60 -374.53 m 40.00 -374.53 l 40.00 -331.87 l 39.60 -331.87 l b BT/F4 10.91 Tf 42.99 -344.51 TD[(check:)-524(site.exp)-525(all)]TJ 45.82 -12.46 TD[($\(RUNTEST\))-524($\(RUNTESTFLAGS\))-525($\(FLAGS_TO_PASS\))-525(\\)]TJ 22.9 -12.45 TD[(--tool)]TJ/F5 10.91 Tf 40.09 0 TD[(example)]TJ/F4 10.91 Tf 45.43 0 TD[(--srcdir)-524($\(srcdir\))]TJ ET 456.38 -374.53 m 456.77 -374.53 l 456.77 -331.87 l 456.38 -331.87 l b BT/F9 9.96 Tf 39.6 -380.76 TD[(\012)]TJ ET 45.58 -380.76 m 450.40 -380.76 l 450.40 -380.36 l 45.58 -380.36 l b BT 456.38 -380.76 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.99 TD[(The)]TJ/F4 10.91 Tf 23.09 0 TD[(site.exp)]TJ/F1 10.91 Tf 50.12 0 TD[(target)-394(should)-394(usually)-394(set)-395(up)-394(\(among)-394(other)-395(things!\))-627(a)-394(Tcl)-394(v)54(ariable)-393(for)]TJ -73.21 -13.15 TD[(the)-333(name)-333(of)-333(y)26(our)-332(program:)]TJ ET 0 g 0 G
-endstream
-endobj
-233 0 obj
-<<
-/F1 9 0 R
-/F9 59 0 R
-/F4 28 0 R
-/F5 31 0 R
->>
-endobj
-231 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 233 0 R
->>
-endobj
-236 0 obj
-<<
-/Length 5426
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(46)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F9 9.96 Tf 21.6 -20.18 TD[(\013)]TJ ET 45.58 -6.23 m 450.40 -6.23 l 450.40 -5.83 l 45.58 -5.83 l b BT 456.38 -6.23 TD[(\010)]TJ ET 39.60 -416.97 m 40.00 -416.97 l 40.00 -11.96 l 39.60 -11.96 l b BT/F4 10.91 Tf 42.99 -25.51 TD[(site.exp:)-524(./config.status)-525(Makefile)]TJ 45.82 -12.45 TD[(@echo)-524("Making)-525(a)-525(new)-525(config)-525(file...")]TJ 0 -12.46 TD[(-@rm)-524(-f)-525(./tmp?)]TJ 0 -12.45 TD[(@touch)-524(site.exp)]TJ 0 -24.91 TD[(-@mv)-524(site.exp)-525(site.bak)]TJ 0 -12.45 TD[(@echo)-524("##)-525(these)-525(variables)-525(are)-525(automatically\\)]TJ -40.1 -12.45 TD[(generated)-524(by)-525(make)-525(##")-525(>)-525(./tmp0)]TJ 40.1 -12.45 TD[(@echo)-524("#)-525(Do)-525(not)-525(edit)-525(here.)-525(If)-525(you)-525(wish)-525(to\\)]TJ -40.1 -12.46 TD[(override)-524(these)-525(values")-525(>>)-525(./tmp0)]TJ 40.1 -12.45 TD[(@echo)-524("#)-525(add)-525(them)-525(to)-525(the)-525(last)-525(section")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(host_os)-525(${host_os}")-525(>>)-525(./tmp0)]TJ 0 -12.46 TD[(@echo)-524("set)-525(host_alias)-525(${host_alias}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(host_cpu)-525(${host_cpu}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(host_vendor)-525(${host_vendor}")-525(>>)-525(./tmp0)]TJ 0 -12.46 TD[(@echo)-524("set)-525(target_os)-525(${target_os}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(target_alias)-525(${target_alias}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(target_cpu)-525(${target_cpu}")-525(>>)-525(./tmp0)]TJ 0 -12.46 TD[(@echo)-524("set)-525(target_vendor)-525(${target_vendor}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(host_triplet)-525(${host_canonical}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(target_triplet)-525(${target_canonical}">>./tmp0)]TJ 0 -12.46 TD[(@echo)-524("set)-525(tool)-525(binutils")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(srcdir)-525(${srcdir}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(objdir)-525(`pwd`")-525(>>)-525(./tmp0)]TJ 0 -12.46 TD[(@echo)-524("set)]TJ/F5 10.91 Tf 62.99 0 TD[(examplename)-581(example)]TJ/F4 10.91 Tf 110.59 0 TD[(")-524(>>)-525(./tmp0)]TJ -173.58 -12.45 TD[(@echo)-524("##)-525(All)-525(variables)-525(above)-525(are)-525(generated)-525(by\\)]TJ -40.1 -12.45 TD[(configure.)-524(Do)-525(Not)-525(Edit)-525(##")-525(>>)-525(./tmp0)]TJ 85.91 -12.46 TD[(@cat)-524(./tmp0)-525(>)-525(site.exp)]TJ -45.81 -12.45 TD[(@sed)-524(<)-525(site.bak)-525(\\)]TJ 40.09 -12.45 TD[(-e)-524('1,/^##)-525(All)-525(variables)-525(above)-525(are.*##/)-525(d')-525(\\)]TJ 0 -12.46 TD[(>>)-524(site.exp)]TJ -40.09 -12.45 TD[(-@rm)-524(-f)-525(./tmp?)]TJ ET 456.38 -416.97 m 456.77 -416.97 l 456.77 -11.96 l 456.38 -11.96 l b BT/F9 9.96 Tf 39.6 -423.2 TD[(\012)]TJ ET 45.58 -423.20 m 450.40 -423.20 l 450.40 -422.80 l 45.58 -422.80 l b BT 456.38 -423.2 TD[(\011)]TJ/F1 10.91 Tf -432.47 -18 TD[(4.)-660(Create)-333(a)-333(directory)-334(\(in)-333(`)]TJ/F4 10.91 Tf 126.39 0 TD[(testsuite/)]TJ/F1 10.91 Tf 57.27 0 TD[('\))-333(called)-333(`)]TJ/F4 10.91 Tf 44.85 0 TD[(config/)]TJ/F1 10.91 Tf 40.09 0 TD[(':)]TJ/F4 10.91 Tf -224.11 -15.44 TD[(eg$)-524(mkdir)-525(config)]TJ/F1 10.91 Tf -44.49 -16.14 TD[(5.)-660(Mak)27(e)-319(an)-320(init)-320(\014le)-320(in)-321(this)-320(directory;)-324(its)-320(name)-321(m)27(ust)-319(start)-320(with)-320(the)]TJ/F4 10.91 Tf 320.57 0 TD[(target_abbrev)]TJ/F1 10.91 Tf 77.94 0 TD[(v)55(alue,)]TJ -382.82 -13.15 TD[(so)-362(call)-363(it)-363(`)]TJ/F4 10.91 Tf 48.3 0 TD[(config/unix.exp)]TJ/F1 10.91 Tf 85.9 0 TD[('.)-532(This)-363(is)-363(the)-362(\014le)-363(that)-363(con)27(tains)-362(the)-363(target-dep)-27(enden)26(t)-361(pro-)]TJ -134.2 -13.15 TD[(cedures;)-365(fortunately)83(,)-359(most)-355(of)-354(them)-355(do)-354(not)-355(ha)27(v)28(e)-354(to)-354(do)-355(v)27(ery)-354(m)27(uc)28(h)-354(in)-354(order)-355(for)]TJ/F4 10.91 Tf 370.31 0 TD[(runtest)]TJ/F1 10.91 Tf -370.31 -13.15 TD[(to)-333(run.)]TJ 0 -16.14 TD[(If)]TJ/F5 10.91 Tf 10.9 0 TD[(example)]TJ/F1 10.91 Tf 43.33 0 TD[(is)-332(not)-333(in)27(teractiv)28(e,)-332(y)27(ou)-331(can)-333(get)-333(a)27(w)28(a)28(y)-332(with)-332(this)-333(minimal)-332(`)]TJ/F4 10.91 Tf 264.61 0 TD[(unix.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-332(to)-333(b)-27(egin)]TJ -364.66 -13.15 TD[(with:)]TJ/F9 9.96 Tf 0 -7.32 TD[(\013)]TJ ET 45.58 -548.84 m 450.40 -548.84 l 450.40 -548.44 l 45.58 -548.44 l b BT 456.38 -548.84 TD[(\010)]TJ ET 39.60 -585.99 m 40.00 -585.99 l 40.00 -554.57 l 39.60 -554.57 l b BT/F4 10.91 Tf 42.99 -568.12 TD[(proc)-524(foo_exit)-525({})-525({})]TJ 0 -12.46 TD[(proc)-524(foo_version)-525({})-525({})]TJ ET 456.38 -585.99 m 456.77 -585.99 l 456.77 -554.57 l 456.38 -554.57 l b BT/F9 9.96 Tf 39.6 -592.22 TD[(\012)]TJ ET 45.58 -592.22 m 450.40 -592.22 l 450.40 -591.82 l 45.58 -591.82 l b BT 456.38 -592.22 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.39 TD[(If)]TJ/F5 10.91 Tf 10.95 0 TD[(example)]TJ/F1 10.91 Tf 43.38 0 TD[(is)-337(in)27(teractiv)28(e,)-337(ho)26(w)28(ev)28(er,)-337(y)27(ou)-337(migh)27(t)-336(as)-337(w)26(ell)-336(de\014ne)-337(a)-337(start)-338(routine)]TJ/F8 10.91 Tf 304.73 0 TD[(and)-361(invoke)]TJ -359.06 -13.15 TD[(it)]TJ/F1 10.91 Tf 11.64 0 TD[(b)27(y)-332(using)-333(an)-334(init)-333(\014le)-333(lik)26(e)-332(this:)]TJ ET 0 g 0 G
-endstream
-endobj
-237 0 obj
-<<
-/F1 9 0 R
-/F9 59 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F8 52 0 R
->>
-endobj
-235 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 237 0 R
->>
-endobj
-240 0 obj
-<<
-/Length 5208
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(7:)-444(New)-334(T)83(o)-27(ols,)-333(T)82(argets,)-332(or)-334(Hosts)-20764(47)]TJ/F9 9.96 Tf 21.6 -20.18 TD[(\013)]TJ ET 45.58 -6.23 m 450.40 -6.23 l 450.40 -5.83 l 45.58 -5.83 l b BT 456.38 -6.23 TD[(\010)]TJ ET 39.60 -154.07 m 40.00 -154.07 l 40.00 -11.96 l 39.60 -11.96 l b BT/F4 10.91 Tf 42.99 -25.51 TD[(proc)-524(foo_exit)-525({})-525({})]TJ 0 -12.45 TD[(proc)-524(foo_version)-525({})-525({})]TJ 0 -24.91 TD[(proc)-524(foo_start)-525({})-525({)]TJ 11.45 -12.45 TD[(global)]TJ/F5 10.91 Tf 40.09 0 TD[(examplename)]TJ/F4 10.91 Tf -40.09 -12.46 TD[(spawn)-524($)]TJ/F5 10.91 Tf 40.09 0 TD[(examplename)]TJ/F4 10.91 Tf -40.09 -12.45 TD[(expect)-524({)]TJ 11.46 -12.45 TD[(-re)-524("")-525({})]TJ -11.46 -12.45 TD[(})]TJ -11.45 -12.46 TD[(})]TJ 0 -12.45 TD[(foo_start)]TJ ET 456.38 -154.07 m 456.77 -154.07 l 456.77 -11.96 l 456.38 -11.96 l b BT/F9 9.96 Tf 39.6 -160.29 TD[(\012)]TJ ET 45.58 -160.29 m 450.40 -160.29 l 450.40 -159.90 l 45.58 -159.90 l b BT 456.38 -160.29 TD[(\011)]TJ/F1 10.91 Tf -432.47 -17.39 TD[(6.)-660(Create)-333(a)-333(directory)-334(whose)-333(name)-333(b)-28(egins)-333(with)-334(y)27(our)-332(to)-28(ol's)-333(name,)-334(to)-333(con)27(tain)-333(tests:)]TJ/F4 10.91 Tf 44.49 -15.45 TD[(eg$)-524(mkdir)]TJ/F5 10.91 Tf 57.27 0 TD[(example)]TJ/F4 10.91 Tf 39.09 0 TD[(.0)]TJ/F1 10.91 Tf -140.85 -16.14 TD[(7.)-660(Create)-356(a)-357(sample)-357(test)-357(\014le)-357(in)-357(`)]TJ/F5 10.91 Tf 152.53 0 TD[(example)]TJ/F4 10.91 Tf 39.09 0 TD[(.0)]TJ/F1 10.91 Tf 11.46 0 TD[('.)-515(Its)-356(name)-357(m)27(ust)-356(end)-357(with)-357(`)]TJ/F4 10.91 Tf 133.69 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(';)-368(y)27(ou)-356(can)-357(use)]TJ -343.99 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(first-try.exp)]TJ/F1 10.91 Tf 74.45 0 TD[(')-326(T)82(o)-325(b)-28(egin)-327(with,)-328(just)-326(write)-327(there)-327(a)-326(line)-327(of)-326(Tcl)-327(co)-28(de)-326(to)-327(issue)-327(a)-326(message:)]TJ/F9 9.96 Tf -77.48 -9.74 TD[(\013)]TJ ET 45.58 -232.16 m 450.40 -232.16 l 450.40 -231.76 l 45.58 -231.76 l b BT 456.38 -232.16 TD[(\010)]TJ ET 39.60 -256.86 m 40.00 -256.86 l 40.00 -237.89 l 39.60 -237.89 l b BT/F4 10.91 Tf 42.99 -251.44 TD[(send_user)-524("Testing:)-525(one,)-525(two...\\n")]TJ ET 456.38 -256.86 m 456.77 -256.86 l 456.77 -237.89 l 456.38 -237.89 l b BT/F9 9.96 Tf 39.6 -263.08 TD[(\012)]TJ ET 45.58 -263.08 m 450.40 -263.08 l 450.40 -262.69 l 45.58 -262.69 l b BT 456.38 -263.08 TD[(\011)]TJ/F1 10.91 Tf -432.47 -18 TD[(8.)-660(Bac)27(k)-332(in)-333(the)-334(`)]TJ/F4 10.91 Tf 77.36 0 TD[(testsuite/)]TJ/F1 10.91 Tf 57.27 0 TD[(')-333(\(top)-333(lev)27(el\))-333(directory)83(,)-333(run)]TJ/F4 10.91 Tf -90.14 -15.44 TD[(eg$)-524(configure)]TJ/F1 10.91 Tf -28.8 -16.14 TD[(\(Y)83(ou)-383(ma)27(y)-383(ha)27(v)28(e)-383(to)-384(sp)-28(ecify)-384(more)-383(of)-384(a)-384(path,)-396(if)-384(a)-384(suitable)]TJ/F4 10.91 Tf 268.71 0 TD[(configure)]TJ/F1 10.91 Tf 55.74 0 TD[(is)-383(not)-384(a)27(v)55(ailable)-383(in)]TJ -324.45 -13.15 TD[(y)27(our)-332(execution)-333(path.\))]TJ -15.69 -16.14 TD[(9.)-660(Y)83(ou)-370(are)-371(no)27(w)-370(ready)-370(to)-371(triumphan)27(tly)-370(t)27(yp)-27(e)-371(`)]TJ/F4 10.91 Tf 219.54 0 TD[(make)-333(check)]TJ/F1 10.91 Tf 55.19 0 TD[(')-370(or)-371(`)]TJ/F4 10.91 Tf 23.87 0 TD[(runtest)-333(--tool)]TJ/F5 10.91 Tf 81.73 0 TD[(example)]TJ/F1 10.91 Tf 39.7 0 TD[('.)]TJ -404.34 -13.15 TD[(Y)83(ou)-332(should)-334(see)-333(something)-333(lik)26(e)-332(this:)]TJ/F9 9.96 Tf 0 -9.45 TD[(\013)]TJ ET 45.58 -364.55 m 450.40 -364.55 l 450.40 -364.15 l 45.58 -364.15 l b BT 456.38 -364.55 TD[(\010)]TJ ET 39.60 -485.53 m 40.00 -485.53 l 40.00 -370.27 l 39.60 -370.27 l b BT/F4 10.91 Tf 42.99 -382.92 TD[(Test)-524(Run)-525(By)-525(rhl)-525(on)-525(Fri)-525(Jan)-525(29)-525(16:25:44)-525(EST)-525(1993)]TJ 91.63 -24.9 TD[(===)]TJ/F5 10.91 Tf 22.91 0 TD[(example)]TJ/F4 10.91 Tf 45.43 0 TD[(tests)-524(===)]TJ -159.97 -24.91 TD[(Running)-524(./)]TJ/F5 10.91 Tf 57.27 0 TD[(example)]TJ/F4 10.91 Tf 39.09 0 TD[(.0/first-try.exp)-524(...)]TJ -96.36 -12.45 TD[(Testing:)-524(one,)-525(two...)]TJ 91.63 -24.91 TD[(===)]TJ/F5 10.91 Tf 22.91 0 TD[(example)]TJ/F4 10.91 Tf 45.43 0 TD[(Summary)-524(===)]TJ ET 456.38 -485.53 m 456.77 -485.53 l 456.77 -370.27 l 456.38 -370.27 l b BT/F9 9.96 Tf 39.6 -491.76 TD[(\012)]TJ ET 45.58 -491.76 m 450.40 -491.76 l 450.40 -491.36 l 45.58 -491.36 l b BT 456.38 -491.76 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.39 TD[(There)-391(is)-391(no)-392(output)-391(in)-392(the)-391(summary)82(,)-405(b)-28(ecause)-391(so)-392(far)-391(the)-392(example)-391(do)-28(es)-392(not)-391(call)-392(an)27(y)-390(of)]TJ 0 -13.15 TD[(the)-333(pro)-28(cedures)-333(that)-333(establish)-334(a)-333(test)-333(outcome.)]TJ -21.14 -16.14 TD[(10.)-660(Begin)-427(writing)-428(some)-428(real)-428(tests.)-728(F)82(or)-427(an)-428(in)27(teractiv)28(e)-427(to)-28(ol,)-451(y)26(ou)-427(should)-427(probably)-428(write)-428(a)]TJ 21.14 -13.15 TD[(real)-339(exit)-339(routine)-339(in)-339(fairly)-339(short)-339(order;)-341(in)-339(an)26(y)-338(case,)-340(y)27(ou)-338(should)-339(also)-339(write)-339(a)-339(real)-339(v)27(ersion)]TJ 0 -13.15 TD[(routine)-333(so)-28(on.)]TJ ET 0 g 0 G
-endstream
-endobj
-241 0 obj
-<<
-/F1 9 0 R
-/F9 59 0 R
-/F4 28 0 R
-/F5 31 0 R
->>
-endobj
-239 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 241 0 R
->>
-endobj
-244 0 obj
-<<
-/Length 6498
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(48)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(7.2)-562(Adding)-375(a)-375(target)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(DejaGn)27(u)-522(has)-524(some)-523(additional)-523(requiremen)26(ts)-522(for)-523(target)-524(supp)-28(ort,)-570(b)-28(ey)27(ond)-523(the)-523(general-)]TJ -14.94 -13.15 TD[(purp)-27(ose)-424(pro)27(visions)-423(of)-423(Cygn)26(us)]TJ/F4 10.91 Tf 147.27 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.)]TJ/F4 10.91 Tf 10.83 0 TD[(runtest)]TJ/F1 10.91 Tf 44.71 0 TD[(m)27(ust)-422(activ)26(ely)-422(comm)27(unicate)-423(with)-424(the)]TJ -254.36 -13.15 TD[(target,)-322(rather)-319(than)-319(simply)-320(generating)-319(or)-319(managing)-320(co)-28(de)-319(for)-319(the)-320(target)-319(arc)27(hitecture.)-439(There-)]TJ 0 -13.15 TD[(fore,)-329(eac)27(h)-328(to)-28(ol)-328(requires)-329(an)-328(initialization)-329(mo)-28(dule)-328(for)-329(eac)27(h)-328(target.)-443(F)83(or)-328(new)-329(targets,)-329(y)27(ou)-328(m)27(ust)]TJ 0 -13.15 TD[(supply)-259(a)-259(few)-259(Tcl)-259(pro)-28(cedures)-259(to)-259(adapt)-259(DejaGn)27(u)-258(to)-259(the)-260(target.)-419(This)-259(p)-28(ermits)-259(DejaGn)27(u)-259(itself)-259(to)]TJ 0 -13.15 TD[(remain)-281(target)-282(indep)-28(enden)27(t.)-426(See)-282(Section)-282(5.2)-282([Initialization)-281(mo)-28(dule],)-292(page)-282(22,)-292(for)-282(a)-281(discussion)]TJ 0 -13.15 TD[(of)-333(the)-333(naming)-333(con)26(v)28(en)28(tions)-332(that)-334(enable)-333(DejaGn)27(u)-333(to)-333(lo)-28(cate)-333(and)-333(use)-334(init)-333(\014les.)]TJ 14.94 -16.14 TD[(Usually)-284(the)-284(b)-27(est)-284(w)26(a)28(y)-283(to)-284(write)-284(a)-284(new)-284(initialization)-284(mo)-28(dule)-284(is)-284(to)-284(edit)-284(an)-284(existing)-284(initializa-)]TJ -14.94 -13.15 TD[(tion)-337(mo)-28(dule;)-340(some)-338(trial)-337(and)-338(error)-338(will)-337(b)-28(e)-338(required.)-458(If)-337(necessary)82(,)-338(y)27(ou)-337(can)-337(use)-338(the)-338(`)]TJ/F4 10.91 Tf 388.88 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')]TJ -428.97 -13.15 TD[(option)-333(to)-333(see)-333(what)-334(is)-333(really)-333(going)-334(on.)]TJ 14.94 -16.14 TD[(When)-324(y)26(ou)-323(co)-28(de)-325(an)-325(initialization)-325(mo)-27(dule,)-327(b)-28(e)-324(generous)-325(in)-325(prin)27(ting)-324(information)-325(con)27(trolled)]TJ -14.94 -13.15 TD[(b)27(y)-332(the)]TJ/F4 10.91 Tf 33.94 0 TD[(verbose)]TJ/F1 10.91 Tf 43.73 0 TD[(pro)-27(cedure)-334(\(see)-333(Section)-333(5.3)-334([DejaGn)27(u)-332(Builtins],)-334(page)-333(23\).)]TJ -62.73 -16.14 TD[(Most)-432(of)-433(the)-433(w)27(ork)-432(is)-433(in)-433(getting)-433(the)-433(comm)27(unications)-432(righ)27(t.)-742(Comm)26(unications)-432(co)-27(de)-433(\(for)]TJ -14.94 -13.15 TD[(sev)27(eral)-277(situations)-279(in)27(v)28(olving)-278(IP)-278(net)27(w)28(orks)-278(or)-278(serial)-279(lines\))-278(is)-279(a)27(v)56(ailable)-278(in)-278(a)-279(DejaGn)27(u)-278(library)-278(\014le,)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(lib/remote.exp)]TJ/F1 10.91 Tf 80.18 0 TD[('.)-444(See)-333(Section)-334(5.3)-333([DejaGn)27(u)-332(Builtins],)-334(page)-333(23.)]TJ -68.27 -16.14 TD[(If)-331(y)27(ou)-331(susp)-28(ect)-332(a)-331(comm)26(unication)-330(problem,)-333(try)-331(running)-332(the)-332(connection)-332(in)27(teractiv)28(ely)-331(from)]TJ/F4 10.91 Tf -14.94 -13.15 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(.)-422(\(There)-266(are)-267(three)-266(w)27(a)28(ys)-266(of)-266(running)]TJ/F4 10.91 Tf 164.66 0 TD[(expect)]TJ/F1 10.91 Tf 37.27 0 TD[(as)-266(an)-266(in)26(teractiv)28(e)-265(in)26(terpreter.)-421(Y)83(ou)-266(can)-266(run)]TJ/F4 10.91 Tf -236.29 -13.15 TD[(expect)]TJ/F1 10.91 Tf 37.88 0 TD[(with)-322(no)-322(argumen)27(ts,)-324(and)-322(con)27(trol)-321(it)-322(completely)-323(in)27(teractiv)28(ely;)-325(or)-322(y)27(ou)-321(can)-323(use)-322(`)]TJ/F4 10.91 Tf 359.76 0 TD[(expect)]TJ -397.64 -13.15 TD[(-i)]TJ/F1 10.91 Tf 11.45 0 TD[(')-280(together)-280(with)-281(other)-280(command-line)-281(options)-280(and)-281(argumen)27(ts;)-297(or)-281(y)27(ou)-279(can)-281(run)-280(the)-281(command)]TJ/F4 10.91 Tf -11.45 -13.15 TD[(interpreter)]TJ/F1 10.91 Tf 66.35 0 TD[(from)-306(an)27(y)]TJ/F4 10.91 Tf 45.81 0 TD[(expect)]TJ/F1 10.91 Tf 37.71 0 TD[(pro)-27(cedure.)-436(Use)]TJ/F4 10.91 Tf 75.49 0 TD[(return)]TJ/F1 10.91 Tf 37.71 0 TD[(to)-306(get)-307(bac)27(k)-306(to)-307(the)-307(calling)-306(pro)-28(cedure)]TJ -263.07 -13.15 TD[(\(if)-355(an)26(y\),)-360(or)]TJ/F4 10.91 Tf 56.29 0 TD[(return)-333(-tcl)]TJ/F1 10.91 Tf 64.79 0 TD[(to)-355(mak)26(e)-355(the)-355(calling)-356(pro)-28(cedure)-356(itself)-356(return)-356(to)-356(its)-356(caller;)-367(use)]TJ/F4 10.91 Tf 288.01 0 TD[(exit)]TJ/F1 10.91 Tf -409.09 -13.16 TD[(or)-442(end-of-\014le)-442(to)-442(lea)27(v)28(e)]TJ/F4 10.91 Tf 109.02 0 TD[(expect)]TJ/F1 10.91 Tf 39.18 0 TD[(altogether.\))-770(Run)-442(the)-442(program)-442(whose)-442(name)-442(is)-442(recorded)-442(in)]TJ -148.2 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[($connectmode)]TJ/F1 10.91 Tf 68.73 0 TD[(',)-520(with)-482(the)-483(argumen)27(ts)-482(in)-482(`)]TJ/F4 10.91 Tf 130.76 0 TD[($targetname)]TJ/F1 10.91 Tf 63 0 TD[(',)-520(to)-482(establish)-483(a)-483(connection.)-892(Y)82(ou)]TJ -265.52 -13.15 TD[(should)-333(at)-333(least)-333(b)-28(e)-334(able)-333(to)-333(get)-334(a)-333(prompt)-333(from)-334(an)27(y)-332(target)-333(that)-334(is)-333(ph)27(ysically)-333(connected.)]TJ/F2 14.35 Tf 0 -30.88 TD[(7.3)-562(P)30(orting)-374(to)-375(a)-375(new)-375(host)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(The)-472(task)-473(of)-473(p)-28(orting)-472(DejaGn)26(u)-472(is)-472(basically)-473(that)-473(of)-473(p)-28(orting)-472(Tcl)-473(and)]TJ/F4 10.91 Tf 331.76 0 TD[(expect)]TJ/F1 10.91 Tf 34.37 0 TD[(.)-862(Tcl)-473(and)]TJ/F4 10.91 Tf -381.07 -13.16 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(,)-357(as)-352(distributed)-353(with)-352(DejaGn)27(u,)-356(b)-28(oth)-353(use)]TJ/F4 10.91 Tf 195.95 0 TD[(autoconf)]TJ/F1 10.91 Tf 45.81 0 TD[(;)-361(they)-353(should)-352(p)-28(ort)-353(automatically)]TJ -276.12 -13.15 TD[(to)-333(most)-333(Unix)-333(systems.)]TJ 14.94 -16.14 TD[(Once)-367(Tcl)-368(and)]TJ/F4 10.91 Tf 69.62 0 TD[(expect)]TJ/F1 10.91 Tf 38.38 0 TD[(are)-367(p)-28(orted,)-377(DejaGn)27(u)-367(should)-368(run.)-548(Most)-368(system)-368(dep)-28(endencies)-367(are)]TJ -122.94 -13.15 TD[(tak)27(en)-332(care)-333(of)-334(b)27(y)-332(using)]TJ/F4 10.91 Tf 108.88 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(as)-333(the)-333(main)-333(command)-334(shell.)]TJ ET 0 g 0 G
-endstream
-endobj
-245 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
->>
-endobj
-243 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 245 0 R
->>
-endobj
-248 0 obj
-<<
-/Length 8496
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(App)-27(endix)-334(A:)-333(Installing)-333(DejaGn)27(u)-24351(49)]TJ/F2 17.22 Tf 0 -25.91 TD[(App)-31(endix)-375(A)-562(Installing)-375(DejaGn)30(u)]TJ/F1 10.91 Tf 14.94 -24.19 TD[(Once)-304(y)27(ou)-303(ha)26(v)28(e)-303(the)-304(DejaGn)26(u)-303(source)-304(unpac)26(k)28(ed)-303(and)-304(a)26(v)56(ailable,)-309(y)27(ou)-304(m)27(ust)-303(\014rst)-305(con\014gure)-304(the)]TJ -14.94 -13.16 TD[(soft)27(w)28(are)-370(to)-371(sp)-28(ecify)-371(where)-371(it)-371(is)-371(to)-370(run)-371(\(and)-371(the)-371(asso)-28(ciated)-371(defaults\);)-390(then)-371(y)27(ou)-370(can)-371(pro)-28(ceed)]TJ 0 -13.15 TD[(to)-333(installing)-333(it.)]TJ/F2 14.35 Tf 0 -28.54 TD[(A.1)-562(Con\014guring)-375(the)-375(DejaGn)30(u)-374(test)-375(driv)31(er)]TJ/F1 10.91 Tf 14.94 -22.34 TD[(It)-412(is)-412(usually)-412(b)-27(est)-412(to)-413(con\014gure)-412(in)-412(a)-412(directory)-412(separate)-412(from)-412(the)-412(source)-412(tree,)-432(sp)-27(ecifying)]TJ -14.94 -13.15 TD[(where)-328(to)-328(\014nd)-328(the)-329(source)-328(with)-328(the)-328(optional)-329(`)]TJ/F4 10.91 Tf 207.56 0 TD[(--srcdir)]TJ/F1 10.91 Tf 45.82 0 TD[(')-328(option)-328(to)]TJ/F4 10.91 Tf 53.77 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.)-442(DejaGn)27(u)-328(uses)]TJ -358.7 -13.15 TD[(the)-426(GNU)]TJ/F4 10.91 Tf 49.38 0 TD[(autoconf)]TJ/F1 10.91 Tf 50.48 0 TD[(to)-426(con\014gure)-427(itself.)-724(F)82(or)-426(more)-426(info)-427(on)-427(using)-426(auto)-28(conf,)-450(read)-427(the)-426(GNU)]TJ -99.86 -13.15 TD[(auto)-27(conf)-444(man)26(ual.)-775(T)82(o)-443(con\014gure,)-471(execute)-445(the)-444(`)]TJ/F4 10.91 Tf 224.24 0 TD[(configure)]TJ/F1 10.91 Tf 51.54 0 TD[(')-444(program,)-471(no)-444(other)-444(options)-444(are)]TJ -275.78 -13.15 TD[(required.)-444(F)82(or)-332(an)-333(example,)-333(to)-333(con\014gure)-333(in)-333(a)-333(sep)-28(erate)-333(tree)-333(for)-334(ob)-55(jects,)-333(execute)-333(the)-333(con\014gure)]TJ 0 -13.15 TD[(script)-333(from)-333(the)-333(source)-334(tree)-333(lik)27(e)-333(this:)]TJ/F4 10.91 Tf 28.8 -14.66 TD[(../dejagnu-1.3/configure)]TJ/F1 10.91 Tf -13.86 -15.36 TD[(DejaGn)27(u)-314(do)-27(esn't)-315(care)-315(at)-315(con\014g)-315(time)-314(if)-315(it's)-315(for)-315(testing)-315(a)-314(nativ)26(e)-314(system)-314(or)-315(a)-315(cross)-315(system.)]TJ -14.94 -13.16 TD[(That)-333(is)-333(determined)-333(at)-334(run)27(time)-332(b)26(y)-332(using)-333(the)-334(con\014g)-333(\014les.)]TJ 14.94 -15.36 TD[(Y)83(ou)-536(ma)27(y)-536(also)-537(w)27(an)27(t)-536(to)-537(use)-536(the)]TJ/F4 10.91 Tf 161.13 0 TD[(configure)]TJ/F1 10.91 Tf 57.4 0 TD[(option)-536(`)]TJ/F4 10.91 Tf 39.19 0 TD[(--prefix)]TJ/F1 10.91 Tf 45.82 0 TD[(')-536(to)-537(sp)-28(ecify)-537(where)-537(y)27(ou)]TJ -318.48 -13.15 TD[(w)27(an)28(t)-512(DejaGn)27(u)-512(and)-512(its)-513(supp)-28(orting)-513(co)-28(de)-512(installed.)-983(By)-513(default,)-557(installation)-513(is)-513(in)-513(sub)-28(di-)]TJ 0 -13.15 TD[(rectories)-430(of)-431(`)]TJ/F4 10.91 Tf 61.34 0 TD[(/usr/local)]TJ/F1 10.91 Tf 57.27 0 TD[(',)-455(but)-431(y)27(ou)-430(can)-431(select)-430(an)26(y)-430(alternate)-430(directory)]TJ/F5 10.91 Tf 221.96 0 TD[(altdir)]TJ/F1 10.91 Tf 31.58 0 TD[(b)27(y)-430(including)]TJ -372.15 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--prefix=)]TJ/F5 10.91 Tf 51.55 0 TD[(altdir)]TJ/F1 10.91 Tf 26.87 0 TD[(')-294(on)-295(the)]TJ/F4 10.91 Tf 39.34 0 TD[(configure)]TJ/F1 10.91 Tf 54.76 0 TD[(command)-294(line.)-432(\(This)-294(v)54(alue)-293(is)-295(captured)-295(in)-294(the)-295(Mak)27(e\014le)]TJ -175.55 -13.15 TD[(v)55(ariables)]TJ/F4 10.91 Tf 45.24 0 TD[(prefix)]TJ/F1 10.91 Tf 38 0 TD[(and)]TJ/F4 10.91 Tf 21.21 0 TD[(exec_prefix)]TJ/F1 10.91 Tf 63 0 TD[(.\))]TJ -152.51 -15.36 TD[(Sa)27(v)28(e)-492(for)-492(a)-493(small)-493(n)27(um)28(b)-27(er)-493(of)-493(example)-492(tests,)-533(the)-493(DejaGn)27(u)-492(distribution)-492(itself)-493(do)-28(es)-493(not)]TJ -14.94 -13.15 TD[(include)-441(an)27(y)-441(test)-441(suites;)-496(these)-441(are)-442(a)27(v)56(ailable)-441(separately)82(.)-768(T)83(est)-441(suites)-441(for)-442(the)]TJ/F7 10.91 Tf 366.17 0 TD[(gnu)]TJ/F1 10.91 Tf 25.19 0 TD[(compiler)]TJ -391.36 -13.15 TD[(\(testing)-416(b)-28(oth)-416(GCC)-417(and)-417(G)]TJ/F4 10.91 Tf 127.18 0 TD[(++)]TJ/F1 10.91 Tf 11.45 0 TD[(\))-416(and)-417(for)-416(the)]TJ/F7 10.91 Tf 68.21 0 TD[(gnu)]TJ/F1 10.91 Tf 24.92 0 TD[(binary)-416(utilities)-417(are)-416(distributed)-417(in)-416(parallel)]TJ -231.76 -13.15 TD[(with)-329(the)-329(DejaGn)26(u)-328(distribution)-329(\(but)-330(pac)27(k)56(aged)-329(as)-329(separate)-330(\014les\).)-443(The)-329(test)-329(suite)-330(for)-329(the)]TJ/F7 10.91 Tf 411.62 0 TD[(gnu)]TJ/F1 10.91 Tf -411.62 -13.15 TD[(debugger)-342(is)-342(distributed)-342(in)-343(parallel)-342(with)-342(eac)26(h)-341(release)-342(of)-342(GDB)-343(itself,)-344(starting)-343(with)-342(GDB)-342(4.9.)]TJ 0 -13.15 TD[(After)-288(con\014guring)-289(the)-289(top-lev)26(el)-288(DejaGn)27(u)-288(directory)83(,)-297(unpac)27(k)-288(and)-289(con\014gure)-289(the)-289(test)-289(directories)]TJ 0 -13.15 TD[(for)-444(the)-444(to)-28(ols)-444(y)27(ou)-444(w)27(an)28(t)-443(to)-445(test;)-499(then,)-472(in)-445(eac)27(h)-443(test)-444(directory)82(,)-471(run)]TJ/F4 10.91 Tf 318.76 0 TD[(make)]TJ/F1 10.91 Tf 27.76 0 TD[(to)-444(build)-444(auxiliary)]TJ -346.52 -13.15 TD[(programs)-333(required)-333(b)27(y)-333(some)-333(of)-333(the)-334(tests.)]TJ/F2 14.35 Tf 0 -28.55 TD[(A.2)-562(Installing)-375(DejaGn)30(u)]TJ/F1 10.91 Tf 14.94 -22.34 TD[(T)83(o)-398(install)-398(DejaGn)26(u)-397(in)-399(y)27(our)-398(\014lesystem)-398(\(either)-399(in)-398(`)]TJ/F4 10.91 Tf 239.2 0 TD[(/usr/local)]TJ/F1 10.91 Tf 57.27 0 TD[(',)-414(or)-399(as)-399(sp)-27(eci\014ed)-399(b)27(y)-398(y)27(our)]TJ -311.41 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--prefix)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(option)-333(to)]TJ/F4 10.91 Tf 53.94 0 TD[(configure)]TJ/F1 10.91 Tf 51.54 0 TD[(\),)-333(execute)]TJ/F4 10.91 Tf -125.53 -14.66 TD[(eg$)-524(make)-525(install)]TJ/F1 10.91 Tf -28.8 -15.36 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(make)-333(install)]TJ/F1 10.91 Tf 66.64 0 TD[(')-333(do)-28(es)-333(these)-333(things)-334(for)-333(DejaGn)27(u:)]TJ -63.76 -15.36 TD[(1.)-660(Lo)-27(ok)-307(in)-306(the)-306(path)-307(sp)-28(eci\014ed)-306(for)-306(executables)-307(\(`)]TJ/F4 10.91 Tf 223.93 0 TD[($exec_prefix)]TJ/F1 10.91 Tf 68.73 0 TD[('\))-306(for)-306(directories)-307(called)-306(`)]TJ/F4 10.91 Tf 113.22 0 TD[(lib)]TJ/F1 10.91 Tf 17.18 0 TD[(')]TJ -407.37 -13.15 TD[(and)-333(`)]TJ/F4 10.91 Tf 24.24 0 TD[(bin)]TJ/F1 10.91 Tf 17.18 0 TD[('.)-444(If)-333(these)-334(directories)-333(do)-333(not)-334(exist,)-333(`)]TJ/F4 10.91 Tf 169.04 0 TD[(make)-333(install)]TJ/F1 10.91 Tf 66.63 0 TD[(')-333(creates)-333(them.)]TJ -292.78 -15.36 TD[(2.)-660(Create)-333(another)-333(directory)-334(in)-333(the)-333(`)]TJ/F4 10.91 Tf 171.87 0 TD[(lib)]TJ/F1 10.91 Tf 17.18 0 TD[(')-333(directory)83(,)-333(called)-333(`)]TJ/F4 10.91 Tf 89.16 0 TD[(dejagnu)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ -318.3 -15.36 TD[(3.)-660(Cop)27(y)-332(the)]TJ/F4 10.91 Tf 62.96 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(shell)-333(script)-333(in)27(to)-333(`)]TJ/F4 10.91 Tf 80.45 0 TD[($exec_prefix/bin)]TJ/F1 10.91 Tf 91.64 0 TD[('.)]TJ -278.78 -15.36 TD[(4.)-660(Cop)27(y)-221(all)-222(the)-222(library)-223(\014les)-222(\(used)-222(to)-222(supp)-28(ort)-222(the)-223(framew)27(ork\))-221(in)27(to)-221(`)]TJ/F4 10.91 Tf 306.93 0 TD[($exec_prefix/lib/dejagnu)]TJ/F1 10.91 Tf 137.46 0 TD[('.)]TJ -444.39 -15.36 TD[(5.)-660(Cop)27(y)-439(`)]TJ/F4 10.91 Tf 48.37 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 63 0 TD[(')-440(in)27(to)-440(`)]TJ/F4 10.91 Tf 34.16 0 TD[($exec_prefix/lib/dejagnu)]TJ/F1 10.91 Tf 137.45 0 TD[('.)-765(This)-441(is)-440(the)-441(main)-440(Tcl)-441(co)-27(de)]TJ -267.29 -13.15 TD[(implemen)27(ting)-332(DejaGn)27(u.)]TJ -6.66 -17.57 TD[(Eac)27(h)-360(test)-360(suite)-361(collection)-361(comes)-361(with)-361(simple)-361(installation)-360(instructions)-361(in)-361(a)-361(`)]TJ/F4 10.91 Tf 358.76 0 TD[(README)]TJ/F1 10.91 Tf 34.36 0 TD[(')-360(\014le;)]TJ -408.06 -13.15 TD[(in)-489(general,)-530(the)-490(test)-490(suites)-490(are)-490(designed)-490(to)-489(b)-28(e)-490(unpac)27(k)27(ed)-489(in)-490(the)-490(source)-490(directory)-490(for)-490(the)]TJ 0 -13.16 TD[(corresp)-27(onding)-334(to)-27(ol,)-334(and)-333(extract)-333(in)26(to)-332(a)-333(directory)-334(called)-333(`)]TJ/F4 10.91 Tf 265.36 0 TD[(testsuite)]TJ/F1 10.91 Tf 51.55 0 TD[('.)]TJ ET 0 g 0 G
-endstream
-endobj
-249 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F4 28 0 R
-/F5 31 0 R
-/F7 49 0 R
->>
-endobj
-247 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 249 0 R
->>
-endobj
-252 0 obj
-<<
-/Length 117
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(50)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ ET 0 g 0 G
-endstream
-endobj
-253 0 obj
-<<
-/F1 9 0 R
->>
-endobj
-251 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 253 0 R
->>
-endobj
-257 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 611.11
-/Ascent 611.11
-/Descent -222.22
-/Flags 5
-/FontBBox [-6 -237 731 801]
-/FontName /CMTT9
-/ItalicAngle 0
-/XHeight 431
-/StemV 80
-/FontFile 256 0 R
->>
-endobj
-258 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F14
-/FontDescriptor 257 0 R
-/BaseFont /BBAFZC+CMTT9
-/FirstChar 0
-/LastChar 127
-/Widths [524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99
-524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99
-524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99
-524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99
-524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99
-524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99
-524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99
-524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99
-524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99
-524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99
-524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99]
->>
-endobj
-260 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -194.44
-/Flags 4
-/FontBBox [-259 -250 1036 969]
-/FontName /CMR9
-/ItalicAngle 0
-/XHeight 431
-/StemV 80
-/FontFile 259 0 R
->>
-endobj
-261 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F15
-/FontDescriptor 260 0 R
-/BaseFont /GSDFLN+CMR9
-/FirstChar 0
-/LastChar 127
-/Widths [642.28 856.48 799.38 713.58 685.18 770.67 742.28 799.38 742.28 799.38 742.28
-599.53 570.98 570.98 856.48 856.48 285.49 314.04 513.89 513.89 513.89 513.89 513.89
-770.67 456.79 513.89 742.28 799.38 513.89 927.77 1041.97 799.38 285.49 285.49 513.89
-856.48 513.89 856.48 799.38 285.49 399.69 399.69 513.89 799.38 285.49 342.59 285.49
-513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 285.49
-285.49 285.49 799.38 485.34 485.34 799.38 770.67 727.93 742.28 785.03 699.38 670.83
-806.48 770.67 370.99 528.08 799.22 642.28 941.97 770.67 799.38 699.38 799.38 756.48
-570.98 742.28 770.67 770.67 1056.17 770.67 770.67 628.08 285.49 513.89 285.49 513.89
-285.49 285.49 513.89 570.98 456.79 570.98 457.17 314.04 513.89 570.98 285.49 314.04
-542.43 285.49 856.48 570.98 513.89 570.98 542.43 402 405.4 399.69 570.98 542.43 742.28
-542.43 542.43 456.79 513.89 1027.77 513.89 513.89 513.89]
->>
-endobj
-263 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -194.44
-/Flags 68
-/FontBBox [-172 -250 1171 969]
-/FontName /CMTI9
-/ItalicAngle -14
-/XHeight 431
-/StemV 80
-/FontFile 262 0 R
->>
-endobj
-264 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F16
-/FontDescriptor 263 0 R
-/BaseFont /PFWZRU+CMTI9
-/FirstChar 0
-/LastChar 127
-/Widths [643.84 839.52 787.05 710.5 682.11 762.97 734.58 787.05 734.58 787.05 734.58
-629.64 577.17 603.4 905.11 918.22 314.82 341.05 524.7 524.7 524.7 524.7 524.7 850.94
-472.23 550.93 734.58 734.58 524.7 906.19 1011.13 787.05 262.35 314.82 527.78 839.52
-786.08 839.52 787.05 314.82 419.76 419.76 524.7 787.05 314.82 367.29 314.82 524.7
-524.7 524.7 524.7 524.7 524.7 524.7 524.7 524.7 524.7 524.7 314.82 314.82 314.82
-787.05 524.7 524.7 787.05 762.97 722.54 734.58 775.01 696.31 670.07 794.15 762.97
-395.68 538.9 789.21 643.84 920.38 762.97 787.05 696.31 787.05 748.78 577.17 734.58
-762.97 762.97 1025.32 762.97 762.97 629.64 314.82 527.78 314.82 524.7 314.82 314.82
-524.7 472.23 472.23 524.7 472.23 314.82 472.23 524.7 314.82 314.82 472.23 262.35
-839.52 577.17 524.7 524.7 472.23 432.88 419.76 341.05 550.93 472.23 682.11 473.77
-498.46 419.76 524.7 1049.4 524.7 524.7 524.7]
->>
-endobj
-266 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -194.44
-/Flags 68
-/FontBBox [-207 -250 1150 969]
-/FontName /CMSL9
-/ItalicAngle -9
-/XHeight 431
-/StemV 80
-/FontFile 265 0 R
->>
-endobj
-267 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F17
-/FontDescriptor 266 0 R
-/BaseFont /HGHLSL+CMSL9
-/FirstChar 0
-/LastChar 127
-/Widths [642.28 856.48 799.38 713.58 685.18 770.67 742.28 799.38 742.28 799.38 742.28
-599.53 570.98 570.98 856.48 856.48 285.49 314.04 513.89 513.89 513.89 513.89 513.89
-829.32 456.79 513.89 742.28 799.38 513.89 927.77 1041.97 799.38 285.49 285.49 513.89
-856.48 513.89 856.48 799.38 285.49 399.69 399.69 513.89 799.38 285.49 342.59 285.49
-513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 285.49
-285.49 285.49 799.38 485.34 485.34 799.38 770.67 727.93 742.28 785.03 699.38 670.83
-806.48 770.67 370.99 528.08 799.22 642.28 941.97 770.67 799.38 699.38 799.38 756.48
-570.98 742.28 770.67 770.67 1056.17 770.67 770.67 628.08 285.49 513.89 285.49 513.89
-285.49 285.49 513.89 570.98 456.79 570.98 457.17 314.04 513.89 570.98 285.49 314.04
-542.43 285.49 856.48 570.98 513.89 570.98 542.43 402 405.4 399.69 570.98 542.43 742.28
-542.43 542.43 456.79 513.89 1027.77 513.89 513.89 513.89]
->>
-endobj
-268 0 obj
-<<
-/Length 23119
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Index)]TJ 421.09 0 TD[(51)]TJ/F2 17.22 Tf -421.09 -25.91 TD[(Index)]TJ/F2 14.35 Tf 0 -119.73 TD[(-)]TJ/F14 8.97 Tf 0 -18.87 TD[(--all)]TJ/F15 8.97 Tf 26.61 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.68 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.92 0 TD[(10)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--baud)]TJ/F15 8.97 Tf 31.32 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.39 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--build)]TJ/F15 8.97 Tf 36.02 0 TD[(\()]TJ/F14 8.97 Tf 3.59 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.85 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(--connect)]TJ/F15 8.97 Tf 45.44 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.79 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--debug)]TJ/F15 8.97 Tf 36.02 0 TD[(\()]TJ/F14 8.97 Tf 3.59 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.85 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--help)]TJ/F15 8.97 Tf 31.32 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.39 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(--host)]TJ/F15 8.97 Tf 31.32 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.39 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--name)]TJ/F15 8.97 Tf 31.32 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.39 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--objdir)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(--outdir)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--reboot)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--srcdir)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(--strace)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--target)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--tool)]TJ/F15 8.97 Tf 31.32 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.39 0 TD[(10)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(--tool)]TJ/F15 8.97 Tf 31.32 0 TD[(and)-342(naming)-343(con)28(v)28(en)29(tions)]TJ/F16 8.97 Tf 98.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 68.04 0 TD[(21)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--verbose)]TJ/F15 8.97 Tf 45.44 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.79 0 TD[(13)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--version)]TJ/F15 8.97 Tf 45.44 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.79 0 TD[(13)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(-b)]TJ/F15 8.97 Tf 12.49 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.7 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(-v)]TJ/F15 8.97 Tf 12.49 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.7 0 TD[(13)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(-V)]TJ/F15 8.97 Tf 12.49 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.7 0 TD[(13)]TJ/F2 14.35 Tf -197.81 -40.01 TD[(.)]TJ/F14 8.97 Tf 0 -18.87 TD[(.exp)]TJ/F16 8.97 Tf 20.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 181.92 0 TD[(1)]TJ/F2 14.35 Tf -202.42 -40 TD[(A)]TJ/F14 8.97 Tf 0 -18.87 TD[(absolute)]TJ/F17 8.97 Tf 40.73 0 TD[(path)]TJ/F16 8.97 Tf 19.43 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 137.65 0 TD[(28)]TJ -197.81 -13.3 TD[(adding)-342(a)-343(target)]TJ/F16 8.97 Tf 63.74 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.07 0 TD[(48)]TJ -197.81 -13.31 TD[(adding)-342(a)-343(test)-342(case)]TJ/F16 8.97 Tf 73.27 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 124.54 0 TD[(40)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(all_flag)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(17)]TJ -197.81 -13.3 TD[(am)28(biguit)29(y)85(,)-341(required)-343(for)-343(POSIX)]TJ/F16 8.97 Tf 125.44 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.98 0 TD[(7)]TJ -202.42 -13.31 TD[(arc)28(hiv)29(e)-342(ob)-57(ject)-343(\014les)]TJ/F16 8.97 Tf 76.71 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.1 0 TD[(30)]TJ -197.81 -13.3 TD[(auxiliary)-342(\014les,)-343(building)]TJ/F16 8.97 Tf 94.25 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.17 0 TD[(3)]TJ -202.42 -13.3 TD[(auxiliary)-342(programs)]TJ/F16 8.97 Tf 77.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.57 0 TD[(49)]TJ -197.81 -13.31 TD[(auxiliary)-342(test)-343(programs)]TJ/F16 8.97 Tf 94.94 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 102.87 0 TD[(12)]TJ/F2 14.35 Tf 27.16 589.87 TD[(B)]TJ/F14 8.97 Tf 0 -15.91 TD[(baud)]TJ/F16 8.97 Tf 20.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 177.43 0 TD[(17)]TJ -197.81 -11.95 TD[(baud)-342(rate,)-343(sp)-28(ecifying)]TJ/F16 8.97 Tf 85.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112 0 TD[(11)]TJ -197.81 -11.96 TD[(bps,)-342(sp)-29(ecifying)]TJ/F16 8.97 Tf 60.2 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 137.61 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(bt)]TJ/F16 8.97 Tf 11.32 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 186.49 0 TD[(31)]TJ -197.81 -11.95 TD[(bug)-342(n)27(um)29(b)-28(er)]TJ/F16 8.97 Tf 50.42 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.39 0 TD[(42)]TJ -197.81 -11.96 TD[(bug)-342(n)27(um)29(b)-28(er,)-342(extra)]TJ/F16 8.97 Tf 76.7 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.11 0 TD[(42)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(bug_id)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(42)]TJ -197.81 -11.96 TD[(build)-342(con\014g)-343(name,)-342(c)27(hanging)]TJ/F16 8.97 Tf 115.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 82.45 0 TD[(11)]TJ -197.81 -11.95 TD[(build)-342(host)-343(con\014guration)-342(test)]TJ/F16 8.97 Tf 116.06 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.75 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(build_triplet)]TJ/F16 8.97 Tf 63.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.45 0 TD[(17)]TJ -197.81 -11.96 TD[(built)-342(in)-343(pro)-28(cedures,)-343(DejaGn)28(u)]TJ/F16 8.97 Tf 119.86 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.95 0 TD[(23)]TJ/F2 14.35 Tf -197.81 -31.93 TD[(C)]TJ/F15 8.97 Tf 0 -15.9 TD[(C)-342(torture)-343(test)]TJ/F16 8.97 Tf 58.53 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 139.28 0 TD[(39)]TJ -197.81 -11.96 TD[(canadian)-342(cross)-343(con\014guration)-342(test)]TJ/F16 8.97 Tf 133.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 64.04 0 TD[(25)]TJ -197.81 -11.96 TD[(cancelling)-342(exp)-29(ected)-342(failure)]TJ/F16 8.97 Tf 107.69 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.12 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(check)]TJ/F15 8.97 Tf 26.61 0 TD[(mak)28(e\014le)-342(target)]TJ/F16 8.97 Tf 62.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 113.19 0 TD[(3)]TJ/F14 8.97 Tf -202.42 -11.95 TD[(clear_xfail)]TJ/F17 8.97 Tf 54.85 0 TD[(con\014g)]TJ/F16 8.97 Tf 26.21 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.75 0 TD[(26)]TJ -197.81 -11.96 TD[(Closing)-342(a)-343(remote)-342(connection)]TJ/F16 8.97 Tf 116.04 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.77 0 TD[(27)]TJ -197.81 -11.96 TD[(command)-342(line)-343(option)-342(v)56(ariables)]TJ/F16 8.97 Tf 124.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 72.94 0 TD[(17)]TJ -197.81 -11.95 TD[(command)-342(line)-343(options)]TJ/F16 8.97 Tf 90.27 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.15 0 TD[(9)]TJ -202.42 -11.96 TD[(command)-342(line)-343(Tcl)-342(v)56(ariable)-342(de\014nition)]TJ/F16 8.97 Tf 150.47 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 47.34 0 TD[(10)]TJ -197.81 -11.96 TD[(comm)28(unications)-342(pro)-28(cedures)]TJ/F16 8.97 Tf 112.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 85.45 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(comp_output)]TJ/F16 8.97 Tf 54.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.52 0 TD[(42)]TJ -197.81 -11.95 TD[(comparing)-342(\014les)]TJ/F16 8.97 Tf 63 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.81 0 TD[(28)]TJ -197.81 -11.96 TD[(compile)-342(a)-343(\014le)]TJ/F16 8.97 Tf 55.03 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.78 0 TD[(29)]TJ -197.81 -11.96 TD[(con\014guration)-342(dep)-29(enden)28(t)-342(defaults)]TJ/F16 8.97 Tf 133.59 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 64.22 0 TD[(15)]TJ -197.81 -11.95 TD[(con\014guring)-342(DejaGn)27(u)]TJ/F16 8.97 Tf 85.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.45 0 TD[(49)]TJ -197.81 -11.96 TD[(connecting)-342(to)-343(target)]TJ/F16 8.97 Tf 84.37 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 113.44 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(connectmode)]TJ/F16 8.97 Tf 54.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.52 0 TD[(17)]TJ -197.81 -11.96 TD[(con)28(v)29(erting)-342(relativ)28(e)-342(paths)-343(to)-342(absolute)]TJ/F16 8.97 Tf 150.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 47.79 0 TD[(28)]TJ -197.81 -11.95 TD[(Core)-342(In)27(ternal)-341(Pro)-29(cedures)]TJ/F16 8.97 Tf 103.07 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 94.74 0 TD[(23)]TJ -197.81 -11.96 TD[(cross)-342(con\014guration)]TJ/F16 8.97 Tf 77.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.3 0 TD[(4)]TJ -202.42 -11.96 TD[(curren)28(t)-342(test)-342(sub)-29(directory)]TJ/F16 8.97 Tf 102.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.29 0 TD[(42)]TJ/F2 14.35 Tf -197.81 -31.93 TD[(D)]TJ/F14 8.97 Tf 0 -15.91 TD[(dbg.log)]TJ/F15 8.97 Tf 36.02 0 TD[(\014le)]TJ/F16 8.97 Tf 14.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.69 0 TD[(11)]TJ -197.81 -11.95 TD[(debug)-342(log)]TJ/F16 8.97 Tf 41.32 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 156.49 0 TD[(36)]TJ -197.81 -11.96 TD[(debug)-342(log)-343(for)-342(test)-343(cases)]TJ/F16 8.97 Tf 95.08 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 102.73 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(debugger.exp)]TJ/F16 8.97 Tf 58.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.99 0 TD[(30)]TJ -197.81 -11.95 TD[(debugging)-342(a)-343(test)-342(case)]TJ/F16 8.97 Tf 88.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.91 0 TD[(40)]TJ -197.81 -11.96 TD[(default)-342(options,)-343(con)28(trolling)]TJ/F16 8.97 Tf 111.04 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.77 0 TD[(17)]TJ -197.81 -11.96 TD[(defaults,)-342(option)]TJ/F16 8.97 Tf 64.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 133.66 0 TD[(17)]TJ -197.81 -11.96 TD[(defaults,)-342(setting)-343(in)-342(init)-343(\014le)]TJ/F16 8.97 Tf 107.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.83 0 TD[(23)]TJ -197.81 -11.95 TD[(DejaGn)28(u)-342(con\014guration)]TJ/F16 8.97 Tf 93.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.99 0 TD[(49)]TJ -197.81 -11.96 TD[(DejaGn)28(u)-342(test)-342(driv)27(er)]TJ/F16 8.97 Tf 81.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.61 0 TD[(9)]TJ -202.42 -11.96 TD[(DejaGn)28(u,)-342(the)-342(name)]TJ/F16 8.97 Tf 81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.42 0 TD[(6)]TJ ET 0 g 0 G
-endstream
-endobj
-269 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F14 258 0 R
-/F15 261 0 R
-/F16 264 0 R
-/F17 267 0 R
->>
-endobj
-255 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 269 0 R
->>
-endobj
-272 0 obj
-<<
-/Length 23714
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(52)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F15 8.97 Tf 0 -32.23 TD[(Delete)-342(a)-343(w)28(atc)28(hp)-27(oin)27(t.)]TJ/F16 8.97 Tf 85.32 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.49 0 TD[(31)]TJ -197.81 -12.1 TD[(design)-342(goals)]TJ/F16 8.97 Tf 50.46 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 151.96 0 TD[(5)]TJ -202.42 -12.09 TD[(detailed)-342(log)]TJ/F16 8.97 Tf 49.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.29 0 TD[(36)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(diff)]TJ/F17 8.97 Tf 21.9 0 TD[(\014lename)-398(\014lename)]TJ/F16 8.97 Tf 72.39 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.52 0 TD[(28)]TJ -197.81 -12.1 TD[(directories)-342(matc)27(hing)-341(a)-343(pattern)]TJ/F16 8.97 Tf 124.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 73.43 0 TD[(28)]TJ -197.81 -12.09 TD[(directory)-342(names)-343(and)]TJ/F14 8.97 Tf 85.34 0 TD[(--tool)]TJ/F16 8.97 Tf 30.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 82.11 0 TD[(21)]TJ -197.81 -12.09 TD[(do)28(wnload)-342(a)-342(\014le)]TJ/F16 8.97 Tf 63.09 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.72 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(download)]TJ/F17 8.97 Tf 40.73 0 TD[(\014le)]TJ/F15 8.97 Tf 15.35 0 TD[([)]TJ/F17 8.97 Tf 5.63 0 TD[(spa)28(wnid)]TJ/F15 8.97 Tf 35.98 0 TD[(])]TJ/F16 8.97 Tf 4.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.31 0 TD[(27)]TJ -197.81 -12.09 TD[(do)28(wnload,)]TJ/F14 8.97 Tf 43.77 0 TD[(tip)]TJ/F16 8.97 Tf 15.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.28 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(dumplocals)]TJ/F16 8.97 Tf 50.14 0 TD[(expr)-202(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 147.67 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(dumprocs)]TJ/F16 8.97 Tf 40.73 0 TD[(expr)-241(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 157.08 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(dumpvars)]TJ/F16 8.97 Tf 40.73 0 TD[(expr)-241(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 157.08 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(dumpwatch)]TJ/F16 8.97 Tf 45.44 0 TD[(expr)-221(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 152.37 0 TD[(30)]TJ/F2 14.35 Tf -197.81 -32.75 TD[(E)]TJ/F14 8.97 Tf 0 -16.21 TD[(echo.exp)]TJ/F16 8.97 Tf 38.64 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 163.78 0 TD[(5)]TJ/F14 8.97 Tf -202.42 -12.09 TD[(ERROR)]TJ/F16 8.97 Tf 26.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 161.24 0 TD[(9,)-342(23)]TJ -187.57 -12.09 TD[(example)]TJ/F16 8.97 Tf 34.14 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.28 0 TD[(5)]TJ/F14 8.97 Tf -202.42 -12.1 TD[(exec_output)]TJ/F16 8.97 Tf 54.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.52 0 TD[(42)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(exec_prefix)]TJ/F15 8.97 Tf 51.78 0 TD[(,)-342(con\014gure)-343(options.)]TJ/F16 8.97 Tf 77.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 68.04 0 TD[(49)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(execute_anywhere)]TJ/F16 8.97 Tf 78.39 0 TD[(cmd)-52(line)-236(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 119.42 0 TD[(30)]TJ -197.81 -12.1 TD[(executing)-342(commands)-343(remotely)]TJ/F16 8.97 Tf 124.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 73.57 0 TD[(30)]TJ -197.81 -12.09 TD[(existing)-342(tests,)-343(running)]TJ/F16 8.97 Tf 90.72 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.7 0 TD[(3)]TJ -202.42 -12.1 TD[(exit)-342(co)-29(de)-342(from)]TJ/F14 8.97 Tf 61.21 0 TD[(runtest)]TJ/F16 8.97 Tf 34.01 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 107.2 0 TD[(9)]TJ -202.42 -12.09 TD[(exit)-342(pro)-29(cedure,)-342(tested)-343(to)-28(ols)]TJ/F16 8.97 Tf 111.72 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.09 0 TD[(31)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(exit_remote_shell)]TJ/F17 8.97 Tf 83.1 0 TD[(spa)28(wnid)]TJ/F16 8.97 Tf 33.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 80.9 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(exp)]TJ/F15 8.97 Tf 17.19 0 TD[(\014lename)-342(su\016x)]TJ/F16 8.97 Tf 59.53 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.09 0 TD[(21)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(expect)]TJ/F15 8.97 Tf 31.32 0 TD[(in)28(ternal)-342(tracing)]TJ/F16 8.97 Tf 63.48 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.01 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(expect)]TJ/F15 8.97 Tf 31.32 0 TD[(script)-342(names)]TJ/F16 8.97 Tf 53.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 117.58 0 TD[(1)]TJ/F14 8.97 Tf -202.42 -12.09 TD[(expect)]TJ/F15 8.97 Tf 31.32 0 TD[(scripting)-342(language)]TJ/F16 8.97 Tf 75.66 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.44 0 TD[(8)]TJ/F14 8.97 Tf -202.42 -12.09 TD[(expect_out\(buffer\))]TJ/F16 8.97 Tf 86.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.79 0 TD[(42)]TJ -197.81 -12.1 TD[(exp)-28(ected)-343(failure)]TJ/F16 8.97 Tf 66.06 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.51 0 TD[(9,)-342(25)]TJ -187.57 -12.09 TD[(exp)-28(ected)-343(failure,)-342(cancelling)]TJ/F16 8.97 Tf 111.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.66 0 TD[(26)]TJ/F2 14.35 Tf -197.81 -32.75 TD[(F)]TJ/F14 8.97 Tf 0 -16.21 TD[(FAIL)]TJ/F16 8.97 Tf 19.74 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 172.44 0 TD[(7,)-342(9)]TJ/F14 8.97 Tf -192.18 -12.09 TD[(fail)-342(")]TJ/F17 8.97 Tf 26.61 0 TD[(string)]TJ/F14 8.97 Tf 23.88 0 TD[(")]TJ/F16 8.97 Tf 5.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 141.81 0 TD[(24)]TJ -197.81 -12.1 TD[(failing)-342(test,)-343(exp)-28(ected)]TJ/F16 8.97 Tf 85.67 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.75 0 TD[(9)]TJ -202.42 -12.09 TD[(failing)-342(test,)-343(unexp)-28(ected)]TJ/F16 8.97 Tf 95.14 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 107.28 0 TD[(9)]TJ -202.42 -12.09 TD[(failure,)-342(exp)-29(ected)]TJ/F16 8.97 Tf 68.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.71 0 TD[(25)]TJ -197.81 -12.1 TD[(failure,)-342(POSIX)-343(de\014nition)]TJ/F16 8.97 Tf 102.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.55 0 TD[(7)]TJ -202.42 -12.09 TD[(\014lename)-342(for)-343(test)-342(\014les)]TJ/F16 8.97 Tf 85.58 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.23 0 TD[(21)]TJ -197.81 -12.09 TD[(\014les)-342(matc)27(hing)-341(a)-343(pattern)]TJ/F16 8.97 Tf 98.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.58 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(find)]TJ/F17 8.97 Tf 21.9 0 TD[(dir)-414(pattern)]TJ/F16 8.97 Tf 46.35 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.56 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(findfile)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(22)]TJ -197.81 -12.1 TD[(\014nding)-342(\014le)-343(di\013erences)]TJ/F16 8.97 Tf 89.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.29 0 TD[(28)]TJ -197.81 -12.09 TD[(future)-342(directions)]TJ/F16 8.97 Tf 68.26 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.16 0 TD[(8)]TJ/F2 14.35 Tf 22.55 539.88 TD[(G)]TJ/F14 8.97 Tf 0 -17.74 TD[(gdb.t00/echo.exp)]TJ/F16 8.97 Tf 77.08 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.34 0 TD[(5)]TJ/F14 8.97 Tf -202.42 -12.79 TD[(get_warning_threshold)]TJ/F16 8.97 Tf 101.8 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 96.01 0 TD[(24)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(getdirs)]TJ/F17 8.97 Tf 36.02 0 TD[(dir)]TJ/F16 8.97 Tf 14.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.61 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(getdirs)]TJ/F17 8.97 Tf 36.02 0 TD[(dir)-414(pattern)]TJ/F16 8.97 Tf 45.83 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.96 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(getenv)]TJ/F17 8.97 Tf 31.32 0 TD[(v)57(ar)]TJ/F16 8.97 Tf 14.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 151.51 0 TD[(29)]TJ -197.81 -12.79 TD[(getting)-342(en)27(vironmen)29(t)-342(v)57(ariables)]TJ/F16 8.97 Tf 120.79 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.02 0 TD[(29)]TJ -197.81 -12.79 TD[(GNA)85(TS)-341(bug)-343(n)28(um)28(b)-27(er)]TJ/F16 8.97 Tf 85.42 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.39 0 TD[(42)]TJ -197.81 -12.79 TD[(Granlund,)-342(T)85(orb)-57(jorn)]TJ/F16 8.97 Tf 81.47 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.34 0 TD[(39)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(grep)]TJ/F17 8.97 Tf 21.9 0 TD[(\014lename)-398(regexp)]TJ/F16 8.97 Tf 64.47 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.44 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -12.8 TD[(grep)]TJ/F17 8.97 Tf 21.9 0 TD[(\014lename)-398(regexp)]TJ/F14 8.97 Tf 66.6 0 TD[(line)]TJ/F16 8.97 Tf 19.72 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.59 0 TD[(28)]TJ/F2 14.35 Tf -197.81 -36.93 TD[(H)]TJ/F15 8.97 Tf 0 -17.73 TD[(help)-342(with)]TJ/F14 8.97 Tf 40.96 0 TD[(runtest)]TJ/F16 8.97 Tf 35.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.56 0 TD[(11)]TJ -197.81 -12.79 TD[(hin)28(ts)-342(on)-342(test)-343(case)-342(writing)]TJ/F16 8.97 Tf 103.28 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 94.53 0 TD[(41)]TJ -197.81 -12.8 TD[(host)-342(con\014g)-343(name,)-342(c)27(hanging)]TJ/F16 8.97 Tf 111.41 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.4 0 TD[(11)]TJ -197.81 -12.79 TD[(host)-342(con\014guration)-343(test)]TJ/F16 8.97 Tf 93.39 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.42 0 TD[(25)]TJ -197.81 -12.79 TD[(host,)-342(explained)]TJ/F16 8.97 Tf 63.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.69 0 TD[(49)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(host_triplet)]TJ/F16 8.97 Tf 58.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.99 0 TD[(17)]TJ/F2 14.35 Tf -197.81 -36.93 TD[(I)]TJ/F14 8.97 Tf 0 -17.74 TD[(ignoretests)]TJ/F16 8.97 Tf 54.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.52 0 TD[(17)]TJ -197.81 -12.79 TD[(init)-342(\014le)-343(name)]TJ/F16 8.97 Tf 55.03 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.78 0 TD[(22)]TJ -197.81 -12.79 TD[(init)-342(\014le,)-343(purp)-28(ose)]TJ/F16 8.97 Tf 67.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.94 0 TD[(22)]TJ -197.81 -12.79 TD[(initialization)]TJ/F16 8.97 Tf 51.56 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 146.25 0 TD[(22)]TJ -197.81 -12.79 TD[(input)-342(\014les)]TJ/F16 8.97 Tf 41.86 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 155.95 0 TD[(34)]TJ -197.81 -12.79 TD[(installed)-342(to)-29(ol)-342(name)]TJ/F16 8.97 Tf 80.03 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 117.78 0 TD[(24)]TJ -197.81 -12.79 TD[(installing)-342(DejaGn)27(u)]TJ/F16 8.97 Tf 77.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.63 0 TD[(49)]TJ -197.81 -12.79 TD[(in)28(ternal)-342(details)]TJ/F16 8.97 Tf 62.88 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.93 0 TD[(21)]TJ -197.81 -12.79 TD[(in)28(v)29(oking)]TJ/F16 8.97 Tf 36.7 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 165.72 0 TD[(9)]TJ -202.42 -12.79 TD[(IP)-342(net)27(w)29(ork)-342(pro)-28(cedures)]TJ/F16 8.97 Tf 93.58 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.23 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(isbuild)-342(")]TJ/F17 8.97 Tf 40.73 0 TD[(host)]TJ/F14 8.97 Tf 17.13 0 TD[(")]TJ/F16 8.97 Tf 6.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 133.77 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(ishost)-342(")]TJ/F17 8.97 Tf 36.02 0 TD[(host)]TJ/F14 8.97 Tf 17.13 0 TD[(")]TJ/F16 8.97 Tf 6.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.3 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(isnative)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(istarget)-342(")]TJ/F17 8.97 Tf 45.44 0 TD[(target)]TJ/F14 8.97 Tf 24.27 0 TD[(")]TJ/F16 8.97 Tf 6.79 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.31 0 TD[(25)]TJ/F2 14.35 Tf -197.81 -36.93 TD[(K)]TJ/F14 8.97 Tf 0 -17.74 TD[(kermit)]TJ/F17 8.97 Tf 31.32 0 TD[(p)-28(ort)-363(bps)]TJ/F16 8.97 Tf 36.61 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.88 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(kermit)]TJ/F15 8.97 Tf 28.25 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 79.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.8 0 TD[(11)]TJ ET 0 g 0 G
-endstream
-endobj
-273 0 obj
-<<
-/F1 9 0 R
-/F15 261 0 R
-/F16 264 0 R
-/F14 258 0 R
-/F17 267 0 R
-/F2 12 0 R
->>
-endobj
-271 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 273 0 R
->>
-endobj
-276 0 obj
-<<
-/Length 24305
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Index)]TJ 421.09 0 TD[(53)]TJ/F2 14.35 Tf -421.09 -97.38 TD[(L)]TJ/F15 8.97 Tf 0 -18.59 TD[(last)-342(command)-343(output)]TJ/F16 8.97 Tf 89.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.69 0 TD[(42)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(lib/debugger.exp)]TJ/F16 8.97 Tf 76.95 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.86 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(lib/remote.exp)]TJ/F16 8.97 Tf 67.89 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.92 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(lib/target.exp)]TJ/F16 8.97 Tf 67.89 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.92 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(lib/utils.exp)]TJ/F16 8.97 Tf 63.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.45 0 TD[(28)]TJ -197.81 -13.18 TD[(Lib)-28(es,)-343(Don)]TJ/F16 8.97 Tf 46.08 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 156.34 0 TD[(8)]TJ -202.42 -13.18 TD[(list,)-342(pruning)]TJ/F16 8.97 Tf 50.83 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 146.98 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(list_targets)]TJ/F16 8.97 Tf 58.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.99 0 TD[(29)]TJ -197.81 -13.18 TD[(lists)-342(supp)-29(orted)-342(targets)]TJ/F16 8.97 Tf 90.89 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 106.92 0 TD[(29)]TJ -197.81 -13.18 TD[(load)-342(library)-343(\014le)]TJ/F16 8.97 Tf 63.63 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.18 0 TD[(25)]TJ -197.81 -13.18 TD[(load)-342(pro)-29(cedure,)-342(tested)-343(to)-28(ols)]TJ/F16 8.97 Tf 112.61 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 85.2 0 TD[(31)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(load_lib)-342(")]TJ/F17 8.97 Tf 45.44 0 TD[(library-\014le)]TJ/F14 8.97 Tf 42.27 0 TD[(")]TJ/F16 8.97 Tf 6.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.59 0 TD[(25)]TJ -197.81 -13.18 TD[(lo)-28(cal)-343(`)]TJ/F14 8.97 Tf 24.32 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')]TJ/F16 8.97 Tf 5.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.6 0 TD[(19)]TJ -197.81 -13.18 TD[(log)-342(\014les,)-343(where)-342(to)-343(write)]TJ/F16 8.97 Tf 95.17 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 102.64 0 TD[(12)]TJ -197.81 -13.17 TD[(Lupton,)-342(Rob)-29(ert)]TJ/F16 8.97 Tf 64.26 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 133.55 0 TD[(43)]TJ/F2 14.35 Tf -197.81 -39.27 TD[(M)]TJ/F14 8.97 Tf 0 -18.6 TD[(make)]TJ/F15 8.97 Tf 21.9 0 TD[(builds)-342(part)-343(of)-342(tests)]TJ/F16 8.97 Tf 77.35 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.56 0 TD[(49)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(make)-342(check)]TJ/F16 8.97 Tf 46.88 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 155.54 0 TD[(3)]TJ -202.42 -13.17 TD[(master)-342(`)]TJ/F14 8.97 Tf 32.84 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')]TJ/F16 8.97 Tf 5.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.98 0 TD[(18)]TJ -197.81 -13.18 TD[(Menapace,)-342(Julia)]TJ/F16 8.97 Tf 67.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.65 0 TD[(6)]TJ/F14 8.97 Tf -202.42 -13.18 TD[(mondfe)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(32)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(mondfe)]TJ/F15 8.97 Tf 28.24 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 79.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.8 0 TD[(11)]TJ/F2 14.35 Tf -197.81 -39.27 TD[(N)]TJ/F15 8.97 Tf 0 -18.59 TD[(name)-342(\\DejaGn)27(u")]TJ/F16 8.97 Tf 72.03 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.39 0 TD[(6)]TJ -202.42 -13.18 TD[(name)-342(for)-343(remote)-342(test)-343(mac)28(hine)]TJ/F16 8.97 Tf 121.3 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.51 0 TD[(12)]TJ -197.81 -13.18 TD[(name)-342(transformations)]TJ/F16 8.97 Tf 89.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108 0 TD[(24)]TJ -197.81 -13.18 TD[(name,)-342(initialization)-343(mo)-28(dule)]TJ/F16 8.97 Tf 111.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 85.91 0 TD[(22)]TJ -197.81 -13.18 TD[(naming)-342(con)27(v)29(en)29(tions)]TJ/F16 8.97 Tf 81.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.63 0 TD[(21)]TJ -197.81 -13.18 TD[(naming)-342(tests)-343(to)-342(run)]TJ/F16 8.97 Tf 81.22 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.59 0 TD[(10)]TJ -197.81 -13.18 TD[(nativ)28(e)-342(con\014guration)]TJ/F16 8.97 Tf 81.8 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.62 0 TD[(4)]TJ -202.42 -13.18 TD[(nativ)28(e)-342(con\014guration)-342(test)]TJ/F16 8.97 Tf 99.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.43 0 TD[(25)]TJ -197.81 -13.18 TD[(net)28(w)29(ork)-342(\(IP\))-343(pro)-28(cedures)]TJ/F16 8.97 Tf 99.34 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.47 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(NOTE)]TJ/F16 8.97 Tf 19.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 167.95 0 TD[(9,)-342(24)]TJ/F14 8.97 Tf -187.57 -13.18 TD[(note)-342(")]TJ/F17 8.97 Tf 26.61 0 TD[(string)]TJ/F14 8.97 Tf 23.88 0 TD[(")]TJ/F16 8.97 Tf 5.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 141.81 0 TD[(24)]TJ/F2 14.35 Tf 27.16 589.86 TD[(O)]TJ/F14 8.97 Tf 0 -15.9 TD[(objdir)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(17)]TJ -197.81 -11.96 TD[(ob)-57(ject)-342(directory)]TJ/F16 8.97 Tf 66.96 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.85 0 TD[(12)]TJ -197.81 -11.96 TD[(Op)-28(ening)-343(a)-342(remote)-343(connection)]TJ/F16 8.97 Tf 120.37 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.44 0 TD[(26)]TJ -197.81 -11.96 TD[(op)-28(erating)-343(principles)]TJ/F16 8.97 Tf 81.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.48 0 TD[(21)]TJ -197.81 -11.95 TD[(option)-342(defaults)]TJ/F16 8.97 Tf 62.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.94 0 TD[(17)]TJ -197.81 -11.96 TD[(option)-342(list,)]TJ/F14 8.97 Tf 46.64 0 TD[(runtest)]TJ/F16 8.97 Tf 34.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.02 0 TD[(9)]TJ -202.42 -11.96 TD[(options)]TJ/F16 8.97 Tf 30.07 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 172.35 0 TD[(9)]TJ -202.42 -11.96 TD[(options)-342(for)]TJ/F14 8.97 Tf 46.41 0 TD[(runtest)]TJ/F15 8.97 Tf 32.95 0 TD[(,)-342(common)]TJ/F16 8.97 Tf 41.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.82 0 TD[(4)]TJ -202.42 -11.95 TD[(options,)-342(Tcl)-343(v)56(ariables)-341(for)-343(defaults)]TJ/F16 8.97 Tf 137.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 60.45 0 TD[(17)]TJ -197.81 -11.96 TD[(order)-342(of)-343(tests)]TJ/F16 8.97 Tf 54.97 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.84 0 TD[(21)]TJ -197.81 -11.96 TD[(Ousterhout,)-342(John)-343(K.)]TJ/F16 8.97 Tf 85.61 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.81 0 TD[(8)]TJ/F14 8.97 Tf -202.42 -11.95 TD[(outdir)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(17)]TJ -197.81 -11.96 TD[(output)-342(directory)]TJ/F16 8.97 Tf 68.11 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.7 0 TD[(12)]TJ -197.81 -11.96 TD[(output)-342(\014les)]TJ/F16 8.97 Tf 46.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 150.96 0 TD[(35)]TJ -197.81 -11.96 TD[(output,)-342(additional)]TJ/F16 8.97 Tf 75.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.91 0 TD[(13)]TJ -197.81 -11.95 TD[(o)28(v)29(erriding)-342(`)]TJ/F14 8.97 Tf 45.87 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')]TJ/F16 8.97 Tf 5.35 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.93 0 TD[(15)]TJ -197.81 -11.96 TD[(o)28(v)29(erview)]TJ/F16 8.97 Tf 37.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 165.19 0 TD[(1)]TJ/F2 14.35 Tf -202.42 -31.93 TD[(P)]TJ/F14 8.97 Tf 0 -15.91 TD[(PASS)]TJ/F16 8.97 Tf 19.74 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 172.44 0 TD[(6,)-342(9)]TJ/F14 8.97 Tf -192.18 -11.96 TD[(pass)-342(")]TJ/F17 8.97 Tf 26.61 0 TD[(string)]TJ/F14 8.97 Tf 23.88 0 TD[(")]TJ/F16 8.97 Tf 5.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 141.81 0 TD[(24)]TJ -197.81 -11.95 TD[(path)-342(lo)-29(okup)]TJ/F16 8.97 Tf 50.54 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.27 0 TD[(28)]TJ -197.81 -11.96 TD[(pattern)-342(matc)27(h,)-341(directory)]TJ/F16 8.97 Tf 102.07 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.74 0 TD[(28)]TJ -197.81 -11.96 TD[(pattern)-342(matc)27(h,)-341(\014lenames)]TJ/F16 8.97 Tf 102.46 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.35 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -11.95 TD[(perror)-342(")]TJ/F17 8.97 Tf 36.02 0 TD[(string)-428(n)27(um)29(b)-28(er)]TJ/F14 8.97 Tf 58.09 0 TD[(")]TJ/F16 8.97 Tf 5.49 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.21 0 TD[(23)]TJ -197.81 -11.96 TD[(p)-28(ersonal)-343(con\014g)-342(`)]TJ/F14 8.97 Tf 65.86 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')]TJ/F16 8.97 Tf 4.07 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.22 0 TD[(20)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(pop_host)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(pop_target)]TJ/F16 8.97 Tf 49.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.05 0 TD[(29)]TJ -197.81 -11.95 TD[(p)-28(orting)-343(to)-342(a)-343(new)-342(host)]TJ/F16 8.97 Tf 89.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.29 0 TD[(48)]TJ -197.81 -11.96 TD[(POSIX)-342(conformance)]TJ/F16 8.97 Tf 84.94 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 117.48 0 TD[(6)]TJ/F14 8.97 Tf -202.42 -11.96 TD[(prefix)]TJ/F15 8.97 Tf 28.25 0 TD[(,)-342(con\014gure)-343(options)]TJ/F16 8.97 Tf 75.4 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 94.16 0 TD[(49)]TJ -197.81 -11.96 TD[(Prin)28(t)-342(a)-342(bac)27(ktrace)]TJ/F16 8.97 Tf 72.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.66 0 TD[(31)]TJ -197.81 -11.95 TD[(Prin)28(t)-342(global)-342(v)56(ariable)-342(v)56(alues)]TJ/F16 8.97 Tf 111.75 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.06 0 TD[(30)]TJ -197.81 -11.96 TD[(Prin)28(t)-342(lo)-28(cal)-343(v)56(ariable)-341(v)56(alue)]TJ/F16 8.97 Tf 102.89 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 94.92 0 TD[(30)]TJ -197.81 -11.96 TD[(Prin)28(t)-342(pro)-28(cedure)-343(b)-28(o)-29(dies)]TJ/F16 8.97 Tf 94.22 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.59 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(print)]TJ/F16 8.97 Tf 26.61 0 TD[(var)-293(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 171.2 0 TD[(31)]TJ -197.81 -11.95 TD[(Prin)28(t)-342(w)28(atc)29(hp)-28(oin)28(ts)]TJ/F16 8.97 Tf 73.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 124.63 0 TD[(30)]TJ -197.81 -11.96 TD[(Prin)28(ting)-342(v)57(ariable)-342(v)56(alues)]TJ/F16 8.97 Tf 97.79 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 100.02 0 TD[(31)]TJ -197.81 -11.96 TD[(PRMS)-342(bug)-343(n)28(um)28(b)-27(er)]TJ/F16 8.97 Tf 80.53 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 117.28 0 TD[(42)]TJ/F14 8.97 Tf -197.81 -11.95 TD[(prms_id)]TJ/F16 8.97 Tf 33.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 163.83 0 TD[(42)]TJ -197.81 -11.96 TD[(problem,)-342(detected)-343(b)28(y)-342(test)-342(case)]TJ/F16 8.97 Tf 124.65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.77 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -11.96 TD[(prune)]TJ/F17 8.97 Tf 26.61 0 TD[(list)-362(pattern)]TJ/F16 8.97 Tf 46.47 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 124.73 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(prune_system_crud)]TJ/F17 8.97 Tf 83.1 0 TD[(system)-342(text)]TJ/F16 8.97 Tf 49.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 65.19 0 TD[(29)]TJ -197.81 -11.95 TD[(pruning)-342(system)-343(output,)-342(examining)-343(program)-342(output)]TJ/F16 8.97 Tf 20.18 -11.96 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 177.63 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(psource)]TJ/F17 8.97 Tf 36.02 0 TD[(\014lename)]TJ/F16 8.97 Tf 36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.79 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -11.95 TD[(push_host)]TJ/F16 8.97 Tf 45.44 0 TD[(name)-193(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 152.37 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(push_target)]TJ/F16 8.97 Tf 54.85 0 TD[(name)-397(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 142.96 0 TD[(29)]TJ ET 0 g 0 G
-endstream
-endobj
-277 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F15 261 0 R
-/F16 264 0 R
-/F14 258 0 R
-/F17 267 0 R
->>
-endobj
-275 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 277 0 R
->>
-endobj
-280 0 obj
-<<
-/Length 22673
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(54)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -92.76 TD[(Q)]TJ/F14 8.97 Tf 0 -18.42 TD[(quit)]TJ/F16 8.97 Tf 20.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 177.43 0 TD[(31)]TJ -197.81 -13.11 TD[(Quiting)-342(DejaGn)27(u)]TJ/F16 8.97 Tf 71.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.91 0 TD[(31)]TJ/F2 14.35 Tf -197.81 -38.8 TD[(R)]TJ/F15 8.97 Tf 0 -18.42 TD[(ranlib)-342(a)-343(\014le)]TJ/F16 8.97 Tf 47.09 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 150.72 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -13.11 TD[(reboot)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(17)]TJ -197.81 -13.1 TD[(reb)-28(o)-29(oting)-342(remote)-343(targets)]TJ/F16 8.97 Tf 102.35 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.46 0 TD[(12)]TJ -197.81 -13.1 TD[(regular)-342(expression,)-343(\014le)-342(con)27(ten)29(ts)]TJ/F16 8.97 Tf 128.66 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 69.15 0 TD[(28)]TJ -197.81 -13.11 TD[(remote)-342(connection)-343(pro)-28(cedures)]TJ/F16 8.97 Tf 121.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.63 0 TD[(26)]TJ -197.81 -13.1 TD[(remote)-342(connection,)-343(ending)]TJ/F16 8.97 Tf 107.56 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.25 0 TD[(27)]TJ -197.81 -13.1 TD[(remote)-342(test)-343(mac)28(hine)-342(name)]TJ/F16 8.97 Tf 107.71 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.1 0 TD[(12)]TJ -197.81 -13.1 TD[(remote)-342(testb)-29(ed,)-342(connecting)-343(to)]TJ/F16 8.97 Tf 121.16 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.65 0 TD[(11)]TJ -197.81 -13.11 TD[(remote)-342(testing)]TJ/F16 8.97 Tf 59.55 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.26 0 TD[(32)]TJ -197.81 -13.1 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(kermit)]TJ/F16 8.97 Tf 30.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.08 0 TD[(11)]TJ -197.81 -13.1 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(mondfe)]TJ/F16 8.97 Tf 30.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.08 0 TD[(11)]TJ -197.81 -13.1 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(rlogin)]TJ/F16 8.97 Tf 30.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.08 0 TD[(11)]TJ -197.81 -13.11 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(rsh)]TJ/F16 8.97 Tf 17.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.68 0 TD[(11)]TJ -197.81 -13.1 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(telnet)]TJ/F16 8.97 Tf 30.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.08 0 TD[(11)]TJ -197.81 -13.1 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(tip)]TJ/F16 8.97 Tf 17.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.68 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(remote.exp)]TJ/F16 8.97 Tf 49.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.05 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -13.11 TD[(remote_close)]TJ/F17 8.97 Tf 59.56 0 TD[(shellid)]TJ/F16 8.97 Tf 26.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.38 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(remote_open)]TJ/F17 8.97 Tf 54.85 0 TD[(t)28(yp)-28(e)]TJ/F16 8.97 Tf 20.96 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 122 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(rlogin)]TJ/F17 8.97 Tf 31.32 0 TD[(hostname)]TJ/F16 8.97 Tf 40.93 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.56 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(rlogin)]TJ/F15 8.97 Tf 28.24 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 79.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.8 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.11 TD[(rsh)]TJ/F17 8.97 Tf 17.19 0 TD[(hostname)]TJ/F16 8.97 Tf 41.46 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 139.16 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(rsh)]TJ/F15 8.97 Tf 14.12 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 80.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.4 0 TD[(11)]TJ -197.81 -13.1 TD[(running)]TJ/F16 8.97 Tf 33.25 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 169.17 0 TD[(9)]TJ -202.42 -13.1 TD[(running)-342(tests)]TJ/F16 8.97 Tf 54.95 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.47 0 TD[(3)]TJ/F14 8.97 Tf -202.42 -13.11 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(description)]TJ/F16 8.97 Tf 45.64 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.76 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -13.1 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(exit)-342(co)-29(de)]TJ/F16 8.97 Tf 37.41 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 128.99 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -13.1 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option)-342(defaults)]TJ/F16 8.97 Tf 62.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.5 0 TD[(17)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option)-342(list)]TJ/F16 8.97 Tf 41.92 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 124.48 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -13.11 TD[(runtest)]TJ/F15 8.97 Tf 32.95 0 TD[(,)-342(listing)-343(options)]TJ/F16 8.97 Tf 65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.86 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(runtest)]TJ/F15 8.97 Tf 32.95 0 TD[(,)-342(most)-343(common)-342(options)]TJ/F16 8.97 Tf 96.25 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 73.22 0 TD[(4)]TJ/F14 8.97 Tf -202.42 -13.1 TD[(runtest)]TJ/F15 8.97 Tf 32.95 0 TD[(,)-342(v)56(ariable)-342(defns)-342(on)-343(cmdline)]TJ/F16 8.97 Tf 109.57 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 55.29 0 TD[(10)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(runtest.exp)]TJ/F16 8.97 Tf 54.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.52 0 TD[(21)]TJ/F14 8.97 Tf -197.81 -13.11 TD[(runtest_file_p)]TJ/F17 8.97 Tf 68.97 0 TD[(run)28(tests)-382(testcase)]TJ/F16 8.97 Tf 69.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 59.82 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(runtests)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(17)]TJ/F2 14.35 Tf 27.16 518.26 TD[(S)]TJ/F15 8.97 Tf 0 -18.53 TD[(searc)28(hing)-342(\014le)-342(con)27(ten)29(ts)]TJ/F16 8.97 Tf 90.06 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 107.75 0 TD[(28)]TJ -197.81 -13.15 TD[(selecting)-342(a)-343(range)-342(of)-343(tests)]TJ/F16 8.97 Tf 101.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.85 0 TD[(10,)-342(29)]TJ -182.97 -13.16 TD[(selecting)-342(tests)-343(for)-342(a)-343(to)-28(ol)]TJ/F16 8.97 Tf 98.41 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.4 0 TD[(10)]TJ -197.81 -13.15 TD[(serial)-342(do)27(wnload,)]TJ/F14 8.97 Tf 67.91 0 TD[(tip)]TJ/F16 8.97 Tf 16.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 113.14 0 TD[(27)]TJ -197.81 -13.15 TD[(serial)-342(line)-343(connection,)]TJ/F14 8.97 Tf 90.19 0 TD[(kermit)]TJ/F16 8.97 Tf 30.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.5 0 TD[(27)]TJ -197.81 -13.15 TD[(serial)-342(line)-343(connection,)]TJ/F14 8.97 Tf 90.19 0 TD[(tip)]TJ/F16 8.97 Tf 16.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.1 0 TD[(27)]TJ -197.81 -13.15 TD[(set)-342(curren)27(t)-341(host)]TJ/F16 8.97 Tf 64.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 133.36 0 TD[(29)]TJ -197.81 -13.15 TD[(set)-342(curren)27(t)-341(target)]TJ/F16 8.97 Tf 72.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.43 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(set_warning_threshold)]TJ/F17 8.97 Tf 101.93 0 TD[(threshold)]TJ/F16 8.97 Tf 39.92 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 55.96 0 TD[(24)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(setenv)]TJ/F17 8.97 Tf 31.32 0 TD[(v)57(ar)-414(v)56(al)]TJ/F16 8.97 Tf 28.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 137.5 0 TD[(29)]TJ -197.81 -13.15 TD[(setting)-342(defaults)-343(for)-342(DejaGn)27(u)-341(v)56(ariables)]TJ/F16 8.97 Tf 155.01 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 42.8 0 TD[(15)]TJ -197.81 -13.15 TD[(setting)-342(en)27(vironmen)29(t)-342(v)57(ariables)]TJ/F16 8.97 Tf 120.3 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.51 0 TD[(29)]TJ -197.81 -13.15 TD[(setting)-342(up)-343(targets)]TJ/F16 8.97 Tf 72.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.04 0 TD[(22)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(setup_xfail)-342(")]TJ/F17 8.97 Tf 59.56 0 TD[(con\014g)]TJ/F15 8.97 Tf 27.39 0 TD[([)]TJ/F17 8.97 Tf 2.56 0 TD[(bugid)]TJ/F15 8.97 Tf 22.88 0 TD[(])]TJ/F14 8.97 Tf 2.56 0 TD[(")]TJ/F16 8.97 Tf 5.97 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.89 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(site.exp)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(15)]TJ -197.81 -13.15 TD[(`)]TJ/F14 8.97 Tf 2.56 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')-342(for)-343(all)-342(of)-343(DejaGn)28(u)]TJ/F16 8.97 Tf 80.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.21 0 TD[(18)]TJ -197.81 -13.16 TD[(`)]TJ/F14 8.97 Tf 2.56 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')-342(for)-343(eac)28(h)-342(p)-28(erson)]TJ/F16 8.97 Tf 67.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.69 0 TD[(20)]TJ -197.81 -13.15 TD[(`)]TJ/F14 8.97 Tf 2.56 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')-342(for)-343(eac)28(h)-342(to)-28(ol)]TJ/F16 8.97 Tf 58.13 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.46 0 TD[(19)]TJ -197.81 -13.15 TD[(`)]TJ/F14 8.97 Tf 2.56 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(',)-342(m)27(ultiple)]TJ/F16 8.97 Tf 44.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 113.44 0 TD[(15)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(slay)]TJ/F17 8.97 Tf 21.9 0 TD[(name)]TJ/F16 8.97 Tf 24.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 151.81 0 TD[(28)]TJ -197.81 -13.15 TD[(sla)28(ying)-342(pro)-28(cesses)]TJ/F16 8.97 Tf 68.72 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.09 0 TD[(28)]TJ -197.81 -13.15 TD[(source)-342(directory)]TJ/F16 8.97 Tf 67.13 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.68 0 TD[(12)]TJ -197.81 -13.15 TD[(sourcing)-342(Tcl)-343(\014les)]TJ/F16 8.97 Tf 69.05 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 128.76 0 TD[(28)]TJ -197.81 -13.15 TD[(sp)-28(ecial)-343(v)56(ariables)]TJ/F16 8.97 Tf 67.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.3 0 TD[(42)]TJ -197.81 -13.15 TD[(sp)-28(ecifying)-343(target)-342(name)]TJ/F16 8.97 Tf 93.75 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.06 0 TD[(11)]TJ -197.81 -13.15 TD[(sp)-28(ecifying)-343(the)-342(build)-343(con\014g)-342(name)]TJ/F16 8.97 Tf 132.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 65 0 TD[(11)]TJ -197.81 -13.15 TD[(sp)-28(ecifying)-343(the)-342(host)-343(con\014g)-342(name)]TJ/F16 8.97 Tf 128.86 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 68.95 0 TD[(11)]TJ -197.81 -13.15 TD[(sp)-28(ecifying)-343(the)-342(target)-343(con\014guration)]TJ/F16 8.97 Tf 141.28 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 56.53 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(srcdir)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(17)]TJ -197.81 -13.15 TD[(standard)-342(conformance:)-457(POSIX)-342(1003.3)]TJ/F16 8.97 Tf 155.17 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 47.25 0 TD[(6)]TJ -202.42 -13.15 TD[(start)-342(pro)-29(cedure,)-342(tested)-343(to)-28(ols)]TJ/F16 8.97 Tf 115.86 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.95 0 TD[(31)]TJ -197.81 -13.16 TD[(starting)-342(in)27(teractiv)29(e)-342(to)-28(ols)]TJ/F16 8.97 Tf 101.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.96 0 TD[(22)]TJ -197.81 -13.15 TD[(starting)-342(the)-343(tcl)-342(debugger)]TJ/F16 8.97 Tf 102.34 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.47 0 TD[(13)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(subdir)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(42)]TJ -197.81 -13.15 TD[(success,)-342(POSIX)-343(de\014nition)]TJ/F16 8.97 Tf 106.53 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.89 0 TD[(6)]TJ -202.42 -13.15 TD[(successful)-342(test)]TJ/F16 8.97 Tf 59.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.32 0 TD[(9)]TJ -202.42 -13.15 TD[(successful)-342(test,)-343(unexp)-28(ected)]TJ/F16 8.97 Tf 110.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.57 0 TD[(9)]TJ -202.42 -13.15 TD[(su\016x,)]TJ/F14 8.97 Tf 26.93 0 TD[(expect)]TJ/F15 8.97 Tf 31.32 0 TD[(scripts)]TJ/F16 8.97 Tf 27.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.4 0 TD[(1)]TJ -202.42 -13.15 TD[(summary)-342(log)]TJ/F16 8.97 Tf 54.42 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.39 0 TD[(35)]TJ ET 0 g 0 G
-endstream
-endobj
-281 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F14 258 0 R
-/F16 264 0 R
-/F15 261 0 R
-/F17 267 0 R
->>
-endobj
-279 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 281 0 R
->>
-endobj
-284 0 obj
-<<
-/Length 26944
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Index)]TJ 421.09 0 TD[(55)]TJ/F2 14.35 Tf -421.09 -24.04 TD[(T)]TJ/F15 8.97 Tf 0 -15.91 TD[(target)-342(con\014guration)-343(test)]TJ/F16 8.97 Tf 99.14 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.67 0 TD[(25)]TJ -197.81 -11.96 TD[(target)-342(con\014guration,)-343(sp)-28(ecifying)]TJ/F16 8.97 Tf 128.09 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 69.72 0 TD[(12)]TJ -197.81 -11.95 TD[(target)-342(dep)-29(enden)28(t)-342(pro)-28(cedures)]TJ/F16 8.97 Tf 116.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.36 0 TD[(31)]TJ -197.81 -11.96 TD[(target)-342(mac)27(hine)-341(name)]TJ/F16 8.97 Tf 86.04 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.77 0 TD[(11)]TJ -197.81 -11.96 TD[(target,)-342(explained)]TJ/F16 8.97 Tf 68.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 128.94 0 TD[(49)]TJ/F14 8.97 Tf -197.81 -11.95 TD[(target.exp)]TJ/F16 8.97 Tf 49.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.05 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(target_triplet)]TJ/F16 8.97 Tf 67.89 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.92 0 TD[(17)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(targetname)]TJ/F16 8.97 Tf 49.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.05 0 TD[(17)]TJ -197.81 -11.96 TD[(targets)]TJ/F16 8.97 Tf 29.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.63 0 TD[(32)]TJ -197.81 -11.95 TD[(tcl)]TJ/F16 8.97 Tf 11.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 190.57 0 TD[(8)]TJ -202.42 -11.96 TD[(tcl)-342(debugger)]TJ/F16 8.97 Tf 51.06 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 146.75 0 TD[(13)]TJ -197.81 -11.96 TD[(Tcl)-342(v)56(ariables)-342(for)-342(option)-343(defaults)]TJ/F16 8.97 Tf 129.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 67.91 0 TD[(17)]TJ -197.81 -11.96 TD[(Tcl)-342(v)56(ariables,)-342(de\014ning)-342(for)]TJ/F14 8.97 Tf 106.08 0 TD[(runtest)]TJ/F16 8.97 Tf 35.42 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 56.31 0 TD[(10)]TJ/F17 8.97 Tf -197.81 -11.95 TD[(tclv)57(ar)]TJ/F14 8.97 Tf 23.45 0 TD[(=)]TJ/F17 8.97 Tf 4.7 0 TD[(v)57(alue)]TJ/F16 8.97 Tf 22.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 146.89 0 TD[(10)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(telnet)]TJ/F17 8.97 Tf 31.32 0 TD[(hostname)-398(p)-29(ort)]TJ/F16 8.97 Tf 62.04 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.45 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(telnet)]TJ/F15 8.97 Tf 28.24 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 79.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.8 0 TD[(11)]TJ -197.81 -11.96 TD[(terminating)-342(remote)-343(connection)]TJ/F16 8.97 Tf 125.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 72.57 0 TD[(27)]TJ -197.81 -11.95 TD[(test)-342(case)-343(cannot)-342(run)]TJ/F16 8.97 Tf 82.37 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.05 0 TD[(9)]TJ -202.42 -11.96 TD[(test)-342(case)-343(messages)]TJ/F16 8.97 Tf 76.16 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126.26 0 TD[(9)]TJ -202.42 -11.96 TD[(test)-342(case)-343(w)28(arnings)]TJ/F16 8.97 Tf 75.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126.43 0 TD[(9)]TJ -202.42 -11.95 TD[(test)-342(case,)-343(debugging)]TJ/F16 8.97 Tf 81.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.83 0 TD[(40)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(declaring)-342(am)27(biguit)29(y)]TJ/F16 8.97 Tf 120.93 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.88 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(declaring)-342(failure)]TJ/F16 8.97 Tf 106.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.83 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(declaring)-342(no)-343(supp)-28(ort)]TJ/F16 8.97 Tf 124.94 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 72.87 0 TD[(24)]TJ -197.81 -11.95 TD[(test)-342(case,)-343(declaring)-342(no)-343(test)]TJ/F16 8.97 Tf 108.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.66 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(declaring)-342(success)]TJ/F16 8.97 Tf 110.63 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 87.18 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(ERR)28(OR)-342(in)]TJ/F16 8.97 Tf 85.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.99 0 TD[(23)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(exp)-28(ecting)-343(failure)]TJ/F16 8.97 Tf 107.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.82 0 TD[(25)]TJ -197.81 -11.95 TD[(test)-342(case,)-343(informational)-342(messages)]TJ/F16 8.97 Tf 134.2 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 63.61 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(W)114(ARNING)-342(in)]TJ/F16 8.97 Tf 98.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.96 0 TD[(23)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(W)114(ARNING)-342(threshold)]TJ/F16 8.97 Tf 128.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 68.82 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(writing)]TJ/F16 8.97 Tf 71.48 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126.33 0 TD[(39)]TJ -197.81 -11.95 TD[(test)-342(cases,)-343(debug)-342(log)]TJ/F16 8.97 Tf 84.95 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.86 0 TD[(11)]TJ -197.81 -11.96 TD[(test)-342(directories,)-343(naming)]TJ/F16 8.97 Tf 97.63 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 100.18 0 TD[(21)]TJ -197.81 -11.96 TD[(test)-342(\014lename)]TJ/F16 8.97 Tf 54.03 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.78 0 TD[(21)]TJ -197.81 -11.95 TD[(test)-342(output,)-343(displa)28(ying)-342(all)]TJ/F16 8.97 Tf 106.57 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.24 0 TD[(10)]TJ -197.81 -11.96 TD[(test)-342(programs,)-343(auxiliary)]TJ/F16 8.97 Tf 98.4 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.41 0 TD[(12)]TJ -197.81 -11.96 TD[(test)-342(suite)-343(distributions)]TJ/F16 8.97 Tf 93.44 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.37 0 TD[(49)]TJ -197.81 -11.96 TD[(test,)-342(failing)]TJ/F16 8.97 Tf 46.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 155.57 0 TD[(9)]TJ -202.42 -11.95 TD[(test,)-342(successful)]TJ/F16 8.97 Tf 60.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.04 0 TD[(9)]TJ -202.42 -11.96 TD[(test,)-342(unresolv)27(ed)-341(outcome)]TJ/F16 8.97 Tf 102.48 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.94 0 TD[(9)]TJ -202.42 -11.96 TD[(test,)-342(unsupp)-29(orted)]TJ/F16 8.97 Tf 72.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.66 0 TD[(9)]TJ -202.42 -11.96 TD[(tests,)-342(running)]TJ/F16 8.97 Tf 56.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 146.19 0 TD[(3)]TJ -202.42 -11.95 TD[(tests,)-342(running)-343(order)]TJ/F16 8.97 Tf 81.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.57 0 TD[(21)]TJ -197.81 -11.96 TD[(tests,)-342(running)-343(sp)-28(eci\014cally)]TJ/F16 8.97 Tf 104.7 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 78.27 0 TD[(10,)-342(29)]TJ -182.97 -11.96 TD[(TET)]TJ/F16 8.97 Tf 20.88 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 181.54 0 TD[(6)]TJ/F14 8.97 Tf -202.42 -11.96 TD[(tip)]TJ/F17 8.97 Tf 17.19 0 TD[(p)-28(ort)]TJ/F16 8.97 Tf 19.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 160.85 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -11.95 TD[(tip)]TJ/F15 8.97 Tf 14.12 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 80.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.4 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(tip_download)]TJ/F17 8.97 Tf 59.56 0 TD[(spa)28(wnid)-380(\014le)]TJ/F16 8.97 Tf 51.08 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 87.17 0 TD[(27)]TJ/F14 8.97 Tf 27.16 555.85 TD[(tool)]TJ/F16 8.97 Tf 20.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 177.43 0 TD[(17)]TJ -197.81 -12.53 TD[(to)-28(ol)-343(command)-342(language)]TJ/F16 8.97 Tf 98.32 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.1 0 TD[(8)]TJ -202.42 -12.52 TD[(to)-28(ol)-343(initialization)]TJ/F16 8.97 Tf 71.8 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126.01 0 TD[(22)]TJ -197.81 -12.53 TD[(to)-28(ol)-343(name,)-342(as)-343(installed)]TJ/F16 8.97 Tf 93.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.3 0 TD[(24)]TJ -197.81 -12.52 TD[(to)-28(ol)-343(names)-342(and)-343(naming)-342(con)27(v)29(en)28(tions)]TJ/F16 8.97 Tf 146.28 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 51.53 0 TD[(21)]TJ/F17 8.97 Tf -197.81 -12.53 TD[(to)-28(ol)]TJ/F14 8.97 Tf 15.96 0 TD[(_exit)]TJ/F16 8.97 Tf 25.65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 156.2 0 TD[(31)]TJ/F17 8.97 Tf -197.81 -12.52 TD[(to)-28(ol)]TJ/F14 8.97 Tf 15.96 0 TD[(_load)]TJ/F16 8.97 Tf 25.65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 156.2 0 TD[(31)]TJ/F17 8.97 Tf -197.81 -12.52 TD[(to)-28(ol)]TJ/F14 8.97 Tf 15.96 0 TD[(_start)]TJ/F16 8.97 Tf 30.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 151.67 0 TD[(31)]TJ/F17 8.97 Tf -197.81 -12.53 TD[(to)-28(ol)]TJ/F14 8.97 Tf 15.96 0 TD[(_version)]TJ/F16 8.97 Tf 39.25 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.6 0 TD[(32)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(tracelevel)]TJ/F16 8.97 Tf 49.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.05 0 TD[(17)]TJ -197.81 -12.53 TD[(tracing)-342(Tcl)-343(commands)]TJ/F16 8.97 Tf 93.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.71 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(transform)]TJ/F16 8.97 Tf 45.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 152.58 0 TD[(22)]TJ/F14 8.97 Tf -197.81 -12.53 TD[(transform)-342(")]TJ/F17 8.97 Tf 50.15 0 TD[(to)-28(olname)]TJ/F14 8.97 Tf 37.62 0 TD[(")]TJ/F16 8.97 Tf 6.48 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.56 0 TD[(24)]TJ -197.81 -12.52 TD[(transform)-342(to)-29(ol)-342(name)]TJ/F16 8.97 Tf 84.92 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.89 0 TD[(24)]TJ -197.81 -12.52 TD[(turning)-342(on)-343(output)]TJ/F16 8.97 Tf 75.66 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 122.15 0 TD[(13)]TJ/F2 14.35 Tf -197.81 -35.34 TD[(U)]TJ/F15 8.97 Tf 0 -17.15 TD[(unexp)-28(ected)-343(success)]TJ/F16 8.97 Tf 77.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 124.52 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -12.52 TD[(UNRESOLVED)]TJ/F16 8.97 Tf 49.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.06 0 TD[(7,)-342(9)]TJ/F14 8.97 Tf -192.18 -12.53 TD[(unresolved)-342(")]TJ/F17 8.97 Tf 54.85 0 TD[(string)]TJ/F14 8.97 Tf 23.89 0 TD[(")]TJ/F16 8.97 Tf 6.64 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.43 0 TD[(24)]TJ -197.81 -12.52 TD[(unset)-342(curren)27(t)-341(host)]TJ/F16 8.97 Tf 76.11 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.7 0 TD[(29)]TJ -197.81 -12.53 TD[(unset)-342(curren)27(t)-341(target)]TJ/F16 8.97 Tf 81.86 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.95 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(unsetenv)]TJ/F17 8.97 Tf 40.73 0 TD[(v)57(ar)]TJ/F16 8.97 Tf 14.64 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.44 0 TD[(29)]TJ -197.81 -12.53 TD[(unsetting)-342(en)27(vironmen)29(t)-342(v)57(ariables)]TJ/F16 8.97 Tf 129.78 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 68.03 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(UNSUPPORTED)]TJ/F16 8.97 Tf 53.65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.53 0 TD[(7,)-342(9)]TJ/F14 8.97 Tf -192.18 -12.52 TD[(unsupported)-342(")]TJ/F17 8.97 Tf 59.56 0 TD[(string)]TJ/F14 8.97 Tf 23.88 0 TD[(")]TJ/F16 8.97 Tf 6.47 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 107.9 0 TD[(24)]TJ -197.81 -12.53 TD[(unsupp)-28(orted)-343(test)]TJ/F16 8.97 Tf 69.3 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 133.12 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -12.52 TD[(UNTESTED)]TJ/F16 8.97 Tf 40.06 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 152.12 0 TD[(7,)-342(9)]TJ/F14 8.97 Tf -192.18 -12.53 TD[(untested)-342(")]TJ/F17 8.97 Tf 45.44 0 TD[(string)]TJ/F14 8.97 Tf 23.88 0 TD[(")]TJ/F16 8.97 Tf 6.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.5 0 TD[(24)]TJ -197.81 -12.52 TD[(un)28(tested)-342(prop)-28(erties)]TJ/F16 8.97 Tf 80.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 122.09 0 TD[(9)]TJ -202.42 -12.53 TD[(utilities,)-342(loading)-343(from)-342(init)-343(\014le)]TJ/F16 8.97 Tf 120.39 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.42 0 TD[(23)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(utils.exp)]TJ/F16 8.97 Tf 45.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 152.58 0 TD[(28)]TJ/F2 14.35 Tf -197.81 -35.33 TD[(V)]TJ/F15 8.97 Tf 0 -17.16 TD[(v)57(ariables)-342(for)-343(all)-342(tests)]TJ/F16 8.97 Tf 85.48 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.33 0 TD[(42)]TJ -197.81 -12.52 TD[(v)57(ariables)-342(for)-343(option)-342(defaults)]TJ/F16 8.97 Tf 115.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 82.63 0 TD[(17)]TJ -197.81 -12.52 TD[(v)57(ariables)-342(of)-343(DejaGn)28(u,)-342(defaults)]TJ/F16 8.97 Tf 124.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 73.71 0 TD[(15)]TJ/F14 8.97 Tf -197.81 -12.53 TD[(verbose)]TJ/F16 8.97 Tf 33.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 163.83 0 TD[(17)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(verbose)]TJ/F15 8.97 Tf 36.02 0 TD[([)]TJ/F14 8.97 Tf 2.56 0 TD[(-log)]TJ/F15 8.97 Tf 18.83 0 TD[(])-342([)]TJ/F14 8.97 Tf 8.19 0 TD[(-n)]TJ/F15 8.97 Tf 9.42 0 TD[(])-342([)]TJ/F14 8.97 Tf 8.19 0 TD[(--)]TJ/F15 8.97 Tf 9.42 0 TD[(])]TJ/F14 8.97 Tf 5.63 0 TD[(")]TJ/F17 8.97 Tf 4.7 0 TD[(string)]TJ/F14 8.97 Tf 23.89 0 TD[(")]TJ/F17 8.97 Tf 7.78 0 TD[(n)28(um)29(b)-28(er)]TJ/F16 8.97 Tf 33.31 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 29.87 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -12.53 TD[(verbose)]TJ/F15 8.97 Tf 36.02 0 TD[(builtin)-342(function)]TJ/F16 8.97 Tf 63.54 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.25 0 TD[(26)]TJ -197.81 -12.52 TD[(v)28(ersion)-342(n)28(um)29(b)-28(ers)]TJ/F16 8.97 Tf 67.65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.16 0 TD[(13)]TJ -197.81 -12.53 TD[(v)28(ersion)-342(pro)-28(cedure,)-343(tested)-342(to)-29(ols)]TJ/F16 8.97 Tf 124.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 72.99 0 TD[(32)]TJ -197.81 -12.52 TD[(VxW)85(orks,)-341(link)-343(with)-343(`)]TJ/F14 8.97 Tf 84.54 0 TD[(-r)]TJ/F15 8.97 Tf 9.42 0 TD[(')]TJ/F16 8.97 Tf 4.49 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.36 0 TD[(33)]TJ ET 0 g 0 G
-endstream
-endobj
-285 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F15 261 0 R
-/F16 264 0 R
-/F14 258 0 R
-/F17 267 0 R
->>
-endobj
-283 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 285 0 R
->>
-endobj
-288 0 obj
-<<
-/Length 5533
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(56)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -31.59 TD[(W)]TJ/F14 8.97 Tf 0 -16.19 TD[(WARNING)]TJ/F16 8.97 Tf 35.4 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 152.17 0 TD[(9,)-342(23)]TJ/F14 8.97 Tf -187.57 -12.08 TD[(warning)-342(")]TJ/F17 8.97 Tf 40.73 0 TD[(string)-428(n)27(um)29(b)-28(er)]TJ/F14 8.97 Tf 58.08 0 TD[(")]TJ/F16 8.97 Tf 7.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.5 0 TD[(23)]TJ -197.81 -12.08 TD[(W)85(atc)29(h)-342(when)-342(a)-343(v)56(ariable)-342(is)-342(read)]TJ/F16 8.97 Tf 124.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 73.57 0 TD[(30)]TJ -197.81 -12.08 TD[(W)85(atc)29(h)-342(when)-342(a)-343(v)56(ariable)-342(is)-342(unset)]TJ/F16 8.97 Tf 128.49 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 69.32 0 TD[(30)]TJ -197.81 -12.09 TD[(W)85(atc)29(h)-342(when)-342(a)-343(v)56(ariable)-342(is)-342(written)]TJ/F16 8.97 Tf 136.67 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 61.14 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.08 TD[(watchdel)]TJ/F16 8.97 Tf 40.73 0 TD[(watch)-392(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 157.08 0 TD[(31)]TJ/F14 8.97 Tf -197.81 -12.08 TD[(watchread)]TJ/F16 8.97 Tf 45.44 0 TD[(var)-215(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 152.37 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(watchunset)]TJ/F16 8.97 Tf 50.14 0 TD[(var)-196(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 147.67 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.08 TD[(watchwrite)]TJ/F16 8.97 Tf 50.14 0 TD[(var)-196(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 147.67 0 TD[(30)]TJ 27.16 119.74 TD[(What)-342(is)-343(New)]TJ/F16 8.97 Tf 54.92 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.5 0 TD[(3)]TJ/F14 8.97 Tf -202.42 -11.97 TD[(which)]TJ/F17 8.97 Tf 26.61 0 TD[(binary)]TJ/F16 8.97 Tf 28.42 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.78 0 TD[(28)]TJ -197.81 -11.97 TD[(writing)-342(a)-343(test)-342(case)]TJ/F16 8.97 Tf 76.22 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.59 0 TD[(39)]TJ/F2 14.35 Tf -197.81 -32 TD[(X)]TJ/F14 8.97 Tf 0 -15.93 TD[(XFAIL)]TJ/F16 8.97 Tf 26.46 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 165.72 0 TD[(6,)-342(9)]TJ -192.18 -11.97 TD[(XF)114(AIL,)-342(a)28(v)28(oiding)-341(for)-343(POSIX)]TJ/F16 8.97 Tf 115.55 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.87 0 TD[(6)]TJ/F14 8.97 Tf -202.42 -11.96 TD[(XFAIL)]TJ/F15 8.97 Tf 23.54 0 TD[(,)-342(pro)-29(ducing)]TJ/F16 8.97 Tf 48.27 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -11.97 TD[(XPASS)]TJ/F16 8.97 Tf 25.04 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 177.38 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -11.97 TD[(XPASS)]TJ/F15 8.97 Tf 23.54 0 TD[(,)-342(pro)-29(ducing)]TJ/F16 8.97 Tf 48.27 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126 0 TD[(25)]TJ ET 0 g 0 G
-endstream
-endobj
-289 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F14 258 0 R
-/F16 264 0 R
-/F15 261 0 R
-/F17 267 0 R
->>
-endobj
-287 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 289 0 R
->>
-endobj
-293 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 686.11
-/Ascent 694.44
-/Descent -194.44
-/Flags 68
-/FontBBox [-216 -250 1303 953]
-/FontName /CMBXTI10
-/ItalicAngle -14
-/XHeight 444
-/StemV 80
-/FontFile 292 0 R
->>
-endobj
-294 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F18
-/FontDescriptor 293 0 R
-/BaseFont /LWIKPI+CMBXTI10
-/FirstChar 0
-/LastChar 127
-/Widths [697.77 944.44 885.55 806.66 767.77 896.1 826.66 885.55 826.66 885.55 826.66
-755.55 674.44 703.89 1044.72 1059.44 355.55 385 591.11 591.11 591.11 591.11 591.11
-948.88 532.22 665 826.66 826.66 591.11 1022.77 1140.54 885.55 296.66 386.11 620.55
-944.44 868.53 944.44 885.55 355.55 473.33 473.33 591.11 885.55 355.55 414.44 355.55
-591.11 591.11 591.11 591.11 591.11 591.11 591.11 591.11 591.11 591.11 591.11 355.55
-355.55 386.11 885.55 591.11 591.11 885.55 865.55 816.66 826.66 875.55 756.66 727.22
-895.27 896.1 471.66 610.55 894.99 697.77 1072.77 896.1 854.99 787.21 854.99 859.44
-649.99 796.1 880.83 865.55 1159.99 865.55 865.55 708.88 356.11 620.55 356.11 591.11
-355.55 355.55 591.11 532.22 532.22 591.11 532.22 400 532.22 591.11 355.55 355.55
-532.22 296.66 944.44 649.99 591.11 591.11 532.22 501.67 486.94 385 620.55 532.22
-767.77 560.55 561.66 490.55 591.11 1182.21 591.11 591.11 591.11]
->>
-endobj
-295 0 obj
-<<
-/Length 12061
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 446.97 13.95 TD[(i)]TJ/F2 17.22 Tf -428.97 -25.91 TD[(T)93(able)-374(of)-375(Con)31(ten)31(ts)]TJ/F2 14.35 Tf 0 -41.04 TD[(1)-1124(What)-375(is)-375(DejaGn)30(u?)]TJ/F18 14.35 Tf 158.76 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F2 14.35 Tf 193.17 0 TD[(1)]TJ -351.93 -32.38 TD[(2)-1124(What)-375(is)-375(new)-375(in)-375(this)-375(release)-375(?)]TJ/F18 14.35 Tf 233.09 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F2 14.35 Tf 118.84 0 TD[(3)]TJ/F1 10.91 Tf -316.06 -16.44 TD[(2.1)-1000(Running)-333(existing)-333(tests)]TJ/F8 10.91 Tf 133.84 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 184.84 0 TD[(3)]TJ -318.68 -13.15 TD[(2.2)-1000(What)-333(do)-28(es)-333(a)-333(DejaGn)26(u)-332(test)-333(lo)-28(ok)-333(lik)26(e?)]TJ/F8 10.91 Tf 204.99 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 113.69 0 TD[(5)]TJ -318.68 -13.15 TD[(2.3)-1000(Design)-333(goals)]TJ/F8 10.91 Tf 86.93 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 231.75 0 TD[(5)]TJ -318.68 -13.15 TD[(2.4)-1000(A)-333(POSIX)-333(conforming)-334(test)-333(framew)27(ork)]TJ/F8 10.91 Tf 205.42 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 113.26 0 TD[(6)]TJ -318.68 -13.15 TD[(2.5)-1000(F)83(uture)-333(directions)]TJ/F8 10.91 Tf 108.32 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 210.36 0 TD[(8)]TJ -318.68 -13.15 TD[(2.6)-1000(Tcl)-333(and)-333(Exp)-28(ect)]TJ/F8 10.91 Tf 102.04 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 216.64 0 TD[(8)]TJ/F2 14.35 Tf -354.55 -29.09 TD[(3)-1124(Using)]TJ/F10 14.35 Tf 69.88 0 TD[(runtest)]TJ/F18 14.35 Tf 52.99 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F2 14.35 Tf 229.06 0 TD[(9)]TJ -351.93 -32.38 TD[(4)-1124(Setting)]TJ/F10 14.35 Tf 79.99 0 TD[(runtest)]TJ/F2 14.35 Tf 57.06 0 TD[(defaults)]TJ/F18 14.35 Tf 58.34 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F2 14.35 Tf 148.47 0 TD[(15)]TJ/F1 10.91 Tf -272.13 -16.44 TD[(4.0.1)-1000(Con\014g)-333(V)82(ariables)]TJ/F8 10.91 Tf 113.54 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 163.82 0 TD[(15)]TJ -277.36 -13.15 TD[(4.0.2)-1000(Master)-333(Con\014g)-333(File)]TJ/F8 10.91 Tf 124.23 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 153.13 0 TD[(18)]TJ -277.36 -13.15 TD[(4.0.3)-1000(Lo)-27(cal)-334(Con\014g)-333(File)]TJ/F8 10.91 Tf 118.05 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 159.31 0 TD[(19)]TJ -277.36 -13.15 TD[(4.0.4)-1000(P)27(ersonal)-332(Con\014g)-333(File)]TJ/F8 10.91 Tf 133.11 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 144.25 0 TD[(20)]TJ/F2 14.35 Tf -349.09 -29.09 TD[(5)-1124(The)-375(DejaGn)30(u)-374(Implemen)30(tation)]TJ/F18 14.35 Tf 240.1 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F2 14.35 Tf 103.76 0 TD[(21)]TJ/F1 10.91 Tf -307.99 -16.44 TD[(5.1)-1000(Con)27(v)28(en)28(tions)-332(for)-334(using)-333(to)-28(ol)-333(names)]TJ/F8 10.91 Tf 185.66 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 127.56 0 TD[(21)]TJ -313.22 -13.15 TD[(5.2)-1000(Initialization)-333(mo)-28(dule)]TJ/F8 10.91 Tf 127.46 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 185.76 0 TD[(22)]TJ -313.22 -13.15 TD[(5.3)-1000(DejaGn)27(u)-332(pro)-28(cedures)]TJ/F8 10.91 Tf 123.84 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 189.38 0 TD[(23)]TJ -277.36 -13.15 TD[(5.3.1)-1000(Core)-333(In)27(ternal)-332(Pro)-28(cedures)]TJ/F8 10.91 Tf 155.07 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 122.29 0 TD[(23)]TJ -277.36 -13.15 TD[(5.3.2)-1000(Remote)-333(Comm)27(unication)-332(Pro)-28(cedures)]TJ/F8 10.91 Tf 206.85 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 70.51 0 TD[(26)]TJ -277.36 -13.15 TD[(5.3.3)-1000(Utilit)27(y)-332(Pro)-28(cedures)]TJ/F8 10.91 Tf 123.34 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 154.02 0 TD[(28)]TJ -277.36 -13.15 TD[(5.3.4)-1000(Cross)-333(target)-333(pro)-28(cedure)]TJ/F8 10.91 Tf 144.41 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 132.95 0 TD[(29)]TJ -277.36 -13.16 TD[(5.3.5)-1000(Debugging)-333(Pro)-28(cedures)]TJ/F8 10.91 Tf 143.44 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 133.92 0 TD[(30)]TJ -313.22 -13.15 TD[(5.4)-1000(T)83(arget)-333(dep)-27(enden)26(t)-332(pro)-28(cedures)]TJ/F8 10.91 Tf 165.3 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 147.92 0 TD[(31)]TJ -313.22 -13.15 TD[(5.5)-1000(Remote)-333(targets)-333(supp)-28(orted)]TJ/F8 10.91 Tf 150.22 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 163 0 TD[(32)]TJ -313.22 -13.15 TD[(5.6)-1000(The)-333(\014les)-333(DejaGn)27(u)-333(reads)]TJ/F8 10.91 Tf 143.12 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 170.1 0 TD[(34)]TJ -313.22 -13.15 TD[(5.7)-1000(The)-333(\014les)-333(DejaGn)27(u)-333(writes)]TJ/F8 10.91 Tf 144.94 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 168.28 0 TD[(35)]TJ -277.36 -13.15 TD[(5.7.1)-1000(Summary)-333(log)]TJ/F8 10.91 Tf 98.34 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 179.02 0 TD[(35)]TJ -277.36 -13.15 TD[(5.7.2)-1000(Detailed)-333(log)]TJ/F8 10.91 Tf 92.79 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 184.57 0 TD[(36)]TJ -277.36 -13.15 TD[(5.7.3)-1000(Logging)]TJ/F4 10.91 Tf 74.7 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(in)27(ternal)-332(actions)]TJ/F8 10.91 Tf 76.98 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 87.68 0 TD[(36)]TJ/F2 14.35 Tf -349.09 -29.09 TD[(6)-1124(Ho)30(w)-374(T)93(o)-374(W)92(rite)-374(a)-375(T)93(est)-374(Case)]TJ/F18 14.35 Tf 216.48 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F2 14.35 Tf 127.38 0 TD[(39)]TJ/F1 10.91 Tf -307.99 -16.44 TD[(6.1)-1000(W)83(riting)-333(a)-333(test)-333(case)]TJ/F8 10.91 Tf 117.52 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 195.7 0 TD[(39)]TJ -313.22 -13.15 TD[(6.2)-1000(Debugging)-333(a)-333(test)-334(case)]TJ/F8 10.91 Tf 132.45 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 180.77 0 TD[(40)]TJ -313.22 -13.15 TD[(6.3)-1000(Adding)-333(a)-333(test)-334(case)-333(to)-333(a)-334(test)-333(suite)]TJ/F8 10.91 Tf 185.22 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 128 0 TD[(40)]TJ -313.22 -13.15 TD[(6.4)-1000(Hin)27(ts)-332(on)-333(writing)-334(a)-333(test)-333(case)]TJ/F8 10.91 Tf 159.12 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 154.1 0 TD[(41)]TJ -313.22 -13.15 TD[(6.5)-1000(Sp)-27(ecial)-334(v)55(ariables)-332(used)-334(b)27(y)-332(test)-334(cases)]TJ/F8 10.91 Tf 195.13 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 118.09 0 TD[(42)]TJ ET 0 g 0 G
-endstream
-endobj
-296 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F18 294 0 R
-/F8 52 0 R
-/F10 78 0 R
-/F4 28 0 R
->>
-endobj
-291 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 296 0 R
->>
-endobj
-299 0 obj
-<<
-/Length 2800
->>
-stream
-0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(ii)-26443(DejaGn)27(u)-332(T)82(esting)-332(F)82(ramew)28(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(7)-1124(New)-375(T)92(o)-30(ols,)-375(T)93(argets,)-374(or)-375(Hosts)]TJ/F18 14.35 Tf 233.2 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F2 14.35 Tf 110.66 0 TD[(43)]TJ/F1 10.91 Tf -307.99 -16.44 TD[(7.1)-1000(W)83(riting)-333(tests)-333(for)-333(a)-334(new)-333(to)-28(ol)]TJ/F8 10.91 Tf 159.4 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 153.82 0 TD[(43)]TJ -313.22 -13.15 TD[(7.2)-1000(Adding)-333(a)-333(target)]TJ/F8 10.91 Tf 102.9 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 210.32 0 TD[(48)]TJ -313.22 -13.15 TD[(7.3)-1000(P)27(orting)-332(to)-333(a)-334(new)-333(host)]TJ/F8 10.91 Tf 132.43 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 180.79 0 TD[(48)]TJ/F2 14.35 Tf -349.09 -29.09 TD[(App)-31(endix)-375(A)-1125(Installing)-375(DejaGn)31(u)]TJ/F18 14.35 Tf 240.03 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F2 14.35 Tf 103.83 0 TD[(49)]TJ/F1 10.91 Tf -307.99 -16.44 TD[(A.1)-1000(Con\014guring)-333(the)-333(DejaGn)27(u)-333(test)-333(driv)27(er)]TJ/F8 10.91 Tf 201.97 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 111.25 0 TD[(49)]TJ -313.22 -13.15 TD[(A.2)-1000(Installing)-333(DejaGn)27(u)]TJ/F8 10.91 Tf 119.26 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 193.96 0 TD[(49)]TJ/F2 14.35 Tf -349.09 -29.09 TD[(Index)]TJ/F18 14.35 Tf 44.26 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F2 14.35 Tf 299.6 0 TD[(51)]TJ ET 0 g 0 G
-endstream
-endobj
-300 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F18 294 0 R
-/F8 52 0 R
->>
-endobj
-298 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 300 0 R
->>
-endobj
-7 0 obj
-<<
-/Length1 2090
-/Length2 15387
-/Length3 533
-/Length 18010
->>
-stream
-%!PS-AdobeFont-1.1: CMR10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:52
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /PNKVMB+CMR10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 14 /ffi put
-dup 33 /exclam put
-dup 34 /quotedblright put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 63 /question put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 91 /bracketleft put
-dup 92 /quotedblleft put
-dup 93 /bracketright put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 124 /emdash put
-readonly def
-/FontBBox{-251 -250 1009 969}readonly def
-/UniqueID 5000793 def
-currentdict end
-currentfile eexec
-\80SQM(ì(Ú\160\16_«&(\82Óü§\88\81\82<U7þl=Ú\8eå¸\97á|°'õÇ?Ûµk
-|%ü5\12µ_èó¬ûÿÌ\7fJ8-\82\99Ì\8fÓ}<êIÚ½Ê\92\84zðV\v@N÷\114°óÙ\994ü\9d\vN` \11¹Ï¸VÂ?\95\8f<Z/¾\ eøX}\1fWt\87\9c2NQü²(\88·O$\15P×@\1e¹\90Ôó§¯cQ\98B"\83ÊÁ¶ÍDmÛËÙ\15Û\9bÿ\88\84NxLk÷8\98\ 3ÙE\v\f!uj\ 1s\ 6E|~bÁÒió\ 6½4\ 2âfÞü;^}\8a\8d/[ðþmÝ@Ðs\91ßOJ`\18Üâ\9a+\8fi+)ò\ 2:|\ efÞ\8eØ\\14ñøI!g5\7fQ§èLÅÙ.\ fîM\81Ï\7f¼\8då-.{µqB\ 39\93ùÀ\8c1ZºÞ\8d¼Js.\84áBÓ¾å\15W\91\ e\12Í\8a£|E\9a^k\7fRiõ\90x«£¾FA¡\1aÄ\8d\vb\\83%³\8eÀ\8eL\9e^\7fí\97jVPÙ\9d\82\11OD\9b\9c¡LNÉWp"\95£\9a\93ï\93ö\18\99¸ê\ 6°\92ÃÁå\ 3æä6à©ú"Wl\890«=ÈÂ\ f]\82¶\9cÝøÿM¬ú\9cT¾Õ£ª>¥±)þ\96¾c(C¹¶¼\91¶\15X\1a\98]µk\1e\ 1Ê`îiÊ\92Ï\\b\82ìæ.ÚÓá\ 6Ø54\88"@\ f\vf¯e\8f*ånÐ\8f\8b\0\10W\18\a\0\9bs«\12¨Ï\14Êlqð<*HÅ\0ùÖ"f¯\15Jcuÿ`\r\9b¬?\ 5Î4\14-hg§\95\81Å3\17k²ó\11s6g\1e.Dc\8a\97\16~.©dN1ê\16Â)\90ê3Å@\ 1àÈ\15nmè«jM@§\13{¢uó\95\89þ¢âÛ\82VÁ\ 3ÖùÌ\ 3\807¤~\8fÔiÅù\8a^<\15½JÎ@Ó@\ 1\8b\1cÿ}\1eØ«°¬Wµµ¢Â
-Q\95{\96ÄSí·Úå¯ý\91¤m\93\8fà¡3c\0\1d\84MíC#ñîm0\ 1*ê\19°$¥R1U\ 5S\\85Ü&ºÓ\1e Å\ ee\12\80)vÒ\98Äé\r\0DÃbæ¿:³b¤Tî\93Þ%ÎTA\10\90Â\9e\9duÈ\fâj\84@KÙÞ:î\ e?\92\1aÅ\87ù\aW+\83T¥Ã\16^ê~\8b+¤ã3\80!2÷`´\1a\90\fi\8e³Òs\8bê
-¯z®\96¥Xð\8ba®ÇÇÖ[(\89»{\99\80\fÿî[¡\9aÉ\ fÎ\11C{áÝüð¼¥g\vT;\96D§\1c\87&ÐÁ\0Z½¹on\f÷ʪ1\95\ 1|¨\15\19\15\1c,\v\ 4ø\1eq|\ 6\91¶:vé²S)Î&%·\11Ë{ù\9d#ì+µì\8aï¸Á£´"a{=¤Ô\96\85ýDÌ!¡þ^\15A\16:³áYF\ 1Ö<~\98\80\1dwFGCwÎ\93ø\14\ 4óW
-ûÕÛþwW\86\ 5\91z¹ic\98~nü-?\99úVì®d"W\98RV\7f\90Ì\90äïmoqÑ\85\82p Twâ!\ 1\8a7\¨<W+?\97,Q\81Ñ\86CÎË\ 4\90\9d\84Ïvqt³ÀÈìi¿\1e\9fß¼\ fÇí\97ìgØxêMÚÈÊ¥"ýÆ\93-÷!¸\1aø7«VµGÔy\92A1\rf\92\91\8fÏ\8aF\18\9axÖc\8a|´F-\87tìsÑ\84\ae\95ÉL\vJ\823Í4òÙ/oùO\94\1dýX\9dï,ç\90ÕË!Y¹S3\8cs\84ËhÁ\17y\12
-h¿¢\v\99=\8c\ 3\13\98~¹j.ª,\11ÏØ8æªH¨\9emÞóúá¡°x¾\97\87\14\ 2pUj\96ârZ\8cñFûR\93\89\0s\ 1T®Æ\ fTL=Iñv8aõKF£·\ 3\15´n¾QÄ/«ê\87¥3\9eÎ+d'\aI\18\8ds ~\ e8fï\9a®©\96ú\92«D<\bû\8a\84\rí&ºhéLÂ<Áö\96\8b\ f<~\8fOÀÅÊÐ÷£2çùU(zÏ$\85S\9c{e/z)Ùä®Â
-\8e\ 2:íâkÔÇa½5a&\9fªÆýZe\1fÿù!\1f\8dò \99Mm\10Z\92ÕyLòªRk!CÇ\15\v¥\84¢µ\97ö\98$\ 3Ù0sË\ 6kV\9b¬ù] KB\ 2½$\ 5\9a\8d½Óí\8a©è\9b'\88ó°x¨\1aU{ÇCÁ*\1e\0ýïý\ 3\f\ 3.\81Þ1B¡\ 6Àíá¼\9dVd@¼ìB`)\êÍÕKÐâ_k\9dØúÄ\1fE;Ìs\17wá欯7¨\17\8d\11¾\eíÖh\18\15óÕî\8d$\v|é±OϯÕ\ 4!o&Ü('û\ faXAn²O\8b×an»þ\93xq\88$ÌnQ\13_\8fH\9e\9aU ø@`\8a\99£.ä%\1f'ÿ\86ì\7f2Mɵ4×\13^0òì\em\93×Û\91\96Qà?0¨\82òߤWÓ\añwQS*×\ ec*\ 4¦<¡¥\aüjô\a1&¾\ 1'Øit´&ô\89ÿb¥<\19\86ý\ 4\8a×dTÔ+áj``\10\129±8»c\87eÄn°\ 6÷øÝ1#7¾\bÔ8\12rüï½t·²ì \8bCceXj\83'! \11;+ñØSú\8b\ 6+î¢\«Æ \98ÏM8´\9a?KË7!\98¡\96ÉëmòËå\9aY\85\8aâ\12\ 3\1c\9a×û¹ÃèéæÞEÜÊR\1f:óa(/{>Å\aȳ¯Ï\18¹g\8e»/\11À\1c\9dÃÄý14Å£ßkoLuì\98TfÄõ\ 5\84\7f\14uÉ\1e]\83¦¿uH7Ú\ 2ùèhë\r×nÄÓ\1c\8b\1eÙ5¬ÊsáË\9bA\92»
-\85?\94r(Ã\ 6N\8f\92:\913îÉÅ,bn)h\9dÕO¤3¹p&6ûØ|]\81Äòx\16\87\83P\9d_BVÇz\85\\97¤\8d\18ÞnáÔ||3é"~×\ 2ñ 071¾¦ó\ 5]v@FîÓj\ 6ÇXU©(\bLWs\16\8a¹\85Þ§Ív|x
-\91ç@æà\88Ë\93Ô:H\91E\ 3\ 2!Þ\ e\e-¾\95Nô\14¹V\8f;\1cS)õü¾é'ª#0\9aÒ.\10ù4\9blç \90Ñ\9b\94`@\Þ¸\9bña{,)zõb\94X#_\e\8c\95õ¼D-ë³M¥Ò\v\11éf`Î\9e\Ñ\9a\84ªTô+\10oÈ||\ 4\ 5°Ë¼$\99PÓ§ÃSÖ\91×{ 1È@Èô:"\füt\9cãL'\91Ýb| tu9cÒå\97\94ImU®ÉoýHêý²\9f\8a¼\8d\91\93-Õ°\1feëÚ\ 3Kï<r\19à\97g\ 6!\ 5\86bÅ»ú©9Þ¿\99\9e\9fhåÄæL»\at©¡\86çA4a\ 3\86_ï°\88¯TuEÏwcÚ\ 6d\96\98cwµ\87ïÊ\\9eß"ì\13ѪoH<J
-Ýþ9_\83SM{å(^j }S¨©`í\89é½'¯Ë½¢;-\98v¨ØÏÌ)\99\90Õ!àvÏ\83\87Õ\14W\bq7l!P\9b\95ê\15Ìürx\85\1f\14Þ\83\b·.\11\18\93ð3\84\88¼íÐòøêðs&¿\97ÃrtYì\89ø\12\1c\96¤^=±Æ=G\8d
-m¥õæ\83I8ï\1c¤\e\91\ f%¨/'tãÊéñ\90\9d¾!î\8e\0>'¸LC³\9fâG¸á\958d\8f$m2SW¢F6[\9b+\13ÜhÍ×äM\99Øld%e±ü7m.S\0H²z|D¶\81\17\19\ 5M:É\9c»õfZço\11âx\e\8c\ 4\ fsEKÇ\94±C.l:X»¸Ëï4]1xÈÐ\1dk&¿\7fHZ\;ÓmÐ\1f9°4å6«Üf2ë@8üÊàE>\85³¾ØÃÔb
-*¢Ú½\fÙ0\90é¸édÄ\91îä[Y.N± 2È\1dU+\92O\95_\91ì^g?ö\8c\81*Iá÷\82~FÚ@H]r*\90_'Ô\9b\ 5P\19\9f¸æ\ 3+¡\1dLª$±½/\ 1m¨ß\8eRMÛ\ 1BF¶ò\92\8f\15ÄlèÊ\1dí\ 4¯sa\10uÄ\97\13%T\8bï`ª\87ǸýçÑ\ 4\bùaÊ\ 3½'ÌM;\86ªEÛDQϸͿZ4v»Q\93cH\9e²ß\14¥\9b0¬8(H\1d\99\95×\0\17¹ìW\ 2\80öK -õ7ñ¡©Pý¡RW*7\83s\1a\ 4SÂhW\0êÖAÈ\f@×®È[`E\92\9b^B ÿF©KÓ}Ëlà)L\98\93Æ¢\90d»Ï+çÙR4)ë1\10®¬'\17u¶\87
-xÿÞþH]#\0\ 5¿þ¥X\82Àoý\ f©\ 5ê\84â\8f"\99Ò°ÄÔL¶}Ð\1d/¼½"¹ìà\14à(\8e8yÖ¯8bïèÈo\115VöªX,c\92¤\88Ø4Üo,½DWz\1a\1e`ë?\aR.Îõé*'\0Z\1eº_ ð À\82Âè_¬c°ÿ\7fì§Nb\98\1cÀ|\ff³öâ
-s\8bÏ\9bVýû\87(\bl\91´ÇA#÷\85\ 39\14\f\92C\97=S:'\98¾\f\aÖÔ\8aV\8erX¢Û'\10Éh\11g\vÓÚ\\9dvÛÀB\9aÝu\1e\9e*´9 ͵\9e¾¥\1f,º.\93¢éìÒ-}Fàu\ 1/¾\81ä\9dù\9fÔg\97DR´ë\11\ 4/\1c³\89ÛU\8fÕ\1c׸²ÀýHO\c²Ï\89¢wn\1eÎ8x\85X³3T7ÞhÊvèEzðÐ\85Ü?:¥K\8eSv#\1deÞ£)Åv´lQ\14¶lo\8bñZ#\8b¼\1eUH\19\11ý·ò\ 2]<ø÷\7f_\88èzÕ\f"\90*wå¬\83M\9ed.Ñ)\15pd!Qé\90³\82e\1eD\85\82Óa'/\12\¤jì}ñ\88\16\9b%Ü\17µ\80MOvâ2F}âã9´\98®\ 2¦kl\9aùCþv\ 2$@!Ü´Z3_Ñ.ñv\97r\162\15\9dÕ\ fCT_ÿ\813¥ÛZ¿\19\rN¾Ñf¥Õ! j7Ý£2¹Ù\ 5ñ\19>\97ÿ(\83ª\11@ð[£N\8b²\8d>\901õ¹V3©½×8>\1f7=û¡¶-\ 5\96 \r\19p\ 6µù\8cá|´h=-×þ\86©\1c
-ô÷=Y\15©I ÚR}\18é1f5NM¶M\8dÏJJrÊ\13\rH:3Ù YC$IJ£©\r>9¶F¦6ã\ 3r¿Ó}\1f\19²ä\0½à\87ïåÒ\82\ 5tY²â\8eõoÝ&Ý¿\ 1®Åõ\8fRôÜ ò\1e\19\87\98ç'0_Â\8a\8a¾/\1c¶ \91\11\96"ó\960 E£Ç\88¨\9a\8dÀ\93s\0\10ü\19¥e¢óZz\9f§§\9b%k\ 3ËÅý\92\96¾\15wr\82fO\9dÒ\f\98\80ÕÑ\eÛ\82\8eE¦û&%Þ\88Z\8eB80ÂÖ\99¸bùô\8cä/\ 3\13a¦\93lì)P\93Î@\91î6\ f
-¾\92f¶tâ1
-\89Ñíq*F'$1}Þ\1c\7fý«çµ<5\1a\ 4\9b®ù\1c¨kö\1c)æ\92{*8³\84uSmÞ§Ù¼k£NevU\846NR\91O\ 4k\bx\93ÅBvm{#5^*\a¸î@}: \90\82\95\9dÎÞÔB\1eü9÷HfONß\v9 \8c\89^äA\19 wp\87ì\95\8d\evÄ¥Ú¥;3Iq¸#odÍ\ eià_\ 3â5:\1a*\eü0î$\81ù\80\ 1\86¬×\16¢¹ R;á7\85ó\88x:©\a\91*È9\ 5h©(£¡~B
-u\18\9c.æp\1dÕ\9fÔ¢Ø8¤^\0éZ×¹\v¼\88Ô#\1d¾58î\84ôb%)5\18\16h \92þ\91ê Ö^\1còê\96<#øæoíb\rð«("Ø è)FëÛ\82\b\18q'ÿ\83\1epòF\14'²ò9|.S\17©Ý×0O-=é\1anr«<K\ 3¶:\9a\1d\r)\87\86Q]\a\90và0íÔ\11m¾`\917³¤\11s×3õعÇ\87·'e\9f¦Ë,5¢\15í$ZXA\9a»w&²ýeË\1e¢ýbTé\8e¢J&\1c\ 4J\8a\9a¨'mé&&\8bk\1f÷*\10yÏ\85+óu)eè\94; f×6f\1dJð\1eù^CeÞspÐ\8bä\ ff(a\1eê¢\ 2x/~\15h£\9cTd\85Ð\870¾ ¿µ9F[[w \99YDuºù¹TÙdÄê\r¢-ßû¬Mr¿|PÆ\95¡m\lb\98q¶i\9d\11â7\91¸\8c\7fºÞa\9bÜ1ó«\9aB,âärè<\ 3\88YÁ±W\7f\9fiÁWs\9a:çL\92µ\83È\9e\814\97+\91+\90e\196\99é\92\a\15È%¯\18HóÑÌ\97o\14s\9e\ 4\12ÀH8×\84}@\1a\86à¢\88·aîJ£ë\90üQ \16Üe¦w1õZ4\1eMX¤Në\9bù6]¼\86vÅ»ªÎ3\10F·W\92>¤\ ep\©L¨ñ´â5I¿ B,"x\83¡?DÓC\148\1a\85\ 5ùÊ ¨DÌ\86\f\14\91\18¾\01Ü<*¬v\84Ë\ 2³</ta¼{0úöÞËWã\17æ\9f¨o¸\b\8fÞIUã\87$àÇ\10ÙÄ[\92\82cy\85jQN[\8e¥Dq!\12a|è=ß\9cæ\8ei`A\v¦¾\ 1¯\145\9edä\9ag,ZÖ\99\9bôôa¶\928¼ÿÁ\1eiGXú\85\99.\94æ\9fl[X\9a(\8fg\ fÿzAl 2q»ÛñMÃ`]z\85\9c\eSÇ\8b6èÌ\ 5\83E±¿\1fµUª¶è\80ú\94 RChç \ 5Êj(þV\7fÆ
-\87^\88á&\97|VØ\9fS©\2Eucºa\a\8b\ 5\974µ\12±Ô\f\17:jD3vÄ)«d=ÔµO\b½"u8¡\7f\ 2·\8f:Ì\ 1ÁI\95DÑ-\ 1È\86Ü\80nÊj$âÍæk©\85\88\ehÊ\ 2'\83Ø9nUYP7\ 5ÎÈh¯\8e\98¥JzñM\94Ü\1c\1dÁ» !hëï99bX:Sè\99;"\ eý±Â\1f\98½skR#ÑC¨ò£V5R÷\ 3ä>ú\8fP¾³öÑð\vú\8e±!\ 1Ʋ`íh\85A\1c\7f\84\93®\98A\93\13³w\80\8c\7fàE/Ã\7f±ìÝ-ɺHT8p\90(\a¨\0Üpù\95÷\0g\9c²p\ 3öþ_iòr\ 4ºýT@¾F8nª¦ÿ\19Þ=ñ3#Áá\1c\82ºúÛg\rA\82=FWyÿ\9bõƯÊg¿\1eoc¨mD\15ì\1f\0\e\94Ç\8b\19Î\8e\96\88«ç\ 6\ fÊÕ®,\95¶\96Â1¢§y\ 4\8a\ÆOÁJ*\19m KÛ\17¨·\14V\15oB¡î\ 42\9a;\91\1a\17'\8d\r=\13h\88\1f\99Áx& â¼ä\bâ&w\85\9f.é?²qá\10]\ f*F\9cöyîÚ\80bF'¢å\\9b~\99\88DU\9bë\1fí\14^Ðßg}Ïó\ 5Ø ^\ 5Lµl\ eú\84ÉÒM\ 6\10´\1aGU\19ÍKz«<\15iIÞ\9e\8a¾\90ÿ²,\ e\19\7f\ 5\80\18*\97EPT\7f¼ì÷·ÜEs\82Nκ\8b{\9có\10è\8b÷°\vÒ(«\98T¾\ 4`ðÏs`\96/\f¤\98\88;\ 2çâb\16\9f)È^;~ÓKÔ3\1eé¬\83\9d2\ 5§~9\85.Ö:Q\1f\ 3\86Y´{ô1µ!²P$«åµÃ*«T\8bÑ/¹\94t»\8d\r*\ e b¥/\8d\aÑÁ½\17\7f\9eÀ¿yn ø:äZM^ÂOÆJJªü¾}\84J^zÄþ¤Â\9b} !¬Õð\\8aäD\rØÙ®,(¤¨w~\1c\94ãù(H¼ñËÞÔØ\8d÷\13t\84å\v\9bï\9deÔq\13v k°\ 1\97¹¾\195ÝÝ£ç\99M¡·,oä¥Ê \9fÖ¤\1c/&\92j\82¶\87\9a·\86\aÐoxñìMÑY9Õ?Õ\rÊ\ 5\83\17Nö¨P÷\8b®z<6`\81M÷\87V\9e]\89×¾E-íN\87HWëq\ fD\8d$qx©?÷ÉmØU³\9f©\86·ï¼PÓ\ 3\9cµ×KI&¬ÙÃ\135äê\17\8a\85vC\9dÌ\ fæáOoõá°mv_e\ e¸\8a\10`Å\1e\rôú\1d\ 3@+æ3§ÿ\rg\19H´\1dá¬Ä~\8bt`ÁNÕ\ 6h×g\8d¾\81ßÿ\vÿUÆ\14ú& Ý\90,\14ú:7\91I\97ðE\ 3\ eý\16Fê\1a\13`{âü\7f\ 3gþ(\1c$Fg2H¥Ð/\8bzTÿe\17l§qF,\ e\15\81`yÁ \r4§¹w\99õ\0O\ e\ 4\16§½è\99ÄXUZö×\ú\v\87{BU$0û¶\8a,\8e/\1cõ\15\85)~\8cHW°CH&\82b\8f¯q[Q\17\98^}\97Ósu(·\19/©ô\94&)«\9b\82öÉ\96\88\899\11ÿÏp(\8eU*¤ðý\ 3\17¹{.FíUb\80NµÛL¼¢\92áÕÿBOgý\8b$c\ 6\8bn5Þ\b²\ 3aFâ\15uÚ\8d|\14¾-X½°ØþÂB9F\8c\94¸`'\9eT\80\13sÁ T\8a\9a^ê>ïô\17OàLd&´7\9cÙE<ú\l\8c
-fPäÈ
-îÑ\ev^Ëæ\9c²*4µ\19\19´å\eôbÿ\9fª6\ 3ù©Rpï\93f\80\90Ý´g°>\18Æ毽\12`\8fY\7fÝ\90a\91òE¿¸ Í\a'DGÿF7HÂlí*DL\1dI\8e(\9a\8c½¨ÄGÍ\16|¬©±A$\90t5\bþkñäE¼zà\9bÆF\9fÀ?\96)Ë\ 3\7fü©òÕÌ.\13\94Ò\8a±Z\84Ï!ê©\ 3\9d\ 3\8f-¾â\8b\0ã\a½æy®¥Fæ;ÊË\15\95¿ár\.$å\84Ç?d*\1ex®\99Óçù\14Æ?®\0U\89EqO´\ 4IJ\ 3*ÑTE=¡\80\91ÁÊI| Î\95WKup.\83'&\18ë\v\86ò$\83Ö\ 5¢ç\b\84Ã\1eÄܼT\ 4-\1c\8a÷\8ef>z¿\8d\Ë<\ 2ZhC´®\12é+]\f@\8c\1a;"%\96\bÅ<Û¶\80ÍÜ/¹dÊ|%(\84\r&Ègai\95A®jï\99\8bFÂ&\r^ø&£à\ 3\96Z\eô\975E\ 1&\99*èz¶\b¸\8b\bØ°{í\9czè2V\80g\ eí,\9frÃÔ@ó(ü\ 3¸Ü\1062\ 6m\16¶\9fñ\a\1aíºuÃ\12<Ò\83m.a}\87nÎ\9a\0N°ºM\91ÁIF:ê;7\82ÚF¸,\7fìÕuï\95£R\98±P\8c8jÛ
-b\14V®\8d/U\96B¤e\rÀ©Á0`ÍË¿i6\98|§òBd!\89\v\87Yèò\eòUƼ\ 6k{uO[¿ÝtT\ 6¿\0\87\14}Æ\83"[óÆ¥\1e²`õºvâôØÝ\85ß\87G\1a\ 4\8fÔ-,÷§Ñ·¬y\16+3jR\85Ø\12ètA\9f8\1fR\éìRûºÈË\9f&\1c4B\91\83å\8d\A='EÑö\1cö5îÊÜ]æbä\9c\80³8¡(¸¬SJ\8d/R\1aÀ?°Þh\aá\9d\98\1f~µb\8a\væ
-¹ïò*HÝàé>Æ)Å\908ª°\82ÿ±'\8bÍ ¼0¾W±\ 2\16×Ã\87\17é[\aß\82µ¼\11b\0\9cç£z\ 6ó\ eX+¡ÉWòÒ\rp\8a'\84A¬Ä¶2\13´\8f2\8dl\ 4¿\7f_ý\93»ë6ã\1dÒ!Íkɯ\89\96\ 4\9c\94óJÇ/3ådu\18ò¦WÆo«T.\^ð§²ß\81Ìoë\9de\r ÄÒ+¯ÅÀ}\17\1a\9a,Ä \86\15\ 3\88!0\90d@¼\95Þ,Äæ\ee:L¡CÀÃ{M4Ë\9b²uUZ÷·\91\85\8bö.0B`\95\8aÊs##ål©1U½ãð\8dKåu\86]2 6¶ò¶'²{tn&fó4}½K\91TÜO\eýØYyµ>8ùüÃÄ\94`F\16L"ò°\9etI"\ 2Ém\17\eôRÈ\91v\88ÍA\8fà¢Tð×à\14Dc"mÜ\96Q§ãÇiÙc\ÕÐ;ª\ 2[Oª(´Bâ\vG¿Óm\15XGæÝ£\8a-\17T\98Q=]"Z群6Ó´¦Q×6\97\9e\rÜ\94Q\10\9b\91o{£oùûVTfJÁU\ 2ïý2\a?&2|d\1c[m[\19f\97Ô^\a\7fê¹3p½é_¶\14b»©\90°\12°ò@d§\98´ûß\ 6Ò\9b~»+ì\1aÔôo÷´Ô9ºÇw¡âü\f\ 5únÝAÇs/³Ë
-ß.\1ed\93aº\83²\90\1aB"=¯-Ým\ 3\860º\9c\1d\92Ý\9f<ȼ\84Èè¤%oç_\8f$n/`&\13³\19[é\f\9b¬´^ç4H?ñ\91Ã\8d\8d ºU\98öáÍì\1e«Åû\03¾»¼É\1f MÊ«ø7Ä0 \ f4â&Üâ< \15 9BIAÍO°ß\84{ô¯Î\1f£.\9c¯û\ 5\f\88o\1fy_
-Ãçúc/$=Ü\a\8a\15Î\8b½
-/Ù®\95Z\82\1duH\13Ô7\ 1HAY§\f0¶?ã\88d8Í'\97\84\ 5ÂHì÷(b²©\\v¤ÌÏè;\13\9cn¹¨Y\13s<\1cÅø\83]° \ 4\1a\1d\1fTìkFñ.AÎÑ¡t £e¿\8f¦3³ÑqQêÝô\10\17Ã\87\83 éZ9\a\9døcwVêjå¤|×\17\15^à\7fÃcìpWÄñÖ`Z\92._\94]^\9dn£ºû%\1fâ|üÎ\vÜ\11r\8d\8e¨Tæ\9e\8c\8b\88~4àü\0B§?QµS¼»\v¦ÁQ{\1a\8f\ 1\14°k\ 5\84Pþ¸´ñøý0íÆ\bÆ\15\8c?À\18E\16G\80Fΰ\15ã´{ô½¨ ç\ f\fH\91\98à CE\a1Iâ\1eB9\9fXCÕ\82bJ:«X\7f\9d\86\7f(ða\94|<\8fµ]&¸;\ 6ãE¨ÜE\9a+ë\13< ûu\fÆ\8eG½ä¢\93ëç\ 1¡ö\13z\96\94Ú@ÌÿZ\ fÕþÚ ãµÖ\8a\ fÝФ»\báÄz\99\8f\16lû1\95$8Ú\8d~E"pAê\12m\ 68w8?Öø«p
-\92\1e ²\98\ 1Õ©Z¦\854\v4T\8b\ 6\91\9aNQøaùÑæV\88Ç\998ÿg\10\7f|\1eúmÿm\93I\17\f1|Ö^\8f\98÷ªBH«#+ááì\10ý\9dÑ^ +\87Ü>°â&7
-&j¿¦GOþ7:Ù\9c\84Y \15DÀ\9dgÄ\1f6ÐÏ:Pà\9f§ÈÙTk·ºvsG_Ð\9e ø`\0\88º5´Æ\93pó\8e¤F\9e\93ù¬>Æ{\99O\15½ªù0¸\ 2» )\89%S\9c\9e\96\89\9a\95ôtoæ&\92$\80Ua\96:y0¬ì³\8båIH\7fÖÐíaRmç\92\81éÚ\1e\ 5`AÓ\87\1eãÞ6d®å8\80\ 2¶\92Ã\9eXÙ%îå\1aß\8aª\ 1G3e\D\ 2:Åô\ 3mô\9e-å\86)c\98»\88ó\89©Û½\ 2l4{K\94 \và²\1d4SÏéc\92=\7fÈë\1aCßDŽ¿KÖæoÙ\9dð|ßÜS\9c\ò\8bæ\9dª\ fáÚ§¾\91Íò%\0u6\10nL\84½ñ&a÷\83wçK?GÍèì½Ù)\ 5Å\v~\163óK:ºbÝV`í,o\94\1c\9ac(ú\r'e¾èyµ\91\17M/Å\14ñF²XÛF^ê°\85I,x\ 4 ¢\84Ví\ 3%ù9/ùÅ+¸\82ÓxÐÑúoãµ\12纯Hw`î\v\84r¢¦y9ÆM\ 2Þ£øäWÇN+\ 5Ò!êj-s\16M\8aÄ\9b²U9ì\13k°1\7fÚס4+_\831ÅÜv/$*§Ë\98\8eÙ\86\ 2Ä\9e\93\ 4\11¸7HV\84kðr\9aZxS=\83ÐH~\83OhÂ÷\89\18\17×+kÄtÛ\96\17\13j\ e
-fä.&\8d\86÷þÇ{à[Ò#~]\9fU¦Ô\9eÃY1\8fPån:k*À\fTé\8dºû\9fïózAØ\11êÞwv®óÍnÔ\8dÉ )\8b»Y\ e \8dh.÷®\ 6lO\ 6ÇÆaÌÊ\7f`Ôåª>ÃÙÉV0zÒöD¦\a\9bÔñáñ¦öS~çE\81µm±±Ð\9dgÃ\86O\ fóvË°ïi\86;ÿ1ÏJN\94ø\92¬!·HÓ\8cÖµªX,f¾ûð\v\84\94LíÞØqîÊ=ÊèG3\12¡ö¼¡ê¶`n\7fÏCÛN=Ê\90=\1eC~ûÛM\1eÌ\18Rö¡Éÿp¬\83æV\81\99\ 1\1e\8eç5¬\f/{Bé\8a|"s?÷G\81\80¦Á«¸d\95jlúo?¿\9fÝÈ
-UëÇ^»ÕsØeß\ 4Ûÿ\91\b|\13Ü\93©Üãf%d5m4Líéµ`¿\1fÎV\7f\1eÑ°\10$o·§jD¿s\ e\S±h\93\8b\88ð\12Jg^%ÿ¯ ò\1aÜ©F\9fêËúý#\92§>\ 3\91õ¦ÖY&¹-B%v\14äácå\16\89 Á\14\9eWÉß\1dÂ\1d\83Ó¥\1a²ðÖ\eŹòXôz\9dÁ>\90\99)µÕ\80ý§æe\v\9d÷\1fà\10uóü\bUN4z\ 2Ø}ìÍ×\17]\9aPÉ\1cø\91G®=i¡P'Im\88³·PH\ 3Ì85\80ñ×\ 5ës^\85\15yS(b\8eÖóIõÁZ\835\ eK¯#!µ0\eMÖZÅ\87"¶Âá¾n4\90ugAu¶ÄÝ"8\9fH\ 2\91\99\18\13\83\843/\84d\95Ï°XÖj\8ao·TÞ0Ø\ 2½?½û·êÖ:V\92ܼ±îÒ0\ 4»Ò\8dÐ~ÞÅ
-\1c\97×x\14УîÞéT´g\ 2+w\86\7f§B\9cÍ!Iw\vª<æë\19£h;ÁÆpgMç\ 1 yá\15ÈRô\88m;%\90K¤CZû¾ Üô)©ÿ. /\9eÐf[ã\9aX\8d\eEcFF\14©\15\93¤¡\ 3\83Ïs\19r-£\)&!\9ey¬\8f\8c\10æÍÑ\1f\93µò\bg\ 5=Hè+\0(\99Ø]ßçGþ\1a\ f¢ðG\93\86\ 4ò\b P¸PI\1fè:\9f$>[\92§¥$ÏȪ\10æ5àp\vVe\13e\12Ë([n\1f\9e\86\86pË{]«>¦IÏù \88\14Ew\T\1a\88çM\94O\b®\f\83\v\99ÓtØ \ 4¯»ë;~\ïÈà4ö\8a\8bþ ^\7f\1a\80ÞÆÄø\8a\99.?´¶;]\ 5áw8l_\99ûz\10ýÝ\iì¸úòP©Ñx\91Oð^ÂöÔÍ1\b/ý\9a3Þ¹À\b6ÓÍäU(ÿþ\99û2ÒÉ\14\19Æ+\fM\0²Iæ2Ó¿\80Â\8e¹YU\85H\rà\9aY©É¥\9e\ 4ÏX`\15\ fDZáåæeè\8fD\\9fdAÔí\17Þ®ÖxÎ\19ãá\9f¨Kþ\9b\ 4Á[¼\1eüç\87T¶d/¿ô 6¬0Ô\97<qÀô´H\ 6\98sé\1c\92\17>«\11«Å\e\8ctéù\8eÄ\e9«[s\83SY¿\19嵦\8c\1aü\9dL"1wº\f¢/\109·Â\fí\85\8a×\ 1r\f\94Õ|°\ 5\86øÎB©p:Â\8d\12\9cM@Ç!Á\945Ý»óÆõ\96´qÌÉ$PÚ£ö?\ 4\19âÊT@r\99¥¼8\9d¼%\83³,\ eÜviXG?Ã<\84^\97fd\13\1f¼'H4$Ì\13×tw:²\13Û\12}*\84ÃS¥\0¨m¨\10x\84$\r¶ï.\v\91èQÀN÷¥\aÕë7\9f~'Ô\13@×ÞËe^ðóÔeAåÚ¨¡í[ÆQYI<KðH\1ffmèJ\86
-ÛT¾Gø\1f0¸«HÊéb\90pÃ\11)\10\ 5ÎÝN\ 6\b\0áÈB4\80<§ÇLÃ\8b\ 4\12\ 5\82t\1ee½Ç°\f?_~\8eY,½\1a,Ò\1e»üèÌÑ¿á®mÂ"\0ò:ìb&|\ 5\14`\92*r\9fû\84(iø\8fóª)n\91¾\8f\8bhV\1ci\19°í\8ba«WÐQ\10\ fðBíø1¾\ e EE\ 3ùíÒȬǵ\7f´«ê\ 2å)D`¶õ§\83òål0;¶0ÚÁÜk\83\vK\1f,\0«\84¨ºaâ^}¹Cð\ 2·/M§¨YÒÇpäèÎ\84Z\99쯽)ÐÚ\81\89\97\19\13\ 1»Ü.\ 6qiñ76~ºy7æ;ELV0\92\ 3¾b¢5\ 1\1d¶òÞ¨K\]\ eIí\rxl,&_\ 4Á÷Ìx«\13\9foW_ÿ®\862\8bl±?¹\ 3'¼ívµù '\ 5uZ\93M/\94¹\f\80\17Í;%æÒ\802£³îÆ\14\10©\15nþqíE\19\1dÒd69qL¯:%{Þ\97#\85ø\ 2yrWI \8cHäL]XE\11ý¢Ä}®E\19(Z¿ZüMíû?¡\8fí\92§sþÑ\17õ\11\80\9a\90\12bíü\8dié×Ôw$¬\ 1ë\1a)ýæAx¥}®àUæV\95í~9t\18\93[jö+¾UÇ\1e \1e¾\17Í\7f\88\a\0ÙJMê\8b&I®nùòI\rI¬\99'SIsöÊ\9d;æ .ÝLÏ\8c?\9a\9b@/0bÃ.i¸\9cYUô#î\9bdµ¿ÂÄ\92¸ Û\9d\87z\19³ýÓ¦_\e\8fdÌÈ\ 5¢{I\v´,4¯Â@¢SP¾ß½¶ó\98mÌ\9e\b\94áQ\97\92¼|e\82±\e\1f|\10&z\1e\90P¬î¬ò¦h4JÅ<¬ó8î§\1f»\93\12Í«Bdª[~\10Cc\14
-\ 6ë\9b\e \9e#¬ÊL\8aVÐëö;A\86Ò#*\18t-÷\82i÷,ØÓ~\9b7á\8b±°\9f+° \7f\16úiÂ2´qðÙ:àw\eã±ÕÌÍÓM\95h)\8f¬\87S¨£×Ük4hÕ4\17kI\ 4i|Á4¥§Z{x\f]¹\83]µ"À·¬ã2º\8d\8f\1a\8a\8b0Ü\1e\95`\18{ì\15\18$9t\13Äü[\7f²\ 3[/0rù\v5\r¿ôÎ \17 Ïg\e\89nô1]\1aÞÁ\ 3ÂéúôÕ\0 ÿÄÈ(Z\93׿\19ëyYêy\1fMjG1)¬ÿIÕL·,ovÐ'\93Öî°\106Æ\19k\a:o3Æ\17Ýñ®ç\16°QN\a{&Þ7G\16È\7fÍMf¾8íÅ[\8e\10íûÈ\1cÁ\1a\95F]\1cºñ\83t\86§_ì\ 18Q\84\11)U\r_!\a\1aË¿¾Æ\9a\ïõ5\8fÝÊ\bPI\9bâT%Ó¦ïØ\88<\16#å\88ÉÞoF"È´»qF§\ 1uCX\81³\81£\9b)\9a#aÓ¸éÔóì°\85dE\86[3=\ 2ìáIÄ\10\16\9e\11>7u¯\a¿º´Ö\1e\15æ\9b'¢L°Ë\ 1?hhÅyxU4ZÝñIþ\12\1e\83ê|Ê \863J,ª\14©©[¨\17C\87\ 5\83þ´² \82òð2Òæ?4ÊÐ\7f\13ÏÖ:\96§ËÄ,\8c\9d\92£\84¥þ4\87\aØYKn/\HÄ\92\83¶«Ô\9d â\v\9b\80\19G>ðb¡\84\1dÐn8¨¤\99\|¡/è\14×3Ór\9c¹¿\98µÎtÓjPÃ\96©!oÄ*\8b4cÝ\19\1fA«0O\8d\1f-}Mt¤n7"\90%hâM'\ e^òzÔ_¾\85YÒñÏ¿v ®Lìí\81û\87§\12*W»:¤Ã6ÝÑ\ 6e\7fäå\80W\9eï\9f3áÌM$Ô« \r¶\96¾\r&ÛÈúvD\81%-¼\0õ!Úºi¼\85\ f0\18Ø\ßØ4Q·'>àwÑÓÝðd¸XWÛq')r\16\v\bÕú¢A61kÙ Â\eQ\9cf¦\17/\8bN`IÍê\90ç¤\7f\9a\11e?Ö,\17¹¤t\106É;H ¥ßß\1dYÇBÎn§T\8eè\182 ²fØ\1aÍ\87Û\90'¹\16|ÛÄ\00ø!X\83Å!ý\ 5/\1dwK\96æ*åYÔ»Ö\9c-]\e\92¡\9dÎ\88N\97iLTëÆ3T)Så\9aõ8/N¹(\1c\9f4\e\87Ûø4f¡cñv®N(t?%Ý?éÐäZ±î^3îí
-\90\1d\9cB\83Y\83¹\0\ eR9iêG(|&¯ØM\99\18_UÖ\0õî:\92Þ0 rQ ;7¦b¾ç*Å-3Ïc®Öjj\8f]AÍ"¡²y\vk\9f¸\90\8d3\9a0ò5®FÌúù\14\87\97kïÁÆ\7f 1ÑöÕ¼B\ eèV\11³ Èë\9f³[ïÂÀ'&\86\ 2¥C8õUÍHu6\9d ¼w´\ f>>\fc\aø\14¡(IÎ\11\ 2,yî=rfÜx«\15ú®\9dKDåR?CÖeÁ\eY\7f*ùmO3\91 Uj;\8dl¢\84\v\ 6,\ e¬\88\83qG5Ï[õ\8c\11Á_òüÃ\fÔY$\80_[(\ 4Á\ 15æ\90سø$G<±¦6Û\84C\955Lë\r¼\7f9 \18\11*\97 L\94KÏv\90\84æá,\15\90CòÊ_@lªuUÞ+¢6Ø?\b\rµ#jtQÏÚñ}³å\8eÙÉ\13§\8c\9d\86Ç#^T\95O\86PÀ\99=D«ºµî\1d\rAó_Í\86®×!RY=òQ¼S\vÌGõåuÓ\12ÈkÀycrMh\8b\83xo\7f\8f\80|±jpcè\89a\91À\91Eþ1TñèÜêÕ0ÍÏ\ 4«î/0ÛéÆàÅ_zô¿\941\14\93\9b¤°`ñùxML\r\19\16LéÚ\9aÞâ\13µl\92¿Ù[zh\96ùÐ\9c¿n#%ã\11?ú5àÚ\7fb$\7flé\9e\94\ 3«\v¾Õù¤\86_\9bfk+Ý+Ê{%Ðß\ 1Iʾ\8a\89jmÊ\16ªÞøç:å\11Ì\84"\19\1f\ 6hô\13]\87ÂIý\8e²jð;³Ö\1dNÝÈ'%}$\98A\ 2\8blÈ)Ô\19ß\13Cù-\11\9fÖáÛ&^ê8.g\9eâ\91*«:\9a!\1dÛç4ÌR\ fw¼\8eÛ\10¨\8f D\9fURP©¾ÂÓ¿CiÙ\10AdkÖ'\81\1cS\81\99\ZfÎ)\91ÊÐ~°\18\7f¹\15Â?ì\ 6p³\14\8c \9c"T\8b-£\9e¾ää\1c\94Ù\92¿ÓT\8a\983oj\ 1=ârÌí\9dó\1c\rzx2Â\19\98Ö\9b2ºòâb\85\ 3v\7fô~w®Zè\81(\86~ªÝU¸n:\f\89<\8b´½][\9eé_\88\7fT¿Ý¾×ê\ 1%\9an_çJÀÜ\10ÝC!>z\0þoÞ\8aã\ 1êCÜ3É\1cÉöD\1f\ 2ä3\8e\82úþ`ï(k\v\ 4 Z»äÎuV9s\aÐï\a\0ï×t\87¡! ¹gÊ°Ç(Ì\84³ëw\b%\ 1ï±\12\v\ 21\16Ú\ f\8e³j"\86ßß+\b9Û\84»Íuõ\18\r\81Eð\15\98\9f8ð\ 2*Ý\93Ø·Ê÷\ 5õ
-è ô\84\97\8dE\87N\11¶öJ\9c¡r¨?\bûÛG\13\18ÏX\1eáÉé\99¯\1c3\ 6m-\b4B¥¬xJê\rKo£,°2\9bKinU°îîß\19zèE\87E.ÑMÄì7dà{o3O/\8còÿ³cH\9a\15\81{ÿÆ`\99\95"\7fó>\84«k\10Ø &\8e£ê"\r ÒPâf-îº.&]\8a¨Ñ\ 10Äb¥L\13ѧWØ#å\18B\94\1c\90³HJ%l\91\95K£êÿ[r òt\rBq1é¼9²ò>\1eÜ\ 6~ãieÑ\95\9eo\99˶\18[\ f¯M\92òýO¶\8dõ§\87\1cÆ¡·-ûçnÒ\9a\80\f^Dð\914Æ\8aü\búeÙ\90C^¦\81¿OÉ\91\aé9cq*\ 1 \r\88èv&\86\ 5LP\96\edH1Þá\9a2òEÈ\81éû\9eæ\10+£t(\8a|â4ÜæÁjÀ
-UßìSÄúIf\81\87âpõGUZ®¦¤ý_Tq\92&å;1öºIöPÇ\ 6Ö\1dã
-fª\88·üïú\ 6\94ÜS6sÓG/\9cSd_G\9cáý\8d\18£C\90ÌC`K}Ï°¸\8d\1e\84P@ÂÿBDA$\88¯\QËÇüPåØ\88·Ù\8fºýt¶ú<ÞÖ\b\88¬\ 6Di×ò\9c#=ìÿÀp\1eZóV{X\f\ 4êÂ@]/w®\94β6h\87\9eú\ 4}ðU~®µ
-.\9fÎ\98t<OÓ¤Iò\10¿T\84\ 2\81º\193+ÈÅÿô8ØOYeFe\98ÏhmÖ\938\12â\85\9a\84\13_P+ý\v ´}P\93Cb\9cRÖ¶\9c\8aTyÛÇÖn¦·o\87ËÀD/\89Ûê°\14{Ã?V.có>ßX\99Á*ú|Oú©\87gúï^\8b\88K\ 5Sñh\80n*\rT¤\8bî\89\84Ñ\19\80Jzì~Òh§Í\96Y±¨f¼JYFEdÄ\ 2SÒº¯j\81\10"\8e(\98w\86î=\97\15Zݨ\8eù\1eYо\9e/w;\87\94º`W¨y-Su²\80\7f˸ÊXHÊ>͹®tìu\ 4Æ#Äl l\17Éócj³p¦®¶]"ÚK\82|ÑTñM¥~\16\16\96¬Ir{\1fÒû[\1eÏpܹ¬À\86äþ¸h\ eÝôXW¾2îW\ 5ÿN_F)Ñ\9f \1a%\1aÇ\7fÌ\1cx\93k*IM}P>>\1e\97øî\ªAßÂ\v\r\ 4\ f\8f3òI\981ÑUïåGñ½ï §@<\85V\16\82´\ 2¦\81æ(û§\17tíY»'E\7fÐHkå\16×ÚGªxá\ 6\ f¢\10¸%Ð\90ëfÚå\9e¨Ôqz½\9a{$\ f7/B\93¤J\9a\ 4üp\19L\8d\80ta·\186\16ÌL\ 2D¼øá±Y\8dp`Ùux±/¯Ó.B\1eöÑòbUT\13\93«\9f\8aE:º4q4çï2+\ 1ØÃz¦K\88ÿÃÏ\1cyÝ|R!£¢"&õ\90\17.ª³~Ï\8f\ 2\95³í\9a\82ÄiD\10b\1cA\19\1ewi;°,ÁØþ\91BX\8cb=Å\11.¡QÒþ\1c\v¶vs¤-©·
-ØX]ÏYÃÊßYÔÎâK\a¦\94¯\aû^\bÅrA÷ªJ¤8\8d
-\9bb·Ñ\vn³\11üo§¥GÙ㳸\8dBË\90\8f\8c-
-ô~¡ÙU\10\ f'å\10@\ 3ëèd?l6ÆñÁÖf)íÇ>`ÚQÈ\96_%g@µ·ì\1cýîµWf\93©} <dII\16N2\98įì<Ä\8fì\9bÕ¢\19¹jûÀ\9d\9b\ 3Î"ÄèáTnë\ f\8fñ@0\ 4]a aX\1cÇ\84\7fUrnnøÔ\e.¬Ñ9\8c¾Fñ\1fµ\1d\9døé»0Ñ.i\7fÛq\1eu»òóp$\1e?é½(¬yga0=kàß\19Cû´Fg®©ÿÉO!\95Ns/ñ\98¥É\94Ñz\99\9dÒ̱Q ®4\96ÙlÊ\9a`é\16¿eÝ\vXÍ~\bÁé/uÜÊ\96{ìtícß²\82\97ÕÓK~kn^K¦n~È\83(\87\0/i§t\8e\81âÈ\8cuá\ 5«½d\0\18\18@\9c¯\14\13@f2ÿz{\8dÒW\8eî\85qr,\7f\19D·\ fÐ\aÍ0\9aêó\117H\8fA\10]%,ì!\ 4µã¢\8a;Ý\9bÇ~1í$\83\e=2±nOèX\9f\f\9d\8ey\8bpï7S\86@i\añOv¼ó'\vøG¶[!2¢T\97¸4\ 6r\86\94¶&Ê%lZùW¶oÎÙ´øÉAïÉó\ 30°Â\88\10r\rËÐ:âGÌ°\93¼u\81ÎÖz³¿\ 5yÝÌÔ.tîçà\10cíæ|¤\16\1cлÒÄ\81rXçF\17\_ºa2nöz
-\9c<p\87l5\84Á'ðÛ ð\81M°iLpåÇðGc\ 6âã\90\1e´Ù\94uÈ0á?:\9b\bg5PR\16\1f.ãë\ eX\8d»\7f \9a\88.NI\99¨m¢×æ\ eZ¤Ú\b]\89\10$\1cá\93bð!·Â\87é\16\86\93nQC\89\87\15Ç£òYz-NdæùG%á\88\85Ü|E®«Ü v\12HéÅWu\96H£\9dÀÑ"\11¼\ 4Fq\ 5×\9dÄxú\82±>hp\17ÕÙè\bi¼UÆr:\81\1c\1d\88°jKaû_¼Z:\0¦*Cg\8e\8a¸n#Õ\1f©þÖ\11P\97î\9e\95³\18\9fB§#r§É
-²:KÖv.èö3\1fH´q]7\ôf´Ê«´\16A\rL¸\9b\ 5\87YgZg\1f~#=ä\9e£QJP¶\89\9d²H\16Ä\87 \82Þ\83 \Aq\84eL\91\\a7c\1a¬;ªÉ\b%r·Õ\12Êãdv<ì`\98\90¯àßÛ\v\82ÑèÛãíq5<¶ºu.ü¦i»\19OzìLÖ\aÁ\9d âð
-¸®n¢óÍ\8cû\ 4ÜÌk\11iÈcäÆ';Øm³ªÞÎwHã2s§yqÉ\16¡ã\9c~¬;«.×\99Õ@cèÓIH±!Si¡Y.\8aüöç?\ 4ÅàÅ\16]\ 6ÐÛpóü¹\8e%;ài{e©$\94Bw\80\ eM\1f\90k\ e!Û\85\97\9cxËòEáÿ>Ì\9b@Iê~\19\12\88\1d¶®¯\ 6³Â¢4\91\fìû£9äð\10fu ::\95X\83Ç\82«¾`XßÂ"û\87н´6ór;÷ÕCe`q\98ãý²\90\rG\12XIJà\10¼iHÆ\a\10bmß5\b@(Êãèµ\80\98ß2véMÌ\1a\&\93\b\ f\ 5¾\93i\9a\12Ùüj\9edAÉdd\8bZ¸{c\96t|°\90`S\90êÀj\97b\16.FÌ\17\1cÓ7lg+ý\975ÿp¸\17\8cð9i\16MòYÑûK}g\v\8cò\v[`CÓ\96á̶ìiF\ efSÎÛr ä\18^\ 5kÅ*{\90нCg÷S§iö>Du*\9eî\j}+h9å©×_©t®¿X\%Q9.\1aa\16uw8{\86ã\01ææ\vI\91a\ 31"\f~9ülÅ\17=Çl¼\8d&5×Ʊ˳j*㪱]ðZ\8b\97Ù\88\ 6.e^mU\91\9cûµö\17\98\11§·bÉÝ85Z¶\14[£ ðÁå\1c:*¹±í¹f¡2c;\92eð¼IDô\9e$0'5S\93j¢¨\80«Z¶ïÙà\0JsÁ\88ÿ\96\99·\14®OÆ|{©øÊå wÌ>¶\8b\9b\12Ecæ\ 2\16¦\954ÁhKàvtIÇ\fE\ 2S\97?ú·\1dÎø\139Ok\13Ó\8a\v\8aU\94·5ø\90©\18ò\87V¢¾\9f´\ 5ní¤z\/(0à\8fíÏÌܸ¥\ f\1a]EÍ\98e\ 2\½kõ®\12t\ 3ô)2ø5Ôoåº\8a\9f\96á)¨xSî´\12\88%\0_!¿J{^ÛÐÀ_Ôc\90£*\9c;ku°¾ÈÂ\80¬\9a´ÆÅÝ\93ð-âXæê\0\9bm\ fx[DØK@Ê\ 3\86³ÞS\11ÖhéR·5o\ýO±\89ÆÌ@o\1d]Ħ°RïÂ\97ÝÂ\bAüÍ\1aY\98å\9bK\96\8f\88vΫ\vR3/;®.Ñ0ºàÀ'Î\12\8bul,=ZlEjÀÙ¾\9fg«hÌIÒ5ûgaX\98\1dá?Ò\bëÅñ\v£z+ÆT\8clã\8f\ e\ 2%b\19rкR up\a¸ï\91`ûá-nl\ f¨¼¦IE\7fÜ\f|R\1a:ùdÛèn\18AϺÅ\1c\11Z\84\88\ 1\13\8dôI\9dôÒ4ÂúøR\13r§\1d\90ÎÏð²[bóÅäÌ{vk3ùz)Â\ 2\95\a!ô×m\8bcIQ3§9\1a©å(\99ë\ 6\9cF6¯\18ÍOCúa\82³#dkH\r[\14\96\18'\82æ\1aÄ$"ÈÛ´¨ob- \85U\8b¥\ 3 %gÛY7ÿÌ¢\9a»\98á\96\ 5)r¡dÍ\8d9[\ 3o»·\96`ïÔtd,ã\10$u\11ïÃ\89ÑäÙ\18^°&)\97o\89\fZÒI÷«&\1ayç\1eЪÊåÓì°\9e\1f[#\7f\91\90öõ+\ e
-ûÏ6èå\19qQï\94L{\19\83½^\ 1\ 2\18i^ç"Se¡+´Ôx\bò¡p´:ÈÏSÒÀ\94¢ ÅiÞ¸\ 4½\0ÁW»\1f\87Dz\17³~þ`h©`\16©¹U\13Ü*\ 4\95ÿ \ 6}\fy2ô\1d\1arñï\9d¢]$³îÂ\91\95°|ÛD=U¿íÿ=^g²ýÐÕ¼ûzT\1dÏ\91\8eu\98^ô\1f\83\89!ÂÊ-Ú\88Üô\95ŬF§\94\0£¼\eJ\97\9cãvqþµñmcÑNòLOÛ¿\17J¬\1dݵ\82§Q¡ú0ä`\1c\1f\93õ\99\9aó}\9aEóÛÔ\15éZ,ÛBævò\93'\ 2½ßî\8c\R\ 5\ 69Þ\14íqwg?]ozÀÉÎòWy]Uã\85R´:¨û\bxrVaÀ `>\91\9f"Ñ$ã´P\ 2yÕäÝßYmð$ø\ 2\1aÆÞ\9e\8aJ\96éÄYd¾u\8aÌs¾qÔPÒ"¯\1d>¯k úø.ã¡\ 1K\16ö?:\9cà)¢ÃÅ×+ÄMw\v\ fQZ\ 6ý\8aµN\1e¯ý¿'\1cÑ\1fä¹$v\8cÕ]W%\86$í\923ÉÖî³MÍ\91Z}ô\81D\8bNÇåÙ²\rt}ڳλhë\88.ãõÃO\ 5<\81\r\93?Ϋ\17§n\89Î
-\rx-kÊB*¸\r\9d\ 19 r6±4P\19\ fú7o\8eÞ'sãO\8c8»î\10W8*V9â¥S\8bî\84\99\9fÎÖi®\14Ìr5nj:×=KhÐ*üÔ;Ì\1eÛ,\9fJ\8f\8aü\99\168ÖØeR¼XhÁtô"¾\8aÓj³ø¢\1f.é\8cìá\e¿Ö::Vß×b\96U\aÿ¶y¼ê&2Èá¶Tt\e\1f\9e!x\fÇ`Ö\ 27éåù\9ea¥
-\19Ó ý[Ý\9bOÕð\91\95æðLf6)\ 2|7gé\93Â\;OÍå\9f\17Ç\ 1H\86\ÎIzë\e²ùW
-/\fÖë\87HI£¦
-º\rg\1a\7fÏ\97¥(W\0\97§Å%\94aÔQÑi\1cµ/b\82>UÈü\17Ùi¨&ç;\82ëx\8eãÌ$\89·\83\8c\7f¹ãmQñH;½r\ eá\89]ò`æd\ 4\7fu?\912º4=˪¢p\143páÙ\8a(l'©b\9aÕ}\11ì8\0Þ"\1e\880¬\96ÈÇ`¡Iå\a?ÚG}ÆÌO \×¼a\85J\14½×5\eÁ\15\97Ë\18H\89\ 3Û\12ÚòÝ1( Dy&Û\9aø\ eo7Æ\1aà\0i`\bÃ\1eôÏþ4jðvÁñO\87\93À\9eh®C°k½\r-\8c«E\99«úË«¤À\9f\18eÍ\19ª\14T\ f\91ü\8c2B\93OE`uËaÆ\ 5DìÀ Õ=âaOï+¦=\83~]`\f\11\82Å\ 6\90\8dù\8dÔÈ\9eOÓ¼ty5«BØ%é\81Ñl\1fQGª£'H!à×®ë\aæ[QY,ÅS^¥\8a;r$Áû/S@¸á0D=Å&oú\866\95ïy4\W¥¬kg±Âã\a²²¡U±$ÞÈÏCq\ f·gÓBD\8el\94\9e\83"\9cU÷ÅSÿF!
-ù\87\17¨?\94VÄ1H\r^ \8d\e^éë9\7fHùg^Núz\14xi\h\8a¶\1a;oSdKÄÕã\rá%Àö¦bÎ=\rßÒð2Ü\ 4 ã¤Z\9a7\96ÞíM"H\fH6
-*\13 B×´4°`ÿ\12°\7f¿¹m\93ûKK\84Ö*\82Ñ\1cåkÀ\9fû*q¢ËСÓóSYñ\ 6×ßûÈÿ1zÚ¿U\89R\83I{\9fW\ 6\ 2\1f.)Ñ3G?\e\1a'0\8e\ 5 Þ\8a0À³\17Äñ\ 2¸\87\999m\ 6n;¹áw\91Ñax61ÝþÚl\8av÷SN\14ðbx\0ü0Â=o!\19ba\88<Øx O¥m\12¦â\1c^\99\9b\94:Ó×d\92À\99M¯\89\ 2\9d6\9aík\0ß!£»=Uiþm³!õ\ 5°^\10^ç_\ 6\0\116{g\10[©\ 1\1c\r·;\86\96\ 5?Ý\1a\13ÅÖú;·"\11 ø$CvR[\84C¿ínÿêp\8c7b\8f|JƸ;\vâ\11¦qñèè&:ç\rú±Á³zú ÚýlÃo\904¡[\9b*oÜ\0n^Gå\e¸ÝA\7f\92ô\83M \rv3ª ì'XlRôå¿À#\ 3g\97Pt\ 4)zãòòµs3ìäë®\90Áº\1amé±\17\15\8f¾¼d\ç(\1anå\80 I\9e¹ië\8aÔ÷µ\82©\ 5Úcíú\9d§\1e2àê\9f\80\86âk\89])\99<\1a\8a!#·R)ÃØ*\8csñý9¾Å°9¶Î\0\80hà\ 3ÁÅ\9bÔS!\ 3³a¯9\86Lå\9dF¨¶TÕj\81?\17T\9cÚXL¬\16\ 5Wõ\8f8ݺ\98͹^\87\ar p\9cr&i%Âr\8fî\84¿\rK\9ed\9d\2§Ú*ü7% ß\8fÈ6fÕ>õ\87sUØxz\82\14ÍÞ\86\95»B5Þ©Fø¦ëìÔáx]\8eb\aà¬Xð\83÷}ÄSȵÅ51\ 5\96ªÐ÷ú\13Y3\94V_E§è"\1dÜÓw.\12Î_øÌx\^¬#,\81¨£æ\84 Ñ\0|\14¨]4\e!\?3ú\1a\17ïó®¾\84}ŤûÍÄ^&Âd¢\80æ,1jRõ\0*Ä3N\1a³ÁG¦3½\85[h'i!\9f\95\9d¸XøB\94ý\ 4¦5m\12iHþ\81å\ eK\9d\88\92æ°°\82S\15å\12\199\9a:XeVÜO]#'\ 6\91l=iä»â¢
-Ó`pÒóNB\9cÙ\90?\86\18\ e©EqØ!`\ e\98jß5u3\92\13Á\ 2$´A˨½Ì?.\8f«Qí\1e0h\0C*\ 1Ú#\ 4\15\1cªë¾\0\e¡¶Ãqv·õ[[~×,5\9d»¤#½i /Aã\98N\840Ï&\8b±¶³\94\13?µ\aàH\9c\82&\98lö< \9f×\a\97ª_\8az3^\13Òñ\9dßøýÈø[Ü?ÀÃ\94P\91\99«¸`´¶k\ 5ÝaGZ\ 6)Y\10\98\ eLîøÈ¥%k\8eMÚq\86ÐÅÜCúzñÍ\ 6Qhèaõ`n\94\17\95kq¯î#8\0éPc\ 5ûF³íºPæ\f\84TÚ`ÜY¹$\87f>Ó®\ 1ý&\0ý\85ó"ÍjB\ e\7f\94ÍÒ*p²PC\f\14\84ÎcË\9bÈ\81ÇN¬¬\82Éqn%Ë\e0Ã\ f~ÏÌm\9e5*$\9fè*\ f\97pM\8b¼ãx¥°VGÁQïÍy\r-¦Åÿ?dòæ\19\17\95t\ 3\8f\90{\97Ñê»è\99D\ 6\8bIÞ\ 2ß\8dé\17ÕéäuäÝnª½å\19\a¾Iì\aÚ\9fdv\8d÷.[¢â¸ß`yÔùD$V\9a¤\95£T@ZvèÌà¼\9b ;<ùTíl¦Þ\1a^\ 2\17\84±3Ï}\9bX\87í=\87oµìï³»\9fâè\1d\8bÛréø.\93\81÷}ôXÕ\83ô\ 4
-Ã\95)\eB\87Ò¨ïC\9c(24æíB+H\ 3\0\95\1c¡ptw/\80:0¾×îj`ª³\r\97&0\8c]Ü^¾\1f1ìÑɸF@·Õ\94
-\19\86Ò·è
-àq÷ÐEvFÉ\17ºZ#4ª\1c\8aj\0\ 3À¶\ 57[n <~0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-10 0 obj
-<<
-/Length1 1686
-/Length2 10475
-/Length3 533
-/Length 12694
->>
-stream
-%!PS-AdobeFont-1.1: CMBX12 1.0
-%%CreationDate: 1991 Aug 20 16:34:54
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /XOEAXU+CMBX12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 57 /nine put
-dup 63 /question put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-53 -251 1139 750}readonly def
-/UniqueID 5000769 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÍÖP
-½¥í\985ö \16ÏÈð\vl\ 5.×j\87\85kPôØ\rúëP\8c\97ø(\1f?\88±~M;\90Àö^Ãyy\1a¬Ü\16*f˼[âõ:\8dç-Ñ\13µZ\ 2/¿îe\8c¹_[³+ 5{^\ 5\ fÝòd tp¾ñÅ!\19¶ûÕÇ~¾Ùd¬Z+¾Éسä\8aå»\0:cÕEwK\92+\9d_ö°\ 6nÎCdZ\13\18y°2\13}m\823\85þUó@-U\7fÓ´Hkç\90\11Ñõ¿®\\1fGnæð^±ÒÊë&\99X±\94R\11\97³\12üÎÔ\86\7f<\8f½\ 3\v×\15ØÿÚ\1dÍEK\17Nz\1a\97µ\9fçpæw\ 2Q\9d\9d\9b#Ö\1aÀ\84$ÕU$*\8c \8cI®ó\0\94]\99¹\99§\9cçH\ 4®kýæ#ôF3qD/e#¥öÎ\19È9§\bÀ%\13."Æ\96ÈÌäV\80å\19q\89Ðù\8e\7f\r_\95^59p³\92ÏS
-hÌV°\ 3]ß¿ l0t¾ë\a9ܼ¢r¦æ)ûzê,[§ºå\f{L¥\95ßx \f5)\97ì>ådß"\9f»Tsõè̱Ì\ 1Sé§â\99¨ê¢\9biѶ"±ðÏüX)\12Hu\96\aÙ\11PË\ 6Q\12 pÜ\9ft;ëïDö®\92úÎÅvX\99\9c\8bð\1f`a\15`\ 49bÀi^\e¸} \ e\ fÚ«e\9deW \8af\vé®ï\8aå_q¸¼v9My)gä\eØ\ 2;n\7f\8c=\99\87ÕåLS¿+»2\85[\94ds´H3½x\87=øäÇæhÿÿ%ª»\8d¤\14\8ftK\9d\ 5$ÖË\82\81${0RÌ]fóñ¼ø¥j?´FêX{ؾ0%vRÎà5b\8aíßØ(;ZÒ\e\8b\14\80$Ø\98\97
-È¡ã>T<äãÄ\8f\9eæ!ÅÎ>\8aé0ø\90\ 1\ec\bfÉ\88``hÙé#\96ëõ\e³Û E\ 5ü= Ôp\1aÇ\ 3¡M\92»þ'½t\11³c¨\8e3¨é¨\ 2ZÃ\1f!ç=Å+3;\91\8d\v\12pÅHs¤\90"-\ 4\1afà\19&\12¾m,\88\95\8a\8fpÁ\ 3\90\14nå \1dð «\97g^\8ei\ 1"níP\12]6Â!¾\8f dtBDK\13ð2_\89\9b\8f¡^\14\14\11\9bEù ÷=ÃIomàÝD\18¡\18\1ey\eI¥(fÇ\9d7t\94¾ÿ\7f\eDA\11¼¤ü+ûryú)8ú\9bâÞv/ Ôp\81<Nà\ 3Cq\81.û\9f\87\ 1E(· \9bäð\1f\1f\84Þ\92-lf×öÿ\96¤\923²9m\9c\19¸[\13/õe\89:Ó¡\1dÛ\88äiü\1dìÕ\1e[?ý\1e>P\91H9ÞåÕÒ¶?\83è§\9583ïâI*01O2â½\9au\8f*½¨\10v\18îø\86ñ9\ 5îÎ)ã &\7f¥\ 6§rqÈ\94P¶ËC å6\1a5þÀà$Ë\f¹7\9d,ôØ~Çê»aZ\8fÉ~ï\ e\ 5¯îZØUºK#»Ã½\ evX¢Ú½\8aC\17A\97ùsý1!\\84³\16\98\ 1Ç]òpPª~\1fæ\bN]\ 1Ï2\ 1Å´¢y¤M\e\ 6m\16ç®Í \96«`¥ }¥\99Q\a\16¿\81E\ erP96i\13ÑínûºJæø´\11\ 5Þ\18Ømj\88\ 2ê¶ñpýon]\85øÀ\fxÈ&(\19©À\92Ã\1a\91ýÍú\vë¯\1d#\8aWRÖ3©d|Y\fQsܳÛà\8aú\96½ý¹Süq§\93è\866òò\12Á\84F9þëAÞ\87e@¯¥\9a#Âçi\8bä\1c¦Ú\ f\1fFèw1<\eþ=\8b±\8dMø\11Y#
-\98ßI6\8eÙ\9e\14¢,ìXË\ 3KÝ\ 3à?¼\81\9eH¨\0«\10_/\êê¯\ f\9e\eÂà\ 4ûHÝ\90P²ü\r\87\91$| §¾\ 1\19²\rëmJ\86=î¿?ü\9eâW]¿h({!\135\ 3jPÁô?z<B\f³Âßmp\93\¿\8bb\bD \84T> ?hý"\f×~\8e\e\9aiý®T\ 33Ô\91R¸Dî\rqÙ\9fpÿ¨ÉpôO^ø¤°]\19tÞf»àN\9f\ 3ëd\99S\80áRzÓ\e\89 ±6
- \17\17åÀ§ÿ=µs8\82·ì0pc\e\9f±Q\ÿ\13\e0¥Ëlfýº\92g«Éc\98Û\9b°\ 4²%Ù [a\99\93èS?ãh¸\12åõ/.ôPTõ\84H\b½Ë²\824Ǻ$
-õúG@Î\85Gª=\ 2\9eüí\9e`Í\88\18ÃGÂ×Üï®^\SÁ\16\8c³/\14\8f¾Dà0\afïòYl#*5y\0\1f\80\v~Ê\14YÂ$.ר\82\8fg´7±l8þïZ[\9em\94|Õ2\83î³SÑQ\97\fÃɺÝh#\13\8b\ 2\1eÉ%Ï\13TGá]AÐ<ÍÙ½õ$\ 6ò#\8d\93G<|\80FNúÕ\93\9f\v/ÌÕ\9eÍ\94_#\9ad\89\90ÞV"
-\8dªÂ\95Ybý@4\ 4\1a(\96\8a{Ò«¿\1dð\1d¹ÌT\80\86"è÷\ 1¹ô\903´1\8aö<©)IáÌH,ûÉ\81ÉÌ\948\82S¢Yâ=×êM[wu¢ü\8b\96UL²û9z\0°3CÒ\8e¥ô\eòV±Ë\ 5»V`<\82\8aÝqfSÚôrJ\b+\=24?!\9aÆ+Ë\113\r#\89>\8e^Ì'?zóÖû´/\9bõlÂ\ 4\r¥NÃäXµwÂá\8bÚÞç\14Ù\82[®ü\93äªÉ!\0
-\aÈ\e5\ 1\84ºÖmðÒ,YðTj\17t.Ó\ e§\93êð¾'\8b\17Þ8vd\12¡\1c4_\ 3\8b\9f )h9SõI£ MAÕZÄ2î\a£HÒÅ¥wF|\95\81û
-\85Â:ýqv2Ê\ 6\12\97\95)f-÷½)\87S\1d~>Çpê\92Äg{\ e\9aºYÏIdU&Æ2\8d»tÄF»©\96¸\99onûSÆ\94ón§Ä\96ºN\ fÔt\1e\8fùn¿¾w}Ýä$T²û\ 4\8a¥ô\1dx± ¬-Ã&ô\90ii\12.ý°·èØôÅ\98ÂÐhè\11\98}([\vc¯ø\10O\80·pÚcÒü`¢çQæa®v\eI1ñ\91ú\94.ó7\07Ǥ\´¯\18ÞiùË^\82Ì»BÆE\bT\1eiZ¸\11µÏ\b¥ý\99Eãë³ù.[`\9c«G \9eÉ!\88\80"8\fÓ \97&5¯´\147\95Ô½;C:ñÊj²\1eA\82\0
-l\91\1fl/\8eNdrÃ\ f¿ê\b,m+êó¤ÕHÚ\9dó\92*vS»ªP`ÕE¶/5 çî.\94\15\11NÚs.Ï|¤mm|ü6,çl$uz\891;Ä\9aa;[ýÙgX\12)Ø@=à@\92\95´=«³dásm\aºçÈ\ 4j¹\8f'\14\ 3ï\9fá5\11ѧþ\ 3ÿ¸\85$\9cyå\14\1eWäMÓ\12EU\0ni1\9aÄv\9c3\11\ 2¹E¿¯\105´Âä®íl\1e\v+){è\ 3ÓßF\9b*ÎÚ×n\9a\9f²¤¾Úß
-rÿfþ\1fþ|saÚ\vÊQ5¸AE¤Ý6\97|Î1\f¡\ fG|d+!Û;ÍHUß Ål2\14f1Å\89\8f\9c[Èov\1e\81ý)ê
-\ f\89=\98n}ªÍ§Ð\0©eåé\96KTí\811\88O`Dùg Ä\ 4ÅeÜ×ÃWy½\193\1e\19fÊ\a~ Ê<\91ÈÓ\1dglHAF³úµöå\16L\83\11§nÍS@Ûh"ý\ f\12òn\1eð©Që|ÎQxó¯F\8fuúxÍ·\15Wô\97\85\1f«\14}¯pR@k\8ckV?>çJ×YÌ\f¸\7f\84ø\ 6C6\89(ÌöÑ.I,û\0\90&Ésw\1f!\84C>T_\0F\98í2ñÐ\9bÛ-\1d¼d¡fo¼)V\93mWÏr(\17öq\9eTIò¦ ª\9d½ÿ¢Ü÷k¿,¥\83X\ 6_sÓrÜÝߥ\94dÉ\9dæ5\91\1f\95\89\1e\98¶\88ZÉ\84\94×\ 1µ@Æ\ e/Åx\ 4\8f¦\87wî\ 6h\ 4¶u\96íÐ\8eõ\vÆ\ 2Ù\\19%ùò=\12ê\0h\14îo\9añè\86Øå\97©g\0þ\97 \0Ä9m¨à¸Ì)\88gõ\8bÌÃû§Âk30½]\\1d¢ó\85á\1dY\19CiEJ9þ¶4ûá\88D\1eûNyêEÃb3\96«2ÿøüRý*\7fo\17S\r/\18üÕ\ 4¹\1cI\13¼\99çn\e¸?ÌÏ\1aeÅF\96¡oï\0ÆÌï³áVn\81\97·\13*ÿ£dXåúG}ɪ?¨ârulEr\91²ڷù\ 2ø\15x \18Ò£L¯\ 2Ï Â»\18=\7fÖØEßÛg\10ReÝfrl\91ñ<Ä
-9¦Mü\193ÛhC_z\r@þOî\11õ¼çã\869ÖÝ\13yT\83\95Ä'\8c\80,\84\8eYF¦Yì\16úØêLPñ¸¡f¨\80Z©ÑÜw\1a\ fj®ó\86Í*\9bÄ\98A\8cÀc\9e\98z³²\1aÁµ\99\14oº\8eåËé\88ìåP\14k\80Ãó\91×AâRæk§kÉZܯп\1e\92Mhn§ð2Éx#\92\85u©BßÃÇÞ-¸\eAª\950-\90RêDÇ%\85\92H\vW\95&Sx<è\96ÐÍ]ò\93\8e¸\ 1õ\1c9{\ 5a\99X\ f\14Þl\ 5\ 6\9dÍ¢!ÿq\97U%=Æ\1eß=\9c\9cg\1f´\96¬Åã\80\ 1\9b»\16U3X§ BrNÛ^w»)ÛºSk\90¦\ ecY²\1c]à-î\99ù4(\10A°\ 3£\92@\18yJz\ e\0»f\9b\8d\99ÿ\93\98¿¨Â\1e¸\10D@äâ\fÜ\7fx§\14ª\11\10ÓUÒJ-q MÑ\ eÚÓÃV\8fU\94î\92n,\9a'¿qÏóù\16f\8eA&Ò&\1d\1e)ÁuDµ]*þ\95\rÝß.\82'òJ¶¯Þ55ÚNìã\93$k\15Dn4P\1d;Á\9b\0³\ 5\9a\b\18æÚI$Q§t\87»Ìq\ e©íw|\94`Ë°õ²n>`\9dM\7f?\86\96
-\89µ²Af³\8b×\15\14î¾{fÿµ\0)ÐJï¸"?¨ð\93*$¤Ù»}Ùa¡xGF*ø\8aCRS\99Ã\\0ñaYQ\11Wé/H³¸$\8d(F:»Så\92\8e\9bï~Õx\ 5tT\0\95µ\19\9d\9fè\95 \89lÐ\95L°CR\1dÄïWâ\80qÝ\8aBÇñC\rR\8eñÊ\9cÞ\1c£\8fg\10½\9aöÉjìh¤¥þn\ fÐ1\96µ\9c&\a\ eÕÈ£J³Ù$Ë\18\8e\19/î°ÁÀîL\1dc\80\1d=\87!iä\88±°\7fm'YYÐ\9a\8fH§Û®É\82b¦ê<á(\9f3\8cµ\92Á\ 1=\86ÜR7\10NC\ 3ý\ 6\9d ²\8eçÉ#KÒ=hÄÐþ\827h ÷@ɹ\1aª\8e"T\rÖÒ&{\0ØqEiz\7fμßâTU¶\0cÉ\14U\9dCð\19E¦(XK\8bj\87#ìß\eé\92ÚPÂd\aYY\11%p\a¡Â\9f¨Ú\ fô\92éË\19å8Í\80Ï?Xd\8e^H0\92\ 3[Ð\83²ØÐ]±U\ 3\87Ä«\ 1º,<\a\a[\8dªu\85äp\10ü>¡ÑÉö\12\1fæG´\ 4Á\9e\16ã\93$4\ f\87ñ¼4\95i{,©Æl¡ùüøÊ1ìì\ 6¯gÀQ\e\91\11nQ\94qG\Ù¿\89¦`¼%Ï\93èU\80¹\9aF\857ö]i%9\840\ 5NµÛ\1aNÁ\85\10\8e\ 4º³iFîƺ§\14@¸sLR\9cVÌG½f\r\1d\v\80@\15±ÃkN¸\13:ñ¤áºxQ\89\aUG8\81\ 2\87øÝÎ\99Î:ÖÛ÷ÛøJã\14\\aàµ\87<\rVÔ\13\ 6Xdçt\19ÿ\1amÕ>\8672VÏ7{ñâ¹1G¥/h\ fÔ"G1;ú§"û%Tð\11䶵[ÕÝMvò»Mù*2\17\9fĨ\féØÏ×\12Ö\86õ\ eOªïFÛ\8aL\a+2ÌÞç&\ 1´øDÄds³cÂÂz\b|î<ÁÈ\8c\11&#\bÊ!Sô\ 5\1dp¶ûYسJ¦1!\8b@#ºR\9dT¢\15{`vÓþìä\94´£çëw\85\fÇί$^£æ¤\95q¤Ç\\95Iíìñ\ 2C\96/«p\10\96Çk×\90\9f ]R\0\86Þ\14etðÔ\ 2Éö«\969Ï!\1d?§§^×u\96LX<kÁ¾¬`\ e\98/{ ®ì¨øïÅf\91PºS\1e 6C¨àÞP\81\8a\ 3=[\8c$\96?¢R\ 2Ô ¥²°Û×ÊeVßÒÊU}\9d\89&ÝQ9\95\ 5£PT²/±\19\80ÁRmÒî\1dÆ˨
-\9e©EÑ,I\85£ÙÓÑ\81Tª?Éj¨Í\7fÿc:Ñ$çrÜÑp=ØB²\89Vó\87h\ 5ë*))ÕÕd?\ f\8e\11\ 5.'\8aÅ\84fÛ¡)5Y\14Ý%µ1:]Âî°É\8d°-í¬;\a\1c¸}½@\84Ûí½ÓÅ\8b'ݲ9¨Ý\92åß\15\1e\95}ð\8açeF-û\9b\8bmÍ´ÓÑ0a4(ý¥\1de?¼fÙ5{]Í,ufÙ\98ëª\ 6<\8e\17ü§/_lQ¹Cf
-¼©HJÝáhÉQbSc·ëÀ_Ý\1d9T*e\f?ée\bec«ÿí\1d\ 5Jf®gÉ¥à\e¹ñ\95Êi\16F\90Încû\15\84pò\{ûâ3!\1eëÊÃ\94\94úgrÐõ9\ 29§\82fhêºß\ 4\10[\8fþ\ñdv%x\12!¦{®L£.@3@õHÁ5%j¡\87ѧ¼Ës'Â"S8H}Ë\88)8CãD*?üÿ¸\88þw#\1eY\8aÛ\e6\9f=\1d=\9eñ\86J3±\94\88¾ì*ã1é(pÌ\9a-\v\1fØ\95\88\11\9b@L\17å\voþ\14lÊR\aì\a\16\81O·Ð\9b\ebèE\94`¨ä!»\17Äée¿{\0Å\94µ¤k5À.XúàÓ~z\ fÝ¡Ð\e\9cújL\1aÉ®PÆÖ^¸{6Ü\13¯àÐæÙ\8c\92\17#Яæá\15\9b%ÕN\fDÑô\9bñ\fCá)\ 4\\93kï¼IXuÞêµ\1f9ñBäYg\8cª\95NÙSóÑú\evÌyAµ\90T\19áV¸\16t\ eÜ®¹Û\fBñ\11Þ.¬\9dÖ\ 1¹Ì÷å\byã^oA1\97\82á\e»Acä\18"×(\97®BwÀÜ\96Ì\89×m\f\15f\8d\10®·?\98·:i©¯Î\9d\86 [¤&¬\9a=²8|ÅM´.\90ÓéúI\82#\15\90\94è\fÒ4.Ôuª\19ÙæLXÒË:ð\12SØ\1fïÞÂwÏ\97ì\93ç\8b½¹Æk´c\10ár0>ê\14\v\8e\92;,¾þ\12N\Å\9aWòHÊo\80É{¾ï\10°ÜÀq\8c\ 5G\99\82ñºaëÂ\88\17p,Ó«x
-ÏYè\11óg=ñ
-r\ 3ñW§M\94\8dTW¶\96?)aÀÙ|\96;Ö¼Fµ\8c\1a¦\16Å2NÕ\93ÅþòÂI«{52 \91\8bBê?åGç\9bôÀA¿\1fÜ(\99R\9d\88.õ \93K O\15\81|î2\86ÆÂ\10\84`?¾¨À±\99\98¹6ÿè\13üÇ.N\99°t\9eG ã$) .¹ÒJ5·ð¢Í\11Ký;;?\93\86\90\9d=°WX+.cwÑêB\85\12¬;&\93^,ç¾@ÿnn\96\835\9c´T\82à½Ö ë\fòî̧\1d/\9f¨Ù®&c\ fE·aô«Ì¾x/\ e\9eN¥\8cÌ\17\80Ww\f\9dG9\12\92\7f\13\98\9aÚX\918\90mQ\10Zs^ü-\17³]Ï\bÛÄ\99CéC\18V2t;-$Ý$\9a\90\v¤àÈÎw\f\99\8a\8e¥]Á\ 6\1eu\111\18\18^5Ô?²)\19U`\ 5óß½»{\16ÐÙ\9dÁ\94\816\96\10î\ 48\1d\1fûÀO\a\80K¹\12úþ4ãtý}«Ë\8c8\12áÔ?;C9éé\89 \ 2Æ$]yV£·\88\9eòÎ\8e5\8d@'òjß\ 2ôi_£Î\ 2ü\7f\rßÀ\91+m®F\85?<T¤ÊËzÖ~ÐÇ6´ IÒ\8eµ\f`t\ 3\97\88Öð\v;\87ÿÛ\85\13
-îÉ\85Cö\95\89\83\ 4k\96f\ fÔ\88\9b\ 4¯#\12\9f|:WÄ\1ft»\rW$w©\17\8a\a#\16\882Ñ?§É\8fÈ~\14Ü\8b\94\9aïoµÒ'O\92q¼þ¸úW\ 4XYÈ\96\96$\7f\ f\83Uô \80Ï\8f\ 5\98²:4ò\84\0\89uò\0\9br0Z\8f\8d¦Eâ7c¹×\83¬ÜÀ]JO²\ 2í?^\14_¿Í\81\U":\ 2\ 4\13\ e\8dÝ\17éÆ\9d\81_\0ë*|ñ15Ö6Ö$ãFj}ø\ 3òë©[g\9ef\ 3ß è¦Kj\ 6g<\f\ 3Á³ó`{Q\11J[\99Á\82K>åEÎÿ\8d\ 2 Ð\93ñ>]c1áµ\88T®º\1c±ù\83`ÿ¢\8eÊßí¨\vº5Õ\85u\ 6cÍa9û\14\9eú3\17Uf8(\19Ü\9b5\83ñé*H@]ö!]KÍþ¡\9bb±¥#E\99Üd,\8c¨÷\8bÏÃ\81dÎHaÆ\10´\ 5\81h\15î\9d\93¼ï&¿åï°\97Ǩ\8e6S\95¤\83\E\93ó\89OJz\82³íÕ\Lå¿£Û¬ÇÝÁ\9c8¨¦Ó\r»¶\ 4<T2Òò\1eª\9f\8aë*\97{IV/\88 \87e\15ÙÍ\1eå,çrA\93²\125\9e\9a\94p\98T¦]Xj/ºì¸\92\ f¯½5y-F@æ\8a\96iO\9b\98»ûp\1fwT\ e30q\8cËöaG\8d\\13àTÕÉ\ 5\92>²*>¬52¿o\17\19oúÐ\9fÃ0uÑ\9e¡{à`\8bgTª\98kG$¥]Ú\99\e\11.í¥¯Nþn_QÒ9\0ìZ:\10\9aâ\93LÛBv\10\15c«²\1f¸Û]2ß\ 1Ílý|\ e@Ñ\87"\9aêPa
-bϾ&\8aá\9d¼à\ 4{G\8fsJôJ#ñ\13jèx7[ÊQ&\e\9c\10\994Ä6\9bÔ\ f_Ø\98ÃȦ¹s§Í\8c\10\82\ 2úÉßý*PJcö¸ß\8eù.pX\89LôWM@.Âh7\19¬>#õ+"»\85\85\ 6v_\14a\v9ØP+Üù£Â ¦x#g\b¥9ÝBéÑ-\vo5\0ØWáÎÄ\90¸J=Qy\96o\11½¤î\9eâ»\7fö¼|â\87\90Ú½\8f\1a¬\1fBÁ\88½\1e\ 3âºÄ¾@\83\93\e\85i4* `ÐôÕ© 8£\92o\91@%1z\8dý\95à¨\96ÝQøоØ!R'\83·!\932Îk\14ÌŧåÙàÛP¥i\7f¤P°íÖ`\92·\9dÎ4R\ 3\92&\9d]ä\9cà#oÍIp\eÙÈÌ$\9a´\8e\94ïÖëCÇ\87
-W\86þ_î71 îr/\1am0É>aþu^\0ï@\rPÀu\81õ\8dÊ\9e4\96´ ¬Mé\v\9eúrk´Á\85\bG~\ 5oÞT¬Öì¨\aaC\0 ß\bkB\92¯j¤eÑ7f¿ó¦vµÔ¥Ìè$\8cPbF æ³(=\1e\10;*ÿ\9f¿.\89\8b·\864>(\98R\16»Úm86\18Ùí»Ìwe
-è¦Í®¿gy\8e6\ 6?\15s¥\1cÅùÌØ°\ 6p®T\ 1h@\10\ 5lè?ÈÌ\97\11\9føL\18@M\81ä\92\ e\ 6 *2úÝB\95D\98Ööü\fàu÷³á\93AÜ\9c¿\11i\1còFÊ\1fÃ\94cOZKúÃÛ÷\eú8,HJ\87ó\\16@uiUä\14!\8eØ\bÎ\12\93;Ux\96M\80fÞøÓ5z\ 4½é´\96ë¦u´\9bʺGÆ\8a\15\7fÌ´\8a\12î\1ab\11°ï.n\1fR \93{T\·h࣡Åw\8b\12ê¤ér\vr\97-^UÈ1°ªn¸%\19p\1dºkGHÏú\16\11(¤\96#\8eE\9bÛu\13Î\9b/öP\8f\0/áv\83\18\996az\r\12&0"\ 4-\84Ü=lĸ<\8cD*\ 1\9f\1dÁ\9dñ^'Eû\9a2\13ÀÊxä»óÓR\94\0ô±º_\15Gg×#"b\92\ 24ÿ¥¦zË\81Ä\84ÛÍ·Ü\13Uz_\88\8d\80[$\16r+è\e&ËÜDÖD\16Ñ(¿gÁè\97x\1a\81±ú5ªD¨Á\99جôüï?£\15SÚdS Bò½A&å!úÿ\15\9b&ã¨ô0?º\13\91\82¦ÃAÙ&¦ª¶áÍEì.(øÌBä\10¶ñc\80ØÒ\ 31ÓL[Ss\8eñ\96ú\8c1É[\9f\84Ò\91¬³>@E{ï¹-Uõ\ 1TÆ\13E0>±Í×cüu¯AmþDVT\93¬ö\9b¡[Se65}Ô¨$®Å{ßÂ\0\12íéDµ\13¢q\92üp3\16éë¯UÇÁ\96¯©\0ÇöÌÛ\82V\88ìï=\ eN¸3\12«Q¾§ÅCð\85ûÙ\85\19à\18×Jú«\84>gn\ 1C\89\9cíquù?w\8alô\89¢r\96awAn\9bë\1cÖýê¨s¡«ñ\8c®lx¨ãÂ\88´e=ÖÅsI\81¡E\80\aÿÀ\97líRe\9dNÒû\1a\99\8cS³ôCO\14\89\9bM\98$ßù\1aÝ\19âYã\18\19\86*µ£\86lÆ çpÐzݺ[\1fÂ*´\18*ûæË\8d$&×¥èjRÞ]ÄOÒ¨(\11\99@\bàÙæ0ÖA\99Ð\87Ã@c\9fÙå{\18ãÄä\89\85\89Áãá\ 6Åî\96Î,ݲe³wRvæ5Á
-\97÷%ÿ½B<\9e\8do\0PÉ£Á\ 3~.P\81UçQÈ
-\95:\17cIÙ®ÄM\15²¢Â]T¿hG\f~,à]ö\rÛ\86l,ôn5ß\89+{ª£\v>r0¨U¾Z\ 4\8a\85e§\8aò\9e\80£\17PxÿvGFàR\ 3l\16\94füØú\80Ç \12ç;ä' t\99ï¾5§ÿ+\10ÿv0~Ø>Å\96iY¸f X¤\1eµ\80ê¦ü\r¦:è£-\e)!ªÈ\86´Bb_Ô\11Ákx
-,\a¡\95ÞX\e\10E\15S\18\11X\10]¥¹7d½\14
-¦¿³\9d\814\82`3ê\9eºì\85J±\ 2e¡ \9e*>9R\15×·\14|j5~ï\12b\91ùæÜh3¾u ×\7fw63òqð½\8fTD\12?í¬]\9dÞWÜø)\9c¢9\99Ð\8f³íX\Êl׺Zn(x8 ¤2LdÄ\1e'¦\93ÄóIþz\12,í:í©§X`»X\97\a¬`\ 5aOSEów¶²\82ºÍ16&'ÅëÝ\ap~Ãé±¼¤wοb\97\ 2:\91aN\89aØ\19büm\90úd³Ó÷½]§©½ü\8fdÀÇõQèZ\97\ 5ó\8c\88Y\8d\eBWÞy9Ú\ 4i¢éCA&Ôpf\13\13ÿxÿ\1cC\0\8dÛ^\8f \86Ú)\b\ 2YC±\ 4Û\19b±TÍu}(ì;ýØöÌ=2\17S\ 1\80Ë\a!¸ ÀRoûÄ H\ 4\82ã û>ÓÕQ,\ 2\92#&\16qx\f\1c\91\ 2LÀ¨ÃX\9a\90°%D3\9c\ e$\f®é@ü.u\86\81_êØ\81\ 1\14Z\85¸g\9bÔ¦W\88\ 10$¦\eãç\94Fͽ³8½\8f2\82óó×Füíú\18\ 3\fÁµm\7f\8c\18þ\9e\v.É\9eÚò\8e\8b\1d¶x®\90_îqzn*ÿ\9c¡±·O\1dT\ e£\a¥$kEÏ\86YçÖD¼¸jxÌôó£_\92Ñ\ 1uìR\88®\1f\ 4ï/C\85\19\14äE²3©\1cKI\$S\ e\ 2\83³ªÖ6zkr\1dmgxUk\15ì t0$ë\ 6Ø¥ðÉ\8fKo>Ï\ 5c>\88,m¥_¬´\84£\92\ 6¾ñ¿7\v\8dÎ\1aÕ\9aCH\84¬7G®®FC1Üô~\89t\97©\15.qPÑes\16\83 \1c&\7fÄÑôgî:BS¹}Ý×ÿ\80ëoAH8ñ\r\bäã±\8f-\12\12\ 38&\ 6ÿ|WÐü¶÷ÞÂ`J@os\91²\87V3g¡Ì¾¹õK*àÙ"E1Ô8üÞ\8b1º*Яy4À\91\19*´µZMÆ.O±t¨ùF\17\11ÂZzV¦\0ï\17®\99Ó~ç]Fn\9eÏq\9d\ 5\1ae\e\9aÔ\8eg\84àÿ;]Û!\9d7/!\9f¾B^ÖÜÉ2\8bòruK[\ 5\88\1fs/gp~Ú\83,¾|\eÝ\16kÞ\9d\ 6\12åöL\12\81W V|¸Û\ 2Xñü\8e1Þ\9b\vØ~ú\90ݯDfs\ eÌLÇ¢¨òbõ¹\ 2û\ 4+\85£À\8a\8c P \86ñÀ$Tj\10\82K©ß\16`\1aÉõ\93nÈ;a''\85\87H\11D}\eØ?\9aÂðÅ2\17_ç;U«\94\ 2wi·6\83¹\17\8f\1fuô ¢E9CÕ\81N"ì S\8b¿Ñ\9b\18ÜLjï$VýNÓÚÞDÝ\95«ð\18
-«\1fÚ/F\1c /\86\11)\ 4Ë\82j\ 1\ 4í>öÍ ùÞG¸ÔKB\ f\95ʹÙ×\a\1c"X^ý9Áo\a]\vr=¶ÈÑÅt#¸Î:ý\9a¾CG¿(\v'\91½±¿"\11q\85ç\17%\9d\ 3ÎÇ\fD4×l¹Í{N\82\98o\ f\f\94#²·\9c\ f°R*\17M\87à§\ e¬sÇùg+r\8eG\r>ÍöX\8a\9bö&JâÙ$Ý÷Æ\96Ð¥\18#\1e)øøñþ<'vÂÄ\926ÖãÔë9y¶\18w\eAqÅ\80Ai\82+\8c\14Q?\ 2¢ÆQ\7f©ÀîÆÙÃþ\7f e}¶cVú/\1cdT\84\92\88È\ eÏe\93µòõ=N}Ç
-\0¹J\91È\v\9d±¡\13~μÈh Ú4AöǤY¦\9d\93\13Þ\8238¾®Ñô
-f\841¾p\19RáÙ\86̯\96\19a0ÓÁ{O^\f\16\8fN\80\92\9cn¶Ý¹È¦\nù
-ßÆ5â¼\ e®Â\8cÐ=¯«\1f\85\1a\r\82Õ5(à\94ñ\8f\13Ù\0\ 3¦\ 1M\84õ}â¿\1c\0ÓA¾>\ 3\ 3P¨ylÑB/h\83\8e\96 ¡»!\rüá¾\aÑ\ 4\17y¢{Lï\88qâ2ÕmoN\93\8d\8fE§fº§¦>_s\95\ì\9aè;cú85øìºx»\9f\87ÚàH]4ª\9f½q¢E|Px\95\1d\10vqüEDÀk÷3z¡\9cz\8dÙ}\9dçÁߤ\8aE\97íCvª5\9dpU\84ªk~¸\\94tFñ´Oâ~:´\967Þ\ 2\88¡k\r]¨%\b³¼Îr#\87ºÐA\8a\86\11\ 4\bã¿O\8c\13\99TÛh=@Óssö>¬rÆo\13µ\b¥\ 5ó\12È\91\84)´Xéþ2Ø+\8f\9c\ 3</\81
-\8e\17ܨõ\9c³Ëü%óU\\9c®xå\ 6¯Ê\80æ]\ 6¨Þe»6*\0 ¬\10·u\8bOTiØ\ 2R\8añ-¨¼ª ÿ\ 2yø¯ñ\1c\a½Üj\ 4×?\0Z,¥ÉF\8c¤¡\ 3u\0\ 5λ\8bG>j|î=\b¼jd%\9ch7=\1c°hÃsb \eIþó#Ï\0ýM\19nÆ\f\ 1\9es \ f\ 1\r{½\82U\81¢\90\95\1e:ø9J¬¿ÖÜ|"ÿä\95VbÉl\8ca%\92\0\80\ 6\16Ð\ 4|\7f\8aßô>¯!s\85\8fÁ0~Ú"ø}taÄÓõ½Ç=Pa\rR\82ðý¹ºoM¨#ë0Ë^VÕF"l3\12XÓ¨ `Û/$j4æ=\96Wµã¤;ñ\91\1fÙ4Â\94\r\f5DàH\16R-b¬©\86AgG÷÷Üå3£F\84;Enõ\87\1eODÜÃ\11z\91WÁU·#ý8lÕŤcòÜ\84\0&à|v\e¦¡Ú\83é²ùo\14\98\ 5\116\91
-\10\ 3<[»!YÚßW°\97À\80\\98(\89\81çVc¼H\13v\94\13:Tð²ó©8\a\ f\94kv\15\1fz·lp8YÃÕ
-\8få}ûEeÜb\ 5vúþ>\rÁ\95\12\e¾\8dÊå\15\98O\0\1cöÉ\r\1f=ä\9eKfaTÀûÀÀ\eÔØAAµ\83(0x\ 5×\ 5~Ã4´#-RPMGO\93¿_t\98 ¶\11§u´\ e%DáF?¼5s\95\89 ¦¯¬\ 1bk*K¬·º=DD\83\18\90\94A,£êK\81\90\14_á\9fH\92à âÈ·¨\16\ 5MÉá-µq¸ë\996âh\81\12xåÔP¡C\16\ 3øJÆö@\9cw®J(\98Û!!d¨\81ðVº±í\94ò(u®ÀÐöùÃm&[ªÝ\12\85n\83Ú\87²ÜfòŪè¯\ 1\9fÏ\v\18^_~&É\88¸Ù\f¼ÞO}3zÅPÂÌóüÓJ?\14¥\96üQ\vÇ\8c·¸Ð\87¡\9aíGóâ¡yf~F\ 5$\87(k\12¹\81Ub\84ìÀ\18«ü\98úA©£Ì\1d3\1cH'È\1e£$ï\ 6(\85\1a|\ 6ü\9cô²ÍÅá@öB\96ÆkW·\rÀr¾2ÌÎî>1=\93üº"Mï\a£ñ~÷At\1f\12KçmõrqâS\ fi\rMÆæú\80\r¾ø¸|oÒ{$\12[\8f\16 Ô\92ÙÏql\89[¡\88\r\9a ;
-0õÐO¦©3\8c!û®|&õÉÂò\fñ #*s\83Yó\85/\9fYÐù¦c\9føu\86 8w7þ\11á(d\8f\1c²òþ^=g\92T¹¤\8d(»_\84\838õÐC\81ÓõÜ¥ª§W.ÎRÈ\0Ðr\811\9a"\ 5+'\v\89\1cGBd\8b\1aÒiÎ;\ 1àáè\fÑ\rYËpbÙ\19¦qÿ¬\9d\81;óm\ 6ß\bü4ÄÖBMéY¤&Ç\95\e\8c\88Y&|RÂ\1cÐ\82û#¼¸¸3á%åÐ\88Ï\9akÈ\ 1\ 6íKÓÁÀ\r\8dd\98h¼È<qɬBøvc\e»L\886\1c(Ý;²Rj \10¢\fArróW\13ÔºÈþÝ.2qd!&\räê\91ߨUÁ:î\eW<¼¡¯\8aS> ³\9d\ 5@ËpÊ ìõ$è\99ÏtÕ§ó¦\84£_=wÃmÉJ«\ 6ð\95\91\163q_\ 1ö¾K`ê°&Ô&G3É\9cïÕ\9bÛqï<\1fTT\104.§Î]6%èÀJÛ+\96æ\8bß!\7f±Ã\88jêܼ6£\8fc÷\80Ò\94/(d·>\80¥w\9d »õ\10î\91\96éY\0zl£¥\ 2à\9b³\13¾ì\97ü\ 2\10\fÍ·\98Ã!\ 2¿\13Æô¤ÄæzPú4(ßZßö\¤©à\9bGCQ\84ZQy`!$ºE¥Y\91\1düW»öÞRgP\eU´Ö@Ç_ãÓ\93¢C\95i½4¿Þ z\7fÅ÷dÊ\98%ý\1eIj\14ô§Ë.¤·éhÃS\9b\1c[rñ2\8fwÚ-Fö}3
-#òu\\98NÖ\ 5î7Ô\97ú\99la\97á¸Ññô\1eÑ\87\13¹\13\ 2âXÙ\104ñì\99sƵ¤\9a3#¦&"g÷\18¦`ö\87¶\1a#ñv\bT\92uÈÒq¾\f\7fµá\ 5aàÇ|\88ôU\11ø\96P\ 4`*ö\86¢Jï\9aqxXR8ß\12\1fH\0\v\94Ý\9aâ{(RcƬò×\8b¦Î\bQ
-ê¯:a,9\95\803µ\91\1c\87ÓÀ\91\15\0ͪËd\92|\9aÜF)\99¬ðÔ#íó\1a\10Â\89*ô¿£\86oIÒàZ9hÇE¹ø\ 6Û\8bz\84Ƽ\7f\8eÁ*\95é8þÛÎyË.Ò\16\8eì;\8fº\8dÚÎ\10å\85Á\18\11kÍ
-§Ñ\9e¢\18\ 3Y4§Úq\1eÉéó\9ftÒY¿\9f\95(ímÌ\9c[î;JÝ·´öÏ\9dîN©Ã\97\93jRéêÆ|\9eÒå á\8c\8bÃej}©\84ñ@kî½Q@\80\eèX{«LI<td#
-&ÜF\9cJO\8dø"\7f)\1f(È߬o\92: \8cI\11\96\12\11Râ\ 5¡xz1Ý7\ro¶å#dmý\ 4õ.¸\95·:=@£É\13
-\ 1W\1cÌ\83öã`<ú\fâJQ\1e'\ 1eb\88®$_æo\ 4p\81ö$\15/¼þPÐÁ9\7f\86ÄÛ\ 3 \90Æù\10§Zo¥\95g\väöOå[\86_)aÌå\ 5\8cWá\vh\14è<1Ü\bzRôõ4\84m\fÐ\97~ý)\ 4T\ 2Äܶõ\ 5\97Iu\7fÓlJ\87\13_ÙèÕ\ fÓp\9f}\9a\19é\11\9d\10r\19,ö\9c¦×T*©÷!Ô\11Ø\17¶\18\91¾Z\94ðº\7fî£R?\18W\92X{ã\1fÎÝ7Yì¸\95*3Ï9Î!ÁÌm\81¤\r;è
-\17\a\7f÷Í\b÷\ e\193®ëÕÛ2\BÈ\bëxª\14\ 2¤\8cç=Ù\88\ 4Æ\82\9a§1_\9b6,þ\ e\9b¤±\99 \96ëu\13½G\9bNgHµqöó\97Ù\186\18ëe\9c\97\r¿§6\91æ\95HË\14M%/\10<¥¦rµ¹\11\ 2 \ 36Gz$\94.Ó\97u׺\ eå)í£Eì»)Ït¨\8dÀÈ9\eØÓ7\19Ø\1aé\b§²njZ\85B\11ã³46ÃQ\ e\13\1a\87u¯Ù3\1f\94\81\8f,g\9dÉ¢ã@~\99ÜÿÕ\8díÙ|e\8aö9\1f¦btY»@_VY*ó\ 2wf\fI!»ÅAã[ìR\86z\9d\arY\12-\18Þ©×\80Í\1e\16\89k¨\17\ 1ð2V\1e\10\8e\98A\97\ fã\1f?^WíôeÌmy'åTîðÕy \19E\\99'\89Ð3`\83\8fEý\13\1aºð\93Ç·\16\aiêi¿*c\e\84P\1au>r\9c΢\vR®ÑP°$ppvéWÕ¨BºÞ\v\ 6{ÏJ\10\96&\ eÖwµ=\1añn(YfKØ\15F±¾\ 1ÆÁ.\98Âä'Ì +\13&%.¸¨ø\a\7fÈ»jç[\9d=H©\95Ûû\9bà\1a¶y%\ 5ó cKíû*ÃǵèʸO\98ç\ e,&ºÆ~XθaM\8eQ´¤lÕ\89\89\19\8fÓZQ\9fü$Àm"ºÄa\9a\19ÿ6@º2éÈÜ~>]Ã(kk½ËßÀ½ÏF/\ 4B-1'è\86\86¯\93ûVN\8a}*<.!W¦fß\e0<\95Vµ½öÚ0Ò\81·\82_þ®ï\8f\97ÿDLdÂ\1f\8f\ 4l`§Åk´Ý1ËÙGiB®¾Ê«RB¼ü?\10íë\14uT5G\98ãÊ謨\ ei\92ó\9d7Ëé`\16|Î#¿Òö\ 6]OLæ°\189<¡»õ\ 3\86\8d¸:¯\86 Ww3ÜשÚS\ 1Tt\9e\18²\18\8fFð\89P\95U\95óß\7fü¿Á\86DGb{y¸+¯ÿ\81Ì\86\ 5\ eV\8f\95'BEÂÁ/\fN\10,awÊ>¢ù\94Ç\86Ê!}@\ 1c6Ëñê\89é\7fVw\1c¸,0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-19 0 obj
-<<
-/Length1 800
-/Length2 727
-/Length3 533
-/Length 2060
->>
-stream
-%!PS-AdobeFont-1.1: CMSY10 1.0
-%%CreationDate: 1991 Aug 15 07:20:57
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /ZRNQXX+CMSY10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-dup 15 /bullet put
-readonly def
-/FontBBox{-29 -960 1116 775}readonly def
-/UniqueID 5000820 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÈÎÙ°\9a'Z²1\19NÏ\82\93R\ 5\82oN\97]ÎÎÇ+,ó¡\88\99ÌÞ\1fÙ5Ð\9d\81; lƸ<ßO#¹¦\r´\1f\99v¬32cÉ\bÜïͽL\84\ 2í\0£nt\87cM\b\9fÔZô£\8aV¤A,;\v¯úëq{ðÞ\9fûz\84`¿GZg\18°Ç<W\11EÐ&\95rvS\ 50¢ûïÆÈöpRx\8eg\ 3»^ä\953\87\vÊ\1f\11:Ø7PÕ\97¸BØÙlB;¡'=Ý2ó¥J\91*D?ÍD÷æþ9V°ª\1exJ®Æüà\8d®\fvÚ\9d
->ºW¹\8ab3ÙéðÃð\ fÌk,j\9b¢:ó\89æßÿNþÃÞ\ 5Ö'lkä\17p<å\b7\7f%\96\ eôí\83´\9b\ 1¸só¦9Î\0óV"\9bdw \81\93?ï;¸\ e+\9dÿ§÷Ug±úMs\9bw/\8dgNVu4ÆÅ»ñÏaSr¾ ±\84r÷ªX¾\8c!m½ß\81Ì
-\86¶Ø1\8c¦\8fâ,\8añ;T×WoäÊZzù\0^¥ÌNÛyÀ«f\8eOìK\7fZ\9eµðäÀ\88Í\81\8eÌOëK@ì\8bÒ\98\eò3`t¶LC\05ó<L
-\ 2\alôÄö\1fÉ`\89ÊÕH&Iþoí Q=A6ç\19Z$lR\f]\9c\8evÒÒá«ùkÀ/´5hx\rÆ\14²û\95÷üÄ1UêF\8eÆ\80ø,\9f\8coÖØ\ 1ºâ\10ä$\ 3Élú\9bá\83®HdÕà\ e/;\1ep3\87Q\r\1f\10VÏEb\96©\r\8exo\8b\81\18TÁûá\12æ}#N\0:éz|ª\81iM\99\15G\81\9aúû Æ\1dcwWs2\ e8>\1e¯\8b\8cYÎ&1\836\85@AdEÿ$| بvhØ54\9230Hð'¢Qc\ 2ã"c¸W\816~9é´©©ÏV\90&üüäÑØt$±\9boRÊ\84mC\19ÀUOXê\ 1jmQî·\87\12'p\a\ 2\v!Ǿ]öèíDºekÓ©\1fï\a9¬NãC§÷6íÓnÔ<¾\1e=ðr\150É´\86
-ö\ 6çÑ«\12¦wÙ&@g(;ÅÖ\81 ÃGt`çE \84*㡶Ymä÷\ 24Ö6 m\ 5m8µCv/üdyù./Â\93r\19ô×0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-26 0 obj
-<<
-/Length1 2237
-/Length2 14365
-/Length3 533
-/Length 17135
->>
-stream
-%!PS-AdobeFont-1.1: CMTT10 1.00B
-%%CreationDate: 1992 Apr 26 10:42:42
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /YSVNVS+CMTT10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-dup 126 /asciitilde put
-readonly def
-/FontBBox{-4 -235 731 800}readonly def
-/UniqueID 5000832 def
-currentdict end
-currentfile eexec
-\80SQM(ì(Ú\160\16_«&(\82Óü§\88\81\82<U7þl=Ú\8eå¸\97á|°'õÇ?Ûµk
-|%ü5\12µ_èó¬ûÿÌ\7fJ8-\82\99Ì\8fÓ}<êIÚ½Ê\92\84zðV\v@N÷\114°óÙ\994ü\9d\vN` \11¹Ï¸VÂ?\95\8f<Z/¾\ eøX}\1fWt\87\9c2NQü²(\88·O$\15P×@\1e¹\90Ôó§¯cQ\98B"\83ÊÁ¶ÍDmÛËÙ\15Û\9bÿ\88\84NxLk÷8\98\ 3ÙE\v\f!uj\ 1s\ 6F,V=QìïªÍ\a\972ñ,)1^K\96#¥u,o\1d\81E\86\9e\12\r\91\v&D\88|ê~0±Vv©%7Â\9d:¨\rÃ\0\82«©K@\99\v\82û\1a\87~\80^\f\8cHö\1e\9f.ÚÀ[\94NäØ\bNÁÕÌQz®ì[>£yÝ\ 1\1eëELì«:ÒD<\88|X'\89r5Vså\ 3¯þ\ 3\94ü}³\1dãdäõl$\ 3<}ò&\VD^Æ:\1dV\95¦\ 4\1e¡¹D\aáÍ·ÅcV\ 3¤ý\ 4~nÜ®²ÐÚl\9e\ e\93\96Õ\1aJXèýÁW\870ù\92CU`¦âÓãhw\ 3î/xõ\89c\89¬\84p¼\80aië\ 1v.\89¶Ü\9aß\85~ef âX\9a®r,7¢íz)AÃ`°gî4ØÕÊ;ö\8d·%aM\93kË w\81ôÔì*Æ{\13¥\16\1f?\ 5\9aÝ{^=\90H1ã\1c ÀEFúè<©:5\98\9eeÂ\ 1uh\88÷'¹~S\13É\87\ eÉnLì9\ 1ê\ 3¥ÇDuD\85çÑi»É\8børÐyn\18\9dC·\12\95\f7\86%}\8bàj¶\b\v\9d\93\9212\982uI¨¤\1c\0¢Î£i\vJ3>Eª\81ZdúÊá´F@\86\v\8b\86\87¯¾ý½[JT\1arQNçÓàu*óéj\88É]1ú\16ÓK¢ð/Û\0\88±e\84O\ 2a\1csJÛÌ 7¿t\1fÞ§è¼Ü\13\fpÃ7r÷wؼÝôa\1d¹\90\ 1Ìÿ\14ׯ+°]ïÃH\vÚ³\12 ïòóu¯´àß/\80<YK|\93÷\1c¤¯\86\1aáq\192þñ\9bþ/\9bzÛiÖ\8eZpêM\1a=[ØR1±i\93ö^û7 ¨#ðT/\8c#@ sÜ\eä¨4\7f\9d0h¦C\Ø'\8b\r±\80\9e\8aùfL,\98\9b\9f\16\87<\0\94I¶(K\85ÚMî\11Éj\ 5º\83)/\ eÛÙ,ötªÖ¬\1a_ùfÿÃ~\88¦`HÞí\ 55eµ^ö½¸Âòöx2ø\93\9a2D.¥O\13Ð\ 3IMcP¢\86KBz\91&©Âj\ 3\19 þSú\84c¸\f?ýSl\9a]Ò\9cë\ 3\14\8d¼$À\ 3:îrÝÑYòè¦ü\11?B\80pë6ÎZ8§.Õ½\94Ø\1a´Úð\8e½BÈå¼iV"à*ìÔ\0NmLþrSL¥b\91ÿ_/\836\e͹H\9a\99?f2\89¶ÝI$\99ÝW\13"r\10ø\93p\92\8aÚ\0\85â¯'\7fSäÎÃMlK\8cÕòà\16\ 5*\ 4Â
-®Î\8b\81¯\9e\9f3d<\ f¦\9a[¨dÒ¡s"\10q©eù\97\rr\93ÜÞ\8c?ö
-\86¤ÓphPËÄT@ÜÒ/0raâöú£î\15jX\ 6\9dùyɵê£&Å£kn\ fÀ3={@FÖ6F\1c¢ïpd\8c7©Sùo®Ö&nÉ\ 2'SëÃ\90¾\93ÀÌ·Ã\18Ä1M\9fnT'L\80F¨ÅÌ~ëæ%¿Y ?T\ 5s>Ñ \84\15`Ë\93!\ e¡ê¯4\ 2Ï\1f«\98e!½·Ë§*#S\94/¾¤ Ѷ~Íå\89¦Zøç¥úK\87g*Õ_W×\83ÆmáÑ\1e
-\16¼ó%0i#\80Ç0Ñ(4wzÆu\ f\85\13\1dw°õ;bf5ÊÓ»\8e\9f\ 4Tú\b\¼Ë\ 39\ 3O_²â%æ,á.\8cy/[~#F\88Òª\8fbzFp3\9edc\99ù\1e\94BBcåÁ/\9f=A\1f¤DIa\1e©xZ û§3ÿ*x\92Ñd\1f\83lÔ,X̸\1eAÖ⥮0ú\18Þ\98F\98\19#`Ly\9b\16©\97yüË¡\10Dt\v¼Ç\81\16èW´³\90Þ\ ef\92\13v\10\1db\1e\1f \ 3ð\1aãDþ !_%wéÉ,jÐ\7f/Ft \ fä*Å\1få©\18l<\19Vµ5ÿ\1dÖK¥\14SMÝsÀÆ\1cTûÖúôý\90\10üUß*7¡\11½\14\ 2Ôé\ fس`\1dÓéþ%cMp\9c(\9eRJfßÃ<Úd\r9ri½\9eË\9d\ eèJ}{\93©}Å"¡kie·Õ×y
-0\ 24\1eË>\80\98Sq¥\16\9b8\13;\13ü\\1dëâÙ\fCº],ì};\97-2ª\1a\93+u\rlÈ49sû¹\97-\84g
-ÅÊÅеç\à!ù\94\93Î)®\90¼ Ëu\ 5\8b°¤}úæÈÐu\ 4;ýs\89\91 ¸\vá\83\86צúø\9fëÄ\14*\e\ eê\88\84ëú\87\81~"Â"\17\f¶ÐKÆݵA(N\16@\0(î¢u$Ki°3Ò\0\99{çÑÞ¾\13Ïx;á\13rx$\0läµãóM ú²6t\9d>rÀ3\99ze)\82\82\93vß\91«õ3ð\10\vò$ÂyÓQQvßÕl2[=z>þ\vïøB3µ§î&%WøMuO\ 3\81|\90 EÛÕÜY´kè\84}\1f¾Ýpy\9dÄ-\ 1H\84\1dâø\16ø\94Õë,\ e\eñ\9fRU\8aøMå¶\93\86\ 2\rø\14ÞvGýA\12tYÖW\98°nÅÑ2¬\ f\18\eâ\11bN\97ø l
-"æ²\16\bx\90\9d\0©\18é\vC\\8c\87Ñ\ 3>@µkO\15u-Z\8aÀ\19\83v\ 4Û\9e\1a÷ ¢ê6O\17MÂë\19WðåôwÎ\ 6 ëx\ 2kѲ=v\10,hb\15lG\ 4\ eÂYÿN\89ø:BØßå?\96\12|\8a´\ 3~þ÷$í\ 1\19(ÂÎì´¨¤µ¤\80YZ*¯\93"\8eãr\ 5$(¼Ì´hRF¿>\9fý²\84\ ]ýI\ 2çD\83bl/ë´çlx²j\967-\ e®Gô¼Ò\9aCÉ\ 6¬+\10&\90\9bÛ §Ù´ÈÊBçÚ1ÝÿQRl \ f¥J\7f=i$gªç¡%\90´Ø\7fai\19\8fÜkî\9c4̹ò!©ÎÛÚ\7f½\9eÅz\93x\8d]\89ì¢ó N&\8aù¡¸ô)\ e%a\8f\fË0¶þK
-Æ\ 4[áÍ"êÓ£ªË+£Ú\80V1Ë: /\10\ 2¤a¯0V$±\88\87G0C[Â\9a¶\1e·Òg ¿¨ß\82>j}¦3õ( HùÄ\9e¶\91&æ\17ë\8cSÄ\ e¬\9eT\86e2¥G»Æ\9c u\15\8fï&Ù¡ý\8c4¿T\88o$*ü\1d>öZ\99\96Óˤ5°õ^\9eç®\8e\82\88p:èA{´ßÌï\ 6\10#\bî\87uN¿gAY6kû[ÚU\1aÑ\81\18íWÍ° mÿÇÑa\1c\0ô¡ YD\12½nÉ¥çÀ·\Ì\9bÉga\9fJ÷\ai-ÐܶÂ
-\86\ e\99 JÔ\9c;}s\e\ 5'¥¡{µí÷È0RÂ\b\ 2Àéþ Gfݶ\85P#`ñ³?¨¹SÅjI´M-z\1c5k\1aöÈÞØ Â\8fám53\fÒÎ\1es¡\82:ÀÔz\1c(¢SdUpÕ¸\8eÐ\8bÜÆc\ 6å\89?±\96§|AÐ\82¼Rî?\91ZÚ§Õv*\f\12SS\rj_b\83åtN*O±¤àÉ R|ÛoÚA½\bÛµ\81|Á³\9aÿ°<ã<Rªv:¥\8e±f\1d*¬\9eitE\8d!Õ\b\990#dXHòËé\19\9e\ fC_¿Ö\02üd\8cEg\16^&^$\1ex\1eRÚM\12Î,r\14õ-×\8bo\82nÂÂ~Û\8e[åÕ\18Ây-o¶ér\\91_\19õ{\96Φ íRP"ñ(\93|¢\10ÌÆ#+É\e\8cs\92\v\14¡\vWn¶\11B¢]9f22ñ\99à$¡S;lÉ\13\ 6åR û.\1c©\94Ã1\81'ud>'yÊ\92\ 2S\9d£Q½'\1d¹uEùà\fúòç\86Ãà\95\91ö\a2RnL\9cta8o\b/~2H:â ôø\95\89zÿ±5\1f>4YÂ\92^!:g8p0'\12sF±«ì9úúì¼-Þ"\a\9fGOÛ¡k1¿V\99UìðotçY}\85²£\83ÈÛä\9c*i]\ 3
-Ñ1[á%Dl\85·«_r(¿J&fÈ`v
-®½é\r¢\bë7µæÖ©\0ÕæùùV
-[\87æ\1e Môáßß¿§\16»µõ\98ð¾ÊàØ7òØ\10\99²ó î½\8cqwHf\r+êêÔV§Á;w\1a.øvT*\97
-<Uß\81wvo\1d&I0\ 4Ìݤ[Tu\8b\8d¹\r!ÜIJQKc\8c§.7¹á\9d \99ø\10\1eñ5K±ö¿q7\88Ód+ì;SÓ\17gÃ\9c\ 2?\98PÄ\99\8c\ 1üý\83\8e|·ð£«½k\ eÿ[\14ÀÀ\9d^wÕ\9es§ÞÜb\9eÖ\8bà\8fX(\90;þ\1a\19ø®\88ϸ\93JÞëü\88cN'ÚÊÏ4ñ\ 4,»t\0è\0\våèmë\9e¤NZ¾AÂqÖ|\19ßW#Ó:QËì°\12TÏ\84ÆÅ\ 3¼(³\0üí\9a\97\11Z"\1c\ f3£À*m\15\91\17\8eíÖYëU~ØÜ\7f8\83PîÉ\88%Çàô´
-ùê\rE\ 4=o\9e&=_õr,|FÖ©,ý\v\83\8ak¨8BYzY4¢\fÄë* a\87ÍØnÇÎm\ 1*%Ga\9cPÍ\v\82\1aõ\8d/á\aô¸+þ\87Ñ\ f%·¯\ 3£\\rÖ\ 2Z]¾ízÒ=Dêënlf#hFØ=¡ó\92\ fOÎÃ
-\ 1\914iÎ\92Ö\1di8{ù\14½e\1d©\94úwøÄ\82\9e$)R\97¿ÇÓR\17\eÁÎÜ\84ú9ð\14\95\9aÄPÃZÊÃ\12íÌÊa\8cø\95ÜƵ\12-\85[\9a9\89(\12+Ï*sË\8d]°ø\ fÐ}5åÈñ\90\90O
-nj8)ج\95³a«7ýG\85í\87µ=kÈ0$\1d{\8d¦õæ\e M\12r*ü\ 6ª\8døÜY\ 2\8d\1d\8c \ 6x\±Í!N\10:Ö@\1aüîo\16+\14æ\84,Þ1\ eù3î>813Ú\13q}\88`Î\95Ã\90=é¥?\eYÿ\97\97lò¯l_JNi7\ 1\¬!BuÕ©uN\86è\11ú\103\1féÌo\8bïS\97¦R¶¾\ f\83jpô\1dl'\16{\13ÖÙÿ¢¬1|\1f\ 6¯\83@HÂ\9bÙÜ/ÊÂ\8aÞÑ\12V\8d\8c³D\büó¤\97?G\7f¯Çã^Azõ\8a\r\97\ 3³JÑ\93JmhÛ"q;ä\ 1V&¼\9aß#\e\r\9aú)ÎÙ_s\ e\91,Qô\1aù6\97)ïG0{S\14å«\ 6\1aûË\9bíN6N5\82\8c½Ñ=áCWv8µägóïïBõ¸"·\13±£y¿á\1c¡z=\98\90\8e6\9fþ\8cüI`³¼j!\84Ì¥ôÞ×XÖ¯4&Õ\1e\97@üûêýHáä\9dÈj-lI2\1aå\81TØ$=Ó(`ô~î\1c\1a+\fSÛ\ e\10pY,±Ó\97+BMö\17T&ì¥Ð\15ä(ù±2²zùDWU\9cÖ\ 5ÓÅ uùÉ<øc\96\83!ð\b\ eä \8cÁ9ð\ f)\8dX7Í:îa¨\1a\973gìû5.\8cìs¸M\14\Þ\86ª\9e:ñí'\89üíÎ\9al¦ß\90Å.Îö^ß-ú\9bÊ7\8d\±ë\ 5¼O®\15\1f\8c£\82·2Dï\80$-;:\164¶pîùÕ}a\1aa\95Í5ùþ\99\85<ù\\1en'â×\9f4ÆëVsi´P¸ß}RÐõ´Òb,¹¨¼\1c@<s.\8f¸\17\1fð#ù\0+çßg\85\87ú\0Jï\ fÆ\ 3\89\1cÈ´)ßMì\11\84³Gó¶òÙÎ tÑ^\89Ü]êö\18V\802<\12\82?lx¢[¡1»*¾\ 3µ\86\8b¥pÿü¾º\82©ë0͸é²!YÏx\ 1\89ÁÍØK\99æöêg\17
-B4\1d\94\8eî\8a\92UÄ\85ä\18´~iµs,±øXWPrZÆEÌ\82½\v\7fÞÒ\93õ&´\ 1Ä\1c54ùxSìIr\9c\9f¿ãOÉ}óñ©&È´ä¶Q\80'eùAæ\85þ+\17L;\7fZ9c\8a\9f\ 5Ãç\9f$\ 6ÚÌûÌ8!ÑJ³5¤ö\9f¶æ\1eéöÑ\eðß\0¦äß³×X|\80éÓôæã
-*tÌó[\97\10UØ\1aìæ¸w\86\ 1úäæ\85"qZ.J\9c^ÊùǺº\11±tËÊÉôø\9c\89]D\1d\<\1aMØUA »¢)¦_4\ 6\81!yC|\80\15k\aÓþ\88®\9e47ƦÊÑ \13\8f\8a<y\19w\9b\12\91Ä\19T!ôa\1eï ¼µN[\1eLÃ|\1fG\18öW\1a\99\91\88\ 4%ð\90þz\99¹áÚ\93þ÷¹¯J°7æ]»Ì5{\8eó\96Âo;bW\ 4ôñ1ñ¾\89ñú\92§Ü9f¤YWTèìÆ?c\ 4\výÃjÎï\93xY\1cz\9dgP>\bKäù-9\f$\86ö\92µW<[x´bVlN\88v\96&¿\bü4â\91\95_Ê\19\b9~)5á\ 5E§ùU\9aÀ\vj}¯%©úÔ\19\1eJ\981kô"oª\8a À\ 3)u¯ä\18¨\95\16i\w¦\81\e\fíõß\10Þ\8a©~?OMÑj\94©\9dñÃ$\92\9f\84\\11ÃyÉgÊ\85ȧ¿`\10\84Æ\9c\18\10çJDsøÔ9Æ »ÔÜ\v\85R8\16ô9¬ù/y\a¯¾I\8fnÚnøõ%/Ô\1a\93\88åpøÝgF\98'O\9c\85\14\8c2í´\87è\ 4=¿E4y\9b\8fÜ:Ú¯Jþñè°Á\aP³Ãÿ\9f\8d°\ 6úÖ\11Zß-\84\ 6\86tN\b¢&\8a\8d\93Ta\ 2>o5ý\rÌ[c\7fµy^¬\80ø4Å\18ûIíÍ\91\8e)Ó5g¶\11.N\14d\99ÿFàò\ 2ín7Zò\83\95nK\ 5\87?¬¡ôÍ@Ç\85\ e«¹%(\84\17\ed·+ç(\80z|´\11\18én®\1f\13\ 33\8eø¼\vôíõv\9bT\18:Q\8f\91¯ÊâþQ¥T\81\ e4Ú=Òø1`,µå\94EÌx©Ek\ 2ÃiB\8f^Ë\1e¼í^âÇhåü\9d\84 \9a5}ç¾,÷Lí´;\93y]A\ 2õL3å"\fíu0·Ü\84k\97ç2z"æFÅÒZëÛ¥Î÷àï
-\ 3\aí\80\90û_d\b\17=\846É\17\1c\0§j¢¢¯¬\9aÎër¡ô\17\0T6°v\9eF\80@Î|i¯B\81Ð+\10\ 5l\9eÕ,ßVQ1éÜó\90\82]Êfsá ~«\I&ѹ\92ÝÌϽ¶Á\ 3Â\13\9b®\93÷;(»Ä\91F«\81\ 3zd\83òC+$xÄ-bpVd¢eÁÎ\9fÔ^<¨å\13`ÁÓB¦åq\8fê\96
-9§Úx\15\86ksèç\ 5hØ©òUVzl\87Ø2\ 5¼\83>\ 6Ò\8d\ 3ʹ4°cÍíõ#\1eGT6,m8\9cÍô\94&4ùô¡T \15B\85H\1e^\89 \88°°Lß\85Ü\7f¥,\16\1e\1eví¯µÇ\1fs~7\9c 2Ïdw\14@\88\eËÛ~ôÉ\84\18ó\8au¾1[\18\17¦\9c\8eý<B\98\9b¿2\1a³;+ÙûØ:U^V\1e3\aîø-êE\9a&î}PÂÑUñå´[\ 5\rÅ\88Ñ\16ê\96A9Ð\8aæ\15\96\88\8a¦ËjW)\1fæèT\84ª:\1e\91\86Û YÔbý?\94ÿ\89Ãz$,C\80!\82ñp\89-U\r¹\8d\19¶\a\bÙÂz\97Ðç8¸\89¢~:°õ=´?ÄÞ\84Aî¸ÃéàÀ\18þ¶WpÏÝ\r\97\17Cô'\fÏ\97ÔÅ´\19\1e\97WR.\8bíó@t<\14b\eE´æÁ\18â±ó%E3tµ\aMàÓ\96ß#\ 5\82°V\ 3.%\87\94Hxô\16Z¹1Ýx\9eàtCX\85\93\92É\8bm¿d5'´u×X\91°÷\14Û\8fPl½+Å\11t
-ÝoÇ\13\81\10÷\ 5r\15"³\1f¡\ 1Hci\86\ eaN¥ /ó,N1\11cEjÂÉãvu?çxò8A\10S\7fîPL\80\ 45\98\\em (\16ÜGk`Ë£\f¸\97\8cÚ\ 11É룣\ e®ó&Yt\10×\9ft\ 6Æá.\86\1e×\ 1ò\8fkàp~QM\80 cõ\ 2=Û\82Â\9d<\95AÞÖtçxø?0l\1e<ßíZ?õ¦\ 6ÊÝBÊF7·Î¢5w!¢ÆöZÅvÌÿÞ£R\18\88\fYñh½\a®Ð\8fêÍõ\931½=\fØ«Ïç\9fåÒPX\17Ï/äYõc\8e]l<\1e!E}Z(R¦\8f¦\ 3ýt"§w8äú©ã\fù\80Ö\13°Ål\89w\95\9c¹÷\88\88\ 1ºÌ¤ªì°\19Oça\19:H-$\0!\86/í\9d\ 3ó\fÎ
-\8d\9au\16[ +4q\9eÁñ5lÈ¥ýB¬\84\\85Ñl\9f\9fç¢Kè:\94Ò×ì¹\8bx}ö\9c¯+ ÏågnÜPzÅî+câÏÆ:aZ#Ë\14=ÔÞÍ\8aøES\19\ 6'Á\11\£\17\8c~ø¥/Ù\19,8\ 1Ñî@wA\87\97ç\9b0ö,C\8aè\eu°÷îJ÷{S\92\99\v\8c`\18äë\83j£\9aÆ9Åô¾g:ÂÒ\95¥)À\8b\r\ 2ëÑ£Ò\83{U\16?\85ã\18±Å¦öè\82\9bn\80\ f\1cà¨\8bZ\19\9f:*Yw.Ò\856¦4kZ[0μw-â\a¡ÏÑC3ûg¶n\rs&íâ\9d|¸\13«K\0®\9eR\90\91H\81* \95\98 bV\b\80g\92hw\97\181\9eÛòØ±ë °S«+Zq\87Ç\8a²\88«7u\15°pK(ÂÂ¥\86\9dCõ\ 2\93\eðL£u\9eä&·ÁÑ\ 4{|\90õ\18\80}8 Ú¥b\1c\9b\17aS³\9eqôoA\86ùaÕ.t59\9e@ÀK\1f¸Ç\1c1©ÉVä-\96y\854Æ\9daÜÕ¾u!ð\16´Iýj[³\89àsw¶\103ÎÌô\90
-7+¢F>\ 5å°ævT§\16î.\81\94Òn±,Û\1e\80\96»À<\1cQ« î\8bÿäoná¼\88}Þ¶]\15\fþ\84\ 5xþ\8ek¬ÑÑ\10 <ý;\rÖr#,?;Ø\1aE®\82¿\ f\1f´Ù«»\ eO\9cè ÉÐÅ»Y\8aá<S\98`éÆN*ZC·´=Ø÷öU%è0µ\8aÔngl×\85lÈîM}²A}\96Ö\96Æ\ 6ûôÕSÜÖÈ~ó}Ø\99\82T\ f[ÏÅ\89\14\91á\17\ 2f.i(\9d\1dåíóaNxúO\93)\e©ç\ eSéËcZÉu@<§ó®*\10)¸\ 6¸JJ>¯\85\95pucã±<¤'À;ÝI\9b\a\ f.Éf Ì\ 1x¸=\ 6@#î\1e(\87ó\8f9q\ 6Ç\8eò!isÎ@ëGÙXY§Ð¥Íf\87ɲ\b\9e\7f¥\b\9ca°>~ÑÝ ³ðì¡EP1h»BÈ\8f\ 5\13âgMð®É¨æ<U\8bt\80N\bPøs\8e{Ï\1cL
-8d\12Ýxã\9c'n*Õþ`Æ÷A\95b<þsT[-|:÷[\0¬\8f±Î\84\8eV\1dyÛtdÚöKÌEcQv\87Gûצ£]צ\fý\8eU\1dcæ9\ 6\a\96v*\fûU\9c/\9b\9as¤÷¨\aÉ;,¤'S\8cuzÖ\ fF\93Yã\91õvÆ\98§õ\10;¦\93\8b¶ÕpuÙ5{¿;V3lC\1dSH¸ù\88úÕ&È\88l\ 6¶Ë\89,a"&Â"\18Ì÷ì\14RÈÝ\96qeÕ\92\ 6\7fCÊ[ã\18Ì|\ 3#·\80ä2(TüØæ\19`»\88p\97;þañÑ\12\rX\1fR}ðÞ\9eRaPÍai\ 5 A\81ÙD\8b¸ÄßBñ(ÒÊÎ;·
-ÿcßMkºª\86ÈoxjÄß[/Y6¤\12¥z"q1ëÀÈ\85f>\13\ fÝN\13î\12xÁRÁD\ e¼\93\ 4Ò\15Zh\81fbp'\9a\9c0s²`ãÔ\8fúóÇo^\1cÄo%\8b<¾\ìö\88\99h\14÷\8c'²ÖÞ¶ö¢¨Ú\1c\ 5ÎD½\90\vs\85\ 4í°àÞª\ 3¦¦\13\93ælÝo¶\15ò\88©°$"Üz<pÕçM&\96©óB\16ðâß\1dÂdc8,QpZ\13¾"y\ e\8b \9dçÙz\7f8+Ä\b+X\89k\aà$@ã\99|ÿSÀ(\90\87¸\93Oû¾\ 3|\85U0Néþ9
-\ fýhSESÏ"Zw\91¥M\ 1áWùyvÝ=Ý,ä9Rò\8d\92\9fº\14\13ÿ«hR·ÃÍÀ¹%\16£ñú\8aé{^A²m\ 6\ 2ç¾
-«gåI\90ÖÐ\82E t¦\9ct\e\8ch9@1Õ\85õÕ¬;U¡zqPÙ¿\1f¨Ä¿iõ£\8d\1a\7fèíÍ\vû\ 46\r\94ºà\a3M±Gv
-lS«\8fQ,3\1d\88juØU£¸\91°ùx¢ãâåòxåÝ\\82t\1e<Ííg\95\95yp\85Ö\9f\8e\ß\_À®£¯¨\8d\1c\14Ø"´&\19£¤Tý÷"\94C\14\19\ 68±Ë\9bÌ{\8dF\ 1Ñ\9dI1?\8e4À5Zñ\8c\852\ ft\9c(¦Kß\18ì/©ò\16X6ÖÉ¢\95Ì·\rü7\9e¦:âàè\9fÎhónù2g{ÁÔ\97À24ø\82ë;\0\1d4[yÝù\92
-y%'\10\9aº\96Ð#¯Ä\12<\12ÅÙ÷<üx*Ø\1c\r\8e$ïÚN\ fÇÙ\9eª¼n\14ÚçCK\8b"Ô=Þ·tè °#Tß\bÕ¾\19ûZ|®À\9eÕ\18\96ÛÖË\15\ f\19¯U \96ÑÆÅPD\v¿Pµ¥\83÷|ü\87q<k\91¿·\1c\9cd{\r£ö\bé
- \82Ï\17Ü\8d);\ 3Ë\98yÌC^¶
-S*<],²\0\1dq\8e\90#Æì½h¨(\ e\a²\10@äÂÏ%ô×\81þË}X\8a\12Óû+FÆe dJ+(ß\9eJßZÄn\9bªõ/\89 aq,Øû¯`±÷©\13Ý\98\82¯Y7^\ 1Rµ\8c\9a$¬þ\9a\\1aîû\ f$G³XJ\14Ýf\ 5dË)ã{hf·â\83\83F\98û¬ò³\88¾\ 14\8d«\15pIzÔ®©è\e\1c\99ÃÁ\18\8e±{Qc(\b£\ 3`\8a\84©GË.GLí\11CMCq\0\rÐè(´Î0ÜÀ\10¯\17ÏÔoÀ¹½\82]\f2\99Ü\ fQ½Q|ý{\8d΢±\98j¥ªÐ5þnLã^\91®Èb\91=æÙ9Çáò³èì\89£\12}\84\ ft\92C@¶\1a¦j½ ä/uýÕÉÓ\ 1kyü=\86ëØ\ 6¸\94ÈúO\85 æWun²Ø\89\ 5ÿ\14\ 2~\98:¾deÝ\19\1dÕ.\16óÍûâ8)·nè(¬ÒÏMR\99ap\96)<õU!3¢Öå8ÏO/â\1eîºo\14¼²zÏù¥Ô6\90 ¢\17Uw\1cì¯îª_áõìUîªÀ¤éW ð¨\fñ\19\86&#²\bÍX\82m_\0k\86@Çq$ÿ³·\94\93à"\94\aëoÏFñO0:\ ehàÄÂ\12\94F .IÏvâ(=>\17D\19çÛ H
-ðÃè4\90ÅÞüÉäì"\8eÒ+X½Ýæ¥A¦\935\8f,\13¥O|H1¦Y'0
-Óy\10y³~³l\96¦,ãö\80Iá¨ãåöÙT.¨\1c\92X"\1a\I}ª\ 6çbh\b¡¢ð ý6zЪ<ÔN˧ð\1dCz]\9f[§Ëø®\86\ 1¸º\Ä~©ª\ 1hJÈjÉÌO=äýô¯¨ÑDl;dº8hql\7f\ 5²µto\ 5\añëa\1cµ¤úï:\85\0~ò\91«\146;l·{iJñÀ\86Æ'ô8lµÖ\ eáð,kC\8e}sÔ\9c\95g\\81\87ì\93\1fþÅ£\9c¾cÁ\8e\98¡µ#~l\13É\1aü\97%#Cl\7f¬¦é,fÖt\ e)\9cp\94G³\95\14\87\92\90n/è\98b'ùÓ\94B\fϹ/\9e¤\9bú-RìûáØ+\85ð\9e¥AÞg\ 4¥³¡×ZfîÜ\0J¸\85Mºj\a\12ù$µ»Õ\ 2\a\87Ðè4\82Îaóøì\8f-Ñ\85qÉ"5g\v\13Û3\ 2Ò\ 1%úã\89\81\9e\95ä\1c%éQ~fw\18\84]gªÀk¯ÏQ4Òk\ 5Ù¾.¾u±\ 1V\9b¯ôED\ e¸\ f ¡Æ\8cé[\ f{!ÔLcºï¬¢ú\9dòh\e\1d$¹õD\87S!W\9f/\1fDhñÍ\99\8bõ§\1f\f_7p5\15ß\9eü\92\95ØïDãþXª\80!â®î£\13¥¡èßú«\94"Ó\9bÆ\96\84ÁI¡Çr8³Ò3\b\81\ e¨b^\9fú\ 5qÿð¬Ùt:Lácù/_t ßË&áª\15Z¥Õh\ 3ó·\15z¯\18=\8bF©\98Ïâ\8aW\86¼Ï¬}&à\90Ø4\8cÒ\8b\8fä\12\98éqDn\8fÑæÚf!þ\1f´\12\17éòDøVTcI\10\82¤³¾Ä\ eëxѧ*|I²'\10pn\8d6\ 4¨\968¼\98Ê¡£
-\80iâÝ
-\ 3muYB\16Ì\7fuµf]\17É=Ö\1af·é&éºÛ<\1aÞ¶x²Â\85µi¢÷\ 3Ͼ\98IT¦Jº©\9b*\86AW\ 6\1cï\15Ö@\81\11G¡\8b[Õ\89"Óñ\8bØU\a\93\19x\v*\ 3_»èG'M¦^DoÕ»\1e\19ò÷+ªO6\18ÏÔoj\83¬e\9d§Û\1fþ\95\ 5gÜ}§\82¶¥p¸\13\0i1Åþ*¤»©+\85}Ï×!{Í0}$oún\81iÔ.3piYØV\98\97)ç¨÷L[\bèù\182·ÓÉ\81;\ 6\80\9cå\813Øå\9b,lEiÂôõ¸\vÞ(¡\90Ü\ 23å ͤHõ\83^\83°`\80\bMçØ»5Þå+¸cä\10\9d^bs6½\9f\85,Òf\9b\9cz\1f÷î\18à\9bEþ?\ 3\8eL4eyf\8a\ 5\aÿg¾\ eCvi\19LUý¡A(wG!®¦æ~Ï\ 1øüm\10ôF\8dmyI¤à®<Ö\1cÑ|ÆÂníä\94\89P¾©6À Wǵäñ}\ e\ 5\91¿Q2Éï¬+½u<\94\9a©\15ï[ß®\93þ3¤¹E \17ûy_Ä\ 6t[te\a×ò¤{\11NZñÅ\ 6ò\8aþGßê¤Óì\96È<ùÉ}íGA\14lX tÏí¬T\9bØ\19\10\8b)1\1a¬ö¤¨Í)ï+\bEéÔÌqhAb\17ðö§'\15\8f\f\93¬\9bì\83ùbÂÍjP¦\ 3CÖ@c¥>eM°=6 \8fñ\ 3üùIPg\91E\80P\9b/T=\15\93¢×\94õæ_Dp\16Ĩøç\10\17N\93 È3ñ#;ÇÝ\b\18Ü<\83\91\1dáÜ
-Îÿ'\11½k?â\ 4t$í:\87\94 ^´^þ6T\9b@W\1c£\99í\83\85\ 1[ù\96¬\89ßGÁºªw\ 4\15q˳\11ÆÔæõöÌÔ\f\98-\1aEÊ-à\ 2Üd\8eå£öU\82é·4\ eÁ%\99\89\92DvÇøs\r I\9dýÒà#G\1f\80M8DÔ\b,B¬\95©,þòA¢¿\9802}
-8 æ\99½ó\97¨\93½\ 6 '\87¿K\a$.§m\98«:\b÷{\b\88w\18\18ýV·Õ\97ûÊ\\9f\ f³!{K\88Æ\15Ý7fä\96\ f\ 1±\7f9¹Ts^d¥u.\8c\877%\9fÝô°ô-ú]{N\ 4\fbô¹øwfüâ}\9e±È ©÷DÝ3Â\14Ë`%)Eù`cªL\8dcc\1aÒ\ 2ÎöiPKL0þÕ¸F=ùÝ\a^ï\8cw\eÆD\1aãϨ÷v\eÊS)ç¹îÁýë\9bl/KRÍ\f\12\11µÈ2öjæÄC\b\9es\ f4:èIjÜÕqYnÄ\13û\14$\e\92\960°\1fBvjé
-¹úxågC[Ö!\81\10)è80\81\9d*²\ 6\80R´ô¹\92ÃRBÌfãÔ\1acá\8c Ì\8f¾\8eÓ\96\87ÁÒ]F?¾pÒ.#\86²!\96°Ê%ËU\98\84jßy¤PI\83«tüèBj\ 5N©¬G\9cD£ëÚ¯I7nÔ\19p\0¸Öl,Ë\8d\9b\ 6ý¨ÅÅ>ú\96ÌÁrëáÒªÒÔj\18ªGÕ\90ÉkMÇë\rÄßÔ\14,\16\9a\19H\ 5\ 2_*i«0\ 4\87\13J\92mH\87/®Klb¯æW\12\8anéö>\81¡Ì8N\9adí\ 5¦.øÛÃ\rµ4Æ¢ôé%dÅFöd·\@\9a\84;6W\8aKÚËå4\9f\1eÂ\1cÖ\1czìG\ 4¯î\14gE\8aÚ×\91\98\fèèå³l\ 5\91\9b"\93ù±\1f/üÅî¬\8dn\¾²^\12_l\89\14VE´Xö\9f \8b·ßÄ\r:»sÆS®\83É\1e\15î=<\7f\ e\8f\8dÆ/¼ôó¿jõ¼f^Ã<9#ïǹ%DbÊ!DÄrÝw!\9a͸|Ô¤g/¯\a\1aãú\eV\8fù\ 3W@\87\87öPt×\90\9b\11\8ceÝCÕ/xzU{¸3\9c\97\99F\9d\8f\9e\11ÿGASkèdÛ"ྰ\v¡=Ǿo#¸\84îÉd\ 2s|yF\e\14z\ fë¡ÞºN\95\e\94\ 4C\12\ 4¥Ùr\91¢u\ fcÂo\81\9a¢ð$\15,Ç\8fljeÝ\14\94èi;/\ 5\90]\ 56]o¸®\1cóPc·KÖ$\14ä\92Zµ\8a빦\12ïB\85À ,¦Ê\ 1\12¢ÔkS\ 3\8f5Ä(öÊZ\14i\85í¾oJsì\80\97éYïLEêdùáÄÉÝÍ+d\9a¢L\94Ø\99ñchj\99\15äºÒ¨2·p\8dîiôyB\10=N5\98·z©Ø|.D\94ÅV\ e©^ì\960/°ñCW\82M\r0¤·\8a\0ª\88<ðC\ 5ÍúÞÇ>\80\84)$Æ1\\ 2QÈ\ 5\²]ð\13µ6å\86æ¬\939±\ 6\80\¤P\ fµ\93mÊ\9cEI!\11ôñ\ 5\9c\v#bÊ\ 5Ë\8aÒþ-\93\92GÀéá\93Ø\98îLs©Q
-¡\8d\9a"z\ 3jú\92=¤æÖÊ\19\9e)áÖŸ\8d\v´ÁUä\80õïÊ\128/½D\8c>\15¡$/\9aÀV\80û@\9f}5Âñ\ f\ 22t\1aùs½\aÿÍ\b¶Îdàº-L~Öñl¬\8cº]ë>\81f\10{\9b6P\84Þ@uH§6Ä\94{»½k\86\f5ò\9e£\167¢¸rv¡\89\8b^ð\0$ØQ\81Oýu \89S\85æ1òÜ\15\88\ 1Ý\ 1o×\15\91\8eõ\17\1en\fõÔÖoÑÄõáÍÙ\94º1\90\8eÍõ#\93(^îõ5+\14\ 2+³lä\ 2u¹f\89Y]$\89]\1a\9fpT(eF{9\9fÄKle\15ã\ 5\97ÿ\ 5WU&pÙø\1f \9cîx\1f
-\8fM\85Ú\aß\85g\90¸ë_9ô=\15âå\8bYÂÀÃ<OÍáß±\95|Ý}¦ËÚ.*]E?Q\ 6\9cÜ»Ç\rÉ\9b)\1cúNxµÉ\87`pÑ#\85ªøEÆ\vql=¡Êo\ f¾\91Ã\97\a5\9c4)\ 1;\86\8c\8fÉ\12*²+iÍbß!r\12ÀH%Ó\12ÎJ@Sú\12Ü\ e¡&\96\90\ 1f"ö)\ f\7f\1eo\1c\82¬òU\0ló±HÔGÿ\11M\88\9c2WÎæp×U\8eé\ e¥õ?\8e-éi\bÉ\8a°ËÛD2ÓM\9aìsÏ!W\ 4î·SÔ\17o@âcÄ0¸î\14®\8bÓO¿«\9cü¼\88\ 6p\12e®ÉRßÛ¡@-¡Iÿ\9eBûÿ5ªy\99
-Þ\93áÛÖ\87³?\ f\96%\9eý\vè«\0fÕ\17ö\91h:k\ 6%\87F?Úü\8e?ÄØç}\96þ\ f\1f·¾\b\aê \1e2Bû\18ä\87ø\82Fá£\1c}\9d·J\96\7fÖG]\7f\94e\91\94\19nÛK¡à\ 47Q\19m²©pSû\91\ 5És\13kµa£O=Å>À\9d<Ø¿1°d\93ÀCSð\96þD¶×îz\88$\ 4[¹½dÏjW2^#9&íw1Ì"/lÙ\80!/Á±\80èr´\9c.\11Õ[#\9f\98\7fæ1iù\9fɵg\1cm'\bp\95®\15`\r©F\1c4±öì\e\13¡Zz¡/""¹A\ 2\83àQ\a}V\ 1Õ¹Y\9d¸\fW¹ã\13o\89\86¦\99¿i!'$S\92:\8eR}®\96\1e^UªW\98I\12ú¾ï\8bN>;~ª¬ÙNrEÈ4ìJJC\18\9aÛh\12V\vÄ>×[®º%ê\fÀ]O\81»¸*]f\0\81Mâg¹B\98&ÙÌã\\83\9c\1c6\9eIÀyà°\ f<V¿¯\9c\9c\8eÚ\92¡\9fÊÀßVàNO8äÙ}ØZe\\87ó£óÐÐØ\8déeO]\7f`[d\ e\88\95ë\112ý\7f¾V\80f\944í³]\1ajð\120et4=\91\1cn4\10^!ÿ)Öm;\837äwMËðbeôÉ\9f5\81)")X\ fV3`\18êBên¹Õ\1c\8fRÈ\12{=ò?\86Ðý\ 6·\ 6^ÚFCW°D1[Ë\83\97\1cL,\9fAÓ»2õ/ïDÊiפXh\vQv²:sÍ\9cluö\8cIOÿ\8e~\9d)*É@.Z\97,ù¡\95dÉ\83\93\13òCÍ\8a\85\ 6\rÝhêë¾\99É\8aßׯ\ 3Ëzê\84\1fÈ\e\84>áI\10n\91#\9cc\8b~³Í"e\9dû0¦º°\80\9bÀÞ[nâÆ5î\ 3-z\ 1Uö,ôýYßW\ù0\91¤UÔëɪ\9f\aÖh\16$AS\ 4l\rÆÚ\96þëþ@Cå\91Ø\9a\82³rXºûµ\9aXÒÂ/`Ùciw# \17M'q\a\12v\9fLê\9f4\82¦\12D*õ+u\12\ f\96ª8*
-\8e?\ 2.@-Ësa\8e*r^YKÊ\9b©é._\bò¼¶ü\17em¶å\838ÎÛ;K\ 4\11â*ÝW?FëT[Ó4sp«\ 3¸ò\1cÀZ@Æ\1e\1cÕ\1cH\91ï;©\9dµ×\1d\ eRv\ f«·\90bîý6¤\15"Ð2\ 3yªí^³ÕºPí3ò\a\10\8c\9aS¾\80-ÓÊ\f¢â\11[r\8b\93\e\89aK\1a[\18á=×öÙ\¹ÖÙÚd>L¶ç\ 3¯ªÕÀ\ 2{²\0\89\90\83\1f]Èâ
-p\92X\8b:·¶k@\ 6m1\eî\ 1Úu\1eÄbÇx\98G\14\9eO-â3~PÍ\85£êM\ 3YbØlï\9b5´F\1aÄ\f7z7¾`.;Ù§½T\81\1d,\ f\15Ø|Iá»\9a!>¥²Ý\ 1\13Dåѵìk<\96ëKÛ>Ú\1dW«¦,·ôU\ 4ßÄ\ 6qG$å7,W¬\13ÁÒj}\7f\8báóÚ\1e¶úÜöó\81È\92Ô§\90r\80\92*Ùw\12#Þ"z¬¸.â&óÜ»G,,u[\13j]\ 6¦\93Û×õÍ´¨7½\1fÑÅÙë\89só´©4\9c\vúê\8b²*\92b}J\13¨#?\8c¤¼f¾KVµ\9eNß_ïöºAÐvÀ+\b)\1a\8f-±Sø8\1dØíù\8eÁ\1d}6\99ò\15\898íã²OK\95\9e\96\0®IÚ\89Ö÷\83;=á¹\8e\ 6Ì0ð\90/½Í%¹¬âÇàJá\16ü\8b]½²jÊ\1aÖã0à¦ä¾\83¯Eâ[\1f"\829ãàðçQ*-ô\ 2{¤k\15·m\12`l"\93¬\ 4d\1c1YÖ\ 3ø:\9f}Ä¿â³Ë(*\8c\9f3àíPE^FùÅþ\a¨ý\1f_H\ao.õ©Ý\90Z\91¨£âa ì\12×\11\ fÍèõ\94
-¯\15\1c{ÖZ\82\9d¢3È\82X¤m\91\8b\80T\fÎÍJ*2\9b?ðâ¯C\95c\ eAK\1fÍëñWïNc$\ 6\127\8cq\9eÊèDc=B\ 6;\ 4ÉÝ\9f"Ø\8d\bP:J-K
-8\88ðXñuÅ+ßaDÕ^îÎùtû¼-¦\0\90ôÇ\84\ 3>\80\ e²kwØ\13÷ë\80[ãÀ%k@Aõ\8c¾ÇE\88P\8fPEòN±\9cø\1a>îìà`\1d a +ø\ 45ÃZª\8bæ¾ArQõºNô\86\1cø\1f褧"$\1cÈ\87¢gûE\15ä\1cD\9cø~ø]§\9d\94ë\ 4ù»ã5ý¦Y\ f§_}\aå\12¯\11ZØ\14\ 5U26Àö÷\9a\1du~¡'}³ø\9fþ\ 4¢\8b\89W´\90\87)§U\84\fá#EÛsnAÔ¡t\815\8f\13Hù~\H\16+R#*9\8d\fU,
-`¸?\83ʹqÝÌV\ 5\93]\18Ï{è·æ\9c«©ØMÚVÂ\17\a9{\f\17\94P$x\e\861£]ÚÖÿW\82«Ä\9a÷8^\eý\86ÅP^ý\19#\fl-CD|\86N¢R¶ÖÙ¯kFyc;\86Ë¥Ò³)©\18\19"\\ 1>§\1e\1f¢\92¬Ö~þ×Ò'K\9b\e\95\7fÇ#3Y\ 4Ì+ï¹F1\8bS"K\94ØBA\89\91\83ï>s8Y\13×cÝAv\94\86ÿñÏ*ʸ\8a\eg:ôÒ/r£sSØè\ 5I\8c¶þB\eæ\15Ûi[\93êËyµÛý\ 4U\11äb\11E¸7_/Ð\98³¯á4ÑÂ;\86ÚR"x\1dÑGS}\82\ehÂ%¿\ 4±\97êÝi÷Î.|\11®@ñGç\18÷Ý5:)H\1e\aNK\ 6¯møù)\8b\81V\ 5?ñÎH%\aáÄ3\98þ\ fªj\978(\90\9b\bi\15Ò\88J\ 2ĸØk\ 55ßåYGªOÕS·`ÙS\10 ¹©á°\vä\94\ 1àØÂø²¤»\1c\1e$8\94:G*J\1dÍ8-d\ 1ÖÍÿác\8c\8f£$\1a\ 1rW~A~ê\ 4*¹úÝ\93½XP§N Gw\10\1aÉú>=\0²Êsäð\ eBìpvôÞ\04Û\16Ù\0HQÁ¯\ 5\11\90èäÿ #\1fÑ]\8e\12_±\e+OH®ÍI¢\99ó¿Nvß-<\ f\83S?*ØÇëfß;Ó\90M«]íôØ{Þ]ñº\94W!\97õ\7f\ 4\99ü¹\99ÐÆÐå.\92iµ\91\835\1aCëÖ$ÿ_Ûé\1a\8c!\9cÜÂS³\89mw¸n©\ 3\9fZ¼¼ªÖV%¶\95+«\1eg@>³¥µJk×#Ä;5 Iì´üy¼P\97võ.°\bR\ 3çî\aa
-\eÍ\8f\83ß\847m\rÉBÕwÁÆÐ\90\98\88Z¯XÏ\8cûk\89wEÔ4y,üÍ\12ËB[GÓ9iä¸Õ9\87ñp¹·t\10u ÷µLÎ\84týG6\9fÜmêÓfô\11\87 j¥®$ý\12õÂ`ú\95Mg\Cs+o\1c¤\8e8üeD°Á>Sà\8e\86A¢»\ 3Ì\95ûòÂÊo\8d\8d'd\93\1cT\9fî6|ÂaR\9c\81\82\7fߣ\84\19¬.RÜ¡²v6\88Ë\ fQÉßÔ&n$ïbB\87<\ eÿ]\v¤üË0\8eÆ\9a\94¬øh½"ÀÈþÁHO¦ï\17QêC\96ÒuüùG@\99ëLa¢ï'yÂw\9f϶mÁèNiàOYx³¹sï)¬í£_\8aC\84Þ?\8dÄQ¾\e?ó\ eµ\15H¾}\9eFãQ\9eá3¾v²³CÚ\e²\9fb[\ 2Ó×O=7V\7fª ¾\11<b\11ß nÚ\1a\ 6Q>2\12:ï\90\ e#\82r2\e4\1a\ 4ä\90\87òýkl\9bjtÿ\81ËZUÈd6PWz
-÷\1dú*ü<\e\r`\82\98¸ë\94\ eÜÙ;µjtñÒ«ëÂV§©¨ôJkÚÇ)\17ì\92`ó¶åÙ¥¥q\95á[fj\84<\819Ñk1PY`QÃ]eu¿J÷["W°ç\87\r\83\95/¸\v\12¹\0_æʱÎrH+Ú\v]º4wÿôEÊHVÁó\ 4|\90Ëè\93Vü*Tö¥à´¼ª/@\ 6ù]R\81 \8dxàu\84\r\1d\ 1\8f¾ëÄ\0ßÕ\14¾èfz\9b\ en\8bæ\9eBbß<\11Î\18¹\17á\1cB\18¦\8aÁ<T6\13P[\9aÁ\v¿½ï\97ßÒ\ 6d\14ìþo\1dâ'\8e\v\ f\ÅRô\9a\f\ edv\91W?±\7fªk\ 4\89Ý[\13þGu\1a\1a(\11ª\8b*DùS\>OÐÕ£\b\ 5©à\16UÍt¼HÊ\11q ¥È.ïÅå°\97\84N\9fîmÀÕ¹\88α%ö:D\82?\8fÍÍMf\0\9f\ 5\f¸\86_Ó°V]¢d\0õkC3\81?Xy'¯Üä8àbR\ 4\91iS\8a%ܱ\11n\1cMF\9bF4ÃVÝàÌ#\ÒzÂÞ,\81Erò\83-\96¡ßg>\ 4\11u¬\91/ä\8f\10\ 4\f(ûÓþW¹åÀÂ:_¡£B<<G\vE8Bë\ 5\9dܬ \91\80(éûÎ6MZ\9aÉêÌ\89ì³==Pë·ì\8b\95\92ÿ\1cÅ}±}Ǥ\8aûî\Vo}TÇí7%ø|e-$\1c¿ã¦K³Ä`I\94~D\e,\10©ú\8d[¥\8c\90%ÔAÀ.\9e\ 3\8b}DÙ\9dà/TúOÕÇ6¯&MËÏ«g¸\16\16ÔÍ\1e\9fÝï#\1fO\8f)ª\95\91ïìLX\10\10ó¡v"¥àí\1eÍ\98~\f]\8bTP=]\9fï\faº×5B »e\88Ú\r\8f@\90Í\v¿iim\8cýùÜ*\11dRÐ\8e¶)PÌQ`¶Y\8d\9f§N\ e¬04ß\88\11ÚбÛ\87\r|çuþ\83`¢s\82ÑBº\97\9cÑ\1cl\16ÃðÛóðÕVHÁU\ f\18þÓí\97\9d?a\ 4\1c\8dÈ \80v\85£Ñ\13N\11Q?®Mø-\12÷@\8fn¨¿þ>HRáïæ£\8aç\9eÒ²¥ÿ\e\8câz'áCM\91-\95\16¿C\ 4>\12\ 5\f\7f=\10µ\81`å\14\13îÎ%¦\19ûôRÚÉ\9cwhQÏðøêçô\9e;\0Uà¦\1e\83EË\1dý¸þ\8eTvhë,¶®Í\1eÏ\14\ 6\9b»\86\f\ ehQ\7fa\88½·\9c\8f/©zn\1aDïx² fZ?ác (ÖQ¸\8eM/Ìx\12§&ÐKägZô'?É6jCtöeÊp\8aÞº9\1f0\fV1\e¹üv\9bË\94\98¡=\12ÀÀ\94\1f\ 25l\10#-4¹³n*tÜÖJÅl\ 2\epü¹\85¸Ô¤{Èa<XL\97ük×wwÌæXNÎz\8cü\8eaú/ê8\1c÷}\0\f\1a5ðÚyRQ/\85Ón\95RõÕ\9a\8a\1c\95d^\1a\81<#¹XÝÚ\94f³±ûÆ_z¥ÅLD=1çQã\ fõ\87\e~hÊÄXèW:-@\91eíc3\1dù÷¥¦ê\a\1c³\95\11ù¸É\88Á0c8<\96/WrºÌ ôd{üI¯s×êT\12m\86Ú\90Àv\80ÛM¥¤OO¡QNyX2\ 2Î\812\17¬Í\8c[y3\r^E¬)ÓüU q\93\87\99½\94k\16ÝÍ0R²Ã¤ìËLå¦\e\0\91\b\9eú,#\9frÒ\f\ 4\90\18\86ð¿ ¿¡2D\aÁX}Ö¤É\1c\98{\95\16ÁIÛ iX±)º9¢Ý\rÃ\ 5W {\9a\92¶6Ø\83\91±\8d\14ìÖS¥'\925G\17r\19ÿS0\16e>ús\19jÝ 9º]\f®\13LÄ\9f\95\16¥\a>\ 5\15õ%Ü\e'\7f\8bÛ=\9déÍ\93 \9fõ-\9fÿ¾\12¨L\16Ðç¡4cÑC\ 2|]÷\90²e²ñX×
-\b\\1c}¼e\ 4nÔ\85ý\87ô².ó\ 4\80½_\1e¿\a\ fº\9f
-Ç(¯¼Q\164ÉÖÑU\1eÁ\14îÊ\9fY\ 4St0,ëô!¸\84\9c\84Ü\1fm~\18ý½1\7f\eN/o¢K\16»\ef§\92Dx\10}6\8dÕº6Æp\bu\9aâ\1cTÖ=A\91Mhv\ 4}ø\fè\7f\0Wïx~\a¸¹\r£\vàî\95Eñ¥"0\87xá\0£®Å\8f\8bëÒ¢»ã¯\13áñÕîï\18\96n\87ÿWg¾êîË'IUÐ,VóéØ\98b\7fRÔ6\87¤wÌu9\90æKÆM\824ÿ0,Íƾ\ fPJF?\ 3ø\95H»\95{R¹È\bÑ\83\83ß\91Ã\8c\82T\17ß\ 2¼£ìÈKæ\97ìÇp¦\87={sXF\vPÔéy~Êë\88þì\9dË*\ 5ɲ\90^\14\8ah8\9ciil}G\8aN.yy\84u»\7f\96X\9e/4\90\988\15\ 6\10r"P\99o\13Õp\8e,äñ\1cùb?Å8\80oU¬6ù¬ÿKM\99Rß®4ïà\ fà\18b\7fqeø;¶vðÜ({¿\r\f\9eè\15\91\ 3\v:ÁôWÆ?ÃoªZ\ 5\92\9aÌ~vL&\13ÝÚA#/Úï"\e¬\å<\1d9\97"nÁö{\143Mm\967ï[§!8²Ô¾P\88çà\0·aÆÄ\9c$àÙ\9aôËÇÊ^ý\8d°[
-dÖ\1d@$mG\vÛ\8fþ>áÙ×\87 \15ó2hòaØÇÆ÷]Êà¯\93aAÛd»¹5E\b\v©p\85"\85Ó,ö«cKèÞ¤á\vj´Ð\ 6ÄdCÞ\0í@\81ê\87\9b H-õÍ&\95â\94'\r\9a\b\88\ fq\9eÜNºç3\92\1a1ÇÊsÒXßÌ\ 5\92Wps\10\96¼\88ré³õ\12'iÄ"CxUÙQѬ]\1ahÁ\90Hù\97ñdw
-\ 2Ì\87\12\98³\ 1\82Y\1f\9c\9bAq\1e\84\aG´\ 2`Ä)]ãi,ámêè3LÙÜ«J\19¼ú1|[ü\88;õ>À¶\f ÐÄ\9f!
-¶¾\16M\92U\9f¿\89-ûì&J>\1c\90R\bxÙýÌp\7fÍDÊF\82µ\95\8b\97·S»\8cÞâxÖ·ð½µ÷}\80®?\83¯Ê\10G\ 3\11P³¬T-\9eg?¥\99¸|½ì\13\e\rÀ&\97ü]\86Ò^¾ç<\84²d<W\ 4íâiÙ\b«2aû\86IBT°âúªÚþ\97\8bÖà\95¢\ 6¡1\ 2\97\19Å\8b^ºXÒè pÖaosìëtJÞ51æí\9d6\94²°\87à!j¶\96ÈÀð4PÚAÕÔ<\11Ý\82ÝÐM³X'ºW7ÒÃÏP?Xú´Ú- Îá+\8bE
-)\94
-½¢5~\ 61\942\0¤kOEçaÞ¿\b]\1ceI\9böÙv\eU{S:v\9dGZr\1e\19/.\91õë°\18\97¿¾\1f¤1ó\8d\8f?\9eÏ\81\10y\ 2®8\1dð\r\b¼\8bþñåÞëPús\91\99ɵ\93\v¬{\9fè ¤\aR\r\7f;6\804¹ã£+å\7fz\84\81~Ç'ÅàzqI%+\956ë&ü\87a`òÜ\99rg\11\86ï6\1atPÞÁ»\98\89my\8eHnz\18\8cìá\90\81ÎÌôbI\9eðöQ[\97Ñ&4çï\15\90²t×h®2\v \8büÚs\bü:ï\81\9cØ#Ó\15\18¶óî'\168;©Ö@Å\94 ¬\a\17n
-ÃHW\84lg5«3\9aÔ1l\90"G\v,Z©£½\9a\81Þ¶¶-ç\9a\14û\92\ 3°Ïaîî0\9a\99`?ùBúö58ßRk\1fÊGh\8eÙv!Ñk;d+\0|+\rúâ\14¢4¯\9a\9eö\ 3\v\8cG\1fù«jüD?Ìè#gr\8c\8ak5eEûoê\b\ 3\9a¯j\1dñ\Æ\12\vÞKî Ĭ0\89L,G0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-29 0 obj
-<<
-/Length1 1372
-/Length2 8931
-/Length3 533
-/Length 10836
->>
-stream
-%!PS-AdobeFont-1.1: CMSL10 1.0
-%%CreationDate: 1991 Aug 20 16:40:20
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSL10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch false def
-end readonly def
-/FontName /YXBGJA+CMSL10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 45 /hyphen put
-dup 58 /colon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 76 /L put
-dup 78 /N put
-dup 79 /O put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-62 -250 1123 750}readonly def
-/UniqueID 5000798 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÎå\83¥É99>\ 1'\a´~\f\1f¤}(J\1eÜ\9d\ 1¤\97×r¼¨ÅC8\8emÀÑâÄ\94G@G\ e \14ö^û\a7°\85\e+§\13© \v6Ð}¦¼µ) ¹µ\9eþXw4\ 2z<^efªÓ2þo¼ÎÑAx\ 2\82*;\81Ö\18xu&=k½ K¼öä\87\ fî`ñ\ 4»<Zvf\10Ý\11®¦Jk\10{\v\ 4C\9f¢\88\8b\8cÃ\922»\83÷iZº\81ð&\fÕ$\8b\9ed\9cØ\0¼³%F\8cyÿ¬¹Í06òí{¶]Æñ.3ÝmE¶\12r1O\98\99\r\bÀø'N\99\9fKF¯K\]©#h<\96\ f¬å\0\87\91] D×!\1a\18àÂ)gï\89U&bº\99\ e-û\92gà\9e5OAçMD½\80¢Ù\ 5ÒíÖ\r\88)è Æ«\ fß2)dÁì¶V\98\18¤eÕ&m3f×H´\12Dn`/\fÅ/<"\13ÿjÙ,\ 4öÎ\8bº\94\89\ f´NÄ\1a\fBí¤þ\97"æÔ±z?m5Ïu]
-\1c\90ÐÂ\ 3;\16ºvÄV\13zÎà\11.5íûr\ 6©Ë\18Ý\92t@\1cpÃ\ 3\90Y¥\83\94\ fDÌ\19ÿí2\94\ fè 2\92á\ 3Ò«Í¡sß\85\99Zî\98¿J\1feêÕ_¸\vÀÇ7X\9f¡\fõ\19\99Æ4à]\80§ßûaC;½º\17ê\9a{\92÷cXa\ 5È'}j\96\1d &\17ÆGEE\v}ôï§\b\84ö\ 1}\9b\ 31\81L÷\ 2ñ\14\ 4%ë\8bôÂiì\ 4/Þ\89Z\7fb\H2Á¡C¡J¾·\98â;Yø\8e½\14\14¦e CZL\8f]×¥H§Ö¢ú\96ð\99[ÀûÏ\91±¡ëq\10&©\9d$\ 4²\10;³bix8X0
-\ 2¶ª\82\fó7\85÷ªEâgæëç×7ÞÓQÁÔéDs?ë0£æø\1c\1a{tÝÉ\14\8bF°*RU9ÅJ~²]ì\18\80uW¶ê\94Ãm°É\11!\16\ fa½7Ïô\v²±\1aη_\14kã\81 Úëw\80=\8fX\ f\90\86¼F\ e\\96÷dÁ%N6þµ\9fLÁ<S$°\ 5¶ö\84\14\13Èê·´å·*êÑ\1e &:\vHÃËï\bÙµá\89²\9eã5(¡\1eè¯<\94£¹ûxÐr¼\94ª\93q\98µ\85,½\82Ç\86Ì'\16ÌF\vý\98/g\8b\87\8cc¤Ømr5\8fSÅá#Z+`f~%\85\80º©\9e.ðæ\86£¾¿=Ù$\11®å\90#,ö\88>v\ f¢q×\0\9e\9e#ÒfåzÏ,ØÕ\8d\98\f\95ÌÈxo\84Ë6ÂTv\9fÞ\99±%^'Øskh\10àGÈ9\11à\82¡3CçÁ\92á^¥\ 1\99ÿÀÒjÈ\86Ì\rWå\r\1eÞáY\7f½\16§ªf\1c~ªÃ\81w\0¦µ\0\91~\1e\8b(ërB}\92\8e°´¬®~/±,I+Ø×y\89\9c\18±¾9ÎÝYcÚ×HwC\ 6\aU;O~÷\8cägózWµªSº¹\0·þöí¿{ºü@\12×û¼sf\13\13¹â¸Ê¨\17A°T\8e¥ÓãW8Ò\13S\7f"e\1d¢\9bÇËÝ¡¯ä´ª\f\ 2\85Ò¼á¤Àd\908»hmîr\13p\80ÅÉ2\r¤¶\a\1cßõÔlA\82&$Y\ e\85ÙÉËÊ\8a{\14i\83a ÊÎCµ\1a¨ûd±\941@V)Cú \aî\8dZîOÇî.ÖY\ED0ïêÓÙû»x¢ÀSüYaͪ\ 4`âÖc=ðïHdªó\82ü>\1c\vZ+\ e\18zQ@ǪH^n\84\98w ÞCÏØ\11\92\1e¦¸NpGü¯Oå5B5î\ 5Ü\8aÍ\r¡\b\7f_Æ¿ý\82\ 3ªÉ5\92ÕïK³¨lkÆ\1f\ 2 åé \ 6Õ
-oYãp\ 1§¯¼ªh\11ؾ\8cÊU%W,ÛÔ\f>æF \12a\ 3H\19òÁ¦¡IT°ªýÕ\ 2ø_\a½
-k\i`+\vÝ¥°i3\7fu.\1eS}xâAZÕÝá°\e\83¹rÒÒÛ¼nÙ¨\0¡Ôô\9cÞ5 k²(\15q¦Öº\0oWà[Ã{\92Â¥d_î\8c.ÊL\95Øʨ\0º*8ÀãÁ6#FË©Ùg4\aO\8eb\bè:kG\8cÝWÐÎ\1eæáÀ\1d\vÌ^$wf\r®ÊC\17m\9ck\89ÆÃÛ)lÕ\9e¼\11*,ê\ 6WJ]r³ë^ëî\7fí¯êí*¾\86LS@¤´9\9f÷TjË"2\ 5ãz7\96¼\9f-á\ 5gk¾ï75ýÝí}\89\98,\95\fÔ\12¬]ÐÝ\96ü¨°\1d í'\18°Dh\99Ñáãê*\98«\fG\ 4\93\1e¹\b\a³o3.\ 3T~j%D\85¯¯\9a¢-çÍSH¬\9f~¥\9bt\81ÈEóøT\10\19Þ2¦·(]'8nµjb25ÿI#\ 1ðÄ\88º\9cK棯`\1co\97\94\89\9eß\vði\b)ôëÜo|p\ 4\ 2`Ad\f;Ùÿ¾F'MÜáú\9eì{/ò×4\ 3&oLѳÝë\ 1U\am\93\87g«²L¾ø¤ÿmç\145]\81¤÷\1f+ö\8b\12øDν\kRO
-êWz×#xÔ\93\19\8e\f\19\11¢;cn²\1f]ï\85,òìdi*_\83þS/b
-ö\r\80Ãýfx\ 1\8d-$\rÍðÓ\ e \8bj%DhéE[Ú®hëVqÙ9Z
-
-A®ÖjT\9e[îTpð\8f¹ßõåRɦiK¢k\1fGUYÀ\8eàêÂ*÷÷\97u\8d"ëJ_"\1f%H7\a\10-\81«b\ 1\1eÈÐü\86\9c\ÉÌ\87lÍ¡\96ÿí\ 2Lï\82VK\8f=<
-\85\99å&¾\15kϦ¡¶§Ù÷¥´çÅâ\0»-\1a\1eV!Vì P )BÝè\111å\rØ&k·,'B¡w|\ f®º\12|òÿ\93\9bÃ\1e\87^î\85\9dÜKl\98ãäû\ 6æ\87LM$íÿ\ 5\84°9äb£\19Ö¶÷öTà\1d\150Ø\1a\e\8ayh\ 4\9c\9b\84¥\92q÷)©\11¾\9aØWYv\9a¹i
-¹4\80\12änÖ½\ 4¹\83\19\9c´cQêbq$ñÒ%\81U\9féX¿Ñ\1apÀª\98÷Ø
-ýýK |v§\94+ÝD_\8c}\99AgUoÕ$~\15c>\87\93n?»à\93ÞÓ¢ÐtO\e\al²S`\901N{8´@D\ 6p\ 4äw\ 5`ò¶HJC\83fY\r\86\88Ý*hdùÅ3\8b[¶¡÷-0\88ß\vÁë[85¥D«\8c;O\9b7\b_æ\¶\94YË%3Æ\ f/\93;&i\97æßÄ jã¼²J-äJò\85¡\79\91 3\ 6HM\9e\83Ø<9Hª\9cI\8eC忼úê&\16E7A\99nÞz0\ 5¨\87̳¹àÁ\97\19'·¹!\82¸B\94/\92\83¹ð\ 6ÎpÁ\83\90OÀº{\90ÍlÁ¸hÛ\ 1\8f9Ú\ 1ò\81\96\83×\99\a³éÁpj\8cJXä÷L\99Ý~p¾Ö8\17þ$¯\1añó)O\Q¢z"hÅm>\ 6.iJ\f\87Cr|ÜÙR-&$DdC/U\84\1f\10m\91\9e\ 5\84\90aë(Þ\ fkz\80sU`ó=Ò\9bà黡c\90\89àm\ 3ØZíw\1dò:ÝoS\87\8aQÎå/¬ãJï\ 2Y\1d0\98M[\15&Ò^ïÑ"\9fþ\90Â×B²\ eqy\92#>ç\ 2%o\aÝÅ\ 2|ÝÆ1á\82à\84\82ñÙ¸\ 2<\1aÐîµÁ\96¢Ïþ>\98Äd>ru}#\83©|ík~y\8aå©8·4ÝaÔú\17\8c\7fx\19\92?·X@\ 4öÒÖgX\9dé\9eÜ\86Z\1c^.0\16p\a6D³Þ\ 5\91êx\89<\9dS)ì.E-\15\ 6¹\89K[Ã\1fDî£\9f}èér\8a.o\9e\8e\1a \8eá\1f
-F\16_Û~jìóKÞûïæÊÖíI`Ò¯V\16\8b?®Z¢f'Ä\99DbËdØÊ=Ûéx=©"·æ/`æ3ô1v\12\81\ 2+,\9eù\e\9181{,Úû£Û¬\ e7Ôÿ,Ñó\8býà-\12¹;É0\bsëp¦\16¯dU\98bz\80\92\1d¥4©\1aFu $Ì4\ 2BíêªæR*È-ûMOÒ¥üeå\98\ e³ß·ñÑ\9f\85ð¨<u2:åñ(ÏhêBY\88Z©é\81ç#'¯\98£4¶«tgÌ\11ªWÄ
-\9d³\7fîm3\19¢ÅBº£\13\ 1\ 4m)q\83\12´$ðì\ 2T \ 6\8e½.H\bíI^à%\8e´É¶ã{·ýë\8e¡\93nzu5¨Í¹ÇXw\e\fCÔÅU²kÏ~\88AøÖ#(¢¡]²¼ýÒC\93\17½\82zs\89ßJ·\0X7m \7fÅÁøJp.¿D²6ª\0xÄ\15qêì)â
-áí\a»}º÷Ð\10\8e}°Ô]\ 5 «\8d_¤¥j\ 1§.é\81=J\97Àê\94íØè\84\9a\aï=\ 27£Îm=\ra\94§\11̧ÆýBõ£d<\13\99%ña[Ìà]¯\89\9e\7f}éQ;¢R¢\86 Å+~N?Ϻ:ljé\10\7f©nû\8eÖÖvî\8b\16Q£
-ÿü`¼Þ\9at³\0ù@Á´Z ÅÅ\1au¬Îü\8d\1fá7\88Äé\89Rï\8f\9c\85J\8eBö\96\95y\84J¿¨·*:ó\>\1a>WAÃ\ 4\86Ã\8fK0; [ì<jsªö¥j\7f\97b\ví«\vóM,\1c\ f\95\ fEÕT\99\98r%#׿ENÕùº\9fGY\85\85\82^Ãâ\89Ó\9c\88a\b']\9fw³QÇ\7fj\99\1a}ûb4\86Ê\19\1dJ\16£Û¤\1dµ%HUäö!Fg´ðUSòL8\ 3ùT\15\83»Ê°¢i\82\97vÄ\1e¡s\ 3SýTëK\87\9f\rû\9d\88[£´ÜN½µû´ÿî'ÅÐÞ_S¯\19L7E\13sß\9fgß\11^q4\7fG)$@/ªÝä\8a\1e³øº~Íl\15ÕËä\9bõ±ÂlfÓÕÌáCCÕ=)ÐÈ \9a3ùå¤:æBÙ«O4í³\eÐ2JPùén\98\e<\96Ö\8b*¬x0AeEèà¤xìj\1f`Ä2d.f¶\809\ 13ÁÙWv\ 5\15¦qZ){¥£k\bg\ 6¯zK,|õj@\aK\1f<s'Ð\85[\80\1f\91^¢±å\0X\94Z0ä \8e9\e\r93|Fâz\ 4ÂñN©\9c\ 5©50\1c\ 3@+ð\fó\ f¥É+«lÊûm¿f\82¹\e\ eäÿb\87\99é8Ò«\17Ê ºã¥ð\13§9\1eË\95 \15Éõ\875\1ajþ\8cÁF`\99/\90½\81¸d£\ 5?ßRÍö\1f\rúõk î±ÕJß\8a\ fmÔ9«\9aì0ëe¸\15\17TSæÈ}ì>#ù¹\ f\8d~\9d\0âÎr³«Ç\13\8b,f?Ì¡\8fk§ýN<¢òälßþ\ 6JÁ\b%c\88»1î\15Uwd×\18°\1a`\9b¿Y É6¼\7f\89}µÑ»\86\8f\87\1aúg\96Ð\ fb×¢ä`f7ê\ 4ªa\ 2F\\84·BzÀæ\v8\1ak\12\9cXÖ¯P(3R|\12_:`T¨H$\ 6xøb'ª\91F®î" \1d\ 2î\9f\ 5E¦\13 \17\99%k³éêÀrHË4B\8b/$®Ì*\06 å\ 1l\8c·\8e#\ 3Fçý
-\97\84ÊJ²Ë©O~\9bð\8b\0X«Z1k\17\80\91\92\80 \ 4ô:Æó¥F\ 1á\9b\8f#\95V\0¸M~¸\13úÛ\89ÁÙ\82Ö
-zú2¼V\98®ú\15èiFð\89\94R;Xõó@\8f2j(À\1fÌ5!i¹ô\96ÈH\9aVg{Ìà\85\8fâP\11¡\98Ý5µ7\1c\8eÒ\9d\9f\18¡1\89Ø:ߪ\17\fuÿ^(&\12l¹Giðª8 \0ÉÏ\17î§\ 4¡õ\9b4ò\1c\ 1Uµ\1aÀí |V^¸4ó¶\v\7fµ\90ý{¯³\1c¸©z\92 )¯`D® åH}ú³Æ\ e?s¾ûÝ\84E\86âè²\8d\11\13ORÍmZ#y\11Æ\88çïÑz\ 6O<!É4\9d8ó·¢\9e]ÙPç4)E\8f }g[¬A¸÷/Õ1äòy2%©\99X×Gã\88\91\85\11«:éKÑF\fº\ 5\13\1f\ eôÀÀ\vó\8alçØu·À¶\vN\97ââ+û\8f\16\ 1â#\B\80e\8b\8ca¬0ZaÇ!\85;û\19FËÀF¿&\15/l\fü¦\11ºç¯â\92mG¡Â\10&M\ 5Ë©c}¢P\ 1^ò\83ÏÀ8öbgÒ¦ÞzW\12\98\98\86è\95Ù ~¬úL\98èÍ»¤Æ]L¨w×8ö]*U\82\16¿¦v$¶\92R´úfñ±6I]¿D«\91\ 6\96÷ôÔøm}¥ß\r)Néh
-&æX\8d=@éÐÍ \1d\ 5\18\86*¤óíVÚàU[\11\98Tp\9fWBÁÇ`ÿ°¿!©\7fªÏz\8d \89I¼Õ:è\ 1g/QJEèC\90H¥\9dh·Ð,AfS,]Q"¼kZî\97-0Ã{~\97p\84îò\8b~öpp÷\84Y\89\9a_\85\89tÆ.\93\ eÁ~\fé{ñ\87\86¡K-ÅÂOAÐ\83] l\17²ì:\19÷$t»§'°Ò\vçh\963\7fʨî\83&\®¡A\95¼\ 5\16¸\8d~£\89ù9Jä\ 2Ä\1f\18\9bQ¨
-Î4UAY\8fÕV2µ÷±*ð\18Ö\96\ 2\1a>\1a\86Ø
-tî\1dÉî6;mk¨\89½9µy:\ØM%0ݦ¦r\14ÀÔ!\CîÎÛ\ýQ]4»OiúG¨Í\ 1@\8f:@¥x7ê\85\11mR__õÃÚ\fKpv\85cü¦4³-¤·ËÙ¾ä¶E\86}ç'Tv¶\97ݦ8\ 1ëý\ 2¥ÿÖ\88Ò\12\ 6>\ 3¶¥\9f\81\1cê³8\93\90Î\8fò¥÷[#îûQ©Ày¯SÞ*Ag\v\88ø$KÅþ¨üAÄ\\b$ò\9dí\ ekàýÇ\7f/ñ'J\ø\11\16T\8c\0ï_¼4\ eAÂ\84\b!\93áGñ\81Ý\10$F³R3\81\83$`²ÏfcÞçWZ\1e\94\14Ü\vq¡[\13ìlc\fLY¼¨\8c,~ƯÊuÿ\eK\e8{\ 5?º¥\1c_ò\993У޺\7f¿Ö¯*%ëñ\8d\0p\vP»MÚ¹y¸¸v=D¨Y©l\19mH~¨-\9fíÍûý.ζw{t¾kÑ\84~\86ÉÂ\vÝX\83\15²¥\ f*\ 3|?\82sö[Ô\84ô-ý\157À-ÆÞò\81kãI/\1e¥\fQ\13\8bê\8c´\9a¶\11¨ \858\94Eö¢Vl!Q\12\19ü@=®H4&O Óݨ\ fN\1aË\9aÅ
-´À%3\17\7fs»Â#®\ 6>ÀyØLõ\943ÝaZÞL\\14\96ª\ 5~EÜgü\\HQJdÒ A\1a\ e9\85\85\9d¶ÏÕó¦´^½hU\92÷áçá>b\91ò,G¬-Á\87X5ó}¦Êá4ái>²j\80\12K\1cÎF¹×\92\80È\92;VQ«}ÑÜ[ãÝY_\8d¸4%\9eÁ<ÂÌ©>\85y`zÏÆ\0\ eµ\1a¾î\82\93à\9d¿#â3\ 5æ
-ý(¿¼\8d\87I\94z^ª¤\1fG{Réa_Õɽ¢E±Ü\ 6í¡õö\84\19ýÙ\9e(%O]Âà\8e%ÃNÈ4\7f°^\95.\8bï
-_ÚO{\87\1fç¡\85k§Ê\82À\84¹K\97\19H¡ËàQ;(<\92Q\80\f-3Á\1d\98¾a\ 36Å\1d\9bÜ\eXü°/;)K\11R8\9b
-/¦£ÌØývÆû˵\9fû1;\87\98\82\ 3\8bÐ\17Ï\1cØdÝ\12©Hñ\15ÅäÜ.OÁÈ9Íâ¤1\ 17Ý©\835¯#\ 3}\8a¤§Õ\82º]ûk\19\ 6Ñ«\1d\15=\12`\10<\85Ø\82\b]¢\8aǦ6=\7f\b,¼ÿ\ 6µ×Ê\1a.\88,Æ3\83\19\92si5öeþáô(¨\1ah\13ËèÅG\9cKôû7ÈX\8eìÚ\8f\a@\86®¢\12bÂUÈ4\b\1dùÍC\98êÒ\90\8d[\894ò\8f\ 1E2¶\832\13<!d\13\7fÚäH\1a\937PKk3_>Ü\1eÃ"u\85C¯útÉLÀf6â3ÕÆ+\91Ó>\8a²ne\85\\azÍ\84\81KD\17ÎÞ\84\88\ 4¹R\1d\1a\92lã:\9d\88NN \13\12\18E$cìÈÏ\15¦4-Wã¥×epi\8d°W fx\9ef©\8b\9b A_Ï¡7\a\ 6`Û\1e&\9e\94õ\7fð\80\ 3_úпÜ\99î8ü{\18²Õ:Æx\f¡\87\e\8bÀ`6Ó\87¯!R\ eå\ 1:N ñ½\83²ë\ey\9c\9dSõYáÖ«ç9E\7f\9aMõ\17Î\1c\9ep\15o<\fø\8a\12 Ñîê-Ärß'\ 1Ï\ 4Ù~G\82éùz¹.fD>¸èZ\1d\8bG}Í`ùÓ©¡1\9bæýrÝô4½%>\10¹iõÞ0bn É\1e¬P\ 3\!/ÕÒ\83Z#³ä\94\82tv+³¦Aðiµ×\e»yjO\89µ=oKAìAïÓX¦ó\81+\85kZ\1c\98ýpÌ8zËâwÁ4\92w[\vÞ¨\9e¢î_\8f\11¸t\ eh\90Ä^\88\a^^)@î\v\92oB̤ê쨷à\8b8'\1d¨n\ 1³\8bº+@|\97\98¯³¦c\17Þåf ü\99lÆ\86Gw\82O\ 2à\88\9dÞà\9b!\ 6b¸ðÈ\arôpËS7æ2\87iß\ e\98CHªRé³G#®ò¥)ÇÚý\99åà`\1eÊAÈ/|×\9eÇ\bqÝüÌGºg\83nÑ/\80 ¢\1e?iÖ+¸\86\1d¸\84²n*àíkÞ}dÒLe°¦´çX\1dò:\a»,\8cí\f4w{½tª!`J6^ì\87Ù\8b\b¤¥Ì4FÞ¢=èS\91=aÈöÜ5\f\fÝx[èÔðf7Mþ\89\e¦\92\9f¯o6t|åAÎ|\88hGmA=É]Úù\9dùY\fO\1f,I\a\r5º=\81;°\11ã«©8y$s) \10é9Qÿé\½\ f©\87*ø;`¹\98K ýÓÊ<Z\8e;\87\15ÿ-ºí¸£¬n¤\97\a×EGã\1e)\95d¢Ò\0},Ï\93\88íÿÜ_Ö\1e6}\a\82'k\88p\18\ 5×\85vkÿä|\98H\ f\8e!\8a\ f\9f\1f7ñº¡#yÉ4\89mÀ´+¶ûûÿwõµqN Á/îD«^Àâuä\12Açx\ 3 Tº!ñ¯«\8e¦Ã×ã^[äÒ\rÑ1É \96^Æcã°CDû\99\ 2USU1`,\1d¯\91\96 \ 4°CÉ\870::É7Úñ&s\8c±S\9bv9"Ât\92ªÄï¨\18¡5\ 495âÃeWïê¼\91»Ë\f\ 58\fó\16ñ\86\9bITB{ï_K\89\ f\17Ià$Qª\93\8e\ f%Ë\ 4jzÐp\ 4_?.¿5ßÛ\1e_&øaÔ´\94ð¥ÉPôôzH\1er]ÔáLÎ\a/ößì¤tæ@g\82/\bÇ&ècV\ 2el«6*ªµ\8f\92=\18Ì\ 3 2«\16°må\88\1eÍÍà Fö\ 3ýZé\fQ|æÓ×O\14,़dvÄÙúß\9f}&àÝ\13ø!Øhìø\93UoA\9b\7f8ÿ\ 2«\8b\v\a\8e¬÷\0ô)ùL¢.ª5\89·ìÔ_\8e\90úò\86;ü\90\85"«9qV\83ñ¯ß\ 2\bHðÿ\17á`CÍ+\8c°
-ˬÏ%ùÈÙx~x\1cµC\88m\96\a£\83Èì¾'ïäð HI\84em wȦ\9aR(µÐkUÎ\18¡\r %ÔNaã\82°\9d°ØR\83G
-6íî\b£¿\0\8fhÆ&\a2h,Ü«\ 2-9\12ú\8eq¸Ú¿áX\bÞ#×d}Ø#ÀN%\ 46 ðÄ/Ùr\e\84¾ý{\94»\r@ÊájÜ%9,\89G\fË\8bÀ\1cÛ-\f>A{\18H¬,\16Ö"\8cø\80ÎyÔ\1eØ\97¸7(\8c<\8c\9efûÑ?Ñ°\11m%\r+ü\95)ì\\8dlé\1ap¼0w&ép±\1a\82Lð\8bõ5@I\99\8a~o[ëõìcÖ¿[\97ý$9\95ÊNÞ\86±¼\fN\b\ 3\97³f§Ã
-í\91äø\18\f`ÓÉ÷c\99>óµ\15ý§I%·v\ 2\9b\1ah\e\9aö'\89pK!\ 4¯ÉÍ\91\1fÉ.ë?\9fvþ\1d\83\86z\ 4^\11Æ\rê\ 6\0\90ÒY\enÅ=\ 5Ó\r\1c\ 5B÷\9fË\aÊ\v\88\1c²JÜ\9aÔô¾@Ü`ú\8eQmàÛ_e`»@\15ð½µKûÏ\18¼õ\81F¡\ 3FZæJ\0Þ^´â\15Oq\e\12\95%\19xû\92¨ÆÙÇ\fép\14Uôô:ÜÚmä\15\94vhÅhº¤\9f¼L\8b\eÆÂG\18Qé\89IXm{`P\85%ÎRanÅ FÐ\ 6\9dYÜ"'¥\1eHÆÇ\9fc\85\ fl#»\9fL\88\88Taþ.è\ f\1f)\99Kµæ \80Ð\92ã"ÕÀ!o\9dÄCFì\96¶\1e ¿¹\0ï-³\10ûz\91\9bxù©p\85\8eæÀ½²bßcð[;å©Ù\88N
-DWRþ\82\84ÂË_<\8a$L¡¯©\17*x\84Å¡M»îe\98Çk÷»X_w\8cìô\ 1\1f¦Aª\89\1f\1e¢KÁñ<\82\bw\12d\ 5\96Gf·\9c:Ë\viê\9am/\8b±fp^Å\19©õËÀ\r¼\989*â4-u\ 5§ræ@º6\ e\f\93%Ïs¥\82IÍÀ@G Éͨ¯^Uqáƨk\98\18tæ\1cî¢ê·K6.£\80¬\86¿ì\95.Ï Ê9bêÅÈä\1fu\88Ó\8f\14Gg\8fgù']¼ÈÁÀ$\99¿È\96ÊÅe$6pò1ÐD\ e\eß$Ë1û¾],u\9e\81c\e´\819\11Äï (\ 1ÉÄs\8f\ 1\÷Ý\87[Òã\1aÅà \1eèÄ\88§=Ê\83åº ¶;&úR\ 2@èþÜS<\9b5\97\8eJ©\9a\83ËzK\10÷~}TN\9dëý\14+Ä1³-ùÊn©ý\ 4¯ÂÚw\99k\1e1àÈË\87äØ¿ÈÊ\8e\9d5ÖÊ\ fÆK¹)¦þ\9dè\97\\9aò\87QJ\84Ó:äÇ÷\83]Ã\q\99¦&
-.<\96®ÉwE®x´r×[ÉIþ(§·Qâ\ 3Ù%\ e)þ#ɲù.ÓÍÞIóÃ#=,âUc1ÝDö๸@\ f\*%c$õä»á$Õï?Ô´:ñ]½m\83$䬼]Úì"CF\0Z'?z´"`t\94óbJ\8fXìX\8b\f/O¾e\9cYC°Õi·{hþ\9e\1cË3ãp书a\10É\99ÅWâKYÆÕÄ(]Vª\82TG\91\16.e\7fâå¶æ\0ñ©Ô\1a\ fnÀ1Óúv²ÎëïøpÙ¨R%°b\8aÜ\95~)ïÙ% .jÅÔµ\86Ú*\9c\1fo÷Q)\18\15Ï\ÂK!\16í+©b<Y\9c@\876s\9c½¥RÀ\11\r\ 4A>Á.\91Ï>íé\ 23\83Í\ 3\9a\1e_.
-Ît±\1fuv\ 6\eàÎ\rÓ\ 5\9aG-@\8bÿ}\80©¯\81\16\9fÒfií\12ìG¼Ðz\97`'\977\97#\86\16<m´<I+t\8a±Ë\8e\eg\12ö6 Ê\92\ f\95\b\97\92\17U6«qr\ 3~õQ×\90ÚjÚ-2P \847äñI\80XÝÌÑ\ 2\11\8eÃv\81Ãq~l\95r tj\87\1eIß\84,\82\9f7UøpwõAzá\17ëI\9cÿñ\99\98\94óyGBoè\85E<Üm\aTr\9bv\ e¨\v5q?\88hõ%RE\83Õ\80ü1tÑÙAÇÕÑQt\8ft\9dà0_\98Ís
-Iû\14\7fqÔóé®\88Vº\7fôºÁ´\17ÿÄʵiµ\99O\84üï:áɳ¿Oçæ£ÿûê"Ö\1e?\ 6;¾ 0C\1cCbÓÌ,zqe\e~\a \802\ø\83÷HÖ\ 4U9ë¢ïb\eµw\84\8eÉ\96Áÿ¤eËv_t\b1\1e\1f\ø6G¬ùð\89å3ÂÊ\97\96À\8c\9bùcÇ\1c \9d¬áAòJ=|û\83£¸\83]Z\96O$\82\81\92\9br}\95¯iÆÉ}Ì\12cn1§SÆ®J%üþ\90·Ý?bFR²\82\9e9\91]îM\91Òtå\82×\81ܾ\fãÇ"ºÉt½T\93V\ 5x\86KçèYÚp\94í,q\11X£\8eå¬)ò\ 1°>ÛXÒÊ>Í\89 \9a\80©ÁÀH\9fc{\a\95¢rÆ\95L\+'Ã\91^Æë\ 2+ÍH;i\8euÖRßÆ8èÜÓ_Zp¿\87\91y®èÆÛ¥±\f`:\8brL\82ßW«D^ù²\16\96뫦Üðè\90\1aå\81\ 2\11@ѳ|\84¿ìP^Åë¶Åã\82\9cD?ãýÐ.\92\92aÉêÖÅ{ú\ 1ébÿ\ 5F
-ÝꥹI\90 \1c°÷/L\16Ã\92\86\8cÆÏ\93\82\ 2a\13\893#¬KxÃÞ\ 6di\8a=3h²p\84ÜÍ£\rÏýÄ\9cââò\87àDïÑ-¶ªDOö\15\r\10ñ,\88J¼\1cNg"§\85¡{@°Ä\r\f§V°ïE\8dx
-Le·oB79¼\fÇ¡\15¹Ô\19]=\9d\vû\92E\92Ü\7f&\eq\ 3\97ÅÀ£ÌnMÍ<íÿ¨Áþ\aY8é\81-}¿\1dMT\11'\972y´$É\82ÑU\15eQ\84Ç%ƨ)ì\0ñs
-häɹ{äÍ¥ä«\15UtþÔÐ\88\99z²\Ƽ\v"\9e)ìlrR\ e\85\ 1\82\8bU\86\1dm\179»à@ü¾O|_\8fµ\82ue'.C\ 3á¶ê¶Îj \82,ì´U3L\bwä\82æ^¤\0½À1ÀD\13÷=l%ô?¿\fP;\80#·gÑa\rO\ e\ 5¡M<¼e\8f¯pß\92øìw4[i+\89éëN4}\ 4\85\18\ e9·5U\86Ô²ø \91×\06\19\eÑ:\18Ô/vY_\8eÉÿX%øýc\93øYÌ\10\8cKe\15\8aõ\85¡+s^ùî5¥\b¦\ 4G\18·ÈµÎL½\99nž»\8fMÌ¢S¸Ú=#\87àüõs\10K-~`õ\eÿ¡I\9f4\11k\88nY[Dî\12
-. 2*Ìj\1c>1z1µö§#\88ôñ\92\17\ 4t8\18\ 2¸v.\13¢þ²{;\8bübC\83¶ÓaÐÛÐë-§Ô'\9c\81]-\8dÉh¶ÒóÜÐ\âë渮&v\13/\9dèhÉN6ÙHads\13£Ñë÷ò!bßY¬ç\ 6\1df-\97ÿäMC\94ë\ 6¥=çòë.f$mÊîL£É´|ê\ 2\1a\92é\89´äW\16\8d[\15Ã!\17·¡Ïà¹\ fÄø\93\98 F\8fÏ\1dúé¡ÿS \85M\90ù\rïÈK¦rCdÑyspLCÏQ#\ 4k\ 4Bj<îñ¯e¥Uw««ÛD¡\13\17Êl¹\e\96=\ 4\f@\1d\b\ fÀ\12\r¡ý¨¯KååY\99×
-\\8a³íâÀËÈ[-µSR;ø\94\86\17Îó(·ëå\7fä\ eËɶdµoe\7f\ÉE± êK\92iî$\82S\1açØIãP\7f\8dða\8eòk~¥ÖI©\98\9b0\87æÝ×úáu¹Ìo)Æ\ey\162^~Kó\9cjh6\11»ÃU\8f\0a\aǧ\0éì?NÒ\13!eä\93Q\86+:ê\9cÈA\ɱðh\bÑúyÈ6'ê:\83\8a4 Z´bG\89\r\96G\v\9eú@é\928aõbÑ\7fmw\85ªÍ\96ÛÈ}\ e ï\r"Ãá\97pö!o\ f®[:6-9L5'ø\8f\ 3L\92d\92}?¸\83¾7\8e\0B\1f«è_H ^4Õ`ÔlÐ)Efº\90\9f×ìóÓø24\ 6é\\80Å\9dØlñ*\87\9aì\96\89÷¤\9b/\16ç\95ú\1dûdô0F\97ôë2\ f¡¥\v¦a4ù²[ËØëWÿm\84¹x±\ 4 o\1f¶G\ 3¶I<\89 $S¶æ¿º3`#\14IÉ:PÓùê]©þpd]5\17¼\bã\86\85V\88;R^ü\1eã\b¿\93Ã:T@\8c§Û\16d»W@\1aÝ\ e\84æ \95'7Î×\96U\8cµ"Õ\8c^@5Tw\ 1ÇÍQ=ý}îd\8c\ 6»)ÉÚ\95\853©`\1e\82æØ\9f£Ñµí\989]\89»\1a¡Z½\ 1Lý\15\91:@±9·y\8bé\1cú@\1eò\r<äµWB/\12q\15H~6`å^î\1cÜ°¬6ÔX0Ë\824\9aÏ\9e5Ó\9a3²\ 4Ê\ 5w[t\18\13ÌÝ\91\95Õ#è¯:\82\13æÜÃ\ 6WÜ\19¤¯\90\11 \91h#I¥\84}\eW¡Þ|\ 2þN\84Ê\9b\9d¦\81\95æh
- ©nûïãþ\8f\1f\0\82Ij\8a\17\7f¸
-}ó\91NÒ\95;ÓDR\87\7fêH"\ e\16\12t\80B\97)>ãu¨\10ìÂaï¤]\b¸ö.d¥Í.}\9c6\ 3Þþµ½Ò\86è\bÎ2\19é\¬\18áªT\98l\ 3ú\13Ñe;^Þ¨©¡¨"lä\8c\99~¬Û\8aL¾vÝåï9ÜîoL ¾`qî´\v Uu\88!©æÙ-°:UCë/p³$Pfö¦\81¶Ê\ 4\94X\b²æ¸tsϵ,\1a'ü#ý\12ô\85Æ-±\82[ú\83A\95à~WMä\ÂÀ\13Q\87ø\7f\ 64ù1lk~%v\97±õE÷x{§§Å\91¼Ýïléî>pOâ\99Fj¨R\1c'Ït?\84\85\ 2ôêU\ 2uPjh¤\ 4\950000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-44 0 obj
-<<
-/Length1 794
-/Length2 1508
-/Length3 533
-/Length 2835
->>
-stream
-%!PS-AdobeFont-1.1: CMR7 1.0
-%%CreationDate: 1991 Aug 20 16:39:21
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /AAPMXE+CMR7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-readonly def
-/FontBBox{-27 -250 1122 750}readonly def
-/UniqueID 5000790 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÍÖP
-½¥í\985ö \16ÏÈð\vl\ 5.×j\87\85kPôØ\rúëP\8c\97ø(\1f?\88±~M;\90Àö^Ãyy\1a¬Ü\16*f˼[âõ:\8dç-Ñ\13µZ\ 2/¿îe\8c¹_[³+ 5{^\ 5\ fÝòd tp¾ñÅ!\19¶ûÕÇ~¾Ùd¬Z+¾Éسä\8aå»\0:cÕEwK\92+\9d_ö°\ 6nÎCdZ\13\18y°2\13}m\823\85þUó@-U\7fÓ´HhY@r\9en"ô¾\ e\bÆP\º\86\8fyP\93õV¶K\80\8d×\10ë\93m:È>W\83µ÷åm6:Y &¥a\9a5}!Äç{ê\12\1e²K \ 2}\1a\93\15\8eß\91)@é\1cÒñy"³X\85\89FDwss\v±\9aùç\ 4Sá·\8d^Ü\12;':\97\98\91ÖÕæ$ô£\88ó\89~\13°EãKNâõäü^\99m5Id\0\10ÆqÞ\14Ñ\8b\v<Ó\0å}¬\ 3"å\9bû÷²\94"#\bpõ\89\7fϪԵ\f|\1cXíÍ\11\92\18\16=onV%̸\82Û{m ¡Xe\bèËd*\11Â\9aF\91^J\96â\82\a\9c²\19"ÁÂã`´\87¤S\ 2ý"ì\8c_«cåK^\84MK\17Ê/ÿ7Æ\9c6m×*Ð)"ÁL 2ö^Ð>B\19Á\17\96.Û-Íê©Á\fè¯8¤®Râ³w$[\vá\9awÖÉ6çS\fÄз\8d\fÄ©&\98ú(púTòØP>-\17³Õ/²þ» ò²¯\f*\18\92\ 3\9e¾\19¦\90 \87\99¨XãÓ\961½i%¡TÑaß9\18\aJÚkÕ+Ý
-Ü?\aâÙñ^'Ë÷þ\8b\98Ä\a \\81\11!ú\91àYòù\93"þÖ?5\9aÉÚ\97®Ã\83ðgò>]ã1Qè\ f
-\88«Pþ\8fÚä¥Þ\93Á®/Ü aP³rF\14\f\ e\87Ë#%¦\r#I\16*ã¬\93\14Nî\1efZ\12\89\10S\18ýþ\86¶çbQË%ÉgÓй\7fåâyá\16\176«"´ÊQ\v\96CB8:\84\rïÓ\8f\96§(\ ejÁ4ä\8dt\ 6\aÿ.x\ 4\16J\16Ôw5\86M¸El¾B3$.³´G÷DMÁlûi«\1eQ[<5yðèGH\81\a\99×ò\83=¶çojØÉ$S/\8fZûÏÙ9TK·ÚP\1d\85\11ãp\90ó¥m\ 6ûÁzIÃsBkÆÙN\82\9a\8c¿ÿ\9a%\ 2É\15â\82:êç\ e9ð\v©\9f\8e`\94 $ãÄ\85\ 3*\ 6\17iÖSͱz\ 6Øì/@|K\92\17g\18QR\96Gйòaã\95dÇ\9f ×\9a§ÊóÐ\85VÆo\bí«ÂxpÊü\0ðñ\82\8e\93\92\91\16Þ¥ð8ûù(7è\ 4Ü\9cª~ÉÙgq\\97ÆÕw\vY\13ÄQ=Ò9õ^Û=n'\ e\8d\82onÉnR b\8f\15reÊkçA\vØÚ÷)à¦\92rãHh\1cøé\e=ã\15I&.*\85B\8b\92»\8c¬\8c <_^?þ)á2\8e4Y\122PÑyQ¡ôÖs|pBÒ\87è\8aºÃ\80â$hºl³à˸\a\94é\0ºWÒCï\b¤»¾\85E\85öã\1ekî³Üm®\94%+·¾éçÀ\86Ç\8b}TáF2<%<G@çÊ=æÿU- ßp\eÿÓ\9f¼ñQTÒI:M4väU¢\9fÓ\ 5
-Nhi"Øx\15OªÔN&m6*fÎUòÑפ\1c\99µ\ fÚUf\8aN¡ã\ 6u,±W8½wØæ\9cr\84»AX.k\8dxB«\1d`ò\8b¶Q.ÞXp5\937äݬ³\83kT0Ñ$þÐ\9b\9e\11è\17\86ÉÎ\92Ä\ 6\98\15~\99äÅî`ûút\ eÈ\93/.Jr\96^\1a4O:\8d/\1a\8bR\eLSè{Ö[\80\82³\88\8b\8b/®\16÷p²`\ 5|Å
-é)´¦à5C9aı«\9eÛ²\bYi|"CÕ\9a\8bI\9c£,ûóràë`«=¡ß(Ê9\19Â;Ã\8f¯Áëç\80>Ì\90¸ cWAͽJ\12fþ¨ìÑ\95«F/ú\82MñU¼¢h\11ÉÛ¤Y8áÈ\1a\9d±pî\ 1\#ZÙ\1a\13P\8cÍN¨º.\8c\7f\99lÅC\ 4¬5\8e)5"Cu³\9f\1dήp¶Ö{\979m\80YÀ\13\96*8§\9d\8d-"o\7fOõd*8°\82={Øí´T%\80mUûPí!\86¥\9f\14+4F\1d\9a\ 6&\96×\v~\13©õkëJÏT\85*À7\8fã\ 5æÎÔkÈ\rè\9e½pfÚ\9ds\95×p>f\9døX'\80[)\ fóqn©2òÇ:ét
-É\8b\9fæ\92\8bðl\1c{è[\83ß\7fHq§\90½JËèo\ f\8ej\87\0Öt\19¦\1aU\89/f¸4ha\13ð¸\119Þ_7Grh£\99ÐûÓ_ÆÔ$0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-47 0 obj
-<<
-/Length1 1031
-/Length2 4023
-/Length3 533
-/Length 5587
->>
-stream
-%!PS-AdobeFont-1.1: CMCSC10 1.0
-%%CreationDate: 1991 Aug 18 17:46:49
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMCSC10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /NVUTVS+CMCSC10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 71 /G put
-dup 78 /N put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 105 /i put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 120 /x put
-readonly def
-/FontBBox{14 -250 1077 750}readonly def
-/UniqueID 5000772 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÎå\83¥É99>\ 1'\a´~\f\1f¤}(J\1eÜ\9d\ 1¤\97×r¼¨ÅC8\8emÀÑâÄ\94G@G\ e \14ö^û\a7°\85\e+§\13© \v6Ð}¦¼µ) ¹µ\9eþXw4\ 2z<^efªÓ2þo¼ÎÑAx\ 2\82*;\81Ö\18xu&=k½ K¼öä\87\ fî`ñ\ 4»<Zvf\10Ý\11®¦Jk\10{\v\ 4C\9f¢\88\8b\8cÃ\922»\83÷iZº\81ð&\fÕ$\8b\9ed\9cØ\0¼³%F\8cyÿ¬¹Í07¡\12\ 6iWx\89Ö\7fÿWT\90d¹\85Ö~Þ/°2r\b7#T\10Qëé6ïð\1aJ³Í\84]V]ýò]\9dÝ'\92Û\17õ/\89KêHD\80ðl\83!@ýÖï\ eþðXLkxµâ»¹§Rñ\ 5\81ý\1cHËI\8a\82*û\18ÍÞ»£F\95¹´\18\ 1\ 3hýû{÷XÕ\ f:ð3`¸\1cwc%Ã<\9c\81\13\v\1e\eè@ÏhÇ\1fý \1dÌÀß{P\7fè\95=Ã\83jðÚ\bÿ\9fóéÏr\88Ùë\8b¯ÿ¬Tj\ fÙ\87®\8e\vÏ{u\9fD\bá5$ôxÞX\96Ø\16Ë
-Ò\90BqËì\82¥ÊPðY\85\ 2´4ìÙE1´¦Q\81µ³¯Ëe \ 4±QWsz¤8o\1a\7f\12RÊò½\\81b¿;\ 6\\ 1ÊG\1dR\f\88N»á²\9f\95I\13N(]ê/áXÁZ\b§DÍÚ\0»lb\15\82bâG\ 2\80=\9e\1dÁÓ£\13\83\bV1\15K\a\7fÂ\ 4\88î: ?Gí'fdC0¹A3òù8\9b\99¸\96Óp}\1c[²'ý;½ó¦ÿW+ðqd\10|z\1c\a\10¥Ç϶r\82ùÂ8\10\ f¡8·\U=|¾ñ~"\92£ ÓØjb\10æã¡å\90±\r¬n\17p\94ÕÝ\16=¶#׳DG\87Röó×Õ³ú\92æ¼rÜoÃCÒùF\91SãÑLZmk\1d\9c¥)G·\89ËLö\19j\ 2\97:ÿ\v s3øÖ\15À¡rj·ã\1c7\8e«w\15\ fª(Ìå5¯ã®W\98@,¥\1c½\18ÞÜ,CR\81Ðx\13Qß0ôÑ\17aW\96vD\9aä¤z\10öwÍÓ\1c©\12\ fÂ`j\90%ÓÌ Õ\88V©»û\17f\9fpoøÇïãz6Vɲ\ 6 ÌËX³ \ 5\95ÊVf\83?+¿\88J¬\1cÖ2üæ\9bN\ e¢à¢[\9cMG\1f\ e2. LïÚ2\13YüðÝó$B 2\1eb\8d\1d>Ý\ 1\98jÓ©g\10ÀqÉsÆ&µ\10\98?a0\94YA\16àêù¾\90\14½P\85ôS\15HÎb#÷ºâ÷\14ëÇô\84 ûh{5\9742O\1f9N¬ì¢\eW~4}ë1ÑxÔ/\11اùSrKÎHM\ 4\82¾¾Ì\92`LÈ\92:Å\90×~YI¶\94¶\11«ödbkë\9cÉýØR32Zð\a\1e8øýü*m]¦Õ\80\1aIhX¯°-q Øea\a\17\7fÑ|\88\92\17\85·;~-ÛdyÙ)I)¥\9e\83WÓ\8ai5Þ½byr¦ß\13Ö\93g\87\8f\9ccÀ\1c\94!\1aAÅ\9fÏ\85çÛJEõ\11e\16@å\93\8b&\8e\9d\14ò_\8aî\13\0þG¶¯vƹ²vmi5ì\0°\95\8a]7ú_ \9d\ 4s\ f\9d\15\8b\v òÚö\86¹¨\1fQO¸rd¹bi]³Ú\oÚ\80Á';\86g\ 4\ 3i\8cÏ&\rëOfÔª74<?à?ùîs\16¼@ó{ÛÖþ\ 1òAi¢F\15:\9aWe°8ÛW×úh~8§¤~\14¶¼WiÀ·\9e\91&\fPµYh×3\82[?¿Iä¦Ls0#°\eο\ e.xh\882}Y7Ãf\80l\19ù\90î<cBí"3¿\7fó÷«¢wy\0c+\ f\ 2£Uæt\v\16Úó\9f\ 6ºú§_SGjæÏ.)ÚÅ\1e¡À¯Rèn\0RÖóùP®\16¹\ 5\8b\ e\bLÜ\9bÁcã8v\ 2j\93ÕÚc+¿s½\10ù½_òúÝÇñìü:\v²~'&,\ e8\rÓ*È\9aÞ\94ç\16\97ÎX©\97\8c\83jR-Å%¯HR\86©k"s|\ 4#¯b-±©Þ´\ 4\1aG\9bÐ\82\83ûq\eè\93\ 14\80þC\98ÔÕ³\9e\17ª\8c\174\85\1aó9¢gü\v8£G\1f\ e\r\1c\cn@·íK\bãx\eÑ©:eì>¾]á\18]\10\18®\9f Qé\\13sÞ/×\a\99 "¯2\87òO\9dRÔ¦)þ]^Ûw\b¢]¾,óêê\15ØÌ\ 5\91 ½K\8c²^$0e\14\85M\8eò^\9a¤Wê¯\13_^\14\¸®6\9a\94\96@í\95Î\7fø\85R½ß2°\10\ 6Þ\1a\16\1dDù6È\ 3\1d*û\1£6\ fXéß\1aÀ\ fº\ 2\15:Û9Q\1cr"D\83«\9d\ 6:WIÙ"Ðô\19\ eµ$\9a\v\82®\9dÜ ôQ\89\9cõÝ\ eg\19\90DÜÖh@ê.À¡-¼\84\14Ò\ 4êb\8b\8eÅü.?Ü\93Ë\14;R\1f\1dÑÜÍrÍþJý\ 4\99\12Ö´ÀJDÌ߶/R\ 3\84VÀìñ\ 2rp~.o \0þ´«×ì\1aR¦Í\10þÀTWÒ)óåAx\ 4\bø:g\11\19k\8d\8f
-\ 1I\1c«¢ê·¥FÞEÖÁYé\8d{Ö] Þì'h\1d\85Ë\97,$´\ f\eÓ±¢Ô\ 2½sñ½\99\8bRú\ 1jô\a~¾k;lêUk\f0>\94Ô\85`"ü\92©\10\e³v\8f?\ 4À þW\86\8eKº\11\98wy\1dçJ\17%X\ 5©í\8dÖ\9eAeLþ¥ì%\94a\83C\95C\12£,\82¿³§».ù\85×Jíe\0fÓ\87)Ý\17]9AU\82̪ÓE\99vWÞ\81\8ds+×\14Hî¹î}\vQPÉßc\14ñ\84Èì\83\19Åu\ 3.Ýcë\12k:õb=\8chTK\11-Ë\93\80ÙôÌUÌYSâZ\ezÃ\aó"$ü\18}æ[zÉR7Dߨ¾Æ;Þ\85MO\90k\82p÷ã»)OtÀdº|cu\ 6vngÚèQb¶?^þË®¸\¤²=ª\ 1©Sç\12\ 2ú\19\8fðuo=i½ÛÎwÐA\90\bï\0m)m\85\9cá\vOæ¦Èmf6Qb»£¶F·ÎùIcr\14è9rB´à\e\81p\98Ö\18H[\14õ\9cö\0\1c\eda\9f\ fYFÕ·ùDÌ\aÖQ$\89¾Q»©W\ fiú!5+\85`\1a\1a0O¬i\ 2HQub\95=\ 1E\1e8\7fU\83\a,2Ý\82£J²p-Uvy\ 2Ò\8dy\9cÓ\1ac ½áS\8dÊA\18X\15ëÆ.ÑÒ(³Pëæ\ 3\90 \15\10ÝóÚÞè¸ç>5?\ 2ëKÜ\99ë\89¨\9fJ´£t\8eÿ/O_Y\9e\93\ 1T-\8d-§\9b\vÞ~Kç®î\13\87¾ïù\f]\8aÎy¤eÚÇì'È|ÇLs\9e÷±*ÚúÄf\99\85Û#J\99ÚâäbN*\87\80.Rt\13\99³¾Mí\10b%«c\ 5n>³W/È-Jz$åM1\ f'{«\1cð*§\85\ 5\0¤\81ïu\83F\ 4ë¹\9c¶\ 1ãÈ
-b½\18ÌM\1fÜÒa\94©\9b$m\bm\vo\ 4Î{\97\9fÄê7\1f\99p¼lâ\ 2ð\11\95ÃÉï^\vào\7f2\9e®ç\92#\84\9bD1\14è2Wq\92(ã\96È\80ºêì>Íô#N\868D\9eãØV0Æ«\85ÈP0
-MHÎÁT¨#\18\aïv£üùü´\97ã\8dlÃ\17\e¤+tEª¨âç8VÓÖ\ 3\8b4h6æõ \15È:íP\ 3Ѻxê°ø\10q®¢ÛY\8a\9cîËÄ_Ás®\\13\19»\9e\1dí# 9\91úrOâðÿ÷:\84\15s\9c\82\ 6Ñùè+¯Rñ+ý6\v 3\9b\89fPâpÕ\12\83Õ©àkOëyé\11÷.¸ñp®¥¦l28ïO-\ 3ô\9c\ e?I_Þ\90,C<¨ÇSb\1cãîDn\7fxì\87\1eH*ZkòiK9wà\ 2Ñ\96k\9dÒV\87Ú£\80\96Ç\eðóO×Þ)íU0î`7YrËr©î\8f\fL[|\18e'\8e2\13*¤äðáQi\92íÓ/GjÑÃ(\97øÖ#=l±:\85S¿q\b\99j\10Â6cñàz\99±Ï@×÷QQ9í ²\89óF\19.*V\8fÞ§ÿò\ 1\99Á¼+êÌÞ\83\1a\8e\85\ f4Ç\ e4Ê\ó\9eø¦å\ 4Ä&Ø\95UÑ\80Ä\97Õ\82n\90LÆÃ\91\19Âl|ø\92Ât§L¦oJ\1c¾ÿ\85\86¶T\9fþpÚ\a\ f\8bO\92We3
-Þ\0¬E±"+\91\8eùBs§Ö\9a'\0¢\9dÑ©kLÌÐä·ÿ-²\ e\12u=¼\9eÔÇ\85\13®\83Ìlm`\93u·SZ\8f¡°Dô\1d½;\7f,\0\92)3ÄC\12{y\1eL\16\17ͦ\ 3møÍPr¹¢+Âo\fav\14\99\83\98Ð3®\9a·tÐ\1f¸ \ 6à\e\96Ï\91åu\ 6l\1e åXE-\fHÓ@\90.Ü\15¨i,½l)nïôÖ×I/.Æù\8d{3\ 4¼Bûº\ 1±ö³ê\fÿ>¤9\ 5¾\92áV\17ó%\19\19t4¬\ 5&\16p\87 \94ËÐdÖ+_*>(ÖkôYu¿\11\18\93Q\91ÝDm¬\aPíÓ~RQ*¨\12Üp>V.\10ÁTi~\16iÛ\0\93ñ\98ÜJh\11\1eÈí\bfpü¦u{¿«Ç§Øn\92ÿX¾MÜ¿õx¾4ñØ\8d\9bx\1adIʼA\ 3ñOTÞ y3oª$,VZòY·QS\13û¥íb\13ÊîÿÑoÿù¾}ÂÌQz9ÒÉ$ò«¡T\ e¹\10`v¤È¸:Èì{Ðo·\99]¢õ¹°\86]"\ÕñØý@¹m\8f\91ÿ0ÚÿÚ\13sµ[PÃ\1f4\\13Îç³KÞ?\1cóz\8b?\1a³6\91\84Ár\e3äÒw\1f\98\12\19\0å\15Æ\1fgÌ.iwØO\8f\171D\0\12í4ÛYGdQËl8áêCÀ²¾¾ú\7fÜð\96 \92\80O\9dÝ\80\v7\a²Ä\85óu-$\14=%+þ·îÉ\90o\ f@º4È;\0ª]~\16³US¨û\r¢R\87Ü,9qYÅ\9cqªÔü^D7j\8e\fä£#¦U\8a\11\19¨Ä¶\8aÌ\16\90Æz~\ 5hOZõç\9aö°´\88©â\ e%\8f\99B;\90:\8bõO÷ÄQêîc\ 1£kyî\7f$h]?ÁLXÁZ\0 \96\1e\7fw\0Û\17\1e^Blnàk¢A$-\f\1f\18\82\ 4Ư\83ä\\rû§]\8am«i®¤ha£ëÌ\ e÷ØSéÆDÄÎ{3\98«\e\1cÚ}î\ f\82^Ou&A»<æ!\92ÛE·¡\rÊfÀ\ e\9f\8d\17OÉ\0\8f®ÉówÚ6Ì0X\8e¬úáèÈ\16\9bõ\9dbÃ\ fS\v·øg\ fOæ\8bËVê\9a\11¤+È\ 5øö\82Zä$í\97GOÔã¬#¶¡È·Ù\11ϦÁnqºÚ#(ïf\rÏ'],À\90
-\1aØ\83Ñâj\1f\f"ol1pà¹yªV\ao\96\ fl\90Q
-V©©\8eU»k{ÝmûÐ\r®Ü\82\17dõ¯:ÅCï\80FÂÎ-_9w\r4¹÷¡$\92½\80tG®k;\95u¯\9eàý\94H¶è\97\9dR,¯K7\80Ç$¨R.9\12Å\8frE-d´xÍà,\14¬\10\12Ý\bcÇý\8eWiÉóg\ 2Wqåä\12n `͹!vDhY¾gmúrgÑ7s\94þ\17\90t\v\92È\1anõ\8cV%û¨³6N\8d?¾\eo±\9bÐúEÍÝ\8fÚ¼©'*/\95¸]\96\J²\ 5¡Õ5û\86çGäXì\13´b6³#g6ØøÖS\b\7fZÝ\99\I SÝsÔïlÜÂ\8b\8cT\b\844S(½ÔÏ@\1d\17\98\1cQ¿íÅ\14\7f¾Ø\9dS\94¹\ 5\f\144\1c\14¨ê\a\88,\9a¹\88\12Q\86É+§\1a0\0æ\9cfÆ3\r¡Z¨\9dåÄ\19õà\92ö\ 1,\89?#î\93¤\1c\:\96§&\16F\9bh»\ 6N¶E²a"!*\82!Ç{5HUcÔ¿H?\G3\98<\8ekð}R@\15\14æÞ6\v±úºôM8dû²tYLÙ\95³IÚµ\f[f\12\9ac\82Ùµ7iCäêR\10M\9aàCïÖ\90\ e"ü«lP\91Z_ \1aì\7f]¥\bÑ'#öªm@\9fè\81Zæîå¸CÃç \ 2ø®¼\85\8b 8½®\16\18\90Ra\94ö|Ï\f*\ 5\8e2®\1e~ÍÜ\8a×\1fG,\14X~«tµðÞ\9d°¦ÍñN;#x/ª\83'\1e¦ÞKt\16Ý
-rÆüW\84\93í|Ät\8d'\17\17ÈÉÏ4=\8asÐg\12H:\ 6ä\83@å÷ï\10Ëë`BZPÂ\99è\8c{NÅ1xv×]\9b\e¥\80\93\ 5'#\8f\15ÿ|.Ô½
-ü\94\ 3o\91ù\85*\13\93Ê\97¬a$ÝÓþg))\ß\86\9e\1då\ 4c3\ 42B\7fu\94BD\9f\9b,.}\eìQ¬!º0wF4dt¡<\145f6\9aÚ|à7r\1f>0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-50 0 obj
-<<
-/Length1 1312
-/Length2 9001
-/Length3 533
-/Length 10846
->>
-stream
-%!PS-AdobeFont-1.1: CMTI10 1.00B
-%%CreationDate: 1992 Feb 19 19:56:16
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /OXLDNK+CMTI10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 44 /comma put
-dup 46 /period put
-dup 58 /colon put
-dup 67 /C put
-dup 69 /E put
-dup 73 /I put
-dup 77 /M put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 87 /W put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-163 -250 1146 969}readonly def
-/UniqueID 5000828 def
-currentdict end
-currentfile eexec
-\80SQM(ì(Ú\160\16_«&(\82ÓÿÒ\ 3&\94{\10ed\9bS>µéã¨\8a\87þ\98y\18¦\87\95\v&öGÖà\8bñM\98>ÑÔ¨Ê\1e-¨Ù\85ùD.¹\16õ¶í\ 6\97¬|3áãj;ô`ÓLä_\161\87\10\97Ë\ 4ñ\8e8\89Lô¬\158ë\19H\13\11ÒOã¾{ꤣs\ e\8bH1þYÖÙÎ.F\11kb\9c{¢ùÎ>Ë¢ô;Áb¥ wÊ\e(\82¤*ýÎÃô·[]cà¼\8e]ÉRWvm\8e¤g\9cºô{æ\ fyu\80Ìíh\84³¦\8fpÉ\1fOß\80ý\0í\919çô\80Ü:v¯r\9bCA\87s\vß®þL¿åÇíʯ$\92\ 4ýp0\11\93.Z<'¾F\8b}«iÚ¡\8d»¶3Z¸ÝýÆ\a\96\1c|\ 2X'cú\ 6\9dCV;¡w\ 4\ 2\99EÏBü±\9c÷\8cQß\ eÄØQ\bmCÁ«8èeï6\86_ÿ:\b°\1c¼°pºH\93÷H-Ç\81\9aÐ=3~R\ e}\8cØ;¸¬zÿMógQôñ*ªê+mr`À\9a&é\87É\ 4\0>\a#}¼Ä¨äè\Ó%\9f@ÓÊõ\t,»@\r±\ 4L ¤ñ"¦?{\81\1d\94[úif!\89ÎM\b\94dÒêÙöí`µ\81°A\14ÕÔ^\97¾'¥v5\15N\9b\84dò ß\18Ú\85^µ\e\8fdÓ\ 5K\v.\84b\1f\ 2Z\avÑoí¹\88¤=-dÃ'hÝ\10k\9fT\1aèæ\8aÀ»s\99áoMK t²\15-
-N\9b[ü!¿ Õ1â\81eå\18ÿÀTÝNÐ×NÊ\a\9d ç\96pA\9f\92à;ËþìóUMf\15\96öò\9e\12\17\b\ 4ÑZ%\r\91\7fþz\8bn\8f¥0G\1eÙ{¥d\81X\9aeÊ\13a\91)ñâjÿæÂ/\f8T\ f\8cã~ûn\9e\9b`µ\1aZ\9c´EO×Çù//\947\15\96\87«Y\ f5¹F¥D\91§s\9c\92iàñûH±)\81\1c\82í³\17\1c½Q\ 5þe\90itÛ\8a}©/OCÜ\7fk6i\81\14m\86Ò6\13 ³\8d\9da\91Û\9fê\ 1ré\82Ë\1cÅ\ e8/iÚ\e7|\eé@\7f\88¢§aµo9\84g Wó]\18À\1cÃwà\ 6\18,\89\1eÈ\ 2râ.:\q#Í'ìÍÈs\92©ýö;´\ f\ 2·d\9cüSï\93<e\18tL¸\9c»Ô7\83\ eõ±Õ\8b\0¶{¼ôBmÁæïX;\vJÓ®½t\1e?ð÷)®'\1f\ 3 \19±ç&\80Cý![å\90ùÏ$Ú\14©\ f\16\83¯Ë¨\0lï]V2ÂH\1f¼\eØ"N\89RÞ»|E\96¢7åPZÁC\18 VÊ\1f`>ìpÍ´£>\1cL¡tN\b\94\fçxâF\93\84)à\9e\84õÙ\ f("'.iz+NÅ.ÆMg\8fIÕ«\13|\10ZF{|O²µ\99¸Sg&\93Z\90\14_Bm/\ 2-S\99[\99\1e\97tL\ 2\7f B|Ñ\11zâFQ@2óûªöþ\9bImj+È¿·p@ÒnªCF þ\89Áÿü=\80\81¸f5\82¸\93\91+||Våu=#Ü/ï\:ï \99)÷G
-½Ü\99ìüÄL\94VR\ 1¡\9b\8aüÿl\98½È~jy\0ù\80ê\0 ýǼ\97ÿ\99W\8b\80\992Û{\9bjx2"(U ¥\86s\8dù5\7fÓþ\15¸\92\18½é@Üw\84*\8dÛ\9756«\81ÂvJ®þÐ#§ð£ \ f³\8cØÕ\1aç¦S\0Ïà\8b5tÆ!Ë\1a\9f\8eÛøK°4£\99öô#qqÂÓ\8d©g\aâÚ²\87ð%¨Õ\f\19*b\0Çqß\9eyïÏ\ 3é,\ eµæj¡Ó ¯\1f@x\9d\9eÈ%3o°ÿºC¼àó\88â\14\85´2é¼\85VA:ï:Ä\905ÏÅÓ\1aºi{PS\85ÞÀÓov\84\9fÅP\12ah äÒìÁàZ\16©\848©fRcDÜ»\7fÕ£U.ö\1a±Ë 'gJ«Y@tÜ{Mß|\81U)¹ìß9¡HØU\94\r
-`ªØ÷¤Ë\e\8c\14\ 2¿ø«>Á\r\b\8bmɵ~\ 4|·á¶fE\98mÆÉsopzÏ\15¦\87àJ\8bÔ\81\89¤\939EûwR/\1aMò¥dyýN¡tvqà2E\90ºÒvcÜ2å\91ìW¡AK\132¾>ÜVÖãTÏ\94Á×\93©¾àdliÄ\14í"\90_A<úsù)\e мì\95k\ f\15ü)ú{PÂ\f¿ã\ 6\9f\86C\9fÒEFRÀ!\18=3e븣c-3\8a\85Ò+¿\99ÔâjøõéßÔdÉÏ$ûY¢õÐ\8cæi v\84\83Q\ 6I\16(«\82?3^=\ 3^æ¬x \1f~\82 ÷Ó®ôg«á\93\16þkT¥ãc\ 2ÇyZ»>fê\14\88=¦\09ß0\84ÍÆú¼C3P\vnÔ)ó\1dCÙwû<\ 1\8f<\87\90Ð×\9bö[\8e;'\ e\1cé·(yJW\1aÚ>%ÝÞ\ 6í\88Ð1?òó\8c ´æ\91ñTaø0Ö\16\83GÁØ]\8d\ fó\9ePaLÚ%\81¯ô¶0*fOøøÄ+ý²\f*B\8eF]=NÛ\16fÈÙ'O\ 1ú6P¾4\f\10\ 5"QÄ\9f*v5Àæ\8d\9a¢£f\8aº4\80\13¡%Èn¶< "ä<ùÿ¨\11Û\8eBºÏu5~9\9d<=\ 2\86=Û¬Ø@ò\93\8ejÓ\ 6¿É·Ý¦Â\82F\10Þ\11Éï\1a\8bØrïuåÆ\1a\ 1C\ 2Ï`²¶\85£W®\88ð"\18j\1aêÎÁ}¿\98ÔY?øª\16CI\b\vs\81sqüd½)7Æâ"\ e\19mÿØxy¼^éY\v\1c$U\8b]3\ 3.\8fä\1eѧÖ4që\96Óõæ:³è\1dJTã_\0\9fÑÍD\ 1o§|àmp\99äVã³\8a\r\9b§\80q_\9e]\7f\18\93zæÙ\8f÷°\r+Bîo\94ìi\9aw\12\8bvé0aw#EÒñ\v\91®I2\ eâ*ãÿ¦Ñt§Rô\16#ÐÁ@ËOÅVPÝ9E:\ 5\e$2û \9eéÉ>/@ß\8e\91N#Î\87ðÄø'¦ª\ 1+º5wµ®c£\8e\10\f°c\\bD¶^¼=K\8f{d»;îi«ïäEÝ\11\9ahVðÑR»gôÔÇïÈ22µÑ\12¸¥âÅc1Û3ûøI\8cjºò@"Ñp!\14\0óP.qõl4ð\9bvÚ§¢þ!\93Þ½uæE\1a^\92\9aki_KÛÖììÏÞ¶T\88 ¹Y\1d¢[Äö\18Ad:ùñ\9aÄo¦\1a>ÐT)\824\ 5ØÜçÄh`ì\8cÆTýÔxU%\9a\95¨\8fÍ/F\12\9c¶ØÝ-Âüªé·@Râ+:Ó\81°B{_À'\96\80RW\83\19\14<\19SSÓv\81\87»çN¨\8dß#\90óiRv#z&\eÂIrd\84\ eY\84\82¹(\98ùÃ\15OR\bù×ØjT@Ô\8c\1d£øóÉ7=à\bÝ\10iëq¼¯\ 1\r+´¾ßPK\0}\90U\11{\9f\95\e)µÖ .\8cu%\L*/TÔAÔ\$ðý\8f!¾È\9dÕK\986°\10¨Çö\9c\16^âå"¸\1cCcc\93Zµìh7`·F\94õÖ©::cÏÂ\90\fGõÖ\96\0iÄü!û°8´?\18!^û®\1d\96\1d] \84Jÿý1\rÝu\99m9\16\9fÁu\8f\85KYÁ\ 2"Â{+\13![H\82¾I\13íPߤn«\7f\85\9d\12\9fM,ÂqA'ôQ\19 f\82\9eã\98\92\92ÁS<\83ìiÎ\82\9a&qÃ\95²póçþ\9c?å5þr ¤eà`=hú±\87,âÙ³¡i£à\0I6\90Õ>=\Çèå\v\8f\e\92\90\11\fî}X:V]\1c>\v\0\8f¡\8a]ýM}û#¶Í\14\84¾]!kz\84Ú÷¶´nÂɺâRuT\98\963\ai3Ökº\94pöfÿ\ 6ÕÅç£ä\19VÌø\946\80AïÐÞ\r\185nËq#×.ÀZ\97í\8c\15"Þ\vö\e\1cÕ\18¹à®Öõ_Í\84s\87ýS.\88\ 6\83\ eצ}ßj\9f;\9aX¥\9b#\99/)\89\ fÑ\85\96½Ó\f^ÝiÛ\16úH\80àØ\98\89=\94cÖ¾N*½HF\82\f̬°þ3Xùê\19%â H\86\8dF/´Ä\13¹\\11\92>þP\10AeyÅxÑNh\15à\82P\95ÚÃ\93¿¹9/Ñ\8c\80¹Wòaº½~o*à\83åú%\riõ\ 4&¢\ 1J1A»1¾\89\94\84¯öõ\9dî×\ 2ü\rUÚ&DÌö?%o±Ð\89\80@T|\ 1C\92\9fâ\86ìH^ÒÏEin\11\9e\90Ô\92\82§¢:\91BG{\96Ñ\rÓ,bc\89÷ç(\ 6Ì\80Hý,â\v\ 2E>'½ô`¹\11\95>LÜ÷\85¢ØT}\1e\8d"é\ flYÿó\ 6\9eÁ6{bº\açn&-ÈíLIp\89â\9b(éÏ<»ÏPÌÍr¤D6v`ûò\92ùÕäçô²Ü\eB¹Y^íÕ\8có/«íÒåNW\1dçÂvµ\ 2elÕ/ø\1e\96·g¼&·I°õ9Ó\93l.Ãsþ\a¢'Ëu\8d\9d3ýÆD²a»*8\1ebè\ 35¥\85\8b\97\98[\ 3RÈÄ©ÁkKË\17N?V\8c·\17Ú\1düWv\ 6äúú\87áE?;¥á¢6×É]\93ÌÜ\12ü\1c>-\1fSK\a\89¬v\8b¥\8d
-?×\17\15³ÐY\8cÔà\90Ó¬Û¢ì\97á´\88ýtË_ÌÐú/\ 6èv4v+¶*\840&ENø\15a×\98\9bfmµGNð\1c\87;@ó²\7fQ\ eZ\v#ú¾6A\\1fe_&V¯Vzc¶ðdc"Pæ§\1a¾çå¤þj¦Ï\85\93½ó\ 56ýÃøk\98ú½\15ÄÿÜû\96\f(¬Ì8ë&ÏJË.\19»C×(\1eâ=+:÷
-À\19\89LM}Í3\88ÿ\ e7\eÏO¶w?ÂêÃè)\81\r\95\v~\9bRýÕªòB\80õ ¹\8c\96\1dS#:"\\ 5$/dêtß&u³lÈ\1d<³ß\ 1\ f\11!Á\ 5xÓ\1a~4,tg\9cN®æ¾\ 6ÿd´[\99\8aÊÊ\rð\84¼Ükà\12]9Ê\8a\8d+èb·y%h\ fLtyÁò\15»\11\9a¹L\919i\1aßóµâ\ 1\1dêÌ@!\17\90\89\ ebM\91g^ôºL\7fZw\ 3Ô³glHÔð\80\0\80âa°\98\rwÙú^îë\fkÔdï\87÷\bæùôCfä\85\9c÷EV}ÑôxN´\9c\b yÍ%\87F Ë\10!C\8b0e²\b4½ýe`©g5¢qhÉ¿[Çc\17|\8dä\8a3!Ï\9d\8c\19+I\913<\8e¢\81\96½>Þ\8cb<LFz&\8cbhü0\19¬lK*\13\87Ådk¸ö$º½\18\9e\1for÷Ú±\ f0Ð\e°\1fSÍ+ÛJ«¬\ f\ 4·9fÍÇo«\94îW)ÕÕ¡O\86¶\1eÍ\9bç"\95\0F<\96zb\ 4Ó\9eÔÒ×ìè͸\8f³ßß²FR \1c§\9d\8e¦y\a@\15AÖíLE=Q\1c½áèp\8b³\838\ 2\16µl\12æ¼\82QâZ"aä½\8bÎ\ 6\7fZù÷dÅ\18þ¦\9e=:H\98©{Ĭ\0\81Uf´vº\95cc_\97Ñ=\16\8a³1\11v\1d\9e6¡Ã ¹¾\94X\ 1Óøè\1cJ7|l~çÚëÇ%á\86\fx\ 4tÏ\19²i\1c\10¥H\1fñ\14iu\b\91ô+7âhô\9dAÀÿX¾v\82¸\9aÙ<b\ 4·\19\16\89$ïèä\8fx\13$Ì>b¹óo\1a^L \9f\8a\92R\96\r½4£\99*ú¼îH·ºÁ\95j d\e`×\9a]ý¨\93Î\ fÙ%¿Ôâwjì\91\11±ð\vNý¹\rª\17C\ 1\91Ç%ìQî¢\83Ñ\ fmÐ?|ËAy\eó\81aÜ\1c¶\88/KÀßùW¹\92\9aÁªáý\81]ç¨GúYàÁtwèóz\8fßÏàÒ¼Hì\95cþ\8c½\ 4+i1UÁ\86Yce\15æ[ ,CK=µh½<ÀJSñ¦\84Rjî!s\ 1rå(\11ý\96Ð\91õW\8d´ôh<\8f´pìÓɨÁ\\10j¸,\19\86\9bµ¶¶\ f\14\90ué8º#\95Ýg\1eJ\82&\1f\16Ô\81K\94\84]\2úñp\1e8\85ù±" \813\8c¥\92'¬áÇÛo\ 3ÖàE¿Þ1Mç\ 6fKVWI[\0\86\90Ô\7f÷Æ)ø<ÏlZ"ô½ìÕjaí<\9aª\ fÖFh/\b ÎW\1e©]×â*E\97\99\19\0¾\ 6N\81}D±ý\9c\9fw¹\ 4Mq
-~
-qèC\\80D¸µßßQ\9d3ôèpT7\ 6ì\9dЮúR\9a\81i\97Fr\9eÌIæµÿð[\ 6Òû]\b/R' \96kH \82Û\19þ\88©[µ\ f\9at\80"Sxh\\92\ 4\ e¹\85¶D\v^º\1d>\eÚÐPÇ\82!¹\a¡\8ds\ fÙ#ÁÕà¡\ 6\98Ì·m&Pù\ fs;ãX\û\9d[1ëBÍ»ÔRF`èNÜ\85kÍÛA[k\ 3{ÐÏ %\ 4\0I«[gÒX\5\18O=Á+ðÓLînýÈÌ\1a¼Þ}Y÷)ÃâÐP=\82\f¬ÿ\ 4\1fvgx\80w?f\vXý'*\fÍ\17^þ\90\81oZpÄd\84ÿ\99A´\84|me\1a£$Ñ\8dù\9f68\9cþ\92£ì]\12\99\1e0\v6\90Ĩ\89\12\fHpOÎ\98è\93¾À.Üa6§@\884?Ö\82\1d
-Ñ\9fMAAË\14Ã/Êw:\99GD\12æ¸z;`yxõýqÎ&â\1d/âÙz¶¨V¢3úÓ\85\17Júm\1eAaCfÙ:ñ}y³óüÝ9[9Iì騺Ý\8bÞú\1drÍr\89\13 èû6\1e!J¯|§À,£1.ã[Ú?\8b<v#¼p~L\1c\9f\9dmn>¡£\162w\11ñ÷ãòt¿Z\ 5IsÈ\b\81ù§ªNoBKçÿ\97w\88ñZ0Iü0úyU=«Ö\9c¬â ,¸ÓÞ\8dW5¸`ê\93\8d\164gÑU|Ú\9b\9a\ fî\1eKC\9d³p\r¯\93Æ\19\13¥tÍÐþDà\94м§!\94\ 1ÄJQlGµ(Z³\8e«\0\96õg<¨ôÁþÁ\ 1\998·(NO6ÿ_AEX×åôøÏx<\ eQ,ÅDÀÆú_\97\1eO\õØü\89èÁ)~²\v¯\f\ 3\98#\80òR8\94©wÏm8\84\18F×Á^î\18>\ eÔÚ \99Ð)\82\8a\96\96C@îI¨\83\17\f\84GDH²\ e\1arp\14 >N*?fw\ 1©ØâÒ9ûºËÎF¸¼\r,\8e\8a\15\12o%B\11\aA\81Ü:R\87m\1eï
-¥j*²¸\8f·\1c%ò\8f5\8f\ 1ôW\9d¼çBg$;¦¼\91\83\9cIÅÿjrÞ\7f¼\1cÛ*9d§©âà\12ÔÊè\81ÛÝÎ~\9f\1cm\89²\19Û\8b\9bSq^S6x¼ªÔå\85©Ò\90ì%;v§W\99\14L\1f\9aÃB\95k\1c)æ²\eh¾¯öö\eïêv¿î\88f ûýÑa\98T\919h\13\ 5 \16"Ìæl\9eZù|\0A,\92Á½\1cÓ\r?Î\16\15ÎõÚ*WK¶pÙ.V£\1f\a\0\ f`ª\897\alƱ\86ïqK+Q#º\10²+mZ\a\8b\839Â\a\r¯ÂiÞ½¹¾¸ßÉ^ \1d×ú4Ë;ôG\8f#ód\9aín ·@^=2Ìà\ 4w\86'¼±Y\88^»\985ÇeÑ\84Ù}?¸|!Þá[Ù%\ 1¥ml´rÌ=\rª\9f\9c\ru\10OFc\81¢èx¾ð\83\0
-\11η\ 2#ªnÄ\91xma§¼ë\fÍÔyÇ\17ç¿*õg¢(þfuÄâq»@ØUÏçA\8d²¾a\10°³\19}d\vÄÒ¹ïl\16\8c¾ûÙö\¯Ë\93ª\ 1:\94°È0V·ÙåQaô\10\0ÒÛ?ô\ 1@q×¥ðfê\ eÂFð·M©£cRj!E£\ 4ÀkîÝæFG\15G\f£·\9b·\80¼lÓ«\83\ 3.ê\9cû?4?\ 6W*Ø\fF\17ÖôzÏG\15c\a\16Ä\11ó\17q\1c¤f¢óq\95]Ç·ê\84Ê\12v|ØSmd¾<F±cþ<\ 4^jÛ¢\9cT\eZÃÓ\9fà\9ew\8aÖ\84\a\91\1aÙKLÛKbÅ\92&o\1fÃ\9a[\1d$´6\9b\81\14ë\9eM\ 2·¼|uÉ«\9fK\8d\1d\13O§wò° þÃo!O§³\80 #n¾ÀN \11\86F»áE¯èd\ 3u\aÍ=Tq1f\88¹ê\18»Ä\90\7fñ5v\93þfô¬\89\1a
-:ºv\7f\vBô¬}£\ 3Ê´óÚ\88×®U\91\94\19\93\94Q\10ÉÀ¨Ñ7:S¢J#øËpïv\ 5\8c&/Y\8cÔ\räÒ\btïc\13Ù?\ e\13U\9e2Kn\82:ù\97,, ¢D?\19\1a¤ç2ÇÎXëB\85÷QÐ
-/\8bK7RqSR^e7#~U\rÍ\19ÓN\ 1[UYPN7n\97\12£u¯)Jñ;ö>³9Æ\15È\94À©ÔÒ\1c\aªðMÆ\0ÇUX4\ 1\ f«\99\0¯\99X1f\1d±c\9dÓ\92õDÓ=\ 4Îܪ\7fq<\80µ\88; Çw
-"ë\b\886\8a¶\95\9céHå2$\80O6?t²A\97qØ\1a&Úüõl.®ý¤µ\10D\1dp ºÈ&¹ J»MÜ\7f\8eê±fo2Þ}\ 1êÎQ{\99Q\9f2à\14Ìû§èY\aÐà\0\12Ý®t·ÎÂ)\ 5\1cdÉàK\9atZ{\13\82´n \94X\9eÖh@aØuv\9b\1c$Ëèµú\16\10Zyj$¨\16\91\ 4z\8d\9cK\ 2`h\1c=î8Ã\8dsfãXeÁûÖ\98Ý=P¯òÙ\93ÃLo\89NÎýÜÐâã\1fÇ\19®\19@n½kÞ\85zr\1d©äæ^ç7ÚPc{ïõ6g\ fË\80cÕ\1d\14Ùæ¨Û@ ¤äjÂ\16W¥@1=Ýèûf Ö0˧$ñ+{\81a3Dn6\ f\b*´S[ tµ¤ISYÖ\ 3µ\9d\14ÓÜ/@"\86t\84g\10\88µ\9cK¦2Eô\ e¼\8c£è\b#\1dçê½\ 6î\90za% Ìt*\ e\18]JDô\r%G\8a_*0%Ü}\97ÏÁ¼\ eÊ_\r%Üx\f§\8a?Ú?¸/\99\82\19\82a\92Ñ,ãÔ\9fð\880ù\8ag´\1f«sµ³\14OÕŤ@Ë'\81(âóû\10?èë\82\vµÞ\883¡E³ßÌ@\e7ëa)~\90^äÒ\17\1c88ÏV\97\81§uÃåß\aùÀK8D\eÌÐü\86L`´ã\81¤äö^Ĥ?ßÖÌ\9bw@®B,{Ë\11½Ü¹F\ 5\93tIõ}¶¬\85Ïsq\15ä×Äê&Å\87,\7f8\ fá{s#\7f\ 3Âü@ç\81\18%øïlÒòËÔ\ fq\ f¬\11<P\ 5_T9n\90PÙ\1a½}ÖØ3Ò\164vë\9cSø\8a¨\8btÏ8ô]O\væ\96úD\8eÝÄ_\9f\92x\e°\rå)¹zWèß\ 1\7f \10)\90\14BG|Í,´\ 4ÍÆÚð\19"¸V:\9e%2q\b\14)4Uïéw9døÐ\92\e13Ú[Z\9a"Ì\94é\8aé\1d
-\98²ç"bæGùÒÙ*\19ÌN»×\86v \7f£Y\85Ã\93í@´à\19'£\7fI3\1d\ 6'Ð\1dìÇ2)\ e¿(}ÅÕ5×¥R)í×^¾9Í_«4øý:Í\19\1d\95ø.\9c\90Èè \11\15\998Õ#QÖ\9fÚýêB\1ef«\18S\v²Ú\ 4 ÅÄ\87AâÒîi\11\19>\82áÊ\rôIÿt\90«\0q!½\19å\13)'Î\9a\ 1g\1c>\1a;§,\ 4&\18YW\16MÑ.\8f\87-\8a¯\8b\a¨ë''LøÈÎh\1f\84`m)\96\9cÅB\bÃü½õ\8bߧô}\96\eYn¸Îs_gC[Î\96¿Ü¡\93I:)áuùQ¶ò£|§\92\11\6X\12\86N\v´\17A\7f\19P±üø«Y\vÀôî=¸e\8e\9côR]¢6P\8e\13¢\8e>rúx+@VZ!!éÑù\15½\84\8fPéÝØÁµJ\rp©Á\1f èq=J\8c\89\11FÌÍ,Ý\94\91\12Ý\92x]xÆI²j\rØñ\1a ë®Èg\8bR¼Fn#>)e̺"4&¬¬¾bâ9®©T\9dJÿèNpLvG¡\1cG\18ú\ 2\8e-õ\96Þã\9ed\993\81â\10\19v\vzÞÓ\94\0y\95+2\96=']3rúY\ fȽô\e\84l\90U°\9cí@´\95Ì+yÓvé\18ÝôÙù#¢\8aîD\ 5#\83·kí\18ºý#\88a¥òC:î XF¦Ç púwñ\10³©\1aú\98\1eÛÅ8ÓÃ\0z`\ 5êý²¢\9fmÑ\ 2\18\7f\y^\eZ\95\eáÉcè¾sàõKÓ\81å±\81ê\ 56qqI\9f¢\8c\91×ó?+M\87\93~\17]ðáê\19õ¯\11Õr´0yÔù
-ª#ì7\96Æ\98\11BØ\89Ål7ýcI\8b¼~\93hö\82Ý\81\17üpª±2\85ø²[eT_\9d^CöÚ\80\ 5ë'ñø¶q@³ Õ\ 5:SùÐ\81í6èÔØN±É*¯ß >yø±n\1f\ e£ÜOm¬-\f\7f\99z àZö´¹+â×?x«\0×¼ý\ 4ͬÑY+×e\85¯¼ð\89xÛ(\1aMK.\bg\84\1e¤y\19¦¨I¶\9dx×CæKQ\1e\19¹Ù0ìÉ£â§sÒ\aÁ>gÂ~Ñï¸\1cú\97\9bØKI\14Þé\96±\926Ðu^ì;`ÒO*?Nô¥m\\1fÅaß\8a±p·@ï\97>~u\9cç®f\ 4\95Íp#cäî\8b{ò \9e9\94¼\97üß\17\8a>BϨ´r]J÷]?%Â^j\1d T\88\89i\87\9d×Ì\19S\9c\98\13>³å\ 2§=å±ÞÉ°\1aî½\82\81¬\ 6O\ 1\7f :15\84ïW'4g\ 6\97\8f\8aÙ b\92\ 24¸\8e\87jwph\97}¡+¨\ 4\r\9e\86òâ\1cÑ\ fÓ^\14\93;±æÝú¯\1c\91Qa5\ 5ä}[<^jCi»e`þ^Ã\94îú]ýú¨:×+\11d\8cVã°´\9fï\83\0ëÐûV\19\94ô\88'Þ\8f\87{x\8dé°±\1e»@WsLÜÎè½\97Oß\1fÏù\8aUË\rzl³*~ \ 2å×"\1ex\8a\1fnk+\93\17Í\98X{>â\rFLÃôR´àx*<\94ñ6ì\ 2(Áo\10dð}]r6é}\84-Ö[±É\89>¡\1aÖO\184\1cr}®ÕÁ\85^Ñc\1e,Û §\13\1dÅ0Q\95\11\937Þ\94ø\19\98ê\81\98a£¤J¡\9f@\að÷\17òx\16Þ\814\ 3¤\16\9fÜk_-Þ\ 5½w\9aÌ\e\8aE½Ó§v®¸±\1c+óÂp\8c\13\ 6µ\e ËåìÓ\18£Ý\9aÃ¥]í\14½JÀîúF¤SE¬\99a\97º\18&\81\r(ÿ/\10[óu \rìÆ\8f\97«\ e\b®\83\ 2\95Û\1fÖµÍð^?¶\96]\93Ôbè\84\8bäf\96äª2WÈ\9dOÍ5XD.ö![×e\1dDþ\13Ò¸ºMè\8f\v\16É\¬I\93ª\1eÑÃÀTOÚNmùÆ\e\9de\v£ÖØa¯äÈ\9b\15×\14[\949Þ¿ø\ f±\93°¹\97u¯JW\94\9a\12ä\17âø\90ÙCßäJ5Tù²Ç*·e\91\17ÁPÚ\90m\13Â\164ßÂ\9b\á³\95¢@\83êh\10\1c\16fÕ¦¨1\ 3\ eÎ\10\9c#¤¢\93~à©l\88ÜN3Ü\1fcG\85iÃ\12ð0\9e
-Ø çd_\81\88ÍAÂVü\ 2, \ fò\1aÙ\91È\1eµó4Î\8d\ f9\93C£Cy\ 23=qèIRÀ\eýiË\11Bð¼¸qû~\ 2Ò \ 2=ÌÅüSªÏf'\9a{¿æw'Ð%¯!'ð¹çìp\9er\96\80=@ý\85üÁ\1e\9b1¦\81ÿ¿Sâ\9cni×\96\96Ë\81"Õ%6x³ö\ fH\vp\8c]ú#\0D±ÄòP\a¥X\8fj),T©¼<w3®\97¹ì\1cÿ?®\\a\17DQ\95hI\90\95þ\9fÜ}Ô¾8Ú¤ãÁùËþ«\ei%,\85í3Úùk\8c¨ç\93\ fCíþý\13R\7fþ\8a°,AX»\8d
-´$ D9ûű³Öß!Îr&Y«\ 2Á\92/lä®/\\bäV®ié\9f\11CNbÚñ·ä´\1aÒ\1eY\94]Ð\19\14Sv0\91\f¸\91-µÖó\rNƯµ]\ 3ï\e\1e#Þ]X8\1cKÛß©÷H¯É!°Ñ:·r\88B\96[éÛê\97@©`\9e!Ãìï x̺Ô\eqÎS¹\85Åà\r\89U`-&¥V;\19ÆrëÄÂØ,®\80\r7\98\9b\10xõ I\8dÓ\1dR\1d4=óÕµøx-_áZÏèðFXë\1f\9fÓò\84Ô VK´oÞB0\r\ 2ID\11ÎEðxBN9\8f'*}\ 5hrG-\9a^\15©\11\12\8dâ *û*\ f\14ûÊTA¨µ}Lä\82Ë×\9c\0íÂÀ²l\9a\92`\1c\98n\8f\9eTdY,* \1af«Ñ\89\9fe¾"óK\vÔé¬w´Ù¾ô¿,\13ËIæ:Zð\8dXG!ÁTk\10êÜõ\10wx|e+¨÷uomZÒC§þè8)â´Ð\8f°ÝL?\bÖ®ð\89
-ù&Óà\87[\90v'\81\83Ö^\19To\b°Õw\fâ\9a\ 4âÞZÁ\96j\0\8c\14ÐÎ?ò_\v}z;\02ÖÏ9\bº¯\<1þBh+é±+\b/33uö \95:õ³µîõÎ0Åë!9Q\ 5\e n
-É.ê({@×Y\16Ç\93¢çåë¸@\82ò©\r¡³\97¿Ë\8eç´xóG}© \88ú*UjLÉaÔÖéëûB%lÙWá\ e\193\89¬\f\8b3¿\14èdW[x\rX¸>¤r\10BÐ×Øà\ 4k3Ëi*\88CÚ\9eíçl0\183A¾´ 1T9 ñ\95v^\ 3u\84mEY|Yà\16³3|Û<E\9b½Ñ~\871¿\17h\91\93\b·ÒU@ú\ 5\86:z\85Pß\8d×MÇ\190ª\8a±&\9a\13\83±×Áæb¦á Àltæ?(?}K®\9bµÚK\f\83\13)\13º\ 3©=\ ez\9dZK\9cÙÄÊ\8bzÔT\87\93\8f\13m\87\17»d,J\19^\1eï\9c¢<¡S\9bÅ¡\ 2]\14/&Û\99-mܸíÎwwålP\ 6R\9e5³n§ê\13\95<iÈ\88µ\ 6u÷.1½ëF¯\98¡Q=êKUïÃOÀ;!ÌÃ\81°íÖ\82zÃÕûX«üIËlpÓ\e\9c½]þô\85x§\18v\10\8a\9bS\90\ 4Cf,·n\8cá\9aP¿\9b7\152Hc\16ÆxâUƲ÷\80,èä¢\1f¥ôï\80èFª|o
-\9c\8fë\r¾ëë5ôP"³7$\1eïÓ¤\94\88.\9b\15n'¶©\17yWp -Ëȧ"\ 2ÞC9\1dìLsDÃ/ÝX³¤\9cß\aç\1a\15¼¯\0|Ç\17º\96\90!\ f\8dHB9\10\19$\93\19Â\83Yͼ\ev
-ô(T{\87"|/\96\114c\88
-\1ar\17!Ï\9bQ¥ÿ}\88\81á_lÉÚUÞ0.qùu!w$¦â¶ø\16Ø(&\9fo\9d»·*ã\aBv\10\94ÚWà\9aÞï\89\97\97ÏTgÔ%RÿVF7A2·Ä\ f\98d¸6LyÆl\e¡\81";]õH\f×\ 6§£¨X© Æhx\ 1Oxbï#\8düÿ\8c¿0`ã£ÅʳÂ\97õL\ 4³Á|\80þ\aû\ 1¼\12X\9eàGÒÍ
-½:\94ü@×ÆG;R¶T\acéÃ*\10p$%ã:ìjq\aã=\1c\13W(uHÁXm\10\82s¥B\ 5,¹\ f,uLo?j\80ä)\0\1d÷q 3\15p¤e\bDø§ZnÉ\88ùöçu9{Í\8c]åàè¢\133J\88?M\ 6s:gÝõ«ë\12},4\ 2'Hýæ\e\88â}'#0¯)kÒW\a+q\98Àö»T³ãà;-Ö\7f \16æ_<Y6\97]Îç#%Ò.Ï\17«\90\98À£YüÄ©Ó\v©\83~\7f~À<
- îë\16NV\1eÉÌá|\8f¯®hÐJ\f&\8aÊ\12\ e\8aüiWÓb\98EWeÆÕ\e1\1a½Í^(ú\93Ì\88þ\84Å\9b\ 3PËO>\ 3à/\9b\9bæü°¦\89Ëé6Fî\ejb¹\JëJ\9elS\8aöÝGÌ\7f0cÍG\9b£j¥\91>°0p\1a²\a¶\9b±FíÎß\12µÄPTü1\12s!kYÿkèÚ'>Dttiø´bûÈ9>Èò\97cÖ\17xf$ÚÕ\7f?\ 3$\rE;\91³\ 3ø´Ð\94ö\ 4w\84\1e\17Kò½[G\92\12wÎX¾>q-\96\eT\89EªÛ\90I§t=.~/îè0ÚÉàCx"<TAÁ`Ò\ e\13 \aç·\ f:øà\9dU\90\99R\16gD\9b\15Â\8b\96ï\13æ\fOÙeÀê˾µ\8eè=\ 1.\16\85þ\19üúf±6\1edï¡ÙhEÚ$\f\99Ø:öÕ?øª\vËÚK\8f [×Sä#É\b\0GR\1f¿\ 6\15µ·\ f\11Z\7fy/âùë๦¶\9a\9d\1e´\e¦\173ÜM\8d) N#]9C\e\ fx9\9f©î{\ 1LÚ5¤kÌ\1fÍÏ×hãQbö\97z`Ép«Û\8a\1fáYhÖ>=Ú-9Ö/
-&âÇ\0n`¼\9deh¨\1c\8a{\96?áp\96¯|\ 2°È\bè7\940000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-57 0 obj
-<<
-/Length1 815
-/Length2 1173
-/Length3 533
-/Length 2521
->>
-stream
-%!PS-AdobeFont-1.1: LCIRCLE10 1.00
-%%CreationDate: 1992 Oct 23 20:21:59
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (LCIRCLE10) readonly def
-/FamilyName (LaTeX) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /BMCYBZ+LCIRCLE10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 8 /a8 put
-dup 9 /a9 put
-dup 10 /a10 put
-dup 11 /a11 put
-readonly def
-/FontBBox{-2000 -2000 2040 2040}readonly def
-/UniqueID 5011942 def
-currentdict end
-currentfile eexec
-\804y\82«9BÙ0ài§\r\rH1\1duÉ\9aFQ}\0Õ_W×Ðn®\ 2ÎB¼o\ 2G\9dÒ°\17¾â´² 5\11¹\92±\9e\8e\ 1AP\17ri³ð#¯\92\ 3Âh;V Ø\9eZ¤\7fæ\96\91\17'üð«ÃáßÂS2i\0Ý\94\84kd\1e¿ºk\84\1c\fÒ\@\aí\9cfÌ2|jºòð8;P¯\8cøí\88(b¢ !\1a$Ô³Ýe0\90þ\7f¬Y0kq5«²\1d\19\7fa\9eÎÐ|½M\12KC\12æG0\0áK¶ÅBG¡÷ù\94ª&ëùÊùÕqjÄ9\ 5õ¹OÊaÎ!\8c\ 6"K>Á¬Ý ½\9c\83'u>,¡æ\95Æ\8eÌôá\11Ý94\18^P}Ë
-d7Â\82Õ\vK¶£\13\95ÀË@Eì¡\7f\8d\8b\1a¶`ò{+Z°\90Vg®|\16Ãç\b¡öHÞ¡\8a'Ð\f \838\12fd]â^Í\9aÀé.(K\8a\90ù\179W>zí\r\8d½Î4\95í\18ç¬#äÞ5^²¤ý\81xÖ¡ua\98Æ\93\8ftñ±æ
-\19\83jûçc¶g´;EÈW \8aþa\93MÏ\18.¤· D\12ÈeöOv^YµÑY\84né8o1ï"xÙPÄ\181î\ eY¬?\11¡½6¨ÌäÍ?Avý\91\83\1e\9b\e\88©ó\v6 iK[ðf\9a*a×\14+\vføhBØAÚ\94~\16\98\8b¶®X³É²h\10À¢\183-\84?þ[\16ë3^©~©L\97³[<²=@Òëí\1c¬Nb\12\ 6\ 1fó8«WÑ檢E\a͵¿¢\9dóó\10ÿ³î\12íMÄàZ7EWG°õíDF\17¼à\ 1µå;Üâ¨>.H?h¨3fA\82ßs<\15îõå¦\85Ρ6\80&ÖË\v\13/\11\97a¶DôZOi_lv4®<í{úÓʼ@ÆXÓC¶ÏeÀ« LÇË \13\96^\1aÖ¯±¼Î\88Ø\9aÞRàÿ\e\8eá\ 5rò*+²_\95üÎìø\8dóÍ\9b\96*eû\1f\80zà$çùÌ\80^\19Ì;wMĽ\9e@Zÿã:¢¸\rMÒùù\ 5\96¶¤©\80µ¤ñ\7fê¶\b\895,gE\93'ä¬Þj\15VwzÀ\80-Â\aÓE#Tf(¿4\13\9d\r¸K\92ɤù9Èz²Ç\7fq\15¤Î¸¯\1f>°E+nhjþb\88\81Ê0`5¼îI\1eíÛ å3"[\a\9d W\ 6\96Yʺ)\14\85·\95ÐÍð9jK&\97ÿ¬>³\181צÓT`ÓÒ\ 4Þ\86b\8dà>û\ fü9É¿<\\C©BÖxOZaÜ\17á\ 2³\ 6¥+ó\9f·¼\18¨g\ 3Çl\82\95\f\967\84)Î\ 2C\14á¹ì\8a=.úª\17$n\9bö6\8d-ê¾[%|\87e ò\99\ f¶EfsÜ\91#\9c´\87Ôhb*öÑáf\16=q\80Nm\ 4ò´¾Ø'@\17ûU\0qIxÒl ²R¦x\1aÅXe3°hT{1\ 5Èa¬K\908ô\98þù]5¤Õ\0°º>¤Ô)\90$S\1e\92ª\92lü\a\91è6ñOHðÐr\94\9a£èõÆ©\8c\8cò-\97'\94\1aîmó\97\8bË\88\ f]\14\ 1}\0abXòÝ¢2õ
-²CU\9e×Ìc\bél\91ê6\7f{\8b\99¢í²sPQKX[äà\9b\12¤XÀÉ\17!kC2¡\0QúÙýö\86\ 5ºj\14ÖPÈ\1f/ýÁ(æ\88Yð8#=q3Pâ&\85ÐÄ®ù¡5\1c\8b%éÁQ¦¤\82s]vÆ!Äñÿ\12\80*àZ¢E~NJ s |\8eÝ\9aÚäå\8b\ ep>jίQ¦\8cÑÑ~\9a&30¯:Òß\rºa÷v\997¦è¥\19\8dº\9e¹ äD\85\13u§
-\r¤;ní0d\1cç>1þÛ0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-76 0 obj
-<<
-/Length1 881
-/Length2 2369
-/Length3 533
-/Length 3783
->>
-stream
-%!PS-AdobeFont-1.1: CMTT12 1.0
-%%CreationDate: 1991 Aug 20 16:45:46
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /QZZRHI+CMTT12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 99 /c put
-dup 101 /e put
-dup 110 /n put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 120 /x put
-readonly def
-/FontBBox{-1 -234 524 695}readonly def
-/UniqueID 5000833 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÍÖP
-½¥í\985ö \16ÏÈð\vl\ 5.×j\87\85kPôØ\rúëP\8c\97ø(\1f?\88±~M;\90Àö^Ãyy\1a¬Ü\16*f˼[âõ:\8dç-Ñ\13µZ\ 2/¿îe\8c¹_[³+ 5{^\ 5\ fÝòd tp¾ñÅ!\19¶ûÕÇ~¾Ùd¬Z+¾Éسä\8aå»\0:cÕEwK\92+\9d_ö°\ 6nÎCdZ\13\18y°2\13}m\823\85þUó@-U\7fÓ´Hkç\90\11Ñõ¶gîØ_ã
-²ìN\1c/OçPÏ\9aiPdX\a\1dè\89baÀ\ 1±Â\90\93\7f¤*\1f¨}ä\ 6éøjL\9c\ f\ 3ö\9fºq\91\14ø®Q\ 4
-L\ 3¥\8bo=à'öro2t=Îs\95\14ÂÆóÂÞ\1aíÜú\8eí}¥mÖ\8d¼Þ3Â\9f÷¦\94v\90Iä2^Éa²ß\16ÒFñ\87\81ûÖ>ìbÂo\1d´\1ejfj \88c\82Üë©\1d\8f÷ÎÝdÝÈ¢ñ_ã@v dÄoëÑôÜ7\a®Þ\fè¯\16\eË\8eJÚ - TºÊ[ç\1c(«\8bó/× )ª\aò}e\8ahôT¤¿8oc\14"M\16Çð¨bOk\861\9aN/Ñxõ\96ó²\r°2ê(ÁW¦\8aiúÒ¼\88\88\16XÒ(l\rNða¼\a\f1Eò£~¾À?QÞ|Ú4Í\97~î½\86°\ f\97X³¤\96ô\1d\9at'\9eóÆ2-ÅIEùPbÅóz\1eQÏ~¯Eò³cK-}\ 1ì;)\8fó[f\16Í0 à\96öƪ+ðLJ\93aÁ\9f<g¢\8d\93oü\81 ñäi\80²\9bõ@GÅñúHæv\11§O¤43\84ø\ 2¤\a\9b(¹F\81á\19«\f\16\92Þ[¿Bd@\10#Pl¸\a2ÞÆM\90a\86\9c³Mé$ÒÂn@K}½\9bå[\9c\fZã \\15Òx»I\12ß\14\84í-s\12\8e]\9c\1f\1a;\9aÁ\9e,å6l\96dO[=>êX\9c®ÛXoÙ¸ôß2ì\91\ e\9bt4Õ»å~\ 3\89.°8\90V}õ¸\11¯ Ú^\92\9dEjó``\92æ\9d×ý\ fÕ\ 5¡4<\14=\8cØSÄ\85Ã\ 57ÄH®¦O1ø\87'V\96£'.\0ø\86\ e`¯±©2${pÔ_ì\9bu\83M¡oé¶Ñ\97}lòQV\8eÆá²2\1f
-\16\8fà\1c«°Û\85Z<\93Ûb\ 2\14gÃ\9f3¾4£E¨4ÀõpïÄæ\81\ f\9bý5?$\eø\96æ\0\11\1c/¯¢çμø\93xA\8f\7fµA'\ 5\82\17 sx\8f7ã\15µT{Ñû`t`¯\1cZ\ 2[w".u\99ñÝÏÕ¦\ 4\82^D\ f°¥âÈò3zj>#Y\1a$(µ\18x\ 1xkÅ'Îë\aàG\9f/F\ 5\ 6X꣪9§þ£óàyÄ´\9eÊ\97AV\87\12\1f\10\16qò\r*ÿV\ 2;µô\10pÜÖÏÿ\93\8f×\86Îvr¨ÂçK\ 3\99\13:Ü)+È\82ãƪ\ e¸\19¶.\83Хؾg¾\8fïä!hò\¼è\96Þ\9a;\1c5j\80 ðf¹à¸o\1dâõ¤æ,\1eëu4Q³j\ evÌ4î%\80iG\1c\9fÔ\7ft©û-é¾C\91¨Ín¼\ 3O\f;u\a2¸Ø\0ÍÌ\14£\82u b-\8cE\8a\94ÕjNöK ÂjðK¦\9f\93*1n\ eÇ2¸\ 6\93vo\10èÿèGoS½RûMÏ\1a87d\8cy\89\95Ï»-ReDu}\18ît\12
-Ð/aûÍk\9e\9bÑhÙ¥*!\13\9d£Õg\85ÉÆ\8bîýB¼\8c©Ö×æÃðÝ\ 6/iQÍÆ5«\14\1c\1eÄ\rÖô®Ò\\97çi/Bꬵ0Y\88\\91\8c\92\9b¦\94\94¾A!9\1eÂ\1dôç1X%Ô<ØÎ\15\8a\\15óË\16c¿¿7Õé\ 1æöÛ&Ç\b\8cg\9f¾Ç3\eØu\8bãäÑÔ@\93¾ÞZõ'Ò0´}Ë| +\16<s}m\84h1+ËëüN9\8d\92\99T>R«A¤6\8a\88yvøí§\8cvq¤^\a\97óõ£\94eüé\8c\8fû\7fÕ\rN[\9d\109Þë;!1mô\17\9e5?:lé\82Qå\8e¬ø¬W\9bå\ 6&\8dò<_Jô\19üKÂQ\85\8a¬-jAR\1dîIc\9cÉÿQíJ<¦wPb´©f\8eÛ\b\ e\9fHg 7du\96×\8dzNº\17ðFª\ f\94iÓÊL\f\fϡ¨*\e9\a#\82½3¿\81ÑSQ*ú1!¬OHC\14\ e]V¾gn3e@LAäA>\8eÅÚ\0Sû4v\ 6k ³E(x\91úÉT\9cÃ\9fÞ$¡ °«Xi4\9f\ 4\ 6<2'y{³¡#\1e3Óöf-5·i\ 2·VûÁ»þÐê÷«Òþ\1fÓ\\f^\82l\8b\83\a\ 5\a\82\10\1d\ 5/)3\ 6d±À F\88¼\938\81Ü\eFÖÐëp:@ÈÑ]Æ\ 5LóÃT=\99hÛ\84\\9c»õ"¾\80QáÖ\ fm\10\1eì>u9SU?
-9`\9c;ÛQ\r\vz[\18Ò&óÉä1¹#\9c\10,1÷\97Çh=Â\9auÎ\f;Ý\v\1f\97\a\83\9d )û\ 35x8\12\0£\\86½\9e#é°:L)¥Âç6±Mêó¼\9d\94\16¦\ 2WE\129EµcqpKÙl³mУÚËS]j\82ZÏM\9cúÎs\b÷âÃÀô+t\0?ê.°8.ÁiêÞ黧XJìU*¨\ 6Ì{?d!½\8e\1ePj0U\8f:ã/a\r.\0\9cY\0L=T¶º¢«\8b©:¡<\8e¥¿W@2#Ð\98»\96á]2]5ÁHÍ\1d\18|,;oz\1f\90ú\95ÂÎÍq\8c\94\83\0e\06%\82Ø\12®\8a\80(\a[µz1\89Ê\ 5j&\ fã\8a\1d7íâÜr\1d\1a\90ÒʲÚ\16È¿Ó[0þÜ©1jvuª!/&Ê% T\ 3ü'+Ò\ 5U+f¹\b^¶¿¡½{EaÆ\ 5å¼Ü5U«ÒfH\9c ,olÊh \7fvn:î\1c\98¤J»]\88EË®Í\1f\0\²3XÅfë§=®W8ؽµæ6q[zç´ÿ\1aå°°\15¤´ìªÒ\89\£6|)\87EF\16lµ\15\0xô¸{dùç\9c\ e¼«ÊdÌο®q,6±Ü\15=þO°¢W°\89T'à<ý\8c\rxÅêãyÈ\ et,>\82Ä,8õ8uLï
-Âõ}!vg|õgÉ\97æ_\e¸¬¨\ eF\953°\ fY\ 4ó1â§ü¸W\1eÐ\ 2¦ür\1c\9f4ß`áÜÜqã¤\90´\12²@§Òe+b'y&\90Ýe\12\ 4\90º\9d\93\rì(t\93¦Ä~~\f¬Ì<ßbYß\1aûf\9d\1f^p\9a1àö·,à¿\13ÍTÞ\e\85\9b\94çÊ\e^Ù©®(\98b\Ä\84ÿé\19Ä\f\96\15ÅO\90>Í\82Ñý7p\9d\9fèXçD1\86ÆëÍ$\ 6Qù\e#©\89Æ1JªîÆK¿\1fî_ã\19¤.~fG\v\93\96\ 2\rÁ¯àx\97(zaÄ\17.\ 5J\rÿ\6\ 1ûÔ°öë1»4¡î\86Mt\910+\7f´\ eÑôÛ\ 5\výz\9aMÏÑ}§·»k\93A>h\13KD7^ ng\95Ý\93 Ú£ö\80 v&\15\11é¯ÀÚ9aÿcr
- MP:àð\8f\ 1Ø\9d_\e\80ntßå?1\88\ 4tNJ s vKi56\88\ 1\9cÆëqµT\95¥©\81X$Ñ\ 6ª%u§\99Ï\86ÄK\10o\ 1"Ò&Ìÿ¦ù¦9«\98]\86G.IS¡Z \16mÄCÈ{=\rÄô]Ò\8f\92Ó\1fÞA\9f{'3\16¢0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-95 0 obj
-<<
-/Length1 810
-/Length2 784
-/Length3 533
-/Length 2127
->>
-stream
-%!PS-AdobeFont-1.1: CMSY9 1.0
-%%CreationDate: 1991 Aug 15 07:22:27
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /UJKJVH+CMSY9 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 104 /angbracketleft put
-dup 105 /angbracketright put
-readonly def
-/FontBBox{-30 -958 1146 777}readonly def
-/UniqueID 5000819 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÈÎÙ°\9a'Z²1\19NÏ\82\93R\ 5\82oN\97]ÎÎÇ+,ó¡\88\99ÌÞ\1fÙ5Ð\9d\81; lƸ<ßO#¹¦\r´\1f\99v¬32cÉ\bÜïͽL\84\ 2í\0£nt\87cM\b\9fÔZô£\8aV¤A,;\v¯úëq{ðÞ\9fûz\84`¿GZg\18°Ç<W\11EÐ&\95rvS\ 50¢ûïÆÈöpRx\8eg\ 3»^ä\953\87\vÊ\1f\11:Ø7PÕ\97¸BØÙlB;¡'=ÜcëCóO©\ e§:#Jó_Ù²N·O\19bn\91$ßzË\92b\9cÈ{,ø\1cJ\89²tG\80m³C\93Ýð@)XâÚî\vKó\15ùª
-&PÒá\1eâ\89ÿ®É@Я\16\ fçò\94\11ÁÄXiѬ;Ïâ®M§$"T\90\95ñü\9fì`b\891o\10nq\9aJâýEî\86\8fÝðz\80é¦&»CÍýª\9dÍ \8b\88ý\99¯ ²\7f\9dk\Új?¨\8dZÏÎ\8b^ë³\88T7\8cìÿÚÅ&QO\eéû(®b\89\18º\94*>\ 5·\8c:ÿ\80\8cô\16¥í\ 1¾(\ 21·Zzî\ff°T\97\13¾ö³ËÁ\88æ%º\80\91°¥ýÁ\93Ùi²h[½6*Ïõ>&\13µN}ïû\93+P]\e\9e\7fªööV\1axOÈ2Í\14]ÐÈ×À\19K#&ßþ\15/h\vo\ 3Ðo\80oÿ?f\84o#F\eK$â\ f\14b¶·Dä¸õ4®Í\97§?u\19û\16Ê\88¶\ 1ý\94ÇEL8\eË%I¡\8d\99²òr\v\13\18ßÍÜóT\83{LÒ°>Ë5\971r\ e\98Ns@cç\1a)B+±Ñ1R\88\817qÚ³ÏññÌ:¨L°;´\rÇ\99\ 2\1aÕ\97p+\16ÜR\15R\18ì£È^d\1eîÁ\9d+\99bÊõIÅÞÚå\12ã\9cæ®ÚÉÜßn.g\8eµþ\rÅËA¦¢Ø·\16µ®±R\83\8c|E\993çý\v/#<Öü/q\9dè<î¸D|©41ph\ 6\17\81P)34\9b«ÓV\ fWÃCÜÃø0U(&Þ©/>#Y0\94Aúb\f\93=ÿbÉ\9fNh*Ès\vë¬ßèÛz\ fÉ'ɲßi\11\1e¡ÖTM*3VÐ\91\ÖöfC7\1d\ 4±Ñ\ e\1cÝîIý/\11hi\ 4\12ù¿â.\9a\86\12ûpú8\9a4ÄÅa©Z|6¡\14Ì\92'\87jnXã@9+\13ج\ 5ìÖl\ 1¹\8a\9a¯v0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-98 0 obj
-<<
-/Length1 833
-/Length2 1926
-/Length3 533
-/Length 3292
->>
-stream
-%!PS-AdobeFont-1.1: CMR8 1.0
-%%CreationDate: 1991 Aug 20 16:39:40
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /PLCKEA+CMR8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 45 /hyphen put
-dup 67 /C put
-dup 69 /E put
-dup 82 /R put
-dup 84 /T put
-dup 99 /c put
-readonly def
-/FontBBox{-36 -250 1070 750}readonly def
-/UniqueID 5000791 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÍÖP
-½¥í\985ö \16ÏÈð\vl\ 5.×j\87\85kPôØ\rúëP\8c\97ø(\1f?\88±~M;\90Àö^Ãyy\1a¬Ü\16*f˼[âõ:\8dç-Ñ\13µZ\ 2/¿îe\8c¹_[³+ 5{^\ 5\ fÝòd tp¾ñÅ!\19¶ûÕÇ~¾Ùd¬Z+¾Éسä\8aå»\0:cÕEwK\92+\9d_ö°\ 6nÎCdZ\13\18y°2\13}m\823\85þUó@-U\7fÓ´HhX²¤µ Ì.\eô⤠çHH<;Ï]ä|Å&
-:\96|¬p§£[\88µC\15\19\1d\ 4#´\ 6\zC)\87\93\8ckí;rcÂ\91\8bnZ \17E~\rN¼ K EAóEì6zè\©½$V\8a\ 1Ó¹ø _t æÄ#Ä\14³ÜÎm¤\8dÑÈ\9aVÐxàÐâòb¡6@ m\17äNã\86l4qûXþßZ;w)E\17e\1c\16½×&}9¥Nqqu-½æ:Á\9b´³\ 2\1cé^µþg9\v ®M\9eÔ×\ 4¦tCõ]Î\17¬Ù\96Áõà#Éå¡\8c¾ìà \7f#v:Ë\86Í×Í\138\1açNHI^ÇúR\ 59Ø\7f\8a\8dË<\82buF\9bh\0\87jE~}\1e[ègDZÌit*\8c\9b
-ÙCH+ò¤
-í@ºëi #;6´Ê--§2)VÇ\ 3uÑRe5\0²ò-*¶\99\fÞ-¡KI\17÷Q^d¼=\96¿wRXü}®NB¤É¶Ú\8eÝìJ\80\f\8aÈ×^HÊå!7à\\ 3g\7f]j\82úFÙòü\7fVÖ.\`Z\ex\98¸Ñ@\1c,¬\1a\ 1"¢È§ªà\96\aòÅò\92\93 \9b\99Y9\92\83¾\89\ 5\14R\89\828·wÛ\980ÿC\18¢\98²!Ĩ Ç\0Ê\96OÉ\9ek\1d\9e°ºü9¾\9a©ßú/£&²¤f\1eg&\e³ÛÈXDço\93\13«S>ákËG\81fÞU\ 2¶\8enÁêa\10õ2\ 6Ï\1cþ¤\19W\e\ 2C$K2ê8¸( \1eb°;ÏGj2Â4\1cì¸ ú*??3\93\15Õóªw\ 4@\8ff\17Ð$b XX\9bOêÅ»\97lk:ã\177&\86±¼¡\8dã\r-\18%S¬â\aG\83\14éT¶9[\87þ]x]ìAÏé\15ls\v\8b.é#é!²©Øê\7f\r$\83\a\7f2\bÃ\8a]ùßÕG\7fû\99;b\19¨²ÝBIû\87Ö\13\12\1f\a§_¹\90\86J>0\0f²-\rLÒ\90\8b-¤´\91sl\97d\94Ø|i¨\8a?í\1d\17\93%û(ÅÓ¨\9e`"©\8f Þ\1c#-ãÚ\ fÌ\7f§\90I\94¸ÉÚ\98/hã§[Ù(`\85\9d\80R¯g\7f\8cù7B\vKªÀ|Ï\ 1ÅH\a%Æ\96ýè\0RÁ¯¼\r´O·Å¡\ eD.àc5" |QuÖ\87áü¥\9b9(_å1Ðtroþ#"\0(\1a\1aQr3oøþ\95Æ\17\85ã\88L\ 6¶3ãñÓcª\ 1j\9cÈa\8e_¸ÎBC<ß\0«[ñ möÔ'Q'\86ÄfÍ\0Wª5Rî\12Ü2©y\8f\938ü\18)YW\99;¤öZ\88öyz\ 4Þ\9d\9e\9dF\e~sa§}6Ij\ 2ååW¦uéÆøê±0\16-É^ÅYo\88}{\13\ e\0¥\19\aÌ,J¿3³\1c5
-\9b°\8c1L\v\965P|J~ç;\7f¶yÙ0àZH\ 1a\ 5)ï\92ê-%êP½\e}ÖEr7\12\ f\ 5CL\19Lª)\94Cðz\9eØ\vr\8e#%^\ 2\90ð±\9cJ§\19Î\8fÝåÔ-\v\18\ 4(\17Xo\8fmMj\9bTw±\99ËE½HË}ŧäê\8b8\84£\ e\15_\19\19|\80¤\8eszÅ-\96äVÄDá@ßN\19!\9fD\9dH;Û«ÚÛÉ\ 4è'\ f\ eG\9cÂcTíðî{Ði\82LÌÚ\8a\9cÝ\ 6ª\88þuÞKñ\9fëâÇB·ØâUºàTZSÈ\1fC>Mõú[hM\ 4\1aÈ}ó\80\98\1a\9f-ã\1c\8f\ 4ºO;\99Ì~y=Ù¬M\85\10 -ЫU\ 4oßçºË&\12\90¢³\1a)þ\87*¶\ 6mC4\1f¦¨V\9cÊ~izøw\98=°x{^³2H# \ 4\17*\ 1Ç\ 6¶\ 5?dE\1en÷\91SÕ\9e!D«(§¸õ\93¸ºÈU´\1e\89R\87vË\16¶®XÒ)\80sñÞ\12\ 4$ÜÝáÃk \f×\19\eëó÷¶²\18\7f\8e\80謴"Ó8\91Z¹ÃÖ]R±\81\82§Ï#ú0Q'i~\14\1eT±\97ìÒxùKp\10ýó\13Ã\95\1dy\90ª(\1a\13\8e±*<\92Ç\ 6¯\1fÑéÂY$\8fÔak\1f7e3\13í\84±¯ê\vvY´\96\ 6ï=\10[ûKß©¡n\ 6¿Ps\18Y~Ð\1a)¯,Â#\89ò¸d\85U\eà\9e¿ª1ߦղ%9-ÓR\ fµt³>\8a\ 5\9cwÏód$´Kðè\1e\ 6r½v\90\93mÍîí¿20/ZÓ\11µ=x8d\85ºÂw\87Âi\7ftç\8b\14 (ú/±¬$>è]\8d\96Sm\97\16¬\89\98\1eÞK\9f\16\88bwÝâ¦%£\91\ 3=\93\92='ÀÒ>ÈZÉy\¿\92q¥\e\a*ÙFÄ)\8aâ;RsQ{ý±µ¬|\ 2\9aTô\ eè¿\8eé\16v\90¼\f!&\ f.\92çî\8dYÙè¡ x\80cï\b]ùZä\8a>¥`\9bQâ.o]þ\18\99,5n\89wo\93\93Ô\80\85bé\90ÒMGü&¢kéê\rF[\18(±&¤~áæq7øVÕxÝ\14H#m\0ò§7G¬9Ì5\ 5jRl¤Æà\8c^\e\94\ 5\ 4,\9d]n\80\ 1µöüË\epõO¤5G\81øÝrS\93F\9a³îÁ\16H\81}Òá\17a'qQÈ@Ñt"ݦà@|¥×ªÎ\98\ 6Á\13ò¼O<S¸Õ\1aOß\82]\ e½ÝßkÎ\1aû446Ð \99o© \9bm]¼óMà\vWÇ\ eÒëºßW\e\87x=bX]±Vµ\7fK\16F1HÃ~LJò\85é\8eMQ\9eì±AÂ3°Ò¾ìG\eÃ¥
-Û¶KjîK¢FÉNgÃ\ 1\85ô¬0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-177 0 obj
-<<
-/Length1 1442
-/Length2 7792
-/Length3 533
-/Length 9767
->>
-stream
-%!PS-AdobeFont-1.1: CMB10 1.0
-%%CreationDate: 1991 Aug 20 16:34:36
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMB10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /EUXRYM+CMB10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 54 /six put
-dup 56 /eight put
-dup 57 /nine put
-dup 65 /A put
-dup 66 /B put
-dup 68 /D put
-dup 69 /E put
-dup 73 /I put
-dup 75 /K put
-dup 77 /M put
-dup 80 /P put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 119 /w put
-dup 120 /x put
-readonly def
-/FontBBox{-62 -250 1011 750}readonly def
-/UniqueID 5000761 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÍÖP
-½¥í\985ö \16ÏÈð\vl\ 5.×j\87\85kPôØ\rúëP\8c\97ø(\1f?\88±~M;\90Àö^Ãyy\1a¬Ü\16*f˼[âõ:\8dç-Ñ\13µZ\ 2/¿îe\8c¹_[³+ 5{^\ 5\ fÝòd tp¾ñÅ!\19¶ûÕÇ~¾Ùd¬Z+¾Éسä\8aå»\0:cÕEwK\92+\9d_ö°\ 6nÎCdZ\13\18y°2\13}m\823\85þUó@-U\7fÓ´Hkäe\95\9b\11\81\17U\94ó»üRj¼z\95¤\8fNEß)§\85WÑÌFý¢ÀÐ$ÎÛàLV\0y½\86\15ýF¡\99Ix&6_ Cl¼àþR\87%jAg\f£gº \13WMDÃÜÿ\12ä\10½WTÄ4\1cÚÁ\8f\91ZÌ\8f\aL7 ªãçÀå\8d\ f¸{ 2\18(µs\97\95ô5þ,\16%> ë¹\90O\87+\9dÿ^\8b\ fB&\855\11»Û\ 1©Ø\1eà\93?`²l§:`\90\1a$ \a ¶\0\\93ú\183½þ°\17\81q6\ 1\8aE\84 ÇÅN\b5<\9d6EÊL2~\9cä\b(² 3q»CVÐhõèEu«ÙÃû\9aj]\bµ\ 6ÃBQ|Gûº\8d`'Û ¼\86x|ÔuM\14â0£¢\9b
-\8bs \92za§q=Ì)W\92)\1c\17Þ;+êÿàæÅt±ªºA²µiïÿ\86)\ eú\11>©Tç½\fÁÌWc(½å¿ÙJìöb° #Õú\93\9b;\v\81Øt\9c]¢Uû§àÉoMKs*Þ¥Ø\90\e÷¹}L\8c\16O
-g¿5¬Ör\11Úw\19ÿ*Ñ.7|x\14 ÐÃ96_\95\87LÁÿM\eKÐHªÀ\8dô\1a &\ 2Ï5\9då\1fGn?ø$I©Á\e·\rAýz¡\83Ð\ fÊO\t¦CÀN
-\10\0R\92u#\15ºj\88ö\1dë«+]ü\85Gú\83t¿Ñ\ 41GÖ©Ú\17\ 1żÔÄ\9eja\9dt\98@Ú\82ªÔÑ÷)\1dÿÐ\ f\19*\1cDW\81Á\90mï6yQ"-9ö\eÀ¼\8cßf\96fû{\84\92·+\11\2TG?\9eÂÖ\18\8e[@û0·\83¶\82l\7fxFÉ\15à\ 5ü\9c^ÇA`ÊF\1c\aD¿7C\95§@d0ù¶÷\8c\96\1a]õ\rEÓ\91ú\82 Üí;~ÚÏd@OIÍc³\82ç_\86;ÐÄ\16Ry¨ðB×ðð(ÿ`M;ý§h\10UéÀ6;\88É\1c\86\12Mú°Ï\f\ 6\8a\8f\eU\1aâÀÖb\84_`\81µ=\86\ 6\93
-\12éì\1cÂ\8d\8dÞ¿÷\9a
-\86KòDª.;ÉþÍ\v\8bøçð oö;eÚZH, áE¸£E\98\10'¤3(_Ð\18XKÁ¤3¾|*\82Éáÿ\998ª\89û×ÎÊ®V2\Æ«\8d8\12G\13/ªþä\ 1MÄ[È=¤*b\1d\15\1e¡\17â8mò\8c Îà\1cûÑ¡\99÷ú
-*åÙ\9cù.¶Ä2BÍõ\875\1an¥\98ZV2ø
-îH\97(9Ýv6gMõäÇØ\88)ÁÀ7-\v\8f\9bóc.\1e]ù\88ý\1dZÍY<\11\13
-}À\1989AéCôí6]F\8b\1aaÆ¿d\1e=ÕÖÞÑ°\90\13^(o\88K(̹"\eê?yÆT!L\8cB\11\85\a\9dÛ\98ø\19Ó1ä:(ää\ f\95ßìë©5IsÈ\e\13Íú#c¿-\99öQ#§¬ü°×y\18nkó$Ë(\10Hê\0ðôQØ0â\0$¨\ 26rû\93»Ã®\9ca#6\ 3JB\ 1Ù\85(Ý\96±Hk~«÷\ e'æ\99ðóª\ 2ÜdÑ&!\bªÜ×\v÷ø]$\ 4:\94>ÁeýÒøaì\ e:úÿ|å2gÀX'}\9a\8c\98\ 2äÖàNÖ\9b¯\9fîw*9Ú\f´\ 1O´Ï\1c¨Æ;2´\88iÀ×h÷b¿Lº](Ç\13\96£\89\85ä\ 4_\15\13ÝO\ 4\83\8b\a(Â6\19|\13s\ fÔI\991ië.gü¢».º)v\9eðb\11i5d ?EÅéI*X9\94\13î\rïüqys8´¢Ó\88Íq@zÛ»t$¤W\82÷Í\12µÆý´~è\ f2ë¢ô]\ eêãf\81*\87q:Ä\ 1Z;×\15iãa52ϼÓ\ 3\0¼\10=:É\1cV·k"ú\12\17ì1\85ÙÅï´j \1e\1el+ðW\9c\86\v\83ßWQ6\ 6â\ 2\8fI\86Í\bvÕ~K\01ÑeÙ§Iå\96\9fI^\ 3\ 4à~\1c$R°öÂ_ÕþX×ç\f1ælüàs6®\13á\9c\95\ 5C±º.\8c2Ôx\9c'Oìú¼(û¸"ÀP\0mSG¨\87×M\91ç@lK]\8a\84%"ð\9a\84«=\80é~æú4ö\ 3ñ\81\8fµx ~³eítÂïîË\88l¤\9fl\83jE]\88\8cͲ¶]Cþ&\8aX
-\84jpÓyÔ
-Ç\998\12\81q¥±\9am\82»me3ÝÝ®\ 1ßE®ó³À\ 2ñ\95\9c¹F·\9d·è5(\7f\e\94\1d Û//\16dõ\ 6õ\rò«"O.\9b\v>\8d\81&ë\1d\1cêy²¡6i *5>D¶¾ù\89û\ 6ÝD\97|ÚSÑ÷\11ëKãs\8eùâ+\81D®\8a«\ 2\1c\9bó¤Z\99òùöæ¨\92`\8d1\935"®?ÄRk\93XÇkëPöÚòDKßΡ\16äQ\8fRaDî#\ e±Ë\9b%Ûä\18\9ek\87Í`âµwäsÅ;\12cwÓ¸Ls¯\8bãá\93z\81&\86då£:M;EÃ*(SO¼Ù\12w6\95ë,16´\90%ÁTÁE1ÈhT´\8bÇ\82gÙ-k\9b8ëx-Ìe\ 4ÊAÙ\ 5.UÎCßr¦\ 1§ÞC\14\81pÑ+û\95>$Â\9dïL\8cè\ e\ 3\96=I\97ñxÕ2IÙûÁÑðh)eÙrÝÚ-Í I0\93t\82\157\vÞ\96ê¥÷*\ 2\95fæ(Çó©'\82\99\8fªK\v^%Ô"(\96SÚ\e¸¹\11foU'¹cÃ^Øa\ 4áÛöí¿\9c<þÛ8Ç=k©¸þk\82\r\ 4\11Hm\93¯I^\10ð²Ò\9d¡\18?GV!dÙK\1e%àÒã\9dmvª\88e\956\ e\11¬\85~OVª\15\91I\13\1aN\804Îí\ 2â)\19æ\15\ 5Â3½q¼?Z\80lVºm\ f'@9\1e¾ö\a_\81èÂèáñ\9bK)C\80\95\9fÊìVÓß\95ï½gÑ\92\9fa0ý]G0\91Û©ô¼\8b¤ÐþàvÍ°E%~\93)¼\8e# /6µµåêè{Âö~Û'áLã\14ín"õ}Í\13Wq\ 6»©\ fw¸ª\Fkw \86\1c3¬Å\8d)^ã2Ù!pm\86\efÙ.\80wvÅËQ\8aØ\97?3\89\95(1x$\7fEÒ\97\8f\14ïú4-ú\8a\15Í~°\84\18\90\85\1d\\9bZ\1f\170\a\8bp\1e%\r0ÄP\1e³ðvÅF&É÷èTVÌxµ¾4¼\ 5/sªüÏ\83¯¨\e;\85e|5¡yÐàî«\91\13\f§ç\rÝw!NñZsU.?ÁÊ».òr\11ü-gÞÝ·¬7ù¡×´\8d\ 25\18ÊJ\85¾\ 1Æ\9a\17\1f\ 3\96øÙgr'Ë\9amw\a3ø\97IÈ\92õ¡\80z\16Ê_\bÎcÁàÇ\82|VUh\85{5V^É4©\81êçü\80öÃ\fÔ\ 2KEó\93\85åù y\94\94\1a¦ë¢\12Q\91H#Îõ\85p¤GrÎdà8a}\ 3}Wno'\84¬3\97)Í1µ-qÛ\94º`°\91¡ÆÁ."ÌðÝa>\1e÷\18ÀV»Ý¶Í\94¾Q6\90G¢QÉX#\ eÖ½\rNGk»\15.ÆQó̽x·è\ 5QO^\18Ð<û6«Ù]Æë^\13õ»Tõ ùñ.5Ø\b "Á\b.ʾ\9b8àûÀ:\99U·\12wT¿¹\84vXä@\9d§\11)\86=ß\9f\98*6°áiD8p\ 1óG\8f\0à¢d\84%ÂÅZ\98ݪç¬UO
-ä,!\1cMªÓk\85«\ e\ 5í\83h5÷D\17¸ÁR\r3>ïê6E>ô>½j^RÓ\1fÞ,þ\f\ fGÕ5Í>¾'½N39ã\88;Ïí\ 48àH C»>±´zĺîM¹N\k|rVÉwý5/*k\87H\1cfª\vd¡\16NÔû\91avç\9cUõ£
-·\89a^´Rz¢b\8d{e\9f4ïYƺ?\1eÃ;ÅnF\b\88\93\80 ¸\1f\9aÔU\9dģZÉ«X©^ÊDiß\80ï\16ã
-wt¶ ¥\ 2\9b\12¶p\8f\8e\84\r9È9f\ 1¿¤\12ȶUP´ÑÞ\10õ©ø'H)D3\ 5\16Áà\95ü×U"bFM<èæ4Íø+ÝðGºÚ'zL#¢\99}#ÅÒXà\1a¾\84´6<\98\98D<\1af¡®ù«Ú\ 6\!;6lßÑ{\1c"^607\81Þ\1c[\8c\18å¾\9a\82\85f\f°ø>)Ï\18\933I\1aÊ?G³\19ÍzE\ 5õw+\89ç$"9\14Ý¡/\1c\81KGºýéD?¡Çv¾\8e~6Zj»#|´\91,/9\ 4À×Ú4¯X¸I¨ÔBÍVÂõJ\19\9a\16)ί\9dJs\1d6ò\89^a\8f\81]3ª~\94ÊÚYÿ\ 3\95\90Vl°\ 3ð±\r\9b \83p\94oLcGf;Ä;>\ 5ö¾³¹ØY¿ñ|¯mÚÆx\8a¹ÇQ¼Q\8e¿\16ú\9d飺å\10-\1d\8añó\ eûW-!\15\8dæ\ eM\ 4\97\88\84% \9d\8fpüh!\17È\8aÎRv¼ñ\9f2\ 6Ít\0\15»Ú\99\a 2-W5\1fà]>äª÷2Q\1eKÎ\9e\93¬Åþ¶«§\80\eå¡´Ð\9bMÂDm7'È\ 6X8 ¹}æ\r\14yÆ\81¶\92±l¹%\82Du\9a\91V\16Ú¬iÞW_8QGdé\17*\béu\97ecßSv\8eø^à¯WÕT+ê\97ȨK¼Î\ 2\1d[]§Ã\9b\19E"\9dÐöQþûAë*¿÷Rý§UI\rÅÇ\8e³lDLb\8fÉ,\1a}Ð\81ñì\96\83z¢Àû-\85¿¼f-oȾ\13?\18\ 6¦¿U}@I\ 33Sjªí7\94¡\805\8fÿ¢0I\99ÌDÁ\87Ør8»S"ß\99\b\8a&r¼\1e»¯*Ò3ð^b\95\1d%\90D§÷w«5'«j\8fýßêbö\98(;/\0&\12njv°xçËY¿:^DóZ*ãÁ&5½x\v7w\1e\90\16\ 5\86\11ªúº ¯ã\10ó2¡ú\85³k>]{/ùôý)\81K]ðI\9dCS"Rò¹è¶\S\16\98îëb²\9d\ 2Û\9c\91_\bÊ×É(c õ|h¿~Àqø·\ 4\9aÿ,-Ëa\17\16\b`.Êâô`+°ÞÌn+`\96\8a\99H»ÂÈÞü3ö걸Ðܽi\96Çx6û`\a&U*\85;\r\98'HÉî\9bî\ 5'eRÚ\98\r\8cé³öÆ0\ ftÚù%\85\8fÍ\17Û+k\8d;á\ 1îbýiØ\ 3d¶´P\1f\83ä\11ð5D©(ÉãF0\93,S¬üT Ûs<-Í{§A¹\84\ e\0>\ 2)aÉ\8bx\18Ð\11Ü¥ªÊ\82ó7å|Ä~\93\ 5ÿÎ\19Ñ\19 ©\14(]]ññ<çA]p¤%
-^h\ fÖèø®=oÜ\8aõ?@î\90Í.×l©>\9a\8aBWLTÜß\15\9c\90x·î\a\98ZP>\92\ 2\vÙy¶nÚ&¾û6[ý\8a\99¯k«\7f538¬Ó\95pAÁ`\85¤\85÷§
-lYf\18è+ª\14íHeÊ\91l\1f~G÷}\811\95f\b\80/]8\ fG\90£ðR YQÀë4²ápM\83$Ðöp¡6éK\9d 9vú,.¦kÉX9ùßÀ"2ú\ 4Z}5³TïteY©ß\94;{T\8edB\98ØyäS\e:JnEÌÊ\90ïËÚ¿³<8æ\1aZX=Z¸ã-\93@& \aG\0\18X[\9ee\1dÖ
-¹À÷\94xÕî° IÌ\9føO\8d@6\83«²\92I÷-~\ fÂÈ×ú:\99ÄÃ\ 5ð!$l\179X½\ 4:\9bé¼°\ 5û±e|y¤þ"ZÐ\12\ f\a-©Jþ[\95\a ¢~Mõ =+®\v½L\8a\×H\0Z×þW{ñ\9e\ fö\9b\97\1aü\17\137y\88`((kð*z×w\ 4\9b\ 4óÙ§~\ 1\84+¶\v·Á\ 5\1fëÄ'Sa\19É ßÈúþ {\81Ïã\8e6ÁY\1d\8e\8b8\a\92åe˵\84¼äùw*çD±g#Õ\99Þ²ÐÓÙg^L@÷(\87TY\95<Í\8e{0PûÃZ1\rÿ,9 \17*¸ÛÈõE½Olr;5êì\9aÚâÌ55'p\9e´Ù\91{ð+\aËjD¦¶\12\ 10ÞÈ@¥\84çÜQ«)~\92ÕÇÙ,\85"w[y\ 2 ;¬§Y}èá)Ú@J\88Ê\87Lµ¸±ûÕwÂ\Ùâ
-¾m\ 5\9f\ 1Å/¢z\16¨7¼\88fud6¦J4ð¬E\9bùWp$ã\eL·(n ×V\82Ö³\1dFï_\14m0\11\82ÚÒÂ\8eÏÁ\87)¾\9cÚ,~Ï\17zß\91iß\90U^v覶{{C¤\7f5àG1"ôò\89\81\9b$ë²H\1eR}Y:q\1fú(á\v\98z³\ 6zË´ucGKóé#\9c\18í\0\ 2(ªÑæ\10!\1c\1c\96 Vv\Ð2«\82˾¨¨\14Gm]½
-ǽ«Ûó>\e\16\7f\ fß\ 3¯\eÈ\a¡FØÑÆ\1f\15½I\88Ù
-åñ\80\ 5ï·Î´;\97äô\83ôÌ\18í»\7f\81\9dÇBd\ 2Ï\96\8eLçÞ9ërö\15\89\98C`A9\ 2»õ\f\1e\a\8c\9dC\e\15Õ×vÉ3Ì\0@¥4$\1dQßtÕf©\9a©b^\8b;\10ü*P\aÈÈ)±*p\11\ e»À\867\8eí}ô| %ü\9d\ 5-\807Åc\aĵ@\99 >Gü$¼k"\9e×1Lâyª¦=\vë\95þgô73Ù©\93ð\9c[\94aV\1d\f\16³¼kÔÐY|Ð\8eÖUÕÝ\ 3\vÅäÓ`!&¶Ï\ e¿×.\0R\8cÖ\v\8bÐ\1c@Q1lhcs\ 4\91\9d3\18#ìÕ\e\9aõ
-
-·\v\86\86ú\84\15ï3*)L\98Ü\849\93uõ\86²\1cµme ÒuÌ7\11:Gè üýª\ fÙ`\96\81Ä\9bÝüÏìÌbØJ¬\13V&Å06-{sÓ]ò·í*C\96\123\1d\0§\\93Þ\10ûÆ"^(ßöþ·½Î\ 4ÁcLwÿ"Õ\94n÷f\81y\9esüp0
-·\13§`0þ&y\ 4
-"\8b\15D«ª}Pøû\8b½É\ 6\aBºJ\15Ï\bÀB:\ 1ß>\19:\10}"Òý¥\8d8\vdÎÏ+Ç\9ahH\1d~\eÝ6Ý\8dI¡÷C]áÑ%\r5ÎÄQ=x¶»ª\96Ìzyk\890\99?¥;c\10\99\8a\89˧#\9a\86w\10ÅgJ¦\193A\871ý2J\8aÕ\17h\8eÍ\142k6\1f\15\aQwÈa&\91\17Q\80æãÛ\90Q\14@\89£¢\f\18@1Þ³]zÿ\10C\8a[\18+¿+j\9c$\87^a;c\7f9O¤;&\ 4NI\9b¥=ÛÃ`¤½Å\82½5\86 \83\14ä\95\10íÜ\1d2vÚ\87è\9aî°\ fØÜFJÁÎ,g w8\9e9ÿ\ 1\81m\ e\92ã¾°\80NÔÑ(\15¦M\9d\10Ï4!\bÒwÿ~\9a \9e¿ô$£\1cc÷ä^ÚN^\13\9bêÔ \10};\17\95?\16iÍÀº4l6\8eÈñ:\8c\e\0·R«D-®Å¦rR\99³\1eà\9aç÷ÝG0Þ6\RÇ-ÍîEQ*Y«\e=÷\ 5Ì{«T'='¸¨ïðþ/4ÍÍFÛ\82$|\91§ÏÉz\99Õamc\9b\14ªTµ¦·]ùhb"\96Ыô\13\1e\ 2\9büÃ\1e\ajÖì\v\0½8ï\89lÂ+\12A·_$y¯°\84¯\ad\f\ 59Þ}1[GÑ0\83¼#\8cºÍ÷,l|xUP|\0X\8a©~\ 1\94\f¥\19Qdûi\9b\1c\19¤©\97Þ
-©\81"GÕ\ 4\8f¸³k/ëÕhë%Þä\f¿\11çlª\96ãÔÜeéÒÆ\11Á÷x\8fiÎK\ 5H\eÄ!ve°!¸UCw\14ù\94\r\92ã)\88ûàÛ\19Iz$ºdÔð®¥1ï°\9cpº\tlZÑ6h:\1dì¿<U\95BÅà\93ìã\fj¡©FB\ 6á0^q\93°\86\12)tY\1c\8dýéj9>\7f°^ü\1e\87L\8a¡ÒR°}\15øÞ6\1cf6-æ\104°¤´ÛtÁ}ò÷n\81YFn¨Ã\15XéwÐæíÓj纸\ 4p\8b\1dáò\a3\90¾6xH¦>\80\94\98\18,)[5¾x¸gÇÑÞþá®\12\82Ð\9dð¦{OTÖÿ³I{èãjèÖ\ 3¤H´ò&R¤[\ 2;e¶6êÇÛæ;Ï\9f6qb±Mw-þ\9bÕ\91Q\16\98%ôß\e<\81÷'c®\1d3äðt·\f\8c¬\80~cë `q\0 ¸×*pà\95`\ 3,\1fÙ\81½=/\eWh¢\82êFí8V¢chAÃ:Y\11RôZi^>Hþ\89.§ÔùY\880Rf\95\ 1¾§q\928IÙype.,\89þ\92Ý|Ìåö\1f\92\ 4Þ#õ\94ê\96,6Ä
-\98\ 3ö£\bâ\ 1\1eAÉ\91\9a ¡Ö3Ò\1fºùPÂæ\9c¯\8eÌ$3Ý/¦s¡\Mä¾\8d\9e\930Bì/siÙ¤ëÆ$Ý\\8c\91v"¡\83\ ef\ 1\ el^»0\«\ 6÷z\88\ 2Èç\1dBIP\9cZÖI"ë\aH\ 2\87\ 1\b\ 4\0GÍ\84ÓT¯\ fÝEÝZRï\10¶~ÀÀ
-1\v5Ý\aûXÜ%åÍ2Öy¨\87¡3Cß^Z\814A°FmðÌ¢ï\879H\9e1\14Ïdé]f\f©\16´\98è÷Î \aÔAm¬\1dÃa-¨¸\952Xì$¸¢ÛnTf\92ÙD\99\ 1fÞó\ f®ô \99\18Ø\eî\9eå§í©b·¼¥3¸;~<Ò\88 cªßG\9fm\8e\90¤BAÉ-\1c\92²Vê¶íôX\9b«`»N)\19â\13ç¡à¹\f\17\867Óµ\9a8\8cå<99wH\98aÆåø^kß:\94\90a8\7f§}æqOÀ\1eª¯ FÍDX\ fÊ,<þ\83cf\0\8fð\90%2\14\87z=#¹sQöÓ\1a\98ê°¨\rÅé\82=#N\80ÞÛ6\82\8dÁl\17Ê\84\9cLeK½\84ÿG\ 5\fGÁÌ\v\83_ÂÏ\ 2n´\9a½Ïø)rÏK[¾n öÁ̵É\ 5\7fáÛ6JK(xßZ[þ\8a/\9cFí¯gÇÖú\96\1e9£\90¥ð,WõÆZõ\8aK\9f\86\ 3\8f\ e5Ì}ÿçÖ`l"%ÉL\1ejO\8b5ìM\ f8\1cê\9fìãÍ
-Å`\8fv\80Õ\9cµv@ð\8f¶OÇ¡òUl±`\87Ñd\ 6Ç\85\1d)Ñ\ 6þ0þB\ 3C¸Ð½\8d¯MË\17\81\91píg \14:\84g5XëØ!\9c\9e\11\18¼\17¯¨W\8b/\90Ðä\92Ñ&\vk(ìÿ\ 5MíîJ\\93vH;\14\fGÍ =å¹È*\85Õ\83Émt¥xà\90ãä~×^6\ 6¥aD|n\ 3És\8c¥\1aô\8f\0Áñ\ 2\11\b\9aÙÚÜÄG\93Aʧq\91\rÌÌ\e9Î\ 3aÿ\1d\f?µ\90NÀ!õ²X\91\80\f¥\9c\12GÜ3ᦺ°\1eð¯Ë\b4\97½HÉiê\15¤þq¦Ùrã¿iÉð4\18Ï¢}îñ\ fåxäÍÇ\ 6E C§! EÖBè?\15Á\18hD\1a Ëq6á_É{%-Z\9aÄN\17.«Øµ£*ë¹ÉL;ÀêÍÊ\ 4\92z\1fvÒtE\81u\83>l\ 5\9d÷.\12¦o\93=Ð\1e\8dù\1c9ÕÏ\91Çø\1cDÎK\rULá÷\85¸\9bë\7fÊë3çEî]\8er\16\1e\84¬\91\90\9eÞ\rÊBþ\91K¬\ 5¨\1aÜ\93Å&\85\14~á\98ÎÂ\86ç³ý\14î#\94½Ñ¡\b8yG4Ñòd¢(\ 1\ 4I\bd\13`\1f\121ßë¨À\pѾÁl\91Ù\8eò*aTì£3\9atÄ%~®½!Ý3YìDg\9d|ÄÓ\16ÎA¢\ 5\8f\937Ĩ\8f¾µ\16\fÝ6,\13\8bpåª$6ÂÚ\9aA·è\93h!!1¶Ðì§;W±\14ø\93\ 4»\8a÷´¹f£P\11è\959³¥\ 2äJ¸\e\88\91$N\1c[
-¥NÄò\1cצÚø6Û\87\16>X\9aÚXï ¯¨M@\9aë\rå;u\12&\8a»n ):Ô\fµËN°Ùn#8[>\80#"i·¤uÇ\86\94.¾¯y¼|ʦ\95©Ö\91\9dw\8foÁ¿\ f¥¡éµÉMJ\8bbkmga±=¯\82âp\19"Ô\10Mí\95j\ 6XÁ«7=0pwëZ\8f\ 1`9®1Ù\11\1d\93ó$\vøLÙyÍ÷þ%\14ðMuÁû`w\1e\9áõq¤SAC"ðv1\0EqjÖat\1fA·´\8cY/^0O,ûí)¿ð4*/\0\17+¥¤È\18ÑHq\93i'\1fFà\9dâv\12øÖÉÜðp]oà¸Þì\91eª·¨\81ÐÞ~9\7f\8eO\r\ f\88\197éx8\18Óå\12³^òú% \1a\87\1d\f\139\92÷\°:´°\1eȳ\87A¢GèÏ\18Z\13;\ð\7f!±M¶ìæqýK9Ù2r\1c\94ý\15¿ ùØ\99
-q\ 1\ 4\11g\1fûjRÃ9ª\1f[Á[XÏ»7}ÝYõ\ 4\81\0C;\83\eC\8f/\aïjeÿ\8cô\1au¼xÛÑô\1aØTµ1Ó[\92¬o>¹\83úÑöÎæ\8b þDyô6\83ÃD\91ÚVì÷82·\97\9d\99D\86\8fNYzå\ f\94\a\13Ibi\ 3\1c\ 4\1e\86\9c\ 3&\12s´\ 1'ýqô<\939²W\9dÏ^{MU¬(\82e|9ôÙ\8eu/S\98\97õ®ºzF¿\ e\96àÀ/,ù\13\16\9dÕ\9f\97\ 4f$¾ZYPç°@͸¹ô,´\0 ¢\89Èx¥¼ã\ 3øî8W\87\17\87ø*4!èD¢\80\ 6úñåï¼D½jÊ\93ç\r§å«Ä´\88
-\ 1Oô¤ûÀæ[ÜU6\91\8eÎ×O½¤L\95\16c\8c\18\82\95 \àmwk4\8cq\ f}}Vl«¶j\1c\ e êb\85\9cÒ1\ 6n\ 5\15nÎbÕ\9f\87\8aYTõ¿*\13\8a\90!Òa\8aÄí©)¬\8d\8fÀ©Ñf7è¹\90»C\869\96\99\ f\9bÇê\18\91N8îùeòå/¡~}:F\82\19ã\\ 3\ 4æªhwL\fFsòα\87\8e\8aî
- <\82\ 1\ 6M2æV¢d ³\ e±í·z_VúÂó2-ÐühÇ_~¢\84SÌ×Q
-\80°@çÃýÆ\86
-|fñ°\ 3àñÙ³½ð\b\v[ "ìË-¶JöiVs\84\9eù\ 3ï\86¼
-ÚH¸UÁ\ 6»A\ 1h0\89\9b#\ 4[¡óU\18õ \97|ü\92È`\f-×Í
-AâR±\7fX|\ 1G\87\ 6\ e2°FEìhÐ"½@\96\ 6ì3CW*Vß>\84\83`kÄèÀ\94|¡\9eúd\9aUó'\85°ís\9fÕê\1dd3]º ÌÜæ
-S
-v6Õ\ f\9eÉ\9c\80\8fú\êÊý\83O?¤M\95FÕÄ\ eÓ\ 4¯ø¦n\925Ï9xT\9fY2P\ 6Ý9î¿\84÷!Ü\94«qf[Û(sZ\ e\16\12z@q èy'\84Gu4~æ?Ñ£dæN{û\17-"#\b}\ 2/ÇôW\95Îà\9aP\85Wèî/¯\16¸\9bÝn\13\83Ì\1eâÉOÕ\\19Ï¿åíÄe\88mü¦\82ÄGÕ\9db\ 4á÷\ 2OC\99Ärk-hÐo\92\86\8fE"õP\vãù\7fMãnU\ 2X<´u\ 2\ f(þ¬\82¬BVW\14Z\9a`ì{\1cö\8dÝ\r|\83\9c)4ØéFv;\\f.Âá\81Õñ³FËDëçænB.ëüêÙd¿uE¥\86\ 4\97w×ñÚò¹ó\8aÀÝèÛ±\15·\1fgÛ^¤ò\0Ô~r ©¦E\0£J÷\Òe"\18\84z\ 5\14)Àé\ 5sR\vU"`.§\91+Z¦/\84Ë%ìKgï\ f\90\14ª\ fá\1e'pFü\85d¨Ì}qgóLÃ@[\ 5\1eü\87\86:\8d¸\1d\97ëq\9ftEà\93 J\92½ÂJYR\86³ß\83
-HèúÃ*z\9d\81\14,pø\1fà\9c:0\ 5\ 4ÙÕû¨å\ f\91\97OØÔ\ 4Z\fL \9fCp\86Au}±ëûe$íz=\88ÝÁn´µ\85¦¨>\81\eé\9b^\87\17ÕuÌGC\11?°X/Â)\936xý\1c\82)D,W\15ûԤ߸É`ÿ ÁÔY6FnwK"û½\90\8eö÷_½ðS\92µJR¤¤\91kè³\80\98Ô\ 4\89~6»ÿ^Qÿ¤ÓQüo±ö²Ës\1dç\9d í\8d\89è\81µØ38¥ýÚ±I]MÕ\88\aO)näØ\ 1)BE5¢7oÅ2<ª¯énêl #_\ 5\9dÄa\9eª\ 5~\e\vZ¦Q¡ñuã2Z+ò-ÅQÝÍaå~ßÀ\11Õ¿ñ´×Á\83v\ 5¿V\96¥\9f\84[LÁ²}·\97GVÍt\87Øo\ 6\1db\95Å/êM³@\83Ìó¿y\16Èùâ?jç~\10)en4lÓÕ\80§?¹÷\13\1eaÕ¾\97\1f\88\17JS«S¯\ 4o\11Øââ^¼\15m»<\140000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-256 0 obj
-<<
-/Length1 1534
-/Length2 8105
-/Length3 533
-/Length 10172
->>
-stream
-%!PS-AdobeFont-1.1: CMTT9 1.0
-%%CreationDate: 1991 Aug 20 16:46:24
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /BBAFZC+CMTT9 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 34 /quotedbl put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 61 /equal put
-dup 65 /A put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 76 /L put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 95 /underscore put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-6 -233 542 698}readonly def
-/UniqueID 5000831 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÍÖP
-½¥í\985ö \16ÏÈð\vl\ 5.×j\87\85kPôØ\rúëP\8c\97ø(\1f?\88±~M;\90Àö^Ãyy\1a¬Ü\16*f˼[âõ:\8dç-Ñ\13µZ\ 2/¿îe\8c¹_[³+ 5{^\ 5\ fÝòd tp¾ñÅ!\19¶ûÕÇ~¾Ùd¬Z+¾Éسä\8aå»\0:cÕEwK\92+\9d_ö°\ 6nÎCdZ\13\18y°2\13}m\823\85þUó@-U\7fÓ´Hkäe\95\9b\11\88÷m÷\82L\13Z\7f³\82Äá\e\rßèV¶óERÊHÂKWÝ\84HúÂWÄÙ?±"á!\8fÓk\99²×\9d¸¦f\13ï\11\ 3\9bçx\16§¢Öx\1fàÖ\9cìÃb2®\87¡r¯à\95S*\8c\7fô\vÝJ_϶Ìý\8fsÅr#\174à`\9cgCî\11\ 1\ fey\82\v6|I\ 6\9aÁÔW`ÀÎ\8dÁæ~+ër¾m(y\10T~\eKµ$e·YGÒ$\99\82#'Z,4
-\1c\14ÀC(Ì)5Å>âr?\1dæ5z)\1e\14\86?l\14\11G{> t\ 5+0¤Áï\ 3«2Mg\83\aáË\ 2Ǫÿ©\vs\97Sx¹Þ¼Óöª¶&£a¾\80hÆ\ eÝ\v+䧻ôï¢\1cÂ6\a¿~%VÁ{Y#×°ü\ 3m_êt<Uò»÷.\8aa\99[Ö=q\ 4 \85¸ÝZ\83Ù\asv¤®\8f\f\ 4\86\ 6»\9e\84Æ@Å-
-\95³]HϯÖëãÖë\ eØ\8c\12\12\81\8c©>@aG@§|Dky-\ 2\94VB\ 1J]Uº\97\ eù}ÍÕ¸9ö! RÑ\bZ\1ef\81aÓ¬\ 2'Ç\86s$íè\83X\9b9åÑRy0 ËZ\bëg\19¤MÐ\eaGãCkÛ²\82\15Î=)£±ßÇ+ÙBøË3v´á,ÿS§\93Ù54lë*ü4(Í\93\13Æqì\19\11%,\19Þ4\15V\99\9a¯t\17ªP\85Ú£^ç\13SýÂÇØ>ÂÞÚ«±¸\9b\99äËR\82\15\9c¿´Z(o\8dkó«ÞÜËÜë¯i\94±\7f\eà}\10ð\fºGòûöl\ f`\8f(&\vµ¼<»½·¼»í\9c2#6¢òäùT ]HyÓÙvâ\ 1\84\8aÜ\85·cÃTè\ 1~¤\1a\99\98Å × w"UÆ\9eå\91¼6På"\86æ÷\b\9aÖ2Þ9ÿ\9b@÷%øæà+t\89)Ýy¸ü\e.{v\19 ªð\9f\1f?
-Å\94\88°Ò\81Ô©\%Î\83
-R#Ö\18¦4ôq÷7»!\1eK\ 4Ö±\8d\86|ÏÑiN\15\86YZÂÓÅ×ïüÔw=½¸BL\81t\14ð\v&SY\85qÃõÙq&q èµUüÈù¯Å\80\9cÇîa1æbãÓ\ 6n\18=\vg\11¡\88\ 6´&B\9bDR\1aÓòã?¥4<Í\81Ô\8e0\171\89¢W\11\11è\9a\19ÓÑRo³÷²$9g/±-Ì\8f8\92;U^Z¸\ 2Ð\11§ð\1dN\81\85\8d\b\96ÉópÂÉÿô\1f³\eðìï0À/ËÓ(Ðú\8dkG!\fxì\9dÁýÆ\90Éz~)°qTg",¿Ìg\97öÜ9jÂw®Ñ¯ã$\13ü±¢Å¾¬§J\9f\ eÇ%5g2Ø\ f¬µØ\99*\13åε\a¯V«¹\90NC\9a\12á\97G4·¬ÿ]\ 6²RtÔV¼)<¤Ù\15FFüU\f\9abÑ\89í_Æ7d\8a'{'ø\933QÒ\19Ìu\9by4õí\19Oö0²\1dî\93\96¤(84#>\8dr\f~\rä8\17\90\95G\ 33,Ý]\vlíø\8dÿ=\13<eüðü\bæ\1fI\ 2<¬E¿\ 4x¾\91*eé\809&N OS\9dnñ\81Îð×»Úw]\90»i\9ch \8a\81c\91jg\140ýK\1aå>\99\a?VK~v\9eÍû/¨÷3Z\1a/E1¤úv]ÂöàÉ·ºÞ!ã\7f\ 2P¡
-öMw4I"\13Ou\ 4\1a½ý\7fçvºâ\ 1É\84ZÖ¨×q®Ó'\9eK\93ÌÂ>C;KX5îA\95pÚ\a:µ[\10ªí#\fQ²KÉ|\88j!8\9c S\84SÝîü\rÈ\15\19RU\ 5\ 5Ù×r¸?z\9eû.\ 4¢p¹%BW÷oL\Ê©\f<\ 1\ 4yU°qõë\f\ e\b®,¯\16:îÆüc·6\83¹\ 6s\e_Úò"º0,U\98éýðîOtÒ\94¢è\f\0@T\1f]?\91\94\18ýÏ\82é½½G\83þ¨À\81 ÃàÈé\80ù"u9P&\83P\80\88\11õ\96K÷&\10\88È\8dO;}å\91ýÃÑL\965-\82\15\9cM\93påCû\15¬êôÚ^FAmî5ÿ¹G§nXN Zù\).[tþ\80ãè÷ð@;x}q¥äï\80\85w ³Aó\96\982"\12\eOÍ\\8e\86bÛØS:2 \ e\82f#ò¤OP\0úO£kÍÐO ¶uSvzÖsá\ 4HË'\1c\94\9dÎ\86TÇn\99\0îß\98CÑ\93\8aÕ¨\18\11¬^\r¥5"@àÉDÃ\1fßs\1aô8f\95\ 3OÔ®\9a\1d¬Xdvr\8e\98Ýà»&E%¨Ys\10\9eM\94è»'a0F\85×þöeèæ\85¼\10¥¹~ìöD1¸´2aÔ\93zü%ÍIGÎ\ 4h®ºg \88\ fx\9dô\95q\·áÉx5 08Ú_¢Ï\8a\ 1Ò¼Èî\9f\1f½t¸HÖ\9f5\11\90§ôuLæá.\ 5P\ eøø¤\99\1aã\19°«3«Æ#×^³Û\93ºåg©I;Õ\8e£Û\ 6\91h7q]á\10¤½\8dsC\1cñ3´àX4ÞL\10Â<ê\12\1aT¬xo\ 1\8b¬Ãe\1dùuc[eM\93g˨Ê)c#F¿vGÜ\10uÃSЬ\1a«ô·gò
-@øé1Ðçá«SËïºúè¿\ f\r\9cKËÈÌ1\ 2Ä¿¶SÊ6>°cv´ª¤=l_Æ\ e\18D!S'\8eW\93Ý\9eÿñÏõ\86\11Ò\92O4HËþ\10\87·5:ëåj\1dçhýe¯\ 4»9¢¶¸¿Ü\92j\91%·R\ eIMÎ2>8b\v\ 1º¾\86j\92ºªâ\14)Lh¯\ 4ì5ªßÁ\ 2\91\91'ã÷8\80PÕÂ\8cc\15Óö2@ãQ\8cç\92TÀÙÃ\96Óð}/o\94\82yÖ¾Ø\8d^?Ëæ²\7f
-\82Ôs&Û\8d÷\83¬\aÉ3¶¡>°.O"\17\16i\13\9a\9a5|\85éîh\83%ã\17;\93¼ëR6.\a&\9dHzDÂ\8bú\11 \94ªÓtø×£¿\98.â\8e]x3\v¢óÐ.p®QÎT:q÷\rÈ®Îc«Q*\zG\86~u\84\90i,öþ¿> ®`?2nÄþlBÐþ\f\9dDé<e«Â¯\12Íw¼Éqpf\8aÙ$¾1\92Y\19\99º\bf½5Iöf\94<\87ñ\92°õ\16û\ e¢ÁF 2E\87Å3\85¦Z\ 2$©]\98;\aé_[\94)\b\9f%|T©¯^N\r¹ü½Ñ;´\8b6|A\90\ eÞ\19ûu\8b5iÎ\amj\a7Ùæ2Ö\97eÊèe\ f8ìeå÷Ñ\80¨\1a2©F\92qàvËÔe\1d\95g\91\ 1£Í\12B}\7fÈÓü8\9962i¡&Rü5\81ÌQ±n\1c\a\86è¯\98(\ 2\16°P\9bÃ\0IxÖ\8aÙlÝ\1eéúú\ e{wY\88¹ÔV\1fPê²Ü\18dwRw×AJ.Õ×\8d\89\8ezØÃ\99gí\8a\95\82\87ä|o\8cñV(\89¾ö×W²*m\r °Ã¡¼:#®\19}Á¼à_Ï1Ì\94Îß&h\7f\81Æ4ú¬ác¯\9dô\9cWW\84,;R ~½Ê\9d\8eÃß\92Ëë\1ei\14ß\,~J$ Vk\ 3\84;~v'nõ$\ f\9b\16Y+Ê+\ 5ñ\93\r\99\12c£\10ë\1a\ 3È+
-ÉuØЧ\87\92r¦°e\eMVÀçx\9b\8793ösÓü\10\ 4\b\ e\18H·BVZïâ\16cRøü\87¯\10(s\94£)"»ÜnÔ7¸Gdà\93ã\89v¿ß\ 5@\9b\8aØüãZ\9eÇØÅÐ\10\1d¨ÈQ5ë·âþ\0¾¥\vq\96Pß3\7fùL\97q\13\ e\ fúY\162ú&¤©&vÜÁ\aÒ\\1c¦Ã\85\ì©3MÞ\88\17\ 6Á%\87Åa\ 2\v¤@\16Ç;k\1d»£\12\9d¤\81FgýÞ\ 1ÐõFdVÐ#\ ec/jÎ\84ú¸vÄç\0=æ\12å]hÏѸà\ 6¥Õ£Ý\87CÏzd\élì³Ë\9d\v6^ÜPPg{÷1`\92N¦\ 5¸p\18\19â\9aôKÉ\18Ãú$áaù0:\84Aîi\95z8Î\94i¯\v\1eÔ¤6?ví¾tVù4¨çg\ 5í'IÆè4§,îC̾=9\11c¡\19¨\1dkË\85®O*Öå\8e\98m¿ HS\9c\96vú\89¢£\8a\9f0Cz\bjd\830£â/\13¡ÝÞ\80\1d\11H¥ÈD&\8auû6f\14|\1eÆ:úP\ 6\19Ö\85`èê$\8d°Éý7&\16\e\97qÍ¿\86\9dYÑy\80\ 6Í6\1eÔî\ 3ßT I r8È\83\99ÿ\9afvÛa\91\80\10\e:F³qò~E\9f\14\11úÒv\b»\a\ 6OâÂ\8b«u¢\7f\ 3\85Ç4\ 6\1cA'\rß\87Ç£rÙq8ï=9@ø4)·8#È\ e\19m°ÂPZê\ 6v\80Ï\0'83£\0\90ú4\8e@ $a+\16\19I\1fÿ³ËÄ2Ëq~Féõ\0ä\ f\1e\9bÿ\rÎÄ4\17aÆ÷ýï]ÏëÔ!U¬\b®\806nËt\14atøëÑc§!|\1c®^÷ÂȦ^»\86;ôÉ'Â_0P@«Ê\16êÔ\1aì*\ 20 \1d\9d\8d¼\b\eë\18Ý\9f\\951ZoÂtÝ°ø\89¹å\1cÃ\16\r\ e&\83Âö-\vý\ 5\8aJß#\11\9dÜk\87R\8cùz{v¹Ä],ôF¿mn\9a,6&bV\99)ÏäR&Ù¡\ eø³Âf\ 45%^Eï§:\98\88ϸ~Ð^®èXÐnÔ\89´eßZ¬æpJ\13W\19Fírú]±v\ 25ãYT\142©Ê\9f]\1fÙ¶q;ÎÜ\~\94n¿R4I\\9a4O\8e\96é*\16ìE û3Ì\95"\1e×hm\\13Þ5:\14\ e\ e°ß¼%\©\98<ÎüÆ\ 1\87Ïêö\rùo6\81ïey.}6Á§O¸@r}ÀÍÆ\v2\80ýå\82ZÞ2ÖÌ2|Rí\ f¿éÍû|[k\f)Ûp\17câ¨|a2ÙN5½ÓvB7°¢\15EÇ\ 3¶mW_\98\1eã\8dS è'\ e¸¾Ê\19;\11x/\94ËÎÅÏ®yÁ,£\9d;\98i;\19,ÆC\aäp\9eÜøOZ\94\96\15Ê>½Z%#-G¥6\v"\ 5X\89à(>\a\1e|\a\12æ\99µl\ 4\ fx\8a|?\91x²WÝ\9d¾»\83°-WM\14\84\91\1a\17·>£²'\r@d¡\9e¯~l7!nntΩë\×\ e'v7ß¼UªÜ\91/·%\87¢bºö\fr\7fL¯\88\ 4Ü/¸\98\85_\98@J2þA\80v
-Ø\91É>&/TÙ'xiù\r\95*«&wäöÍßB\eb\r £\ 4E -(*ÐÅÛÔTEݾÀû©_Qñ¢ø¬â=LÀ\9fÓ&i\1c\98\82.\1dÅ|\9fM\97_D\87\83^£¶+\19Oæ\12ðû4C\ 4\ 6ùÖ%6\11»Gpq\ewkn\ 6\1f>\9eò.\ 5\ 4kÌâ\1²ìÄä[J\80ô\86!ç\10ÆÕW@ðW¿o\94sW\fg\18\19v\8f75\9f\88¿´,ɽÌ\84¾S\8fyUuÓN¾éëÔG°-Lónv¥p\ e\87MióØ\9fëØU¾\84¥®UàÜ\9fHĬÌ\7f)\ 6p\13 Å$\1c2\7f0#F å½Ñp/Y±[=á\ 2¦yäã\16b̧ìaC@÷
-\ f\81³q\b°°÷ s-³\1fFÌ<©\86þ\80[é]'ª\16[~'\98¨E'\10\1cl¨§çÁNJng&W!«\18 :}\8cM] <.¡âð§*°Àt¯Ñÿ6:Â\86QßÕNnqtãÖ\8fíÜôÇi£Ø¾£À·2\b੤ƩÔçÈJæãLi:à!:¹0Á)\ 4K÷Ð8sø'ß&\8c¡d\14) .l\11\10i?4~\94÷Gz¶Ó#\8dPwd°\16]Sq$Þ\ 6=ÚÄrpÔý,/În0\18ïæ\9fÁ¿¿\90¼\91Èúg\1a"*ï\1fõ<Ø(xtà®ü\12h6!]Ô\9aÇ\r\8eNã\\9då¨u1ÅL\aÿñ6Aȯ$þ\9e<Al!\90À\8b§R%|¹HYÔo cnmn+S Ǿ}æ\91ígY'ôhù\84·^z\14\b®Ï\9eß\1f\rú\1c<é\98m\9f\84mH\98ÊðsÖ\ 1hÐ\84 Û\86Î`\ 2¼l\9a£-ñÙ¾8@õ\19¦£Ë÷\9cò¡7ÿý:Ek\8f´Äß^¨N\f\8a¤3\88\11'\95å\8c¤Ì\8f\9a\1e¸z;r>\f礲\86Ú\1dãg\12\8a¬W9jºRttvf\rI\e¯¨\14 ¨èO¦\15\819\0jf9!B\882ʶ³=Å\80Äi\982õ}µ«Ë1ϪáXuzÑ\ e8\97\85å¹\7fqu:,ë¿ÃÀiȪó©Ç\85(ŧé½÷¥\14ë¿\ 5Ê\81L~\ 3`¶\0ä\8c|±\r\bñ\13Ì<\13gD\ 20ôkØåxpO=ü"§§~\18M\10\8e½\1aþ\ 6$;©ûØ\16Á\ f÷\1d6(C½ÊDÐ\8a%\ 6$ÍAê\8bÂYé˲/xCüW)\9e\85ð\81%ª ©Ï\8fa\1ef\8füü5\8avÝ\vd8ä\927W\bS×µ2Ö\v\97S\87\84CúR]@Gé\eV\9f5\b}ÖÙfo\98!\15Ôºnø\13\99fFòÁÀSp\17\ f w°e\ 3Åyíy{\8d\0Å°¦Ê\ fÄZÒç¯\ 5±Ü¿Ë»½[q\86\88^â©9õÄÓÅÍ;,Î`Ô\1c\89\fCvJ¸ê\bgÜ\ eà(Õ\b\8cÆUÇJ\1c,:еâ\ 6í0\ 3z¥fÊc£\8b\ 4ðK"n\84É\aw\1c`ý¹\9f)aQC\1eÅ\89ËÒ\13˱\90 v\83\7fW>\87HHC\8b[\11\9d \99ê BlÃáLeã,¬Ïp\9e\8a\9b¥\8do>·*\7fï/¤Â\ 5ô¼K\17éð\f1\ 5D3
-\ fkü\87°B\fÐzP1\8bXÃ\92]\89bRH\84ùò58õ\1cæ0,
-¬C[M¨Ý\7fÕåML6V?\12(e°\1d£iÒ\ 2áî$?\85åjÂ\ fì=\98\e\ 6C\9c\ 5\9cüÑú3\8e¤b²ñ>£í¡\ 5Zyàz1\9fº\r7&\96ÍRá o\ f\89Ná°usk5\93}¡*¯rï!á÷r~õB>\89\9bÙI(¦lн\0ñ\9c\99öËËF\0Òâ\ e\84âë\ f®\86\13\ fd\9fåO\81ÚÓnû*íÈ#Ê{H\ 2¥s\82q± We&*é\f²#;Û\8di\11\8d\80._^\80Xf¿õ~"`]\94\ 2\10k\rÒ¤\rr\19ïÕÇx½Ã\93\r+\8b¸í\1f?f\82ìBÿr; ¡\95ü\99TsOÈ|\80\ 3ñm}\96oÃ}yÂ\v-\1aa\8am9báÞ\7fù¯ÅÌk\86q\ 1yT¹uk\98rÍÏ\ el 0½°<.Ý3È\Ô¢[\95c\9b\1eÛUÏ»½ÆþÂ\1aÉ\1c\7f\87¼±Ä\1f\81\88»oq\18è$\81\16\ëL\1e\879¦éwa×VÕÈ`Fø»½*ó`¨\87\86¼\89à`\ 6"?=\1cÉ\1aEÁt\96«_íð¾ÛÅ\9dzm5C4¹¬{\94Lk \95ÜÕ¶\16)ʸÏÁå}VÚ\ 2D\ e¥¬\f\ f\1e$¯\í\82ß^!\88\97\9b\10\v¤¨Õ7Û\9erk%\80:\98Wâ¨?¢\9f\10rùºô\84Ú{ \19$\82Y\ 5æ\ 5g0¦r%÷!\0x\8c\9cÈ\94-ë÷¤k¿©\1f!\88\93q\94åº: ·\9f+\13Ïúæ<Ý|¾\13@\19þ\r1h! !S\1e\fÓ9ä\ 1a'\9c\81\12\1cûÄ&T*ÞϲW\19ýiõ¯¯%\8aÊp0\8e¯&7\1e\80\9dNp\1f\83\16 \95\12\ 1\ 3Ê\81¬ïLû:Ø¿E\8f{1»\84\ eo\ 1ê¯åCÁ¢Ë;PÄQÊ%\1aK!\93\89,úøÇ"Ô ÖIðQáαo\8eÀå\82\18\8d³T{8ac\9b±qLë)\863³éê,F7\83\14\13Cd\9d\8d\ 46E
-\b=\96¥\0\99wO-_§7±3PO«.a%cPMkäÅ0\f\ 6\10\8c,,\11ªX\9c\15«t`¹Æ\9a\98¨çªãà0÷{÷ÌcG71\9b½ÑHÑÄ»±ç\19\1d\ 5çy¡¶À
-gOÏÈh«Í{a\ 3Ïv.\10Á\bÍ\1f\9c4Ðø\9bIã÷|ºã^QlþÙ\15LçÌ;õ\1d\8c\87Ü®\ 3$+`Âl ¸ÙÌ\ e¦\861\10s\17\86\eß þ[Õ®\19Ú\84?\9c\1ds\9a\ e¥\18z\92¯ç§\ e\9d\8b\0ñ7qþî\91´7é\1c½®©\891U ¹\12öúÕ=°AÊ©\8e¶î\8eâ\85@l \13¨\9bVçÎ#þ\9etëstã!s«.\87Æ\81ó\18\8af¿àøë¯ïeXuBõ\19¦Y\15\15
-BjSÿ\14Æ\13Ý\9fW~? \83=}\1aU·ÎÜïÉÎû5øÆ\86ôäË5±\1cuw\ 3]ýo\1ao\ f¼\15\19¿¯îm\84ö\ 3\8fÆykÓÔ\ay¶#\0E*
-\92l½wT\ 6\ 3ûÀÑ\15;ϳJÙÿûÒm\92Ð"1¶®ý\94\8béö¡Ù\ 5aR\96Oø$lÖ`LÎh%÷\a¹þV[\95æ\9dÊ\102\11Ð\9aå´`©¨\94næµÝôL×Ë\94\0q¯\9aý°5øQ\r\fÒ!m \97ÎÖW\9dɲæaê«O¦Ê\9eî¿úy\99M"!&²\99\1e¤:\9dù^¸(PÙ\81íZ\19NjcÅÀ\94è9\14Y\b©\83?Á{\16*à\ 5©\a]f\9d/\19 \16ÎçC\93\ 4Í\8dc\10½®\7f~¸&é]ãá\15_59¯÷¹|\86u\14÷é\1f]Z®ù/:ê!gº\1crIýÂ1¼\ e\8c\95Ñ7\9bój\rp¦\84éÔ\1aq\12Ö-\1a¨¥\84\886j\ 2w®\99\94_ÌZe½\f\161q>Ä\11\ 5þÞ\vuc\ 1Øêv_\0\1f£I¨g\8e]\16g\9e\88}\fËÐ\94þÎ,ézÌïV%®Î¦;µùXÁ8\88á\12\1a¸\11\186åqr±_%/>þ\9f½0Ùó\16\89ûSWjWÇæÇáªÀ:,Ý{ÏVÎN\97B>X\84±Ü\81Äwô\85Ì\ 6û\953º¢%%¯c ʸ\e\\v|¯í\86+îG~\15äê\ 2Ó\a¢\92\8b³´HÏ öø+$|Ñ{\13µî\r\18!\vAê\9f\83Ë\rc\9fnçÜóD \7fÏk¢\0\93<\ 1ÑIÄ?¤¥èæßô \19%Å' /\1fìq¹L\ fö\8cjã\1dÕÄJ8¡xVw7ªLìË"n\eO£&Á¹\19:\11?q\10~É5ª·\86\87Eäñ##8¥%R
-¢ñ03kt´\fg;\18\ 5®\1eö\1c¹Q\e\ 5r Vy¨&\84Ù!b$\95]\93¥zIt\9e\8a9æzÉ%\12>/\11I/\87\e-b\ eRå.Oõo\7fÜ\rTEm\ f%½Ð½¸·Ü9rñH\90Ã^'R\1fäÏAciÛÿ\a&,Ê\99À¢f\12VÀÖ"\9cì\ 5ð\968\82Ïà\1f*u±e\rë\9cáê·ÿ\80\97]~ÅÙ\1fÇñb\9dcë\19^_Ô\80\89M4æ\ eîõѨ\91D\b«\99èyû\82\87^\ÿhoê\91ºaEcKøK¯x>o¬.&PÎòVS.\90Ù|ÌZs.5÷ÔxÿâÒl¥Õ\9f@Z\r\85\ 6I\94sd\ 2\fÆ\1d¨h±§¹»wû:\9btTt\ e*ðÑý»ÞK']\15\96ÆåÐ@\ 2)Þ{«\95\b\9c áðY5\1eæ\8c (<AâÖ}\15\97\93\ f'#ÜêA\89kü8{í(zGM\8e÷\8b\92{a£± \8f)Å"µ\9fÓè\ 3
-ÊT\83D\88\14\90,rö0@3\ 2\\16Ç¿D\82\17ô¯bL\ fªc¢\8f\rÝ«\12KÏDZeÞ,\86%^ÿw.hq:\94|6\9bÒýµûÏÌjÆÂx_Fä>i.~CÀ\9a\r\16ð*ß©Ú\ f°\85-ÖFæx3jsaÃ\9dÈR\97´\ 1=ÄÝýr·\10%µÌ-d\b\8fsÏU\10Ñ\98è\86TGg\râ£0èc!\v¿¯Í~¢V\15\1fÁ`~ú[m\82U\9fo\15õ<
-@)§\9cçËfë¼\95VÁáíå3v1>Ç#º/ ÕZkqTCrûÕ`\0[h\8eØk{N\98éó^÷y\ 6z$!\f\\86Ñ\94\82\8djQ§NáÕáh<Â:Ý\8auóù i¦\84\89®1¿Ô\84\12 ú\15Í<ª\ 6µ>Üu\16îLq ¯\8bk¢\1aÞ~\13ó\9fÅ\ 6ÙQ\7fûuwµÞ_kI\86\97GZp&\P_êL`\9b¡aáÿôV[V\ eÛ{´D\17à\vüW,lØ8;6³æSa3z·[\94\14d\83\93^v\8fÔ\10\1f¶ÏT:+¸B\\ f\1f(\16\9d\ 3<iÚÆë\81¥¡\94j\12}ö\98\8c`\11ïüY\86þ1¼Õ\V\94é\15¸Çùë]H±\r\ 2(öÇ©\µjõr]¬~\98\ 3\8c-\88\12Jµ\17D¶Ðöd\8bN.\9c\1f£¸´É¤Vãl%R\ 2êaõ\9d\1e\90x
-\9dÀÀÞG[¬¿ÀÃ\1e_Ø"\12³\9bÑ*²qU\81Ø\ 2òü\90Á+b\fjàÄ\9ah"\ba xæ[ú\ 4xÎ\b\86ÊCü%¬\18¼v\9ecD«\1aª·\eSÓ\ 2Þ\1aVuªó\8f\110¢©"\99ù\eLjÕ\88\93>á¹P\ 1ó\86\16ìå\8f\a\8aGJ°dH¤)ÖÜ~Ð\eúÕ,¾×õb\8fÿ!\8cÛÑ\1fTϦÐ1r<Ìu÷4»\83¾°g\v\89õ¥I\8aÚÁí\82û\19\17TëÆy\19\11¹ÏîØíÀ\8f$Þ~%ïO¾ÈÀJ\1d&\a\89T³åÕd+n5î«Ù\96\96êK¨\18ßÞmÕ9b*ýd+\81\ e\vü\90\e£\85\86&\13åH^ØW0\97\9aµ?%'Ŷ)\94ÿa¬·´ï"®tb\1d<ío³\8d\8eU-΢\86à\9clCh]lN\0®\8e+P ¡w<¼Í[¹Ð\ 5¨C*\83JS\10¦{|×ÈM¿«A/\15:$¨\9f\16Å\0Usª\ag\93}ÿ¹6\1dîÉ\1coN\19É*É7WÏ|C\ 3\aiâ\ 2íî`\0 \8f\1fn\rKÕ;¯³O\14»;ôu\ 2½\9f\ 15kh\8eÑør1\16rå' S\89þª¡ß\1e×\87\ 6\e[\9d<û± f£\83\ 3Î\96\99¹µ\1e1\8e´ÜX<ÿ\13Èì@\0÷]z\90\19WP\18ë\eh.Ô\Ø(^\98îê¢\83F4[·V\ 4ï÷7|:ʸ\90Zá¨:@\89ßI@.Ù§cAù\89Ì4\92wh%¾GkÓK%©-E\8eØ\84b¡\10©>=û\94(Å\15\8c\80?a½þñ`áæáÒ\8fÌeìì[\9a\bK¹\ e\92q\8e
-¢¤\13Fxñ\8fÅ?ÉY\16énvD\8d,\râ\8f(\1aËÓDÎ0g¸\15\vÁ\824/y´âÚ½oB42Æ\0+n\8dJn\ 6\8duÀ\ 4xÚ\12ägÓ]E\112Êz\aeùª\16\87u\86\18\16Wm/:<±5\9f7\98Â4N eIS´æ\89#Ê\ 1\85ÿÙ£\83ífºßÚzfÑ(TýNÖ_"°\al\98\þ°ó|º³\ 6Ûg\1aOTK"ø¥\89\819,[\93xöÖ§¸.06Í#weâd\98\90Â\97Ý\83W(\8b÷6yáp\11E\85À(ÍRè1PvodÓ\ 6ÔÌ?+\93¡©OG¢='M\17fÛûÐÿtä×iâ\9f!ñ]\7f±kh¡\aM\8cÀe\90\99\0;\fnñÁ¸»\14@Éæ}áÿ²÷{\14ÚËXeV96\8b\9e¡Æ,\82ëBN\r¢/\97)<0ù£à[\98\82½´WSåñßLª\rÜ\82Ô<\8c\85ð\ 3?\9b¹Ã?*°ZðÓï_i/È,\82£ªµ\18½\9a{}66PGýl\12º\99'»ðºþ\81R\84J=\17Úd_E\87ß@ç\9cÚèFÙ\90\ e¨¿Y!\0'>\85\87oaÀÐ\85ªÎõ\9fþxn\92\161ê\ 5]èúF\1aw\8dÑ\97\1d]\8få/íïðI|\1cê\18½Rô\8e#ÈSNÔïX\0Ë3aM¹\18ÆÒåº\ 4Ùq¡É{ö\2+V÷¿l#\b˹}©S\9b ©\96»>\10SÉ \ 2\92>\16jÐ\ 2¥óªÄÑHÚ¿0Z\94ÿb\93²H|\90BÖ>î»ÿødTIû×E\81ëÃ\ 5\96ÜçâÅw\15bmRC\17\8a &\0éÛïê7\8aÍ^\8e¶½c`I¥\a#µ\81\ 1\v\$û
-ù®!Éë1rps]\12È'ôÖþÂé£\94u?\97\r@ÞØÙ"Ç¢ój\91\1d®\9b\9fÿè\9c ø\91*(Ï\S\ 1\82¡9Ù<¯á#\7fK8õ\8b\ 2 \9diWpìc\16\92µ<c®òBd!Ê\90{$\ e9@\9a&\1aGªSZHYêè\7fm\9fÓôúu}$-ÑJÔà.ç9¡©\82ò\1dî¨@'
-'ó às-\93H:ãÅ:óª%}ªì¼û
-\15+
-\81îSU3\81Ëá\ 2i<\¡x\92\11ÁgǬ#\12Àj1¡¯*!4ä5\16æÍ\83·@òØvéÍ(\99aôÝ¡¶o\15\vÅ\19\17\88³EÁ°ã\ 68i\19âþ\fFó\8cR×Ú\92k\f*\ 1\b\ 6rª\14ÁzQd×\16ø¼´nq\fUÅ\88I`Ú!\8dk7Â}\8aߵϺhÔ¾\\92¼ñVªÆ\88.¡ový3´Ð½\8f\8d¥\f7eû³ïI±kÆÔ[\96ád\98áÓW¥Q¤oç\81|þ\8c\9aBz õQJ¯áJ¶\8eÙÇ\88HÞÐ[\80'ÁÛÜØå·gÄÁ_ª¥
-¶\98\r~jîðÊ\fb±y×\7fÙEëͦ¯Qºê{;'W\1aøtnJð\aN>\96²\13\ 2ÚI/o®t\1c@\8e¡nÅ0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-259 0 obj
-<<
-/Length1 1886
-/Length2 12514
-/Length3 533
-/Length 14933
->>
-stream
-%!PS-AdobeFont-1.1: CMR9 1.0
-%%CreationDate: 1991 Aug 20 16:39:59
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /GSDFLN+CMR9 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 14 /ffi put
-dup 34 /quotedblright put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 65 /A put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 91 /bracketleft put
-dup 92 /quotedblleft put
-dup 93 /bracketright put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-39 -250 1036 750}readonly def
-/UniqueID 5000792 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÍÖP
-½¥í\985ö \16ÏÈð\vl\ 5.×j\87\85kPôØ\rúëP\8c\97ø(\1f?\88±~M;\90Àö^Ãyy\1a¬Ü\16*f˼[âõ:\8dç-Ñ\13µZ\ 2/¿îe\8c¹_[³+ 5{^\ 5\ fÝòd tp¾ñÅ!\19¶ûÕÇ~¾Ùd¬Z+¾Éسä\8aå»\0:cÕEwK\92+\9d_ö°\ 6nÎCdZ\13\18y°2\13}m\823\85þUó@-U\7fÓ´Hh[Ý ë\ 5ÕçÂ\12a2ã:Y§\17\ 6 Üô\87\1a]\ 2<\9eõ}3bÙòפ@»i¿e3d\10_\16ôÐð5\82ù¬í=\ 5ÌvH\9b\16ãú\8aD`\94Ó\08°nÌí¢iòê¹Ñ\9a\99Çù9ùT\8f lZEz\19'\v+\82Ä; \1düUsF\8eª>zJ2ø\ 4(\91Ø^K\18\ fËË0\91Ò\80\ eTÈ}\84Î\9chiµª»¾Gô\fhy\98\93Ò+vR\95áæ\9e3ª\ 4\8b~Ù\8b¤\80ÎÊ\91óëøï\85þ\9a9v\90\96&¹ZÅ\94\rSù°"\15ØJD\83{¢^Ñ\Î\rPO\1d3PeYO;È$T\ 5@u\91ÌË\11ÏÔd]¦\r\96\f\v\93ñ\87°Ï{\10UCÀ·\ f\89¯]&Kl\ 2n:æF¬ñE\95\ 2\ 2ìs(!\11ãæ\ 1Ï+Íâ,ãíöÛ#Qd\81B\ f&U/ôG-t\98\11òwh\15\ 4PÐÐëãÇ\9f\99\9e\99µÀò.®»\12Ùw\82±½\91²¡ö*vA%HSÀÝA\1dJ\bÀðqÂÂ\18cÙ·ZF!\80>Ë\84»#[b\ve\89\84²ØàÄc~(\11¼\8f\r\ 4l\895¯Ç\ 1Aá²ÙÂ;Û%\1d0K3xúø\92\8bÐ\96\86ª\ 3@û\f±ÜHÉ\96ï\91S\ fðxfo"z5\89õ\v`Rg!-:eëÁ\ 1\9a\8eì\9a\a9 \ 2yG\1a\ 1áP\\17e\8c\10\ 3\ f®2òtýÈÈwK\rT\ 6Ã\84¡ÑphÜ°ÂW\V/ÜZ!v`\9b\9a,%^BjC%¤ü0Sdz/5÷»ÉªP\13_0"3`ú/¿\ 1\92\94±Ò\9c^*¤\89þ\86\ fá¨y^©ò \8a\92ÈE¼P"\ 4q«q\e¦á\8cJâ\11ñ
-\17,`1\f\10þ\9dùê\1cþÊ¥þàü\12\ 6?\8fHòiUõ\80\9f\8eð\9d¿u\15Çî6\1cçH(X\17RÐ\16\9c½:\85\a\93\87V\94ÅQ\82jS\7f\8fsl(\f \10jB¥\94\175\92¬"Ø\83{U\16péox·\14\86Bx4õ1ÃEò3«ä\15:ÏS\aÍƽûõW\88¼ð\82h\12ê="
-á-@;q\85ÃÜÁÒ\11ñþç¼\12¦°\ 5äë\8dÿ\9e¤ó\88ã\9djÉhÊ\b¶ý½2!À\10!ÔU\9a9mBL\14º\16\95\ 1¾BEG\9e4÷\ 1AmìïÖ£\185&ñqV\0y:Q%n2\b\7fôPxR=¹ð<YgN,ZM\ 3»\1a\0KÞ\19ÇjD Äá IG?8¥\16Ú:ÈéB8\11\84\9deëù\8dó®Kë\10Î\e\*e)êæ>¤xnËVÄ:\8a\b6{8\1c\92oo\18·#\84\9c\ 2ܳ¢~\16çÀ?ªhwéèð\18\99A©v\9b¯àû¸÷WµE\8a1\1dü$\96\17\86\18\vcÏB'i\1c\92\11bè\95Ñ&$¹²ÿ'~ü\10\15úVM#\13\84\ fV`ä\ 6çµúÿ\1ec´:Î*¤\ê.Æ\86I\9b\12\ f\9fÃ\916¼£C¢\83êF\86×fçï]ÌlUDÝ°®\93\92ÿ\19\8bìÙJµßõ\11ç\f\86\aLÄ#åb%>GR\8a\ fíUKÕØz@ç\r|óÛÜ\12\84Щ|\10,\v\19`\92\82nüÙß\8fì²\12½\8aóÈZÚP°ÖQ¯\9dd.\f¼ 1û\v'eÊ\940`¾ÔÊjJ&\9a£§+©\87©\ 5\18¬\80ûu'\90cé4 òßÛ`;Í/:1?\0¡¼òôYRÈÄ¿i©0²\ 53Ý\9bé¼ÈÏ\ 5|´«µ\ eÊø\93\rY(7v\9dñ6\e\96)\b%w\8edżîG\83ýQIy³\9c\v\194\1eq(\¶%\f\9b\9606\e;o\92\ 4\16ýàv´z\92kþ9äð×Ø\18û\94ãL!V6Z-Þ\927>}c\11Õ3\17\1f\ 4,9\15´uýWJãx¶\86¹ô\1cüò'\84y\8bË\18\122\11ÝPý\f´¾\ 2\v\1e\9b%G{\18·¸çà\f{x7DÌÖw\99\e}Ü\10>9J\ 3YE\82\<þÎÓ\19ýVxÝ\9fk¨lM|\ 5\ 6m\ 3§6²Ã\11Ñ\v\e¼ßõ(V5)°ýCp\ 1BçÑÁ\88ví\80\ 3\10¦Ù¯ \v\ 6±à\93ÿ\83¾\9c\85lß63)£\16ªÐ®\1erKä\rø´\ 4\97¬´¼uXê¨ý6ßF\11¾ÄA¹$ëQ¬\18$\eÕH\92@\1eÏ/g\1cÒ\vî\aºi\8e n;HTÛóYN~X\10\1dPçQ\8f\12Ì4H¸÷l\ 4\9cip\86\9cpàÓç"«ôUó\ eZÁݸ Uõò×Ç¥\8c×æ\aÐî$Zæ¯
-\18×Õ\13Óèøòs\1c\ 6é´@Tá0;Ð22c-\85 "\92®\ 4\0³>9°\93ÜUR\99{\86\98#\13>¯\80{-e»üWKÈèÄðº|]\ 1'æ\fâæÕÊ\9dÄuª\8dVwY\ 3K\81\84?\9ez?\91\18ñU\ 1Þ\1c\96\1e\1e'\85]Iâ]\97y´õ2vït\ 1\87p]\8c\1cÐá<=Üö1Ö¿Ù\82\0E\85T)×\90@UU\8dºÍ\84\1cæ&\84.¡·emKj«'\1f>0Ü\f\96UR\85\87\11÷\ 5t7Ü|Ñ\87ÿ\ eowE!pÚ\ 5T@þ\ eW\9esc\aG\8dn\ f\92Q¹|6?²~\11%"\a\82`u5Ùç_\18Añ£\975\90çh©\ f¨¾(6\15Ì\1eR7¸¶¤Ê¶\8a9û'Í\ 6\1c\16p¹V}¼\9dU\8e\eÚÀNÄ\ e\8f=\89b}\84\8f\ fp²íß#Û·6AØo\96\0ù\9dN~á?"°qiómÈ\13µÉiÔ7\ 2$)5ÝI\88\9a¦\ 5êA¸ö\8eJ:{¥å{7¹v&þÉ\8b´\85\9e±ôÎgdLü\là\8b\b_ný¸¢?\95l\85*æIÌ\84¥\16¢y»3êó³#ÓÚ¾ã6ÞSÒ\10\95[ö\94ê>Ã'O\ 10\93C\13\ 2O:¯à_\85\81UW\90¯£û}\bY\0(\1d\8d!Ó\83ô\80{åñ7\fs\15[w\8a\fM!\ 5»¸÷ï\ eb\99ê\940!èFY\9aIIÝ\19\b\16#\97\11\1aôA\92H\19C°&øWúæ\9a\87Z¬"£ôLK\ 1\83\84>æËI!k¸Ô\81¨Xû9\86\87¢\87¡/\9bS³Ú$\15"K\ 1Ê\18Ë-n¦8ýÓù\8aÉð\bü/ "^Ë2«\9dl5$8\8e\13¦¦\ 6¼\89ÌG\8d\80N;\0AþvÄit\vA\13\8fWC72,S@@Â\ 6Û\1e%Ú\1eho\0J¹\0õ\ 5¾ë·v\10\ 6i\1c\11Çz\16Oã\13W2êi¾d9+o³\7fé\9aÓØ\1cÇÞØ\82~^JVÛ·)ÆîÎTûÇѯô\8f\99agp\82ýNA\8d.\80EÉË#_\84iOÄÏY°w\ 3\8f¾ò6ÉÞ\92\17\9cK\12/Q\90T\95Bà¤\ 4e&\89^\98Yå\14Ø7®\8c\97tm¿äÙ\1e\88Ì\1d\83\19\8e\19ÆÉ\19Xþ)xuÒ:\9dÈJm\8bp3ðMWx\1a¿t\\eJ¼M\99ÂQOu\ ea,\11~\ 16K
-\v\1c8P',têï7á\8fX\a\aBûå\19ÊÌw\99\93\e\b\8fÿç>ê\13¹x<8»Py\ 2\8cD ¡ûpc´g4\9c¸ðD/\98ÏÉ\8d¡/½'6\f£\9bÐ";Þßüß\92NÈ\86Ð\ 2ï+|\15¸eÚ"|Û\1c³u\14\1fV\ 5@\96\ 4n\8eeâyk½Èc¦\ 4B\9bË\1cr\80\92!$¹6Ì\eKd&\rñ\89Æ» D\95\Ðöê\94sÁRjû¿ë#ZåÑq6\157+#;$Êæ¼$ÿ4°ü[<QÝs\r/±/ÿ#½ D\84z5\12C¥\17æº\98\ap§\86YQv\89xOCñ¬:CÄnµ\16Iss-`\ 2ÍÇÈ\94\12\8f;³\9d:v%\87ò\81üN\0·\157C\17ç¼\99÷.ÅRt\ 1\ 6(\95ò\18¼,\ 1í[±\8eä5\ 3\8cbxH\96\11öÂÝ( 'Þ7\ 1Éù<\86E\8a«\9f\9dÓW
-\19 %£\1ea\10ÔRZ\88]\18\93\0\9fëë¦A\ eþ\8a\8f¢>£ø|\b\ 2\13e\8e8<1\90â¡\7f\ 6½Ô=\8aR\1ee*ÌX\ emó~\1f;\bªïUFôZ1àÎÔ¡\9eÒ\9c\90\8fÒåóÂ{\82ÉÜï©?\8b\fûh]$2u~z¬ã0\rO´*Yù'¬>
-jæ\9fsKJÔËcÞ\95\1cC\15'ëªF\89F"G>¼½ç-.죽õ7\ 2h\184\86\a3)ÿÆö\9f\7fQïüÈÇç!$¹÷@¾ 6-p\1eÕN®öÄcJ\7f¤ b=±\977¢-L+Q\\87½\19ä\12\97ÎûÅ\r©\9ci\ 4\1d\1f1\13¶»<\86H+Ýþõ\0úå\16;¡\9cÍBÝîó bA\14\8bÓ]_\94`^ÓÜãÁ\82\8e¼lO\9c8î<c¶ý\e.\9f<mF&-\15¦'$éF¹i\9b\v\9f¬s꧶\1a£î\9d\vC\90\18\11¶Ú\r7\ 1\98)Íüêó\88\82Æ@\92䳩n\9f!ðAtĹ\r\9a3Á!À³x·\11\ 5zfCÙ·\12\8d\8a ²vl- 2ÿï§\12d^fì\ 5Eë'\9a\95
-7àé:À#\9b§\fF²OØÅRçÉ\80´
-\1duæ\14\82u\8f®ÿ¾\88\ 2T\10?¶\ 5uç÷tAS%Kõ%î\1arÃè"æµCÍ9ÀB ì\88&\ f|\85ËÀ/½5ô,²¼\96\b\9b_X:b9ÀxÝ<Å7óÝZ¼áÍþ\ eæ \84\82#ß\8aí#\13\ 4½{\1aÔ\81[\91ð\86(»\93L>?òÎP'#7ºâùFAÐSÆG7¨\ 4\81èô;_,\93\8b\95\12}:'ù\16EîC,\ 6[\19À>ùg\e=\ e³\ fTü\15I®È«¢×ieO*d"\9f7ê¤sõ\8eØ\9e|:\8a¸ABè\9cÑ{\9aºÂ\ 5ðn«ñû\9cÄú\88©Õò?Æî0\14\14Ã_¹®±\1aBæ\8f\82)Ù\99ÚmX\bG©~\90)cáxò7tÁ\94[±\83E©:\17\17Õ°tÞ\88\12Ôϳ%yÝ!\82\1d\9bâ\ 3ðOSj%\9dµ\v(\85ØÅ)Õè\86JW'CÜÅôºhâ>ÌïH, \11p\17\8cn@3÷J)T\1a¿[ÊS»\89\Hb\ 2d¿~÷sà\88\83±cË\8d2ÝhÉÖ{cåC'\177J¢Ü9\15\80¾_±Aßc\aWr\ 4àwGÅOî®Æ\9fª'Õ2\b?\9cª\aªr]3J\88½\ 4l!\98\16ê\94ú¡Ô\98a\93\81_íu5,ë\bü³\94#?\11\ 5\11ß\99*¹É\9cMé\98ÎM\9e\1adÑ\1eKO½\ fÞ]\8eã\91\8e>Ä4®\96ç\ eÁ YÀÄ1\9f¦½Æ\97wÉk¯.O ðY%¬+ÈM\8a\88d\ 2øôHq\1aÖ\8cç4x\9d¥@ \8b\13 Wìµ\1dºÍ¾\ 3\ fÜ\f³\7f¬ï\86î\r5û\81É\99V´l\81ÑÝZѾeÄL6b4 Û¢\95t:V*Ñr\1cÔ-éAóÒ\84\8f)ÎU\ 5r\1c¹x7ïûÈP?ð\802þÂ\ 2Ä\10õ\11)ÕÉ\1eiª\1a׳\1e~j-pu\93ß3 ¦\8d\14\ 1\eûK®\805\ 3\11η¤Or¨Ùby=áãû?·óZ»ø\8cesÂúbø26Ä+ødâ\89\8fÊ\fª8¼b\9e\82fûñ{Ú+\´øOÿ\ e;!ä\86¿æ/Øò\12?\11y\15Áõ\9fPWÎj0\99Z\9e\8b¸x\7fL;[?\82+ê\81\8cî`ötW\ 2 ,ý¡þ\84EËxä\18\8d½\81àå^Æ:Dk\12\90Ä\eÉ\9b
-1ëð2ó\91ÍD\r\1c\1awi\9e ñmÍ\9d\ 2ÿýTàsY\ 5ö0×í\7f>n\e¢Hn\0ðt`¦\86Â~cÎL\1e«+\ 1äæÏã \e\8fìí\1c\96ñàÿÌÊÁZÚ\99^8Þ\9bn×%È]~°kW\84A}& ]âõË0cCÎ\95\ 2øÙ/\11\19·¿Äão3\1d¸ \86Â\81$G\9e\13Ù\86éù6\1c§ò³u÷A>dëÆA\ 5*Ôv\ 1¤±Cáx <\0\9f\93ä¨ðâï\a\83^\1f\ fÒ\ 4\80\9fÁé¯ Üy:e4ÑA\9f[\ 6ê\ f>àÍçN\9c®I6\9a÷÷\89(\8bdÒu<\ 6^¥Cë\85&ª!\12È»"¨P\17\ 4¨=H\9aÛÕnw÷®Ü4¶«¡\ 3ÿO¿\8fucÖò÷|\ 5éϸ¤\1c¯\98AxÍøàÃ\83¬Æ±¥FÔ¡Ú³úèl\92ìb,|¶[!³&\1d\18ºí\86n\87} \9d<=?6~\94XâÊT\ 3ÔY8\1aù\88Áz\ 1'VÑMÊZCrýiãì\9cgرå\12¹ñ®\993\96ïè\93[\18 õ\1a\1eÁ\9fû\ 6ú\11é\7f\ 5¥\e\8f>,ê%\96Ë\ fèðm¸2\17}\80«\ e8ówwEµ]4ì÷;Y³\84Ѿ£\1c\87%\12»t©l\99\v\12;\82Ï{\1fû\v§Z\82\17c[\v\83Fc\19O(â\1c\ 4gð\87N\982)ø\18QZ½*ÎJ=/\858\9aG =ì\11ñ\14ôÐ\96ò[P\9aóè1÷ʹ©\ 3ùØ9\90{\8f¾\93ZDx\87\9d}ö\98\93ÔJìYé]AZ\16n·Ù\v6
-@l,¤hÞ¢ýuú©\88\8b* ñ\86j÷\96Ùì\ 2\87T&\95ïXßö*Cù_=£i\15½°\14¤\ f\a\94\93D:Wª/pô×!8;¹Á
-\12L@\96Ë<\81ÙõO\98Þ`\83QpèxA¹\0\97ñ&?õ#Ï\85¿\91>~ù\15~§\1f\9e \9eí\ fYÓù\91À-Ú$\ 1Ã\8aÓÝ\86K\8eØ\91,ãV\e´½[©Ê£Ü\10î`Å\19õ¤\99eN\15Ý\82\13)ìEé¶\9f\86áC\ e´¢\9fU\13~¥®h\ 2Ä\9b\ fA-±%\18»âêÅ{"$2§lEì\8f\bf\13ñ1¯\93#ñb°{S8\0P1G,\b»\ f¤\bÿÏ\1dÅ\ 1\9d÷DlÆÐH:¯\82ý 1&wfû\9b\9ag\8f¢¿N\ 6\98½Á¼¯hÃ\1fh\85,ú·\84îî9 úõw2W1x÷·òz4\ 2\8b^âì\90ê§L\9cá5\17¯´\17ÅK7Óö«ºÏ÷\vÒ);ûqÝðì\18þ¦ëb\aÂ\8dÞï\96£ ¶\88Ý# XT)\91is\0\80\17Åñd0:\bF\1eñZ<0h¨0R¹Æ®£y\1c\b£õä\86A×\81"MàÄÚ69,\8aA}¹&÷\95¡ñ\85ím@îÈ._ôßçüØVQí¸\0\80`òyÁ\13òÄÜÍÙ@e)íðÓõý\ 2Ø\86]"÷\1cÑ@ã\93j
-Ï5CÚ¿\r\93øÁå\99\04îK\92\98\96£²+<\922\9c\8f78üNZð\eh½ìY¶GaªAb\bþ\17\18ëÁù²ÐÕù\11«\1dBKû `eÙ
-\1fV>>\a²\88"q¡\9e\rOâk\14/\83ÆâP\ 4\9a\95\9a\85U\89\a\89¡¢\18q\8a»\rÄßHï¸ÇÆÔ\ 2à«0\1d\17*$H\ f\8c\7fÇ\90¶`9\8f\ 5\17^êֻŷ\1f;í\87¬Ùwöâ×\0\97¿Æèäó\ 6ãúzæ\93?îÍ\83f¹èãÓqA¼£\1c\9dÙ¥X\aÔbg\94@º~\98ÃIÒ\8a¦Ð\90g4ß\0v\86£\8cñÊ\aÈn«\1d\92R`£\972xv6\83\9c1g#\95ÐǸ\1dê$Ò\98HFäûÍy\\80áÚ°¡°\8fý\8f14ößÃ\90`0At\1edu·ä\ fgî\94ýö\f\99VÝé\82\15ßbNT\14ëò"u\99:\87£²6\8esf°Å\ 2®¡À>ð\84¥\87Cc¿\fõ\96û\ 2@\9c²¶þ:?5µþ)ûRB\9c\85«\vfiú\81®6Ü\82Æ
-#1l\17\8d.^-T[i>ù\7f"1\e9£93²P5Ó\ eÒ\9bË¡VÉ\18=¾s^abÉÏ\11&\89\1dÒ×j¨\8eG\94\r\11D1x?\=ó\88£\v,g\11Õ\85-\8a9\7fý\81Ý\ 1\93\813y¤Qcµ_M{=ÇUxQ\97âÆ$4\16D\8f\9dÐ\8b\19\9e\11\87Ú\ e\1fEîHÚµ,[tr\85uN\14ÖçMõ$«Ï4\9eÇ\ 6i\9d\14\95öcv;I\ fÙÒ£\90D\a"\9b¤*mn}Ó\88\89^ƨ\89C9\f¶·õéGȨpä\%\1aÄ®ìåºÕ?øzö\14=\82\84+D§#&©æ"GI]l¿×òÕíB\8d¹-\v~@»Ç\10YÆ\96¡Wúä9 &Ng\b\9c~xΫ\817f\81\11Éi\8f\12òQÝ^p'bXA\11ú¨ç2±K\98\83\9e¸%ïëo´¦½îx;â\81\b80\8b¸ ¸Sù\10þà\95°óMWó\9d\87cÆ\11÷¸È@ºY^ \15¶AG=\96¨)\14\1céS\19\99\97±\140ÛÄ\10a\1d¶µZq9hªo¾\1aØ\ 4+\93±ðHókZ\e\90N²\92p\14qve\aúØn\1aHû\97.0\ 5\8a\8e õº¿Ô
-\84Òz"±\10\80~ð$+ô½\09ÝÓ\8dO|\ 50l\9cý[Ñ kÏ:\9b\B^DM"\1ei`ê\9a\ 6(ó2\18T/ø\8c\b3f\198\80\91h¯Djd\892ÍY_\8byHT7ð/\1c\ eìó\8a\83S·Ýù\81tçù+xÅ\10Àý®f?HÑ\12ÔÏ1\ 5@b«\92ì\9f\15-U©\e\83ä,WnêI\97+@\99\95÷\17¤L¹®éö\15¸Ð=`>\96\1dr_áÌÌ'b)\82Ê °\82ÀAzÄH\9d±\e3SC\91\1a\90&KêS\97p¸w³ÝH¯»\8al¿ã>üX\ 1\8a|lA\96%\91>OÂô\7f \0\8düg\9eÎ\eBf;zaXç¡94\1aO\91O7f\15eR\1dz¤\1cÎü±/\83w«uwt²v\ 5\95µé\1fÞ\85kö4>c\8cèÜT±\15ê3~ÚjÎ+\9bÌ¥\13Bü¾Ø\8b\11P©äÔÔÙÕº|(:ReÝüÿ\93Á>Çý_DÖB1z-\81Ôl\12Î/ThÇã\ 4àVv´8É]¸Ì\91¼ti\17Ïfj#!-\ e Íî\12.´
-L< /iOg~\9cð|\17¢Æ{ù(X\1e,MW\r©ªh\84\bðÑa\1e\98u\r\91N\0ë\92þ\8b~Åÿ\98Ì\1e+r\16+b *KE»\7fÛ¹ä\8e*La\vò;\b²J]ºj}\19U\9e\99ùS¦UU9gÕ\1c\9c´!\e,ûeM\97\8aA\ 3D\18\84\a×ñ\ 3Õ\88\8d½:¬n\ 1è§q5'b0LÊøÕ*¬w#_·'±Y2\93ÊÑ/\9dØ}\95èÀêh~mâ\8b\8b\85å \88,,¬\96íglPÖY¬0JÑu7\93\89\95<ÏW/:Þ;Cíc¤¿\0«þ¸¥\84,ÑÒIHëß?Ý\81sUÅ<]º´\83\8c¨éè:\89¼ª\18¨Yº>ê\ 2PwsU\99\vTp\13?$Ø×ÇXò¥\99\94ú ½uóâ\15;É5öc\17ûf\1aEÜ\1c¥\93}cö\96û")\ 4òÂá\92 á¹°S<ÞÐzÈ#Ë&]p0YÚw!\80\10î
-ï>\v®ù!àSIiÓVð\8a\8fI\11ó\7f\12%\8c<\10\r-PÃ\13\87\15\9f³²¶Ä\94¶vw\0ï\1d\7f\11±$`Go}\16¦n45b\9f\95¬L2ß\8fL
-àà¶VpÎS6¤\ 4\8fWÚzN\ 3\1e¹F\9eÑê\18Ñ-Á¡°p\9f!æ¸^Á\10&}\98\13|íÊmí\94H*\8e\18>Tõeÿd\1d¯\95\8b\92\14X\bñ®\ 1$!\vu\12 >°ª÷¯\ 26({¥\11#f÷<g¿,EKv\ e\8eÄB¼çpÆÌÀ\1fÁÐ\9aî«\9f$÷±ñ\13Ñ\14AH\b±Ýó\80wà\11ÊÍÑM\8c\18¯¼\82\90$¨wÒL\9aC"ìg¿_æÇ÷ò-\91â\93Çñ3î".ÔU\ 5³fKq£\ f\10S1â|d2\16\16×Å\93/\ 3{\8d¼ç\ 4\92\80ØÁät\81û<uÎÞ\96EÏ\85\7f`×g \94·\95^Ð\13ÄH¶jâ0!\19äõ\8dL=\16lú ß\7fN%bf´÷U\7f\8fK\15OÎ\90[®?\v)Hê¼\ e¥³Ì\8c\7fõ4:<\vO\f1\9fuÝRð\88nÕ/\ 2Ú¼\81ã£T}\v\10FVÏÚy\8d?M\81ºô´¶\94%ì\7fvrȱ\1c\ 2¹\14\e8=NÕ¢*SQC@|ÀCùÝ\8c\97\91\8e\0\ 4A;6ØÙóæ\8c\92³<ÈÅ+\85\81Ycû\1f{\ 4î¶Oít¸ê-²\0"#K\asRcs\ 5wåë\8a©£}\ f=\94`\94[^Óð2ÂÄÄÆ\10¬»\r\84V¿òõ
-Ý=þï\18Ø©r2®ÑN¾§=\ 3!\94\9aI\14}tÊ\11\85ß_\10þZ\82\85èMä\93\e\1e5yCñ\8d\8f}ê\97\19üÕ¶\1e\fhéF\83Û\r´ÀÂ\92»KH\12êú \90R<îWPjH\9b\97îÁ0|§êJh¢\85\1fÈ\1eì\8bØU|\7fgÏw&³9ÕÆx\8a>\9d\e\10®$Ô\1d\9dæ\ 6\8aF\8a\98³ä-:\ 6)\12W»ÛÛÎ\0 [qãBQ\ 4
-8¢ÔR\19¸\87À\ 6²<ྥ\8côp΢k§\ 18LÂæ[^û\87Q)ñ XIJ-Ѳ(Ôù\9c\ 1\91Y¸"\ e¯Í´Èæy\80ô¨Àg »×?c\9f?;¡.
-äg\1eì&å·8&\17\92\8c\9eÚI\8eø7½\_ÒGP\11Á\15N}ÅÒôܶs½n:ëÚ Ê¤ú½ gÓr\fÒ\ 3\84\19\80\ 1\vZ\82\9c\18uØþH[\92\19%;\rzA/\8e(æ\86«Ì}¿·ÿ½Ó\94¥\99#\8dôDÆ\r3Ün\83Ê#$\9d\eò²)×UMPLÓµJ°`\16\9b\91Ù, äX\9dká;Ôw|I\972\ 1NP\9dÎgQù2ÂIT£©\89bGT¡Õ:\11ööÌ\0\9e|ï\84½Â»ý×\7føß\18éC
-îxlí\81\163'ؽ6O3ø\7fç\18/÷^D\99\12µ¯N\1d\8aÞ\fYã-BÁ\e}\9d\f<íó~\8a7gyì\1f^JHQ3\8d\9bF\7fx?\òfN\8e&óO}w\91\ fF»Xàe\9eàÃ\8d\9c»·¾¯\10\f7ÃÑYª1ÊO'FC~yÛgø\88TÏ.|\1fÔ%Àà[5ì«ô\8cß(×\1eW\8c\17³ò7}ÂYã\ 3Çø7\r\8dóÙ!Ú\95µ¢NI\13\96Ò\93\92\ 3lï:\1cõ\8d\85n7\80Èk\93\fÃ\90`?+\8bò \12%éÈè\99²Õrn\83ã\17\88\ e\86'C¬\9d£?\aa¼f\9eëÃ\1d5OÝ\176¹¸ï\19]\91ê~iè<G\83+ÑT1\83BÑ?Az
-<ÈÿX_\ 2\10èÃì<Õ\96\95\12\89Çk\ 4ns\fÀ~æ\b\92"àÿÂ\10\8a\13\950$ÅÑ8À;tO\87HȨÿ?\11ôà¨zx\82×\11 ?ýG\ eC½ºUÐ\fyïº\10)̪¾R\93k.æ])Û=±g#\91Â\89eCâNmÝ\1cHZ\13\1fbñ|\86 *¥å\93Ê\8eÿ-\eë\ 3kå\8ds\14à¤ÃÑÉ¿\8d)µ×yÍà®\17a¿d§\\òî\9cì\81°îw'x\1fñuÄPßÚC\11l}Ã\1d±ëi×\88øÿîó(\fÛûl\1ejN°ÐÊÆ\91EO\ryKspç\83ßÙÀyj\ 6\83Ç8\87ú\ 6Ä\8dÓUt«J\1eD0®Í¢]«âµ\8f4ê\ 5fïe\98-ßà¦t>p§£")øí\17ÿG,õÕMôd\91\92ÄN.\vùq½\ 1Û\11XæÐäèmç\1aG\aD\b¯Q°Ø\13Þ@Ä\92\94ê\8a\·\1dÎyâ\ eÐ\fÈ\9a\84ÈÙ4²\8bŤ
-Ä«\19÷j,ïéØ°ÿ\80\95eÑ\86óçUZ\1d\8dõ\1eæø4?æ\rfL\19¤ô)¸\10UGFÕzµ~\84\93_%\15åÎx\1eÎìÁ\9f½êç\9cØ'çZXë\ f{\vfÂßÂ\1c\ fTV+Ç\b¿JÀ\9c\ e3\ìF\ 6¤\8c\83Ëf\8c\8a\81a\8dö>\81\13\80N:Ýýv¾wºpÔåNî\12+Â\9eo*$a{HP ¾\1d\8dÖã[6c¶\83ûm\ 3öÃy¼\9cÕ\ 5$Jß\99\16\80¢h:\9fy:ÉSÛ\99\995Ô\1f7%Ñ :¾Ù_÷nËë£n\9a} ¶\85oï\9bzvß\ 4énÝòTG\19yõø\17¥s·\83´ëøp\96~/\f½5¥oI\17,þ|>pö\8bÆ}\bv4\ 4-ìw»³½\ eA\8dövú\8bÀ!²QÈ>\rµ®G\80\10dÄϯ;.\86=a%\a¡IVl\87\9f\ 6û\16p\99±ïÂV¢¥j\íSÎW\95a\1fh£_µö'±¶e\9a¸wQ\8c\9aìiÛ\1fì\97ô\93|p0'¶B+ï[3TDõ¥!7\88\ 6(K\91\ 4~\ 5[;bÒ\ 2Ædúð©&?²¤x£Å\93Á
-µqDs\96ò\8aW)Õi«\eæ¡\88¶±¡\9bß,Ë5øhz\7fyû-WþËó\ ftÎjXÄe¯uÉ\r°\95\15~9.¦\ 5\8cg˵ \8aë\b£V\ 3\9ax°âó½±ñ\9a
-®6æ'Mõ>*&\81DzM¶#Qü^\9aJ<Ì¥»QôngOpÇ:syà+fv\9e\17M\82µbþeóÚKû
-»àÓ`IÉîy`\b@ô\87úD\8cî\15Ç35\r½ä} 0w¸Mß×Òiëaàܬ\13¹\85©ø%GÊt8\ 6UPëè\80Ã\ eì89Ú\ 2J3Ó\ 6¼g·´\ 1Q\ 3\9a\8a
-\e=^\1a2?w\8dð¤¤Îâ«mdì-DêÝ\8a\2ø3M\°4-(DêR\13\8d~ä\16±\ e
-Àά\eýa\83U&é\85\86Pýrz\ 1c\91\9e\84\1f|\1d\99\v\ 3\¼\98³n²µ{\89\1f\9a\8f._O\1dÂ/y\ f³ÖôU¡/Y\8d\rÉ
-½4BÜ·\øSb]@_{)¶dÓO\ 5H\17·ÜÂó#õ\ 2\v=(\110$ñxµû\8a\1dÚ\92Y×@2ÅÊ0} ªHWüij1\98í
-\1e×\8a\95§$Þu\º\185\92\14`\13PÌÇ\1a\835YÙ¼:\aľÅ\1f<ªDÏ\aûÉ\ 4\8e¸í¾Râî\10Ú'\ e7¨ËÒØ'EÚk¥ìÂ.á\8e\ f+\T±Çn\17\8bÈ\9b\989²ÞãV½'å\1f\85Ê«'\83É\8chP\ eËy¢éË`N\1d\ f¿^-e\ 4j\85B÷î5ªò\98a&è\82×y=õp\1eÂwÚYÑ\7f@SPÄ÷7\8d#W\9a\15\91daâÒün\rokG(ë\95̪+âÁfãä^\8aQkü÷\9f),\rÑ9 `ËkË¥\19s0õ7ãç2å\ 1süáþð\ 6\14é\98|="{¢á¢\1es.Qþí><k\1f*Ù\0á\7f\16\8d¨þô{\9f¨v(Ië|\98<¥ßwhKø<\f¥PÎtuÌ<Å\ 1\82\91ÖRÞV¨\8dT ¦,pXÚÁÚÍ4\ e\10&ô\81\0/\7f~;\95LC:mS\87¢\86\86}Å\1cû§ú\82\1aÅ»\86UÐ\15q \89Uø\as\83Ä\9d;L~\8e\80Á\16\16\1c4\e\ 6²\r~w.g\7fÖYZ\11ú£¡\95úí\f\96\94à΢3À\87\93¼bÂlsvÕ\0\1dÒ\90»y\1d\93§~ÁdêC8£x\v¿\ eAo\10ÌûOç`\90áçOç\95¥¡¼û/Ï$d25vÂÿÅÄ´T²\82Qó$e\88ÉôDG\11þA\933°ËìR51\92þ\13å)À\ 1,¨ë^\ fDÕ¨\83\ 6æ\90 ÑÞÓhëV8@z\96¡\ 3\8a\8bµ*H\13OäKZAاP8SÊF°Sã\ 1\97\91"\89Ó\9eìTt\8fÀúÓÌy·áíd»bÂ\8f>}ê\82\10/¤^pw%¬ë\ edM÷\1f\93Ò\rhö¬\9eT®<\10\1c\v\99J\14m\9clZ)?c\bÔ*\96\86L]ØÉ&µÔÒ\81\87y\99~ªðÖWcº3wIæ¡aj¡2r\16\b\ 3ªº «¶G_=ÔjV%Ìq\8dëI*w\91\15Lv\7f£z\ 3ðCÑ2Wm.[\06\82´Â\8b?®\8e\X\vX]Ñ®\82µ9\9c»·\1e=qíü\81~\16baq¡\b¼á±{u\88\b¦"{ï?\96_ÿïÝZ\eùö§\e·í¹#(væÀ\ 3JÅWäÑùñä\80\ 1\86\ fÖ\ 3êVjP©É¹ËU\11ð~\99¢ýáØW_\95qÑ\98ß\19!EW´!ÝÀ\9bZÔ1\98\1d\9cu¹¸B;÷ü(¢\144b@\92Ú\0ê«bôÍ\1c\î,{L¿§Ì?\174\9a˱\11ìª\9bYg¬\91§ÐGû¥\97\ 36;Ô$\82\1cG\8b¬\14\1d\7f\aBÀ=6\r/4³.K2ó\88B·\8c2§\ e??5ø\97\f\86ßW:\ 2D|\9c\8f·®ÃßZ\ 2\88\·¢ì/p6\81\9b¦\12|\ 2Â\18\1e`\96=Ï\9e\84\14¿¦e¦Qe\87HWâ¡\íîE©n\81À}ü\9f?U]á&åÂ\85\v\8d\9d\ 4xQ©Ôå\97\94\8fÍ£\1fZ\ 2µL\0Vñß\väÞ~Tð\12?V
-x;Çѯ\vie¼ÎC|å\0n\ 4í»Ù»X×ì³\18\91\13Tg\86T\9bgç5V¬îÖ%ñú!$\9eÄ»@_Kö\0\aV\9b¬Vù´/yΧS\85ÍC\ e1ôÛ\90pZ\v¯ÿ¹:HS·Ë4Q\95¸oÎÿ\8c?üJoìlµ\8a\182\13\82
-Ø\92òµ\bgl·\8föþ\ 5½\0]`;5\8a.iRwË\8fDá)\17äîz¶%pZTÞÞ\12Èb(Ü\8a\9d'¼C\ eÑîÈùö\9c¥Lmß»\bIf\90Ãî\17î.¹ÙA\ 1\90Ý}\94\9cÖ\8d`ÄçR4&¿\9f\84\83J¡!\82Eö\8b\ 4Çw°ìÌm&1û+m\88ÅQ\813\fïlÏ=\8ed\1a\95îÒo\8d
-\94\ fd\10ã%\19W¡Àïª4À"\1e`Ó+µF6zò\7\1cC*¡é\16ì\16F¢ó\9c\8bgHY\11 M©Ó|\1c¿ê{´a2[QFæ\ fýî¢m\97¶ãª@L7j\1a\1añ1\vfÖO\803¬7\9fã·Î¡òwsêò\87\bq¥\87£ü¾;w\83ÿ\8b4\a·@\17ýI6\97&é½¥\17³\86\8b\19\81®Æ[Á&Îøºä4;u\ 1\97\8b\ 3\ f¯,&oÁ?\1eDþn8¹\82\8b!\1f\fv³:l¨Wó'ÁQPð^\95èõé
-\134\ fm\84Û\92\ 1QH;¢ð H\1d¦È¹ö\16&\89ö,s×S\8b)/XÄ\ e!)ùúx£=2`u\1c¥õ½ \94òQ\18Nz¦;ã\9eð\948z^ÈG»\84Ê3\11û\97\87\r\86å\8cú`Ã{ÖÙNÎcLL>W¿ÜhÀ7æd@a÷rÛ\12%\94,´ûG(\14Ö¢8»0\99¹Ñ\19\95Ó\81û\ 5¶\8ffº@¥Ñ"ó%´®¸g*\81
-næ£\0=O\8c«ÕâR¸/v{\9f(4ÆóaKS\17ÅÜ]í\10¢G\1a|øo\80Èé\8cÆñå1P\8eÐö0¾ò^\86\19\9c\ 1å2áÞ\91:bô(X$MP\9b\97áËúYâé¾\ f¯¶í\1eåÏ5\87¿\89z\9fÄ\1eL\80x
-~-]z\19{9â\ 3\=î\8b\f#\9foòvÇ\95vpõÀs(ð¨\80Ø\1c\ 3å\ 6ò\89Ò\1c·ZV¢]ÐÈ
-\85üjÞa\18«\12,Nò\84Á«u4T81\8dWøxß\9c0rÞ»¡Dªºýu\89ç\ 5G}\ 4EW\ 3L\1f\ 4\87Ä\98\8e\ e}&y\83
-JVc\92Wó[\8c\9f\8fðò ðÙ'¶G\929\17\ 1>\8c`ÔÈ-AW²Ü)\9eCj¬\ fk\89Ô§\90`;¡\9a\\12p(0Ï°+>B4\91\7f$ôE\1d«C\12\1et]òR?¾EØ*\8cñö\85\94K\97þ×\8f9<.åwîM7 \83:¤\9fªÐ\90\råqÀæÔ7Hãö\f\99\b«\15¨½T.øTaçþ^\83\1dj\7fã{\1ej~\98Wð#äöûÊ\9800g«~¤\ 5x@qä\13F\vÊ¢\ fU2hã\9d»¶J\8f©%Èz{ã\8bø\92{6OÄM \9däìC\13ã`¶L\85\v\16ÎÔþÍ]@ä¡(\8adWª\88:§\ 6\94¦ØÈ1\94x¶p\1fÅøÜ\8b\15,\1fÌó\92Kt.ñT\9b9ìQa+@6Nÿ²\8cä¿ó\930&\87\97!æå.\86ÖNLF\aE·#ê\8akl\15½wÆß\9d~ÒÏRE\ 6\9d\99È\13I»Pisþð@ÔB2Fï\91\8c\92\9b¦\94\94¾F\18û/ÜÈbÙ/\9dÒzXaÞ{\1f]=\18÷ó}7v¥ÆØ\ e<ª\ fú\80³ö\ 4\ 4¯\e¼°_mñ\87¥\ 2\19¤\ 2ó$ôã·Ü\9fi\83\ 5Cý#\\ f²\beôõIÎvW\ 1\99\ 4ré\e+ãÂ\1cï\1e\95\aÓ\80J\8cë_<%åí}Æ\11 «'&·Õ\8eqò\80ë\19\9a\8b|¸~@SÕX\13ZÃD\13®øjî\7f\88Lg*\84kt¯J\18 \9f\196\99\r3ýRd]\a¢\ 2¢Ó³D\84X\1apè\8b\98\f¥\8b\9c¡.b\17\rùËø«j4B\12 "\r\9aöCñ\80 \88¨\15\1ac®½Ù}i½I3Ç\99Ü\97·Á\15®Jæó\8b$\19\8b\90ðW9ý|A\86\12ÁÅ\97MËl>ÚH¨à?ÿÖl~CTÚÃSÕò\ fÜ*(%\0ÜCã\12töý+\16×\8f\97$O\8b\14<Ù&1[Íþ\13¿L\ax%ûè²~L\18\9b\ 6®ñåÂw\86è°\82Û\rx±AkÙ\9d7E \10\97±ÜQÝ\9f·*
-½\92\ 1ë\88\f\1a*>á×q~µ×ê\81ò\84\e\8exGÉêýB\94·¢Ñ\ 5\8a\82Ow·wª®óýâ0`\85o\r\88\16ë\18\1e\8avoÙ$4úoÁ¸W\9bKÀNÅ\9aH\84,P\13P>ö\87$\93\8dÐçíl\a\8c\91µËµ\94\ 2¡üaÿ/ëtö(^ÄÂI<b~\1eÜ-ßm·w'#¸®\ eì<Ï\85c§¯kÙܦ\126õ¼I´&®¹\8d\9a^{°fzh&\91Dñ\11\ eîÁ°3c\18tò#þ÷#ÿy$íf_\a \ ep¦O\f\9c\9f¿ü)\88&¢\18ÉWÂÀ´\fÃ\86\ 1a@s3\8b\r\13¡û´:%\1fþ÷j\89IÅ&Ã$Pm®~Õ?\84&k\11\9fTx\90}Í\ 5\18çæV³£X%}F¸ª¾\84:£\9fb\1d\91\8bM(!ù"\ eyO\1aB¶<` ¢[\v¬\99Ø\80¢
-LDÆ\83JªAìZ\94ðÙ*z\80.0\8c\18º7ØÏPúíµ¤\86\14ç2\13ÜãÉcai.À\85n\15Å#ûð\82ü)0çç\14Ó´]!È\95\97¾Ý\18\ 5Ù>ÿD@¼\12<\17ÂÑ\17÷\10\19)\9aTrñîu<JBj.\eÐ'hjE":Çèl\14aÒ].\8c_W«$¨?çlûú²]|ê\f\9b÷Õjí\82áãÕX%\84Q}Âri\91@\92\rÒ\19x\r-vô\a¨eÞ°\a£<\0÷û÷pɼ"ÑÏL\9cà(ÌÎ \7fdù\92>\r\11±¡ï\8a8ü£\10y\vDì¹V§\8cÈcÇ\17M¬|xûÌ\18p°²Ä^'Rô±²\b \86,÷Þ\17p\12ÖeÎ\97~\e¬ÑÌ\9d¦\1a\83ñ\1fsx²t¸ÛO\86.\95!$\1c:\1d\13¯ÀsA\10R\v§¡¦V_eM\1aû¡¬{
-Ë\9cº\ eIïA2ç"¨¼ñ\18Ëðå\0¼²µÚO\95kÁ\90á.$Ò~\1fo1\99\1c\9bùÝ\93«¼s\89\ 6l^iÑ\ 6è|é\81Éè\v)à\98-È2Æ\8d gG\14fg\86þ2\81\8fMëÓ\87/0$¤ÕúI¶\95rBâô½ü\ eç]:6Øeûÿ\95L\96ò \r{\9bv§o²\86ib\1fÙ÷ÀÆO\0Ý\v\ fÊñÉ\am/Û:1\1d\89\19\9a\1dü?ý\90úq²øø\17/ÞeÃA4\ 4\87Ë\9aî\87\87\9c=n¡É\ 5\ eâ'îÇûÀKp`;0gnº;\9d\94rmLê$àt\12Ò\82/:çÉV\91SÐ\1f.GÕ¦§ðB\84ø\9d«\8fiE×Ô\87_á\92\ 1Sïvmªj\12aI{\94ñ~n\8eð6\8aø½ªì|\ 37oOÞ¬9xó#4Ð\96K\e\827\10\99¶ô\96\ e7\ 6%3\98nLIä\fLP(\Æ×ß7\84 \0&+Mié6RIÑ\89\98Gðe\12\9aÄm3Öb8\9a\97aSÆgÍÌYG<AZXOZâÖÀî-Õo\9c»°¡<÷Óþ]òÊ\8b8.\«z]\12ôXD¹Ý¹k\81\12\vb©UqJoQ0\ 4¯\14óì\b\10`\r͵°m9\13¶ì£ì\98HåÙe\99¦D¡já\8d\9c<2y\b\8f~G\0Tü0Yyä^\8a\185\80û®þ\8aÅ\ eʨs;¬æßDªPß\8eiòz@JcÄø\v>Ú\9f\97ð¥©Ô\ eíE\v´wÊ««u-\8eXµ\94sÏO÷«Æ\v?Z&ÐfMH=§¼À}\r.´\13¤ÜÒLÒÝ\82\18\8cBÓû8\88Ü\19U¯\13¼Öë~aÛZ-dÎÃéQÀ^tÖ%çs\1aå¯7\8bà¨\f\ 1\80\01ul\18º\1a\15yºñ\86Ó/z\12¼Áí2d#Ðø]\1c1\ 4/N_Õ>\vS-Ôÿ'ß|\ 4\8bÖÃ(\1dbÉ7\96\ 3°\13\ 3\ 5@\17¹Jx\9c3¬\10\83äa\vOK\ 2Y¿\8bÏLÊ\19^1\94kø·ú\ 3ÜÍyö¾\9abª«müiÛIb_ìé\8cöEÃÔ.s\atNìO0¡\168où\ 2l§ï\9a\ 2sçZq'¶#\ ×b"\99\1c\98]²\8fÂ\0¼Dätd¹\18)9ì\8b6W\12:æû\ 2\84i\15\13Ú\84\1e\f\9cý\9a\ 5\99Ç=¢\93\8d\ 3
-\7f\83<Èä\89B\97\945ó\0\7fqG\7f\16Èi"\81\94\ 1øÐÞÏé¦Ù¬\9a<ÖÓ"´\rL>[\12>\ 2ÉR¬õ¨¦hÞ2¤}Ù±£O¯Ö{rVu£ÂÚzÞ/}\0Þ\8fÒ]¼/`\b=Û\8dÁ`婸U`V\90Oâ\14\10CÖ»%ì\0ɧß$\8a\8f\81U\92\94rÃ\1d[î:ß ùûØNå¹\8d'§\850\87ÿÎþ\8aÊ»¬rWä\8cç-ªm\18\97\88©l·<[ë\eÏË\9b\ e¶sQÙ\í\89\8eù«à<!\ 3£\83½\ 6\8d\87\1eÔQ/?Q0E\92òCF!ë¨\1dãÜa\96:é¸Çu\ eÎ\9aw¸\13ã\87¨FX\ 2<Ü`\98=¹\1fĶ;zùÉ^\ 2þ\ eÌ Þðvï+N\7fÓ\12\80bûRê\8ay\9c\80®\95\826¾\9e\ 42ZlÂHÇ\89¦þ\e¦ë]3»u\8d\ 3w«\92\95LËÂ(4î×L×É\1d<\ f\966Û9ìé .\8f¯HÙ\18û¡POUÿÄË2\vzX|¨\86îÙkíý<]\89¸âÚ:5£\13(Tðq|p£Àz]óK|´P\9chùÅHáÏOL[hoº¥\8e\ 4ÃôK/q\8fÞ] \84àüªÿ~M)ãN HñI`@Ær\83·?3£V0\16ÃÙ0º>}wàÇ¿\1e$C\80ò'"ÜlçÔ\1eZEUmn,\1aØ\ e\1c\86O:³!°;\87ÝÑú\0\18ð97×\1eÆ?\97ºä\89m\1dÃÃÐKUAQTWs\8c\82\1c\85á\a\86\81K\1c\vq¸y\1c6Æ®\8b7\\85]^\8c*\c
-Ö}ÿûì»aÓI
-èVÀ@\ 4aNñötë\87B©*·\18CÛYÌuÀ>Óßõ½y\97rAÜ"IÖZdHé\ 1ü²\1c\9b\epøEÁ-£\96\80\80^qÚM5\ÌBÜHðlÞÄøÞ¾,Àz\ e0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-262 0 obj
-<<
-/Length1 994
-/Length2 4088
-/Length3 533
-/Length 5615
->>
-stream
-%!PS-AdobeFont-1.1: CMTI9 1.0
-%%CreationDate: 1991 Aug 18 21:08:07
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /PFWZRU+CMTI9 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 46 /period put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 112 /p put
-dup 114 /r put
-dup 116 /t put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-readonly def
-/FontBBox{-35 -250 1148 750}readonly def
-/UniqueID 5000827 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÎå\83¥É99>\ 1'\a´~\f\1f¤}(J\1eÜ\9d\ 1¤\97×r¼¨ÅC8\8emÀÑâÄ\94G@G\ e \14ö^û\a7°\85\e+§\13© \v6Ð}¦¼µ) ¹µ\9eþXw4\ 2z<^efªÓ2þo¼ÎÑAx\ 2\82*;\81Ö\18xu&=k½ K¼öä\87\ fî`ñ\ 4»<Zvf\10Ý\11®¦Jk\10{\v\ 4C\9f¢\88\8b\8cÃ\922»\83÷iZº\81ð&\fÕ$\8b\9ed\9cØ\0¼³%F\8cyÿ¬¹Í06òí{¶]Ì\88:ÿ\8dcPÖè¯\1a\9c\1d-\7fÍÜLUL~5\ f$ XoCâ\12F\11H|Û\17mE8Tµ\1c¸ù\10\vòA\89\9b¾ø}Wñ\13^X\98\13\99\M\86Î\91Û+7W\94\8f6Q\86¤ó-\84_e\9a\8e\95\ 2\8f\9c\ 1h\85\19\97\13\gÎvTòÞO"õ\13\11ªxô@åü,Xöß\90\1fÐq²Õ;&\97¿Î¼CþE\b\82\8bGVë¾\1f>\85\12QAb³»DI:eñ\1aµmêñRý\ 1¼\8bd.`!¯\ 1\99\8eÜv¶¡\92\9f»\9f¤ý\1aC\výDdµ?u\a_fÇ&ü\ 3\7fÂ<ð\9a\17\8fü`\90\8fwØê\9dêyÁâ\1fËZj\99NZ\8e\ÆÖ)\18\91ßv\95ÛX¢ßÏ;É¡x\88Â\95YÎ\8f7Ý5À®5ÞóèÚ¦ØÕtôW°8^ý\16\11ÀH¹Îv9?¿ \ 6ý#×BÏç\ 1`5_éS\ 2±)¨$ÇyJ\9dä~F:\7fÜBýr¹Ú?«Ãæ]\90%\8aÉÁì½6T±\ 3¤\88q_\9e\ ed\9bW\14kxj£\99Æÿ9ób\81c\ 6¡à¬\83¤È4\10\ 3\rt\ e\15\16V\83èCö\95yì\18$Ãi5íG\ 5\96/IL@\14\00;Y\ 6\14åÚ¨ÜSýÚ\b?ÈTå5üÕu³\8a¤==\J8Õk¯©&û\9e\7fÖ\9bá¯+P(IP\ 6\93ÚÝ_\0³\18Z\8b\18 ¶O(\9f3õñìë\14Ö\94Z"ÐÞòY\al¹±\1d\89\93\18\85 SÙ\8c6Î
-\vãGí¯\1eNw|0;J\ 5\1e=§®Q@Î\9dú\ 1\8a\86i°µQin\19MÕL bê\1fô\ 6Ê\87w\90ßÑÜ\18¬b(\8cÿøIÔ¡BË\1c\1aÅú ®\ 5ð9ãÍìnÞU\8f£úë°Óî¹\81åaýè\89\9d]NÿØa
-!±î\99\r \83muÊ\7f\8aßVÎ8\ 2»Eú\9a\ e\94Iû\97í\193óhi#}o\9b\8b¦çÝÙ²\eÂå:õn(ÂÜ\8aä\1f8i§\1f#fz´\87\1f!,0é\8ck\11åÉ*§\0ÇÊà¨(\1fñWY¢íÝ\93e\1eì,=-¥ÏçZ¶G\1aî Lï\10§\10wf\11\85u?\9dªÞëöK\1dy£,X\18\1a"áÊàBýE\89W@7,=R>WÓ÷Gù5\rö\9e\1eÓ\8fÏJ,í»¡\97UÂ\9b9\88ÅS\1e÷x3EÙt=ëªr¿JU©=Ño\e¼:qï\8e\9dI\v\92Í\82¬ùkß\1aNÙ*\90\85v
-b\ãOÎ\8dvâÌx\9d¶|W\9exÈ\ 3ð\a:\ eD Î\e|#\97óH+\87+BVªÀ\b\8fëÛü²Ó\98nHc\1dsì¶ì\99\11\8a\17¤?$gb\97¨¢¸´ÿ\fÀ\83>?Ùö4ê0k$\82&Ç\8dÕF¡tv²&#,n\ 5\94öÀÌãË°ô¼Ø?7\957\17äúð¦Ý\17ø\ 6\89&;k\8d×~ïU`m.äH\13?Ë\1fÈ\90ÒGà,àÈE9Ñä\1fl\ 1¶/9%\83xÀ¥\0\90S\a \ 3ÃÀÈÕï^öSL\aæ\ 2Â\84È n \fÔ\11$Ä\15\0Qä\83\rá\7f|\9a\13±_\88\98øÊg13ò^lµ*Ìý3\9dÍ\86ÿ?b1³1)\9d© \1dm\13é\16\94¡Ëg¡/G\ eK×ÄæVHÇ#»V¥v3S'nù\ eÏ\9cww_Ë×\9bÐ'S}b]\9e\85
-¸Ô\1dF?\16¥X\96\ 4_P\95\7f\ 2\12Jñ\9c»A\80à(\8eD)
-4GpûDû)n6°±cÅ\ 1+ÒÀÂë\ 4HD©xöáñ\rd\9d-Ü\9e\ ej!\13\97·lb
-?=\8a¿hä\ 1XìÉúü=ÆÑÒ\11mí\8f{B!½\93\ 1Ñ`Å\0¢`
-^XV\89j?ÊsÙÊ7Wxi@×k©ÕëH1A?þ)©ó\93\8a\91¯\8e\88«ÍXýD »\rÏ)v\19ïºu\95Ý\1aäÑöV¿S5 ÿÔUc\88jG\9fÒ\969\88yr\ 5P<ú\r\ f\116\82eÜ\86\89V\17:ì\96S\8c\f\9e\90\1f;\^ì{¾EÅ;o-\92|i\97"\8aˤo\1fú^Z\81³°ÔÚkÆÆ\17\91\97Ð+\8e§Í÷§v\14ÑçZ\8eD\12O[\fEÌ[o\14äxM2N¿¡+0cv\8e\1ch\ 1Cþ\9eù3#Â×$\ 4}(\18ÛTTà"ÎOlæªQÔxÆQ^M4·\90\ 4å\eøLD\99TbôNF\1eë¬<\ 2e\100°hº÷/g÷©®§v\97b\83´ó¼·K+/ \ 5ïoKð\eÈGì'µ\1ap~ T µÇ][A\85àú.\82mT´\18\1a\14òìX^(5É\ e´C®®_åæ´BòõÒ@º\12\15yn`N\18Ó6\83\83\vùÃßp\8a\9exbÜÆ\83¯\1c\9f½þ\93Ø¥H\9b\93ZpzGM#9¾\84=Âg\e\8bÜ\8bî¼\9d;V'\em\87Kûð\12%ß®¹.fZJ\f\8dq\95H¤1Ù¿O\ 3¤\14°\b\99Óà[?k4j\17
-\98Ð\96Î\19\8cüuFupÞÃÆ\10Ú¸Fw¼«ÀBj\11\87;=bÎå\82$îÁ¢ªö|¨I(nSJßÂ\83\17\19\96&\17@`õ»NÉñJ\1a\87ì¢\8c%ÕpØ\84\84\7fÁä\11Èqê\87è|é\99\9dÊ6|\19¡ \12\ 2\86Å6Ç£s¨GòW\82Y\14Ùr\8dö\87×Ê\81\840Gµ\9bn x»\92
-0\90®*\ f\9b&1Áó:HfR\vôT½÷Ò\18#\92w#\99ýV-\ f/\8ajy\ 4\87Í0é\ 1Ã3\97»~õ\99X bh+)\89Yr{NÉC\18²\1eØíUn\17ss@°å>Ú*¸¬ê ÞQZ\15Õc£ÿ8Ê\18©¹¬Ïáåà¶\1d(°äÙ¯ `ü\v\ fo|áê7Ûk¬·\8ccIWRá\8e\1cE¦Z6»\9d°ÒH¾ @âP\8dg¢Bw\9b¬Uµ®û4¹T\9f¿Á\80/Ù uW}é*\84tã¡È\17QÂ\ 3X¦KQ\99ÒãÀÁ3-Jb+U9\ 2Þzo.Ø#\8d\87\10¥ã¯\1eRãV\1fVRnb):È\81\15\ e8â`\v\rI\19)b£Xó6î¡\ f\<^~ÓyZ\12Ú$E[\ fÑ\a0?C3\ 2\81§q®K\87@Zé\90z?×?\13´c`?Ða\0§ÁCJs\8eRµCy\v~ } ~P\83ß\bH¤\97ÑúÅdÜsN!\92«IIX&\90©\ 1¬\ 1\86Å6Ç®·\94¹'i»Ã´m]@\15Zº³Ôó\0.̺ò¾ìÓ\16fg0\9b\99Á¤[ Ã\92õô\82OÃ%\85 /ò7\10eó°\a`Ñ3\9aÊ0c©\99¤Ñ\9dÄgçÄ\13\16~y¦\9d Î \1a¡!~#¬8Ö\ eô\99C\8cýËYïù\97àÄ(\14rú¶TÛ×\ 1\9d\1cö\ 1uho¹\ 5H9Àªr\7fO¶¹\89\1cö\82\84Ñ$Æ9\ eö(Gæ\93repô\95okE\Ô\9a
-\86*\13\1c÷µgÙ»£ý\11\ eMÅNà²zÐñ) #\15\95gF缩zÇ\95ÝÐ\0÷\1c2\88ès §<KDÒ\7f_Üf\93Tò\8dôð¼qê4"\ 5\1e×\896Ìl1Ú\19à\fb<\8a\93ª\10T\1d\ f\fE î¬0U0ß&\8eܸ9M$e-\0S¸öÑÆ\98\8fÛ\16áz¿+\97o4ÀDóÔ\fïÆ\83\fyÿ\r1E\b·I±\a°íÁ\19-%c\91%\8eô\84<_g\14>\ f\83 t\9e\r\15\ 1Ç~x¥g3Ýèåáò¶4Í\97Ô°¿l©:ÎÃ3ë\95Vm\1a\84º5 ²\8dиèÒ\18\15<\0ù bÉ·õD\bICÙKI\84\1f×Ò\86=(v\96!ò\ eÌÐx®e @\ 5\ 4êÜ^L½\ e\ 1û§\8dÞ·ºèÀ\91"ªApùòRWc0
-\ 4â¡ê b\1d¾L«ì!\90è\8be;\97 9\90dÒ~B.\82\91Ñ`S¿\f¹\9ac/
-\bÇ»\ f¾eëë\ 2&/\91\1c@þ*ñÌ5Aà¬\96Hcø°RP\86\ 6ÌTôË\15\ 1GQ/\9cs\91Ë}âÈ9¤Æý¢à\13\7fàØ\ 6%9`\97¶Ó\88!¥\8e®Q×=ö\ 6äJi\87y¿4ªù*¢N6\8a\92ÃGn4\89ð\ 5
-ý\96¤\ 1\10ÜÄx\8f®AnQ1\7f3tY½í\13\86¿ØקÛÈÄ\93UºF9ãylu?Òl\8ad!r\9bÎáxDå6ñ?Á\ eÝ\eCäöx\15DûDA\98@«Åܯ\90ª\1e#Û\14¾3þ×ÅØÉ-w\18\8d\a.ªø\9aÒB+²;_£¤£I{\15îrG
-\91¾.jé\14\0T\ 1\ 4ôËæ\a\b\b¥+ĽT]\1dkpt\ 4q2\v*\13\18¿\1fS®¢¬\10Ð>è_\87)TaSLRl3\99Û\181Á¥Q´z\89ɤ,Vs0\1cÇ\96\9f³\8c1jï¶]\8d0"\ 5ò\8d\19\8b¶Àl)·öù©?\9a\83u\1d\92\8e\9c±±\16Nçkî±Â6
-8\9a\81ÃÓ¾\8b\9dÃÁ\9e\87\94\1a\ 3bÅú\9b;ÚrBX\ fó¾ùÛ\88«Ã\16G8\98"\19Þ¨q\84S,c¬j`\1eoñX$V¹ª$fhÙ\82ûYT.4MðÕ\97\11\9dý\ 2¡¡v¯¥\8f\9cèT©Sf¤·\88\ 1¹2w0¢e\9foÏ\80\87pí\19Ð\12\12^Ïd§²¨¥\94öç\f¤\ f\1açbÁ\88á^SÏ=yAt£¥\99\v\16\11¯BMôÞ\aß\eÐ\87M\8e\9e\Óp\96Ä5aÌ£\98úÏm¡Ç\85\9fK¶\168\12Ö\9cØ`å[^\0iЯN?åÜƳ´+^¤M\ 6üj\ 2\95¡Y\97$\8dÍ2q=×\97²<\14§\96æà\19òî¬12Z¡H§r^üÖ\ 2\98.Ç&\86\9eÒ|˪yû\9b.Æ|ý7mÚh\9f\7f©\87ú^¤È\ 2C\0\8d\ 6É[W~LÅó¢æcz\7f\87ðÓ
-2ï¾G¹^M&;#Ô)9 Þ\1c\91\12\83F\88¶Ã¤ýµDØiBÛ«%i\rÚ=\98ÞÁé Ú!Qç¯+Î)}Ot\94xæ>\e\1c÷ßÆT@1\ 6E¡¨F\r\ 4æ-_Aæ\ e\f\ 3\ 38\80KPI×?\9c\ 3¿\b\8b}Mg,Ñ8<.G/êLÝR\rV^Õá\80rP\93µ@åÃi\_1©¸±\83ó×X\8e½\a\1e\_@9ú¥5\92ß\1cÀYî3±GU!x\99ìÆX}i\ 4z\93L\89\88\92\ed\9aF¿¸\ f:ñ×}Õ6\14R0\8bÏCª\eeZ\eé±¥\8a\r@¦\ ec\95\96y\ 1\ e^ô#èMî)¬\ 1\93C#ù\84M=y¼ü,k\14\0ãXû\8e®H.à\8di]~²s\85Äâ\16)\e)\ 4\0s(\ 6q\96×\9e\9ef«³\b°\7f»ü^¨\91sM\97íÜ\1aA\9ecÔIA0ü¯2âß»\84Ke`ì\8b9|Ò\ 5Åg\9abnÓn\86ü\87$ó9\ 5â°\8bÚ\ 31Ó÷ý=`\94"6ùoY\9a\89\0U\19ZÇT\19\bêæ\82ôQàûÙò4¨èË\9bP@)\191¸NSÏ\97\94rFB\94Ìù»\8aÑ{r\ eÅ ÷UI©\9aÑ+Ð%6·\9aBÖ¼9
-´\ f\83\8b,\e\18\9bÇûK\1a:\7f¿ R\7fj\988XOÔÌ.Ó\12\89Â\91YÒ5ý2¥^\r\8f\85\fãÛ\ 4½»ôsùý(<A\91Ã}scõ`yØ\13\92ÁlB\85Z\14Ç\81\9a\1c¥\94ü(\171²Z0ÿ1½$¤tzD*\8a\10\93\99\97Ã ãÒ°²\89w±\98lÀ\81ù\11°´¤8\9c\1cïiúQ]°þÐÏ\81,!ÄY\ 2{\ 4¨:\86
-\16Ç)íÊ\8e\14cXÙé\90M®N\ 6|ös Á1º¨b®5ÞéÈÒÔÕ\19l\826Ð\ fsAàÀÓ\82&ÒÏ\93,ôEàÔ7ÂÜS\ 4/³0[o\16\1d\93\eàZ¸rÆýmÛÓ½AÈ^©zÛW\9b¯}`A-7P¨<\83\97 4\rt\85\fu'˲èjéK³(\7ffàS«_Ë\8f~æWn´ËkB\83VÅ\ 2<\a\14\87Û³ÉR¯¾îô\ fÖCí\191\\ 6¼¹\1cY!ÞZº/\94æýW½\ fOF\ fË\9d¥Lç÷\82Ö\90Ó¡\97,B±\1e!R \8e{¿å\ 6e\8b\11¿9Dk\a)¡\ 3Ú\10Ú0¾º9O?,z\80÷+IL\15\9e\9bK»\1e ²kÁ\1aó\98±jQÔ\89\93ìt\b\90\99\ 5æm¿\9e\12ëÞ\95\11x\9b1¼èvÛ«\ 2<\9aã0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-265 0 obj
-<<
-/Length1 1097
-/Length2 5221
-/Length3 533
-/Length 6851
->>
-stream
-%!PS-AdobeFont-1.1: CMSL9 1.0
-%%CreationDate: 1991 Aug 20 16:41:23
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSL9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch false def
-end readonly def
-/FontName /HGHLSL+CMSL9 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 45 /hyphen put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-61 -250 1150 750}readonly def
-/UniqueID 5000797 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÎå\83¥É99>\ 1'\a´~\f\1f¤}(J\1eÜ\9d\ 1¤\97×r¼¨ÅC8\8emÀÑâÄ\94G@G\ e \14ö^û\a7°\85\e+§\13© \v6Ð}¦¼µ) ¹µ\9eþXw4\ 2z<^efªÓ2þo¼ÎÑAx\ 2\82*;\81Ö\18xu&=k½ K¼öä\87\ fî`ñ\ 4»<Zvf\10Ý\11®¦Jk\10{\v\ 4C\9f¢\88\8b\8cÃ\922»\83÷iZº\81ð&\fÕ$\8b\9ed\9cØ\0¼³%F\8cyÿ¬¹Í06òí{¶]Æñ.3ÝmE¶\12r1O\98\99\r\bÀø'N\99\9fKF¯K\]©#h<\96\ f¬å\0\87\91] D×!\1a\18àÂ)gï\89U&bº\99\ e-û\92gà\9e5OAèqæ\12¤ÙMãÁ´ÆÅLz\ 5O×Ì\ 6\96¨\9cz9{\1dbE\ 5.\f
-ÐÅÎ\92 \eÐ\89\a0â\86>©+¼\1e\ 3m»Ùl\7fOa\8a\83A{\9dFÜÄÂ&Ã\ 3S´mÍ=\7f\12ÜÍe\8f²ú\85\88@Ä ±\1eÕ\19î·zÐûý\18´IV\9eó±\8aü½i}Cn¡¼24½
-îÁªÆê¤\87\ 46WV-\0Bô\1fÙÄ-Òµ\9fJ®öZ\9fø:¼ïØöß7HÏ\9d»½©ån\15®z`\81\89K³\85ºî i#ùÁ\94\8c¥\ak\83ÊuÑxD\83Ï%"\17\8eÇ©jIZ!ù\18\8c\f\19\ 6Q®IêßËZ\15t\ 3.4\13})½\1dúÂÌ\8b/>\v1I\1c´ú¡Øa\83\9fj±\ 5i.W\9a#j\85¤¢ÞÃ'Nçç\93¯yF\19\eË|ØSý8ÜÀ"f\13\8aóº\ràt\1aÀçM\83Õ~ZR*~Ñï\97t¶¹\13á\0\81Cm/;î¦r-.(\éM\15\85\110` E\\85æi\8dÙÎ1q\14#áð\9eqxê\99÷°ªE.\1aº¢&:GJx\ 4Â\eV\87Ô$Càqsjk³êxz\ ec'\85²RÔø4\84\1fc
-»jp\¥\83\10£D¬Òé\99o,7La\87XÙëÖ\87\ 3Ïûy¬qó¦ûQ÷\1e ¾Ð\16å\159\8cöbݯb±Ý\80Dö\87Ý@+\867UN\ 3e\18\84Pý\85Q\sö5\1a):\ 6Ã\9eÅMÐmì\v\7fY¤\1f\12\9b\9bî\7f\13\93ô7mð ï\ e[r\ fg8o"\84p,_i\1fؽѣ\ eG
-ßÄ\8e\1a\fJ»àÓ\ 4úí\ f\17E\161\v¡àm\8c\95¬`\89ñ/\82ïã\94Òÿ4ýq\8a8'\15V,B\97\r³\eß\84GãNH8ìÌv\8a\90\bR\16¬b¶§9LUB¡_¾¥\19üJ\940B·üé\84?\ eÂ{&©\15Ã)<ºXÿ\ 3H\1eF\89:5jdU®z+YW\94Õ2wÄØdñ·\16dËú5 [×å\92\fð¯LÚq o\v\1eWÏ(K ÷\98ü\9aÍ@`pU¤j¥&Áÿ]8*Ñ^¹o\1cWü¹\12ÁÜ\8dƯ̫\r\ 2\14_\aGN\10Ó\9aY\ 4Í¡\ 4\ 4üi½U\eÊ7\1a¹²SgÃÉѯ½¤\ 3\15góüÛè\90ÝüÛìÿOà9A\ 4òê2ß:\8a:\10ê\85¾µ¡\9fn\83XÆîêê\9fó\9c\ 2\98\83òú\ f\97\9dÝ7óU"\93´=£\97dZOþøû\1e\rSZòwg5\86þp\96-z_^j;8É\ e¿æ$Tíj¯· Î"q9\9azp\bseѵ\92¯õ6\91\e/W2 Å\85A ýðã #3ü\993½Nc¿Éþ'å¨#½îM\9dhd[° Q·V|ªb\99.Ñ©æz$[mN¾çùç\1fO¾à\9d\92Ï@\92\86\ e\9b·ÑB¡\84¾\17T\8f±\92Z\ 4Ð`\9a%\rñ·wÐ\e`M) \11\=ý^\90\14od\91\955<(\98é\96#Ç\ 5|\90\a\9c/èÉH\94CL«½R7pÖ0¦Í\vu¹WH\ e\990K¸¼\159¯\98{M2û\9a¿àn_¡\ 2le½r?\9c>'iµüú\81±\8dtì\86Ú\90g6\9aC\fL\89clcªôY\81'¾\18\19\14ÃË29\99\8aUp\90]¬"7tS\97\93
-è^g2\9bin\ 1É\19U¤¤\7fO\96N\91\bÊ.Ö\17\18"¯\9cÅ+?ltwyèÕ\app\14êE}G\ 3?Èí\152:\89\a]ÈO\80Ò^ÌO ÇÒ\b\ f=¹\18)*CSC÷âÞð\84®\97Ñ\87)
-l±,\b{\8et1`½Çdôî\86Íï|ÖÖ_¤fTJKtPfüêÍ\93«\13Ø\1aôå eHÐïĽ,\9a\94\vë_w\90Ái\80\e¥\r\bLwµ\16Ii×Ù\ eÏ\90xº{<ñ0Hõ\99úë¼zýÜj\94:ÍW!Nìè·\81®ä\14!hU\94Tn¶Ú\13ý÷Ìr\82J·Þûè¿oçp¦\8205f¨\8a¿\80[\14©¬¥oE\e~6\12\96²\b\ 2ãG«=ñ\b\ 3\11é\8cÎN\15Mæ\1a\8c¬8:\99A\1eG\88\bqIEäè\95\12g8çÛ\97ÚD½¿ sÁ6ß-\ e\ fæÓ\92\9dEn.\10\ 3\9bÙ¼é\82`SÑ\93AÓÏÜ!ý\1a÷'>!\ 1\1dw\ 1oW\8f\95bÀw«\1f\9cÝ{%:\94CX%3\13\aÔ,Nµ¦(\94ª¤ØMÃ\1aø'g_aG±Bû¬~\1e\92ì\9eX¶Ëïnû\87w¤YÕ/\94og\9d®\88 èCQ\19k\11êöà0\82ËÙ¿]©¤\13è©\85)e×Ô\8dq»\91µ6Ó\90XU@0f&R\88±Êì
-2M
-ܽ¸\88¡B\16\960R+º\14\8b£\1e»z~ç Æ\86\9e\88é\17¹ÿ\ 1\11 ¯lkv\r\0jª+tªoÞv\b ûq°h¦8dÝÍ8¿\0\87Zz`´\143¨ï0T \ eþ\18`âæCÊ\8cÇC=RÖ»1Ñ\99páé=ö¼;"ú\99º6\1f¸ \9eß6\1c«ÜæL`H\11íØ\8a¾\18\90\Hx\ 3\eIBêÛBù«V\1c\b>±Jè2몡²Ó\98¶ô==\82rU^\ 5\a-ü \8e~þ\ fùA\ 2Ó§\1f\1dæ¿°erX©Ö»d_éE¡þ[Äxî®Mç¶\9dú©C;È\9eîÜÆ\81\86oÏ»1¸\ 1\18hÆ~nÔâsÄ\7f¼-=1F½Öùz{\ 2$TY \80\14æÈÓÝ¿É\96´C\85C\93\87èÎ7s÷©zý:¸Òü¶\97úØ@Mµ\ 4\9fÓ¦TóX¾\1cÒ\vÐòÛ*KÅð½±k-c¨n9VÍm¶ç6K\82\14T\99ê\vÙ):e\90s¸¯à]Ù\ fT\ 1¦´$ -wsJÌcy¬|§\87\13ló\18Ì\e+ßèU=*[\8c5\91j\8e¦çþy<¬%\9a:/\ 2·î\ f\80Ïs2ôGÐ\86)8d\1co&ÚVßO\v\1e\9aÍ\88Ç\88®ä
-\99³\8e¥'D\12\12Å3\88ÇKZaqż6\9cN\ 2䮡*Ã*I\9aÊ2/$\8eúMTm-\ 21\94ë\fvú¯\17¼ÏIÑ!\9bj¨²\8df\1e\94q`\80Cý£.ÙG¬M%æÐA|hÓ\8a\80¬6\13÷\94\9f\19Ø\92\ f\83\aO\b¶\8bG²Uì6ÖäÔ!\9bï\86úð9ÐuÇ\fb\9a(2\v6Ñ8\a\8d°\15\92\9e\82A\84v뼡p9ÿ\93\82\1f§-\1ar\86\9eñ¸|Aå^\96ê³o¤ñx¢¨\82ÇZ¾
-ïº+ÛÝ\rï\9a\93ºÿR{9ÍZL¡ç\91¤Úæ\0ìÓ\95ÐÓ\ 6"\10hÖÆÿ\16vùa\1a3Ìy.ç\8bQÊù©x^\82\88²^E\82ÔßÏûûU\v¥HðÈV\19Áì\f*W`Ô\12¿=×s¯û«|Ëé\ 5 ´Õ\99Ùé\86zJ´ÆcsS\81\16x%qÀr¢\12\r¯zÕªy\ 2È\87\18wC\8aÇBLÍÉ\88.9_²3`\16\\ eÜ>#T\93¿£Û\98sè]AÏ»%'\9b41oI^a7I\89\82£\7f§ùgÖ'\82p\82Ë£\8f_rUhc\90\eRq:\10ø\9b¸àù\93#«\99\8dMðò\ 1Ú\1dÛL\81æ\97Û\1c\19\10%dËýàÙ\1cæ\9d/ÊÛ\ 4\9e\8aJ\9f\9bå\80\13$\91tl$%v\9e¸BrH\11®\17xÊù'Èlù\8fG¤\e\ 1c¬¥kñG\97\11yä\96Åc\84"w\ 5:\1a»²ËÐ\bòôízg4!\97\83br \17A\92S7?ü\en\16ù,\9eh9*i«J\ 1Ð\8b\ 6©Y\11W\10q\8cw\92\9b&\ 4ç\f\85\ 6¹Ü\v¶<º;\1c`¢cë.lÄ\fëgÀáaxH\80X`\a-k\7fqrÎ¥G\bPÆ\86+¿\114ÓµòÆ8>¦¦¼DÎÁ¦Bã³ÃRÕ\9a³À\96¥E\15¯\9f¥"\1c o°=`Î\9dépããj¨¹$«MÍ_\ØÛM²_¢ê@jÛf\ 4\7fþO\18ñ\1d\8a¡8µøtÞµ\18ÁÇ%ä\9bH\9fêU¢Ì Ä-t\1dû)-áÒX\1eé]\86KV\86\85nô\96ÿÓx\bÆ·fåÇ7\9fL°|û-Z/\96\10é\8a\85ê±Óû÷xÚ23 \81·G¡\81aïk9\ 3©ôlÙ\17¬¼h¸\90\fÉü´y#C\ 5´\ e\81óÖ\1cIÚPA\ 6]\1a1ÜZ¸Kò\85{\88¤WÂy Ã\90_'ܾh\91û8?n\9cÛc\905\ 5%\8a¸âD\90Göyg¢Ý;fPF\89e!OÌ´¬\1fB¾\96\9dËÇ7×\1aÞlëü0Yû\9b±¨\8f8\ 28¾)ë3\ 5>¯\9a=Õ\8e&º\98¼¤:Ào)Q£òº\16K\ 1{\86\ 2éápEn\ 3º\ 6fKnZø]ï\ f\ 1\a0©\11Ȭn½ºù\11¤3¿ã ·\9e¡H]\aF²¡Â\vÞ\9b\1cÚ\10æR÷\89¿Pw\10v$Nþ¸\1cü´MÃa{ú\8cáì!©lÙαdðjЮ\85\89\9a\ 4ó\vY\80°0\84»ctóÌ\11Û\ 3\f\82#%t¤)lþY\14äC\10c\14;$\8dB?Q²8©íÇgò3\91§ÿÇB·\8d@å¾Ãü\aqHÀ©yC\8fáfã¼oûB\1dÙuy«%·Q1\92«Pi:¡NgèY¢ ÖÌmÊýÃsm2\1e½ñ¦õ\e \ fâ\9dd\88Z¤¹T)è~\97\8c¶\88<Ìgï\7fqÆ[\11W\83³\7f\82Ô}\f\85ü¢mÈ\ 3nê)ï\12üÙSº/?jüyÉOçS0ÒCUê\14Jù\8d\ 5?á\1fê\1dï\99Ùw\1f\85?|\81e3a\8eñ=(´[0\19Ð\91¸
-Ï_\8aí[\80æú!Á#\ú* \10f78D?<d¤Õ\bûËú\ 6ù\84ZtÌB3T0L\82fø6_\9eòk:|\97~*û¡\r)åmó\86.æ½l\ 3\8a«ýïóø¿
-\17u¨¨jÎÒ\18Æ\0\ 2\1cÊatºÖ\7fR#ÞÝý\ 5õa#ú/ºÞ/Y\8eþgê\9a&\1a:\1f\1d\84òOfÃ.\88\9eÌö\83¤¤GêkßA`®ì\8b\87\93
-É÷\91ãî\9b\123«\86±ï}1.¶ª<\9bÅQ\r\89Íð=²@'uªçÄ´\1e±Æ´´=Û*¥\9f\1f*\8b¡RÜD\9e̺\8aý\ 1ËÉC\84\9c:ãA\89>z\96\13\14¡Þ¶é̳Qtw\ 1IZ\1f½\12R¾\14EU\ 6\17\f\97GQpO\ 1\9axÖq\16t\95|2:\84x³®\18Óáèõ&\00\9e\90â\ 5\ e´(¥7å\12ÆTl\877ìv0F,ð\92U\eöÀ\8c^óv\ 6$ñ%xQ^ÍÂäK*\9eþ\98Ö\11ú~_YâÅæÙ\11vcX$¯»d<íHªÏ®æµ>\9aõ+Q\f«Ô\91*\15ÑkX\1aÊäN\97\83úç<ö«Ì ϬÞìGX¼\0×uGù\ 2¼U/\82"³\1e|Þ\17\18\11\8c\85õ\87\8b¾|\aSôc$ÐYy»ÔÍi\9f¾&²Ë=\1d(b¯Å;\10\8a\91ÜA;\86÷\8c\15\r¢\94Qè\vVÌÁ¥\99hxXb.È\1d\ 1_«û$&S¸\85DE
-®Lq:\ 6|ÒÁïs1Moõ\N\94£Ow<Í\ 5{\91Ë\v¹+}Ã\9b½\1f-\83=\9d\9f%¯
-J\14ñ\99TÁðÛ\99Û\80O\fÜO˨q\bÐ\83\f#X\1c«\ f¬§uñïç$\1f\1a\80µ_¸T$¶ár\eFU\ 6¾dåÏv t\9fÛ¯c@ô®¢ç0î§/ì!BãL\b\ 3¼^\82Ø8¥\88¿Snä^^¿üµ&\13\18\1eM\v\80\15\95/¾*aô\16TÐ\ 3\8b,\8eùGI\ 6zXtMb«¬\9aÎ&k'ljÝ\932ÎÉ\f±¤BoK^\91±
-̽\93ÓH¦\1f\11\e~þ{]\8eN©\7f\8a rèiÁçÊr£5\ 5z\13:\93'Â99$\1aTR³Ék#ºeì_\84i|\9c0\ 11\1ad\9f\ 4i/\7f\13dEsàá\19ÎÓqïD¢¸¾\95\90Ê\86 v<8¶;d¨ÿ2q¢°ÔήMZ\17+äÔ^/URì'\97ýîÞ\16ã\ 3b\15\eÖ÷-\84\16A\8d4ðg\82©1 9Tim¼\88\0òÿ¯\1a)h\96Mb.-\8bË÷äÀðQ\89"+\ 1¤øÞ\14\84Ûñ\1c\1fǪ\ fÁV\9fz£Ò\95\10kV×
-Æ\1f0KkP\93\ 3ÚÃ>Æ\95{\aÀl\13\15<?Ú¯P¿\ 4¬x'?\9e]ß¾\10®0q\e\88 \7f;\81Ó~ÿ\935*\94\9fZ,"\bD%$%X8¤\1f\90àÌz6xkY]\99U\1dÀæJm\91Á¾UG\19i\9f\-Pîá@ÂC±«z, 6qFB\14è'ÿ \97\88,_×qV|éòEÍ\v/M\a¨ñ\9f\19+*\156\89\16j \83\81\12!õwz\ 4¯ø$\10£F\rx·p\85\17f-Wå\ 5>|\9d^ÕñÃa¬P\16æ/\89S[,#^W\rôÐ}$îSrK(Nc\13?\95\1aþ¬}\ 23ì°\86F56ää£Ë/È°«ãÒ\8aÒ÷\894²ÞØ\ 5Àisª\16âcÖÛÛyÞÔA¥\80¿-<\14Í[0þ×ÀQ\ 2\13\19A\85hC|\errZ@\ 5Öß\84%O\ 3$æN9î\99ÐX\ 2=³£\87\82\9bAwà/}ç\10¤\96=¸d\95çػÕÁ\99>ýxû¤{q\95s\19خۧý+\90
-Iu>÷\ 6Uõ\11\1cæ\8f\88~á `.û2\82åÏ\7fÖtÅ\894¡\91íÎ\9a\ e«\\9b\v\80<\v¡õÌ\ 63¦ÑrËøNõ±v\15\9cH\13à?V¿\87\83^ÍR^¯Á·ìÕýµ\rÚ\ 1Eª\865\1e\12µ»c~Ó\81 \16àP¸98¨'-,¬¾X!Jfò40»¡\84·\0wØcîÌLÔ>ÌXÕ\9a\17\ 5r8\vì\81Uf#÷Ø/\9eá6\96F¡-£\8b+ÖB3\88A\16\89\98\1d\81Yú+Ø+4\9e0TbMU\83n¼¤\ e¬-®\98\83öÒÌCîJä÷¬Rb·\87pã\89Û\9b\ 5¦\86!KMv\89l¨Ñx¿Þ.pÚ!î]\93~æ8áotÿ\14\81ã\89ª=.®²ò\ 1´¶ryÌD$ö)N§KG¾¶(\93|\83ÇÉPZ\92X|+\8e\86«½Ï\9d\95\92sêk¸³u&¯|\18\14\86YÍ£Û\1a\98\19=h\11:ðËy^IÄ\9cé\ 1\17²¦EF¦@Ò¥f_\89u"=¹.\87ål¾\18`ÅÏ\897qäd\88\81µjVÏ&å ÏØGã^ÈX%õ¯ëwYÂÇÜ\9b_vGî\91Úú\94\82\89íìÞup·ÏzÔ\1d\97\85Ú\9eÓbÑNq¤¼\97°"\ 6)\89ä±YRê`x\1e\19v\BâJpÀxP\91Í)oà\ 1á0Ô³0aE³;\87\1cÌî\r\18ÆTmDUä\92ƹ-\15\94&Ã5VÁ5+\9azýÞ àè`Ú_\bÒ×^\86¹øµåV\vtsl©nH¡A\95\19I\89j9ÿ#ú\8001\ eUd_á\14óÌù®ÕBÞô@aÆb6î\93³Nã×\96¯P\12\96Â\12½3ÿy\8aÔ\1f":×ë\1d\9b5\98\aÈÓ¾rå1¥G×\19î\r©³ )îÐæËë)!\9e#mw\9d\f!KÐ÷~ç\96¯.cvþ·a Ð\19¼Æ\8a§©\95«¥m¡\9cBÏ\1aVg\86E·=M9pWùBüÉ\0\9bîÚU\87Ûf\18sYtü\r9\râGs\ f^g¼bY&ÎÁ"1¯\8c«u¯gÜ(k0d\ 2ñI\18ÝO\87\ 3A1KÒ÷Z5¿\f\889;;¥i©ëf\19àu¹*¶ý0-×#×XYêR{\98ÕÃ\99Î\ 5ýíÃv(7¼\1ae\7fÈ¥?\ÞÏd\12«Âw7,5À\1a¸\9bØ5xÖöÈd\9d²þ\94ÝgD\eË'U0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-292 0 obj
-<<
-/Length1 778
-/Length2 1052
-/Length3 533
-/Length 2363
->>
-stream
-%!PS-AdobeFont-1.1: CMBXTI10 1.0
-%%CreationDate: 1991 Aug 18 17:46:30
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBXTI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /LWIKPI+CMBXTI10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 46 /period put
-readonly def
-/FontBBox{-29 -250 1274 754}readonly def
-/UniqueID 5000771 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÎå\83¥É99>\ 1'\a´~\f\1f¤}(J\1eÜ\9d\ 1¤\97×r¼¨ÅC8\8emÀÑâÄ\94G@G\ e \14ö^û\a7°\85\e+§\13© \v6Ð}¦¼µ) ¹µ\9eþXw4\ 2z<^efªÓ2þo¼ÎÑAx\ 2\82*;\81Ö\18xu&=k½ K¼öä\87\ fî`ñ\ 4»<Zvf\10Ý\11®¦Jk\10{\v\ 4C\9f¢\88\8b\8cÃ\922»\83÷iZº\81ð&\fÕ$\8b\9ed\9cÛ©\91L¸Ö×sÖyüÃF>\9bõ\14À{\8aY»T\80+õ¹ô"\8c\8b\8bj\93õËnLìíóíL\eEÔ6§\9d\ 6\ 5«[¥g\eô¡\92PÖ {-µí\ 4ZQ\81¢Í\b5)Ñà4\8c·¤ÉdÔ¤j\98`B<!(èþ¦ÂþÓ\17.Ã$\8fÉ8¿Ê\9c >F\94;4ïóS¦PH¤zg\1617g\9b ?U\81ÕAXq\9e1ÐÔÓûì[¯D¾¹ñwÞ-\80<\9eÿ§¿\89\1a½p>\80[£\e\10\9a?ª?·Ò°¶q^D%5'?¬ÚÀq\95\80o\92ç\89\9dh\1d/\9ffÞ\16
-ÉÌÊsQíiq\90vjaøÒ¡»\13¯ãÕé\0öQ`vv¦æ6}\81o\1de8P\fw\v·EÄv
-¥9¿µ__h\ 6X\9e!ÿ\19ÆZ!V_8\12\9fo\v\9dçø\97\87`Ô\9dÀ%d7\162Ý\9br\90\80 æsúÆ\ eWD|\b\1dê\ 3ó°sÐ\e4\ 16FéÞ@¶\9fGU\91Y\a
-H\86ñ\98µy¥\1agêëô(g\1câ\9aa£\91µÜ-rpL\13\ 5.f¦eµV\ 3]гi\91\8bÚ$\8dp
-Þyß\0ZºÛ\ 2+°º%Aí\90Î\7f\82\13bý`p¾\ÐÚN¼ÛtTº³J7\8a\15MÀUY\93ó,\r (ÜþÆý\9c¾ÿf.Zò\ 4*'¯pöÜÜ¿\1dÎBp"ó\1e@<\92\ fï=¾\1a¨YæÞU\84.\1dÒɧ\e~ÆØ\9b\9aØ^ÀËïº==\ 6Àeº\92ËN\15GÖ\13°µ964ö<±iVM\96(ºLN1twÊ(¶¹ø`
-4ø§á\b\13JIo·ö\f¸^p$ÉEI\87Ù¨ÿà\7f«°\92\18Õ\f\9eų7\17zSÇϾ\95\r\fB\ e*ª:·r\8b\11Ï}Ä*vIÊ=«=˼C\87Æ\ 5\ 5\15Ë\8fY-\8c\93\93S\1d\11OæÚvjéÓO4ÕÑ\bFÛÂ}Á;®\a3\8dR© û}-ÚîsõöG5&íE\a·ã;\9a\1fÙ=¶½Ú\9aµnøÒ`\ 3 d¿ \16öòéu±;>_!0]ëÜÑËnC¨ÁØå`DIê¦bú\14z\86¸\84\rº\a¸]å¯\ 2·~4lA\92\1dHÐ-ä\1cFXá¿]ûü\ 2³®ÝÈ\8fG\19ÀZÒl¥Ì\1eÜÓ¯Ë\0\1ej\1d\80þþ´¤{[Å\93Ù1-êº\a3B>\87Éhfæ\1e*\88å\15\ 4DXýݵÀd:m§\ 6$òáÁE\ 1\9e¤ZÕøÌêË|\ 1üJ\878a\13\99fEµ\88Ô?"¾Ïî\7f~=¹8Ë;PJë»\ 3\Ïd@\16\9d·÷àHEü&ûõ\9fÓÕÝÒJ²åVÔ\86òÞ\8euÃl\8eé\11!¤Ð¥p?®\7f´`¯\1f¦û£ãê\89½0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-1 0 obj
-<<
-/Creator ( TeX output 1999.09.19:2152)
-/Producer (dvipdfm \(null\), Copyright \251 1998, by Mark A. Wicks)
-/CreationDate (D:19990919215248+00'00')
->>
-endobj
-5 0 obj
-<<
-/Type /Page
-/Resources 6 0 R
-/Contents [13 0 R 4 0 R 14 0 R 15 0 R]
-/Parent 302 0 R
->>
-endobj
-17 0 obj
-<<
-/Type /Page
-/Resources 18 0 R
-/Contents [13 0 R 4 0 R 22 0 R 15 0 R]
-/Parent 302 0 R
->>
-endobj
-24 0 obj
-<<
-/Type /Page
-/Resources 25 0 R
-/Contents [13 0 R 4 0 R 32 0 R 15 0 R]
-/Parent 302 0 R
->>
-endobj
-302 0 obj
-<<
-/Type /Pages
-/Count 3
-/Kids [5 0 R 17 0 R 24 0 R]
-/Parent 301 0 R
->>
-endobj
-34 0 obj
-<<
-/Type /Page
-/Resources 35 0 R
-/Contents [13 0 R 4 0 R 36 0 R 15 0 R]
-/Parent 303 0 R
->>
-endobj
-38 0 obj
-<<
-/Type /Page
-/Resources 39 0 R
-/Contents [13 0 R 4 0 R 40 0 R 15 0 R]
-/Parent 303 0 R
->>
-endobj
-42 0 obj
-<<
-/Type /Page
-/Resources 43 0 R
-/Contents [13 0 R 4 0 R 53 0 R 15 0 R]
-/Parent 303 0 R
->>
-endobj
-55 0 obj
-<<
-/Type /Page
-/Resources 56 0 R
-/Contents [13 0 R 4 0 R 60 0 R 15 0 R]
-/Parent 303 0 R
->>
-endobj
-303 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [34 0 R 38 0 R 42 0 R 55 0 R]
-/Parent 301 0 R
->>
-endobj
-62 0 obj
-<<
-/Type /Page
-/Resources 63 0 R
-/Contents [13 0 R 4 0 R 64 0 R 15 0 R]
-/Parent 304 0 R
->>
-endobj
-66 0 obj
-<<
-/Type /Page
-/Resources 67 0 R
-/Contents [13 0 R 4 0 R 68 0 R 15 0 R]
-/Parent 304 0 R
->>
-endobj
-70 0 obj
-<<
-/Type /Page
-/Resources 71 0 R
-/Contents [13 0 R 4 0 R 72 0 R 15 0 R]
-/Parent 304 0 R
->>
-endobj
-74 0 obj
-<<
-/Type /Page
-/Resources 75 0 R
-/Contents [13 0 R 4 0 R 79 0 R 15 0 R]
-/Parent 304 0 R
->>
-endobj
-304 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [62 0 R 66 0 R 70 0 R 74 0 R]
-/Parent 301 0 R
->>
-endobj
-81 0 obj
-<<
-/Type /Page
-/Resources 82 0 R
-/Contents [13 0 R 4 0 R 83 0 R 15 0 R]
-/Parent 305 0 R
->>
-endobj
-85 0 obj
-<<
-/Type /Page
-/Resources 86 0 R
-/Contents [13 0 R 4 0 R 87 0 R 15 0 R]
-/Parent 305 0 R
->>
-endobj
-89 0 obj
-<<
-/Type /Page
-/Resources 90 0 R
-/Contents [13 0 R 4 0 R 91 0 R 15 0 R]
-/Parent 305 0 R
->>
-endobj
-93 0 obj
-<<
-/Type /Page
-/Resources 94 0 R
-/Contents [13 0 R 4 0 R 101 0 R 15 0 R]
-/Parent 305 0 R
->>
-endobj
-305 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [81 0 R 85 0 R 89 0 R 93 0 R]
-/Parent 301 0 R
->>
-endobj
-301 0 obj
-<<
-/Type /Pages
-/Count 15
-/Kids [302 0 R 303 0 R 304 0 R 305 0 R]
-/Parent 3 0 R
->>
-endobj
-103 0 obj
-<<
-/Type /Page
-/Resources 104 0 R
-/Contents [13 0 R 4 0 R 105 0 R 15 0 R]
-/Parent 307 0 R
->>
-endobj
-107 0 obj
-<<
-/Type /Page
-/Resources 108 0 R
-/Contents [13 0 R 4 0 R 109 0 R 15 0 R]
-/Parent 307 0 R
->>
-endobj
-111 0 obj
-<<
-/Type /Page
-/Resources 112 0 R
-/Contents [13 0 R 4 0 R 113 0 R 15 0 R]
-/Parent 307 0 R
->>
-endobj
-307 0 obj
-<<
-/Type /Pages
-/Count 3
-/Kids [103 0 R 107 0 R 111 0 R]
-/Parent 306 0 R
->>
-endobj
-115 0 obj
-<<
-/Type /Page
-/Resources 116 0 R
-/Contents [13 0 R 4 0 R 117 0 R 15 0 R]
-/Parent 308 0 R
->>
-endobj
-119 0 obj
-<<
-/Type /Page
-/Resources 120 0 R
-/Contents [13 0 R 4 0 R 121 0 R 15 0 R]
-/Parent 308 0 R
->>
-endobj
-123 0 obj
-<<
-/Type /Page
-/Resources 124 0 R
-/Contents [13 0 R 4 0 R 125 0 R 15 0 R]
-/Parent 308 0 R
->>
-endobj
-127 0 obj
-<<
-/Type /Page
-/Resources 128 0 R
-/Contents [13 0 R 4 0 R 129 0 R 15 0 R]
-/Parent 308 0 R
->>
-endobj
-308 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [115 0 R 119 0 R 123 0 R 127 0 R]
-/Parent 306 0 R
->>
-endobj
-131 0 obj
-<<
-/Type /Page
-/Resources 132 0 R
-/Contents [13 0 R 4 0 R 133 0 R 15 0 R]
-/Parent 309 0 R
->>
-endobj
-135 0 obj
-<<
-/Type /Page
-/Resources 136 0 R
-/Contents [13 0 R 4 0 R 137 0 R 15 0 R]
-/Parent 309 0 R
->>
-endobj
-139 0 obj
-<<
-/Type /Page
-/Resources 140 0 R
-/Contents [13 0 R 4 0 R 141 0 R 15 0 R]
-/Parent 309 0 R
->>
-endobj
-143 0 obj
-<<
-/Type /Page
-/Resources 144 0 R
-/Contents [13 0 R 4 0 R 145 0 R 15 0 R]
-/Parent 309 0 R
->>
-endobj
-309 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [131 0 R 135 0 R 139 0 R 143 0 R]
-/Parent 306 0 R
->>
-endobj
-147 0 obj
-<<
-/Type /Page
-/Resources 148 0 R
-/Contents [13 0 R 4 0 R 149 0 R 15 0 R]
-/Parent 310 0 R
->>
-endobj
-151 0 obj
-<<
-/Type /Page
-/Resources 152 0 R
-/Contents [13 0 R 4 0 R 153 0 R 15 0 R]
-/Parent 310 0 R
->>
-endobj
-155 0 obj
-<<
-/Type /Page
-/Resources 156 0 R
-/Contents [13 0 R 4 0 R 157 0 R 15 0 R]
-/Parent 310 0 R
->>
-endobj
-159 0 obj
-<<
-/Type /Page
-/Resources 160 0 R
-/Contents [13 0 R 4 0 R 161 0 R 15 0 R]
-/Parent 310 0 R
->>
-endobj
-310 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [147 0 R 151 0 R 155 0 R 159 0 R]
-/Parent 306 0 R
->>
-endobj
-306 0 obj
-<<
-/Type /Pages
-/Count 15
-/Kids [307 0 R 308 0 R 309 0 R 310 0 R]
-/Parent 3 0 R
->>
-endobj
-163 0 obj
-<<
-/Type /Page
-/Resources 164 0 R
-/Contents [13 0 R 4 0 R 165 0 R 15 0 R]
-/Parent 312 0 R
->>
-endobj
-167 0 obj
-<<
-/Type /Page
-/Resources 168 0 R
-/Contents [13 0 R 4 0 R 169 0 R 15 0 R]
-/Parent 312 0 R
->>
-endobj
-171 0 obj
-<<
-/Type /Page
-/Resources 172 0 R
-/Contents [13 0 R 4 0 R 173 0 R 15 0 R]
-/Parent 312 0 R
->>
-endobj
-312 0 obj
-<<
-/Type /Pages
-/Count 3
-/Kids [163 0 R 167 0 R 171 0 R]
-/Parent 311 0 R
->>
-endobj
-175 0 obj
-<<
-/Type /Page
-/Resources 176 0 R
-/Contents [13 0 R 4 0 R 180 0 R 15 0 R]
-/Parent 313 0 R
->>
-endobj
-182 0 obj
-<<
-/Type /Page
-/Resources 183 0 R
-/Contents [13 0 R 4 0 R 184 0 R 15 0 R]
-/Parent 313 0 R
->>
-endobj
-186 0 obj
-<<
-/Type /Page
-/Resources 187 0 R
-/Contents [13 0 R 4 0 R 188 0 R 15 0 R]
-/Parent 313 0 R
->>
-endobj
-190 0 obj
-<<
-/Type /Page
-/Resources 191 0 R
-/Contents [13 0 R 4 0 R 192 0 R 15 0 R]
-/Parent 313 0 R
->>
-endobj
-313 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [175 0 R 182 0 R 186 0 R 190 0 R]
-/Parent 311 0 R
->>
-endobj
-194 0 obj
-<<
-/Type /Page
-/Resources 195 0 R
-/Contents [13 0 R 4 0 R 196 0 R 15 0 R]
-/Parent 314 0 R
->>
-endobj
-198 0 obj
-<<
-/Type /Page
-/Resources 199 0 R
-/Contents [13 0 R 4 0 R 200 0 R 15 0 R]
-/Parent 314 0 R
->>
-endobj
-202 0 obj
-<<
-/Type /Page
-/Resources 203 0 R
-/Contents [13 0 R 4 0 R 204 0 R 15 0 R]
-/Parent 314 0 R
->>
-endobj
-206 0 obj
-<<
-/Type /Page
-/Resources 207 0 R
-/Contents [13 0 R 4 0 R 208 0 R 15 0 R]
-/Parent 314 0 R
->>
-endobj
-314 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [194 0 R 198 0 R 202 0 R 206 0 R]
-/Parent 311 0 R
->>
-endobj
-210 0 obj
-<<
-/Type /Page
-/Resources 211 0 R
-/Contents [13 0 R 4 0 R 212 0 R 15 0 R]
-/Parent 315 0 R
->>
-endobj
-214 0 obj
-<<
-/Type /Page
-/Resources 215 0 R
-/Contents [13 0 R 4 0 R 216 0 R 15 0 R]
-/Parent 315 0 R
->>
-endobj
-218 0 obj
-<<
-/Type /Page
-/Resources 219 0 R
-/Contents [13 0 R 4 0 R 220 0 R 15 0 R]
-/Parent 315 0 R
->>
-endobj
-222 0 obj
-<<
-/Type /Page
-/Resources 223 0 R
-/Contents [13 0 R 4 0 R 224 0 R 15 0 R]
-/Parent 315 0 R
->>
-endobj
-315 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [210 0 R 214 0 R 218 0 R 222 0 R]
-/Parent 311 0 R
->>
-endobj
-311 0 obj
-<<
-/Type /Pages
-/Count 15
-/Kids [312 0 R 313 0 R 314 0 R 315 0 R]
-/Parent 3 0 R
->>
-endobj
-226 0 obj
-<<
-/Type /Page
-/Resources 227 0 R
-/Contents [13 0 R 4 0 R 228 0 R 15 0 R]
-/Parent 317 0 R
->>
-endobj
-230 0 obj
-<<
-/Type /Page
-/Resources 231 0 R
-/Contents [13 0 R 4 0 R 232 0 R 15 0 R]
-/Parent 317 0 R
->>
-endobj
-234 0 obj
-<<
-/Type /Page
-/Resources 235 0 R
-/Contents [13 0 R 4 0 R 236 0 R 15 0 R]
-/Parent 317 0 R
->>
-endobj
-317 0 obj
-<<
-/Type /Pages
-/Count 3
-/Kids [226 0 R 230 0 R 234 0 R]
-/Parent 316 0 R
->>
-endobj
-238 0 obj
-<<
-/Type /Page
-/Resources 239 0 R
-/Contents [13 0 R 4 0 R 240 0 R 15 0 R]
-/Parent 318 0 R
->>
-endobj
-242 0 obj
-<<
-/Type /Page
-/Resources 243 0 R
-/Contents [13 0 R 4 0 R 244 0 R 15 0 R]
-/Parent 318 0 R
->>
-endobj
-246 0 obj
-<<
-/Type /Page
-/Resources 247 0 R
-/Contents [13 0 R 4 0 R 248 0 R 15 0 R]
-/Parent 318 0 R
->>
-endobj
-250 0 obj
-<<
-/Type /Page
-/Resources 251 0 R
-/Contents [13 0 R 4 0 R 252 0 R 15 0 R]
-/Parent 318 0 R
->>
-endobj
-318 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [238 0 R 242 0 R 246 0 R 250 0 R]
-/Parent 316 0 R
->>
-endobj
-254 0 obj
-<<
-/Type /Page
-/Resources 255 0 R
-/Contents [13 0 R 4 0 R 268 0 R 15 0 R]
-/Parent 319 0 R
->>
-endobj
-270 0 obj
-<<
-/Type /Page
-/Resources 271 0 R
-/Contents [13 0 R 4 0 R 272 0 R 15 0 R]
-/Parent 319 0 R
->>
-endobj
-274 0 obj
-<<
-/Type /Page
-/Resources 275 0 R
-/Contents [13 0 R 4 0 R 276 0 R 15 0 R]
-/Parent 319 0 R
->>
-endobj
-278 0 obj
-<<
-/Type /Page
-/Resources 279 0 R
-/Contents [13 0 R 4 0 R 280 0 R 15 0 R]
-/Parent 319 0 R
->>
-endobj
-319 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [254 0 R 270 0 R 274 0 R 278 0 R]
-/Parent 316 0 R
->>
-endobj
-282 0 obj
-<<
-/Type /Page
-/Resources 283 0 R
-/Contents [13 0 R 4 0 R 284 0 R 15 0 R]
-/Parent 320 0 R
->>
-endobj
-286 0 obj
-<<
-/Type /Page
-/Resources 287 0 R
-/Contents [13 0 R 4 0 R 288 0 R 15 0 R]
-/Parent 320 0 R
->>
-endobj
-290 0 obj
-<<
-/Type /Page
-/Resources 291 0 R
-/Contents [13 0 R 4 0 R 295 0 R 15 0 R]
-/Parent 320 0 R
->>
-endobj
-297 0 obj
-<<
-/Type /Page
-/Resources 298 0 R
-/Contents [13 0 R 4 0 R 299 0 R 15 0 R]
-/Parent 320 0 R
->>
-endobj
-320 0 obj
-<<
-/Type /Pages
-/Count 4
-/Kids [282 0 R 286 0 R 290 0 R 297 0 R]
-/Parent 316 0 R
->>
-endobj
-316 0 obj
-<<
-/Type /Pages
-/Count 15
-/Kids [317 0 R 318 0 R 319 0 R 320 0 R]
-/Parent 3 0 R
->>
-endobj
-3 0 obj
-<<
-/Type /Pages
-/Count 60
-/Kids [301 0 R 306 0 R 311 0 R 316 0 R]
-/MediaBox [0 0 612 792]
->>
-endobj
-13 0 obj
-<<
-/Length 1
->>
-stream
-
-endstream
-endobj
-15 0 obj
-<<
-/Length 1
->>
-stream
-
-endstream
-endobj
-4 0 obj
-<<
-/Length 18
->>
-stream
-1 0 0 1 72 720 cm
-endstream
-endobj
-321 0 obj
-<<
->>
-endobj
-322 0 obj
-null
-endobj
-323 0 obj
-<<
->>
-endobj
-2 0 obj
-<<
-/Type /Catalog
-/Pages 3 0 R
-/Outlines 321 0 R
-/Threads 322 0 R
-/Names 323 0 R
->>
-endobj
-xref
-0 324
-0000000000 65535 f
-0000635516 00000 n
-0000644549 00000 n
-0000644206 00000 n
-0000644414 00000 n
-0000635684 00000 n
-0000002827 00000 n
-0000492409 00000 n
-0000000009 00000 n
-0000000212 00000 n
-0000510513 00000 n
-0000001127 00000 n
-0000001334 00000 n
-0000644314 00000 n
-0000002253 00000 n
-0000644364 00000 n
-0000002784 00000 n
-0000635789 00000 n
-0000005701 00000 n
-0000523302 00000 n
-0000002891 00000 n
-0000003097 00000 n
-0000004056 00000 n
-0000005658 00000 n
-0000635896 00000 n
-0000011564 00000 n
-0000525453 00000 n
-0000005766 00000 n
-0000005970 00000 n
-0000542683 00000 n
-0000006627 00000 n
-0000006836 00000 n
-0000007757 00000 n
-0000011499 00000 n
-0000636092 00000 n
-0000011828 00000 n
-0000011629 00000 n
-0000011796 00000 n
-0000636199 00000 n
-0000016838 00000 n
-0000011893 00000 n
-0000016784 00000 n
-0000636306 00000 n
-0000027653 00000 n
-0000553613 00000 n
-0000016903 00000 n
-0000017108 00000 n
-0000556540 00000 n
-0000018141 00000 n
-0000018349 00000 n
-0000562220 00000 n
-0000019385 00000 n
-0000019595 00000 n
-0000020607 00000 n
-0000027566 00000 n
-0000636413 00000 n
-0000035295 00000 n
-0000573160 00000 n
-0000027718 00000 n
-0000027921 00000 n
-0000028507 00000 n
-0000035186 00000 n
-0000636617 00000 n
-0000044452 00000 n
-0000035360 00000 n
-0000044354 00000 n
-0000636724 00000 n
-0000052587 00000 n
-0000044517 00000 n
-0000052511 00000 n
-0000636831 00000 n
-0000056512 00000 n
-0000052652 00000 n
-0000056436 00000 n
-0000636938 00000 n
-0000065186 00000 n
-0000575773 00000 n
-0000056577 00000 n
-0000056781 00000 n
-0000057823 00000 n
-0000065109 00000 n
-0000637142 00000 n
-0000074715 00000 n
-0000065251 00000 n
-0000074650 00000 n
-0000637249 00000 n
-0000083844 00000 n
-0000074780 00000 n
-0000083779 00000 n
-0000637356 00000 n
-0000092126 00000 n
-0000083909 00000 n
-0000092061 00000 n
-0000637463 00000 n
-0000098283 00000 n
-0000579648 00000 n
-0000092191 00000 n
-0000092396 00000 n
-0000581866 00000 n
-0000093436 00000 n
-0000093641 00000 n
-0000094669 00000 n
-0000098192 00000 n
-0000637768 00000 n
-0000098551 00000 n
-0000098349 00000 n
-0000098518 00000 n
-0000637878 00000 n
-0000107009 00000 n
-0000098618 00000 n
-0000106942 00000 n
-0000637988 00000 n
-0000113238 00000 n
-0000107076 00000 n
-0000113183 00000 n
-0000638191 00000 n
-0000120696 00000 n
-0000113305 00000 n
-0000120619 00000 n
-0000638301 00000 n
-0000126188 00000 n
-0000120763 00000 n
-0000126111 00000 n
-0000638411 00000 n
-0000132286 00000 n
-0000126255 00000 n
-0000132220 00000 n
-0000638521 00000 n
-0000137583 00000 n
-0000132353 00000 n
-0000137506 00000 n
-0000638732 00000 n
-0000145879 00000 n
-0000137650 00000 n
-0000145802 00000 n
-0000638842 00000 n
-0000153896 00000 n
-0000145946 00000 n
-0000153808 00000 n
-0000638952 00000 n
-0000162854 00000 n
-0000153963 00000 n
-0000162777 00000 n
-0000639062 00000 n
-0000171767 00000 n
-0000162921 00000 n
-0000171712 00000 n
-0000639273 00000 n
-0000180901 00000 n
-0000171834 00000 n
-0000180824 00000 n
-0000639383 00000 n
-0000190157 00000 n
-0000180968 00000 n
-0000190080 00000 n
-0000639493 00000 n
-0000199353 00000 n
-0000190224 00000 n
-0000199276 00000 n
-0000639603 00000 n
-0000206640 00000 n
-0000199420 00000 n
-0000206574 00000 n
-0000639914 00000 n
-0000213584 00000 n
-0000206707 00000 n
-0000213507 00000 n
-0000640024 00000 n
-0000220322 00000 n
-0000213651 00000 n
-0000220256 00000 n
-0000640134 00000 n
-0000229802 00000 n
-0000220389 00000 n
-0000229714 00000 n
-0000640337 00000 n
-0000239919 00000 n
-0000585250 00000 n
-0000229869 00000 n
-0000230077 00000 n
-0000231018 00000 n
-0000239807 00000 n
-0000640447 00000 n
-0000248016 00000 n
-0000239986 00000 n
-0000247937 00000 n
-0000640557 00000 n
-0000251984 00000 n
-0000248083 00000 n
-0000251918 00000 n
-0000640667 00000 n
-0000257810 00000 n
-0000252051 00000 n
-0000257733 00000 n
-0000640878 00000 n
-0000263713 00000 n
-0000257877 00000 n
-0000263613 00000 n
-0000640988 00000 n
-0000270678 00000 n
-0000263780 00000 n
-0000270590 00000 n
-0000641098 00000 n
-0000272990 00000 n
-0000270745 00000 n
-0000272921 00000 n
-0000641208 00000 n
-0000279266 00000 n
-0000273057 00000 n
-0000279200 00000 n
-0000641419 00000 n
-0000289478 00000 n
-0000279333 00000 n
-0000289401 00000 n
-0000641529 00000 n
-0000298821 00000 n
-0000289545 00000 n
-0000298733 00000 n
-0000641639 00000 n
-0000302650 00000 n
-0000298888 00000 n
-0000302562 00000 n
-0000641749 00000 n
-0000309410 00000 n
-0000302717 00000 n
-0000309344 00000 n
-0000642060 00000 n
-0000312761 00000 n
-0000309477 00000 n
-0000312695 00000 n
-0000642170 00000 n
-0000316618 00000 n
-0000312828 00000 n
-0000316552 00000 n
-0000642280 00000 n
-0000322241 00000 n
-0000316685 00000 n
-0000322164 00000 n
-0000642483 00000 n
-0000327635 00000 n
-0000322308 00000 n
-0000327569 00000 n
-0000642593 00000 n
-0000334308 00000 n
-0000327702 00000 n
-0000334253 00000 n
-0000642703 00000 n
-0000343001 00000 n
-0000334375 00000 n
-0000342924 00000 n
-0000642813 00000 n
-0000343270 00000 n
-0000343068 00000 n
-0000343237 00000 n
-0000643024 00000 n
-0000371577 00000 n
-0000595111 00000 n
-0000343337 00000 n
-0000343542 00000 n
-0000605378 00000 n
-0000344585 00000 n
-0000344792 00000 n
-0000620407 00000 n
-0000345833 00000 n
-0000346044 00000 n
-0000626115 00000 n
-0000347056 00000 n
-0000347266 00000 n
-0000348308 00000 n
-0000371481 00000 n
-0000643134 00000 n
-0000395508 00000 n
-0000371644 00000 n
-0000395412 00000 n
-0000643244 00000 n
-0000420030 00000 n
-0000395575 00000 n
-0000419934 00000 n
-0000643354 00000 n
-0000442920 00000 n
-0000420097 00000 n
-0000442824 00000 n
-0000643565 00000 n
-0000470081 00000 n
-0000442987 00000 n
-0000469985 00000 n
-0000643675 00000 n
-0000475830 00000 n
-0000470148 00000 n
-0000475734 00000 n
-0000643785 00000 n
-0000489354 00000 n
-0000633060 00000 n
-0000475897 00000 n
-0000476111 00000 n
-0000477148 00000 n
-0000489263 00000 n
-0000643895 00000 n
-0000492342 00000 n
-0000489421 00000 n
-0000492274 00000 n
-0000637668 00000 n
-0000636003 00000 n
-0000636520 00000 n
-0000637045 00000 n
-0000637571 00000 n
-0000639814 00000 n
-0000638098 00000 n
-0000638631 00000 n
-0000639172 00000 n
-0000639713 00000 n
-0000641960 00000 n
-0000640244 00000 n
-0000640777 00000 n
-0000641318 00000 n
-0000641859 00000 n
-0000644106 00000 n
-0000642390 00000 n
-0000642923 00000 n
-0000643464 00000 n
-0000644005 00000 n
-0000644481 00000 n
-0000644504 00000 n
-0000644526 00000 n
-trailer
-<<
-/Size 324
-/Root 2 0 R
-/Info 1 0 R
->>
-startxref
-644648
-%%EOF
+++ /dev/null
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.85 Copyright 1999 Radical Eye Software
-%%Title: dejagnu.dvi
-%%Pages: 60
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -f dejagnu.dvi
-%DVIPSParameters: dpi=600, compressed
-%DVIPSSource: TeX output 1999.09.19:2152
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-TeXDict begin 39158280 55380996 1000 600 600 (dejagnu.dvi)
-@start
-%DVIPSBitmapFont: Fa cmtt12 14.4 6
-/Fa 6 118 df<EC1FF891B57E010314E0010F14F84980017F8090B7FC48D9F80F1380DA
-C00113C048496C13E04848C7123F4848EC1FF049140F484815F81607484815FCA2484814
-03A24915FEA200FF1501A290B7FCA517FCA290CAFC7FA2127FA27F123F6D15FCA26C6CEC
-01FE7F6C6C14036C6C14076DEC0FFC6C6D131F6C01E0EB7FF86C9039FC03FFF06DB612E0
-6D15C06D158001071500010114FC6D6C13E0020790C7FC2F3679B43E>101
-D<ED07FC3B3FFF803FFF804891B512E0B500C38002C78002CF806C01DF806C9038FFF80F
-D8003F9038C003FFED00014A7F4A815C177F5CA25CA35CB3A8003FB5D8C07FB51280486E
-B612C0B66C15E0A36C4A15C06C4A6C14803B347FB33E>110 D<EE07FE263FFFF890387F
-FFC0484AB512E0B5D8FC0714F05D4B14F86C5C6C91387FFC0FD80003EBFFC002FD903800
-07F0DAFFFEEB03E003F890C7FC5D5DA25D5DA292C9FCA25CA45CB3A3003FB612FC4881B7
-FCA37E6C5D35347CB33E>114 D<903901FFF00F011F9038FE1F8090B612BF000315FF5A
-5A5A393FFE003F01F01307D87FC0130190C8FC5A48157FA47EEE3F00D87FC091C7FC13F0
-EA3FFE381FFFF06CEBFFC06C14FE6C6E7EC615E0013F14F8010780D9003F7F02007F0307
-1380030013C0003EED3FE0007F151F48150F17F06D1407A37FA26D140F6D15E0161F01FC
-EC3FC06D14FF9026FFC00F138091B612005E485D013F5C6D14E0D8FC0714802778007FF8
-C7FC2C3677B43E>I<147C14FC497EAD003FB712FC5AB87EA36C5EA2260001FEC9FCB3A6
-173FA2EF7F80A76E14FF6D16006F5A9238C007FE91387FF01F92B55A6E5C6E5C6E5C6E14
-80020149C7FC9138003FF031437DC13E>I<263FFF80EB7FFF4892B5FCB56C4880A36C80
-6C81D8003FEC007FB3AC17FFA25E5E80011F140F6E5B02FE90B612806DB812C06D17E083
-010114FE6DDAF83F13C0023F01E01480020790C9FC3B347FB23E>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmbxti10 14.4 1
-/Fb 1 47 df<13FCEA03FF000F13804813C05AA25AA2B5FCA31480A214006C5A6C5A6C5A
-EA0FE0121271912B>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmsl9 9 23
-/Fc 23 122 df<ED1FE0913801FFF8913807F01E91381F80074A485A02FEEB3F80495A5C
-4948140013074A131E93C7FCA3130F5CA5011F147C000FB612FCA339001F80031501133F
-02005BA415035B017E5CA4150713FE495CA4150F1201495CA40003141F3A7FFFC3FFFEA2
-B5FC29357EB42B>12 D<387FFFF8A4B512F015057D921A>45 D<EB07FCEB3FFF9038F80F
-C03901C003E0D803F07F6D6C7EA248486C7E12035BC8FCA21401A2EC7FF8EB07FFEB3FE1
-EBFF013803F803EA0FF0D81FE05BEA3FC01380007F1560EB000748ECE0C05A140FA2141F
-007F90383BE180EC73E33A1F81E1FF00390FFF81FE3901FE007823237CA126>97
-D<137EEA1FFE5B123F1201A2120012015BA512035BA50007137F9038E1FFC09038E781F0
-9038FE00FC01F8137E49133E4848133FED1F805BA216C0A2121F5BA4153F003F158090C7
-FCA3ED7F00A24814FE007E5C4A5A007F13035D397B8007C039F1C01F8026E0E07EC7FC38
-C07FF838001FC0223578B32B>I<ECFF80010713E090381F807890383E001C01FC137C48
-4813FE485A0007EB01FCEBE000484813F8001F1400A2485AA2127F90C8FCA45A5AA3127E
-A2007F1430A26C147015E06C6C13C0380FC0033907E007003803F03E3800FFF8EB1FC01F
-237CA122>I<167EED1FFE16FC153F1501A416F8A41503A216F0A4150714FE903907FFC7
-E090381F81E790387E007749133F4848131F4848130F484814C0120F485AA24848131FA2
-007F158090C7FCA3153F5A481500A3127E5DA2157E6C14FE14016C13036C6C487E2607C0
-0E13F03803E07C3800FFF090393F80FC0027357BB32B>I<EB03FCEB0FFF90383E0FC090
-38FC03E0D801F813F03803F001D807E013F8380FC000121F5B123F48C7FCA312FEB6FCA2
-48C8FCA35AA51560127E15E0003EEB01C0003FEB03806CEB0700380F800E3807E07C3801
-FFF038003F801D237BA122>I<163C91387F01FF903901FFE3CF903907C1FF0F90391F80
-FC1F90393F007C0E017EEB3E005B153F485AA35D157E5BA25D6D5B0000495A90387C03E0
-9038FE0FC02601CFFFC7FC380383F80180C8FCA21207A37F90B57E6C14F015FC6C804880
-380F800048C7EA3F80003E141F48140F12FC5AA3151F16006C143E007C5C6C5C6CEB03F0
-3907E01FC00001B5C7FC38003FF028337FA126>103 D<EB01F8137F5C13FF1307A21303
-13075CA5130F5CA5011F13FE913883FF8091388F07E0EC9C0302B813F014F0EB3FE014C0
-1480A2140015075B017E14E0A4150F13FE4914C0A4151F1201491480A40003143F3A7FFF
-C7FFFCA2B5FC26347EB32B>I<EB0380EB0FC0EB1FE0A314C0A2EB070090C7FCAA131FEA
-07FFA3C67EA3137EA513FE5BA512015BA512035BA41207B5FCA313337EB215>I<EB03F0
-13FF14E0A2130FA21307130F14C0A5131F1480A5133F1400A55B137EA513FE5BA512015B
-A512035BA41207B51280A2140014347EB315>108 D<90260F80FFEB07F82603FF839038
-C01FFE48903A8F03E0781F913B9C01F0E00F8026007FB8D9F9C013C0D93FF0EBFB8002E0
-EBFF0002C05B02805BA202005BA2490103141F017E4A1480A501FE0107143F494A1400A5
-0001020F5C494A137EA40003021F14FE3D7FFFC3FFFE1FFFF0A2B500C75C3C217EA041>
-I<90380F80FE3A03FF83FF804890388F07E0EC9C0326007FB813F0EB3FF014E014C01480
-A2140015075B017E14E0A4150F13FE4914C0A4151F1201491480A40003143F3A7FFFC7FF
-FCA2B5FC26217EA02B>I<14FF010713C090381F81F090383E00F80178133C4848133E48
-487FA248481480120F4848130FED1FC0123F90C7FCA25AA400FEEC3F80A31600007E5C15
-7EA25D003E5C003F495A6C495A6C6C485A6C6C485A2603F03EC7FC3800FFF8EB3FC02223
-7CA126>I<903803E07F9039FFE1FFC0489038E781F09138FE00FC26000FF8137E6D5A49
-487F17805C161F17C0A2131F5CA4163F013F158091C7FCA2167F17005E495C017E495A5E
-017F13034B5A9039FF800FC06E485A9026FCE07EC7FCEC7FF8EC1FC091C9FC1201A25BA4
-1203A25B487EB512C05CA22A3080A02B>I<90383E03E03907FE1FF8143C000FEB71FC38
-007EE1EB7FC1EC81F815F091C7FCA2137EA213FE5BA512015BA512035BA41207B512C0A3
-1E217EA01E>114 D<903807F83890383FFF7890387C07F03801E0013803C00048481370
-A2120F90C712607FA26D130013F0EBFF806C13F86C13FE6C7F6C1480013F13C013019038
-001FE0140F003013071403A2007014C0A21278EC0780127CEC0F0000FE131E38F7807C38
-E1FFF038C07F801D237EA11E>I<13065BA4131CA25BA2137813F812011203485A381FFF
-FEB5FCA23803F000A212075BA5120F5BA5121FEB8018A41438003F13301300A214706C13
-60EB80E0380F81C0EBC3803803FF00EA00FC172F7AAD1E>I<D801F0131F007FEB07FF00
-FF5BA2000F1300000780A249137EA415FE120F495BA41401121F01805BA41403123F4948
-5AA2140F6C131F819039807FFF80380FC0E73803FFC7C6903807E000212279A02B>I<3A
-7FFF803FFCA2B538007FF8D807F8EB1FC06C48EB0F00150E150C7F00015C153815306D5B
-12005D140101FE5BD97E03C7FCA21406137F6D5A141C141814B0131F14E0A25C130F5C91
-C8FCA2130626217A9F29>I<3C7FFF1FFF80FFF0A2B5028113E03C0FF003FC007F800007
-6D48EB3E00171C0003010014185FA24A6C5B13F80001D9037C5BA20206495AA291260C7E
-03C7FCD800FC5C9138183E060238130E0230130C9138703F18EB7E604A6C5AA2D97F805B
-16E0D93F005B150F013E5CA2013C91C8FC131C0118130634217A9F37>I<3B03FFFC0FFF
-C014F85A3B003FE007F800010FEB03E0ED0780010791C7FC903803F00E6E5A01015B6E5A
-01005BEC7FC05D6EC8FC81141F4A7E4A7E14E7903801C7F0EB038390380701F8010E7FEB
-1C00497F0178137ED801F8137F00074A7E267FFC0113FC00FF5BA22A207F9F29>I<90B5
-EB7FF8A248EDFFF026000FF0EB3F806D48EB1E00161C6E13180103143816305E8001015C
-15015E6E48C7FC13001506150EECFE0CEC7E18A25D147F6E5A15E05D5D141F92C8FCA214
-0E140CA25C143814305CA25CEA3C01007C5BD8FC03C9FC5B130EEA701CEA7878EA3FE0EA
-0F802D30819F29>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmti9 9 16
-/Fd 16 121 df<121C127F12FFA412FE12380808778718>46 D<EB03F0EB0FF890383E1C
-6090387C0FF0EBF807EA01F0EA03E00007EB03E0EA0FC0A2381F800715C0EA3F00A2140F
-481480127EA2141F00FE14005A1506EC3F07EC3E0F150E147E007C141EECFE1CEB01FCD8
-3C03133C393E07BE38391F0E1E783907FC0FF03901F003C0202278A027>97
-D<14FCEB07FF90381F078090383E03C0EBFC013801F8033803F0073807E00F13C0120F39
-1F80070091C7FC48C8FCA35A127EA312FE5AA4007C14C0EC01E0A2EC03C06CEB0F80EC1F
-006C137C380F81F03803FFC0C648C7FC1B2278A023>99 D<ED0FC0EC03FFA21680EC001F
-A31600A25DA2153EA2157EA2157CA215FCA2903803F0F8EB0FF8EB3E1DEB7C0F496C5AEA
-01F0EA03E000071303D80FC05BA2381F8007A2D83F005BA2140F5A007E5CA2141F12FE48
-91C7FC1506EC3F075DEC3E0E147E007C141EECFE1CEB01FCD83C03133C393E07BE38391F
-0E1E783907FC0FF03901F003C0223578B327>I<EB03F8EB0FFEEB3E0F9038F807803801
-F003EA03E0EA07C0120FEA1F801407D83F0013005C007E133EEB03F8387FFFE04848C7FC
-00FCC8FCA45AA4EC0180EC03C0A2007CEB0780EC1F00003C133E6C13F8380F03E03807FF
-80D801FCC7FC1A2277A023>I<EB0FC0EA03FFA25CEA001FA391C8FCA25BA2133EA2137E
-A2137CA213FCA29038F83F80ECFFE03901FBE0F09038FF80F8EC007849137C485A5B5BA2
-484813FC5D5BA2000F13015D1380A2001F13035DEB0007EDC0C048ECC1E0020F13C0003E
-1481A2007E1483ED0380007C1407160000FC140E151E48EB07F80070EB01F023357BB327
->104 D<EB0180EB07E0A2130FEB07C0EB038090C7FCABEA01F0EA03FCEA0F1E120E121C
-123C1238EA783E1270A2137EEAF07CEA60FCC65AA212015BA212035BA2000713C0EBC1E0
-000F13C01381A21383EB038013071400130E131EEA07F8EA01F013337AB118>I<133FEA
-07FF5A13FEEA007EA3137CA213FCA213F8A21201A213F0A21203A213E0A21207A213C0A2
-120FA21380A2121FA21300A25AA2123EA2127EA2127C1318EAFC1C133CEAF838A2137813
-7012F013F0EAF8E01279EA3FC0EA0F00103579B314>108 D<2703C003F8137F3C0FF00F
-FE01FFC03C1E783C1F07C1E03C1C7CF00F8F01F03B3C3DE0079E0026383FC001FC7FD97F
-805B007001005B5E137ED8F0FC90380FC00100E05FD860F8148012000001021F13036049
-1400A200034A13076049013E130FF081800007027EEC83C0051F138049017C1403A2000F
-02FC1407053E130049495CEF1E0E001F01015D183C010049EB0FF0000E6D48EB03E03A22
-7AA03F>I<3903C007F0390FF01FFC391E787C1E391C7CF01F393C3DE00F26383FC01380
-EB7F8000781300EA707EA2D8F0FC131F00E01500EA60F8120000015C153E5BA20003147E
-157C4913FCEDF8180007153C0201133801C013F0A2000F1578EDE070018014F016E0001F
-ECE1C015E390C7EAFF00000E143E26227AA02B>I<011E137C90387F81FF9039F3C387C0
-9039E3EF03E03901E1FE01D9C1FC13F0EBC3F8000313F0018314F814E0EA078713070003
-13C01200010F130316F01480A2011F130716E01400A249EB0FC0A2013EEB1F80A2017EEB
-3F00017F133E5D5D9038FF81F09038FDC3E09038F8FF80027EC7FC000190C8FCA25BA212
-03A25BA21207A25BB5FCA325307FA027>112 D<3903C00FC0390FF03FF0391E78F07839
-1C7DE03C393C3FC0FC00381380EB7F00007814F8D8707E13701500EAF0FC12E0EA60F812
-001201A25BA21203A25BA21207A25BA2120FA25BA2121FA290C8FC120E1E227AA020>
-114 D<1303EB0F80A3131FA21400A25BA2133EA2137EA2137C387FFFF8A2B5FC3800F800
-A21201A25BA21203A25BA21207A25BA2120FA25B1460001F13F014E01300130114C01303
-001E1380EB07005BEA0F1EEA07F8EA01E015307AAE19>116 D<01F01338D803FC13FCEA
-0F1E120E121C123C0038147CEA783E0070143CA2137ED8F07C1338EA60FCC65A15780001
-14705BA215F0000314E05BA2EC01C0A2EBC003158014071500EBE00EA26C6C5A3800F878
-EB7FE0EB1F801E227AA023>118 D<D801F01538D803FC010E13FCD80F1E131E000E143E
-121C123C0038027E137CD8783E137C0070163CA2017E13FCD8F07C491338EA60FCC65A02
-01147800014A137013F0A2020314F0000316E001E05BA2160117C001C013C00207EB0380
-A29039E00FE0071700021F130E3A01F03DF01E3A00F878F83C90393FF03FF090390FC00F
-C02E227AA033>I<011F137C90387FC1FF3A01E1E787803A03C0F703C0903880FE0FEA07
-004813FC000E1580001E9038F80700001C91C7FC1301003C5B1218120013035CA31307A2
-5C1506010F130F150E14800038141ED87C1F131C00FC143C1538013F5B39F07FC0E03970
-F3C3C0393FE1FF80260F807EC7FC22227CA023>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmr9 9 71
-/Fe 71 123 df<91393FE00FE0903A01FFF83FF8903A07E01EF83C903A1F800FF07E903A
-3F001FE0FE017E133F4914C0485A1738484890381F8000ACB812C0A33B03F0001F8000B3
-A7486C497EB50083B5FCA32F357FB42D>11 D<EC1FE0ECFFFC903803F01E90390FC00780
-EB1F8090393F000FC0017E131F5BA2485AED0F8092C7FCA9ED0FC0B7FCA33901F8001F15
-0FB3A6486CEB1FE0267FFFC1B5FCA328357FB42B>I<DA1FE013FF9126FFFC0713E0903B
-03F01E1F80F0903B0FC0077E003CD91F805B90273F001FF8137E017E4A13FE495CA24848
-5C030F147C95C7FCA9187EB912FEA33B01F8000FC000187EB3A6486C496C13FF297FFFC1
-FFFE0F13F8A33D357FB440>14 D<003C13F0387E01F838FF03FCA2EB83FEA2EA7F81383D
-80F600011306A40003130EEB000CA248131C00061318000E1338000C1330001C13704813
-E0387001C00060138017177EB326>34 D<123C127EB4FCA21380A2127F123D1201A41203
-1300A25A1206120E120C121C5A5A126009177AB315>39 D<14C01301EB0380EB0F00130E
-5B133C5B5BA2485A485AA212075B120F90C7FC5AA2121E123EA3123C127CA55AB0127CA5
-123C123EA3121E121FA27E7F12077F1203A26C7E6C7EA213787F131C7F130FEB0380EB01
-C01300124A79B71E>I<12C07E1270123C121C7E120F6C7E6C7EA26C7E6C7EA27F137813
-7C133C133EA2131E131FA37F1480A5EB07C0B0EB0F80A514005BA3131E133EA2133C137C
-137813F85BA2485A485AA2485A48C7FC120E5A123C12705A5A124A7CB71E>I<123C127E
-B4FCA21380A2127F123D1201A412031300A25A1206120E120C121C5A5A126009177A8715
->44 D<123C127E12FFA4127E123C08087A8715>46 D<EB0FE0EB7FFCEBF83E3903E00F80
-3907C007C0EB8003000F14E0391F0001F0A24814F8A2003E1300007E14FCA500FE14FEB2
-007E14FCA56CEB01F8A36C14F0A2390F8003E03907C007C0A23903E00F803900F83E00EB
-7FFCEB0FE01F347DB126>48 D<13075B5B137FEA07FFB5FC13BFEAF83F1200B3B3A2497E
-007FB51280A319327AB126>I<EB3FC0EBFFF0000313FC380F80FF391E007F80001CEB3F
-C048EB1FE048130F15F00060130712FC6C14F87E1403A3007E1307123CC7FC15F0A2140F
-15E0EC1FC0A2EC3F801500147E5C495A5C495A495A495A49C7FC133E133C4913185B485A
-48481330485A48C7FC001C1470001FB512F05A5AB612E0A31D327CB126>I<EB1FE0EBFF
-FC4813FF3907E03F80390F001FC0001EEB0FE0001CEB07F0123F018013F8140313C01380
-A2381F0007C7FC15F0A2EC0FE015C0141FEC3F80EC7E00EB01F8EB7FE014FCEB003FEC1F
-C0EC0FE0EC07F015F8140315FC140115FEA3127EB4FCA415FC48130312780070EB07F86C
-14F0003C130F001FEB1FE0390FE03F800003B51200C613FCEB1FE01F347DB126>I<EC01
-C0A214031407A2140F141FA2143F147F146F14CF1301EB038F140F1307130E130C131C13
-381330137013E013C0EA0180120313001206120E120C5A123812305A12E0B71280A3C738
-0FC000A94A7E0107B51280A321337EB226>I<000C14C0380FC00F90B5128015005C5C14
-F014C0D80C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E00
-0CEB07E0A2C713F01403A215F8A41218127E12FEA315F0140712F8006014E01270EC0FC0
-6C131F003C14806CEB7F00380F80FE3807FFF8000113E038003F801D347CB126>I<14FE
-903807FF80011F13E090383F00F0017C13703901F801F8EBF003EA03E01207EA0FC0EC01
-F04848C7FCA248C8FCA35A127EEB07F0EB1FFC38FE381F9038700F809038E007C039FFC0
-03E0018013F0EC01F8130015FC1400A24814FEA5127EA4127F6C14FCA26C1301018013F8
-000F14F0EBC0030007EB07E03903E00FC03901F81F806CB51200EB3FFCEB0FE01F347DB1
-26>I<1230123C003FB6FCA34814FEA215FC0070C7123800601430157015E04814C01401
-EC0380C7EA07001406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91C7FC
-A25BA55BA9131C20347CB126>I<EB0FE0EB7FFC90B5FC3903F01F803907C007C0390F00
-03E0000EEB01F0001E1300001C14F8003C1478A3123EA2003F14F86D13F0EBC001D81FF0
-13E09038F803C0390FFE07803907FF0F006C13DE6C13F87EEB3FFE8001F713C0D803E313
-E0D8078013F0390F007FF8001E131F003EEB07FC003C1303481301EC007E12F848143EA2
-151EA37E153C1278007C14787E6C14F0390F8003E03907F01FC00001B5120038007FFCEB
-1FE01F347DB126>I<EB0FE0EB7FF8EBFFFE3803F83F3907E00F80390FC007C0D81F8013
-E0EC03F0EA3F0048EB01F8127EA200FE14FC1400A415FEA5007E1301A2127F7E1403EA1F
-80000F13073807C00E3803E01C3801F03838007FF090381FC0FC90C7FC1401A215F8A215
-F01403001F14E0383F800715C0140FEC1F809038003F00001C137E381F01FC380FFFF000
-0313C0C690C7FC1F347DB126>I<123C127E12FFA4127E123C1200B0123C127E12FFA412
-7E123C08207A9F15>I<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA2
-02707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA2010E80010F
-B5FCA249800118C77EA24981163FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8
-FFFE49B512E0A333367DB53A>65 D<DA03FE130C91393FFF801C91B512E0903A03FE01F8
-3C903A0FF0003C7CD91FC0EB0EFCD97F80130701FEC7120348481401000315005B484815
-7C485A173C485A171C123F5B007F160CA390C9FC481600AB7E6D150CA3123F7F001F161C
-17186C7E17386C6C15306C6C15706D15E012016C6CEC01C0D97F80EB0380D91FC0EB0F00
-D90FF0131ED903FE13FC0100B512F0023F13C0DA03FEC7FC2E377CB437>67
-D<B77E16F016FE3A01FE0001FF00009138003FC0EE0FE0707E707E707E707E177E177FEF
-3F80A2EF1FC0A3EF0FE0A418F0AA18E0A3171F18C0A21880173F18005F17FE5F4C5AEE07
-F04C5AEE3FC000014AB45AB748C7FC16F8168034337EB23B>I<B812C0A3D803FCC7127F
-0001150FEE03E01601A21600A21760A403061330A41700150EA2151E157E90B512FEA390
-38FC007E151E150EA21506170CA3171892C7FCA41738A21770A217F01601160316070003
-157FB812E0A32E337DB234>I<B81280A3D803FCC7FC0001151FEE07C01603A21601A216
-00A41760150CA31700A2151CA2153C15FC90B5FCA3EBFC00153C151CA2150CA592C8FCAB
-487EB512FEA32B337DB232>I<DA03FE130C91393FFF801C91B512E0903A03FE01F83C90
-3A0FF0003C7CD91FC0EB0EFCD97F80130701FEC7120348481401000315005B4848157C48
-5A173C485A171C123F5B007F160CA390C9FC4893C7FCAA0303B512E07E7F92390003FE00
-705A123F7F121FA26C7E7F12076C7E7F6C6C14036C7E6D6C1307D91FC0EB0E7CD90FF0EB
-1C3CD903FEEBF81C0100B5EAF00C023F01C0C7FCDA03FEC8FC33377CB43C>I<B512FEA3
-000113006C5AB3B3A7487EB512FEA317337EB21C>73 D<017FB5FCA39038003FE0EC1FC0
-B3B1127EB4FCA4EC3F805A0060140000705B6C13FE6C485A380F03F03803FFC0C690C7FC
-20357DB227>I<B500FE903807FFF8A3000190C7000113006C48EC00FC17F04C5A4C5A4C
-C7FC160E5E5E5E5E4B5A4B5A4BC8FC150E5D5D15F84A7E14034A7EEC0EFF5C4A6C7E4A6C
-7EECE01FD9FFC07F4A6C7E4A6C7E5B6F7E6F7EA26F7E707EA2707E707E160F83707E707E
-A283486C913807FF80B500FE013F13FCA336337EB23C>I<B512FEA3D803FEC9FC6C5AB3
-A9EE0180A416031700A45EA25E5E5E5E16FE00031407B7FCA329337DB230>I<D8FFFC92
-3801FFF86D5DA20003EFFE00D801BFED06FCA3D99F80140CA2D98FC01418A3D987E01430
-A2D983F01460A3D981F814C0A3D980FCEB0180A2027EEB0300A36E1306A26E6C5AA36E6C
-5AA36E6C5AA26E6C5AA36E6C5AA3913800FD80A2037FC7FCA3486C133ED80FF04B7EB501
-1C90387FFFF8A33D337CB246>I<D8FFFE91381FFFF87F80C6030013006E143CD9DFE014
-18EBCFF0A2EBC7F8EBC3FCA2EBC1FEEBC0FF6E7EA26E7E6E7EA26E7E6E7E6E7EA26E7E6E
-7EA2ED7F80ED3FC0ED1FE0A2ED0FF0ED07F8A2ED03FCED01FEED00FFA2EE7F98EE3FD8A2
-EE1FF8160F1607A216031601A2486C1400D807F81578B500C01438A2171835337EB23A>
-I<EC07FC91387FFFC0903901FC07F0903907E000FCD90F80133E013FC76C7E017E6E7E49
-6E7E48486E7E48486E7EA248486E7E000F8249157E001F167FA24848ED3F80A2007F17C0
-A290C9121FA24817E0AB6C17C06D153FA3003F17806D157FA2001F17006D5D000F5E6C6C
-4A5AA26C6C4A5A00015E6C6C4A5A017E4A5A6D4A5AD91FC0017FC7FCD907E013FC903901
-FC07F09039007FFFC0DA07FCC8FC33377CB43C>I<B612FEEDFFC016F03A03FC0007FC00
-01EC00FE167FEE3F80EE1FC017E0160FA217F0A617E0A2EE1FC0A2EE3F80EE7F0016FEED
-07F890B65A168001FCC9FCB3A2487EB512F8A32C337DB234>I<EC07FC91387FFFC09039
-01FC07F0903907E000FC4948137E013FC7EA1F80017E6E7E496E7E48486E7E0003824914
-0148486E7E000F8249157E001F167FA24848ED3F80A2007F17C0A390C9121F4817E0AB6C
-17C0A26D153FA2003F1780A26D157F001F1700A2270FE001F013FE0007D907FC5B9039F0
-0E0E013B03F80C0703F8000190391C0383F03B00FC180187E0017EECCFC0013FECDF8090
-271F9C00FFC7FCD907EC13FC902701FE07F013609038007FFF913807FC7091C7007813E0
-A2EE7C01EE7E0393387F07C0EE3FFFA21880821800705A705AEE01F033447CB43C>I<B6
-12FCEDFF8016F03A01FE0007FC0000EC01FEED007F707E707E83160F83A65FA24C5AA24C
-5A047EC7FC4B5AED0FF090B612C093C8FC9039FE001FC0ED07F06F7E6F7E150082167E16
-7FA583A5180C17C0A2043F131C486C1618B500FEEB1FE0040F1338933807F070C93801FF
-E09338003F8036357EB239>I<90381FE00390387FFC0748B5FC3907F01FCF390F8003FF
-48C7FC003E80814880A200788000F880A46C80A27E92C7FC127F13C0EA3FF013FF6C13F0
-6C13FF6C14C06C14F0C680013F7F01037F9038003FFF140302001380157F153FED1FC015
-0F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E01C05B39F1FC03F800E0B5
-12E0011F138026C003FEC7FC22377CB42B>I<007FB712FEA390398007F001D87C00EC00
-3E0078161E0070160EA20060160600E01607A3481603A6C71500B3AB4A7E011FB512FCA3
-30337DB237>I<B500F0903803FFF8A3D807FEC8EA7FC06C48ED1F000001161E6D151C00
-001618A26D15386D1530A26D6C5CA26E14E0011F5DA26D6C495AA28001074AC7FCA26D6C
-1306A28001015CA26E131C01001418806E5BA2ED8070023F1360A26E6C5AA215E1020F5B
-A2DA07F3C8FCA215FBEC03FEA36E5AA26E5AA31570A235357EB23A>86
-D<B5D8F007B539800FFFF0A3000390C7273FF000011300D801FC6E48EB007C1A386D140F
-00001930836D020715706D1860A26E496C14E0013F60A26ED919FC1301011F60A26ED930
-FE1303010F95C7FCA26ED9607F5B01071706A26E9039C03F800E0103170CA2913BFC0180
-1FC01C01011718A2913BFE03000FE03801001730A2DAFF06EB07F0027F5EA2038CEB03F8
-023F5EA203D8EB01FC021FEDFD80A203F0EB00FF020F93C8FCA24B800207157EA24B143E
-0203153CA24B141C020115184C357FB24F>I<267FFFFC90B512C0A3000101E090381FF8
-0026007F80EB0FC0013F6E5A6E91C7FC6D6C130E010F140C6E5B6D6C133801035C6E1360
-6D6C13E06D6C485A5EDA7F83C8FCEC3FC715C6EC1FECEC0FFC5D14076E7EA26E7E815C6F
-7E9138063FC0140E4A6C7E9138180FF0EC380702707F91386003FCECC0010101804A6C7E
-49C77E4981010E6E7E010C6E7E131C496E7E01786E7E13FCD807FEEC1FFEB56C90B512F8
-A335337EB23A>I<EAFFF0A4EAF000B3B3B3ADEAFFF0A40C4B79B715>91
-D<0003130C48131C000E133848137000181360003813E0003013C0EA700100601380A2EA
-E00300C01300A400DE137800FF13FCEB83FEA2EA7F81A2383F00FC001E1378171774B326
->I<EAFFF0A41200B3B3B3AD12FFA40C4B7FB715>I<12035A120E5A121812381230127012
-60A212E05AA412DEB4FC1380A2127FA2EA3F00121E09177BB315>96
-D<EB7F803803FFF0380F80FC381C003E003F133F6D6C7E6E7EA26E7EEA1F00C7FCA4EB01
-FF131FEBFF873803FC07EA0FF0EA1FC0EA3F80127F13004815C05AA3140FA26C131F6C13
-3B3A3F8071F180391FC1E1FF2607FFC013003900FE003C22237DA126>I<EA03F012FFA3
-12071203AEEC3F80ECFFE09038F3C0F89038F7007E01FE7F49EB1F8049EB0FC05BED07E0
-16F0A2150316F8AA16F0150716E0A2ED0FC07F6DEB1F8001ECEB3F0001CF137C90388381
-F8903801FFE0C76CC7FC25357EB32B>I<EB07F8EB3FFF9038FC07C03901F000E03903E0
-03F03807C007120FEA1F80123F90380003E04890C7FCA2127E12FEAA127FA26C14187F00
-1F14386D1330000F14706C6C13E03903F001C03900FC0F8090383FFE00EB07F01D237EA1
-22>I<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC0F3901F003BF3907E001FF48487E
-48487F8148C7FCA25A127E12FEAA127E127FA27E6C6C5BA26C6C5B6C6C4813803A03F007
-BFFC3900F81E3FEB3FFCD90FE0130026357DB32B>I<EB0FE0EB7FFCEBF83F3903F00F80
-D807E013C0390FC007E0381F800315F0EA3F0014014814F8127EA212FEA2B6FCA248C8FC
-A5127E127FA26C1418A26C6C1338000F14306D13706C6C13E03901F003C03900FC0F00EB
-3FFEEB07F01D237EA122>I<EB01FCEB07FF90381F078090383E0FC0EB7C1F13FCEA01F8
-A20003EB070049C7FCACB512F0A3D803F0C7FCB3A7487E387FFFE0A31A357FB417>I<15
-1F90391FC07F809039FFF8E3C03901F07FC73907E03F033A0FC01F83809039800F800000
-1F80EB00074880A66C5CEB800F000F5CEBC01F6C6C48C7FCEBF07C380EFFF8380C1FC000
-1CC9FCA3121EA2121F380FFFFEECFFC06C14F06C14FC4880381F0001003EEB007F4880ED
-1F8048140FA56C141F007C15006C143E6C5C390FC001F83903F007E0C6B51280D91FFCC7
-FC22337EA126>I<EA03F012FFA312071203AEEC1FC0EC7FF09038F1E0FC9038F3807C90
-38F7007E13FE497FA25BA25BB3486CEB7F80B538C7FFFCA326347EB32B>I<EA0780EA0F
-C0EA1FE0A4EA0FC0EA0780C7FCAAEA07E012FFA3120F1207B3A6EA0FF0B5FCA310337EB2
-15>I<EB03C0EB07E0EB0FF0A4EB07E0EB03C090C7FCAAEB03F013FFA313071303B3B012
-38127C00FE13E0130714C0130F007C138038381F00EA1FFCEA07F0144384B217>I<EA03
-F012FFA312071203AF913803FFE0A36E1300EC00F8EC01E05D4A5A020FC7FC141C5C5C14
-F0EBF3F8EBF7FC13FEEBFC7EEBF87F496C7E141F6E7E8114076E7E8114016E7E81486CEB
-FF80B500C313F0A324347EB329>I<EA07E012FFA3120F1207B3B3A7EA0FF0B5FCA31034
-7EB315>I<2703F01FE013FF00FF90267FF80313C0903BF1E07C0F03E0903BF3803E1C01
-F02807F7003F387FD803FE1470496D486C7EA2495CA2495CB3486C496C487EB53BC7FFFE
-3FFFF0A33C217EA041>I<3903F01FC000FFEB7FF09038F1E0FC9038F3807C3907F7007E
-EA03FE497FA25BA25BB3486CEB7F80B538C7FFFCA326217EA02B>I<EB07F0EB3FFE9038
-FC1F803901F007C03903C001E000078048486C7E48C7127CA248147E003E143E007E143F
-A300FE1580A8007E1500A36C147EA26C147C6D13FC6C6C485A00075C3903F007E03900FC
-1F80D93FFEC7FCEB07F021237EA126>I<3903F03F8000FFEBFFE09038F3C0F89038F700
-7ED807FE7F6C48EB1F804914C049130F16E0ED07F0A3ED03F8A9150716F0A216E0150F16
-C06D131F6DEB3F80160001FF13FC9038F381F89038F1FFE0D9F07FC7FC91C8FCAA487EB5
-12C0A325307EA02B>I<903807F00390383FFC07EBFC0F3901F8038F3807E001000F14DF
-48486CB4FC497F123F90C77E5AA25A5AA9127FA36C6C5B121F6D5B000F5B3907E003BF39
-03F0073F3800F81EEB3FF8EB0FE090C7FCAAED7F8091380FFFFCA326307DA029>I<3803
-E07C38FFE1FF9038E38F809038E71FC0EA07EEEA03ECA29038FC0F8049C7FCA35BB2487E
-B512E0A31A217FA01E>I<EBFF06000713CE381F00FE003C133E48131E140E5A1406A27E
-A200FE90C7FC6C7EEA7FFC383FFFC014F0000F7F6C7FC67FEB0FFF1300EC3F8000C0131F
-140F6C1307A37E15006C5B6C130E6C5B38F7807838E1FFE038C07F8019237EA11E>I<13
-30A51370A313F0A21201A212031207381FFFFEB5FCA23803F000AF1403A814073801F806
-A23800FC0EEB7E1CEB1FF8EB07E0182F7FAD1E>I<D803F0133F00FFEB0FFFA30007EB00
-7F000380B35DA35D12016D4813800000903803BFFC90387E073FEB1FFED907F813002622
-7EA02B>I<B5EBFFF0A3D80FF0EB3F800007EC1F000003140E150C6D131C00011418A26C
-6C5BA26D1370017E1360137F6D5BA290381F8180A214C3010F90C7FCA2EB07E6A214FE6D
-5AA26D5AA36D5AA2146024217E9F29>I<B53A1FFF81FFF0A33C07F801FC003F8001F049
-EB1E0000030100141C816C6C017C1318A26D017E1338000002FE1330A290267E01FF5B15
-9F168090263F030F5BA216C0903A1F8607C180A202C613E390260FCC0390C7FCA2D907FC
-13F6ECF80116FE6D486C5AA36D481378A36D48133034217F9F37>I<B53801FFF8A32603
-FE0013806C48EB7C0000001478017E1370017F5B90383F81C090381F8380D90FC3C7FCEB
-07E614FE6D5A6D5A6D7E80805B9038039F809038071FC09038060FE0EB0C0790381C03F0
-496C7E01707FEBF000000180000FECFF8026FFFC0313FCA326207F9F29>I<3A7FFF807F
-F8A33A07F8001FC00003EC0F800001EC070015066C6C5BA26D131C017E1318A26D5BA2EC
-8070011F1360ECC0E0010F5BA2903807E180A214F3010390C7FC14FBEB01FEA26D5AA314
-78A21430A25CA214E05CA2495A1278D8FC03C8FCA21306130EEA701CEA7838EA1FF0EA0F
-C025307F9F29>I<003FB512F0A2EB000F003C14E00038EB1FC00030EB3F800070137F15
-00006013FE495A13035CC6485A495AA2495A495A49C7FC153013FE485A12035B48481370
-485A001F14604913E0485A387F000348130F90B5FCA21C207E9F22>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmtt9 9 51
-/Ff 51 122 df<00101320007C13F838FE01FCAAEAFC00007C13F8A900381370161778AE
-27>34 D<EB01C0EB03E0130F131FEB3FC0EB7F80EBFE00485A5B1203485A5B485AA2485A
-A248C7FCA3127EA45AAC127EA47EA36C7EA26C7EA26C7E7F6C7E12017F6C7EEB7F80EB3F
-C0EB1FE0130F1303EB01C0133A73B327>40 D<127012F812FE7E6C7E6C7EEA0FE06C7E12
-037F6C7E1200137EA27FA2EB1F80A3EB0FC0A4EB07E0ACEB0FC0A4EB1F80A3EB3F00A213
-7EA25B1201485A5B1207485AEA3FC0485A48C7FC5A12F81270133A7AB327>I<007FB512
-F8B612FCA46C14F81E067C9927>45 D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A72
-8927>I<1538157C15FCA2140115F8140315F0140715E0140F15C0141F1580143F1500A2
-5C147E14FE5C13015C13035C13075C130F5CA2131F5C133F91C7FC5B137E13FE5B12015B
-12035BA212075B120F5B121F5B123F90C8FC5A127E12FE5AA25A12781E3A7CB327>I<EB
-07E0EB3FFC497E90B5FC4814803903FC3FC03907F00FE0390FE007F0EBC003391F8001F8
-A248C712FCA2003E147C007E147EA3007C143E00FC143FAC007E147EA46C14FCA2EB8001
-001F14F8EBC003000F14F0EBE0073907F00FE03903FC3FC06CB512806C14006D5A6D5AEB
-07E020307DAE27>I<007FB512FEB7FCA4003F14FEC9FCA6003FB512FEB7FCA46C14FE20
-127D9F27>61 D<EB03F0497EA2497EA4143CEB1F3EA5EB3F3FA3EB3E1FA2017E7FA4496C
-7EA548486C7EA390B5FCA24880A3EBF003A248486C7EA4000F803A7FFC0FFF8000FF15C0
-6D5A497E007F1580222F7EAE27>65 D<387FFFFC14FFB612C06C80813907E00FF81407EC
-01FC6E7EA2157E157F811680151FA316C0150FABED1F80A3153F1600A25D15FEA24A5A4A
-5A140F007FB55A5DB65A6C91C7FC14FC222E7FAD27>68 D<007FB61280B712C0A37E3907
-E0000FA6ED078092C7FCA4EC07804A7EA390B5FCA5EBE00FA36E5A91C8FCA4ED03C0ED07
-E0A7007FB6FCB7FCA36C15C0232E7FAD27>I<007FB61280B712C0A37E3907E0000FA6ED
-078092C7FCA4EC07804A7EA390B5FCA5EBE00FA36E5A91C8FCAC387FFF80B57EA36C5B22
-2E7EAD27>I<903807F03890381FFC7C90387FFFFC90B5FC5A3803FC1F3807F00F380FE0
-07EBC003001F13011380123F90C7FCA2127EA2157892C7FC5AA8EC1FFF4A1380A3007E6D
-1300EC00FCA36C1301A21380121FEBC003120FEBE0073807F00F3803FC1F6CB5FC7EEB7F
-FE90381FFC78D907F0C7FC21307DAE27>I<007FB512E0B612F0A36C14E039001F8000B3
-B2007FB512E0B612F0A36C14E01C2E7BAD27>73 D<387FFFC080B5FC7E5CD803F0C8FCB3
-AAED0780ED0FC0A7007FB6FCA2B7FC7E1680222E7FAD27>76 D<3A7FF003FFE0486C4813
-F0A213FC007F6D13E000079038003E0013DEA313CFA3148013C714C0A213C314E0A213C1
-14F0A3EBC0F8A31478147CA2143C143EA2141E141F140FA3EC07BEA3EC03FEEA7FFCEAFF
-FE1401A26C486C5A242E7FAD27>78 D<EBFFFC0007EBFF80001F14E0A24814F0EBC00F39
-7F8007F8EB0003007E1301A348EB00FCB3A76C1301007E14F8A3007F1303EB8007393FE0
-1FF090B5FC6C14E0A200071480C6EBFC001E307CAE27>I<007FB5FCB612E081816C8039
-07E003FEEC00FF81ED3F80151F16C0150FA6151F1680153FED7F005DEC03FE90B55A5D5D
-5D92C7FC01E0C8FCADEA7FFEB5FCA36C5A222E7FAD27>I<387FFFF0B512FE6E7E816C80
-3907E01FF014076E7E1401811400A514015D14034A5A141F90B55A5D5DA281EBE01F6E7E
-14076E7EA816F0EDF1F8A4397FFE01FBB5EBFFF08016E06C48EB7FC0C8EA1F00252F7FAD
-27>82 D<90387FC0E03901FFF1F0000713FF5A5AEA3FE0EB801F387F000F007E130712FE
-5A1403A3EC01E06C90C7FC127E127FEA3FC013F86CB47E6C13F86C13FE6CEBFF80C614C0
-010F13E0010013F0140FEC07F81403140115FC1400127812FCA46CEB01F8A26C13039038
-8007F09038F01FE090B5FC15C0150000F85B38701FF81E307CAE27>I<007FB61280B712
-C0A439FC03F00FA60078EC0780000091C7FCB3AB90B512C04880A36C5C222E7EAD27>I<
-3A7FFE01FFF8B54813FCA36C486C13F83A07E0001F80B3AB6D133F00031500A26D5B0001
-147E6D13FE6C6C485A90387F87F814FF6D5B010F13C06D5BD901FEC7FC262F80AD27>I<
-3A7FFC03FFE06D5A00FF15F0007F15E0497E3A07E0007E00A46C6C5BA4EBF80100015CA4
-6C6C485AA490387E07E0A56D485AA4011F5B149FA3010F90C7FCA5EB07FEA46D5AA26D5A
-242F7FAD27>I<D87FE0EB7FE0486CEBFFF0A36C48EB7FE0001FC7EA0F80A76C6CEB1F00
-A614F0EB81F83907C3FC3EA4149CEBC79EA30003143CA301E7137CEBEF9FA2140FA20001
-1478A49038FE07F8A300005CA2EBFC0390387801E0242F7FAD27>I<393FFC1FFE387FFE
-3F815D383FFC1F3903F00FE001F85B1201EBFC1F00005CEBFE3F017E90C7FCEB7F7FEB3F
-7E14FE6D5AA26D5AA26D5AA21303130780130F80131F80EB3F7E147F497E017E7F141F01
-FC7F140FD801F87F14071203496C7E120701E07F3A7FFC0FFF8000FF15C06D5A497E007F
-1580222E7EAD27>I<007FB512F8B612FCA46C14F81E067C7E27>95
-D<3803FFC0000F13F04813FC4813FF811380EC1FC0381F000F000480C71207A2EB0FFF13
-7F0003B5FC120F5A383FFC07EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB612806C
-15C07E000313F1C69038807F8022207C9F27>97 D<EA7FE0487EA3127F1203A914FF01F3
-13C090B512F08181EC81FE49C67E49EB3F8049131F16C049130FA216E01507A6150F16C0
-7F151F6DEB3F80157F6DEBFF009038FF83FEECFFFC5D5D01F313C02601E0FEC7FC232E7F
-AD27>I<EB0FFF017F13C048B512E04814F05A380FF807EA1FE0393FC003E09038800080
-48C8FC127EA212FE5AA67E127EA2007F14F0393F8001F813C0381FE003390FF80FF06CB5
-FC6C14E06C14C06C6C1300EB0FF81D207B9F27>I<EC3FF04A7EA3143F1401A9EB0FE1EB
-7FFD48B5FC5A5A380FF83F381FE00F383FC007EB8003EA7F00007E1301A212FE5AA67E00
-7E1303A2127F6C1307EB800F381FE01F380FF03F6CB612C06C15E06C13FD38007FF9D91F
-E013C0232E7EAD27>I<EB0FF8EB3FFE90B51280000314C04814E0390FFC0FF0391FE003
-F8EBC001D83F8013FC48C7FC127E157E12FEB612FEA415FC00FCC8FC7E127E127F6C143C
-6D137E6C7E01F013FE390FFC07FC6CB5FC000114F86C14F0013F13C0903807FE001F207D
-9F27>I<EC1FF0ECFFF84913FC4913FE5BEB0FF014C0011F137CEC8000A6007FB512F0B6
-12F8A36C14F039001F8000B3A4003FB512C04814E0A36C14C01F2E7EAD27>I<153F9039
-1FC0FF80D97FF313C048B612E05A4814EF390FF07F873A1FC01FC3C0EDC000EB800F4848
-6C7EA66C6C485AEBC01FA2390FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA27F6CB5
-FC15E015F84814FE4880EB8001007EC7EA3F80007C140F00FC15C0481407A46C140F007C
-1580007F143F6C6CEB7F009038F807FF6CB55A000714F86C5CC614C0D90FFCC7FC23337E
-A027>I<EA7FE0487EA3127F1203A9147F9038F1FFC001F713F090B5FC8114C1EC01FCEB
-FE005B5BA25BB03A7FFF83FFE0B500C713F0A36C018313E0242E7FAD27>I<130F497E49
-7EA46D5A6DC7FC90C8FCA7383FFF80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E
-1D2F7BAE27>I<143C147E14FFA4147E143C1400A73801FFFE4813FFA37EC7123FB3B014
-7E1238007C13FE38FE01FC1303B512F814F06C13E06C13803807FE0018407CAE27>I<EA
-7FE07F12FF127FA21201A991383FFFC04A13E0A36E13C0913803F8004A5A4A5A4A5A4A5A
-02FFC7FCEBF1FEEBF3FCEBF7F8EBFFFC8080143F496C7E496C7E01F87FEBF0076E7E6E7E
-816E7E157E3A7FFFC1FFF002C313F8B512E36C13C316F0252E80AD27>I<387FFF80B57E
-A37EEA000FB3B2007FB512F8B612FCA36C14F81E2E7CAD27>I<397F07C01F3AFF9FF07F
-C09039FFF9FFE091B57E7E3A0FFC7FF1F89038F03FC001E0138001C01300A3EB803EB03A
-7FF0FFC3FF486C01E3138001F913E701F813E36C4801C313002920819F27>I<387FE07F
-39FFF1FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B5BA25BB03A7FFF83FFE0B5
-00C713F0A36C018313E024207F9F27>I<EB1FE0EB7FF83801FFFE487F481480390FF03F
-C0391FC00FE0393F8007F0EB00034814F8007E1301A248EB00FCA76C1301007E14F8A200
-7F1303393F8007F0A2391FE01FE0390FF03FC06CB512806C14006C5B38007FF8EB1FE01E
-207C9F27>I<387FE0FFD8FFF313C090B512F0816C800003EB81FE49C67E49EB3F804913
-1F16C049130FA216E01507A6150F16C07F151F6DEB3F80157F6DEBFF009038FF83FEECFF
-FC5D5D01F313C0D9F0FEC7FC91C8FCAC387FFF80B57EA36C5B23317F9F27>I<90380FF0
-3C90383FFE7E90B5FC000314FE5A380FFC1F381FE007EBC003383F800148C7FC127EA200
-FE147E5AA67E007E14FEA2007F1301EA3F80EBC003381FE007380FF81F6CB5FC7E6C147E
-38007FFCEB0FF090C7FCAC91381FFFF8A24A13FC6E13F8A226317E9F27>I<397FFC03FC
-39FFFE0FFF023F13804A13C0007F90B5FC39007FFE1F14F89138F00F809138E002004AC7
-FC5CA291C8FCA2137EAD007FB57EB67EA36C5C22207E9F27>I<9038FFF3800007EBFFC0
-121F5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F8013FC383FFFF06C13FC000713FF
-00011480D8000F13C09038003FE014070078EB03F000FC1301A27E14036CEB07E0EBE01F
-90B512C01580150000FB13FC38707FF01C207B9F27>I<133C137EA8007FB512F0B612F8
-A36C14F0D8007EC7FCAE1518157EA415FE6D13FC1483ECFFF86D13F06D13E0010313C001
-0013001F297EA827>I<397FE01FF8486C487EA3007F131F00031300B21401A21403EBFC
-0F6CB612E016F07EEB3FFE90390FF87FE024207F9F27>I<3A7FFC0FFF80486C4813C0A3
-6C486C13803A07C000F800EBE00100035CA2EBF00300015CA2EBF80700005CA390387C0F
-80A36D48C7FCA3EB3F3FEB1F3EA214FE6D5AA36D5AA26D5A22207E9F27>I<3A7FFE07FF
-E000FF15F06D5A497E007F15E03A0F80001F00A36D5B0007143EA414F0EBC1F83903E3FC
-7CA4EBE79EA200011478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E024207F9F27>
-I<393FFC1FFF486C5A168016006C487E3901F807E06C6C485A4A5A017E90C7FC6D5AEB1F
-7E5C6D5A13076D5A5C80497E130F497E143EEB3E3FEB7E1F90387C0F8001F87F00016D7E
-3803F0033A7FFE1FFF80A2B54813C06C486C1380A222207E9F27>I<3A7FFC0FFF80486C
-4813C0A36C486C13803A07E000F800000313015D13F00001130301F85B1200A26D485A13
-7CA290387E0F80133EA2011F90C7FC5CA2130F149E14BE130714FC1303A25C1301A25CA2
-13035CA213075C1208EA3E0F007F5B131FD87E7FC8FCEA7FFE6C5A5B6C5AEA07C022317E
-9F27>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmtt12 13.14 5
-/Fg 5 121 df<EC3FFF49B512E0010714F8011F8049805B90B7FC48EBE001481300485A
-EA0FF8496D5A4848147C93C7FC485A5B127F90CAFCA35A5AA97E7EA27F123F6D141F6DEC
-3F80121F6C7E01FC147F6C6CECFF006C6C6C5A6C9038F00FFE91B55A6C6C5C6D5C6D5C01
-071480010149C7FC9038003FF0293278B038>99 D<EC3FE0903801FFFC010713FF011F14
-C04980498090B67E489038E03FFC4890380007FE48481301D80FF86D7E49804848158049
-143F003F16C049141F127F90C8FC17E0160F5A90B7FCA617C048CAFC7E7EA27FA26C7EEE
-07C06C6CEC0FE07F6C7ED807FE141F6DEC3FC06C01C013FF6CD9FC0713806C90B612006D
-5C6D5C010F5C010314E001001480DA1FFCC7FC2B327AB038>101
-D<ED3FC03A3FFE01FFF8267FFF0713FEB5001F7F4A804A806C90B67E6C02C07F3B007FFE
-001FF802F86D7E4A13034A6D7E5C707E4A80188091C8123FA318C0171FA9173F6E1580A2
-177FA26EECFF00A26E495A6E13034C5A6E495A02FE133F6E6CB45A92B55A6E5C6E5C6E91
-C7FC6E13FC020313F09138007F8092C9FCB0383FFFFE487FB67EA36C91C9FC6C5B32487F
-AF38>112 D<EB01E0497E1307AB003FB712804816C0B8FCA46C1680260007F0C8FCB3A4
-EE03E0EE07F0A66E130F17E06D6C131F6EEB3FC0903901FF81FF92B512806D15006E5B6E
-5B6E13F002075B020190C7FC2C3D7DBB38>116 D<3B3FFFE007FFFC486D487FB56C487F
-A36C496C5B6C496C5B28007F8000FEC7FC013F495A6D6C485A6D6C485AEB07F04B5A6D6C
-485AD901FC5B903800FE3F4BC8FCEC7FFE6E5A141F6E5A5D6E5A814A7E141F4A7E157EEC
-7E7F4A7E01016D7E02F87F49486C7E0107130749486C7E02C07F011F6D7E49486C7E49C7
-FC167F277FFFE003B5FCB56C481480A56C496C1400312F7DAE38>120
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmb10 10.95 45
-/Fh 45 121 df<147814F81301EB03F0EB07E0EB0FC0A2EB1F80133FEB7F00A213FEA248
-5A1203A25B1207A2485AA3121F5BA2123FA4485AA612FFB3A2127FA66C7EA4121FA27F12
-0FA36C7EA212037FA212016C7EA2137FA2EB3F80131FEB0FC0A2EB07E0EB03F0EB01F813
-001478155A78C323>40 D<127012F87E127E7E6C7EA26C7E7F6C7EA26C7EA26C7E7FA212
-007FA2EB7F80A314C0133FA214E0A4EB1FF0A614F8B3A214F0A6EB3FE0A414C0A2137F14
-80A3EBFF00A25B1201A25B485AA2485AA2485A5B485AA248C7FC127E5A5A1270155A7BC3
-23>I<EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA313FEA3127F123F121FEA0FDEEA001EA213
-3E133CA2137CA2137813F813F01201EA03E0EA07C0A2EA0F80EA1F00121E120C0F207B8D
-19>44 D<EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA6EA7FF8EA3FF0EA1FE0EA0FC00E0E7B8D
-19>46 D<EB01FE90380FFFC0013F13F090B512FC48EB87FE3903FE01FF48486C1380A248
-48EB7FC0001F15E049133FA2003F15F0A3007F15F8A500FF15FCB3A3007F15F8A6003F15
-F0A36C6CEB7FE0A2000F15C06D13FF000715806C6C4813003901FF87FE6CEBFFFC013F13
-F06D5BD901FEC7FC263D7DBB2D>48 D<143C147CEB01FC1307131FEA03FFB5FCA4EAFC1F
-1200B3B3A8007FB6FCA5203C7ABB2D>I<EB0FFC90387FFF8048B512E04814F84880390F
-F07FFE391F801FFF48486C1380387FC00701E014C0486C6C13E013F88016F0A4EA7FF0EA
-3FE0EA1FC0EA0700C7FC16E05CA216C04A1380A24A13005D4A5A5D4A5A5D4A5A4A5A4990
-C7FC5CEB03F8903907F001F0EB0FE014C090391F8003E0EB3F00137E5B491307485A48B6
-FC4815C05AA25A5A5AB7FC1680A4243C7CBB2D>I<EB0FFC90383FFFC090B512F0488039
-03F83FFC3907E00FFED80FC07F486C6C138013F801FC14C0123F13FEA5EA1FFC1680EA0F
-F8D803E01400C75A5D5D4A5A5DEC7FE090381FFFC092C7FC15C015F09038003FF8EC0FFE
-816E1380A216C06E13E0A316F0EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA416E0A2495A007F
-15C013F0263FC00F13801600391FF83FFE6CB55A6C5C000114E06C6C1380D90FFCC7FC24
-3D7CBB2D>I<000E1407D80F80133F9038F801FF90B6FC5D5DA25D5D5D158092C7FC14FC
-14F00180C8FCA9EB87FE90389FFFC090B512F0819038FC0FFC9038F007FE9038C003FF01
-80148016C0497EC714E0A416F0A21207EA1FC0EA3FE0EA7FF012FF13F8A316E013F0A26C
-484813C01380D87E0014806C491300391FC00FFE390FF03FFC6CB55A6C5C6C14C06C91C7
-FCEB1FF8243D7CBB2D>53 D<EC3FE0903801FFF801077F011F7F90383FF07F90397FC01F
-809038FF807F48EB00FF484913C048485AA2EA0FFCA2121FA2003F6D1380496C1300157E
-007F91C7FCA314309038F9FF80D8FFFB13E090B512F881EC07FE496C7E496C1380A216C0
-A201F814E0A316F0A6127FA5123F16E0A2121F16C0EA0FFC168000075B01FE14003903FF
-0FFE6CEBFFFC6C5C013F5B6D13C0D903FEC7FC243D7CBB2D>I<EB07FE90381FFFC0017F
-13F090B57E3901FE0FFC3903F803FE48486C7E000F6D1380A2485AED7FC0123FA37FA27F
-7F6DEBFF806D7E6E13006C13F1ECFBFE6CEBFFFC5D6C14E0A26C14F86C806C8081481580
-5AD807FB14C0EA0FF048486C13E0003F131F497E007F010313F08000FF7F49137F153FA2
-151FA416E06C7E153F6D14C0003F147F6D14803A1FF801FF00390FFE07FE6CB55A6C5CC6
-5C013F13C0D907FEC7FC243D7CBB2D>56 D<EB07FE90383FFF8090B512E0488048EB0FF8
-48486C7E48486C7E001F80497E003F1580A2127F16C0A212FF16E0A516F0A6127FA3003F
-5BA2121FA26C6C5A6C6C5A6CB6FC7E38007FFDD91FF913E0EB00C11401A3D807E014C0EA
-0FF0486C5AD83FFC1480A316004A5AA249485AD81FF05B9038E03FF0000F495A90B55A6C
-5C6C91C7FCC613FCEB3FE0243D7CBB2D>I<ED07804B7E4B7EA34B7EA34B7EA34B7EA34A
-7FA34A7FA24A8015CFA2020F801587A2021F801503A2023F80EC3E01A2027E80EC7C00A2
-4A6D7EA20101814A133FA20103814A7FA249B77EA34982A29138800007011F8291C77EA2
-496E7F133EA2496E7FA201FC8249157FB500F0013FB512FCA53E3F7DBE45>65
-D<B712FEEEFFE017F817FE83C69026F0001F1380040713C07013E0A27013F0A28218F8A7
-18F05EA218E05E18C04C1380041F1300EE7FFC91B612F017C017F817FE913AF00007FF80
-7013C07013E07013F018F8177F18FCA318FEA3173F177FA418FCA217FF18F85E18F04C13
-E0160FB912C018005F17F01780373E7CBD41>I<B712FCEEFFC017F017FC17FFC69026F0
-003F7F04077F040113F082717E717E717E170F84831980A219C083A219E0A519F0A483A5
-5FA419E0A519C0A25F1980A24D1300A24D5A4D5A177F4D5A4C5B04075B043F5BB9C7FC5F
-17F817C004FCC8FC3C3E7CBD46>68 D<B812FEA483C69038F8003F16071601828383A2EF
-1F80A3170FED01F0A3EF07C0A3150394C7FCA21507151F91B5FCA5ECF81F1507150318F8
-A21501EF01F0A592C71203A218E0A21707A2170F171F18C0173F17FF1603161FB9FCA218
-80A3353D7CBC3C>I<B612F8A5C6EBF800B3B3B0B612F8A51D3E7DBD24>73
-D<B600F890B512F8A5C601F8C73803F8004D5A4D5A4D5A4D5A4DC7FC17FE4C5A4C5A4C5A
-4C5A4C5A4C5A4CC8FC16FE4B5A4B5A4B5A4B5A151F4B7E4B7EA24B7E14F902FB7F91B6FC
-15DF039F7F158F030F7F4A6C7F4A7E02F880816F7F83167F83707E82848284707F828482
-84707F177F84B6D8F80FB512FCA53E3E7CBD47>75 D<B500FC93B512F86E5DA36E5DC6F1
-F800A26FEC07BFA301FD6DEC0F3FA201FC6D141EA36E6C143CA36E6C1478A36E6C14F0A2
-6E6CEB01E0A36E6CEB03C0A36E9038800780A36E9038C00F00A26EEBE01EA36F6C5AA36F
-6C5AA36F6C5AA26FB45AA36F5BA36F5BA36F90C7FCA26F5AB500FC033FB512F8A2167CA2
-16384D3E7CBD56>77 D<B712F816FF17E08317FCC6D9F0007FEE1FFF7013808218C08218
-E0A318F0A818E0A318C05E18804C13005EEEFFFE91B612F85F17C04CC7FC02F8C9FCB3A4
-B612F8A5343E7CBD3E>80 D<B600F890B512F8A5C601F8C8EAF800B3B3A5017F150160A2
-80013F1503606D6C1407010F4B5A6E4A5A6D6D133F6D6D01FFC7FC6D9038F807FE6D6CB5
-5A6E5C020F14E0020314809126003FFCC8FC3D3F7CBD46>85 D<B600F0010FB5FCA5C601
-F8C8EA1F00A26E5D017F163EA26E157E013F167C6E15FC6D5EA26F13016D5EA26D6D495A
-A26F13076D5EA26F130F6D5E816D4BC7FCA26F5B027F143EA26F137E023F147C6F13FC6E
-5CA216816E5CA216C36E5C16E76E5CA216FF6E5CA36E91C8FCA26F5AA36F5AA36F5AA26F
-5AA36F5AA2403F7EBD45>I<B600E0B6D8F007B51280A500019026F0000101F8C73807C0
-0070160F6C6D6184177F6D6C4EC7FC84173F6D6C183E177F846E187E6D92B5147C856F17
-FC6D4A5E05F77F03C016016D02035E05E313E003E016036D02075E05C113F003F016076D
-61DC0F8013F803F8160F6D6193391F007FFC03FC161F027F95C8FC4C14FE043E013F5BDA
-3FFE163E047E14FF047C6D137EDA1FFF167C04FC15FC4C7F6E5FA24C7F6E5FA24C7F6E5F
-A24C7F6E5FA24C7F6E5FA293C8127FA26F93C9FC037E81033E153E593F7EBD5E>I<EB0F
-FE90387FFFC048B512F04814FC3907FC0FFE48486C7E6D6C7F486C7E82A26E7FA36C5A6C
-5AEA01E0C8FC5C49B5FC131F90B6FC000313F84813C0481300EA1FFC485A127F5B12FF5B
-A45CA26C6C5A16F83B3FF807BFFF80391FFC1F3F390FFFFE1F6C497E0001EBF80326003F
-E0C8FC292B7EA92C>97 D<13FFB5FCA512077EAF4AB4FC020F13E0023F13F891B57E9138
-FE07FFDAF8011380DAE00013C05C4AEB7FE017F0A3EE3FF8A317FCAC17F8A3EE7FF0A217
-E06E13FF17C06E481380DAF80313009138FE0FFE9039FC7FFFFC496C13F0496C13C0C7D8
-03FEC7FC2E407FBE33>I<EB03FF011F13E0017F13F890B57E48EB83FE3903FE01FF0007
-5B4848481380121F13F8123FA2127F496C13006E5AEC007800FF91C7FCAC127FA27F003F
-EC07C0A26C6C130F16806C6C131F000715006C6C137F6CEBC1FE6CEBFFFC6D13F0011F5B
-010390C7FC222B7DA928>I<16FF92B5FCA5150781AFEB01FF011F13E3017F13FB90B7FC
-4813C148EB003F48487F48487F001F805B123FA2485AA312FFAC127FA36C7EA3001F5C6C
-6C5B00074A13806D4913FC2603FF83B5FCC690B6FC6D13F7011F13C7903A03FE07FC002E
-407DBE33>I<49B47E010F13F0013F7F90B512FE48EBC3FF48010013804848EB7FC04848
-133F001F15E05B003FEC1FF0A2485A150F16F8A212FFA290B6FCA401F0C8FCA5127FA37F
-003F15F8A26C6C1301000F15F06D13036C6CEB07E06C9038800FC06C9038F07F806C6CB5
-12006D5B010F13F8010013C0252B7EA92A>I<EC1FF8ECFFFE01077F491480D91FF813C0
-D93FE013E0EB7FC1EBFF81481301A348486C13C0ED7F80ED3F0092C7FCAAB6FCA5000390
-C8FCB3ACB6FCA523407EBF1C>I<D907FE13FC90393FFFC3FE90B5EAF7FF4891B5128048
-130F3907FC03FE3A0FF801FF7F001FEDFF00496C13BE1680003F81A7001F5DA26D5A000F
-92C7FC6C6C485A3903FF0FFCECFFF8485CD80F3F13C0D907FEC8FC90CAFC5AA27FA213E0
-90B512F015FF6C15C0826C816C8182120F4881393FE0003FD87F80EB07FF150148C7FC81
-A56D5B007F5D6D13036C6C495AD81FF8EB1FF86CB4EBFFF06C90B55A000115806C6C49C7
-FC010713E0293D7EA82D>I<13FFB5FCA512077EAFED7FE0913801FFF802077F4A7F9138
-1FC3FFDA3E031380147CEC780102F014C014E0A214C0A31480B3A4B5D8FE1F13FFA5303F
-7EBE33>I<EA01F8487E487E487E481380A66C13006C5A6C5A6C5AC8FCA913FFB5FCA512
-077EB3ABB512F8A515407EBF19>I<EC1F80EC3FC0EC7FE0ECFFF04913F8A66D13F0EC7F
-E0EC3FC0EC1F8091C7FCA9EC07F8EB0FFFA5EB003F141FB3B3A2EA1F80EA3FC0EA7FE0EA
-FFF015F0143FA2EC7FE015C0397FE0FF80D83FC113006CB45A6C5B6C13F0C613801D5387
-BF1C>I<13FFB5FCA512077EB092B512E0A592380FE0004B5A4B5A4BC7FC15FE4A5A4A5A
-4A5A4A5A4A5A143FECFFE0A28181A2ECDFFCEC8FFE140F6E7E6E7FA26E7F6E7FA26F7E6F
-7EA26F7E6F7EB539FC7FFFF8A52D3F7FBE30>I<13FFB5FCA512077EB3B3AFB512FCA516
-3F7EBE19>I<01FFD97FE0EB3FF0B52601FFF8EBFFFC0207D9FC037F4A6D487F91281FC3
-FF0FE17FDA3E03D99F017F0007017C14BE6CD97801EBBC0002F002F88002E05CA202C05C
-A302805CB3A4B5D8FE1FD9FF0FEBFF80A549297EA84C>I<01FFEB7FE0B53801FFF80207
-7F4A7F91381FC3FFDA3E0313800007137C6CEB780102F014C014E0A214C0A31480B3A4B5
-D8FE1F13FFA530297EA833>I<49B47E010F13F0013F13FC90B6FC48018113803A03FE00
-7FC04848EB3FE0000F15F049131F001F15F8A24848EB0FFCA2007F15FEA400FF15FFAB00
-7F15FEA3003F15FC6D131F001F15F8A26C6CEB3FF0000715E06C6CEB7FC03A01FF81FF80
-6C90B51200013F13FC010F13F001011380282B7EA92D>I<9038FF01FFB5000F13E0023F
-13F891B57E9138FE0FFFDAF80313800003D9E00113C014C04A6C13E017F0167FA217F8A2
-163F17FCACEE7FF8A317F016FF17E0804B13C06E481380DAF80713009138FE0FFE91B55A
-02BF13F0029F13C0DA83FEC7FC0280C8FCACB512FEA52E3B7FA833>I<3901FE07F800FF
-EB0FFE91383FFF804A13C0EC7C7F9138F8FFE03807FFF06C5B5CA2ED7FC09138803F80ED
-1F0092C7FCA291C8FCB3A3B6FCA523297FA827>114 D<90387FE1E03803FFFB4813FF5A
-381FE07F383F801F387F000F007E130712FE1403A27EA26DC7FC13F013FF6C13F014FC6C
-13FF15806C14C07E6C14E0000114F06C7E010313F8EB003F140F0078130712F814037EA3
-6C14F06C1307A29038800FE09038F03FC090B51280150000F813FC38E03FF01D2B7DA924
->I<131FA65BA55BA25BA25A5A5A001FEBFFC0B6FCA4000790C7FCB3EC03E0A97EEC87C0
-A26CEBCF806C13FF6D1300EB1FFEEB07F81B3B7EB923>I<D9FF80EB7FC0B5EB7FFFA500
-0714036C80B3A55DA35D7E4B13E0DAC01E13FF6CEBE07E6DB45A6D5B010F13E001010180
-1300302A7EA833>I<B500E1B53887FFF8A50007903B801FF0003F006C6F133E150F02C0
-157E6C4A6C137CA26C01E05D4B7EA2D97FF04A5AED7FFF157DD93FF84A5A03FD138303F8
-1387D91FFCECC7C014FD9238F07FCFD90FFFECEF80A29238E03FFF6D93C7FCA24B7E6D5D
-A2ED800F6D5DA2ED00076D5DA24A1303027E5C027C13013D287EA742>119
-D<3B7FFFFC7FFFE0A5C69039E007E0004B5A90387FF01FD93FF85B4BC7FC90381FFC7EEB
-0FFE5D6D6C5A7F5D6D5B7FA26E7E143F814A7E14FF81497FEB03F301078002E17FEB0FC0
-49487F6F7E90383F003F017E806F7EB500E0B512F8A52D287FA730>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmbx12 13.14 37
-/Fi 37 122 df<923807FFE092B512FC020714FF021F81027F9038007FC0902601FFF0EB
-0FE04901C0497E4990C7487ED90FFC147F011F824A14FF495AA2137F5CA2715A715A715A
-EF078094C8FCA7EF07FCB9FCA526007FF0C7123F171FB3B3A2003FB5D8E00FB512F8A53D
-4D7ECC44>12 D<EA07E0EA1FF8EA3FFCEA7FFEA2B5FCA6EA7FFEA2EA3FFCEA1FF8EA07E0
-1010778F22>46 D<EC0FFC91B512C0010714F8498090393FFC0FFF90267FE0017F49486C
-7F48496D7E4890C76C7E49141F000782000F8249140F001F82A3003F824980A2007F1780
-A600FF17C0B3A4007F1780A6003F17006D5CA2001F5EA3000F5E6D141F00075E6D143F6C
-5E6C6D495A6C6D495A90267FF0035B90263FFC0F90C7FC010FB512FC6D5C010014C0DA0F
-FCC8FC32487BC63D>48 D<15F014011407141F147FEB03FF137FB6FCA313FC1380C7FCB3
-B3B2007FB712E0A52B4777C63D>I<ECFFF80107EBFF80013F14F090B612FC4881480101
-EBFF802707F8003F13C0D80FE0010F13E0D81F806D13F0003F80D87FF06D13F86D15FC6D
-7F00FF16FE6D147FA217FF82A36C5A6C5A6C5A6C5AC95A17FEA3EEFFFCA24B13F817F05D
-17E04B13C017804B13004B5A4B5A5EED7FE04B5A4A5B4A90C7FCEC07FC4A5A4A5A4B131F
-EC3F804AC7FC14FE4948143E495AEB07E0495A4948147E49C8FC017E15FE90B7FC4816FC
-5A5A5A5A5A5AB8FC17F8A430477AC63D>I<EC3FFE0103B512E0010F14FC013F14FF9026
-7FE01F7F9026FF000713E0D801FC6D7FD803F07F486C6D7FD80FFE817F486D80167FA380
-5C16FF7E91C75B6C5A6C5AD80020495B90C75C5D5F4B5B5F031F90C7FCED3FFC4AB45A49
-B512E0168016E016FC90C7EA3FFF030713C06F7F6F7F6F7F83707E83A2701380A318C0EA
-07E0EA1FF8487E487EA2B5FCA31880A25E491600127F494A5A6C485D01E05B001F4A5BD8
-0FFC495B2707FFC03F13C06C90B65AC64BC7FC013F14F8010714E09026007FFEC8FC3248
-7BC63D>I<EE07E0160FA2161F163F167F16FFA25D5D5DA25D5D5DA2157D15FDEC01F915
-F1EC03E11407EC0FC1EC1F811501143F147E14FC14F8EB01F01303EB07E014C0EB0F8013
-1FEB3F00133E5B13FC485A485A5B1207485A485A90C7FC123E127E5AB912FCA5C80003EB
-E000AD023FB612FCA536487DC73D>I<D8038015E001E0140301FC143F9039FFE003FF91
-B612C017801700A25E5E16F05E5E93C7FC15FC15F001E790C8FC01E0C9FCAAEC1FFC01E1
-B512C001E714F001EF14FC9039FFE01FFFDA0007138001FC6D13C001F06D13E04915F049
-7F17F8C913FC167F17FEA417FFA3EA0FC0EA3FF0487EA2487EA317FEA34914FF6C4815FC
-5B018015F86CC74813F07F6C6C4913E0D80FF04913C0D807FC011F13806CB46CB512006C
-90B512FC6C5D013F14C0010F91C7FC010113F030487AC63D>I<121F7F7F13FE90B812E0
-A45A18C0188018005F5FA25F485E90C8EA07E0007E4B5A5F007C151F4CC7FC167E5E485D
-15014B5A4B5AC8485A4B5AA24BC8FC157EA25D1401A24A5A1407A24A5AA2141FA24A5AA2
-147FA314FFA3495BA45BA55BAA6D5BA26D90C9FCEB007C334B79C93D>55
-D<93261FFF80EB01C00307B500F81303033F02FE13074AB7EAC00F0207EEE03F021F903A
-FE007FF87F027F01E0903807FCFF91B5C70001B5FC010301FC6E7E4901F0151F4901C081
-4949814990C97E494882494882485B48197F4A173F5A4A171F5A5C48190FA2485B1A07A2
-5AA297C7FC91CDFCA2B5FCAD7EA280A2F207C07EA36C7FA26C190F6E18807E6E171F6C1A
-006E5F6C193E6C6D177E6D6C5F6D6C4C5A6D6D15036D6D4B5A6D01F04B5A6D01FCED3FC0
-010001FFEDFF806E01E0D903FEC7FC021F01FEEB3FFC020790B612F002015EDA003F92C8
-FC030714FCDB001F13804A4D79CB59>67 D<B912F0F0FF8019F019FC19FFD8001F902680
-000114C0DD001F7F060713F806017F726C7E737E737F737F737F8587737F8587A2747EA3
-8786A21C80A51CC0A586A462A51C80A51C00A26263A2631AFF636163614F5B634F5B073F
-90C7FC4F5A4F5A06035B061F5B4DB512C0BBC8FC19FC19F0198006F0C9FC524B7CCA5E>
-I<BBFCA41A80D8001F01C0C7FC181F18038484197F193F191F1AC0190FA31907A4171FF1
-03E0A496C7FCA25FA25F5F5E160792B6FCA5EDC0071601828383A283A794C9FCB1B8FCA5
-434A7CC94D>70 D<B712FEA5D8000FEBE000B3B3B3ABB712FEA5274B7DCA2E>73
-D<B8FCA5D8001F01C0C9FCB3B3A4193EA4197E197CA519FCA31801A2F003F8A21807180F
-181F183F187FEF01FF1707173FBA12F0A53F4B7BCA4A>76 D<B600E04DB612806F5FA26F
-5FA2D8001F09FCC7FC6FEF0F7FA2DABFFE171EA2DA9FFF173CA3028F6D1678A202876D16
-F0A202836DED01E0A302816DED03C0A202806DED0780A26F6CED0F00A36F6C151EA26F6C
-5DA26F6D5CA26F6D5CA36F6D495AA26F6D495AA26F6D495AA3706C49C7FCA2706C131EA2
-706C5BA3706D5AA2706D5AA270EBE1E0A370EBF3C0A270EBFF80A27190C8FCA2715AA371
-5AA2715A497EB600F06D480103B71280A3715A715A694B7BCA74>I<B912C018FCF0FF80
-19F085D8001F902680000713FE05007F063F1380060F13C07213E01AF0841AF8A27213FC
-A31AFEA81AFCA34E13F8A21AF0601AE04E13C0063F138095B51200050713FC92B75A19E0
-96C7FC18F803C0CAFCB3ABB712FCA5474B7BCA54>80 D<B9FC18F8F0FF8019E019F8D800
-0F9026C0000713FE9439007FFF80061F7F727F727F727F84868684A286A862A24E5BA262
-4E5B4E5B4E5B4E5B95B5C8FC050713FC92B712F0198006FCC9FC18FF9226C0003F13C005
-0713F0717F717F717F187F85727FA28486A786A71C3E86A28474137E72157C726D13FCB7
-00FC6D9038FE01F872EBFF8373EBFFF0071F14E007031480CD383FFE00574C7CCA5C>82
-D<DA7FFCEB01C00103B5EAC003011FECF00749ECFC0F90B7121F48D9E00F13BF4890C713
-FFD807FC141F4848804848140382484880177F485A173F171F12FFA2170F7FA217077F7F
-7F6D92C7FC6D7E6C13F014FF15F86CECFF8016F86C15FF6C16C0836C826C826C826C8201
-3F816D1680010716C01300020F15E01400030714F0ED007F160F16037013F882177F1278
-00F8163FA3171FA27E18F0A27EA26CEE3FE07F18C001E0157F6DEDFF8001FC160001FF14
-0302E0EB0FFED97FFEEB3FFC486CB612F0D8FC0F5DD8F803158048C66C49C7FC48010313
-F0354D79CB44>I<B700F8023FB512F8A5D8001F01C0C9380FE000745AB3B3AD6D180F63
-811A1F6D96C7FC626D7F1A7E6D7F6D606E6C4B5A6E6CED07F06E6C4B5A6E01C0EC3FC06E
-01F049B45A020101FF011F90C8FC6E91B55A033F15F8030715E0030092C9FC040713F055
-4C7CCA5E>85 D<B700F00203B6FCA5D8001F01E0C93803FC00745A6D61811A036D6D5F1A
-076D6D5F1A0F6D616F161FA26D6D94C7FC626E6D153E1A7E6E177C7015FC6E5F8219016E
-6D5D19036E5F7014076E5F82190F6E6D5D191F6E6D92C8FC616F153E83197E6F6D137C19
-FC6F6D5B18016F5DEFF003A26F01F85B18076F01FC5B180F6F5DEFFE1F6F92C9FC17FF60
-7013BE18FE705BA2705BA3705BA2705BA2705BA3705BA27090CAFCA2177EA2584C7ECA5D
->I<ECFFFC010FEBFFC0017F14F090B612FC489038803FFE3B03FC0007FF80486C6D7F6D
-7F486D6C7F83167F83A2707E6C90C7FC6C5A6C5AC9FCA5ED1FFF021FB5FC49B6FC130F01
-3FEBC03F9038FFFE00000313F04813C04890C7FC485A485AA2485AA2485AA4167FA26D14
-FF007F15EF6D01017F6C6C903907CFFF806C6CD90F8F13FE6C9038E07F076C9038FFFE03
-00014A7ED8003F9038F0007F0103018090C7FC37347CB23C>97 D<EB7FC0B5FCA512037E
-B3ED07FF037F13E002C1B512FC02C714FF9126CFF80F7F9126DFC0017F02FFC77F4AEC3F
-F002F8814A6E7E717E4A81831980A37113C0A319E0AC19C0A35F1980A219005F606E141F
-6E5D4D5A6E4A5A02BF4A5A91261FC0035B9027FE0FF01F5B496CB548C7FCD9F80114F849
-6C6C13E0C8D80FFEC8FC3B4D7CCB44>I<91380FFF8091B512F8010314FF010F15804948
-C613C0D97FF8EB1FE0D9FFE0EB3FF04849137F4849EBFFF84890C7FCA2485A121FA24848
-EC7FF0EE3FE0EE1FC0007F92C7FC5BA212FFAC127FA27FA2123FA26C6C153EA26C6C157E
-177C6C6D14FC6C6D14F86C6D13036C6DEB07F0D97FFCEB1FE06DB4EBFFC0010F90B51200
-01035C010014F0020F13802F347CB237>I<EF1FF0EE3FFFA51600177FB3EC0FFF91B512
-E0010314F8010F14FC013FEB01FF903A7FF8003FFFD9FFE0130F48497F48497F4890C77E
-48815B121F5B123FA2127F5BA312FFAC127FA36C7EA3121F6D5C120F6C6C5C6C6D5B6C5D
-6C01E0013F7F6D6C49EBFFE090393FFE03FE6DB512F801075C0100148091261FFC00EBC0
-003B4D7CCB44>I<EC0FFF91B512F0010314FC010F14FF90263FFE077F90267FF0007F49
-486D7E4801806D7E486F7E4890C7120F484881707E121F491403003F82A2127F5B701380
-A212FFA390B8FCA401F8CAFCA5127FA27FA2123FA26C6CED0F80A26C6C151F6C17006E5C
-6C6D147E6C6D5C6C6D495AD93FFCEB07F0903A1FFF803FE0010790B55A010192C7FC6D6C
-13FC020713C031347DB238>I<DA7FFCEB0FE00103B538807FF8010F9138E1FFFC013F02
-FB13FE903A7FF01FFFF39026FFC007138348D90001130348168348486DEBC1FCEFC0F800
-0FEEE00049147F001F82A9000F5E6D14FF00075EA26C6C495B6C93C7FC6C9038C007FE91
-38F01FFC4890B55A01EF14E0D803C314809026C07FFCC8FC000790CAFCA47FA27F13FC90
-B612FCEEFFC06C16F817FE6C8218806C17C06D16E00003B812F0120FD81FFCC7000F13F8
-D83FF0140049153F4848ED1FFC00FF160F491507A56D150F007F17F86D151F6C6CED3FF0
-6C6CED7FE0D80FFE913801FFC06C6C6C010713806C01F8017F1300C690B612FC013F15F0
-01071580D9003F01F0C7FC37497DB13D>103 D<13FCEA03FF487F487FA2487FA66C5BA2
-6C5B6C90C7FCEA00FC90C8FCABEB7FC0B5FCA512037EB3B3A2B61280A5194D7BCC22>
-105 D<EB7FC0B5FCA512037EB3B3B3AAB61280A5194C7BCB22>108
-D<90287FC001FFC0EC7FF0B5010F01FC0103B5FC033F6D010F804B6D4980DBFE07902680
-3F817F9126C1F801903AC07E007FF00003D9C3E0DAE0F8806C9026C78000D9F1E06D7E02
-CFC7EBF3C002DEEDF780DD7FFF6E7E02FC93C7FC4A5DA24A5DA34A5DB3AAB6D8C03FB5D8
-F00FB512FCA55E327BB167>I<903A7FC001FFC0B5010F13F8033F7F4B13FFDBFE077F91
-38C1F00300039026C3E0017F6CD9C78080ECCF0014DE02DC6D7F14FC5CA25CA35CB3AAB6
-D8C07FEBFFE0A53B327BB144>I<913807FF80027F13F80103B6FC010F15C090261FFE01
-7F903A7FF0003FF849486D7E480180EB07FE4890C76C7E4817804980000F17C048486E13
-E0A2003F17F0A249157F007F17F8A400FF17FCAB007F17F8A46C6CEDFFF0A2001F17E0A2
-6C6C4A13C0A26C6C4A13806C6D4913006C5E6C01E0EB1FFC6D6C495A903A3FFE01FFF001
-0FB612C0010392C7FCD9007F13F80207138036347DB23D>I<90397FC007FFB5017F13E0
-02C1B512FC02C714FF9126CFF80F7F9126DFC0037F000301FFC77F6C496E7E02F8814A6E
-7E717E4A81831980A28319C0A37113E0AC19C05FA319805F19005F606E143F6E5D4D5A6E
-4A5A02FF495BDBC0075B9126EFF01F5B02E7B548C7FC02E114F8DAE07F13E0DB0FFEC8FC
-92CAFCAFB612C0A53B477CB144>I<9039FF803FE0B5EBFFF8028113FE02837FDA87E113
-80EC8F830003D99F0713C06C139E14BCA214F8A24A6C13806F13006F5A4A90C7FCA45CB3
-A8B612E0A52A327CB132>114 D<903907FF8070017FEBF1F048B6FC1207380FFC01391F
-E0003F4848130F491307127F90C71203A2481401A27FA27F01F090C7FC13FCEBFFC06C13
-FEECFFE06C14FC6C806CECFF806C15C06C15E06C15F06C7E011F14F8010114FCEB000FEC
-007FED1FFE0078140F00F8140715037E1501A27E16FC7E15036D14F86D13076D14F001F8
-EB1FE001FFEBFFC04890B51280486C1400D8F81F13FCD8E00313C027347CB230>I<14F8
-A51301A41303A21307A2130FA2131F133F137F13FF1203000F90B512F0B7FCA426007FF8
-C7FCB3A7167CAA013F14F880A290391FFE01F0010F1303903907FF87E06DEBFFC06D1480
-6D6C1300EC0FFC26467EC430>I<D97FE0EC3FF0B5EC7FFFA5000315016C81B3AC5EA25E
-A25E7E6EEB0F7F017F021E7F6E017CEBFFE090393FFE01F86DB512F0010714E0010114C0
-9027003FFE00EBC0003B337BB144>I<007FB500C090387FFFE0A5C601F0C73803F8006E
-5D017F5E6E1407013F5E80170F011F5E6E141F6D93C7FC6F5B6D153E6F137E6D157C6F13
-FCA26D6D5B16016D5DEDF803027F5CEDFC07023F5CEDFE0F021F5C15FF161F6E91C8FC16
-BF6E13BE16FE6E5BA26E5BA36E5BA26F5AA26F5AA26F5AA393C9FC5D153E157E157CD81F
-8013FC486C5B387FE001D8FFF05B14035D14074A5A49485A007F133F4948CAFC383F81FE
-381FFFF86C5B6C13C0C648CBFC3B477EB041>121 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmr8 8 6
-/Fj 6 100 df<B512C0A412047F9018>45 D<DA1FF013C09138FFFE01903903F00F8390
-390F8001E3013FC71277017C143F4848141F4848140F48481407A248481403121F491401
-123F90C8FC481500A300FE1600AB127F17C0A27E7F001F15016D1580120F6C6C1403EE07
-006C6C14066C6C140ED8007C5C013F147890390F8001E0903903F00FC0902600FFFEC7FC
-EC1FF02A2F7CAD33>67 D<B712FEA23903F800010001EC003E828282A282A31780160115
-18A293C7FCA31538157815F890B5FCA2EBF800157815381518A21760A392C712C0A41601
-17801603A21607160F163F0003913801FF00B8FCA22B2D7EAC30>69
-D<B612C015FC3903F8007F0001EC0FC06F7E6F7E6F7E82150082A55E15015E4B5A4B5A4B
-5A037FC7FC90B512FC15F09038F800FC153E6F7E150F826F7EA582A5170316F815031707
-486C903801FC0EB539F000FE1CEE3FF8C9EA07E0302E7DAC34>82
-D<007FB712F8A29039000FC003007C150000701638A200601618A200E0161CA248160CA5
-C71500B3A94A7E011FB512E0A22E2D7EAC33>84 D<EB1FE0EB7FFC3801F01E3803E00739
-07C01F80EA0F80EA1F005A003EEB0F00007E90C7FCA2127C12FCA9127EA215C07E6C1301
-01801380380FC0033907E007003801F03E38007FF8EB1FC01A207E9E1F>99
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmsy9 9 2
-/Fk 2 106 df<EB0180EB03C01307A21480130FA2EB1F00A2131E133EA25BA2137813F8
-A2485AA25B1203A2485AA25B120FA248C7FCA2121E123EA25AA2127812F8A41278127CA2
-7EA2121E121FA26C7EA212077FA26C7EA212017FA26C7EA21378137CA27FA2131E131FA2
-EB0F80A2130714C0A21303EB0180124A79B71E>104 D<126012F07EA21278127CA27EA2
-121E121FA26C7EA212077FA26C7EA212017FA26C7EA21378137CA27FA2131E131FA2EB0F
-80A2130714C0A41480130FA2EB1F00A2131E133EA25BA2137813F8A2485AA25B1203A248
-5AA25B120FA248C7FCA2121E123EA25AA2127812F8A25A1260124A7CB71E>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmtt12 17.28 6
-/Fl 6 118 df<ED7FF00203B5FC021F14E0027F14F849B67E4915FF010F824982498249
-EBC01F9027FFFE00037F4801F801007F48496E7E02C0143F48496E7E4890C8120F491507
-001F8349815B003F18804981A2127F4917C08312FF90B9FCA71980190001C0CBFC7F127F
-A37F123F7FA26C6C163F6DEE7F806C6CEEFFC0A26C6D5C14E06C6D4A13806C01FC5C6C6D
-021F130090267FFFC05B6D9039F801FFFE6D90B65A6D5E6D5E6D5E01005E023F92C7FC02
-0F14FC020114E09126001FFEC8FC3A4179BF4A>101 D<EE1FFC263FFFF090B57E48D9F8
-0714E0DAFC1F14F8B5498092B67E14FD6C90B8FC856CEDE01FD8000FDA00077F03FC7F4B
-7F4B7F4B815D4B147FA292C8FCA25CA45CB3AC003FB690B612F848038115FCA2B700C315
-FEA36C038115FCA26C030015F8473F7FBE4A>110 D<EF0FFE003FB591B512C048DA8003
-14F0B6D8C00F14F8043F14FC93B6FC03C115FE15C36C14C76C02CFEBF80FC701DF13C092
-B5380007FC04FCEB03F84CEB01F004E090C7FC5E5E93C9FC5DA25DA25DA25DA25DA45DB3
-A6003FB712F84882B8FC83A35F7E6C5E3F3F7BBE4A>114 D<913A1FFF800F800103B5EA
-F81F011F9138FF3FC0017F15FF48B8FC5A5A5A5A48EBE00049C7121FD87FF880491403D8
-FFC080A25B82A37FEF7F806C7E01F892C7FC13FE383FFFC06C13FE6CEBFFF86CECFFE06C
-15FC6CEDFF806C6C15F0011F81010315FED9007F8002011580DA000F14C0DB003F13E016
-07040113F0D83F809138007FF8007F163F486CED1FFC170F7F1707A27FA26D150FA27F6D
-ED1FF86D157F02C0ECFFF06E130302FC013F13E091B712C0A2188001BF1600019F15FC01
-0F15F0010315C0267E007F49C7FC007C010713E0364176BF4A>I<EC0FC04A7E4A7EAF00
-3FB812FC4883BAFCA56C5F6C5FC7D83FF0C9FCB3ABF00FC0F01FE0F03FF0A76F147FA2F0
-FFE06E6C5B6F4913C06F5B6ED9E03F138093B61200806E5D6E15F86E5D6F5C6F1480030F
-01FCC7FC030013C03C507DCE4A>I<263FFFF049B57E486D49806E82B55CA36C81A26C81
-D8000F91C7127FB3B118FFA35F5F6E5C5F6E5C6D6D137FDBF003B612F86D90B812FCA26D
-18FE7F6E4A7E6E02FC14FC6EECE03F0207DA801F13F89126007FF8C9FC473F7FBD4A>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm lcircle10 10 4
-/Fm 4 12 df<EA7FC0EAFFFEEBFFE06C13FCC66CB4FC010313C09038003FF0EC07FCEC01
-FE9138007F80ED1FC0ED07F06F7EED00FC167E82707E707E707E707E1601707E83177C83
-A2831880170FEF07C0A2170318E0A2170118F0A2170018F8A21878A4187CA2183CA71818
-3636B28364>8 D<1818183CA7187CA21878A418F8A218F01701A218E01703A218C01707
-A2EF0F80171F1800173EA25F17FC5F4C5A16034C5A4C5A4C5A4CC7FC167E5EED03F84B5A
-ED1FC0ED7F80DA01FEC8FCEC07FCEC3FF0903803FFC0017F90C9FC387FFFFCB512E049CA
-FCEA7FC03636B2B564>I<126012F0A77EA21278A3127CA2123C123EA2121E121FA27E7F
-A26C7E7F12036C7EA26C7E7F137E133E7F806D7E6D7E6D7E6D7E6D7E147F6E7EEC0FC0EC
-07F0EC03FCEC00FFED7FC0ED1FF8ED07FF030113FC9239007FFFF8040F13FC1601933800
-07F8363680B564>I<EF07F8933801FFFC160F047F13F8923901FFFC00030790C7FCED1F
-F8ED7FC04BC8FCEC03FCEC07F0EC0FC0EC3F804AC9FC14FC495A495A495A495A495A91CA
-FC133E137E5B5B485AA2485A12075B485AA290CBFC5AA2121E123EA2123C127CA21278A3
-12F8A25AA712603636808364>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmti10 10.95 37
-/Fn 37 122 df<933807FF80043F13E09338FE00F8DB01F0133EDB07E0130E4B48131F4C
-137F031F14FF4BC7FCA218FE157E1878180015FE5DA31401A25DA414030103B712F0A218
-E0903A0003F000070207140F4B14C0A3171F020F15805DA2173F1800141F5D5F177EA214
-3F92C712FE5FA34A1301027EECF81CA3160302FEECF03C4A1538A21878187013014A0101
-13F018E0933800F1C0EF7F804948EC1F0094C7FCA35C1307A2001E5B127F130F00FF5BA2
-49CAFC12FEEAF81EEA703CEA7878EA1FF0EA07C0385383BF33>12
-D<EA01E0EA07F8120FA2EA1FFCA4EA0FF8EA0798EA001813381330A21370136013E013C0
-1201EA0380EA07001206120E5A5A5A5A5A0E1C7A891C>44 D<120FEA3FC0127FA212FFA3
-1380EA7F00123C0A0A77891C>46 D<131EEB3F80137FEBFFC05AA214806C13005B133C90
-C7FCB3120FEA3FC0127FA212FFA35B6CC7FC123C122777A61C>58
-D<9339FF8001C0030F13E0033F9038F803809239FF807E07913A03FC001F0FDA0FF0EB07
-1FDA1FC0ECBF00DA7F806DB4FC4AC77E495AD903F86E5A495A130F4948157E4948157C49
-5A13FF91C9FC4848167812035B1207491670120FA2485A95C7FC485AA3127F5BA312FF5B
-A490CCFCA2170FA2170EA2171E171C173C173817786C16706D15F04C5A003F5E6D140300
-1F4B5A6D4AC8FC000F151E6C6C5C6C6C14F86C6C495A6C6CEB07C090397FC03F8090261F
-FFFEC9FC010713F0010013803A4272BF41>67 D<49B812F8A390260003FEC7121F18074B
-14031801F000F014075DA3140F5D19E0A2141F4B1338A2EF7801023F027013C04B91C7FC
-A217F0027F5CED80011603160F91B65AA3ED001F49EC07805CA3010392C8FC5CF003804C
-13070107020E14005C93C75A180E010F161E4A151C183CA2011F5E5C60A2013F15014A4A
-5A1707017F150F4D5A4A147F01FF913807FF80B9FCA295C7FC3D3E7BBD3E>69
-D<49B6FC5BA2D9000313005D5DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA314FF
-92C7FCA35B5CA313035CA313075CA3130F5CA3131F5CA3133F5CA2137FA25C497EB67EA3
-283E7BBD23>73 D<49B5933807FFFC496062D90003F0FC00505ADBBF805E1A771AEF1407
-033F923801CFE0A2F1039F020FEE071F020E606F6C140E1A3F021E161C021C04385BA2F1
-707F143C023804E090C7FCF001C0629126780FE0495A02705FF00700F00E0114F002E003
-1C5BA2F03803010116704A6C6C5D18E019070103ED01C00280DA03805BA2943807000F13
-070200020E5C5FDB03F8141F495D010E4B5CA24D133F131E011CDAF9C05CEEFB80197F01
-3C6DB4C7FC013895C8FC5E01784A5C13F8486C4A5CD807FE4C7EB500F04948B512FE16E0
-1500563E7BBD52>77 D<EEFFC0030713F892383F80FE9238FC003FDA03F0EB0F804A486D
-7EDA1F80804AC76C7E027E6E7E4A81494814004948811307495A4948157F133F5C49C9FC
-4917805B1201485AA212075B000F17FFA25B121F190048485DA448484B5AA34D5AA25B4D
-5A12FF60171F60007F163F604D5AA24DC7FC5F003F15014C5A6D5D001F4B5A4C5A6C6C4A
-5A4C5A6C6C4AC8FC000315FC6C6C495A6C6CEB07E0017FEB1F8090261FC07EC9FC903807
-FFF801001380394273BF46>79 D<49B77E18F018FC903B0003FE0003FEEF00FF4BEC7F80
-F03FC00207151F19E05DA2020F16F0A25DA2141FF03FE05DA2023F16C0187F4B1580A202
-7FEDFF00604B495A4D5A02FF4A5A4D5A92C7EA3FC04CB4C7FC4990B512FC17E04ACAFCA2
-1303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA25C497EB67EA33C3E
-7BBD3E>I<49B612FCEFFF8018F0903B0003FE000FF8EF03FE4BEB00FF8419800207ED3F
-C05DA219E0140F5DA3021FED7FC05DA2F0FF80143F4B15004D5A60027F4A5A4B495A4D5A
-EF3F8002FF02FEC7FC92380007F892B512E01780499038000FE04A6D7E707E707E010381
-4A130083A213075CA25E130F5C5F1603131F5CA3013F020714404A16E05F017F160119C0
-4A01031303496C1680B6D8800113079438FE0F009338007E1ECAEA3FFCEF07F03B407BBD
-42>82 D<92390FF001C0ED7FFE4AB5EA0380913907F80FC791390FC003EF91391F8001FF
-4AC71300027E805C495A4948143EA2495AA2010F153C5CA3011F1538A38094C7FC80A214
-FC6DB4FC15F015FE6DEBFFC06D14F06D14FC6D80143F020F7F020180EC001F150303007F
-167F163FA2161FA212075A5F120EA2001E153F94C7FCA2163E003E157E167C003F15FC4B
-5A486C5C4B5A6D495AD87DE0EB1F80D8F8F849C8FC017F13FE39F03FFFF8D8E00F13E048
-C690C9FC32427ABF33>I<48B9FCA25A903AFE001FF00101F89138E0007FD807E0163E49
-013F141E5B48C75BA2001E147FA2001C4B131C123C003814FFA2007892C7FC12704A153C
-00F01738485CC716001403A25DA21407A25DA2140FA25DA2141FA25DA2143FA25DA2147F
-A25DA214FFA292C9FCA25BA25CA21303A25CEB0FFE003FB67E5AA2383D71BC41>I<277F
-FFFE01B500FC90B512E0B5FCA20003902680000790C7380FFC006C90C701FCEC07F04972
-5A04035EA26350C7FCA20407150EA2040F5D1A3C041F153862163B6216734F5A6D14E303
-014B5A6C15C303034BC8FC1683DB0703140E191E030E151C61031C7F61ED380161157003
-F04A5A15E002014B5A15C0DA03804AC9FC60DA0700140E60140E605C029C5D14B8D97FF8
-5D5C715A5C4A5DA24A92CAFC5F91C7FC705A137E5F137C5F137801705D53406EBD5B>87
-D<147E49B47E903907C1C38090391F80EFC090383F00FF017E137F4914804848133F485A
-A248481400120F5B001F5C157E485AA215FE007F5C90C7FCA21401485C5AA21403EDF038
-5AA21407EDE078020F1370127C021F13F0007E013F13E0003E137FECF3E1261F01E313C0
-3A0F8781E3803A03FF00FF00D800FC133E252977A72E>97 D<EB1FC0EA0FFF5CA2EA003F
-A291C7FCA25BA2137EA213FEA25BA21201A25BA21203A25B147E3907F1FF809038F783E0
-9038EF01F013FE390FF800F8A24913FC49137C485A157E5B15FE123FA290C7FCA2481301
-15FC127EA2140300FE14F85AA2EC07F0A215E048130F15C0141F15800078EB3F00127C14
-7E003C5B383E01F8381E03E06C485A6CB4C7FCEA01F81F4076BE2A>I<EC1FE0ECFFF890
-3803F03E903807C00F90381F8007D93F001380017E131F49137F485A485A000715005B00
-0F147E484890C7FCA2485AA3127F90C9FCA35A5AA6481403007E5C5D151E003E5C5D6C5C
-EC03E0390F800F802603E07EC7FC3801FFF838003FC0212977A72A>I<EE3F80ED1FFF17
-00A2ED007FA2167EA216FEA25EA21501A25EA21503A25EA21507A25E147E903801FF8F90
-3807C1CF90391F80EFC090383F00FF017E137F5B48486D5A485AA2485A000F92C7FC5B00
-1F5CA24848137EA215FE127F90C75AA214015A485CA2140316384814F0A2140716789138
-0FE070127C021F13F0007E013F5B003E137FECF3E1261F01E35B3A0F8781E3802703FF00
-FFC7FCD800FC133E294077BE2E>I<EC3F80903801FFE0903807E0F890381F803CEB3E00
-01FC131E485A485A12074848133E49133C121F4848137C15F8EC03F0397F000FE0ECFF80
-B5EAFC0014C048C8FCA45AA61506150E151E007C143C15786C14F0EC01E06CEB07C0390F
-801F003807C0FC3801FFF038007F801F2976A72A>I<167C4BB4FC923807C78092380F83
-C0ED1F87161FED3F3FA2157EA21780EE0E004BC7FCA414015DA414035DA30103B512F8A3
-90260007E0C7FCA3140F5DA5141F5DA4143F92C8FCA45C147EA414FE5CA413015CA4495A
-A4495AA4495A121E127F5C12FF49C9FCA2EAFE1EEAF83C1270EA7878EA3FE0EA0F802A53
-83BF1C>I<EC03F0EC0FFC91383E0E1C9138FC077E903901F003FE1303903807E001D90F
-C013FCEB1F80A2EB3F004914F8137E01FE1303A2484814F0A2150712034914E0A2150F12
-074914C0A2151FA216805B153F1203ED7F006D5BA200015B0000495A9038F80F7E90387C
-1EFEEB1FF8903807E0FC90C7FC1401A25DA21403A25D001C1307007F5C48130F5D4A5A4A
-C7FC48137E00F85B387C03F0381FFFC0D803FEC8FC273B7CA72A>I<EB01FC13FF5CA213
-03A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C8FCEC03F890387F0FFE91383E
-0F80D97E7813C0ECE007D9FFC013E014801400A2485A5BA25B0003140F16C05BA2000714
-1F16805BA2000F143F16005B5D001F147EEDFE074913FCA2003F0101130FEDF80E130016
-1E48ECF01CA2007E1538A200FE1570020013E048EC7FC00038EC1F0028407ABE2E>I<14
-78EB01FCA21303A314F8EB00E01400AD137C48B4FC38038F80EA0707000E13C0121E121C
-EA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE5BA212015BA212035B14
-38120713E0000F1378EBC070A214F0EB80E0A2EB81C01383148038078700EA03FEEA00F8
-163E79BC1C>I<EB01FC13FF5CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133F
-A291C8FCED03E049EB0FF8ED3C3C017EEB707CEDE1FC9038FE01C1EC03839038FC070314
-0E0001011C13F891383800E0494813001460000313E0EBF9C0EBF78001FEC8FC1207EBFF
-E0EBE7F8EBE0FE000F137F6E7EEBC01F6E7E121F16701380A2003F15F0021F13E0010013
-80A248148116C0007EEB0F83168000FE14879138078F0048EB03FE0038EB00F826407ABE
-2A>107 D<EB07F0EA03FF14E0A2EA000FA214C0A2131FA21480A2133FA21400A25BA213
-7EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA25BA2121FA25BA2123FA290
-C7FCA25A1307127EA2EAFE0F130E12FCA2131E131CA2EA7C381378EA3C70EA1FE0EA0780
-144079BE17>I<D801F0D93F80137F3D07FC01FFE003FFC03D0F3E07C1F80F83F03D0E1F
-0F00FC1E01F8001E011C90387C3800001C49D97E707F003C01F05C0038157F4A5C26783F
-C05C12704A91C7FC91C7127E00F003FE1301494A5CEA007EA20301140301FE5F495CA203
-031407000160495C180F03075D0003051F13E0494A1480A2030FEC3F810007F001C0495C
-A2031F91383E0380120F494AEC0700A2033F150E001FEF1E1C4991C7EA0FF80007C7000E
-EC03E0432979A74A>I<D801F0EB3F803A07FC01FFE03A0F3E07C1F83A0E1F0F00FC001E
-011C137C001C49137E003C13F012385C38783FC012705C91C7FC00F015FE495CEA007EA2
-150101FE5C5BA2150300015D5B15075E0003020F13704914C0A2031F13F00007ED80E05B
-1681EE01C0120F49EC0380A2EE0700001FEC0F0E49EB07FC0007C7EA01F02C2979A733>
-I<EC1FC0ECFFF8903803F07C90380FC01FEB1F8090393F000F80017E14C0491307484814
-E0485A12075B000F15F0485AA2485AA2ED0FE0127F90C7FCA2151F4815C05AA2ED3F80A2
-ED7F00A248147E007C5C007E13015D4A5A003E495A6C495A4A5A260F803EC7FC3807C0FC
-3801FFF038003F80242977A72E>I<903903E001F890390FF807FE903A1E7C1E0F80903A
-1C3E3C07C0013C137801389038E003E0EB783F017001C013F0ED80019038F07F0001E015
-F8147E1603000113FEA2C75AA20101140717F05CA20103140F17E05CA20107EC1FC0A24A
-1480163F010F15005E167E5E131F4B5A6E485A4B5A90393FB80F80DA9C1FC7FCEC0FFCEC
-03E049C9FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0B5FCA22D3A80A72E>I<
-D801F013FC3A07FC07FF803A0F3E0F03C0260E1F1C13E0001EEB380F001C1370003CEBE0
-1F123814C0D8783F14C00070903880070092C7FC91C8FC12F05BEA007EA313FE5BA31201
-5BA312035BA312075BA3120F5BA3121F5B0007C9FC232979A726>114
-D<EC7F80903801FFE0903807C0F890381F003C013E131C013C131E017C133E49137E15FE
-A2000114FCA215706D13007FEBFFC014FC6C13FF15806D13C06D13E0010F13F01300140F
-14071403120C123F387F80011403D8FF0013E0A300FCEB07C000F0EB0F8012700078EB1F
-006C133C381F01F83807FFE0C690C7FC1F297AA725>I<EB01C0EB03F01307A25CA2130F
-A25CA2131FA25CA2133FA291C7FCA2007FB51280B6FC1500D8007EC7FC13FEA25BA21201
-A25BA21203A25BA21207A25BA2120FA25BA2121F141C1380A2003F133C1438EB00781470
-14F05C495AEA1F03495A6C48C7FCEA07FCEA01F0193A78B81E>I<137C48B4141C26038F
-80137EEA0707000E7F001E15FE121CD83C0F5C12381501EA781F007001805BA2D8F03F13
-03140000005D5B017E1307A201FE5C5B150F1201495CA2151F0003EDC1C0491481A2153F
-1683EE0380A2ED7F07000102FF13005C01F8EBDF0F00009038079F0E90397C0F0F1C9039
-1FFC07F8903907F001F02A2979A731>I<017CEB01C048B4EB07F038038F80EA0707000E
-01C013F8121E001C1403EA3C0F0038EC01F0A2D8781F130000705BA2EAF03F91C712E012
-005B017E130116C013FE5B1503000115805BA2ED07001203495B150EA25DA25D15780001
-14706D5B0000495A6D485AD97E0FC7FCEB1FFEEB03F0252979A72A>I<017C167048B491
-387001FC3A038F8001F8EA0707000E01C015FE001E1403001CEDF000EA3C0F0038177C15
-07D8781F4A133C00701380A2D8F03F130F020049133812005B017E011F14784C137013FE
-5B033F14F0000192C712E05BA2170100034A14C049137E17031880A2EF070015FE170E00
-010101141E01F86D131C0000D9039F5BD9FC076D5A903A3E0F07C1E0903A1FFC03FFC090
-2703F0007FC7FC372979A73C>I<903903F001F890390FFC07FE90393C1E0E0F9026780F
-1C138001F0EBB83FD801E013F89039C007F07FEA0380000714E0D9000F140048151C000E
-4AC7FCA2001E131FA2C75BA2143F92C8FCA35C147EA314FE4A131CA30101143C001E1538
-003F491378D87F811470018314F000FF5D9039077801C039FE0F7C033A7C0E3C07802778
-3C1E1EC7FC391FF80FFC3907E003F029297CA72A>I<137C48B4143826038F8013FCEA07
-07000E7F001E1401001C15F8EA3C0F12381503D8781F14F000701380A2D8F03F13070200
-13E012005B017E130F16C013FE5B151F1201491480A2153F000315005BA25D157EA315FE
-5D00011301EBF8030000130790387C1FF8EB3FF9EB07E1EB00035DA21407000E5CEA3F80
-007F495AA24A5AD8FF0090C7FC143E007C137E00705B387801F0383803E0381E0FC06CB4
-C8FCEA03F8263B79A72C>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fo cmcsc10 10.95 19
-/Fo 19 121 df<DB1FF8EB01804AB5EA8003020FECE007913A3FF803F80F9139FF80007C
-4948C7EA1E1FD907FCEC0FBFD90FF0EC07FF49488049488049488049C9127F4848163F12
-0349161F12074848160FA2485A1807123F5B1803127FA34993C7FC12FFAB0407B512FE12
-7F7FDC000113C09438007F80123FA27F121FA26C7EA26C7E12037F6C7E7E6D6C15FF6D7E
-6D6C5C6D7ED907FCEC03DFD901FFEC0F8F6D01C0EB3F07913A3FF801FC03020FB5EAF001
-020102C0C7FC9126001FFCC8FC3F427ABF4D>71 D<B56C91387FFFFC8080D8007F030313
-806E913800FE006E157C1838EB77FCEB73FE80137101707F6E7EA26E7E6E7EA26E7E6E7E
-A26E7E6E7EA26E7F6F7EA26F7E6F7EA26F7E6F7E8215036F7E6F1380A2EE7FC0EE3FE0A2
-EE1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013B8A2EF7FF8173FA2171F170F1707A21703
-01F81501487ED807FF1500B500F81578A218383E3E7BBD4A>78 D<B600C090387FFFFCA3
-000101E0C70003138026007F80913800FE00187C1838B3B3A4013F16786E1570A218F001
-1F5E6E1401010F5E6D6C1403606D6C14076D6C4AC7FC6D6C141E027F147C91393FC001F8
-91390FF00FE00203B55A020049C8FCED1FF03E407BBD4A>85 D<EC01E0A24A7EA34A7EA3
-4A7EA24A7E141CA2EC3CFFEC387FA24A6C7EA34A6C7EA2010180ECC00FA249486C7EA349
-486C7EA24980010E1301010FB5FC4980A2011CC7FC49147FA20178810170143FA201F081
-49141F1201486C811207486CEC3FF8D8FFFE49B512C0A332317DB038>97
-D<B612FEEDFFC016F03A03FC0007F86C48EB01FE1500167F1780163F17C0A61780167F17
-0016FE4B5AED07F0ED7FE090B6128016F09039F80001FC6F7EEE7F80163FEE1FC017E016
-0F17F0A617E0161FA2EE3FC0EE7F80923801FF00486CEB07FEB712F85E93C7FC2C2F7CAE
-35>I<DA0FF81330DA7FFF13700103B5EAC0F090390FFC03F190391FE000F9D97F80133F
-01FEC7121F4848140F48481407485A000F1503491401121F491400123F5B127F1770A248
-C9FC1700AA6C6C1570A3123F6D15F0121F6D15E0000F15016D15C0000715036C6C15806C
-6C14076C6CEC0F00D97F80133ED91FE05B90390FFC03F00103B55AD9007F1380DA0FF8C7
-FC2C317BAF36>I<B612FEEDFFE016F83A03FE0007FC6C48EB00FFEE3F80707E707E707E
-707E160183160083A2177FA41880AA1800A317FEA34C5A5F16034C5A5FEE1FC04C5A04FF
-C7FC486CEB07FEB712F816E093C8FC312F7DAE39>I<B81280A3D803FEC7FC6C48EC1FC0
-160F16071603A21601A317E0ED0E00A31700A2151E153E157E90B512FEA39038FC007E15
-3E151E150EA21738A392C71270A417F0A2EE01E0A216031607161F486C14FFB812C0A32D
-2F7DAE33>I<B8FCA33903FE00016C489038003F80161F160F1607A21603A317C0160115
-0EA293C7FCA3151E153E157E90B512FEA39038FC007E153E151E150EA592C8FCAA487EB5
-12FCA32A2F7DAE31>I<DA0FF81360DAFFFE13E00103EBFF8190390FF807E390393FC000
-F34948137F01FEC7123F4848141F4848140F48481407120F491403485A003F1501A25B00
-7F1500A348C9FC1700A8031FB5FCA26C7E9238001FF0EE0FE0123F7FA26C7E120F7F1207
-6C7E6C7E6C6C141FD97F80133FD93FE0137B90390FFC03F10103B512E00100EC8060DA0F
-FCC7FC30317BAF3A>I<B512F8A33803FE006C5AB3B3A3487EB512F8A3152F7DAE1B>105
-D<D8FFFE923807FFF0A3D803FF92380FFC006C5FD9DF80141DA3D9CFC01439A2D9C7E014
-71A3D9C3F014E1A2D9C1F8EB01C1A3D9C0FCEB0381A2027EEB0701A36E130EA291381F80
-1CA391380FC038A2913807E070A3913803F0E0A3913801F9C0A2913800FF80A3486CEB7F
-00487E486C013E497EB5008091B512F0A2151C3C2F7CAE44>109
-D<D8FFFC91387FFFC07F7F0001923807FC006E6D5A6E6D5AD9DFE06D5AA2EBCFF0EBC7F8
-EBC3FCA2EBC1FEEBC0FF6E7EA26E7E6E7EA26E7E6E7E6E7EA26E7E6E7EED7F80A2ED3FC0
-ED1FE0ED0FF0A2ED07F8ED03FCA2ED01FEED00FF167FA2163F161F160F487E486C140748
-6C1403B56C1301A21600322F7DAE38>I<EC1FF891B5FC903907F00FE090390FC003F001
-3FC712FC017E147E49804848EC1F804848EC0FC04848EC07E0000F16F0491403001F16F8
-491401003F16FCA2007F16FE90C9FCA34816FFAA6C6CEC01FEA3003F16FCA26D1403001F
-16F86C6CEC07F0A26C6CEC0FE0000316C06C6CEC1F806C6CEC3F00017E147E6D5C90390F
-C003F0903907F00FE00100B5C7FCEC1FF830317BAF3A>I<B612FEEDFFC016F03A03FE00
-07FC6C48EB01FEED007FEE3F80A2EE1FC0A217E0A617C0A2EE3F80A2EE7F00ED01FCED07
-F890B612E0168001FCC9FCB2487EB512F8A32B2F7DAE33>I<90383FC00C9038FFF81C00
-03EBFE3C390FE03FFC381F8007EB0003003E1301481300157C5A153CA36C141CA27E6C14
-006C7E13E013FE383FFFE06C13FE6CEBFF806C14E0000114F06C6C13F8010F13FC1300EC
-07FE14011400157F153F12E0151FA37EA2151E6C143E6C143C6C147C6C14F89038C001F0
-39FBF807E000F1B512C0D8E07F130038C007FC20317BAF2A>115
-D<007FB712F8A39039801FF0073A7E000FE00000781678A20070163800F0163CA348161C
-A5C71500B3A8EC3FF8011FB512F0A32E2E7CAD36>I<B500F890387FFFC0A3D803FEC738
-07FC006C486E5A705A705AB3AB000015016D5D1603017E5D017F14076D6C49C7FC131F6D
-6C133ED907F05B903903FC03F00100B55A023F1380DA07FCC8FC32307DAE38>I<3B7FFF
-F001FFFEA30003D9C00013E0C649EB7F80017F027EC7FC167C6D6C13786D6C5B6D6C5B15
-016D6C485AD903FC5B15076D6C48C8FC903800FF1EEC7F9C15BCEC3FF86E5AA2140F6E7E
-14034A7E4A7EEC1EFF141C91383C7F804A6C7E14709138F01FE049486C7E49486C7E1480
-01076D7E49486C7E130E011E6D7E496E7E017C6E7E13FC000382D80FFEEC7FF8B549B512
-C0A3322F7DAE38>120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fp cmr7 7 3
-/Fp 3 52 df<13381378EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521>49
-D<13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F80A4127CC7FC15
-005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA018039030003
-0012065A001FB5FC5A485BB5FCA219267DA521>I<13FF000313E0380F01F8381C007C00
-30137E003C133E007E133FA4123CC7123E147E147C5C495AEB07E03801FF8091C7FC3800
-01E06D7E147C80143F801580A21238127C12FEA21500485B0078133E00705B6C5B381F01
-F03807FFC0C690C7FC19277DA521>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fq cmsl10 10.95 42
-/Fq 42 122 df<EEFF80030F13F092383FC0789238FE001CDA03F8130E4A48133FDA1FE0
-13FF4A5A4B5AEC7F005C5CEE00FE010115784A1400A513035CA4EE01FC0007B7FC17F8A2
-3A0007F0000F1607A2130F4A14F0A4160F131F4A14E0A4161F133F4A14C0A4163F137F91
-C71380A4167F5B491500A31201486C903801FF80B5D8F83F13FC5DA230407EBF33>12
-D<007FB5FCA2B512FEA418067C961E>45 D<13F0EA01FC1203EA07FEA313FCA2EA03F8EA
-01E0C7FCB3121EEA3F80EA7FC012FFA41380EA7F00123C0F2778A619>58
-D<17E016011603831607A2160FA2161F83163FA2167F167716F7EEE7FCED01E316C31503
-16831507EE03FEED0F01150E151E151C153C03387FED7800157015F05D4A4880177F4A5A
-A24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA3FE0171F5CA2495AA2494881170F49
-C8FCA2130EA24982013C1507A2137CD801FE4B7E2607FF80EC3FFEB500F00107B512FC19
-F85E3E417DC044>65 D<013FB7FC18E018FC903B007FE00007FE6E48903801FF80943800
-7FC05DF03FE0F01FF0A3027F16F892C8FCA54A16F04A153F19E0187F19C0F0FF8001014B
-13004A4A5A4D5AEF1FF04D5ADC03FFC7FC49B612F8EFFF8002F8C7EA3FE0EF0FF0EF07FC
-717E010715014A81711380A319C0130F5CA5011F4B13805C19005F601707013F4B5A4A4A
-5A4D5A4D5A017F913801FF8001FF020F90C7FCB812FC17F094C8FC3D3E7DBD40>I<DCFF
-C01338030F01F01378037F01FC13F0913A01FF803F01913A07FC000781DA1FE0EB03C3DA
-7FC0EB01E74AC812FF4948ED7FE0D907FC153F495A4948151F495A4948150F494816C018
-074890C9FC485AA2485A000F1880491603121FA248481607A295C7FC485AA412FF5BA75B
-A2181C183C1838A27F007F1778187018F0003F5F6D150160001F16036C6C4B5A95C7FC6C
-6C5D6C6C151E6C6C5D6C6C15F86D6C495A6D6CEB07C0D91FF0EB1F80D907FE01FEC8FC01
-01B512F86D6C13E0DA07FEC9FC3D4276BF42>I<013FB7FC18E018F8903B007FF0000FFE
-6E48EB01FF9438007FC04B6E7E180F85727E727E147F4B6E7EA2727EA302FF178092C9FC
-A54918C05CA41A8013034A5DA41A0013074A5DA261A24E5A130F4A5E180F61181F61011F
-4C5A5C4E5A4EC7FC4D5A4D5A013F4B5A4A4A5AEF3FE0EF7F80017F4A48C8FC01FFEC1FFC
-B812F0178004FCC9FC423E7DBD45>I<013FB812F8A39026007FF0C7127F6E48140F1803
-4B14011800A31978147F4B1570A502FF143892C7FCA3190017784915704A14F016011603
-160F91B6FC495DA29138FC001F16071603160101075D5CA2197019F019E0010F4A5A4A90
-C7120119C0A218031980011F16075CF00F00A260181E013F163E4A157E4D5A1703017F15
-0F01FFEDFFF8B9FCA2603D3E7DBD3E>I<013FB812E0A3903A007FF000016E48EB003F18
-0F4B14071803A31801147F4B15C0A514FF92C71270A395C7FC17F0495D5C160116031607
-161F49B65AA39138FC003F160F160701075D4A1303A5010F4AC8FC5C93C9FCA4131F5CA5
-133F5CA3137FEBFFF0B612F8A33B3E7DBD3B>I<4BB46C1370031F01F013F0037F9038FC
-01E0913A03FF807E03913A0FF8000F83DA1FE0EB07C7DA7F80EB01EF4AC812FFD903FE16
-C04948157F4948153F495A4948151F495A4948168091C9120F5A485AA2485A000F180049
-82121FA248485EA295C7FC485AA412FF5BA6043FB512E05BA29339001FFC00715AA2607F
-127FA2171F123F6D5EA2121F7F000F163F6C7E6C6C4B5A7F6C6C15FF6C6DEB01EFD93FC0
-EB07C7D91FF0EB1F87D907FE9038FE03800101B5EAF8016D6C01E0C8FCDA07FEC9FC3C42
-76BF47>I<011FB512FC5BA29039003FF8006E5AA25DA5143F5DA5147F5DA514FF92C7FC
-A55B5CA513035CA513075CA5130F5CA5131F5CA3133F497E007FB512F0A2B6FC263E7EBD
-21>73 D<013FB512FEA25E9026007FF8C8FCEC3FE0A25DA5147F5DA514FF92C9FCA55B5C
-A513035CA513075CA21838A21870130F5CA218E0A3011F15014A15C01703A21707EF0F80
-013F151F4A143F177FEFFF00017F140301FF143FB9FC5FA2353E7DBD39>76
-D<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A6C157C023B16
-3C6F15381439810238167802787FDA707F157082153F82031F15F002F07FDAE00F5D8215
-078203031401010180DAC0015D82811780047F1303010315C04A013F5C17E0161F17F004
-0F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E130E188E177F18
-CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE2607FF80
-1400B512FC18705C483E7DBD44>78 D<923803FF80031F13F09238FE01FE913903F0003F
-DA0FC0EB1FC0DA3F80EB07E0027EC76C7E49486E7E49488149486E7E4948157F495A013F
-17804948ED3FC049C9FCA24848EE1FE012035B000718F05B120FA2485A19F8123F5BA212
-7FA219F04848163FA5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60003F160F6D
-5E001F4C5A4D5A6C6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A017FEC1FC06D
-6C495AD90FE001FEC8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47>I<013FB6
-12F017FF18E0903B007FF0003FF86E48EB07FCEF01FE4B6D7EF07F8019C0183F19E0147F
-4B15F0A502FFED7FE092C8FCA219C0F0FF80A2494B13004A5D4D5AEF0FF04D5AEF7F8001
-03DA07FEC7FC91B612F017809139FC0007E0EE03F8EE00FC0107814A147F717EA284A213
-0F5CA484011F157F5CA41902013F17075CA2F0F00F017F170E496C143FB600E0011F131C
-94380FF83C4B01071378CA3801FFE09438003F8040407DBD43>82
-D<9239FF8003800207EBF007021F9038FC0F0091387F00FE02FCEB1F1FD903F0EB07BF49
-486DB4FC49487F4A6D5A49C8FC49157E133E137E173E49153CA57F1738A26D92C7FC8080
-80EB7FFEECFFE06D13FEEDFFC06D14F06D14FC010380010080143F020380DA003F7F1503
-1500707E163F161FA2160F121CA31607160F003C5EA35F003E151F94C7FC007E5D007F15
-3E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF87F803F8027F01FFFFEC8FCD8E007
-13F839C0007FC031427BBF33>I<0007B912F0A33C0FFE000FF8003F01F0160F01C04A13
-034848160190C7FC121EF000E048141F5E1238A212781270153F5E5AA3C81600157F5EA5
-15FF93C9FCA55C5DA514035DA514075DA5140F5DA3141FEC7FFC0003B7FCA33C3D76BC42
->I<B600E090B512FC4B15F8A2000101C0C7000F13006C49EC03FCEF01F091C9FC60A317
-015A495EA417031203495EA4170712074993C7FCA45F120F49150EA4171E121F49151CA4
-173C123F491538A31778177017F05F001F15015F16036D4A5A000F93C8FC5E6C6C141E6C
-6C5C000115F86C6C495A017FEB07C090393FC03F8090260FFFFEC9FC010313F89038007F
-C03E4073BD44>I<B6017FB5D88007B512804A1A00A2000701C0010101E0C713F06C90C8
-0180EC3FC06C48735A99C7FC057F150E1B1E6D191C6C1A3C1B3805FF15787214705E636E
-EB03BF017F4E5AEE073F505A040E7F051F4AC8FC161C6E170E013F143862167804706D5B
-EEF00F04E05D90381FE00104C015F003035E0480140106F85B9226070007130302F05F01
-0F010E150797C9FC5D190E4BEB03FC616E5A01075F5D61DAF9C014FE05015BECFB8002FF
-6F5A7F92C75CA24A93CAFC835C606D5A605C604A15781870594074BD5D>87
-D<EC7FC0903803FFF890380FC07E90383E003F496D7E01FF6D7E82A248140782A26C5A13
-7890C7120FA25EA2EC03FF147F903807FF1FEB1FE0D97F805B3801FE00EA03F8485A4848
-133F485A003F5D49EC81C048C7FCA2157F48ED03804814FFA2007F5B913903BF07009038
-80073F3A3FC00E1F8E260FE03C13FC3A03FFF00FF83A007FC003E02A2A7CA82D>97
-D<EB3F80EA1FFFA3C6FC137FA291C9FCA55B5BA512015BA4EC07F80003EB3FFF9039F8F8
-0FC09039FBE003E09039FF8001F891C77E5B4848147E49147F5B821780A2120F5B17C0A3
-167F001F16805BA4EEFF00123F5B4B5AA24B5A5E007F4A5AA24B5A6D495A4BC7FCD87CE0
-137E39F87001F839F03C07E039E00FFF80260003FCC8FC2A4077BE33>I<EC1FF0ECFFFE
-903903F01F8090390FC003C0D93F0013E0017E130F49131F000115F04848EB3FE0485AA2
-4848EB1FC0001FEC0F004990C7FC123FA2485AA412FF90C9FCA96CEC0380150716006C6C
-5B151E001F5C6C6C5B6C6C5B6C6C485A3901F80F8026007FFEC7FCEB0FF0242A7AA828>
-I<EE03F8ED01FFA3ED000F1607A217F0A4160FA217E0A4161FA217C0A491380FF03FECFF
-FC902603F81F138090390FC007BF90391F8003FF90387E0001497F0001157F4848150048
-5A120F5B001F5D485A5E5B127FA2150112FF90C75BA41503A25EA37E1507A26C4A5A7F00
-1F141F6C6C133F6C6CEBFFF83B03F001EFFFC03900F80F8F90383FFE0FD90FF0EBE0002D
-407ABE33>I<EC3FE0903801FFF8903807E07E90380F801F90393F000F80017E14C049EB
-07E0485A12034848EB03F0485AA2121F5B123FA248481307A290B6FCA2D8FF80C8FC90C9
-FCA87EED01C015036C15806D1307001FEC0F006D131E000F5C6C6C5B6C6C485A3900FC07
-C0D93FFFC7FCEB07F8242A7BA828>I<ED07F0ED3FFCEDFC1E913803F03F4A48B4FC4A48
-1380141FEC3F81DA7F0113008102FE137C93C7FCA213015CA513035CA50007B512F8A326
-0007F0C8FCA3130F5CA5131F5CA5133F5CA5137F91C9FCA55B5BA4EA03FF007F13FEB5FC
-A229407DBF1C>I<177C913907F803FE91393FFE0F8F9139FC0F9C3F903901F007F89039
-07E003E0D90FC013F0011F903801F80C02801400133FD97F007FA315035B495CA3017E49
-5A5E150F6D5C6D495A90263F803EC7FCECC0FC903871FFF09038E07F8091C9FC485AA47F
-A27F90B512F8EDFF806C15E016F86D8048B6FC3A07E0000FFED80F801300003FC8127F00
-3E815A00FC815AA25E163EA25E6C15FC007C4A5A6C4A5A6CEC0FC0D80FC0013FC7FC3903
-F801FCC6B512F0010F90C8FC303D7FA82D>I<147FEB3FFFA313017FA25CA513015CA513
-035CA4ED07F80107EB1FFF9139F0781FC09138F1E00F9139F38007E0ECF70002FE14F049
-5A5CA25CA24A130F131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B4915
-00A300015D486C491380B5D8F87F13FCA32E3F7DBE33>I<1478EB01FE130314FFA25B14
-FE130314FCEB00F01400ACEB03F8EA01FF14F0A2EA001F130FA314E0A5131F14C0A5133F
-1480A5137F1400A55B5BA4EA03FF007F13F0A2B5FC183E7DBD1A>I<147FEB3FFFA31301
-7FA25CA513015CA513035CA501070103B5FC02F014FEA26F13F06F1380EEFE00010F14F8
-4A485AED03C04B5A031FC7FC153E011F13784A5AECC3E0ECC7F0ECCFF814FF497F14F9EC
-E1FE14C04A7E4A7E4980017E133F82151F82150F01FE8049130782A2000181486C49B4FC
-B5D8F03F13F04B13E0A2303F7EBE30>107 D<143FEB1FFF5BA213017FA214FEA5130114
-FCA5130314F8A5130714F0A5130F14E0A5131F14C0A5133F1480A5137F1400A55B5BA4EA
-03FF007F13F8A2B5FC183F7DBE1A>I<902707F007F8EB03FCD803FFD91FFF90380FFF80
-913CE0781FC03C0FE09126E1E00FEBF0073E001FE38007E1C003F090260FE700EBE38002
-EEDAF70013F802FC14FE02D85C14F84A5CA24A5C011F020F14074A4A14F0A5013F021F14
-0F4A4A14E0A5017F023F141F91C74914C0A549027F143F4992C71380A300014B147F486C
-496DEBFFC0B5D8F87FD9FC3F13FEA347287DA74C>I<903907F007F8D803FFEB1FFF9139
-E0781FC09138E1E00F3B001FE38007E090380FE70002EE14F014FC14D814F85CA24A130F
-131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B491500A300015D486C49
-1380B5D8F87F13FCA32E287DA733>I<EC0FF0ECFFFE903903F01F8090390FC007C049C6
-6C7E013E6D7E01FC6D7E48488049147C0003157E485A000F157F5B121FA2485AA2007F16
-80A2170048C85AA54B5AA25E5A6C4A5A7E4B5A5E6C140F6C6C5C4B5A6C6C013EC7FC6C6C
-5B6C6C485A3900FC0FE090383FFF80D90FF8C8FC292A7BA82D>I<91387F01FE903A7FFF
-0FFFC09139FE3E03F09238F801F8903A01FFE000FE4B137F6D497F4990C713804A15C04A
-141FA218E0A20103150F5C18F0A3171F010716E05CA3173F18C0130F4A147F1880A2EFFF
-004C5A011F5D16034C5A6E495AEE1FC06E495AD93FDC017EC7FC91388F01F8913883FFE0
-028090C8FC92C9FC137FA291CAFCA45BA25BA31201487EB512F8A3343A81A733>I<9039
-07F01F80D803FFEB7FE09138E1E1F09138E387F839001FE707EB0FE614EE02FC13F002D8
-13E09138F801804AC7FCA25C131FA25CA4133F5CA5137F91C8FCA55B5BA31201487EB512
-FEA325287EA724>114 D<9138FF81C0010713E390381F807F90397C003F8049131F4848
-130F5B00031407A248481400A27FA27F6D90C7FCEBFF8014FC6C13FF6C14C015F06C6C7F
-011F7F13079038007FFE1403140100381300157EA2123C153E157E007C147CA2007E1478
-15F8007F495A4A5A486C485A26F9E01FC7FC38E0FFFC38C01FE0222A7DA824>I<EB0380
-A4130791C7FCA25BA25BA2133EA2137E13FE12011207001FB512C0B6FCA2D801FCC7FCA3
-12035BA512075BA5120F5BA41407001F130E13C0A4141E141C1380A26D5AA2000F5B14F0
-3807E1E03801FF80D8007EC7FC1A3978B723>I<01FE147F00FFEC7FFF4914FEA2000714
-0300031401A34914FCA4150312074914F8A41507120F4914F0A4150F121F4914E0A2151F
-A3153F4914C0157F15FFEC01DF3A0FC003BFE09138073FFF3803F01E3801FFF826003FE0
-1380282977A733>I<B539E007FFF05D17E02707FE000313006C48EB01FC6F5A5E00014A
-5A5EA24B5A6D1307000092C7FC5D150E6D5B7F5DA25D1480013F5B14815D14C3011F5B02
-C7C8FCA214CE14EEEB0FFCA25CA26D5A5CA25CA26D5A2C2878A630>I<B500C3B53803FF
-FCA204FE14F8290FFE003FE00013C0D807F86D48EB7F000003173E183C150F18386D5E00
-01141F705B153F4D5A15776D4B5A0000ECE7F04DC7FCEC01C3170E9038FF0383017F5D91
-380703F85FEC0E01021E5CD93F9C14F002BC6D5A02B813FDDAF8005B4A13FF5F6D5A94C8
-FC5C4A137E167C6DC7FC1678010E14383E2878A642>I<48B539C07FFFC0A33C000FFE00
-3FF8006D48EB1FE0010315800101023EC7FC6E133C01005C027F5B6F5A91383F81C0EDC3
-80DA1FC7C8FC15EFEC0FFE6E5A5D140381A24A7E140FEC1E7F023C7FEC383F02707FECE0
-1F010180903803C00F49486C7ED90F007F491303017E80D801FE80D807FF497EB5D8803F
-13F8A332277FA630>I<90B539E007FFF05E18E0902707FE000313006D48EB01FC705A5F
-01014A5A5F16036E5C0100140794C7FC160E805E805E1678ED8070023F13F05EED81C015
-C191381FC38015C793C8FC15EF15EEEC0FFCA25DA26E5AA25DA26E5A5DA24AC9FC5C140E
-141E141C5C121C003F5B5A485B495A130300FE5B4848CAFCEA701EEA783CEA3FF0EA0FC0
-343A80A630>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fr cmtt10 10.95 88
-/Fr 88 127 df<121C127FEAFF80B3EA7F00B2123EC7FCA8121C127FA2EAFF80A3EA7F00
-A2121C09396DB830>33 D<00101304007C131F00FEEB3F80A26C137FA248133FB2007E14
-00007C7F003C131E00101304191C75B830>I<903907C007C0A2496C487EA8011F131FA2
-02C05BA3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F
-90B512FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA2
-29387DB730>I<1438147C14FCA4EB03FF011F13E090B512FC4880000780481580261FFE
-FD13C09039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F800FE14035A1507A3
-6CEC03F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0000114F86C6C7F01
-1F7F01037F0100148002FD13C09138FC7FE0151FED0FF015070018EC03F8127E1501B4FC
-A35AA26CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFEB512806CB612006C
-5C6C5CC614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30>I<EA07C0EA0FF0
-EA1FF8A213FCA213FE120F1207EA007EA513FE13FCA2120113F81203EA07F0120FEA1FE0
-127FEAFFC013801300127C12380F1D70B730>39 D<141E147F14FF5BEB03FEEB07FCEB0F
-F0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F5BA2127F90C7
-FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7EEB7F80EB3FC0
-EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>I<127812FE7E7F6C7E6C
-7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB03F8A214FC13
-01A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14E0EB1FC0133F
-1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A1278184778BE30>I<14
-E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9FF267FFBFB13
-C06CB61280000FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048B512F0488000
-0F14FE003FECFF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD87E03EB0FC000
-38EC0380000091C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7FCA2B81280A3
-6C1600A2C76CC8FCAF143EA229297DAF30>I<EA03E0EA0FF0EA1FF813FCEA3FFEA213FF
-A27EA27E1203EA007FA2137E13FEEA01FC1203EA07F8EA3FF0127FEAFFE0EA7F80130012
-3C1019708B30>I<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120FEA3FC0EA7FE0
-A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A21507A2ED0FF0
-A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA24A5AA2
-4A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249C8FCA2485AA2
-5B1203A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA225477BBE30>I<14
-FE903807FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F4848EB3FC04848
-EB1FE049130F001F15F0491307A24848EB03F8A290C712014815FCA400FEEC00FEAD6C14
-016C15FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A26C6CEB3FC06C
-6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FEC7FC273A7CB8
-30>I<EB03C0497EA2130FA2131FA2133F137F13FF1203123FB5FCA213EF138FEA7E0F12
-00B3B0003FB512F84814FCB612FEA26C14FC6C14F81F3977B830>I<EB07FC90383FFFC0
-90B512F00003804814FE4880261FF80F1380263FE00113C09038C0007F4848EB3FE090C7
-121FED0FF04814075A6C15F81503A3127E1218C8FCA2150716F0150F16E0151F16C0153F
-ED7F8015FF4A13005DEC07FC4A5A4A5A4A5A4A5A4A5A4990C7FC495A495AEB0FF0EB3FE0
-495A495A4890C8FC4848EB01F04848EB03F8485AEA1FE048B6FCB7FCA37E6C15F025397B
-B830>I<EB03FF013F13E090B512F84814FE4880481580260FFE0113C09038F0007F4848
-EB1FE0150F16F01507A26C5A6C5AC8FC150F16E0A2151FED3FC0157FEDFF800207130090
-3807FFFE495B5D8115FF6D1480D9000113C09138003FE0ED1FF0ED07F8150316FC150116
-FE1500A21218127EB4FCA2150116FC4814036C15F86C6C13076DEB1FF0D83FF0133F3A1F
-FE01FFE06CB612C06C15806CECFE00C65C013F13F001031380273A7CB830>I<EC03FC4A
-7E140F141FA2143F147F157E14FEA2EB01FCEB03F8A2EB07F0A2EB0FE0EB1FC0A2EB3F80
-A2EB7F0013FEA2485A485AA2485AA2485A485AA2485AA248C7FC12FEB8FC1780A46C1600
-C8007EC7FCAA91387FFFFE91B6FCA46E5B29397DB830>I<000FB612804815C05AA31680
-0180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039F0007FC049133F0180
-EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC150716F048140F6C15
-E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C6C14E06C6C13
-80D90FFCC7FC25397BB730>I<EC0FF8EC7FFF49B51280010714E0131F4914F090387FF8
-0F9039FFC007F84813803803FE005B485A4848EB03F0ED01E0484890C7FC5B123F5BA212
-7FEB000C903803FFE0010F13F8D8FF3F13FE48B6FCB7128016C09039FE007FE001F8EB1F
-F001E0130F49EB07F8ED03FC5B90C7120116FE1500A37EA46C7E15016D14FC121F6D1303
-000FEC07F86D130F6C6CEB1FF06DEB3FE03A03FF81FFC06C90B512806C15006D5B011F13
-F8010713E001011380273A7CB830>I<127CB712FC16FEA416FC48C7EA0FF816F0ED1FE0
-007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5AA24AC7FCA25C5C
-13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830>I<49B4FC011F
-13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003FF049131FD83FC0EB07
-F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6CEB1FE0D807FCEB
-7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE48802607FE0013C0D8
-0FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C712014815FE481400A66C14
-016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE06C90B512C06C15
-80C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13E0013F13F890B5
-7E4880488048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0FF048481307A290
-C7EA03F85A4815FC1501A416FEA37E7E6D130315076C7E6C6C130F6D133FD80FFC13FF6C
-B6FC7E6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8A2150716F0150F00
-0F15E0486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC90B55A6C5C6C5C6C
-1480C649C7FCEB3FF0273A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0
-EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C276EA630>I<
-EA03C0EA0FF0EA1FF8A2EA3FFCA4EA1FF8A2EA0FF0EA03C0C7FCAFEA03C0EA0FF0121F13
-F8123F13FCA3121FA2120F12031200120113F8120313F01207EA1FE0123FEA7FC0EAFF80
-EA7F00127E12380E3470A630>I<16F01503ED07F8151F157FEDFFF014034A13C0021F13
-8091383FFE00ECFFF8495B010713C0495BD93FFEC7FC495A3801FFF0485B000F13804890
-C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA1FFF6C7F000313E06C7F38007FFC6D7E90380FFF
-806D7F010113F06D7FEC3FFE91381FFF80020713C06E13F01400ED7FF8151F1507ED03F0
-1500252F7BB230>I<007FB7FCA2B81280A36C16006C5DCBFCA7003FB612FE4881B81280
-A36C1600A229157DA530>I<1278127EB4FC13C07FEA7FF813FEEA1FFF6C13C000037F6C
-13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF806E13C0020113F080
-ED3FF8151F153FEDFFF05C020713C04A138091383FFE004A5A903801FFF0495B010F1380
-4990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE05B90C9FC127E1278
-252F7BB230>I<EB1FFE90B512E0000314F8000F14FE4880481580267FF80313C09038C0
-007F48C7121F16E0150FA3127E151F0018EC7FC0C812FF020313804A13004A5AEC1FF84A
-5AEC7FC04A5A92C7FC495AA2495A5CA213075CA86D5A90C9FCA8EB01C0EB07F0A2497EA3
-6D5AA2EB01C023397AB830>I<EC1FE0ECFFF8010313FE010F7F4914804914C090397FF0
-3FE09038FF800F4890380007F0D803FC13033A07F801FBF89038F007FF380FE01F4A13FC
-EA1FC0495A003FEBFF0F903800FE07903901FC03FE007FEBF801EA7E03ECF000A2EAFE07
-00FC49137EAA00FE6D13FED87E0314FCA2ECF801D87F0114F8003FEBFC03903900FE07F0
-903880FF0F001F90387FFFE06D6C13C0EA0FE06E13803A07F007FE009038F801F86C6CC7
-127C6CB414FE6CEB800390387FF01F6DB512FC6D14F86D14E0010314C00100EBFE00EC1F
-F0273A7CB830>I<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1A2011F
-7FA490383F80FEA590387F007FA4498049133F90B6FCA34881A39038FC001F0003814913
-0FA4000781491307A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>I<007FB5
-12F0B612FE6F7E82826C813A03F8001FF815076F7E1501A26F7EA615015EA24B5A1507ED
-1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E1500167FA3EE3F80
-A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7FC29387EB730>I<
-91387F803C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F3903FE
-000F484813075B48481303A2484813015B123F491300A2127F90C8FC167C16005A5AAC7E
-7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0FF03901
-FF801F6C9038E07FE06DB512C06D14806D1400010713FC6D13F09038007FC0273A7CB830
->I<003FB512E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF8150F6F7E6F7E15016F
-7EA2EE7F80A2163F17C0161FA4EE0FE0AC161F17C0A3163F1780A2167F17005E4B5A1503
-4B5A150F4B5AED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B387FB730>I<007FB7
-FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EBF800A4157C92
-C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<003FB712804816C0B8
-FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA69038FC007FA4153E92
-C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103EBC0F8010F13F101
-3F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F485A491307121F5B123F
-491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C6D1400ED03F8A27F
-003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C137FECC1FF6C90B5FC7F
-6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<3B3FFF800FFFE0486D4813F0
-B56C4813F8A26C496C13F06C496C13E0D803F8C7EAFE00B290B6FCA601F8C7FCB3A23B3F
-FF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E02D387FB730>I<007FB6
-FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500213879B730>I<49
-B512F04914F85BA27F6D14F090C7EAFE00B3B3123C127EB4FCA24A5A1403EB8007397FF0
-1FF86CB55A5D6C5C00075C000149C7FC38003FF025397AB730>I<383FFFF8487FB57EA2
-6C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA27E6C16802A387EB730>
-76 D<D83FF8ECFFE0486C4913F0486C4913F8A2007F16F06C6C4913E00007160001EF14
-BFEC800FA39039E7C01F3FA4ECE03F01E3133EA2ECF07EA201E1137CA2ECF8FCA201E013
-F8A214FDEC7DF0A3147FEC3FE0A3EC1FC0A2EC070091C7FCADD83FFC903801FFE0486C49
-13F0B54913F8A26C486D13F06C486D13E02D387FB730>I<D83FFC90381FFF80486C4913
-C0B54913E0A26C6D6C13C06C6E13800003913801F800EBF7C0A3EBF3E0A314F013F1A214
-F8A213F014FCA2147C147EA2143E143FA2141FA21581A2140F15C1A2140715E1A2140315
-F1A21401A215F91400A3157DA3153FEA3FFF481380B5EAC01FA26CEB800F6C496C5A2B38
-7EB730>I<90383FFFE048B512FC000714FF4815804815C04815E0EBF80001E0133FD87F
-80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A36D130FA26D131F6C6CEB
-3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E0253A7BB830>I<007F
-B512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7EA2821780163FA616
-7F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001F8C9FCB0387FFFC0
-B57EA46C5B29387EB730>I<003FB57E4814F0B612FC15FF6C816C812603F8017F913800
-3FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93C7FC5D
-8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFFF8B5
-6C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>82 D<90390FF803C0D97FFF13
-E048B512C74814F74814FF5A381FF80F383FE001497E4848137F90C7123F5A48141FA215
-0FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C80011F13
-FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07F8A2007C140312FEA56C14
-0716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8D8F8
-1F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA43AFE003F800FA8007CED07
-C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I<3B7FFFC007FFFCB56C4813
-FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C6C14FE6D13016D5CEC8003
-90393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038007FFCEC1FF02F3980B730
->I<D87FFE90380FFFC0B54913E06E5AA24A7E6C486D13C0D807F0903801FC00A26D1303
-00035DA46C6C495AA46C6C495AA46D131F6D5CA3EC803F013F5CA46D6C48C7FCA490380F
-E0FEA401075B14F1A301035BA314FB01015BA314FFA26D5BA46E5A6E5A2B397EB730>I<
-D83FFC903801FFE0486C4913F000FF16F8A2007F16F06C486D13E0D81FC09038001FC000
-0F1680A76D143F00071600A7000390380F803E9039F01FC07EEC3FE0A3EC7FF0A2147D00
-01157CA29039F8FDF8FCA314F8A300005D01F913FCA2ECF07CA201FD137DA2017D5CECE0
-3DA3017F133FA2ECC01FA2013F5CA2EC800F6D486C5A2D397FB730>I<3A3FFF01FFF848
-01837F02C77FA202835B6C01015B3A01FC007F806D91C7FC00005C6D5BEB7F01EC81FCEB
-3F8314C3011F5B14E7010F5B14FF6D5BA26D5BA26D5BA26D90C8FCA4497FA2497FA2815B
-81EB0FE781EB1FC381EB3F8181EB7F0081497F49800001143F49800003141F4980000714
-0FD87FFEEB7FFFB590B5128080A25C6C486D130029387DB730>I<007FB5FCB61280A415
-0048C8FCB3B3B3A5B6FC1580A46C140019476DBE30>91 D<127CA212FEA27EA26C7EA26C
-7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA26D7EA26D7EA26D7EA26D7EA26D7EA2
-6D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7EA26E7EA26E7EA2140181A26E7EA2ED
-7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503A2ED01F0150025477BBE30>I<007F
-B5FCB61280A47EC7123FB3B3B3A5007FB5FCB6FCA46C140019477DBE30>I<1307EB1FC0
-EB7FF0497E000313FE000FEBFF80003F14E0D87FFD13F039FFF07FF8EBC01FEB800F38FE
-0003007CEB01F00010EB00401D0E77B730>I<007FB612F0A2B712F8A36C15F0A225077B
-7D30>I<1338137CEA01FE12031207EA0FFC13F0EA1FE013C0EA3F8013005A127EA212FE
-5AA5EAFFC013E013F0127FA2123FA2EA1FE0EA07C00F1D70BE30>I<EB3FFC48B57E4814
-E04880488048809038F00FFE9038E001FF806F7E6C48133F6C4880C8121FA491B5FC130F
-137F48B6FC12075A48EBC01F383FFC00EA7FE0138048C7FC5AA46C143FA26C6C137F9038
-C001FF263FF80FEBFFC06CB712E0A2000714F76C14C3C6020013C0D93FF090C7FC2B2A7C
-A830>I<EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF80027F13E091B57E90B6
-12FC82ECFE079138F001FF4A6C13804A137F4AEB3FC091C7121F4915E0160FA217F01607
-A8160FA217E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E49
-5CD97E7F13C0D93C1F90C7FC90380003FC2C3980B730>I<ECFFE0010713FC011F7F017F
-7F90B612804815C048EB807F3907FC003F485A485A49EB1F804848EB0F004990C7FC127F
-90C9FCA25A5AA87E7EA27F003FEC07C06DEB0FE06C7E6D131F6C6C14C0D807FE133F9039
-FFC0FF806C90B5FCC615006D5B011F13F801075B01011380232A7AA830>I<913801FFE0
-4A7F5CA28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0
-133F49131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E
-6D137F390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0
-D907FCC8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E48804801811380
-3A07FC007FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7
-FCA516F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FF
-C07FE06C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>I<EDFF80
-020713E0021F13F05C4A13F891B5FC491387903803FE079138FC03F0903907F800C04A13
-00A8003FB612C04815E0B7FCA36C15C0260007F0C7FCB3A9003FB512FE4880B71280A26C
-15006C5C25397DB830>I<D903FC13FF90261FFF8713C04913DF90B712E05A5A2607FE07
-138F903AF801FE07C048486C6CC7FCA2497F001F8149133FA56D137F000F92C7FC6D5BA2
-6C6C485AEBFE0790B55A5D485C15C001DF5BD9C3FCC8FC01C0C9FCA37F7F6CB512F015FF
-6C15C04815F0488148813A3FE0001FFE0180130148C8127F007E8100FE168048151FA56C
-153F007FED7F006D5C6C6C495A01F013076CB4EB7FFC6C90B55A6C5D000115C06C6C91C7
-FC011F13FC010113C02B3E7DA730>I<EA3FFC487E12FFA2127F123F1200AAEC01FE9138
-0FFF80023F13E091B57E90B67EA29138FE07FCECF8039138E001FE14C0EC8000A291C7FC
-A25BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F3880B7
-30>I<14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3
-A9003FB612C04815E0B7FCA27E6C15C023397AB830>I<EC01C0EC07F0A2EC0FF8A3EC07
-F0A2EC01C091C7FCA990B512F04814F8A47EEB0003B3B3A5EC07F0A2123C007EEB0FE0B4
-131FEC3FC0147F90B512806C14005C6C5B000F13F0000313C01D4E7CB830>I<EA7FF848
-7EA4127F1200AB0203B512804A14C017E0A217C06E14809139001FE0004B5A4B5A4BC7FC
-4A5A4A5AEC0FF84A5A4A5A4A5A4A5A01FD7F90B57E8114F7ECE3F8ECC1FCEC81FEEC00FF
-497F496D7E6F7E826F7E15076F7E6F7E3B7FFFF81FFFE0B56C4813F017F8A217F06C496C
-13E02D387FB730>I<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025
-387BB730>I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F
-13872607FE07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF
-07FF80B548018F13C0A46C486C01071380322881A730>I<EC01FE3A3FFC0FFF80267FFE
-3F13E000FF90B57E90B67E7E6C9038FE07FCC6EBF8039138E001FE14C0EC8000A291C7FC
-A25BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F2880A7
-30>I<49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3F
-E0D81FE0EB0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15
-FCA26D1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90
-B512806C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830>I<EC03FE3A3FFC1FFF
-80267FFE7F13E000FF90B57E90B612FC6C816CEBFE07C69038F001FF4A6C13804A137F4A
-EB3FC091C7121F4915E0160FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E
-13FFDAF00313009138FC0FFE91B55A5E495C6E13C0021F90C7FCEC03FC91C9FCAD383FFF
-F8487FB57EA26C5B6C5B2C3C80A730>I<49B413F8010FEBC1FC013F13F14913FD48B6FC
-5A481381390FFC007F49131F4848130F491307485A491303127F90C7FC15015A5AA77E7E
-15037FA26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C90B5FC6C14FD6C14
-F9013F13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E14F82E3C7DA730>I<
-ED07F83A3FFF803FFF486DB51280B512C302CF14C06C13DF6C9038FFFC3FD8001F13E092
-38801F809238000F004A90C7FC5C5C5CA25CA45CAF003FB512FC4880B7FCA26C5C6C5C2A
-287EA730>I<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880A4
-6C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F903800
-0FFF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF00
-90B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>I<EB0780497E131FA900
-3FB612E04815F0B7FCA36C15E026001FC0C7FCB216F8ED01FCA5ECE003010FEB07F814F0
-9138FC1FF06DB512E06D14C016806D14009038007FFCEC1FF026337EB130>I<D83FFCEB
-3FFC486C497E00FF14FFA2007F147F003F143F00001400B3A41501A2150315076D130F90
-3A7FC07FFFF891B612FC6D15FE7F6D4913FC6D9038F87FF8010001C0C7FC2F2880A630>
-I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D1307
-00005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0
-FE01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFF
-C01FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157EA5
-6D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A301
-7E13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3A3FFF81FF
-FC4801C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F81FC90381FC3F8EB
-0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7E0EB07E790380FE3
-F0ECC1F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48486D7E267FFF80B5
-FCB500C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07FFF80486DB512C0B5
-15E0A26C16C06C496C13803B01FC0003F000A2000014076D5C137E150F017F5C7F151FD9
-1F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9ECFD
-F0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EBC3
-F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<001FB612FC4815FE
-5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A4A
-5A4A5A4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7127F485A485A485A
-485A485A48B7FCB8FCA46C15FE28277DA630>I<ED3FF0913803FFF8140F5C147F16F091
-38FFF00092C7FC495A5CB3A21303495A133F383FFFF0B55A5C91C8FC14C080003F7F3800
-3FF813076D7E1301B3A2806D7E15F091387FFFF016F8141F8014039138003FF025477BBE
-30>I<127CA212FEB3B3B3AD127CA207476CBE30>I<EA7FE0EAFFFE6D7E8014F07EC66C7E
-13076D7E1301B3A2806D7E15E091387FFFE06E13F8801407141F5C4A13E09138FFE00092
-C7FC495A5CB3A21303495A137F387FFFF0B5FC14C05C49C8FCEA7FE025477BBE30>I<01
-7C133848B4137C48EB80FE4813C14813C348EBEFFC397FEFFFF0D8FF8713E0010713C048
-6C1380D87C0113003838007C1F0C78B730>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fs cmbx12 17.28 40
-/Fs 40 121 df<EA01FCEA07FF4813804813C04813E04813F014F8B5FCA214FCA314FEA2
-7EA27E7E6C13BE6C133EEA01FCC7FCA2147E147CA314FC14F8A2130114F01303A2EB07E0
-A2EB0FC0A2EB1F80EB3F005B13FE485A485A485A485A5B6C5A6CC7FC173174942D>44
-D<16F04B7E1507151F153FEC01FF1407147F010FB5FCB7FCA41487EBF007C7FCB3B3B3B3
-007FB91280A6395E74DD51>49 D<913801FFF8021FEBFFC091B612F8010315FF010F16C0
-013F8290267FFC0114F89027FFE0003F7F4890C7000F7F48486E7FD807F86E148048486E
-14C048486E14E048486F13F001FC17F8486C816D17FC6E80B56C16FE8380A219FFA283A3
-6C5BA26C5B6C90C8FCD807FC5DEA01F0CA14FEA34D13FCA219F85F19F04D13E0A294B512
-C019804C14004C5B604C5B4C5B604C13804C90C7FC4C5A4C5A4B13F05F4B13804B90C8FC
-4B5AED1FF84B5A4B5A4B48143F4A5B4A48C8FC4A5A4A48157E4A5A4A5AEC7F8092C9FC02
-FE16FE495A495A4948ED01FCD90FC0150749B8FC5B5B90B9FC5A4818F85A5A5A5A5ABAFC
-A219F0A4405E78DD51>I<92B5FC020F14F8023F14FF49B712C04916F0010FD9C01F13FC
-90271FFC00077FD93FE001017F49486D8049C86C7F484883486C6F7F14C0486D826E806E
-82487FA4805CA36C5E4A5E6C5B6C5B6C495E011FC85A90C95CA294B55A614C91C7FC604C
-5B4C5B4C5B4C5B047F138092260FFFFEC8FC020FB512F817E094C9FC17F817FF91C7003F
-13E0040713F8040113FE707F717F7113E085717FA2717F85A285831A80A31AC0EA03FCEA
-0FFF487F487F487FA2B57EA31A80A34D14005C7E4A5E5F6C495E49C8485BD81FF85F000F
-5ED807FE92B55A6C6C6C4914806C01F0010791C7FC6C9026FF803F5B6D90B65A011F16F0
-010716C001014BC8FCD9001F14F0020149C9FC426079DD51>I<F01F804E7E187F18FFA2
-5F5F5F5FA25F5F5FA294B5FC5E5E5EA25E5EEE3FBFEE7F3FA216FEED01FCED03F8ED07F0
-A2ED0FE0ED1FC0ED3F8016005D15FE4A5A4A5AA24A5A4A5A4A5A4A5AA24AC7FC14FE495A
-5C1303495A495A495A5C133F49C8FC13FE485AA2485A485A485A5B121F485A48C9FC12FE
-BCFCA6CA6CEBC000B1037FB8FCA6485E7CDD51>I<01C0EE01C0D801F8160F01FF167F02
-F0EC07FFDAFF8090B5FC92B7128019006060606060606095C7FC17FC5F17E0178004FCC8
-FC16E09026FC3FFCC9FC91CBFCADED3FFE0203B512F0020F14FE023F6E7E91B712E001FD
-D9E00F7F9027FFFE00037F02F801007F02E06EB4FC02806E138091C8FC496F13C04917E0
-7113F0EA00F090C914F8A219FC83A219FEA419FFA3EA03F0EA0FFC487E487E487FA2B57E
-A319FEA35C4D13FC6C90C8FC5B4917F8EA3FF001804B13F06D17E0001F5E6C6C17C06D4B
-1380D807FC92B512006C6C4A5B6C6C6C01075B6C01E0011F5BD97FFE90B55A6DB712C001
-0F93C7FC6D15FC010115F0D9003F1480020301F0C8FC406078DD51>I<EE1FFF0303B512
-E0031F14F892B612FE0203814AD9FC037F021F9039C0007FC04A90C7EA1FE0DAFFFC6E7E
-494914074949EC7FF8494914FF49495B4949497F4990C7FC495D5C13FF485BA25A4A6E5B
-5A715B48496E5B725A4894C8FCA35AA35C48913801FFE0030F13FE033F6D7E4B14E092B6
-12F89126E1FE037FB53AE3F0007FFEDAE7E06D7EDAEFC06D7F4B6D7F02FFC76C7F4A8271
-7F4A82A24A828385A24A1780A54A17C0A37EA77EA47E6E1780A27EA21A007E4D5B7E6E5E
-7E6E5E6C4C5B6D7E013F4B5B6D6C4A5B6D01C0495B6D6D90B5C7FC6DD9FC0713FC6D90B6
-5A6D5E023F15C0020F92C8FC020114F8DA001F1380426079DD51>I<EA07E0120F7F13FC
-EBFFFC91B912F8A45AA21AF01AE01AC01A801A00A248606161616101E0C9123F01804C5A
-48CA485A4D90C7FC60007E4C5A17074D5A4D5A4D5A485F4D5A17FF4C90C8FCC9485A5F4C
-5A160F4C5A5F163F4C5A16FF5F5D94C9FC5D5D5E150FA24B5AA2153FA24B5AA215FFA34A
-5BA25CA35CA44A5BA45CA65CAD6E5BA26E5BDA03FECAFC6E5A456377E051>I<91380FFF
-F849B612C0010F15F8013F15FE496F7E2701FFF80080480180011F13F0D807FCC700077F
-D80FF080484882003F8301F880486C827FB5178080A76C90C7FC4C14006C5A6C5AD807F0
-4A5BC95C5E4C5B604C5B4C138093B5C7FC4B13FC5F4B13E05F4B5B4B90C8FC5E5E4B5A5E
-4B5AA25E4B5AA293C9FCA215FEA35DAE5D92CAFCABEC01FCEC07FF4A7F023F13E0A24A7F
-A291B57EA76E5BA26E5BA2020F13806E90C9FCEC01FC396577E44C>63
-D<F00FE04E7EA24E7EA34E7EA24E7EA34D7FA24D80A24D80A34D80A24D80A34D80A2DD7F
-BF7FA2181F05FF8017FE04016D7FA24D7E04038217F804076D80A24D7E040F8217E0041F
-6D80A24D7F043F825F047F6E7FA294C77E4C825E03016F7FA24C800303845E03076F80A2
-4C80030F845E031F6F80A24C81033F845E037F707F93B9FCA292BA7EA24A85A203FCC912
-070203865D020771805D86020F864B82021F865D87023F864B83027F8692CBFC874A864A
-840101875C496C728090381FFFC0B700E092B812FEA66F647BE37A>65
-D<4DB5ED03C0057F02F014070407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC
-137F033F9127F8007FFE13FF92B6C73807FF814A02F0020113C3020702C09138007FE74A
-91C9001FB5FC023F01FC16074A01F08291B54882490280824991CB7E4949844949844949
-8449865D49498490B5FC484A84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA448
-99C7FCA25CA3B5FCB07EA380A27EA2F50FC0A26C7FA37E6E1A1F6C1D80A26C801D3F6C6E
-1A00A26C6E616D1BFE6D7F6F4E5A7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F6D02E04D5A
-6E6DEFFF806E01FC4C90C7FC020F01FFEE07FE6E02C0ED1FF8020102F8ED7FF06E02FF91
-3803FFE0033F02F8013F1380030F91B648C8FC030117F86F6C16E004071680DC007F02F8
-C9FC050191CAFC626677E375>67 D<BB12E0F2FF801BF01BFE757E1CF0D800010280C700
-0780DF007F13FE080F6D7E0801807480093F7F090F13FC757F757F877580767F8A88767F
-8A888AA2767FA28A881F80A37614C0A41FE0A5881FF0B05214E0A51FC0A4521480A31F00
-6466A2525BA2525BA2525B666499B55A515C5191C7FC515B515B515B097F5B50B512C008
-075C083F91C8FC0707B512FCBD12F01CC051C9FC1BF81B8008E0CAFC6C627AE17C>I<4D
-B5ED03C0057F02F014070407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F
-033F9127F8007FFE13FF92B6C73807FF814A02F0020113C3020702C09138007FE74A91C9
-001FB5FC023F01FC16074A01F08291B54882490280824991CB7E49498449498449498449
-865D49498490B5FC484A84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C8
-FCA25CA3B5FCB07E071FB812F880A37EA296C70001ECC000A26C7FA37E807EA26C80A26C
-80A26C807F6D7F816D7F7F6D7F6D6D5F6D14C06D6E5E6E7F6E01FC5E020F01FF5E6E02C0
-ED7FEF020102F8EDFFC76E02FF02071383033F02FC013F1301030F91B638FC007F03014D
-131F6F6C04E01307040704801301DC007F02F8CAFC050191CBFC6D6677E37F>71
-D<B96C90B91280A6D8000102C0C9000102C0C7FCB3B3A293BBFCA604C0C91201B3B3A6B9
-6C90B91280A671627AE17E>I<B912E0A6C702E0C7FCB3B3B3B3AEB912E0A633627CE13C>
-I<B700E0040FB7128082828282A2D800016EDC000101FCC7FC719338001FC08383A28302
-FD808302FC80816F7F6F806F8084816F806F806F8084707F827080708085708082708070
-8085717F83718071807180868371807180727F8672808472807280877280847280737F87
-731480857314C07314E01CF07314F8857314FC7413FE7413FF1D9F867414DF7414FF86A2
-86868787A287878787A28787888888A288888890261FFFC084B712F8881D7F1D3F1D1F77
-5A71627AE17E>78 D<DBFFFCEC01E0020FD9FFE01303027F02FC130749B7130F0107EEC0
-1F011F16F049D9C007EBF83F4948C7383FFE7FD9FFF8020FB5FC4801E014014849804849
-153F91C97E484882001F834982003F83845B007F187FA2193FA200FF181FA27F190FA27F
-A26D17078080806C01F893C7FC80ECFF8015F86CECFFC016FC6CEDFFE017FE6CEEFFE018
-F86C17FE6C717E6C846C846D17F86D836D836D8313036D18806D6C17C0020F17E01401DA
-000F16F01500040715F8EE007F1703050014FC183F84060713FE84A2007C8300FC83A219
-7FA3193F7EA31AFC7EA27F1AF86D177F7F1AF06D17FF6D18E06D5E01FF18C06E4B138002
-E04B130002F84B5A02FFED3FFC01CF01E0ECFFF8018301FF010F5B010191B65A6D6C5E48
-011F93C7FC48010315FC48D9003F14E048020149C8FC476677E35A>83
-D<001FBEFCA64849C79126E0000F148002E0180091C8171F498601F81A0349864986A249
-1B7FA2491B3F007F1DC090C9181FA4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3
-021FBAFCA663617AE070>I<B96C023FB612FEA6D8000102C0CA0007EBF000E2007FC7FC
-B3B3B3AA656D63A2821C01806570170380525A6E7F6E4F5A70171F6E626E6D4D5A6E6D17
-7F525A6E6E030390C8FC033F01E04B5A6F6DED1FFC6F01FCED7FF80303D9FF80903803FF
-E06F02F8017F5B6F6C90B7C9FC041F5E040716F8040016C0050F4ACAFCDD003F13C06F64
-7AE17C>I<B800F8011FB80203B7FCA6D8000F91C9000102E0CAEBFE006D72F20FF07072
-715A230F6D73627072171F6D6A708277173F6D7397C7FC70846B6E72197E707217FE6E72
-6170855118016E6870731503636E68704C6E15076E68718451180F6EDE7E7F607172151F
-6E06FE61714B7E08016F153F6E4E6C95C8FC71840803616F4D6C177E7102076F15FE6F66
-714B7E080F7013016F4D6C5F7185081F18036F4D6C5F71023F7013076F94C75F72845018
-0F6F047E6E5E7272131F1AFE6F4C6E5EDEE00171133F6F4C6E93C9FC06F084070361704B
-6E157E06F87213FE1907704B6E5DDEFC0F1881704B6E5D06FE19C1071F18C3704B6E5DDE
-FF3F18E7706407BFC9FC07FF18FF704A705CA3704A705CA27099CAFC4F82A27149705BA3
-7149705BA27149705BA37149705BA37190CB5BA27148725AA37148725A714872CBFCA063
-7DE1A7>87 D<913803FFFE027FEBFFF00103B612FE010F6F7E4916E090273FFE001F7FD9
-7FE001077FD9FFF801017F486D6D7F717E486D6E7F85717FA2717FA36C496E7FA26C5B6D
-5AEB1FC090C9FCA74BB6FC157F0207B7FC147F49B61207010F14C0013FEBFE004913F048
-B512C04891C7FC485B4813F85A5C485B5A5CA2B55AA45FA25F806C5E806C047D7F6EEB01
-F96C6DD903F1EBFF806C01FED90FE114FF6C9027FFC07FC01580000191B5487E6C6C4B7E
-011F02FC130F010302F001011400D9001F90CBFC49437CC14E>97
-D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF80047F14F00381B612FC038715FF
-038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02007F03F8824B6F7E4B6F1380
-4B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA44F13F8A31BF0A24F13E0A24F
-13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C495B9126F83FE0013F13C09127
-F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C7001F91C8FC90C8000313E04F65
-7BE35A>I<F17FF8050FB5FCA6EF000F8484B3A892380FFF804AB512F8020F14FE023FEC
-FF8391B712E301039138807FF3499039F8000FFB011F01E00103B5FC494913004990C87E
-49488148498148834A815A485BA2485BA25AA3485BA4B5FCAE7EA46C7FA37EA26C7FA26C
-5F806C5F6C6D5D6C6D5D017F93B5FC6D6C6C0103806D6D49806D01F0D91FF7EBFFFE6D90
-39FE01FFE7010190B612876D6CECFE07021F14F8020314E09127003FFE00ECC0004F657B
-E35A>100 D<92380FFFC04AB512FC020FECFF80023F15E091B712F80103D9FE037F4990
-39F0007FFF011F01C0011F7F49496D7F4990C76C7F49486E7F48498048844A804884485B
-727E5A5C48717EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA380A27EA27E6E
-160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01E04A5A6D
-6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715E0020092
-C8FC030713F041437CC14A>I<EE3FFC0307B51280033F14C04AB612F0020715F84A9038
-F03FFC4AEB807F913A7FFE00FFFE4A5A4B4813FF4913F05B4913E0A24913C0A27013FE49
-49EB7FFCEF3FF8EF1FF0EF07C094C7FCB0B812C0A6D8001F01C0C8FCB3B3B0007FB612FC
-A638657CE431>I<F107F8DB7FFEEC3FFE020FB5D8F001B5FC027FDAFE03148049B7128F
-49DCDFFD13C0010FD9F00FEBFFC149D9800114014990C7EBFC0349486E6C7E4948EC3FFF
-48496E018113800780130048F0C03E97C7FC48496E7FA34884A96C60A36C6D4A5BA26C60
-A26C6D4A90C8FC6D6C4A5A6D6C4A5A6D6D485BDBF00F5B4990B612C060D97C7F4AC9FCD9
-FC0F14F09126007FFECAFC92CCFC1201A47FA27F8014F091B77E18FE6CEFFFC019F06D17
-FC19FF6D846D846D846D84013F8490BAFC0003854801E0C712014890C9000F7F48481601
-4848EE007F4848717E8512FF5B85A56D5F007F616D173F003F616D177F6C6C4D5A6C01C0
-03035B6C6D4B5B6C01F8031F5BC601FF92B5C7FC6D01F8011F5B011F90B712F8010717E0
-010094C8FC020F15F0DA003F01FCC9FC4A607CC151>I<903807FF80B6FCA6C6FC7F7FB3
-A8EF1FFF94B512F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FDB83F86D7F
-DB87F07FDB8FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007B7
-1280A651647BE35A>I<EB0FE0EB3FF8497E48B5FCA24880A24880A76C5CA26C91C7FCA2
-38007FFC6D5AEB0FE090C9FCAF903807FF80007FB5FCA6C6FC7F7FB3B3AEB712C0A62265
-7BE42C>I<ED01FCED07FF4B1380033F13E0A24B13F0A292B512F8A76F13F0A26F13E0A2
-030F13806F1300ED01FC92C8FCAFEEFFF8021FB5FCA6EC000F8181B3B3B3AAEA07F0EA1F
-FC487E487EB56C4813F0A317E05D17C05D17806C4948130049495A6C48495A261FFE0313
-F06CB65A6C158000014AC7FC6C6C13F8010713802D8288E431>I<903807FF80B6FCA6C6
-FC7F7FB3B3B3B3ADB712E0A623647BE32C>108 D<902607FF80D91FFFEEFFF8B691B500
-F00207EBFF80040702FC023F14E0041F02FF91B612F84C6F488193267FE07F6D4801037F
-922781FE001F9027E00FF0007FC6DA83F86D9026F01FC06D7F6DD987F06D4A487F6DD98F
-C0DBF87EC7804C6D027C80039FC76E488203BEEEFDF003BC6E4A8003FC04FF834B5FA24B
-5FA24B94C8FCA44B5EB3B2B7D8F007B7D8803FB612FCA67E417BC087>I<902607FF80EB
-1FFFB691B512F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FC6DA83F86D7F
-6DD987F07F6DD98FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F0
-07B71280A651417BC05A>I<923807FFE092B6FC020715E0021F15F8027F15FE494848C6
-6C6C7E010701F0010F13E04901C001037F49496D7F4990C87F49486F7E49486F7E48496F
-13804819C04A814819E048496F13F0A24819F8A348496F13FCA34819FEA4B518FFAD6C19
-FEA46C6D4B13FCA36C19F8A26C6D4B13F0A26C19E06C6D4B13C0A26C6D4B13806C6D4B13
-006D6C4B5A6D6D495B6D6D495B010701F0010F13E06D01FE017F5B010090B7C7FC023F15
-FC020715E0020092C8FC030713E048437CC151>I<902607FF80EBFFF8B6010FEBFF8004
-7F14F00381B612FC038715FF038F010114C09227BFF0003F7FC6DAFFC0010F7F6D91C76C
-7F6D496E7F03F86E7F4B6E7F4B17804B6F13C0A27313E0A27313F0A21BF885A21BFCA385
-1BFEAE4F13FCA41BF861A21BF0611BE0611BC06F92B512801B006F5C6F4A5B6F4A5B03FF
-4A5B70495B04E0017F13C09226CFFC03B55A03C7B648C7FC03C115F803C015E0041F91C8
-FC040313E093CBFCB3A3B712F0A64F5D7BC05A>I<D90FFFEB0FFCB690383FFF8093B512
-E04B14F04B14F8923907FC7FFC92390FE0FFFEC6EC1F806DD93F0113FF6D133E157E157C
-15F8A215F07013FEA24BEB7FFCEF3FF8EF0FE04B90C7FCA55DB3B0B712F8A638417BC042
->114 D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48B8FC48EBE0014890
-C7121FD80FFC1407D81FF0801600485A007F167F49153FA212FF171FA27F7F7F6D92C7FC
-13FF14E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C826C82013F168001
-0F16C01303D9007F15E0020315F0EC001F1500041F13F81607007C150100FC81177F6C16
-3FA2171F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D0203130002C0EB0F
-FE02FCEB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F13E035437BC140>
-I<EC07E0A6140FA5141FA3143FA2147FA214FF5BA25B5B5B5B137F48B5FC000F91B512FE
-B8FCA5D8001F01E0C8FCB3AFEF0FC0AC171F6D6D1480A2173F6D16006F5B6D6D137E6D6D
-5B6DEBFF836EEBFFF86E5C020F14C002035C9126003FFCC7FC325C7DDA3F>I<902607FF
-C0ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60183E6D6D147E4E7F
-6D6D4948806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F5C020314F8DA003F
-018002F0C7FC51427BC05A>I<B70081B600FC0103B512FCA6C66C0180C701FCC8381FFE
-006F6FED03F86D047F5F856F6E16076D646F70140F6D705F866F6E161F6D646F4A6D143F
-6D99C7FC4E7F6F616D1B7E6F4A6D14FE6D6395B57E7001FC15016E62DCC0016E13036EDB
-F87F5D05038004E0496C14076E62DCF007ED800F6E4B6C5D050F15C004F8496C141F6E62
-DCFC1FEDE03F6E4B6C92C8FC053F15F004FE496C5C6E197E7048EDF8FE6E027E6D5C05FE
-15FC4D6D13FD6F601BFF6F496E5BA24D806F60A26F496E5BA24D806F60A26F496E90C9FC
-A294C87E6F5FA26F486F5A047C6F5A6E417DBF75>119 D<007FB600C0017FB512F8A6D8
-001F01F8C70007EBF0006D040190C7FC6D6D5D6D6D4A5A6D6D4A5A70495A6D4C5A6E7F6E
-6D495A6E6D495A7049C8FC6E4A5A6E6D485A6E6D485A6E13FFEF8FF06EEC9FE06FEBFFC0
-6F5C6F91C9FC5F6F5B816F7F6F7F8481707F8493B57E4B805D4B80DB0FF37FDB1FE17F04
-C080153F4B486C7F4B486C7F4A486D7F4A486D7F4A5A4B6D7F020F6E7F4A486D7F4A486D
-804A5A4AC86C7F49486F7F4A6F7F0107707FEB3FFFB600F049B7FCA650407EBF55>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ft cmsy10 10.95 2
-/Ft 2 16 df<EE7FFE0307B512E0033F14FC92B7FC0203D9C00313C0DA0FFCC7EA3FF0DA
-3FE0EC07FCDA7F80EC01FED901FEC9EA7F80D903F8EE1FC0D907E0EE07E04948707E4948
-707E49CB7E017E187E498449844848F00F8000031AC04918074848F003E0A24848F001F0
-A248CD12F8A2001E1A78003E1A7CA2003C1A3C007C1A3EA200781A1EA300F81A1FA2481A
-0FAB6C1A1FA200781A1EA3007C1A3EA2003C1A3C003E1A7CA2001E1A78001F1AF8A26C6C
-F001F0A26C6CF003E0A26C6CF007C06D180F00011A806C6CF01F006D60017E187E6D606D
-6C4C5A6D6C4C5A6D6C4C5AD903F8EE1FC0D901FEEE7F809026007F80DA01FEC7FCDA3FE0
-EC07FCDA0FFCEC3FF0913B03FFC003FFC0020090B6C8FC033F14FC030714E09226007FFE
-C9FC50557BC05B>13 D<EB0FFCEB3FFF90B512C0000314F04880488048804880A2481580
-A3B712C0AA6C1580A36C1500A26C5C6C5C6C5C6C5CC614C0013F90C7FCEB0FFC22227BA7
-2D>15 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fu cmbx12 14.4 61
-/Fu 61 123 df<EEFFFC031FEBFF804AB612E0020781021F9038C00FF8913A7FFE0003FC
-DAFFF0EB00FE4949EB03FF4901805B4990C7487F49485CA2495A4D7F013F6F5B5CA37190
-C7FC715AEF01F894C9FCA90403B512C0BAFCA526003FFCC7120783B3B3A6003FB5D8FC03
-B612C0A542547DD34B>12 D<EA07F0EA1FF8487E487E7FB5FC1480A314C0A37EA27E7EEA
-07F3EA0003A213071480A3130F1400A25B131E133E133C137C5BA2485A485A485A485A48
-C7FC121E120C1228769025>44 D<B712F0AB240B7F9F2D>I<EA07F0487E487E487E487E
-B51280A76C13006C5A6C5A6C5A6C5A1111769025>I<157815FC14031407141F14FF130F
-0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>49
-D<EC3FFE0103B512E0010F14FC013F14FF90B712C048D9C07F7F2703FE000F13F8D807F8
-01037FD80FE06D7F48486D7F48488001F01680486C6E13C07F486C6E13E07FA27013F0A5
-6C5AA26C5AEA0FF0EA03C0C914E05EA218C05E1880A24C13005F4C5A4B5B5F4B5B5F4B5B
-4B90C7FC4B5A5E4B5AED7FE04B5A4A5B4A48C8FC4A5A5D4A48EB01F04A5AEC3F804AC7FC
-02FEEC03E0495A495A495A495AD91F80140749C8FC013E150F017FB7FC90B812C05A5A5A
-5A5A5A5AB9FC1880A4344E79CD43>I<91380FFFC091B512FC0107ECFF80011F15E09026
-3FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15
-E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B
-5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E701380
-7013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FC
-A25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A
-6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C
-17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C
-15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A13
-1F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7
-FCAF020FB712C0A53A4F7CCE43>I<D80380150ED807E0157E01FEEC03FED9FFF0137F91
-B65A5F5F5F5F5F94C7FC5E5E16F016C093C8FC15F801E190C9FC01E0CAFCABEC0FFF027F
-13F001E3B512FE01E76E7E9026FFF8077FDAC0017F49C713F8496E7E49143F4981496E7E
-6C481680C9FC18C08218E0A418F0A3EA0FE0487E487E487E487EA418E0A35B6C484A13C0
-5B491680003EC85A003F17006C6C4A5A6D5D6C6C4A5AD807F8495BD803FE01075B2701FF
-C03F5B6C90B65A013F4AC7FC6D14F8010314C09026007FF8C8FC344F79CD43>I<ED0FFF
-92B512E0020780021F14FC91397FFE03FE903A01FFF0007F4901C0EB3F804990C7121F49
-48EC7FC0494814FF49484913E049485B01FF5C485BA2485B5AA2486F13C04A6D1380486F
-1300177E94C7FC5AA291CAFC5AA21508913801FFF8020713FFB54814C04A14F04AC66C7E
-023C6D7E4A6D7E4A6D7E7013804A15C0A24A15E07013F05C18F8A491C714FCA37EA67EA4
-6C17F880A27E18F06C5D18E06C6D15C07E6E4913806C6D15006D6C495A6D6CEB7FFC6DB4
-48485A6D90B55A010315C0010092C7FC023F13FC020713C0364F7ACD43>I<121F7F7FEB
-FF8091B81280A45A1900606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F
-4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FF
-A24A90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC0
-6E5A395279D043>I<91380FFF8091B512F8010314FE010F6E7E4901037F90267FF8007F
-4948EB3FF048496D7E484980486F7E484980824817805A91C714C05A7013E0A218F0B5FC
-A318F8A618FCA46C5DA37EA25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF80301
-1FB512E36D14C30103028313F89039007FFE03EC00401500A218F05EA3D801F816E0487E
-486C16C0487E486D491380A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD8
-03FC010F5B9027FF807FFEC7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F0364F7A
-CD43>57 D<91B5FC010F14F8017F14FF90B712C00003D9C00F7F2707FC00017FD80FE06D
-7F48486E7E48C87FD87FE06E7E7F7F486C1680A66C5A18006C485C6C5AC9485A5F4B5B4B
-5B4B5B4B5B4B90C7FC16FC4B5A4B5A16C04B5A93C8FC4A5A5D14035D5D14075DA25D140F
-A25DAB91CAFCAAEC1FC04A7EECFFF8497FA2497FA76D5BA26D5BEC3FE06E5A315479D340
->63 D<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C8083047F80167E
-8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E031F81168083033F
-8293C77E4B82157E8403FE824B800201835D840203834B800207835D844AB87EA24A83A3
-DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A82010785A24A82
-010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65
-D<BA12C019FEF1FFC01AF01AFCD8000701F0C7000313FFDE007F7F737F070F7F737F8785
-87858785A287A84F5BA263616361634F5B4F5B077F90C7FC4E485A060713F892B812E097
-C8FC861AF003F0C7000313FE9539003FFF80070F13E0737F07017F87737F747E1C807413
-C0A27413E0A31CF0A386A362A31CE0A2621CC0A250138097B5FC1C004F5B19074F5B073F
-13F04EB55ABC128098C7FC1AF81AC007F8C8FC54527CD160>I<932601FFFCEC01C0047F
-D9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7
-383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982494982494982
-4949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA2
-98C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D
-606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D
-6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F
-93C8FC030715FCDB007F14E0040101FCC9FC525479D261>I<BA7E19FCF1FF801AF01AFC
-D8000701F0C7000F13FF060014C0071F7F070713F807017F737F747E747F747F86747F74
-7F8886888688A2757EA31D8087A21DC0A51DE0A387A963A31DC0A51D80A2631D00A3515A
-A2646264505B6264505B505B5090C7FCF2FFFE4F5B07075B071F5B96B512C0060F91C8FC
-BB5A1AF01AC007FCC9FC19805B527CD167>I<BC1280A5D8000701F8C7000114C0F0001F
-19071901851A7F1A3F1A1FA2F20FE0A21A07A31A03A318F81BF01A01A497C7FC1701A317
-031707170F177F92B6FCA59238F8007F170F170717031701A317001B3EA31B7CA395C8FC
-A21BFCA21BF8A21A01A31A031BF01A071A0FA21A1F1A3FF27FE0F101FF1907191F0603B5
-FCBCFCA21BC0A34F517CD058>I<BB12FEA5D8000701F8C700077FF0007F191F19078585
-8586861B80A21A1FA31A0FA41BC006F81307A497C7FCA31701A317031707170F177F92B6
-FCA59238F8007F170F170717031701A31700A795C9FCB3B812F8A54A517CD055>I<9326
-01FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003
-EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249
-49824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181F
-A3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000A36C7F
-A36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF6D6C6D
-5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE001F03
-0703FC1307DB007F02E01301040149CAFC5B5479D26A>I<B8D8C003B8FCA5D8000701F8
-C9001FEBE000B3AE92BAFCA503F8C9121FB3B1B8D8C003B8FCA560527CD169>I<B812C0
-A5D8000701F8C7FCB3B3B3B2B812C0A52A527CD132>I<B800C091B612F8A5D8000701F8
-C90003EBF8009738007F8051C7FC505AF203F8F20FF0505A505A505A50C8FCF101FCF107
-F84F5A4F5A4F5A4F5A07FEC9FCF003FC4E5A4E5A4E5A4E5A4E5ADD01FECAFC4D5A4D5A4D
-5A4D7E173F4D7E4C487E4C7F5E4C804C804C80EEFF7F9226F9FE3F7FDBFBFC809226FFF8
-1F7F4C7EDCC0077F0480804C7E4B6D804B6D804B8284727F727F8684727F727F87847280
-87737F85737F87737F85737F88857380747F888697B512FCB800C0013FECFFFEA55F527C
-D169>75 D<B812F8A5D8000701F8CAFCB3B3A91A7CA41AFC1AF8A51901A31903A219071A
-F0190FA2191F193F197F19FF180360183F4DB5FCBB12E0A546527CD151>I<B600FC073F
-B512FE6F61A26F96B6FCA2D80007F5C00070EF01EFA202EF6DEF03CFA202E76DEF078FA2
-02E36DEF0F0FA202E16D171EA302E06D173CA26F6C1778A26F6C17F0A26F6DED01E0A26F
-6DED03C0A36F6DED0780A26F6DED0F00A26F6D151EA26F6D5DA3706C5DA2706C5DA2706D
-495AA2706D495AA2706D495AA3706D49C7FCA2706D131EA2706D5BA2716C5BA3716C5BA2
-71EB81E0A271EBC3C0A271EBE780A27101FFC8FCA3715BA2715BA2725AA2725AA2D93FFC
-6F5AB74DB712FEA2725AA2725A77527CD180>I<B600FC93B7FC8181A282D800076E9239
-003FFC0070EE07E08282A28202EF7F02E77F02E380A202E18002E0806F7F6F7F6F7FA26F
-7F6F7F6F806F80A26F80707F707F707F707FA2707F7080708070808583717F717F717F71
-7FA27114807114C07114E07213F07213F8A27213FC7213FE7213FF721487A27214C77214
-E77313F77313FF85A285858585A28586868686A286868686A2D93FFC187FB7173F1B1F1B
-0F1B07755A60527CD169>I<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF
-020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF4949
-6F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A83481B804A8348
-1BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C
-1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D
-4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F
-01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E0565479D265>
-I<BAFC19F819FF1AE086D8000701F0C7001F13FC060113FF726C13807313C0070F13E01B
-F0857313F81BFCA27313FEA41BFFA81BFEA31BFC61A21BF84F13F04F13E0614F13C04F13
-004E485A061F5B92B812F01AC04FC7FC19E003F8CBFCB3AEB812C0A550527CD15C>I<93
-380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90C700
-0313F0DA7FFC02007F902601FFF0ED3FFE49496F7E49496F7F49496F7F4990C96C7F4948
-707F4948707F01FF854A177F48864849717EA24849711380A2481BC04A83481BE0A24A83
-481BF0A3481BF8A291CB7EA3B51AFCAF6C1BF8A26E5FA36C1BF0A36C6D4D13E0A36C1BC0
-6E5F6C1B806E5F6CDB01FE16006C6D902607FF80495A4C13E06C6D013F6D495A017F9126
-7F03F85C6D6C90277C00FC015B6D6C49D97E035B6D01806E485B6D6D48D91F8F5B6D01E0
-039F90C7FC6D01F06EB45A6DD9FCF85DDA3FFF6E13F0020F6D4913C0020301FF90B5C8FC
-020091B512FC031F180C0303181EDB001FEBE3FE93C7EA01FF74133E74137E7413FEF2F8
-077290B5FC1CFCA285A21CF8A2851CF07314E0A27314C0731480731400735B9638007FF8
-F21FE0576A79D265>I<B912F0F0FF8019F819FF1AC0D8000701F0C714F0060F7F060113
-FE727F737F737F85737F87A2737FA387A863A2616363A24F5B4F5B4F90C8FC4F5A06035B
-060F13F095B512C092B8C9FC19F819E019F89226F0000313FE9439007FFF80727F727F72
-7F727F727F8684A28684A787A71D1C75133EA38575137E73157C7513FC731401B86C6D90
-38F803F807039038FE07F07390B512E0736C14C0080F1400CEEA7FFC5F537CD164>I<91
-260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F9026FFFC006D5A4801E0EB
-0FFD4801800101B5FC4848C87E48488149150F001F824981123F4981007F82A28412FF84
-A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC017F06C16FC
-6C16FF6C17C06C836C836D826D82010F821303010082021F16801400030F15C0ED007F04
-0714E01600173F050F13F08383A200788200F882A3187FA27EA219E07EA26CEFFFC0A27F
-6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC003FFE0486C
-90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8FC3C5479D24B>I<003FBC
-1280A59126C0003F9038C0007F49C71607D87FF8060113C001E08449197F49193F90C817
-1FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A553517BD0
-5E>I<B800C00103B612FCA5D8000701F8CAEBF000F31F80B3B3B11B3FA26D97C7FC8163
-7F1B7E6D6D17FE505A6E7E505A6E6D15076E4D5A6E6D4B5A6E6D4B5A6E01F84B5A6E6DDA
-03FFC8FC6E6CB46CEB0FFE6F9039F001FFF8030F90B65A030316C0DB007F92C9FC040F14
-F8DC007F13805E537CD167>I<B700FE031FB512FEA5D8001F01F0CA383FFE00F307F06D
-626F170F6D62811B1F6D6D601B3F6D97C7FC6F5F6D197E821BFE6E6D5E1A016E6D5E1A03
-6E60701507A26E6D5E1A0F6E6D5E1A1F6E6070153FA26E6D93C8FC626E6E147E1AFE6F5E
-711301A26F6D5C19036F6D5C19076F5E71130FA26F6D5C191F6F6D5C193F6F93C9FC715B
-A26FEC807E19FE706D5A18C1705C18E3705C18F318F770EBFFE0A2705CA2705CA37091CA
-FCA2705BA2715AA3715AA2715AA2715A715A5F537DD166>I<B700FC017FB600FE91B612
-F0A5D8003F01C0C8001F01E0C9EBF8006F71EE0FC06D7161876F1C1F6D7196C7FC6F8373
-606D1E3E6F836D7160876F1CFC6D666F4B801F016D66704A806E525A88704A17076E059F
-5F70021F80080F160F6E6570023F806EDC3E074CC8FC8870027E5F6EDC7C03163E7002FC
-804F6C167E6E1C7C700101814F6C16FC6E745B70010317016E4C6D5D060716C00580496D
-14036F63DDC00F16E04F6D14076F07F05BDDE01F170F6F92C76C5D1DF8DDF03E6E141F6F
-98C9FCDDF87E16FC067C6E5C6FF1FE3EDDFCFC177E6F4A6E147C1DFFDDFFF06E14FC6F62
-A24E816F62A270496F5BA24E817061A295C97E7061A270487090CAFCA37048705AA24D16
-01040360A27048705A84537DD18B>I<003FB7D88003B7FCA5D8000749C8000701F8C7FC
-6D6D9238007F806D6E93C8FC7015FE6D17016E6D5D704A5A6E16076E6D4A5A6E6D5D4F5A
-6E6D143F6E6D4A5A7191C9FC6E16FE6EECC00171485A6F5D6F6D485A6FEBF80F71485A6F
-5D6F6D485AEFFF7F6F4ACAFC6F5C6F5CA2705B705B8482707F707FA2707F7080855E4C80
-855E4C80DC3FCF7F058F7FEE7F074C6C7FDB01FE814C7E4B486C8003076E7F4B48814C7F
-4B486D7F033F824C7F4BC76C7F4B6E7F4A5A4B6E804A486E800207844A48814B6F7F4A48
-83023F824A486F7F92C96C7F02FE840101830103718090263FFFC084B76C0103B712F8A5
-5D527CD166>I<EC7FFF0107B512F0013F14FE90B77E48D9E00F7F2703FE000113F0486C
-6D7F6EEB3FFC48826E131F83707FA36C496D7FA26C90C7FC6C5AC9FCA6037FB5FC020FB6
-FC91B7FC01071487013FEBF0074913803901FFFC004813F0485B485B485B4890C7FC5A5B
-A2485AA45EA26D5C007F151D163D6C6C02797F6C6D01F113F86C9026C003E1EBFFE06C90
-26F81FC014F06C90B5487EC6ED001F011F01FC010713E0010101E090C8FC3C387CB641>
-97 D<EB3FF0B5FCA51203C6FCB3A4923801FFE0030F13FE033FEBFFC092B612F002F301
-017F913AF7F8003FFEDAFFE0EB0FFF03806D7F92C76C7F4A6E7F4A824A6E7FA2727EA285
-A28584A31A80AC1A00A44E5AA36118FF616E4A5BA26E4A5B6E4A5B6F495BDACFC04990C7
-FCDA87F0EB7FFC913A03FE03FFF849C6B612E0496D148049011F01FCC8FC90C7000313C0
-41547BD24B>I<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE
-0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F130070
-5A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C
-6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49
-C7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13
-FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F48
-4980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D
-5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE
-0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C0
-4901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C048
-8191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06C
-EE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB
-03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>I<ED3F
-FC0203B5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB807F49903800FFFC49
-5A495AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A526007FF8C8FCB3B3A700
-7FB512FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0010FDAFC1F13E0013FECFF
-7F90267FFC0F9038FF9FF09026FFE001EBF83F48496C13E0484990387FF01F4890C7D83F
-F813E0489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5EA26C6C4A5AA26C5E6C6D
-495A6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C314F02607C03F90C9FC91
-CBFCA2120FA37FA213F813FE90B7FC6C16F817FF18C06C836C836C836D828448B9FC1207
-4848C700031480D81FF8EC003F4848150748486F13C083485A83A56D5D007F18806D5D00
-3F18006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C01FE011F5B6C6CB71280
-010F03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0B5FCA51203C6FCB3A4
-EE1FFC93B512C0030314F0030F8092391FE07FFC92393F001FFE037C8003F07FDAF1E081
-ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542537BD24B>I<137F
-497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017E
-B3B3A6B612E0A51B547BD325>I<157FEDFF80020313E04A13F0A24A13F8A76E13F0A26E
-13E002001380ED7F0092C7FCADED1FF891B5FCA51401EC007FB3B3B1EA0780EA1FE0487E
-487E486C13FF16F0A216E05C16C04A13806C4848130049485A003F495A000FB512F06C5C
-0001148026001FFCC7FC256C87D329>I<EB3FF0B5FCA51203C6FCB3A54CB512F8A59339
-003FFE00EF1FF0EF3FC04D5A4DC7FCEE03FEEE07F84C5A4C5AEE7FC04CC8FC4B5A4B5AED
-0FF8ED1FE04B7E4B7EECF1FF02F37F02F77F91B6FC83159F030F7F02FE80DAF8077F4A7E
-6F7F6F7F83707E82707F84707F707F82707F84707F177F717E4D13C0B6D8F003B6FCA540
-537CD247>I<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD225>I<D93FF0D91FFCED
-FFE0B591B500C0010713FE030302F0011F6D7E030F6E017F8092271FE07FFCD9FF037F92
-2A3F001FFE01F8007F0003027C9126FF03E080C602F06DD90780137FDAF1E0038FC77FDA
-F3C0159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5EA44A5EB3ACB6D8F807B6D8C0
-3FB512FEA567367BB570>I<D93FF0EB1FFCB591B512C0030314F0030F8092391FE07FFC
-92393F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45C
-B3ACB6D8F807B612C0A542367BB54B>I<913801FFE0021F13FE91B612C0010315F0010F
-9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F488348
-90C86C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C
-5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0F
-FF807FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3FF001FFE0B5
-010F13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB1FFFC60280
-6D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A36118FFA261
-5F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B02F8B612E0
-6F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<90397FE003FEB590
-380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE780
-14EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>
-114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307D81FE0130148487F
-4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15
-F06C816C816C81C681013F1580010F15C01300020714E0EC003F030713F015010078EC00
-7F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE90
-39FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB635>I<143EA6147E
-A414FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3
-A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B
-020313802A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA50003ED001FC61607B3AE5F
-A35FA2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3EBFFC0903A0FFFC03F836D90
-B51203010114FE6D6C13F8020701E091C7FC42377BB54B>I<B600F00107B5FCA5000101
-F8C8EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC6D5E6F13016D5E8117036D
-5E6F13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E023F147C6F13FC6E5C16
-816E5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5AA36F5AA26F5AA26F5AA2
-6F5A6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5000101F0C701F0C7381FF8006E
-027FED07E06C715DA26E023F150F017F705DA26E181F013F4B6C92C7FC6E606D70143E94
-B5FC6F177E6D4A6E137C03C001F315FC6D715B160303E001E114016D020702E05B03F013
-C06D71485A160F03F8D9807F13076D05F85B93381F003F03FC160F027F4902FC5BDBFE3E
-011F131F023F04FE90C8FC167EDBFF7C010F5B6E01FCECFF3E4C6D137E6E5FA24C7F6E5F
-4C7F6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA2033E6FC9FC5A367DB461>I<007F
-B500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D495A6D4B5A6F495A
-6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06EEBCFC06EEBFF806E
-91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03F87F4A486C7E4A48
-6C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A49486D7F01076F7E4948
-6E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>I<B600F00107B5FCA5C601F8C8
-EA7FE06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F13016D5E6F13036D5E811707
-6D6D5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E023F147C6F13FCA26E6D5A1681
-6EEBC1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5AA26F5AA26F5AA26F5AA26F5A
-A35E150F5E151F93C9FC5DD81FC0133E486C137E486C137C486C13FC5D14015D14034A5A
-6C48485A49485A263FC07FCAFCEB81FE6CB45A6C13F000035BC690CBFC404D7DB447>I<
-001FB8FC1880A3912680007F130001FCC7B5FC01F0495B495D49495B495B4B5B48C75C5D
-4B5B5F003E4A90C7FC92B5FC4A5B5E4A5B5CC7485B5E4A5B5C4A5B93C8FC91B5FC495B5D
-4949EB0F805B495B5D495B49151F4949140092C7FC495A485E485B5C485E485B4A5C4849
-5B4815074849495A91C712FFB8FCA37E31357CB43C>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fv cmr10 10.95 82
-/Fv 82 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907
-F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7
-FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11
-D<4AB4FC021F13C091387F01F0903901FC0078D907F0131C4948133E494813FF49485A13
-7F1400A213FE6F5A163893C7FCAA167FB8FCA33900FE00018182B3AC486CECFF80007FD9
-FC3F13FEA32F407FBF33>I<4AB47E021F13F791387F00FFEB01F8903807F001EB0FE0EB
-1FC0EB3F80137F14008101FE80AEB8FCA3C648C77EB3AE486CECFF80007FD9FC3F13FEA3
-2F407FBF33>I<4AB4ECFF80021FD9C00F13E0913B7F01F03F80F8903C01F80078FE003C
-D907F0D93FF8130E49484948131F49484948EB7F804948484913FF137F02005CA201FE92
-C7FC6FED7F0070141C96C7FCAAF13F80BBFCA3C648C76CC7FC197F193FB3AC486C4A6CEB
-7FC0007FD9FC3FD9FE1FB5FCA348407FBF4C>I<121EEA7F80EAFFC0A9EA7F80ACEA3F00
-AC121EAB120CC7FCA8121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A4179C019>33
-D<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E600F30000013
-00A401E01370491360A3000114E04913C00003130101001380481303000EEB070048130E
-0018130C0038131C003013181C1C7DBE2D>I<121EEA7F8012FF13C0A213E0A3127FEA1E
-601200A413E013C0A312011380120313005A120E5A1218123812300B1C79BE19>39
-D<1430147014E0EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B1203A2485A
-A2120F5BA2121F90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E123FA37EA27F
-120FA27F1207A26C7EA212017F12007F13787F133E131E7FEB07801303EB01C0EB00E014
-701430145A77C323>I<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA2
-7FA2133F7FA21480130FA214C0A3130714E0A6130314F0B214E01307A614C0130FA31480
-A2131F1400A25B133EA25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A
-145A7BC323>I<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113
-80120313005A120E5A1218123812300B1C798919>44 D<B512FEA617067F961E>I<121E
-EA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919>I<ED0180ED03C01507A21680150FA2
-16005DA2151E153EA2153C157CA2157815F8A25D1401A25D1403A25D1407A25D140FA24A
-C7FCA2141E143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A25C130FA291C8
-FC5BA2131E133EA25BA2137813F8A25B1201A25B1203A25B1207A25B120FA290C9FC5AA2
-121E123EA2123C127CA2127812F8A25A1260225B7BC32D>I<EB01FE90380FFFC090383F
-03F090387C00F849137C48487F48487F4848EB0F80A2000F15C04848EB07E0A3003F15F0
-A290C712034815F8A64815FCB3A26C15F8A56C6CEB07F0A3001F15E0A36C6CEB0FC0A26C
-6CEB1F80000315006C6C133E6C6C5B017C5B90383F03F090380FFFC0D901FEC7FC263F7D
-BC2D>I<EB01C013031307131F137FEA07FFB5FC139FEAF81F1200B3B3ACEB7FF0B612F8
-A31D3D78BC2D>I<EB07FC90383FFF8090B512E03903F01FF83907C007FC390F0001FE00
-1E6D7E001C1580003CEC7FC05AED3FE01270B4FC6DEB1FF07FA56C5A6CC7FC120CC813E0
-153FA216C0157F168015FF16004A5A5D4A5A4A5A5D4A5A4A5A4AC7FC147E147C5C495A49
-5A495A495A49C71270133E133C5B4914E0485A485A485A48C7120148B6FCA25A4815C0B7
-FCA3243D7CBC2D>I<EB07FC90383FFF809038F80FE03901E003F839078001FCD80F007F
-000E6D7E001E1580D81F80137F486C14C07FA27F5BA2121F6C5AC8138015FF1600A24A5A
-A24A5A5DEC07E04A5A023FC7FCEB1FFCECFF809038000FE0EC07F86E7E6E7E6E7E1680ED
-7FC0A216E0153FA216F0A2120C123F487E487EA316E0A249137F6CC713C01278EDFF807E
-6C4913006C495A3907C007FC3903F80FF0C6B55A013F1380D907F8C7FC243F7CBC2D>I<
-150E151E153EA2157EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01
-C0A2EB0380EB0700A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5A
-B8FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5
-FC5D5D5D15C092C7FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8
-496C7E49137E497F90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA4
-16E090C7121F12FC007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C48
-5A3903F80FE0C6B55A013F90C7FCEB07F8243F7CBC2D>I<EC1FE0ECFFF8903803F03E90
-380FC00F90391F000780133E017EEB1FC049133F4848137F12035B12074848EB3F80ED1F
-00001F91C7FC5BA2123FA3485AA214FE903887FF8039FF8F07E090389C01F09038B800FC
-01B0137E13F0497F16804914C0A2ED1FE0A34914F0A5127FA6123F6D14E0A2121FED3FC0
-A26C6C1480A20007EC7F006C6C137E6C6C5B6C6C485A90387E07F06DB45A010F1380D903
-FCC7FC243F7CBC2D>I<1238123C123F90B612FCA316F85A16F016E00078C712010070EC
-03C0ED078016005D48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25C
-A2147C147814F8A213015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407B
-BD2D>I<EB03FC90381FFF8090387C07E09038F001F83901E0007C48487F48487F48C7FC
-ED0F80121E16C0003E1407A4123FA26DEB0F807F6C6C131F6D140001FC133E6C6C5B9038
-FF80786C6D5A6CEBF3E06CEBFF806C91C7FC133F6D13C06D7F013F13F801787F48486C7E
-3903E01FFF48486C1380260F800313C048487E489038007FE0003E143F007E141F007CEC
-0FF01507481403A31501A46C15E0007C1403A2007E15C06C14076CEC0F806DEB1F006C6C
-133ED807F05B3901FC03F86CB512E0011F1380D903FCC7FC243F7CBC2D>I<EB03FCEB1F
-FF90387E07C09038FC03F048486C7E48486C7E4848137C000F147E4848137F81003F1580
-5B007F15C0A2151F12FF16E0A516F0A5127F153FA36C7EA2001F147F120F6C6C13FF6D13
-DF000313013900F8039F90387E0F1FD91FFE13E0EB07F090C7FCA2ED3FC0A41680157FD8
-0F801400487E486C13FEA24A5A5D49485AEB8007391E000FE0001F495A260FC07FC7FC38
-03FFFE6C13F838003FC0243F7CBC2D>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FC
-B3121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA
-7F80A2EA1E00C7FCB3121E127FEAFF80A213C0A4127F121E1200A412011380A312031300
-5A1206120E120C121C5A1230A20A3979A619>I<EB1FF890B5FC3903E01FC0390F0007F0
-001EEB03F848EB01FC4814FE140000FE14FF7E7FA46CC7FC123EC7EA01FEA2EC03FCEC07
-F815F0EC0FC0EC1F80EC3F00143E5C147814F85C13015CA2495AA25CAB91C7FC90C8FCA8
-EB0780EB1FE0A2497EA46D5AA2EB078020407BBF2B>63 D<15074B7EA34B7EA34B7EA34B
-7EA34B7E15E7A2913801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D
-7EA34A6D7EA34A6D7EA349486D7E91B6FCA249819138800001A249C87EA24982010E157F
-A2011E82011C153FA2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0
-010FB512F8A33D417DC044>65 D<B712FCEEFF8017F00001903980000FF86C6CC7EA03FE
-707E701380EF7FC0EF3FE0A2EF1FF0A218F8A3170F171FA318F0A2EF3FE0177F18C0EFFF
-804C1300EE03FCEE0FF8EE7FE091B6C7FC17E091C7EA07FCEE01FE933800FF80EF7FC0EF
-3FE0EF1FF018F8170F18FC1707A218FEA718FC170FA2EF1FF818F0173FEF7FE0EFFFC004
-03138048486C90380FFE00B85A17E094C7FC373E7DBD40>I<DB3FF01306912603FFFE13
-0E020F9038FF801E913A3FF007E03E9139FF8000F8D903FEC7EA7C7ED907F8EC1EFE4948
-140FD93FE0140749481403495A91C812014848150012034848167E5B000F173EA2484816
-1EA2123F5B180E127FA349160012FFAC127F7F180EA2123FA27F001F171E181C6C7EA200
-07173C6D16386C6C1678000117706C6C16F06EEC01E06D6C15C06D6C1403D90FF0EC0780
-6D6CEC1F00D903FE143E902600FF8013F891393FF007F0020FB512C0020391C7FC913800
-3FF037427BBF42>I<B712FCEEFF8017E000019039C0001FF86C6C48EB03FEEE00FF717E
-717EEF0FE084717E717E170184717EA21980187F19C0A3F03FE0A519F0AB19E0A5F07FC0
-A21980A218FF19004D5AA24D5A6017074D5A4D5AEF7FC04DC7FCEE03FE48486CEB1FF8B8
-5A178004FCC8FC3C3E7DBD45>I<B912E0A300019038C000016C6C48EB001FEF0FF01703
-A217011700A31870A41838161CA41800A2163CA2167C16FC150391B5FCA3EC8003150016
-7C163CA2161CA21807A3180E93C7FCA4181E181CA2183CA2187CA218F817011703170717
-1F48486CEB01FFB912F0A3383E7DBD3E>I<B91280A300019038C000036C6C48EB007FEF
-1FC0170F1707A21703A31701A4EF00E0A21638A31800A31678A216F81501150791B5FCA3
-EC8007150115001678A21638A693C8FCAF3801FFE0B612F0A3333E7DBD3B>I<DB3FE013
-0C912603FFFE131C021F9038FF803C913A7FF00FC07C9139FF0001F0D903FC90380078FC
-4948143DD91FE0141F4948140F4948140701FF15034890C8FC491501485A000716005B00
-0F177C5B001F173CA2485AA2181C127FA25B95C7FC12FFAB041FB512F0127FA26D913900
-0FFE00EF03FC123FA27F121FA26C7EA212077F12036C7E7F6C7F6D6C14076D7E6D6C140F
-D907F8141ED903FEEC3C7C902600FF80EBF83C913A7FF007F01C021FB5EAC00C020391C8
-FC9138003FF03C427BBF47>I<B6D8C01FB512F8A3000101E0C7383FFC0026007F80EC0F
-F0B3A691B7FCA30280C7120FB3A92601FFE0EC3FFCB6D8C01FB512F8A33D3E7DBD44>I<
-B612F0A3C6EBF000EB3FC0B3B3B2EBFFF0B612F0A31C3E7EBD21>I<011FB512FCA3D900
-0713006E5A1401B3B3A6123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C
-495A6C495A6C495A2603E07EC7FC3800FFF8EB3FC026407CBD2F>I<B600C090387FFFFC
-A3000101E0C7000F138026007F80913807FE0018F818E0604D5A4DC7FC173E5F5F4C5A4C
-5A4C5A4C5A4CC8FC163E5E5E4B5A4B5AED07804B7E151F4B7E4B7E15FF913881EFF89138
-83C7FCEC878791388F03FE91389E01FF14BCDAF8007F4A6D7E5C4A6D7E4A6D7EA2707E70
-7EA2707E707EA2707F717E84173F717E717EA2717E848419802601FFE04A13C0B600C090
-B6FCA3403E7DBD47>I<B612F8A3000101E0C9FC38007F80B3B0EF0380A517071800A45F
-A35FA25F5F5F4C5A160748486C133FB8FCA3313E7DBD39>I<B500C093383FFFF0A30001
-6D93387FF800D8007F18E0D977F016EFA3D973F8ED01CFA2D971FCED038FA3D970FEED07
-0FA26E150E80A26E6C141CA36E6C1438A26E6C1470A36E6C14E0A26E6CEB01C0A36E6CEB
-0380A36E6CEB0700A2037F130EA36F6C5AA26F6C5AA36F6C5AA25FED07F0A2923803F9C0
-A36FB45AA26F90C7FCA213F8486C147ED807FFEF3FF8B500F8013C011FB512F0A34C3E7D
-BD53>I<B56C91B512F88080D8007F030713006EEC01FC6E6E5A1870EB77FCEB73FEA2EB
-71FF01707FA26E7E6E7EA26E7E6E7EA26E7E6E7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA2
-6F7E6F7EA26F7E6F1380A2EE7FC0EE3FE0A2EE1FF0EE0FF8A2EE07FCEE03FEA2EE01FF70
-13F0A2177F173FA2171F170FA2170701F81503487ED807FF1501B500F81400A218703D3E
-7DBD44>I<ED7FE0913807FFFE91391FC03F8091397E0007E04948EB03F8D907F0EB00FE
-4948147F49486E7E49486E7E49C86C7E01FE6F7E00018349150300038348486F7EA24848
-6F7EA2001F188049167F003F18C0A3007F18E049163FA300FF18F0AC007F18E06D167FA4
-003F18C0A26C6CEEFF80A36C6C4B1300A26C6C4B5A00035F6D150700015F6C6C4B5A6D5E
-6D6C4A5A6D6C4A5A6D6C4AC7FC6D6C14FED901FCEB03F8D9007FEB0FE091391FC03F8091
-2607FFFEC8FC9138007FE03C427BBF47>I<B712F8EEFF8017E000019039C0003FF86C6C
-48EB07FCEE01FE707EEF7F80EF3FC018E0A2EF1FF0A218F8A818F0A2EF3FE0A218C0EF7F
-80EFFF004C5AEE07FCEE3FF091B612C04CC7FC0280C9FCB3A73801FFE0B612C0A3353E7D
-BD3E>I<B712C016FCEEFF800001D9C00013E06C6C48EB1FF0EE07FCEE01FE707E84717E
-A2717EA284A760177F606017FF95C7FCEE01FCEE07F8EE1FE0EEFF8091B500FCC8FC16F0
-91388001FCED003FEE1FC0707E707E83160383160183A383A484A4F0C004190EA28218E0
-057F131E2601FFE0161CB600C0EB3FF094381FF83805071370CA3801FFE09438003F803F
-407DBD43>82 D<D907FC130C90391FFF801C017FEBF03C3901FC03F83A03F0007E7CD807
-C0EB1FFC4848130F001F140748C71203003E1401007E1400A2007C157C12FCA2163CA36C
-151CA27EA26C6C14007F7FEA3FF8EBFF806C13F86CEBFF806C14F06C14FC6C14FF6C15C0
-013F14E0010714F0EB007F020713F89138007FFC150FED07FE15031501ED00FFA200E015
-7FA3163FA27EA3163E7E167E6C157C6C15FC6C15F86D13016DEB03F06DEB07E0D8F9FCEB
-0FC03AF07F803F8090391FFFFE00D8E00713F839C0007FC028427BBF33>I<003FB91280
-A3903AF0007FE001018090393FC0003F48C7ED1FC0007E1707127C00781703A300701701
-A548EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42>I<B600C090B512F8A3
-000101E0C70007130026007F80EC01FC715A1870B3B3A4013F16F06E5DA21701011F5E80
-010F15036E4A5A010793C7FC6D6C5C6D6C141E6D6C5C027F14F86E6C485A91390FF00FE0
-0203B51280020049C8FCED1FF03D407DBD44>I<B691380FFFFEA3000301E0020113E06C
-01809138007F806CEF3F00017F163E181C6E153C013F1638A26E1578011F1670A26D6C5D
-A26E140101075EA26E140301035EA26D6C4AC7FCA2806D150EA26F131E027F141CA26F13
-3C023F1438A26E6C5BA26F13F0020F5CA2EDF80102075CA26E6C485AA2EDFE07020191C8
-FCA26F5A6E130EA2ED7F9CA216DCED3FF8A36F5AA36F5AA26F5AA36F5A3F407EBD44>I<
-B500FE017FB5D88007B5FCA3000301C0010101E0C713F86C90C849EC3FE07148EC0F807E
-7215006E143F017F190E84A26D6C60A24D7E6D6C60A2EFE7F86D6C60A2933801C3FC6E18
-F001076104037F6E0281140101036104077F17006D6C4D5AA2040EEB7F806D6C4DC7FCA2
-4CEB3FC0DA7F80160EA24CEB1FE003C0161E023F171C047814F0DBE070010F133C021F17
-3804F014F84C1307DA0FF05EA2DBF1C0EB03FCDA07F95EA2DBFB80EB01FEDA03FF6F5AA2
-93C8FCA26E5FA24B157F020094C8FCA24B81037C153EA20378151E0338151C58407EBD5D
->I<007FB5D8C003B512E0A3C649C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E
-6D6C141C6D6C143C5F6D6C14706D6D13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC
-020F5BEDF81E913807FC1C163C6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA2828215
-3FED3BFEED71FF15F103E07F913801C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C
-6D7E02386D7E14784A6D7E4A6D7F130149486E7E4A6E7E130749C86C7E496F7E497ED9FF
-C04A7E00076DEC7FFFB500FC0103B512FEA33F3E7EBD44>I<B66C0103B51280A3000101
-F0C8EBF8006C6C48ED3FC0725A013F041EC7FC6D7E606D6C15386D6C1578606D6C5D6E14
-016D5E6D6D1303606E6C49C8FC6E6C5B170E6E6C131E171C6E6C5B6E6C137817706E6C13
-F06F5B6E13016EEB83C05FED7FC7DB3FE7C9FC16EFED1FFE5E150F6F5AB3A4ED1FFC020F
-B512FCA3413E7FBD44>I<EAFFFCA4EAF000B3B3B3B3ABEAFFFCA40E5B77C319>91
-D<486C13C00003130101001380481303000EEB070048130E0018130C0038131C00301318
-0070133800601330A300E01370481360A400CFEB678039FFC07FE001E013F0A3007F133F
-A2003F131F01C013E0390F0007801C1C73BE2D>I<EAFFFCA4EA003CB3B3B3B3ABEAFFFC
-A40E5B7FC319>I<EA0180120313005A120E5A12181238123012701260A312E05AA412CF
-EAFFC013E0A3127FA2123F13C0EA0F000B1C7ABE19>96 D<EB0FF8EBFFFE3903F01F8039
-078007E0000F6D7E9038E001F8D81FF07F6E7EA3157F6C5AEA0380C8FCA4EC1FFF0103B5
-FC90381FF87FEB7F803801FC00EA07F8EA0FE0485A485AA248C7FCEE038012FEA315FFA3
-007F5BEC03BF3B3F80071F8700261FC00E13CF3A07F03C0FFE3A01FFF807FC3A003FC001
-F0292A7DA82D>I<EA01FC12FFA3120712031201B1EC03FC91381FFF8091387C07E09039
-FDE001F09039FFC000FC4A137E91C77E49158049141F17C0EE0FE0A217F0A2160717F8AA
-17F0A2160FA217E0161F17C06D1580EE3F006D5C6E13FE9039F3C001F89039F1E003F090
-39E0780FC09026C03FFFC7FCC7EA07F82D407EBE33>I<49B4FC010F13E090383F00F801
-7C131E4848131F4848137F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA290
-C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C13076C6C14000003140E6C6C131E6C
-6C137890383F01F090380FFFC0D901FEC7FC222A7DA828>I<ED01FC15FFA31507150315
-01B114FF010713E190381F80F990387E003D49131FD803F81307485A4913034848130112
-1F123F5B127FA290C7FCA25AAA7E7FA2123FA26C7E000F14037F000714076C6C497E6C6C
-497ED8007C017913F890383F01F190380FFFC1903A01FE01FC002D407DBE33>I<EB01FE
-90380FFFC090383F03F09038FC01F848486C7E4848137E48487F000F158049131F001F15
-C04848130FA2127F16E090C7FCA25AA290B6FCA290C9FCA67EA27F123F16E06C7E150100
-0F15C06C6C13036DEB07806C6C1400C66C131E017E5B90381F80F8903807FFE0010090C7
-FC232A7EA828>I<EC1FC0EC7FF8903801F83C903807E07E90380FC0FFEB1FC1EB3F8114
-01137FEC00FE01FE137C1500AEB6FCA3C648C7FCB3AE487E007F13FFA320407EBF1C>I<
-167C903903F801FF903A1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000FC
-0600000F6EC7FC49137E001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E039
-03FE0FC026071FFFC8FCEB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15
-E06C810003813A0FC0001FFC48C7EA01FE003E140048157E825A82A46C5D007C153E007E
-157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D
-7EA82D>I<EA01FC12FFA3120712031201B1EC01FE913807FFC091381E07E091387803F0
-9138E001F8D9FDC07F148001FF6D7E91C7FCA25BA25BB3A6486C497EB5D8F87F13FCA32E
-3F7DBE33>I<EA01E0EA07F8A2487EA46C5AA2EA01E0C8FCACEA01FC127FA31207120312
-01B3AC487EB512F0A3143E7DBD1A>I<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC
-147FEB7FFFA313017F147FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA7F01387C03
-F0381E07C0380FFF803801FC00185185BD1C>I<EA01FC12FFA3120712031201B292B512
-80A392383FFC0016E0168093C7FC153C5D5D4A5AEC07C04A5A4AC8FC143E147F4A7E13FD
-9038FFDFC0EC9FE0140F496C7E01FC7F496C7E1401816E7E81826F7E151F826F7EA28248
-6C14FEB539F07FFFE0A32B3F7EBE30>I<EA01FC12FFA3120712031201B3B3B1487EB512
-F8A3153F7DBE1A>I<2701F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0913B
-7803F03C01F80007903BE001F87000FC2603F9C06D487F000101805C01FBD900FF147F91
-C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA74C>
-I<3901F801FE00FF903807FFC091381E07E091387803F000079038E001F82603F9C07F00
-01138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>I<14
-FF010713E090381F81F890387E007E01F8131F4848EB0F804848EB07C04848EB03E0000F
-15F04848EB01F8A2003F15FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F15F8
-6C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC90380FFF
-F0010090C7FC282A7EA82D>I<3901FC03FC00FF90381FFF8091387C0FE09039FDE003F0
-3A03FFC001FC6C496C7E91C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0
-A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C001F89039FDE007F09039FC780FC0DA
-3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA733>I<02FF131C0107EBC03C90381F
-80F090397F00387C01FC131CD803F8130E4848EB0FFC150748481303121F485A1501485A
-A448C7FCAA6C7EA36C7EA2001F14036C7E15076C6C130F6C7E6C6C133DD8007E13799038
-3F81F190380FFFC1903801FE0190C7FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E0
-00FFEB1FF8EC787CECE1FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35B
-B3A5487EB512FEA31F287EA724>I<90383FC0603901FFF8E03807C03F381F000F003E13
-07003C1303127C0078130112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F
-6C1480000114C0D8003F13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F0
-7E14016C14E06CEB03C0903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<13
-1CA6133CA4137CA213FCA2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912
-009038FE01C0A2EB7F03013F138090381F8700EB07FEEB01F81B397EB723>I<D801FC14
-FE00FF147FA3000714030003140100011400B3A51501A31503120015076DEB06FF017E01
-0E13806D4913FC90381FC078903807FFE00100903880FE002E297DA733>I<B539E00FFF
-E0A32707FE000313006C48EB00FC5E00015D7F00005DA26D13016D5CA26D6C485AA2ECC0
-07011F91C7FCA290380FE00EA2ECF01E0107131CA26D6C5AA2ECFC7801011370A2ECFEF0
-01005BA2EC7FC0A36E5AA26EC8FCA3140E2B287EA630>I<B53BC3FFFE03FFF8A3290FFE
-003FE00013C06C486D48EB3F806C4817006D010F141E00016F131C15076D163C00004A6C
-1338A2017F5E4B7E151DD93F805DED3DFC1538D91FC04A5AED78FE9238707E03D90FE001
-7F5BEDE03F02F0140701070387C7FC9138F1C01F02F9148F010315CE9138FB800F02FF14
-DE6D15FCED00076D5DA24A1303027E5CA2027C1301023C5C023813003D287EA642>I<B5
-39F01FFFE0A30003D9C00F1300C690388007F8D97F0013E002805BD93FC05B011F49C7FC
-90380FE00EECF01E6D6C5A01035B6D6C5A6E5AEB00FF6E5A6E5A81141F814A7E81147BEC
-F1FC903801E1FEECC0FF01037F49486C7ED90F007F011E6D7E013E130F496D7E01FC8048
-6C80000F4A7EB539803FFFF8A32D277FA630>I<B539E00FFFE0A32707FE000313006C48
-EB01FC6F5A00015D7F00005DA2017F495AA2EC8003013F5CA26D6C48C7FCA26E5A010F13
-0EA26D6C5AA2ECF83C01031338A26D6C5AA2ECFEF001005BA2EC7FC0A36E5AA36EC8FCA2
-140EA2141E141C143C1438A2147800181370127EB45BA2495AA248485AD87E07C9FCEA78
-0EEA3C3CEA1FF8EA07E02B3A7EA630>I<001FB61280A2EBE0000180140049485A001E49
-5A121C4A5A003C495A141F00385C4A5A147F5D4AC7FCC6485AA2495A495A130F5C495A90
-393FC00380A2EB7F80EBFF005A5B484813071207491400485A48485BA248485B4848137F
-00FF495A90B6FCA221277EA628>I<B812F0A22C0280982D>I<BE12C0A25A0280985B>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fw cmbx12 20.736 19
-/Fw 19 120 df<BDFC1CFCF4FFC01DF81DFF1EC01EF88AC7003F91C96C14FF090315C0E1
-007F800A0F14F80A03800A00800B3F7F7780778077800B018077808C8A787F787FA27880
-8D8A8D8A8D8A8DA28D8AA28DA28BA28DA42280A38BA322C0B22280A367A32200A4699CB5
-FCA269A3545CA2696669666966695491C7FC6668545B9BB55A65535C535C535C0B3F5C9A
-B6C8FC5214FC0A0F5C0A3F5C0903B612C0097F5DBF48C9FC1EF81EE01E800BFCCAFC1DE0
-52CBFC99CCFC82767AF594>68 D<BF12FCA48AA4C7003F0280C8123F1B01F3003F1C0776
-7F1C008989898989A2891F8089A289A31E7FA21FC0A21E3FA3F20FF0A3F61FE0A49BC7FC
-A21A1FA31A3FA21A7FA21AFF1903190F197F94B7FCA8943880007F190F190319001A7FA2
-1A3FA21A1FA31A0FA997CBFCB3A9BBFCA86B757AF47A>70 D<96267FFFE01670063FB6ED
-01F80503B700F01403053F04FC14074CB96C130F040706E0131F043F72133F93BA00FC13
-7F0303DC00076D13FF030F03C09039003FFF814B02FCC8000713C3037F02E0030113F792
-B600806F6CB5FC02034ACA121F4A02F8834A02E0834A4A1701027F4A8391B548CC7E494A
-85495C4C854988494A85494A85495C8A4991CDFC90B54886A2484A1B7FA2481E3F5D481E
-1F5D5A1F0FA2485CA3481E075DA2795A489BC9FCA45DA2B6FCB27EA26F0403BA12C0A47E
-A3816C96C8000302F8C7FCA36C80A36C80A27E817E817E817F6D80827F6D806D806D8082
-6D6E606D806E80021F6E5F6E02F05F6E806E02FE5F0200DAFFC05E6F02F04BB6FC031F02
-FE030713CF6FDAFFE0021F138703039226FF8003B51201030093B6EAFC00043F4E133F04
-0706E0131F04014E1307DC003F4CC71201050304F8EC0070DD003F038092C8FCDE007F01
-F0CCFC827A75F798>I<001FC012F8A7481FFC03F0C76C91C7120F92C8EF007F02F81B1F
-02E01B0702801B0191C984491D7F491D3F491D1FA2491D0FA2491D07007F1FFEA2491D03
-A4491D01A700FF1FFF90CA85A6CB1A00B3B3B3AD4ABC12C0A8787479F387>84
-D<92383FFFF80207B612E0027F15FC49B87E010717E0011F83499026F0007F13FC4948C7
-000F7F90B502036D7E486E6D806F6D80727F486E6E7F8486727FA28684A26C5C72806C5C
-6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041FB7FC0303B8FC157F0203B9FC021F
-ECFE0391B612800103ECF800010F14C04991C7FC017F13FC90B512F04814C0485C4891C8
-FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E5D187E6C6D846E4A48806C6D4A48
-14FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE00019139FC03FFC06C91B6487E013F4B
-487E010F4B1307010303F01301D9003F0280D9003F13FC020101F8CBFC57507ACE5E>97
-D<93387FFF80030FB512FC037FECFF804AB712E0020716F8021F16FE027FD9F8077F49B5
-D8C000804991C7003F13E04901FC020F7F49496E7F49498049496E7F49496E7F90B55A48
-727E92C914804884485B1BC048841BE0485BA27313F05AA25C5AA21BF885A2B5FCA391BA
-FCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F86C7F1A0F6C6E17F06C191F6F17
-E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13006D6D6CEC0FFE6D02E0EC3FFC
-6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002034CC7FC020016F8031F15E003
-0392C8FCDB000F13E04D507BCE58>101 D<F37F80922607FFFC913807FFE092B600E001
-1F13F8020703FC017F13FC021FDBFF01B512FE027F16C349B800F7EBBFFF49DA803F9038
-FFF83F010F9026FC000714C04901F00101EC007F49496D148049496E6D7E90B517E04B6E
-15FE48F1F01F4891C86C9038F80FFCF307F098C7FC48496F7FA34885AB6C61A36C6D4B5B
-A36C6E4A5B6C616F5C6D606D6D91B55A6D6D4991C8FC6D01FC01075B9226FF803F13F893
-B65A4917C0D93F1F93C9FC020715FCD97E0015E0030701FCCAFC01FE90CDFCA412017FA2
-80A280808014FE6C90B812C019FF1AF01AFC6DF0FF801BE06D851BFC6D856D856D1A806D
-1AC05B011F1AE0137F48BC12F0000701FCC9FC4801E0040314F84849EE007F4849171F91
-CB1207487313FC5B00FF855B86A56D60007F1BF86D60A26C6D4D13F06E5F6C6D4D13E06C
-6D4D13C06C01FC94B512806C01FF04031400C602C0030F13FC6D01F8037F5B011FD9FFE0
-011FB512E0010791B8128001014EC7FC6D6C17F8020F17C0DA007F03F8C8FC03014AC9FC
-58727BCE61>103 D<903801FFFCB6FCA8C67E131F7FB3AD95380FFFE095B512FE05036E
-7E050F15E0053F15F84D81932701FFF01F7F4CD900077FDC07FC6D80DC0FF06D80DC1FC0
-7F4C48824CC8FC047E6F7F5EEDFDF85E03FF707F5EA25EA25EA293C9FCA45DB3B3A6B8D8
-E003B81280A8617879F76C>I<EB01FCEB07FF011F13C0497F497F90B57EA24880A24880
-A76C5CA26C5CA26D5B6D5B6D5B010790C8FCEB01FC90CAFCB2903801FFFC007FB5FCA8C6
-7E131F7FB3B3B3A5B81280A8297979F835>I<EE01FCEE07FF041F13C04C13E04C13F093
-B512F8A24B14FCA24B14FEA76F14FCA26F14F8A27013F07013E07013C004071300EE01FC
-93C8FCB2EFFFFE92B6FCA8ED003F160F82B3B3B3B3A3EA01FCEA07FF487F487F487F486D
-15FC5EB57EA218F85E18F018E05E6C494913C018804A90B512006C4A5B6C49485B6CD9E0
-1F5B6C90B612E06C5EC693C7FC013F14F8010F14C09026007FFCC8FC379B8BF83B>I<90
-3801FFFCB6FCA8C67E131F7FB3AE0603B612FEA8DE001F01F8C7FC070713804F90C8FCF1
-3FFE4F5AF1FFF04E5B4E5B4E5B061F90C9FC4E5AF07FF84E5A4D5B05075B4D5B4D48CAFC
-4D5A4D5A4D5A04035B4C7F4C7F5E4C7F4C7F03FDB6FC92B7FC858585A204F98004E0804C
-804C7E4C6C7F4B6D7F4B824B7F7180718086837180727F8684727F728087847280728087
-84737F737F87854F14C0B8D88007B712F0A85C787AF766>I<902601FFF891260FFFE093
-383FFF80B692B500FE0303B512F805036E6C020F14FE050F03E0023F6E7E053F03F891B7
-12E04D6F4982932701FFF01F6D0107D9C07F7F4CD900076D90270FFC001F7FDC07FC6D91
-26801FF06D7FC66CDA0FF06D9126C03FC06D7F011FDA1FC06D4BC77E6D4A48DCE0FE834C
-C8ECE1FC047E6FD9F1F86E804CEFF3F0DBF9F8EFF7E04C6003FB7001FF6F804C6015FF4C
-95C9FCA24C5FA293C95CA44B60B3B3A6B8D8E003B8D8800FB712FEA8974E79CDA2>109
-D<902601FFF891380FFFE0B692B512FE05036E7E050F15E0053F15F84D81932701FFF01F
-7F4CD900077FDC07FC6D80C66CDA0FF06D80011FDA1FC07F6D4A48824CC8FC047E6F7F5E
-EDF9F85E03FB707F5E15FF5EA25EA293C9FCA45DB3B3A6B8D8E003B81280A8614E79CD6C
->I<93381FFFE00303B6FC031F15E092B712FC020316FF020F17C0023FD9FC0014F091B5
-00C0010F13FC4991C700037F4901FC02007F010F496F13C049496F7F49496F7F4B814949
-6F7F90B5C96C7F4886A24849707F481B80A248497014C0A2481BE0A348497113F0A3481B
-F8A5B51AFCAE6C1BF8A46C1BF06E94B5FCA36C1BE0A26C6D4C14C0A26C1B806E5E6C1B00
-6C6E4B5BA26C6E4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D92B55A6D01FF02035C6D02C001
-0F91C7FC010002FC90B512FC6E90B75A021F17E00207178002014CC8FCDA003F15F00303
-92C9FCDB001F13E056507BCE61>I<902601FFF8EB07FEB691383FFFC094B512F0040380
-4C14FE4C8093261FFC3F138093263FE07F13C0DC7F80B5FCC66C5D011FDAFE0114E06DEB
-F9FC16F815FB16F016E015FF16C07114C05E72138095381FFE0093C76C5AF001E095C8FC
-A25DA65DB3B3A2B812F8A8434E7ACD4F>114 D<912603FFFCEB0780027F9039FFE00FC0
-0103B6EAF83F010FEDFEFF013F92B5FC49EB000F2601FFF01300480180143F4890C8120F
-4848814848814981123F83485A187FA212FF6D163FA37F7F6DEE1F8002C092C7FC14F014
-FEECFFF06CECFF8016FEEEFFE06C16FC6C16FF18C06C836C17F86C836C836C83013F1780
-6D17C0010717E0010117F0EB003F020716F8EC001F030015FC1607EE007F051F13FE1707
-007E82B482836D167FA2183F7F181FA27F19FC7FA26D163F6D17F86D167F19F06D16FF6E
-4A13E002E04A13C06E4A138002FE023F1300913AFFC003FFFE01E790B65A01C316F00180
-16C026FE003F92C7FC48010714F80070D9007F90C8FC3F507ACE4C>I<15FFA75CA55CA4
-5CA25CA25CA25CA25C91B5FCA25B5B5B131F5B90B9FC120FBAFCA6D8000791C9FCB3B3A3
-F01FE0AE183F7014C07F187F7014806D16FF826D4B13006E6D485AEEFE0F6E90B55A020F
-5D6E5D020115C06E6C5C031F49C7FC030113F03B6E7CEC4B>I<DAFFFE933803FFF8B603
-03B6FCA8C66CEE0001011F717E6D84B3B3A862A497B5FCA261A2616D5F1ADF6F150F6DEF
-1F9F073F806D6EDA7F1F13FF6D6ED901FEEDFF8070EB07FC023F01FEEB3FF86E90B612F0
-6E16C0020316800200EDFE00031F14F80300028003C0C7FC614F79CD6C>I<B7D8FE01B7
-00F00103B612E0A8D8003F01FCC8003F01E0C80007EBE0006D0B0090C7FC6F6F6D5DA26D
-666F6F6D15036D66701A07737F6D667070150F6D4D60701A1F876D4D607071143F6E4C60
-701A7F886E4C607003BF6D14FF6E04FF95C8FC6670031F7F6E4B60704A6C6D130318036E
-640580496C6D13076E03076005C0180F4F6C7F6E030F6005E0496C6D131F6E031F6005F0
-183F4F6C14806F023F6005F8496DEBC07F6F027F6005FC18FF4F6D7F6F02FF95C9FC7190
-C76C13F16F90B55F1DF34E6E13FB6F624E6E13FFA26F624E806F62A24E806F624E807061
-A24E8170614E817096CAFCA295C97E70604D160F0407604D16077048705A834E7CCC8C>
-119 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fx cmr10 10 1
-/Fx 1 112 df<EB03FE90380FFF8090383E03E09038F800F84848137C48487F48487F48
-48EB0F80001F15C090C712074815E0A2007EEC03F0A400FE15F8A9007E15F0A2007F1407
-6C15E0A26C6CEB0FC0000F15806D131F6C6CEB3F006C6C137EC66C13F890387E03F09038
-1FFFC0D903FEC7FC25277EA52A>111 D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: a4
-a4
-%%EndPaperSize
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 316 83 a Fx(o)150 1112 y Fw(The)64 b(DejaGn)-5
-b(u)65 b(T)-16 b(esting)65 b(F)-16 b(ramew)-5 b(ork)p
-150 1212 3600 34 v 2787 1308 a Fv(for)31 b(DejaGn)m(u)g(V)-8
-b(ersion)30 b(1.3)3395 1525 y(Jan)g(1996)150 5068 y Fu(Rob)45
-b(Sa)l(v)l(o)l(y)l(e)p 150 5141 3600 17 v eop
-%%Page: 2 2
-2 1 bop 3105 408 a Fv(Cygn)m(us)30 b(Supp)s(ort)150 4480
-y(Cop)m(yrigh)m(t)602 4477 y(c)577 4480 y Ft(\015)g Fv(92,)i(93,)f(94,)
-h(95,)f(1996)h(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8
-b(oundation,)30 b(Inc.)150 4615 y(P)m(ermission)g(is)i(gran)m(ted)h(to)
-f(mak)m(e)i(and)d(distribute)f(v)m(erbatim)i(copies)g(of)g(this)f(man)m
-(ual)h(pro)m(vided)f(the)150 4725 y(cop)m(yrigh)m(t)g(notice)f(and)g
-(this)f(p)s(ermission)f(notice)i(are)h(preserv)m(ed)f(on)h(all)e
-(copies.)150 4859 y(P)m(ermission)36 b(is)i(gran)m(ted)g(to)h(cop)m(y)g
-(and)f(distribute)e(mo)s(di\014ed)g(v)m(ersions)h(of)i(this)e(man)m
-(ual)g(under)g(the)150 4969 y(conditions)j(for)i(v)m(erbatim)g(cop)m
-(ying,)j(pro)m(vided)40 b(also)i(that)h(the)f(en)m(tire)g(resulting)e
-(deriv)m(ed)h(w)m(ork)h(is)150 5078 y(distributed)27
-b(under)i(the)i(terms)f(of)h(a)f(p)s(ermission)e(notice)i(iden)m(tical)
-f(to)j(this)d(one.)150 5213 y(P)m(ermission)i(is)i(gran)m(ted)g(to)h
-(cop)m(y)g(and)f(distribute)d(translations)i(of)i(this)e(man)m(ual)g
-(in)m(to)h(another)g(lan-)150 5322 y(guage,)f(under)d(the)h(ab)s(o)m(v)
-m(e)i(conditions)d(for)h(mo)s(di\014ed)e(v)m(ersions.)p
-eop
-%%Page: 1 3
-1 2 bop 150 -116 a Fv(Chapter)30 b(1:)41 b(What)31 b(is)e(DejaGn)m(u?)
-2349 b(1)150 100 y Fs(1)80 b(What)54 b(is)g(DejaGn)l(u?)275
-334 y Fv(DejaGn)m(u)35 b(is)e(a)i(framew)m(ork)g(for)f(testing)h(other)
-g(programs.)53 b(Its)34 b(purp)s(ose)f(is)g(to)j(pro)m(vide)d(a)i
-(single)150 443 y(fron)m(t)30 b(end)g(for)g(all)g(tests.)41
-b(Bey)m(ond)31 b(this,)f(DejaGn)m(u)h(o\013ers)f(sev)m(eral)h(adv)-5
-b(an)m(tages)32 b(for)f(testing:)199 578 y(1.)61 b(The)32
-b(\015exibilit)m(y)e(and)i(consistency)h(of)g(the)g(DejaGn)m(u)g
-(framew)m(ork)g(mak)m(e)h(it)e(easy)i(to)f(write)f(tests)330
-687 y(for)e(an)m(y)h(program.)199 822 y(2.)61 b(DejaGn)m(u)21
-b(pro)m(vides)f(a)h(la)m(y)m(er)g(of)g(abstraction)g(whic)m(h)e(allo)m
-(ws)h(y)m(ou)h(to)g(write)f(tests)i(that)f(are)g(p)s(ortable)330
-932 y(to)35 b(an)m(y)f(host)g(or)g(target)h(where)f(a)g(program)g(m)m
-(ust)g(b)s(e)f(tested.)52 b(F)-8 b(or)35 b(instance,)g(a)f(test)h(for)f
-(GDB)330 1041 y(can)26 b(run)e(\(from)i(an)m(y)g(Unix)f(based)g(host\))
-h(on)g(an)m(y)g(target)h(arc)m(hitecture)g(that)f(DejaGn)m(u)h(supp)s
-(orts.)330 1151 y(Curren)m(tly)d(DejaGn)m(u)j(runs)d(tests)j(on)f(sev)m
-(eral)g(single)f(b)s(oard)g(computers,)i(whose)f(op)s(erating)f(soft-)
-330 1260 y(w)m(are)31 b(ranges)f(from)g(just)g(a)h(b)s(o)s(ot)f
-(monitor)g(to)h(a)g(full-\015edged,)d(Unix-lik)m(e)h(realtime)h(OS.)199
-1395 y(3.)61 b(All)36 b(tests)j(ha)m(v)m(e)g(the)f(same)g(output)f
-(format.)63 b(This)36 b(mak)m(es)j(it)e(easy)i(to)f(in)m(tegrate)h
-(testing)f(in)m(to)330 1504 y(other)c(soft)m(w)m(are)i(dev)m(elopmen)m
-(t)e(pro)s(cesses.)51 b(DejaGn)m(u's)35 b(output)f(is)f(designed)g(to)h
-(b)s(e)g(parsed)f(b)m(y)330 1614 y(other)e(\014ltering)d(script,)i(and)
-g(it)f(is)h(also)g(h)m(uman)g(readable.)275 1773 y(DejaGn)m(u)h(is)e
-(written)h(in)f Fr(expect)p Fv(,)g(whic)m(h)g(in)g(turn)g(uses)h
-Fq(Tcl)p Fv(|T)-8 b(o)s(ol)29 b(command)h(language.)275
-1908 y(Running)21 b(tests)k(requires)d(t)m(w)m(o)k(things:)36
-b(the)24 b(testing)g(framew)m(ork,)i(and)d(the)h(test)h(suites)e
-(themselv)m(es.)150 2017 y(T)-8 b(ests)35 b(are)g(usually)d(written)i
-(in)f Fr(expect)g Fv(using)g(Tcl,)i(but)f(y)m(ou)h(can)g(also)g(use)f
-(a)h(Tcl)f(script)f(to)i(run)f(a)150 2127 y(test)f(suite)f(that)g(is)g
-(not)g(based)g(on)g Fr(expect)p Fv(.)44 b(\()p Fr(expect)31
-b Fv(script)g(\014lenames)g(con)m(v)m(en)m(tionally)i(use)f(`)p
-Fr(.exp)p Fv(')150 2237 y(as)h(a)g(su\016x;)g(for)g(example,)g(the)g
-(main)f(implemen)m(tation)f(of)i(the)g(DejaGn)m(u)h(test)f(driv)m(er)f
-(is)f(in)h(the)h(\014le)150 2346 y(`)p Fr(runtest.exp)p
-Fv('.\))p eop
-%%Page: 2 4
-2 3 bop 150 -116 a Fv(2)2409 b(DejaGn)m(u)32 b(T)-8 b(esting)30
-b(F)-8 b(ramew)m(ork)p eop
-%%Page: 3 5
-3 4 bop 150 -116 a Fv(Chapter)30 b(2:)41 b(What)31 b(is)e(new)h(in)f
-(this)h(release)g(?)1937 b(3)150 100 y Fs(2)80 b(What)54
-b(is)g(new)f(in)h(this)g(release)f(?)275 334 y Fv(This)39
-b(release)i(has)f(a)h(n)m(um)m(b)s(er)f(of)h(substan)m(tial)f(c)m
-(hanges)h(o)m(v)m(er)i(v)m(ersion)d(1.2.)73 b(The)40
-b(most)h(visible)150 443 y(c)m(hange)29 b(is)f(that)h(the)f(v)m(ersion)
-g(of)g(exp)s(ect)h(and)f(Tcl)f(included)f(in)h(the)h(release)h(are)f
-(up-to-date)i(with)d(the)150 553 y(curren)m(t)j(stable)g(net)h
-(releases.)41 b(Other)30 b(c)m(hanges)h(are:)199 687
-y(1.)61 b(The)35 b(con\014g)h(sub-system)f(in)f(DejaGn)m(u)j(has)e(b)s
-(een)g(completely)g(redesigned.)55 b(It)36 b(no)m(w)g(supp)s(orts)330
-797 y(testing)30 b(on)h(remote)g(hosts)f(as)h(w)m(ell)e(as)i(remote)g
-(targets.)199 932 y(2.)61 b(More)23 b(builtin)c(supp)s(ort)h(for)i
-(building)d(target)24 b(binaries)c(with)h(the)h(correct)i(link)m(er)c
-(\015ags.)39 b(Curren)m(tly)330 1041 y(this)29 b(only)h(w)m(orks)g
-(with)f(GCC,)h(preferably)f(with)g(a)i(target)h(supp)s(ort)d(b)m(y)h
-Fr(libgloss)p Fv(.)199 1176 y(3.)61 b(Lots)31 b(of)f(little)f(bug)h
-(\014xes)g(from)g(a)h(y)m(ear)g(of)g(hea)m(vy)g(use)f(here)g(at)h(Cygn)
-m(us)f(Supp)s(ort.)199 1310 y(4.)61 b(DejaGn)m(u)31 b(no)m(w)g(uses)f
-Fr(autoconf)e Fv(for)i(con\014guration.)199 1445 y(5.)61
-b(New)38 b(test)g(cases)h(for)e(DejaGn)m(u)h(ha)m(v)m(e)h(b)s(een)e
-(added)g(for)g(the)h(new)f(features,)j(plus)35 b(the)j
-Fr(")p Fv({to)s(ol)p Fr(")330 1554 y Fv(option)30 b(bug)g(in)f(the)h
-(1.2)i(testsuite)e(has)g(b)s(een)g(\014xed.)199 1689
-y(6.)61 b(The)30 b Fr(--tool)f Fv(option)g(is)h(no)m(w)g(optional.)199
-1823 y(7.)61 b Fr(runtest)26 b Fv(when)g(searc)m(hing)i(for)f(test)i
-(driv)m(ers)d(ignores)h(all)f(directories)h(named)g(SCCS,)f(R)m(CS,)i
-(and)330 1933 y(CVS.)199 2067 y(8.)61 b(There)30 b(is)f(no)m(w)h(a)h
-(generic)f(k)m(eyw)m(ord)h(based)e(test)j(harness)d(that)i(uses)e
-(commen)m(ts)i(in)e(source)i(co)s(de)330 2177 y(to)g(con)m(trol)g(ho)m
-(w)f(eac)m(h)i(test)f(case)h(gets)f(built)d(and)i(run.)199
-2311 y(9.)61 b(There)30 b(is)f(no)m(w)i(some)f(supp)s(ort)f(for)h
-(running)e(a)j(testsuite)f(with)f(m)m(ultiple)f(passes.)150
-2569 y Fu(2.1)68 b(Running)45 b(existing)h(tests)275
-2761 y Fv(T)-8 b(o)25 b(run)e(tests)j(from)e(an)h(existing)e
-(collection,)j(\014rst)e(use)h Fr(configure)d Fv(as)j(usual)e(to)j(set)
-f(up)f(the)h(source)150 2871 y(directory)30 b(con)m(taining)g(the)g
-(tests.)42 b(Then)29 b(try)h(running)390 3000 y Fr(make)47
-b(check)275 3134 y Fv(If)29 b(the)h Fr(check)e Fv(target)j(exists,)f
-(it)f(usually)e(sa)m(v)m(es)k(y)m(ou)f(some)g(trouble|for)f(instance,)h
-(it)f(can)h(set)g(up)150 3244 y(an)m(y)h(auxiliary)d(programs)i(or)g
-(other)h(\014les)e(needed)h(b)m(y)g(the)h(tests.)275
-3378 y(Once)e(y)m(ou)i(ha)m(v)m(e)g(run)e(`)p Fr(make)g(check)p
-Fv(')g(to)i(build)c(an)m(y)j(auxiliary)e(\014les,)h(y)m(ou)h(migh)m(t)g
-(w)m(an)m(t)h(to)f(call)g(the)150 3488 y(test)e(driv)m(er)d
-Fr(runtest)g Fv(directly)h(to)h(rep)s(eat)g(the)g(tests.)40
-b(Y)-8 b(ou)28 b(ma)m(y)f(also)g(ha)m(v)m(e)h(to)f(call)f
-Fr(runtest)f Fv(directly)150 3597 y(for)30 b(test)h(collections)f(with)
-f(no)i Fr(check)e Fv(target)j(in)d(the)h(`)p Fr(Makefile)p
-Fv('.)p eop
-%%Page: 4 6
-4 5 bop 150 -116 a Fv(4)2409 b(DejaGn)m(u)32 b(T)-8 b(esting)30
-b(F)-8 b(ramew)m(ork)275 83 y(T)m(ypically)g(,)39 b(y)m(ou)g(m)m(ust)f
-(use)h(t)m(w)m(o)h(command-line)d(options:)56 b(`)p Fr(--tool)p
-Fv(',)40 b(to)f(sp)s(ecify)e(whic)m(h)h(set)h(of)150
-193 y(tests)31 b(to)g(run)612 160 y Fp(1)648 193 y Fv(,)g(and)e(`)p
-Fr(--srcdir)p Fv(',)g(to)i(sp)s(ecify)e(where)h(to)h(\014nd)e(test)j
-(directories.)275 327 y(F)-8 b(or)27 b(example,)h(if)d(the)i(directory)
-g(`)p Fr(gdb/testsuite)p Fv(')c(con)m(tains)k(a)h(collection)e(of)h
-(DejaGn)m(u)h(tests)f(for)150 437 y Fo(gdb)p Fv(,)j(y)m(ou)h(can)g(run)
-e(them)h(lik)m(e)g(this:)390 565 y Fr(eg$)47 b(cd)g(gdb/testsuite)390
-669 y(eg$)g(runtest)f(--tool)g(gdb)150 773 y Fn(T)-7
-b(est)33 b(output)g(fol)5 b(lows,)34 b(ending)f(with:)390
-980 y Fr(===)47 b(gdb)g(Summary)f(===)390 1188 y(#)h(of)h(expected)d
-(passes)h(508)390 1292 y(#)h(of)h(expected)d(failures)h(103)390
-1396 y(/usr/latest/bin/gdb)d(version)i(4.14.4)h(-nx)275
-1530 y Fv(Y)-8 b(ou)20 b(can)h(use)f(the)h(option)e(`)p
-Fr(--srcdir)p Fv(')g(to)i(p)s(oin)m(t)e(to)i(some)g(other)g(directory)f
-(con)m(taining)g(a)g(collection)150 1640 y(of)31 b(tests:)390
-1768 y Fr(eg$)47 b(runtest)f(--tool)g(gdb)h(--srcdir)e
-(/devo/gdb/testsuite)275 1903 y Fv(These)d(examples)g(assume)h(a)g
-Fq(nativ)m(e)48 b Fv(con\014guration,)d(where)d(the)h(same)g(computer)g
-(runs)e(b)s(oth)150 2012 y Fr(runtest)31 b Fv(and)h(the)h(tests)h
-(themselv)m(es.)48 b(When)33 b(y)m(ou)g(ha)m(v)m(e)h(a)f
-Fq(cross)k Fv(con\014guration,)c(the)g(tests)h(run)d(on)150
-2122 y(a)j(di\013eren)m(t)f(computer,)h(con)m(trolled)f(b)m(y)g(the)h
-(host)f(running)e Fr(runtest)p Fv(.)47 b(In)33 b(this)f(situation,)h(y)
-m(ou)h(need)150 2232 y(the)d(option)e(`)p Fr(--name)p
-Fv(')h(to)h(sp)s(ecify)e(the)h(net)m(w)m(ork)h(address)f(for)g(the)h
-(other)f(computer:)390 2360 y Fr(eg$)47 b(runtest)f(--tool)g(gdb)h
-(--name)f(vx9.munist.com)275 2495 y Fv(If)24 b(y)m(ou)h(alw)m(a)m(ys)g
-(use)f(the)h(same)g(option)f(v)-5 b(alues,)25 b(y)m(ou)g(can)g(record)g
-(them)g(in)e(a)i(\014le)f(called)f(`)p Fr(site.exp)p
-Fv(',)150 2604 y(rather)33 b(than)g(t)m(yping)f(them)h(eac)m(h)h(time.)
-48 b(See)34 b(Chapter)e(4)h([Setting)g(defaults)f(for)h
-Fr(runtest)e Fv(options],)150 2714 y(page)g(15.)275 2848
-y(By)36 b(default,)g Fr(runtest)e Fv(prin)m(ts)g(only)h(the)h(names)f
-(of)h(the)g(tests)h(it)e(runs,)h(output)f(from)g(an)m(y)h(tests)150
-2958 y(that)41 b(ha)m(v)m(e)g(unexp)s(ected)e(results,)j(and)d(a)i
-(summary)e(sho)m(wing)g(ho)m(w)h(man)m(y)g(tests)h(passed)e(and)h(ho)m
-(w)150 3068 y(man)m(y)26 b(failed.)38 b(T)-8 b(o)26 b(displa)m(y)e
-(output)h(from)h(all)e(tests)j(\(whether)e(or)h(not)g(they)g(b)s(eha)m
-(v)m(e)g(as)h(exp)s(ected\),)g(use)150 3177 y(the)36
-b(`)p Fr(--all)p Fv(')f(option.)56 b(F)-8 b(or)37 b(more)f(v)m(erb)s
-(ose)g(output)f(ab)s(out)g(pro)s(cesses)h(b)s(eing)e(run,)i(comm)m
-(unication,)150 3287 y(and)f(so)h(on,)h(use)e(`)p Fr(--verbose)p
-Fv('.)55 b(T)-8 b(o)36 b(see)g(ev)m(en)g(more)g(output,)h(use)e(m)m
-(ultiple)f(`)p Fr(--verbose)p Fv(')f(options.)150 3396
-y(See)j(Chapter)f(3)i([Using)e Fr(runtest)p Fv(],)h(page)g(9,)i(for)e
-(a)g(more)g(detailed)f(explanation)g(of)h(eac)m(h)h Fr(runtest)150
-3506 y Fv(option.)275 3641 y(T)-8 b(est)28 b(output)f(go)s(es)h(in)m
-(to)g(t)m(w)m(o)h(\014les)d(in)h(y)m(our)g(curren)m(t)h(directory:)38
-b(summary)27 b(output)g(in)f(`)p Fq(to)s(ol)p Fr(.sum)p
-Fv(',)150 3750 y(and)31 b(detailed)g(output)h(in)f(`)p
-Fq(to)s(ol)p Fr(.log)p Fv('.)45 b(\()p Fq(to)s(ol)35
-b Fv(refers)d(to)h(the)f(collection)f(of)i(tests;)g(for)f(example,)g
-(after)150 3860 y(a)37 b(run)e(with)g(`)p Fr(--tool)29
-b(gdb)p Fv(',)38 b(lo)s(ok)e(for)h(output)f(\014les)f(`)p
-Fr(gdb.sum)p Fv(')g(and)h(`)p Fr(gdb.log)p Fv('.\))59
-b(See)36 b(Section)h(5.7)150 3969 y([The)30 b(\014les)f(DejaGn)m(u)j
-(writes],)e(page)h(35.)p 150 4070 1200 4 v 192 4136 a
-Fp(1)275 4169 y Fv(`)p Fr(--tool)p Fv(')h(selects)j(a)f(particular)f
-(suite)g(of)h(tests,)i Fn(not)43 b Fv(the)34 b(name)g(of)h(the)f
-(executable)g(program)g(to)275 4279 y(run.)55 b(See)36
-b(Chapter)f(4)h([Con\014guration)f(dep)s(enden)m(t)f(v)-5
-b(alues],)37 b(page)g(15,)h(for)d(information)f(on)i(the)275
-4388 y(v)-5 b(ariables)29 b(that)i(y)m(ou)f(can)h(use)f(to)h(sp)s
-(ecify)e(the)i(names)f(of)g(programs)g(to)i(run.)p eop
-%%Page: 5 7
-5 6 bop 150 -116 a Fv(Chapter)30 b(2:)41 b(What)31 b(is)e(new)h(in)f
-(this)h(release)g(?)1937 b(5)150 83 y Fu(2.2)68 b(What)45
-b(do)t(es)g(a)g(DejaGn)l(u)h(test)f(lo)t(ok)h(lik)l(e?)275
-276 y Fv(Eac)m(h)32 b(DejaGn)m(u)i(test)f(is)e(an)h Fr(expect)f
-Fv(script;)h(the)h(tests)g(v)-5 b(ary)32 b(widely)e(in)h(complexit)m(y)
--8 b(,)33 b(dep)s(ending)150 385 y(on)d(the)h(nature)f(of)g(the)h(to)s
-(ol)f(and)g(the)h(feature)g(tested.)275 520 y(Here)38
-b(is)e(a)i(v)m(ery)g(simple)d Fo(gdb)i Fv(test|one)i(of)f(the)f
-(simplest)f(tests)i(shipp)s(ed)d(with)h(DejaGn)m(u)i(\(ex-)150
-629 y(tracted)31 b(from)f(`)p Fr(gdb.t00/echo.exp)p Fv('\):)1556
-596 y Fp(2)150 713 y Fm(\013)p 200 713 3554 4 v 3553
-w(\010)p 150 1833 4 1072 v 178 866 a Fr(#)48 b(send)e(a)i(string)e(to)h
-(the)g(GDB)g(stdin:)178 970 y(send)g("echo)f(Hello)h(world!\\n")178
-1177 y(#)h(inspect)d(the)i(GDB)g(stdout)f(for)h(the)g(correct)f(reply,)
-178 1281 y(#)i(and)f(determine)e(whether)h(the)h(test)f(passes)g(or)h
-(fails:)178 1385 y(expect)f({)274 1489 y(-re)h("Hello)f(world.*$prompt)
-e($")190 b({)47 b(pass)g("Echo)f(test")h(})274 1593 y(-re)g("$prompt)e
-($")811 b({)47 b(fail)g("Echo)f(test")h(})274 1696 y(timeout)1191
-b({)47 b(fail)g("\(timeout\))e(Echo)i(test")f(})274 1800
-y(})p 3803 1833 V 150 1885 a Fm(\012)p 200 1885 3554
-4 v 3553 w(\011)275 2029 y Fv(Though)33 b(brief,)g(this)g(example)h(is)
-f(a)h(complete)h(test.)53 b(It)34 b(illustrates)e(some)i(of)g(the)h
-(main)e(features)150 2139 y(of)e(DejaGn)m(u)g(test)g(scripts:)225
-2274 y Ft(\017)60 b Fv(The)31 b(test)h(case)h(do)s(es)e(not)h(start)g
-(the)g(tested)g(program)f(\()p Fo(gdb)h Fv(in)e(this)g(case\);)k(all)c
-(test)j(scripts)d(for)330 2383 y(in)m(teractiv)m(e)h(to)s(ols)f(can)h
-(assume)f(the)h(corresp)s(onding)d(to)s(ol)i(is)g(running.)225
-2518 y Ft(\017)60 b Fv(Commen)m(ts)31 b(start)f(with)g(`)p
-Fr(#)p Fv('.)225 2652 y Ft(\017)60 b Fv(The)20 b(main)f(commands)h(y)m
-(ou)h(use)f(to)h(con)m(trol)g(a)f(tested)i(program)e(are)h
-Fr(send)e Fv(\(to)i(giv)m(e)g(it)f(commands\))330 2762
-y(and)30 b Fr(expect)e Fv(\(to)k(analyze)f(its)e(resp)s(onses\).)225
-2896 y Ft(\017)60 b Fv(The)33 b Fr(expect)e Fv(command)i(uses)g(a)h
-(list)d(of)j(pairs;)f(a)h(pattern)f(\(regular)g(expression)f(if)g(`)p
-Fr(-re)p Fv(')h(sp)s(ec-)330 3006 y(i\014ed\),)i(follo)m(w)m(ed)g(b)m
-(y)g(an)f(action)i(to)f(run)f(if)g(the)h(pattern)g(matc)m(hes)h(output)
-e(from)h(the)g(program.)330 3115 y(Only)29 b(the)h(action)h(for)f(the)h
-Fn(\014rst)39 b Fv(matc)m(hing)31 b(pattern)f(will)e(execute.)225
-3250 y Ft(\017)60 b Fv(T)-8 b(est)31 b(cases)g(use)f(the)h(commands)f
-Fr(pass)f Fv(and)h Fr(fail)f Fv(to)i(record)g(the)f(test)h(outcome.)150
-3507 y Fu(2.3)68 b(Design)46 b(goals)275 3700 y Fv(DejaGn)m(u)d(grew)f
-(out)h(of)f(the)h(in)m(ternal)e(needs)h(of)g(Cygn)m(us)g(Supp)s(ort.)75
-b(Cygn)m(us)41 b(main)m(tains)h(and)150 3809 y(enhances)24
-b(a)g(v)-5 b(ariet)m(y)24 b(of)f(free)h(programs)f(in)g(man)m(y)h
-(di\013eren)m(t)f(en)m(vironmen)m(ts,)h(and)f(w)m(e)h(needed)g(a)g
-(testing)150 3919 y(to)s(ol)30 b(that:)225 4054 y Ft(\017)60
-b Fv(is)29 b(useful)g(to)i(dev)m(elop)s(ers)f(while)e(\014xing)h(bugs;)
-225 4188 y Ft(\017)60 b Fv(automates)32 b(running)c(man)m(y)i(tests)h
-(during)d(a)j(soft)m(w)m(are)h(release)f(pro)s(cess;)225
-4323 y Ft(\017)60 b Fv(is)29 b(p)s(ortable)h(among)h(a)f(v)-5
-b(ariet)m(y)31 b(of)g(host)f(computers;)225 4457 y Ft(\017)60
-b Fv(supp)s(orts)28 b(cross-dev)m(elopmen)m(t)k(testing;)225
-4591 y Ft(\017)60 b Fv(p)s(ermits)29 b(testing)h(in)m(teractiv)m(e)h
-(programs,)g(lik)m(e)e Fo(gdb)p Fv(;)i(and)225 4726 y
-Ft(\017)60 b Fv(p)s(ermits)29 b(testing)h(batc)m(h)h(orien)m(ted)f
-(programs,)h(lik)m(e)e Fo(gcc)p Fv(.)p 150 4822 1200
-4 v 192 4888 a Fp(2)275 4921 y Fv(More)42 b(recen)m(t)h
-Fo(gdb)f Fv(tests)h(use)e(the)h(`)p Fr(gdb_test)p Fv(')f(pro)s(cedure.)
-74 b(An)42 b(equiv)-5 b(alen)m(t)41 b(test)i(using)d(that)275
-5031 y(pro)s(cedure)29 b(is)g(`)i Fr(gdb_test)d("echo)h(Hello)g
-(world!")f("Hello)h(world!")f Fv(')p eop
-%%Page: 6 8
-6 7 bop 150 -116 a Fv(6)2409 b(DejaGn)m(u)32 b(T)-8 b(esting)30
-b(F)-8 b(ramew)m(ork)275 83 y(Some)28 b(of)g(the)h(requiremen)m(ts)e
-(pro)m(v)m(ed)i(c)m(hallenging.)39 b(F)-8 b(or)29 b(example,)f(in)m
-(teractiv)m(e)i(programs)d(do)i(not)150 193 y(lend)35
-b(themselv)m(es)h(v)m(ery)h(w)m(ell)e(to)i(automated)h(testing.)58
-b(But)37 b(all)e(the)h(requiremen)m(ts)g(are)h(imp)s(ortan)m(t:)150
-302 y(for)29 b(instance,)g(it)g(is)f(imp)s(erativ)m(e)g(to)h(mak)m(e)h
-(sure)f(that)g Fo(gdb)g Fv(w)m(orks)g(as)g(w)m(ell)f(when)g
-(cross-debugging)h(as)150 412 y(it)h(do)s(es)g(in)f(a)i(nativ)m(e)g
-(con\014guration.)275 546 y(Probably)d(the)i(greatest)i(c)m(hallenge)e
-(w)m(as)g(testing)g(in)f(a)h(cross-dev)m(elopmen)m(t)h(en)m(vironmen)m
-(t)f(\(whic)m(h)150 656 y(can)38 b(b)s(e)e(a)i(real)f(nigh)m(tmare\).)
-62 b(Most)38 b(cross-dev)m(elopmen)m(t)h(en)m(vironmen)m(ts)d(are)i
-(customized)f(b)m(y)h(eac)m(h)150 765 y(dev)m(elop)s(er.)60
-b(Ev)m(en)38 b(when)e(buying)f(pac)m(k)-5 b(aged)39 b(b)s(oards)d(from)
-g(v)m(endors)h(there)h(are)f(man)m(y)g(di\013erences.)150
-875 y(The)e(comm)m(unication)g(in)m(terfaces)g(v)-5 b(ary)36
-b(from)f(a)g(serial)f(line)g(to)i(ethernet.)56 b(DejaGn)m(u)36
-b(w)m(as)g(designed)150 985 y(with)e(a)j(mo)s(dular)c(comm)m(unication)
-i(setup,)i(so)f(that)h(eac)m(h)g(kind)c(of)j(comm)m(unication)g(can)g
-(b)s(e)f(added)150 1094 y(as)30 b(required,)e(and)h(supp)s(orted)e
-(thereafter.)42 b(Once)29 b(a)h(comm)m(unication)f(pro)s(cedure)f(is)h
-(co)s(ded,)g(an)m(y)h(test)150 1204 y(can)h(use)f(it.)41
-b(Curren)m(tly)29 b(DejaGn)m(u)i(can)g(use)f Fr(rsh)p
-Fv(,)g Fr(rlogin)p Fv(,)f Fr(telnet)p Fv(,)g Fr(tip)p
-Fv(,)h Fr(kermit)p Fv(,)f(and)h Fr(mondfe)f Fv(for)150
-1313 y(remote)i(comm)m(unications.)275 1448 y(Julia)20
-b(Menapace)j(\014rst)f(coined)f(the)i(term)f(\\Deja)i(Gn)m(u")e(to)h
-(describ)s(e)d(an)i(earlier)g(testing)g(framew)m(ork)150
-1557 y(at)40 b(Cygn)m(us)e(Supp)s(ort.)64 b(When)38 b(w)m(e)i(replaced)
-e(it)g(with)g(the)h(Exp)s(ect-based)g(framew)m(ork,)i(it)d(w)m(as)i
-(lik)m(e)150 1667 y(DejaGn)m(u)31 b(all)e(o)m(v)m(er)j(again)6
-b(.)22 b(.)g(.)150 1924 y Fu(2.4)68 b(A)44 b(POSIX)h(conforming)g(test)
-h(framew)l(ork)275 2117 y Fv(DejaGn)m(u)31 b(conforms)f(to)h(the)g
-Fo(posix)e Fv(standard)h(for)g(test)h(framew)m(orks.)275
-2252 y Fo(posix)j Fv(standard)h(1003.3)j(de\014nes)d(what)g(a)h
-(testing)g(framew)m(ork)g(needs)f(to)h(pro)m(vide,)h(in)d(order)h(to)
-150 2361 y(p)s(ermit)23 b(the)i(creation)g(of)g Fo(posix)f
-Fv(conformance)h(test)h(suites.)38 b(This)23 b(standard)h(is)f
-(primarily)f(orien)m(ted)i(to)150 2471 y(running)k Fo(posix)i
-Fv(conformance)h(tests,)h(but)d(its)h(requiremen)m(ts)g(also)h(supp)s
-(ort)d(testing)j(of)g(features)g(not)150 2580 y(related)22
-b(to)h Fo(posix)f Fv(conformance.)38 b Fo(posix)22 b
-Fv(1003.3)j(do)s(es)d(not)g(sp)s(ecify)f(a)i(particular)d(testing)j
-(framew)m(ork,)150 2690 y(but)30 b(at)h(this)e(time)h(there)h(is)e
-(only)h(one)g(other)h Fo(posix)f Fv(conforming)f(test)i(framew)m(ork:)
-41 b Fo(tet)p Fv(.)3320 2657 y Fp(3)275 2824 y Fv(The)26
-b Fo(posix)h Fv(do)s(cumen)m(tation)g(refers)f(to)i Fq(assertions)p
-Fv(.)40 b(An)26 b(assertion)h(is)f(a)i(description)d(of)j(b)s(eha)m
-(vior.)150 2934 y(F)-8 b(or)41 b(example,)j(if)39 b(a)i(standard)f(sa)m
-(ys)h(\\The)g(sun)e(shall)g(shine",)j(a)f(corresp)s(onding)e(assertion)
-h(migh)m(t)150 3044 y(b)s(e)c(\\The)h(sun)f(is)g(shining.")58
-b(A)37 b(test)g(based)g(on)g(this)f(assertion)g(w)m(ould)g(pass)g(or)h
-(fail)f(dep)s(ending)e(on)150 3153 y(whether)d(it)f(is)g(da)m(ytime)i
-(or)f(nigh)m(ttime.)42 b(It)32 b(is)e(imp)s(ortan)m(t)g(to)i(note)g
-(that)g(the)f(standard)f(b)s(eing)g(tested)150 3263 y(is)g(nev)m(er)h
-(1003.3;)i(the)e(standard)f(b)s(eing)g(tested)h(is)f(some)h(other)g
-(standard,)f(for)h(whic)m(h)e(the)i(assertions)150 3372
-y(w)m(ere)g(written.)275 3507 y(As)g(there)g(is)g(no)g(test)h(suite)e
-(to)i(test)h Fn(testing)g(fr)-5 b(ameworks)41 b Fv(for)31
-b Fo(posix)g Fv(1003.3)j(conformance,)e(v)m(eri-)150
-3616 y(fying)c(conformance)i(to)h(this)d(standard)h(is)f(done)h(b)m(y)h
-(rep)s(eatedly)e(reading)h(the)h(standard)e(and)h(exp)s(eri-)150
-3726 y(men)m(ting.)40 b(One)28 b(of)h(the)g(main)f(things)f(1003.3)32
-b(do)s(es)c(sp)s(ecify)g(is)f(the)i(set)h(of)f(allo)m(w)m(ed)f(output)h
-(messages,)150 3836 y(and)39 b(their)g(de\014nitions.)66
-b(F)-8 b(our)41 b(messages)f(are)g(supp)s(orted)e(for)i(a)g(required)e
-(feature)i(of)g Fo(posix)f Fv(con-)150 3945 y(forming)g(systems,)k(and)
-c(a)i(\014fth)e(for)h(a)h(conditional)d(feature.)71 b(DejaGn)m(u)41
-b(supp)s(orts)d(the)j(use)f(of)g(all)150 4055 y(\014v)m(e)h(output)f
-(messages;)46 b(in)40 b(this)f(sense)h(a)h(test)h(suite)d(that)i(uses)f
-(exactly)i(these)e(messages)i(can)f(b)s(e)150 4164 y(considered)29
-b Fo(posix)h Fv(conforming.)40 b(These)30 b(de\014nitions)e(sp)s(ecify)
-h(the)h(output)g(of)h(a)g(test)g(case:)150 4399 y Fr(PASS)288
-b Fv(A)30 b(test)i(has)e(succeeded.)41 b(That)30 b(is,)g(it)g
-(demonstrated)g(that)h(the)g(assertion)f(is)f(true.)150
-4583 y Fr(XFAIL)240 b Fo(posix)41 b Fv(1003.3)k(do)s(es)d(not)g(incorp)
-s(orate)g(the)g(notion)g(of)g(exp)s(ected)h(failures,)g(so)g
-Fr(PASS)p Fv(,)630 4692 y(instead)32 b(of)h Fr(XPASS)p
-Fv(,)g(m)m(ust)f(also)h(b)s(e)g(returned)e(for)i(test)h(cases)g(whic)m
-(h)d(w)m(ere)j(exp)s(ected)f(to)630 4802 y(fail)24 b(and)h(did)e(not.)
-40 b(This)23 b(means)i(that)h Fr(PASS)e Fv(is)h(in)f(some)i(sense)f
-(more)g(am)m(biguous)g(than)g(if)630 4912 y Fr(XPASS)j
-Fv(is)g(also)h(used.)40 b(F)-8 b(or)30 b(information)d(on)i
-Fr(XPASS)f Fv(and)g Fr(XFAIL)p Fv(,)h(see)g(Chapter)g(3)g([Using)630
-5021 y Fr(runtest)p Fv(],)g(page)i(9.)p 150 5122 1200
-4 v 192 5188 a Fp(3)275 5221 y Fo(tet)d Fv(w)m(as)h(created)h(b)m(y)f
-(Unisoft)f(for)h(a)g(consortium)f(comprised)g(of)h(X/Op)s(en,)g(Unix)e
-(In)m(ternational,)275 5331 y(and)i(the)i(Op)s(en)e(Soft)m(w)m(are)i(F)
--8 b(oundation.)p eop
-%%Page: 7 9
-7 8 bop 150 -116 a Fv(Chapter)30 b(2:)41 b(What)31 b(is)e(new)h(in)f
-(this)h(release)g(?)1937 b(7)150 83 y Fr(FAIL)288 b Fv(A)27
-b(test)g Fn(has)35 b Fv(pro)s(duced)25 b(the)h(bug)g(it)g(w)m(as)h(in)m
-(tended)e(to)i(capture.)40 b(That)26 b(is,)h(it)f(has)g(demon-)630
-193 y(strated)32 b(that)g(the)g(assertion)g(is)f(false.)44
-b(The)31 b Fr(FAIL)g Fv(message)i(is)d(based)i(on)f(the)h(test)h(case)
-630 302 y(only)-8 b(.)40 b(Other)30 b(messages)i(are)e(used)g(to)h
-(indicate)e(a)i(failure)e(of)h(the)h(framew)m(ork.)630
-437 y(As)c(with)g Fr(PASS)p Fv(,)g Fo(posix)f Fv(tests)j(m)m(ust)e
-(return)f Fr(FAIL)h Fv(rather)g(than)g Fr(XFAIL)f Fv(ev)m(en)i(if)f(a)h
-(failure)630 546 y(w)m(as)j(exp)s(ected.)150 731 y Fr(UNRESOLVED)630
-840 y Fv(A)k(test)i(pro)s(duced)c(indeterminate)h(results.)54
-b(Usually)-8 b(,)36 b(this)e(means)h(the)h(test)g(executed)630
-950 y(in)g(an)h(unexp)s(ected)f(fashion;)k(this)c(outcome)j(requires)c
-(that)j(a)g(h)m(uman)e(b)s(eing)g(go)i(o)m(v)m(er)630
-1059 y(results,)c(to)h(determine)e(if)g(the)h(test)h(should)d(ha)m(v)m
-(e)k(passed)d(or)h(failed.)50 b(This)33 b(message)i(is)630
-1169 y(also)25 b(used)g(for)g(an)m(y)h(test)h(that)f(requires)e(h)m
-(uman)g(in)m(terv)m(en)m(tion)i(b)s(ecause)f(it)g(is)g(b)s(ey)m(ond)g
-(the)630 1279 y(abilities)h(of)i(the)h(testing)f(framew)m(ork.)40
-b(An)m(y)28 b(unresolv)m(ed)g(test)h(should)d(resolv)m(ed)i(to)h
-Fr(PASS)630 1388 y Fv(or)h Fr(FAIL)g Fv(b)s(efore)g(a)g(test)i(run)d
-(can)h(b)s(e)g(considered)f(\014nished.)630 1523 y(Note)h(that)f(for)f
-Fo(posix)p Fv(,)g(eac)m(h)i(assertion)e(m)m(ust)g(pro)s(duce)f(a)i
-(test)g(result)e(co)s(de.)41 b(If)27 b(the)i(test)630
-1632 y(isn't)36 b(actually)g(run,)h(it)f(m)m(ust)g(pro)s(duce)g
-Fr(UNRESOLVED)d Fv(rather)k(than)f(just)g(lea)m(ving)g(that)630
-1742 y(test)g(out)f(of)g(the)g(output.)54 b(This)33 b(means)i(that)g(y)
-m(ou)h(ha)m(v)m(e)g(to)g(b)s(e)e(careful)g(when)g(writing)630
-1851 y(tests,)g(to)f(not)g(carelessly)f(use)g(tcl)h(statemen)m(ts)h
-(lik)m(e)e Fr(return)p Fv(|if)e(y)m(ou)j(alter)f(the)h(\015o)m(w)g(of)
-630 1961 y(con)m(trol)25 b(of)g(the)g(tcl)g(co)s(de)g(y)m(ou)h(m)m(ust)
-e(insure)f(that)j(ev)m(ery)g(test)f(still)e(pro)s(duces)h(some)h
-(result)630 2071 y(co)s(de.)630 2205 y(Here)31 b(are)g(some)f(of)h(the)
-g(w)m(a)m(ys)g(a)g(test)g(ma)m(y)g(wind)d(up)h Fr(UNRESOLVED)p
-Fv(:)705 2340 y Ft(\017)60 b Fv(A)30 b(test's)i(execution)e(is)g(in)m
-(terrupted.)705 2474 y Ft(\017)60 b Fv(A)34 b(test)g(do)s(es)f(not)h
-(pro)s(duce)e(a)i(clear)f(result.)49 b(This)32 b(is)g(usually)f(b)s
-(ecause)j(there)g(w)m(as)810 2584 y(an)h Fr(ERROR)e Fv(from)i(DejaGn)m
-(u)h(while)d(pro)s(cessing)h(the)h(test,)i(or)e(b)s(ecause)g(there)g(w)
-m(ere)810 2693 y(three)41 b(or)f(more)h Fr(WARNING)e
-Fv(messages.)72 b(An)m(y)41 b Fr(WARNING)d Fv(or)j Fr(ERROR)e
-Fv(messages)j(can)810 2803 y(in)m(v)-5 b(alidate)32 b(the)h(output)f
-(of)h(the)h(test.)49 b(This)31 b(usually)g(requires)g(a)j(h)m(uman)e(b)
-s(eing)f(to)810 2912 y(examine)k(the)g(output)f(to)i(determine)e(what)g
-(really)g(happ)s(ened|and)f(to)i(impro)m(v)m(e)810 3022
-y(the)c(test)g(case.)705 3156 y Ft(\017)60 b Fv(A)30
-b(test)i(dep)s(ends)c(on)j(a)f(previous)f(test,)j(whic)m(h)d(fails.)705
-3291 y Ft(\017)60 b Fv(The)30 b(test)h(w)m(as)g(set)g(up)e(incorrectly)
--8 b(.)150 3475 y Fr(UNTESTED)96 b Fv(A)31 b(test)h(w)m(as)g(not)f
-(run.)42 b(This)29 b(is)h(a)i(placeholder,)e(used)g(when)h(there)g(is)f
-(no)h(real)g(test)h(case)630 3585 y(y)m(et.)150 3744
-y(The)j(only)h(remaining)e(output)h(message)i(left)f(is)f(in)m(tended)g
-(to)i(test)g(features)f(that)g(are)h(sp)s(eci\014ed)d(b)m(y)150
-3854 y(the)d(applicable)d Fo(posix)h Fv(standard)h(as)h(conditional:)
-150 4038 y Fr(UNSUPPORTED)630 4148 y Fv(There)40 b(is)g(no)g(supp)s
-(ort)f(for)h(the)h(tested)g(case.)72 b(This)39 b(ma)m(y)i(mean)g(that)g
-(a)g(conditional)630 4257 y(feature)30 b(of)f(an)g(op)s(erating)g
-(system,)g(or)h(of)f(a)g(compiler,)g(is)f(not)h(implemen)m(ted.)39
-b(DejaGn)m(u)630 4367 y(also)23 b(uses)g(this)g(message)h(when)e(a)i
-(testing)g(en)m(vironmen)m(t)f(\(often)h(a)f(\\bare)h(b)s(oard")f
-(target\))630 4477 y(lac)m(ks)31 b(basic)f(supp)s(ort)e(for)i
-(compiling)f(or)h(running)e(the)i(test)i(case.)42 b(F)-8
-b(or)31 b(example,)f(a)h(test)630 4586 y(for)38 b(the)h(system)f
-(subroutine)e Fr(gethostname)f Fv(w)m(ould)i(nev)m(er)i(w)m(ork)f(on)g
-(a)h(target)h(b)s(oard)630 4696 y(running)28 b(only)h(a)i(b)s(o)s(ot)f
-(monitor.)275 4855 y(DejaGn)m(u)g(uses)f(the)h(same)h(output)e(pro)s
-(cedures)g(to)h(pro)s(duce)f(these)h(messages)h(for)e(all)g(test)i
-(suites,)150 4965 y(and)i(these)h(pro)s(cedures)e(are)h(already)g(kno)m
-(wn)g(to)h(conform)f(to)h Fo(posix)f Fv(1003.3.)52 b(F)-8
-b(or)34 b(a)g(DejaGn)m(u)g(test)150 5074 y(suite)28 b(to)i(conform)f
-(to)h Fo(posix)e Fv(1003.3,)k(y)m(ou)d(m)m(ust)g(a)m(v)m(oid)h(the)f
-Fr(setup_xfail)d Fv(pro)s(cedure)i(as)h(describ)s(ed)150
-5184 y(in)21 b(the)i Fr(PASS)e Fv(section)i(ab)s(o)m(v)m(e,)i(and)d(y)m
-(ou)h(m)m(ust)g(b)s(e)e(careful)h(to)i(return)d Fr(UNRESOLVED)f
-Fv(where)i(appropriate,)150 5293 y(as)31 b(describ)s(ed)d(in)h(the)i
-Fr(UNRESOLVED)c Fv(section)k(ab)s(o)m(v)m(e.)p eop
-%%Page: 8 10
-8 9 bop 150 -116 a Fv(8)2409 b(DejaGn)m(u)32 b(T)-8 b(esting)30
-b(F)-8 b(ramew)m(ork)150 83 y Fu(2.5)68 b(F)-11 b(uture)44
-b(directions)275 276 y Fv(In)28 b(the)h(near)g(future,)f(there)i(are)f
-(t)m(w)m(o)h(parallel)d(directions)h(for)h(DejaGn)m(u)h(dev)m(elopmen)m
-(t.)40 b(The)29 b(\014rst)150 385 y(is)g(to)j(add)d(supp)s(ort)g(for)h
-(more)h(hosts)f(and)g(targets.)275 520 y(The)d(second)g(w)m(ould)g(p)s
-(ermit)f(testing)h(programs)h(with)e(a)i(more)g(complex)f(in)m
-(terface,)i(whether)e(text)150 629 y(based)j(or)h(GUI)g(based.)42
-b(Tw)m(o)31 b(comp)s(onen)m(ts)g(already)f(exist:)42
-b(a)31 b(Tcl)f(based)g(X)h(windo)m(w)f(to)s(olkit,)g(and)h(a)150
-739 y(terminal)h(pac)m(k)-5 b(age)36 b(for)e Fr(expect)p
-Fv(.)49 b(Both)35 b(of)f(these)g(could)f(b)s(e)g(merged)h(in)m(to)g
-(DejaGn)m(u)h(in)d(a)j(w)m(a)m(y)f(that)150 848 y(p)s(ermits)29
-b(testing)h(programs)g(that)h(run)e(in)g(eac)m(h)j(en)m(vironmen)m(t.)
-275 983 y(Mean)m(while,)26 b(w)m(e)g(hop)s(e)f(DejaGn)m(u)i(enables)e
-(the)h(creation)g(of)g(test)h(suites)e(for)g(conformance)i(to)f
-Fo(ansi)150 1093 y Fv(C)33 b(and)g(C)p Fr(++)p Fv(,)h(to)g
-Fo(posix)p Fv(,)g(and)g(to)g(other)g(standards.)49 b(W)-8
-b(e)35 b(encourage)g(y)m(ou)f(to)h(mak)m(e)f(an)m(y)g(test)h(suites)150
-1202 y(y)m(ou)c(create)h(freely)d(a)m(v)-5 b(ailable,)30
-b(under)f(the)i(same)g(terms)f(as)g(DejaGn)m(u)i(itself.)150
-1460 y Fu(2.6)68 b(Tcl)45 b(and)f(Exp)t(ect)275 1652
-y Fv(Tcl)25 b(w)m(as)h(in)m(tro)s(duced)e(in)h(a)h(pap)s(er)f(b)m(y)h
-(John)f(K.)h(Ousterhout)f(at)i(the)f(1990)i(Win)m(ter)d(Usenix)h
-(confer-)150 1762 y(ence,)h Fq(Tcl:)38 b(An)25 b(Em)m(b)s(eddable)f
-(Command)g(Language)p Fv(.)40 b(That)26 b(pap)s(er)e(is)g(included)f
-(in)h(P)m(ostScript)h(form)150 1871 y(in)32 b(the)i(`)p
-Fr(doc)p Fv(')f(sub)s(directory)f(of)h(the)h(Tcl)f(distribution.)46
-b(The)34 b(v)m(ersion)f(of)g(Tcl)g(included)e(in)h(DejaGn)m(u)150
-1981 y(at)f(this)e(time)h(is)g(Tcl)f(7.4p3.)275 2115
-y(Don)h(Lib)s(es)f(in)m(tro)s(duced)f Fr(expect)h Fv(in)g(his)f(pap)s
-(er)h Fq(exp)s(ect:)42 b(Curing)28 b(Those)i(Uncon)m(trollable)f(Fits)h
-(of)150 2225 y(In)m(teraction)38 b Fv(at)h(the)f(1990)h(Summer)e
-(Usenix)f(conference.)64 b(The)37 b(pap)s(er)g(is)g(included)e(in)h(P)m
-(ostScript)150 2335 y(form)27 b(in)g(the)h Fr(expect)e
-Fv(distribution)f(\(as)j(are)h(sev)m(eral)f(other)g(pap)s(ers)f(ab)s
-(out)g Fr(expect)p Fv(\).)39 b(The)27 b(v)m(ersion)h(of)150
-2444 y(exp)s(ect)j(included)d(in)h(DejaGn)m(u)i(at)g(this)e(time)h(is)g
-(exp)s(ect)h(5.18.0.)p eop
-%%Page: 9 11
-9 10 bop 150 -116 a Fv(Chapter)30 b(3:)41 b(Using)29
-b Fr(runtest)2499 b Fv(9)150 100 y Fs(3)80 b(Using)54
-b Fl(runtest)275 334 y Fr(runtest)28 b Fv(is)i(the)h(executable)g(test)
-h(driv)m(er)d(for)i(DejaGn)m(u.)42 b(Y)-8 b(ou)31 b(can)g(sp)s(ecify)e
-(t)m(w)m(o)k(kinds)28 b(of)j(things)150 443 y(on)25 b(the)g
-Fr(runtest)e Fv(command)i(line:)37 b(command)24 b(line)g(options,)h
-(and)g(Tcl)f(v)-5 b(ariables)24 b(for)h(the)g(test)h(scripts.)150
-553 y(The)k(options)g(are)g(listed)f(alphab)s(etically)f(b)s(elo)m(w.)
-275 687 y Fr(runtest)g Fv(returns)h(an)i(exit)f(co)s(de)h(of)f
-Fr(1)h Fv(if)e(an)m(y)i(test)g(has)f(an)h(unexp)s(ected)f(result;)f
-(otherwise)h(\(if)g(all)150 797 y(tests)h(pass)f(or)g(fail)g(as)g(exp)s
-(ected\))h(it)f(returns)f Fr(0)h Fv(as)h(the)g(exit)f(co)s(de.)275
-932 y Fr(runtest)25 b Fv(\015ags)i(the)g(outcome)i(of)e(eac)m(h)h(test)
-g(as)g(one)f(of)g(these)h(cases.)41 b(\(See)27 b(Section)g(2.4)h([A)g
-(POSIX)150 1041 y(conforming)f(test)h(framew)m(ork],)h(page)f(6,)h(for)
-e(a)h(discussion)d(of)i(ho)m(w)h Fo(posix)e Fv(sp)s(eci\014es)h(the)g
-(meanings)g(of)150 1151 y(these)k(cases.\))150 1310 y
-Fr(PASS)288 b Fv(The)29 b(most)g(desirable)f(outcome:)41
-b(the)29 b(test)i(succeeded,)f(and)e(w)m(as)i(exp)s(ected)f(to)h
-(succeed.)150 1469 y Fr(XPASS)240 b Fv(A)26 b(pleasan)m(t)h(kind)d(of)j
-(failure:)37 b(a)26 b(test)h(w)m(as)g(exp)s(ected)g(to)g(fail,)f(but)f
-(succeeded.)40 b(This)24 b(ma)m(y)630 1579 y(indicate)h(progress;)i
-(insp)s(ect)e(the)h(test)h(case)g(to)f(determine)f(whether)g(y)m(ou)i
-(should)c(amend)630 1689 y(it)30 b(to)h(stop)f(exp)s(ecting)h(failure.)
-150 1848 y Fr(FAIL)288 b Fv(A)33 b(test)g(failed,)g(although)f(it)g(w)m
-(as)h(exp)s(ected)g(to)g(succeed.)49 b(This)31 b(ma)m(y)i(indicate)f
-(regress;)630 1958 y(insp)s(ect)d(the)i(test)g(case)g(and)f(the)h
-(failing)d(soft)m(w)m(are)k(to)f(lo)s(cate)g(the)g(bug.)150
-2117 y Fr(XFAIL)240 b Fv(A)38 b(test)g(failed,)h(but)e(it)g(w)m(as)h
-(exp)s(ected)g(to)h(fail.)61 b(This)36 b(result)h(indicates)g(no)g(c)m
-(hange)i(in)630 2227 y(a)33 b(kno)m(wn)g(bug.)47 b(If)33
-b(a)g(test)h(fails)d(b)s(ecause)i(the)g(op)s(erating)f(system)h(where)g
-(the)g(test)h(runs)630 2336 y(lac)m(ks)d(some)g(facilit)m(y)e(required)
-g(b)m(y)h(the)g(test,)i(the)e(outcome)i(is)e Fr(UNSUPPORTED)d
-Fv(instead.)150 2496 y Fr(UNRESOLVED)630 2605 y Fv(Output)39
-b(from)h(a)h(test)h(requires)d(man)m(ual)h(insp)s(ection;)j(the)e(test)
-h(suite)d(could)h(not)h(au-)630 2715 y(tomatically)e(determine)f(the)i
-(outcome.)68 b(F)-8 b(or)40 b(example,)i(y)m(our)d(tests)h(can)f(rep)s
-(ort)g(this)630 2824 y(outcome)32 b(is)d(when)g(a)i(test)g(do)s(es)g
-(not)f(complete)h(as)g(exp)s(ected.)150 2984 y Fr(UNTESTED)96
-b Fv(A)28 b(test)h(case)f(is)f(not)h(y)m(et)h(complete,)g(and)f(in)e
-(particular)g(cannot)j(y)m(et)f(pro)s(duce)f(a)h Fr(PASS)f
-Fv(or)630 3093 y Fr(FAIL)p Fv(.)39 b(Y)-8 b(ou)28 b(can)h(also)f(use)g
-(this)f(outcome)i(in)e(dumm)m(y)g(\\tests")j(that)e(note)h(explicitly)d
-(the)630 3203 y(absence)31 b(of)f(a)h(real)f(test)h(case)h(for)e(a)h
-(particular)d(prop)s(ert)m(y)-8 b(.)150 3362 y Fr(UNSUPPORTED)630
-3472 y Fv(A)32 b(test)h(dep)s(ends)d(on)i(a)h(conditionally)c(a)m(v)-5
-b(ailable)32 b(feature)g(that)h(do)s(es)f(not)g(exist)g(\(in)f(the)630
-3582 y(con\014gured)40 b(testing)h(en)m(vironmen)m(t\).)71
-b(F)-8 b(or)42 b(example,)h(y)m(ou)e(can)g(use)g(this)e(outcome)j(to)
-630 3691 y(rep)s(ort)f(on)h(a)h(test)g(case)g(that)g(do)s(es)e(not)i(w)
-m(ork)f(on)g(a)g(particular)f(target)i(b)s(ecause)g(its)630
-3801 y(op)s(erating)30 b(system)g(supp)s(ort)f(do)s(es)h(not)h(include)
-d(a)j(required)d(subroutine.)275 3960 y Fr(runtest)g
-Fv(ma)m(y)j(also)f(displa)m(y)f(the)h(follo)m(wing)f(messages:)150
-4120 y Fr(ERROR)240 b Fv(Indicates)43 b(a)g(ma)5 b(jor)43
-b(problem)f(\(detected)j(b)m(y)e(the)g(test)h(case)g(itself)7
-b(\))43 b(in)e(running)g(the)630 4229 y(test.)65 b(This)37
-b(is)g(usually)f(an)i(unreco)m(v)m(erable)h(error,)h(suc)m(h)e(as)h(a)f
-(missing)e(\014le)i(or)g(loss)g(of)630 4339 y(comm)m(unication)30
-b(to)i(the)f(target.)44 b(\()p Fo(posix)30 b Fv(test)i(suites)e(should)
-f(not)i(emit)g(this)f(message;)630 4448 y(use)g Fr(UNSUPPORTED)p
-Fv(,)e Fr(UNTESTED)p Fv(,)g(or)i Fr(UNRESOLVED)e Fv(instead,)i(as)g
-(appropriate.\))150 4608 y Fr(WARNING)144 b Fv(Indicates)30
-b(a)h(p)s(ossible)e(problem)g(in)g(running)f(the)j(test.)43
-b(Usually)29 b(w)m(arnings)g(corresp)s(ond)630 4717 y(to)24
-b(reco)m(v)m(erable)g(errors,)g(or)f(displa)m(y)e(an)h(imp)s(ortan)m(t)
-g(message)i(ab)s(out)f(the)g(follo)m(wing)e(tests.)150
-4877 y Fr(NOTE)288 b Fv(An)30 b(informational)e(message)k(ab)s(out)e
-(the)h(test)g(case.)275 5036 y(This)h(is)g(the)i(full)e(set)i(of)g
-(command)g(line)e(options)h(that)i Fr(runtest)d Fv(recognizes.)51
-b(Argumen)m(ts)34 b(ma)m(y)150 5146 y(b)s(e)c(abbreviated)f(to)j(the)e
-(shortest)h(unique)d(string.)p eop
-%%Page: 10 12
-10 11 bop 150 -116 a Fv(10)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)390 83 y Fr(runtest)46
-b(--tool)g Fq(to)s(ol)99 b Fr([)47 b Fq(testsuite)p Fr(.exp)g(...)g(])
-390 187 y([)g Fq(testsuite)p Fr(.exp="testfile1)d(...")j(])390
-291 y([)g Fq(tclv)-5 b(ar)7 b Fr(=)p Fq(v)-5 b(alue)5
-b Fr(...)46 b(])390 394 y([)h(--all)g(])95 b([)47 b(--baud)g
-Fq(baud-rate)52 b Fr(])96 b([)47 b(--connect)e Fq(t)m(yp)s(e)53
-b Fr(])390 498 y([)47 b(--debug)f(])95 b([)48 b(--help)e(])95
-b([)48 b(--host)e Fq(string)54 b Fr(])390 602 y([)47
-b(--mail)g(")p Fq(name)52 b Fr(...)o(")c(])95 b([)47
-b(--name)g Fq(string)54 b Fr(])390 706 y([)47 b(--name)g
-Fq(name)52 b Fr(])96 b([)47 b(--outdir)f Fq(path)h Fr(])390
-809 y([)g(--objdir)f Fq(path)i Fr(])95 b([)47 b(--reboot)f(])390
-913 y([)h(--srcdir)f Fq(path)i Fr(])95 b([)47 b(--strace)f
-Fq(n)h Fr(])390 1017 y([)g(--target)f Fq(string)55 b
-Fr(--build)45 b Fq(string)55 b Fr(])390 1121 y([)47 b(-v)h(|)f
-(--verbose)e(])96 b([)47 b(-V)g(|)h(--version)d(])95
-b([)48 b(--D)p Fq(n)e Fr(])150 1273 y(--tool)29 b Fq(to)s(ol)630
-1382 y(to)s(ol)39 b Fv(sp)s(eci\014es)c(what)h(set)g(of)g(tests)h(to)f
-(run,)g(and)g(what)f(initialization)e(mo)s(dule)h(to)j(use.)630
-1492 y Fq(to)s(ol)c Fv(is)c(used)g Fn(only)38 b Fv(for)30
-b(these)g(t)m(w)m(o)h(purp)s(oses:)39 b(it)29 b(is)f
-Fn(not)39 b Fv(used)29 b(to)i(name)e(the)h(executable)630
-1601 y(program)25 b(to)h(test.)40 b(Executable)25 b(to)s(ol)g(names)g
-(\(and)g(paths\))g(are)h(recorded)f(in)f(`)p Fr(site.exp)p
-Fv(')630 1711 y(\(see)g(Chapter)e(4)i([Con\014guration)d(dep)s(enden)m
-(t)h(v)-5 b(alues],)25 b(page)e(15\),)j(and)c(y)m(ou)i(can)f(o)m(v)m
-(erride)630 1820 y(them)30 b(b)m(y)h(sp)s(ecifying)d(Tcl)h(v)-5
-b(ariables)29 b(on)i(the)f(command)g(line.)630 1951 y(F)-8
-b(or)33 b(example,)g(including)c(`)p Fr(--tool)g(gcc)p
-Fv(')j(on)h(the)f Fr(runtest)f Fv(command)h(line)f(runs)g(tests)630
-2061 y(from)37 b(all)g(test)h(sub)s(directories)d(whose)j(names)f(matc)
-m(h)i(`)p Fr(gcc.*)p Fv(',)g(and)e(uses)g(one)h(of)g(the)630
-2170 y(initialization)27 b(mo)s(dules)h(named)i(`)p Fr
-(config/*-gcc.exp)p Fv('.)36 b(T)-8 b(o)31 b(sp)s(ecify)d(the)j(name)f
-(of)g(the)630 2280 y(compiler)19 b(\(p)s(erhaps)g(as)i(an)g(alternativ)
-m(e)g(path)f(to)h(what)g Fr(runtest)d Fv(w)m(ould)h(use)i(b)m(y)f
-(default\),)630 2390 y(use)30 b(`)p Fr(GCC=)p Fq(binname)5
-b Fv(')28 b(on)j(the)f Fr(runtest)e Fv(command)j(line.)150
-2541 y Fq(testsuite)p Fr(.exp)f(...)630 2651 y Fv(Sp)s(ecify)j(the)i
-(names)f(of)h(testsuites)f(to)i(run.)51 b(By)35 b(default,)g
-Fr(runtest)e Fv(runs)f(all)i(tests)h(for)630 2760 y(the)c(to)s(ol,)g
-(but)g(y)m(ou)g(can)g(restrict)g(it)f(to)i(particular)d(testsuites)i(b)
-m(y)g(giving)f(the)h(names)g(of)630 2870 y(the)g(`)p
-Fr(.exp)p Fv(')e Fr(expect)g Fv(scripts)g(that)i(con)m(trol)g(them.)630
-3001 y Fq(testsuite)p Fv(.exp)g(ma)m(y)g(not)f(include)f(path)h
-(information;)f(use)h(plain)e(\014lenames.)150 3152 y
-Fq(test\014le)p Fr(.exp="testfile1)e(...")630 3262 y
-Fv(Sp)s(ecify)38 b(a)j(subset)e(of)i(tests)g(in)d(a)j(suite)e(to)i
-(run.)69 b(F)-8 b(or)41 b(compiler)d(or)i(assem)m(bler)g(tests,)630
-3372 y(whic)m(h)31 b(often)i(use)f(a)g(single)f(`)p Fr(.exp)p
-Fv(')h(script)f(co)m(v)m(ering)i(man)m(y)g(di\013eren)m(t)f(source)g
-(\014les,)g(this)630 3481 y(option)h(allo)m(ws)h(y)m(ou)g(to)h(further)
-e(restrict)h(the)g(tests)h(b)m(y)f(listing)d(particular)i(source)h
-(\014les)630 3591 y(to)e(compile.)41 b(Some)31 b(to)s(ols)g(ev)m(en)g
-(supp)s(ort)e(wildcards)g(here.)42 b(The)30 b(wildcards)f(supp)s(orted)
-630 3700 y(dep)s(end)g(up)s(on)f(the)j(to)s(ol,)g(but)e(t)m(ypically)g
-(they)i(are)g Fr(?)p Fv(,)f Fr(*)p Fv(,)g(and)g Fr([chars])p
-Fv(.)150 3852 y Fq(tclv)-5 b(ar)7 b Fr(=)p Fq(v)-5 b(alue)630
-3962 y Fv(Y)d(ou)30 b(can)g(de\014ne)f(Tcl)g(v)-5 b(ariables)28
-b(for)h(use)h(b)m(y)f(y)m(our)h(test)g(scripts)f(in)f(the)i(same)g(st)m
-(yle)g(used)630 4071 y(with)43 b Fr(make)h Fv(for)h(en)m(vironmen)m(t)f
-(v)-5 b(ariables.)82 b(F)-8 b(or)46 b(example,)i(`)p
-Fr(runtest)29 b(GDB=gdb.old)p Fv(')630 4181 y(de\014nes)39
-b(a)h(v)-5 b(ariable)38 b(called)h(`)p Fr(GDB)p Fv(';)44
-b(when)39 b(y)m(our)h(scripts)e(refer)i(to)g(`)p Fr($GDB)p
-Fv(')f(in)g(this)f(run,)630 4290 y(they)31 b(use)f(the)g(v)-5
-b(alue)30 b(`)p Fr(gdb.old)p Fv('.)630 4421 y(The)f(default)g(Tcl)g(v)
--5 b(ariables)28 b(used)h(for)h(most)g(to)s(ols)g(are)g(de\014ned)e(in)
-h(the)g(main)g(DejaGn)m(u)630 4531 y Fr(Makefile)p Fv(;)50
-b(their)44 b(v)-5 b(alues)44 b(are)i(captured)e(in)g(the)h(`)p
-Fr(site.exp)p Fv(')e(\014le.)83 b(See)45 b(Chapter)g(4)630
-4640 y([Con\014guration)29 b(dep)s(enden)m(t)h(v)-5 b(alues],)30
-b(page)h(15.)150 4792 y Fr(--all)240 b Fv(Displa)m(y)38
-b(all)f(test)j(output.)64 b(By)39 b(default,)h Fr(runtest)d
-Fv(sho)m(ws)h(only)g(the)g(output)g(of)h(tests)630 4902
-y(that)33 b(pro)s(duce)f(unexp)s(ected)g(results;)g(that)h(is,)g(tests)
-g(with)e(status)i(`)p Fr(FAIL)p Fv(')f(\(unexp)s(ected)630
-5011 y(failure\),)25 b(`)p Fr(XPASS)p Fv(')f(\(unexp)s(ected)h
-(success\),)i(or)e(`)p Fr(ERROR)p Fv(')f(\(a)i(sev)m(ere)g(error)f(in)f
-(the)h(test)h(case)630 5121 y(itself)7 b(\).)57 b(Sp)s(ecify)34
-b(`)p Fr(--all)p Fv(')h(to)i(see)f(output)g(for)g(tests)g(with)f
-(status)h(`)p Fr(PASS)p Fv(')g(\(success,)i(as)630 5230
-y(exp)s(ected\))c(`)p Fr(XFAIL)p Fv(')f(\(failure,)g(as)h(exp)s
-(ected\),)i(or)d(`)p Fr(WARNING)p Fv(')f(\(minor)h(error)g(in)f(the)i
-(test)630 5340 y(case)d(itself)7 b(\).)p eop
-%%Page: 11 13
-11 12 bop 150 -116 a Fv(Chapter)30 b(3:)41 b(Using)29
-b Fr(runtest)2453 b Fv(11)150 83 y Fr(--baud)29 b Fq(baud-rate)150
-193 y Fr(-b)h Fq(baud-rate)630 302 y Fv(Set)g(the)f(default)g(baud)f
-(rate)i(to)g(something)f(other)h(than)f(9600.)42 b(\(Some)30
-b(serial)e(in)m(terface)630 412 y(programs,)i(lik)m(e)g
-Fr(tip)p Fv(,)g(use)g(a)g(separate)i(initialization)27
-b(\014le)j(instead)f(of)i(this)e(v)-5 b(alue.\))150 571
-y Fr(--connect)28 b Fq(t)m(yp)s(e)630 681 y Fv(Connect)d(to)g(a)g
-(target)h(testing)f(en)m(vironmen)m(t)f(as)h(sp)s(eci\014ed)e(b)m(y)h
-Fq(t)m(yp)s(e)p Fv(,)j(if)c(the)i(target)h(is)e(not)630
-790 y(the)36 b(computer)g(running)e Fr(runtest)p Fv(.)56
-b(F)-8 b(or)37 b(example,)h(use)d(`)p Fr(--connect)p
-Fv(')g(to)h(c)m(hange)i(the)630 900 y(program)27 b(used)g(to)i(connect)
-f(to)g(a)g(\\bare)g(b)s(oard")f(b)s(o)s(ot)h(monitor.)39
-b(The)27 b(c)m(hoices)h(for)g Fq(t)m(yp)s(e)630 1010
-y Fv(in)k(the)i(DejaGn)m(u)g(1.0)h(distribution)30 b(are)k(`)p
-Fr(rlogin)p Fv(',)f(`)p Fr(telnet)p Fv(',)g(`)p Fr(rsh)p
-Fv(',)i(`)p Fr(tip)p Fv(',)f(`)p Fr(kermit)p Fv(',)630
-1119 y(and)c(`)p Fr(mondfe)p Fv('.)630 1254 y(The)j(default)f(for)h
-(this)f(option)h(dep)s(ends)e(on)i(the)g(con\014guration)g(\(see)h
-(Section)f(5.5)h([Re-)630 1363 y(mote)h(targets)g(supp)s(orted],)e
-(page)i(32\).)52 b(The)33 b(default)g(is)f(c)m(hosen)j(to)f(b)s(e)f
-(the)h(most)g(con-)630 1473 y(v)m(enien)m(t)e(comm)m(unication)f(metho)
-s(d)g(a)m(v)-5 b(ailable,)32 b(but)f(often)h(other)g(alternativ)m(es)g
-(w)m(ork)g(as)630 1582 y(w)m(ell;)c(y)m(ou)h(ma)m(y)g(\014nd)d(it)i
-(useful)f(to)i(try)f(alternativ)m(e)g(connect)i(metho)s(ds)d(if)g(y)m
-(ou)i(susp)s(ect)f(a)630 1692 y(comm)m(unication)i(problem)f(with)g(y)m
-(our)h(testing)h(target.)150 1851 y Fr(--debug)144 b
-Fv(T)-8 b(urns)23 b(on)i(the)f Fr(expect)f Fv(in)m(ternal)h(debugging)f
-(output.)39 b(Debugging)24 b(output)h(is)e(displa)m(y)m(ed)630
-1961 y(as)44 b(part)g(of)g(the)g Fr(runtest)e Fv(output,)47
-b(and)c(logged)i(to)f(a)h(\014le)e(called)g(`)p Fr(dbg.log)p
-Fv('.)79 b(The)630 2071 y(extra)25 b(debugging)d(output)i(do)s(es)f
-Fn(not)34 b Fv(app)s(ear)23 b(on)h(standard)f(output,)i(unless)d(the)i
-(v)m(erb)s(ose)630 2180 y(lev)m(el)33 b(is)g(greater)i(than)e(2)i
-(\(for)e(instance,)i(to)f(see)h(debug)d(output)i(immediately)-8
-b(,)33 b(sp)s(ecify)630 2290 y(`)p Fr(--debug)c(-v)g(-v)p
-Fv('\).)57 b(The)35 b(debugging)g(output)g(sho)m(ws)g(all)g(attempts)i
-(at)f(matc)m(hing)g(the)630 2399 y(test)e(output)f(of)g(the)h(to)s(ol)f
-(with)f(the)h(scripted)f(patterns)i(describing)c(exp)s(ected)k(output.)
-630 2509 y(The)c(output)g(generated)h(with)e(`)p Fr(--strace)p
-Fv(')g(also)h(go)s(es)h(in)m(to)g(`)p Fr(dbg.log)p Fv('.)150
-2668 y Fr(--help)150 2778 y(-he)336 b Fv(Prin)m(ts)25
-b(out)h(a)h(short)e(summary)g(of)h(the)h Fr(runtest)d
-Fv(options,)i(then)g(exits)g(\(ev)m(en)h(if)e(y)m(ou)h(also)630
-2888 y(sp)s(ecify)j(other)i(options\).)150 3047 y Fr(--host)e
-Fq(string)630 3156 y(string)47 b Fv(is)39 b(a)i(full)d(con\014guration)
-i(\\triple")f(name)h(as)h(used)e(b)m(y)i Fr(configure)p
-Fv(.)67 b(Use)41 b(this)630 3266 y(option)30 b(to)h(o)m(v)m(erride)g
-(the)f(default)g(string)f(recorded)i(b)m(y)f(y)m(our)h
-(con\014guration's)e(c)m(hoice)j(of)630 3376 y(host.)40
-b(This)27 b(c)m(hoice)j(do)s(es)f(not)g(c)m(hange)h(ho)m(w)f(an)m
-(ything)f(is)g(actually)g(con\014gured)g(unless)g({)630
-3485 y(build)21 b(is)h(also)i(sp)s(eci\014ed;)g(it)f(a\013ects)i
-Fn(only)33 b Fv(DejaGn)m(u)24 b(pro)s(cedures)f(that)h(compare)g(the)g
-(host)630 3595 y(string)39 b(with)f(particular)g(v)-5
-b(alues.)68 b(The)39 b(pro)s(cedures)f Fr(ishost)p Fv(,)j
-Fr(istarget)p Fv(,)f Fr(isnative)p Fv(,)630 3704 y(and)d
-Fr(setup_xfail)d Fv(are)k(a\013ected)i(b)m(y)d(`)p Fr(--host)p
-Fv('.)61 b(In)37 b(this)g(usage,)j Fr(host)c Fv(refers)h(to)i(the)630
-3814 y(mac)m(hine)f(that)h(the)f(tests)h(are)g(to)g(b)s(e)e(run)g(on,)j
-(whic)m(h)d(ma)m(y)i(not)g(b)s(e)e(the)i(same)f(as)h(the)630
-3924 y Fr(build)27 b Fv(mac)m(hine.)39 b(If)28 b Fr(--build)e
-Fv(is)i(also)g(sp)s(eci\014ed,)f(then)h Fr(--host)e Fv(refers)i(to)h
-(the)f(mac)m(hine)630 4033 y(that)j(the)g(tests)g(wil,)d(b)s(e)i(run)f
-(on,)i(not)f(the)h(mac)m(hine)f(DejaGn)m(u)h(is)e(run)g(on.)150
-4193 y Fr(--build)f Fq(string)630 4302 y(string)39 b
-Fv(is)32 b(a)h(full)e(con\014guration)h(\\triple")g(name)g(as)h(used)f
-(b)m(y)h Fr(configure)p Fv(.)45 b(This)31 b(is)h(the)630
-4412 y(t)m(yp)s(e)c(of)h(mac)m(hine)f(DejaGn)m(u)h(and)e(the)i(to)s
-(ols)f(to)g(b)s(e)g(tested)h(are)g(built)d(on.)39 b(F)-8
-b(or)29 b(a)g(normal)630 4521 y(cross)h(this)g(is)f(the)i(same)g(as)f
-(the)h(host,)f(but)g(for)g(a)h(canadian)f(cross,)h(they)f(are)h(sep)s
-(erate.)150 4681 y Fr(--name)e Fq(name)630 4790 y(name)44
-b Fv(is)37 b(a)i(name)g(for)f(the)h(particular)e(testing)h(target)j
-(mac)m(hine)d(\(for)h(cross)f(testing\).)630 4900 y(If)31
-b(the)i(testing)f(target)h(has)f(IP)g(net)m(w)m(ork)g(supp)s(ort)f
-(\(for)h(example,)g Fr(RPC)f Fv(or)h Fr(NFS)p Fv(\),)g(this)f(is)630
-5010 y(the)38 b(net)m(w)m(ork)g(name)g(for)f(the)h(target)h(itself.)61
-b(\()p Fq(name)43 b Fv(is)37 b Fn(not)i(the)h(c)-5 b(on\014gur)g(ation)
-41 b(string)630 5119 y Fv(y)m(ou)26 b(sp)s(ecify)f(as)h(a)h(target)h
-(with)c Fr(configure)p Fv(;)i(the)g(`)p Fr(--name)p Fv(')f(option)g
-(names)h(a)h(particular)630 5229 y(target,)38 b(rather)e(than)f
-(describing)e(a)j(class)f(of)g(targets.\))58 b(F)-8 b(or)36
-b(targets)h(that)f(connect)g(in)p eop
-%%Page: 12 14
-12 13 bop 150 -116 a Fv(12)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)630 83 y(other)25 b(w)m(a)m(ys,)i(the)
-e(meaning)g(of)g(the)g Fq(name)30 b Fv(string)24 b(dep)s(ends)f(on)i
-(the)g(connection)g(metho)s(d.)630 193 y(See)31 b(Section)f(5.5)h
-([Remote)h(targets)g(supp)s(orted],)d(page)i(32.)150
-352 y Fr(--name)e Fq(string)630 462 y Fv(Sp)s(ecify)24
-b(a)j(net)m(w)m(ork)g(name)f(of)g(testing)h(target)g(or)f(its)g(host.)
-39 b(The)26 b(particular)e(names)i(that)630 571 y(are)f(meaningful)e
-(with)g(`)p Fr(--name)p Fv(')h(will)e(dep)s(end)h(on)h(y)m(our)h(site)g
-(con\014guration,)g(and)f(on)h(the)630 681 y(connection)31
-b(proto)s(col:)42 b(for)31 b(example,)g Fr(tip)f Fv(connections)h
-(require)e(names)i(from)g(a)g(serial)630 790 y(line)24
-b(con\014guration)i(\014le)f(\(usually)f(called)h(`)p
-Fr(/etc/remote)p Fv('\),)g(while)g Fr(telnet)f Fv(connections)630
-900 y(use)30 b(IP)g(hostnames.)150 1059 y Fr(--objdir)e
-Fq(path)630 1169 y Fv(Use)45 b Fq(path)g Fv(as)g(the)g(top)g(directory)
-f(con)m(taining)g(an)m(y)h(auxiliary)e(compiled)g(test)i(co)s(de.)630
-1279 y(This)28 b(defaults)i(to)h(`)p Fr(.)p Fv('.)41
-b(Use)30 b(this)f(option)h(to)h(lo)s(cate)g(pre-compiled)e(test)i(co)s
-(de.)41 b(Y)-8 b(ou)31 b(can)630 1388 y(normally)e(prepare)g(an)m(y)i
-(auxiliary)d(\014les)h(needed)h(with)g Fr(make)p Fv(.)150
-1548 y Fr(--outdir)e Fq(path)630 1657 y Fv(W)-8 b(rite)28
-b(output)e(logs)h(in)f(directory)h Fq(path)p Fv(.)39
-b(The)27 b(default)f(is)h(`)p Fr(.)p Fv(',)h(the)f(directory)g(where)g
-(y)m(ou)630 1767 y(start)k Fr(runtest)p Fv(.)39 b(This)29
-b(option)h(a\013ects)i(only)e(the)h(summary)e(and)h(the)h(detailed)e
-(log)i(\014les)630 1876 y(`)p Fq(to)s(ol)p Fr(.sum)p
-Fv(')k(and)g(`)p Fq(to)s(ol)p Fr(.log)p Fv('.)57 b(The)35
-b(DejaGn)m(u)i(debug)e(log)h(`)p Fr(dbg.log)p Fv(')e(alw)m(a)m(ys)j
-(app)s(ears)630 1986 y(\(when)30 b(requested\))g(in)f(the)i(lo)s(cal)f
-(directory)-8 b(.)150 2145 y Fr(--reboot)96 b Fv(Reb)s(o)s(ot)27
-b(the)g(target)i(b)s(oard)d(when)g Fr(runtest)f Fv(initializes.)36
-b(Usually)-8 b(,)27 b(when)f(running)e(tests)630 2255
-y(on)33 b(a)h(separate)g(target)g(b)s(oard,)g(it)e(is)h(safer)g(to)h
-(reb)s(o)s(ot)f(the)g(target)i(to)f(b)s(e)e(certain)h(of)h(its)630
-2364 y(state.)42 b(Ho)m(w)m(ev)m(er,)33 b(when)c(dev)m(eloping)h(test)h
-(scripts,)e(reb)s(o)s(oting)h(tak)m(es)h(a)g(lot)g(of)f(time.)150
-2524 y Fr(--srcdir)e Fq(path)630 2633 y Fv(Use)40 b Fq(path)f
-Fv(as)h(the)g(top)g(directory)f(for)g(test)i(scripts)d(to)i(run.)67
-b Fr(runtest)38 b Fv(lo)s(oks)h(in)f(this)630 2743 y(directory)27
-b(for)h(an)m(y)g(sub)s(directory)d(whose)j(name)f(b)s(egins)f(with)h
-(the)h(to)s(olname)f(\(sp)s(eci\014ed)630 2853 y(with)32
-b(`)p Fr(--tool)p Fv('\).)49 b(F)-8 b(or)34 b(instance,)g(with)e(`)p
-Fr(--tool)d(gdb)p Fv(',)34 b Fr(runtest)d Fv(uses)i(tests)h(in)f(sub)s
-(di-)630 2962 y(rectories)i(`)p Fr(gdb.*)p Fv(')e(\(with)h(the)g(usual)
-f(shell-lik)m(e)g(\014lename)g(expansion\).)53 b(If)34
-b(y)m(ou)g(do)h(not)630 3072 y(use)j(`)p Fr(--srcdir)p
-Fv(',)g Fr(runtest)e Fv(lo)s(oks)h(for)h(test)h(directories)e(under)f
-(the)i(curren)m(t)g(w)m(orking)630 3181 y(directory)-8
-b(.)150 3341 y Fr(--strace)28 b Fq(n)630 3450 y Fv(T)-8
-b(urn)21 b(on)g(in)m(ternal)g(tracing)h(for)g Fr(expect)p
-Fv(,)g(to)h Fq(n)e Fv(lev)m(els)g(deep.)38 b(By)22 b(adjusting)f(the)h
-(lev)m(el,)i(y)m(ou)630 3560 y(can)g(con)m(trol)g(the)f(exten)m(t)i(to)
-f(whic)m(h)e(y)m(our)i(output)f(expands)f(m)m(ulti-lev)m(el)g(Tcl)h
-(statemen)m(ts.)630 3670 y(This)h(allo)m(ws)h(y)m(ou)h(to)g(ignore)g
-(some)g(lev)m(els)f(of)h Fr(case)e Fv(or)i Fr(if)f Fv(statemen)m(ts.)41
-b(Eac)m(h)26 b(pro)s(cedure)630 3779 y(call)k(or)g(con)m(trol)h
-(structure)f(coun)m(ts)h(as)f(one)h(\\lev)m(el".)630
-3914 y(The)49 b(output)h(is)f(recorded)g(in)g(the)h(same)g(\014le,)k(`)
-p Fr(dbg.log)p Fv(',)f(used)c(for)h(output)f(from)630
-4023 y(`)p Fr(--debug)p Fv('.)150 4183 y Fr(--target)28
-b Fq(string)630 4292 y Fv(Use)j(this)f(option)h(to)h(o)m(v)m(erride)f
-(the)g(default)f(setting)h(\(running)e(nativ)m(e)i(tests\).)44
-b Fq(string)38 b Fv(is)630 4402 y(a)29 b(full)e(con\014guration)h
-(\\triple")g(name)1955 4369 y Fp(1)2021 4402 y Fv(as)h(used)f(b)m(y)h
-Fr(configure)p Fv(.)38 b(This)27 b(option)h(c)m(hanges)630
-4511 y(the)43 b(con\014guration)f Fr(runtest)f Fv(uses)h(for)h(the)g
-(default)f(to)s(ol)g(names,)k(and)c(other)h(setup)630
-4621 y(information.)59 b(See)37 b(section)g(\\Using)g
-Fr(configure)p Fv(")e(in)g Fq(Cygn)m(us)h(con\014gure)5
-b Fv(,)39 b(for)e(details)630 4731 y(ab)s(out)30 b Fr(configure)e
-Fv(names.)p 150 4829 1200 4 v 192 4895 a Fp(1)275 4928
-y Fv(Con\014guration)h(triples)f(ha)m(v)m(e)k(the)e(form)g(`)p
-Fq(cpu)p Fr(-)p Fq(v)m(endor)p Fr(-)p Fq(os)t Fv('.)p
-eop
-%%Page: 13 15
-13 14 bop 150 -116 a Fv(Chapter)30 b(3:)41 b(Using)29
-b Fr(runtest)2453 b Fv(13)150 83 y Fr(--verbose)150 193
-y(-v)384 b Fv(T)-8 b(urns)32 b(on)h(more)h(output.)50
-b(Rep)s(eating)33 b(this)f(option)h(increases)g(the)h(amoun)m(t)g(of)f
-(output)630 302 y(displa)m(y)m(ed.)65 b(Lev)m(el)39 b(one)g(\(`)p
-Fr(-v)p Fv('\))h(is)e(simply)e(test)k(output.)66 b(Lev)m(el)40
-b(t)m(w)m(o)g(\(`)p Fr(-v)30 b(-v)p Fv('\))39 b(sho)m(ws)630
-412 y(messages)46 b(on)f(options,)k(con\014guration,)g(and)c(pro)s
-(cess)f(con)m(trol.)86 b(V)-8 b(erb)s(ose)46 b(messages)630
-521 y(app)s(ear)31 b(in)e(the)j(detailed)e(\(`)p Fr(*.log)p
-Fv('\))h(log)g(\014le,)g(but)f(not)i(in)e(the)h(summary)f(\(`)p
-Fr(*.sum)p Fv('\))h(log)630 631 y(\014le.)150 790 y Fr(--version)150
-900 y(-V)384 b Fv(Prin)m(ts)26 b(out)h(the)g(v)m(ersion)g(n)m(um)m(b)s
-(ers)f(of)h(DejaGn)m(u,)i Fr(expect)c Fv(and)h(Tcl,)i(and)e(exits)h
-(without)630 1010 y(running)h(an)m(y)i(tests.)150 1169
-y Fr(-D0)150 1279 y(-D1)336 b Fv(Start)26 b(the)g(in)m(ternal)e(Tcl)h
-(debugger.)39 b(The)25 b(Tcl)g(debugger)h(supp)s(orts)e(breakp)s(oin)m
-(ts,)h(single)630 1388 y(stepping,)42 b(and)e(other)g(common)h
-(debugging)e(activities.)70 b(\(See)41 b Fq(A)g(Debugger)g(for)f(Tcl)
-630 1498 y(Applications)32 b Fv(b)m(y)e(Don)h(Lib)s(es.)1722
-1465 y Fp(2)1758 1498 y Fv(\))630 1632 y(If)c(y)m(ou)h(sp)s(ecify)e(`)p
-Fr(-D1)p Fv(',)j(the)e Fr(expect)f Fv(shell)g(stops)i(at)g(a)g(breakp)s
-(oin)m(t)f(as)h(so)s(on)f(as)h(DejaGn)m(u)630 1742 y(in)m(v)m(ok)m(es)j
-(it.)630 1876 y(If)i(y)m(ou)h(sp)s(ecify)f(`)p Fr(-D0)p
-Fv(',)h(DejaGn)m(u)h(starts)f(as)g(usual,)f(but)g(y)m(ou)h(can)g(en)m
-(ter)g(the)g(debugger)630 1986 y(b)m(y)c(sending)f(an)h(in)m(terrupt)f
-(\(e.g.)42 b(b)m(y)31 b(t)m(yping)2219 1983 y Fk(h)p
-2244 1930 106 4 v 2244 1986 a Fj(C-c)p 2244 2001 V 2345
-1983 a Fk(i)2375 1986 y Fv(\).)p 150 5099 1200 4 v 192
-5165 a Fp(2)275 5198 y Fv(Distributed)d(in)h(P)m(ostScript)h(form)g
-(with)f Fr(expect)g Fv(as)h(the)h(\014le)275 5308 y(`)p
-Fr(expect/tcl-debug.ps)p Fv('.)p eop
-%%Page: 14 16
-14 15 bop 150 -116 a Fv(14)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)p eop
-%%Page: 15 17
-15 16 bop 150 -116 a Fv(Chapter)30 b(4:)41 b(Setting)30
-b Fr(runtest)e Fv(defaults)2055 b(15)150 100 y Fs(4)80
-b(Setting)53 b Fl(runtest)g Fs(defaults)275 334 y Fv(The)46
-b(site)g(con\014guration)h(\014le,)j(`)p Fr(site.exp)p
-Fv(',)f(captures)e(con\014guration-dep)s(enden)m(t)e(v)-5
-b(alues)47 b(and)150 443 y(propagates)36 b(them)f(to)h(the)g(DejaGn)m
-(u)g(test)g(en)m(vironmen)m(t)f(using)f(Tcl)g(v)-5 b(ariables.)54
-b(This)33 b(ties)i(the)h(De-)150 553 y(jaGn)m(u)30 b(test)i(scripts)d
-(in)m(to)h(the)h Fr(configure)d Fv(and)h Fr(make)h Fv(programs.)275
-687 y(DejaGn)m(u)h(supp)s(orts)d(more)j(than)f(one)h(`)p
-Fr(site.exp)p Fv(')d(\014le.)40 b(The)30 b(m)m(ultiple)e(instances)i
-(of)h(`)p Fr(site.exp)p Fv(')150 797 y(are)f(loaded)f(in)g(a)h(\014xed)
-f(order)g(built)f(in)m(to)h(DejaGn)m(u)i(\(the)f(more)g(lo)s(cal)f
-(last\).)41 b(The)29 b(\014rst)g(\014le)g(loaded)g(is)150
-907 y(the)i(optional)e Fr(~/.dejagnurc)p Fv(,)e(then)j(the)h(lo)s(cal)f
-(\014les,)f(and)h(\014nally)e(the)j(global)f(\014le.)199
-1041 y(1.)61 b(There)23 b(is)f(am)i(optional)e(\\master")j(`)p
-Fr(site.exp)p Fv(',)e(capturing)g(con\014guration)f(v)-5
-b(alues)23 b(that)h(apply)e(to)330 1151 y(DejaGn)m(u)32
-b(across)g(the)f(b)s(oard,)g(in)f(eac)m(h)i(con\014guration-sp)s
-(eci\014c)e(sub)s(directory)f(of)j(the)f(DejaGn)m(u)330
-1260 y(library)g(directory)-8 b(.)49 b Fr(runtest)31
-b Fv(loads)i(these)g(v)-5 b(alues)33 b(\014rst.)48 b(See)34
-b(App)s(endix)c(A)j([Con\014guring)f(and)330 1370 y(Installing)h
-(DejaGn)m(u],)38 b(page)f(49.)57 b(The)35 b(master)h(`)p
-Fr(site.exp)p Fv(')e(con)m(tains)i(the)f(default)g(v)-5
-b(alues)35 b(for)330 1479 y(all)f(targets)j(and)d(hosts)h(supp)s(orted)
-f(b)m(y)h(DejaGn)m(u.)56 b(This)33 b(master)j(\014le)e(is)g(iden)m
-(ti\014ed)g(b)m(y)h(setting)330 1589 y(the)27 b(en)m(vironmen)m(t)g(v)
--5 b(ariable)26 b Fr(DEJAGNU)f Fv(to)j(the)g(name)f(of)g(the)h(\014le.)
-39 b(This)25 b(is)h(also)h(refered)g(to)h(as)g(the)330
-1699 y(\\global")j(con\014g)f(\014le.)199 1833 y(2.)61
-b(An)m(y)31 b(directory)f(con)m(taining)g(a)h(con\014gured)f(test)h
-(suite)f(also)g(has)h(a)g(`)p Fr(site.exp)p Fv(',)e(capturing)g(con-)
-330 1943 y(\014guration)g(v)-5 b(alues)29 b(sp)s(eci\014c)f(to)i(the)g
-(to)s(ol)g(under)e(test.)41 b(Since)29 b Fr(runtest)f
-Fv(loads)h(these)h(v)-5 b(alues)29 b(last,)330 2052 y(the)40
-b(individual)35 b(test)40 b(con\014guration)g(can)f(either)h(rely)e(on)
-i(and)f(use,)j(or)e(o)m(v)m(erride,)i(an)m(y)e(of)g(the)330
-2162 y(global)30 b(v)-5 b(alues)29 b(from)h(the)h(\\master")g(`)p
-Fr(site.exp)p Fv('.)330 2296 y(Y)-8 b(ou)24 b(can)g(usually)e(generate)
-j(or)f(up)s(date)f(the)h(testsuite)g(`)p Fr(site.exp)p
-Fv(')e(b)m(y)i(t)m(yping)f(`)p Fr(make)30 b(site.exp)p
-Fv(')330 2406 y(in)f(the)i(test)g(suite)f(directory)-8
-b(,)30 b(after)h(the)g(test)g(suite)f(is)f(con\014gured.)199
-2540 y(3.)61 b(Y)-8 b(ou)34 b(can)h(also)e(ha)m(v)m(e)j(a)e(\014le)f
-(in)g(y)m(our)g(home)h(directory)g(called)f Fr(.dejagnurc)p
-Fv(.)48 b(This)33 b(gets)h(loaded)330 2650 y(\014rst)j(b)s(efore)g(the)
-g(other)h(con\014g)f(\014les.)61 b(Usually)36 b(this)g(is)h(used)f(for)
-h(p)s(ersonal)f(stu\013,)j(lik)m(e)e(setting)330 2760
-y Fr(all_flag)28 b Fv(so)j(all)e(the)i(output)f(gets)h(prin)m(ted,)e
-(or)h(v)m(erb)s(osit)m(y)h(lev)m(els.)275 2919 y(Y)-8
-b(ou)29 b(can)g(further)f(o)m(v)m(erride)h(the)g(default)g(v)-5
-b(alues)28 b(in)g(a)h(user-editable)f(section)h(of)g(an)m(y)g(`)p
-Fr(site.exp)p Fv(',)150 3029 y(or)h(b)m(y)h(setting)f(v)-5
-b(ariables)29 b(on)h(the)h Fr(runtest)d Fv(command)i(line.)150
-3253 y Fi(4.0.1)63 b(Con\014g)41 b(V)-10 b(ariables)275
-3445 y Fv(DejaGn)m(u)35 b(uses)f(a)h(named)g(arra)m(y)g(in)e(Tcl)h(to)i
-(hold)d(all)h(the)h(info)e(for)i(eac)m(h)h(mac)m(hine.)53
-b(In)34 b(the)h(case)150 3555 y(of)30 b(a)g(canadian)f(cross,)h(this)e
-(means)i(host)f(information)f(as)i(w)m(ell)f(as)g(target)j
-(information.)38 b(The)29 b(named)150 3665 y(arra)m(y)38
-b(is)e(called)g Fr(target_info)p Fv(,)g(and)g(it)h(has)g(t)m(w)m(o)h
-(indices.)59 b(The)36 b(follo)m(wing)g(\014elds)f(are)j(part)f(of)g
-(the)150 3774 y(arra)m(y)-8 b(.)150 3934 y Fr(name)288
-b Fv(The)36 b(name)g(of)g(the)g(target.)59 b(\(mostly)36
-b(for)g(error)g(messages\))h(This)d(should)g(also)i(b)s(e)g(the)630
-4043 y(string)24 b(used)g(for)h(this)e(target's)k(arra)m(y)-8
-b(.)40 b(It)25 b(should)e(also)i(b)s(e)f(the)h(same)g(as)h(the)f(link)m
-(er)e(script)630 4153 y(so)38 b(w)m(e)g(can)g(\014nd)e(them)h
-(dynamically)-8 b(.)60 b(This)36 b(should)g(b)s(e)g(the)i(same)g(as)g
-(the)f(argumen)m(t)630 4262 y(used)30 b(for)g Fr(push_target{})p
-Fv(.)150 4422 y Fr(ldflags)144 b Fv(This)45 b(is)g(the)i(link)m(er)d
-(\015ags)j(required)e(to)i(pro)s(duce)e(a)i(fully)d(link)m(ed)h
-(executable.)89 b(F)-8 b(or)630 4531 y Fr(libgloss)28
-b Fv(supp)s(orted)h(targets)i(this)f(is)f(usually)f(just)i(the)h(name)f
-(of)h(the)f(link)m(er)f(script.)150 4691 y Fr(config)192
-b Fv(The)37 b(target)j(canonical)d(for)h(this)e(target.)65
-b(This)36 b(is)h(used)g(b)m(y)g(some)i(init)d(\014les)g(to)j(mak)m(e)
-630 4800 y(sure)30 b(the)g(target)i(is)e(supp)s(orted.)150
-4960 y Fr(cflags)192 b Fv(The)30 b(\015ags)g(required)f(to)i(pro)s
-(duce)e(an)i(ob)5 b(ject)31 b(\014le)e(from)h(a)h(source)g(\014le.)150
-5119 y Fr(connect)144 b Fv(This)29 b(is)h(the)h(connectmo)s(de)g(for)g
-(this)e(target.)44 b(This)29 b(is)g(for)i(b)s(oth)f(IP)g(and)h(serial)e
-(connec-)630 5229 y(tions.)40 b(T)m(ypically)29 b(this)g(is)g(either)h
-Fr(telnet)p Fv(,)f Fr(rlogin)p Fv(,)g(or)h Fr(rsh)p Fv(.)p
-eop
-%%Page: 16 18
-16 17 bop 150 -116 a Fv(16)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fr(target)192
-b Fv(This)26 b(is)i(the)g(hostname)h(of)f(the)h(target.)41
-b(This)27 b(is)g(for)h(TCP/IP)g(based)g(connections,)h(and)630
-193 y(is)g(also)i(used)e(for)h(v)m(ersion)g(of)h(tip)e(that)i(use)f
-(/etc/remote.)150 352 y Fr(serial)192 b Fv(This)29 b(is)g(the)i(serial)
-e(p)s(ort.)40 b(This)28 b(is)i(t)m(ypically)f(/dev/tt)m(y?)42
-b(or)31 b(com?:.)150 511 y Fr(netport)144 b Fv(This)29
-b(is)g(the)i(IP)f(p)s(ort.)40 b(This)29 b(is)g(commonly)h(used)g(for)g
-(telneting)g(to)h(target)h(b)s(oards)d(that)630 621 y(are)g(connected)g
-(to)g(a)f(terminal)f(serv)m(er.)40 b(In)28 b(that)h(case)g(the)f(IP)g
-(p)s(ort)g(sp)s(eci\014es)f(the)h(whic)m(h)630 731 y(serial)h(p)s(ort)h
-(to)h(use.)150 890 y Fr(baud)288 b Fv(This)29 b(is)g(the)i(baud)e(rate)
-i(for)f(a)h(serial)e(p)s(ort)h(connection.)150 1049 y
-Fr(x10)336 b Fv(This)29 b(is)h(the)h(parameters)h(for)f(an)f(x10)i(con)
-m(troller.)43 b(These)30 b(are)i(simple)d(devices)h(that)i(let)630
-1159 y(us)e(p)s(o)m(w)m(er)g(cycle)h(or)f(reset)h(a)g(target)h(b)s
-(oard)d(remotely)-8 b(.)150 1318 y Fr(fileid)192 b Fv(This)29
-b(is)g(the)i(\014leid)d(or)i(spa)m(wn)g(id)f(of)h(of)h(the)g
-(connection.)150 1478 y Fr(prompt)192 b Fv(a)31 b(glob)f(st)m(yle)g
-(pattern)h(to)g(recognize)g(the)g(prompt.)150 1637 y
-Fr(abbrev)192 b Fv(abbreviation)29 b(for)h(to)s(ol)h(init)d(\014les.)
-150 1797 y Fr(ioport)192 b Fv(This)30 b(is)h(the)h(p)s(ort)f(for)h(I/O)
-g(on)g(dual)e(p)s(ort)i(systems.)45 b(In)31 b(this)g(con\014guration,)h
-(the)g(main)630 1906 y(serial)f(p)s(ort)g Fr(0)h Fv(is)f(usually)f
-(used)h(for)h(stdin)e(and)i(stdout,)h(whic)m(h)d(the)j(second)f(serial)
-f(p)s(ort)630 2016 y(can)g(b)s(e)e(used)h(for)g(debugging.)275
-2175 y(The)d(\014rst)f(index)h(in)m(to)g(the)h(arra)m(y)g(is)f(the)g
-(same)h(v)-5 b(alue)27 b(as)h(used)f(in)f(the)i Fr(name)e
-Fv(\014eld.)39 b(This)26 b(is)g(usually)150 2285 y(a)33
-b(short)g(v)m(ersion)f(of)h(the)g(name)g(of)g(the)g(target)h(b)s(oard.)
-47 b(F)-8 b(or)33 b(an)g(example,)g(here's)g(the)g(settings)g(I)f(use)
-150 2394 y(for)f(m)m(y)h Fr(Motorola's)d(IDP)i Fv(b)s(oard)g(and)g(m)m
-(y)h Fr(Motorola)d Fv(6U)j(VME)g Fr(MVME135-1)d Fv(b)s(oard.)44
-b(\(b)s(oth)31 b(m68k)150 2504 y(targets\))150 2588 y
-Fm(\013)p 200 2588 3554 4 v 3553 w(\010)p 150 4758 4
-2123 v 178 2741 a Fr(#)48 b(IDP)f(board)178 2845 y(set)g
-(target_info\(idp,name\))328 b("idp")178 2948 y(set)47
-b(target_info\(idp,ldflags\))184 b("-Tidp.ld")178 3052
-y(set)47 b(target_info\(idp,config\))232 b(m68k-unknown-aout)178
-3156 y(set)47 b(target_info\(idp,cflags\))232 b("")178
-3260 y(set)47 b(target_info\(idp,connect\))184 b(telnet)178
-3363 y(set)47 b(target_info\(idp,target\))232 b("s7")178
-3467 y(set)47 b(target_info\(idp,serial\))232 b("tstty7")178
-3571 y(set)47 b(target_info\(idp,netport\))184 b("wharfrat:1007")178
-3675 y(set)47 b(target_info\(idp,baud\))328 b("9600")178
-3779 y(#)48 b(MVME)e(135)h(board)178 3882 y(set)g
-(target_info\(idp,name\))328 b("mvme")178 3986 y(set)47
-b(target_info\(idp,ldflags\))184 b("-Tmvme.ld")178 4090
-y(set)47 b(target_info\(idp,config\))232 b(m68k-unknown-aout)178
-4194 y(set)47 b(target_info\(idp,cflags\))232 b("")178
-4297 y(set)47 b(target_info\(idp,connect\))184 b(telnet)178
-4401 y(set)47 b(target_info\(idp,target\))232 b("s8")178
-4505 y(set)47 b(target_info\(idp,serial\))232 b("tstty8")178
-4609 y(set)47 b(target_info\(idp,netport\))184 b("wharfrat:1008")178
-4713 y(set)47 b(target_info\(idp,baud\))328 b("9600")p
-3803 4758 V 150 4810 a Fm(\012)p 200 4810 3554 4 v 3553
-w(\011)275 4954 y Fv(DejaGn)m(u)37 b(can)g(use)g(this)f(information)f
-(to)i(switc)m(h)g(b)s(et)m(w)m(een)g(m)m(ultiple)e(targets)j(in)d(one)i
-(test)h(run.)150 5064 y(This)29 b(is)g(done)h(through)g(the)g(use)g(of)
-h(the)g Fr(push_target)c Fv(pro)s(cedure,)i(whic)m(h)g(is)h(discussed)e
-(elsewhere.)275 5199 y(This)35 b(arra)m(y)j(can)f(also)h(hold)d
-(information)h(for)h(a)h(remote)g(host,)h(whic)m(h)d(is)g(used)h(when)f
-(testing)i(a)150 5308 y(candain)d(cross.)59 b(In)35 b(this)g(case,)k
-(the)e(only)e(thing)g(di\013eren)m(t)h(is)f(the)i(index)e(is)g(just)h
-Fr(host)p Fv(.)57 b(Here's)37 b(the)p eop
-%%Page: 17 19
-17 18 bop 150 -116 a Fv(Chapter)30 b(4:)41 b(Setting)30
-b Fr(runtest)e Fv(defaults)2055 b(17)150 83 y(settings)32
-b(I)f(use)h(to)g(run)e(tests)j(on)f(m)m(y)f(NT)h(mac)m(hine)f(while)f
-(running)f(DejaGn)m(u)k(on)e(a)h(Unix)f(mac)m(hine.)150
-193 y(\(in)e(this)h(case)h(a)g(Lin)m(ux)e(b)s(o)m(x\))150
-276 y Fm(\013)p 200 276 3554 4 v 3553 w(\010)p 150 793
-4 470 v 178 437 a Fr(set)47 b(target_info\(host,name\))280
-b("nt-host")178 541 y(set)47 b(target_info\(host,config\))184
-b("386-unknown-winnt")178 645 y(set)47 b(target_info\(host,connect\))
-136 b("telnet")178 748 y(set)47 b(target_info\(host,target\))184
-b("ripple")p 3803 793 V 150 845 a Fm(\012)p 200 845 3554
-4 v 3553 w(\011)275 990 y Fv(There)31 b(is)f(more)i(info)f(on)g(ho)m(w)
-h(to)g(use)g(these)g(v)-5 b(ariables)30 b(in)g(the)i(sections)g(on)f
-(the)h(con\014g)g(\014les.)44 b(See)150 1100 y(Chapter)30
-b(4)h([Con\014guration)e(Files],)h(page)h(18.)275 1234
-y(In)37 b(the)h(user)g(editable)f(second)h(section)h(of)f(`)p
-Fr(site.exp)p Fv(',)h(y)m(ou)f(can)h(not)f(only)g(o)m(v)m(erride)g(the)
-g(con-)150 1344 y(\014guration)32 b(v)-5 b(ariables)31
-b(captured)h(in)g(the)h(\014rst)e(section,)j(but)e(also)h(sp)s(ecify)e
-(default)h(v)-5 b(alues)32 b(for)g(all)g(the)150 1454
-y Fr(runtest)d Fv(command)h(line)f(options.)42 b(Sa)m(v)m(e)32
-b(for)e(`)p Fr(--debug)p Fv(',)g(`)p Fr(--help)p Fv(',)g(and)g(`)p
-Fr(--version)p Fv(',)f(eac)m(h)j(com-)150 1563 y(mand)j(line)f(option)i
-(has)g(an)g(asso)s(ciated)g(Tcl)f(v)-5 b(ariable.)57
-b(Use)36 b(the)g(Tcl)f Fr(set)g Fv(command)h(to)h(sp)s(ecify)e(a)150
-1673 y(new)j(default)h(v)-5 b(alue)38 b(\(as)h(for)g(the)g
-(con\014guration)g(v)-5 b(ariables\).)65 b(The)38 b(follo)m(wing)g
-(table)h(describ)s(es)e(the)150 1782 y(corresp)s(ondence)j(b)s(et)m(w)m
-(een)h(command)g(line)d(options)i(and)g(v)-5 b(ariables)39
-b(y)m(ou)i(can)g(set)g(in)e(`)p Fr(site.exp)p Fv('.)150
-1892 y(See)31 b(Chapter)e(3)i([Running)d(the)j(T)-8 b(ests],)31
-b(page)g(9,)g(for)g(explanations)e(of)h(the)h(command-line)e(options.)
-350 2033 y Fn(runtest)187 b(Tcl)379 2143 y(option)h(variable)395
-b(description)p 150 2178 3600 4 v 341 2288 a Fr(--all)233
-b(all)p 964 2288 29 4 v 33 w(flag)333 b Fv(displa)m(y)29
-b(all)g(test)i(results)e(if)h(set)293 2397 y Fr(--baud)233
-b(baud)510 b Fv(set)31 b(the)g(default)e(baud)g(rate)j(to)f(something)
-1516 2507 y(other)g(than)f(9600.)150 2611 y Fr(--connect)232
-b(connectmode)174 b Fv(`)p Fr(rlogin)p Fv(',)30 b(`)p
-Fr(telnet)p Fv(',)f(`)p Fr(rsh)p Fv(',)h(`)p Fr(kermit)p
-Fv(',)g(`)p Fr(tip)p Fv(',)1516 2721 y(or)h(`)p Fr(mondfe)p
-Fv(')293 2840 y Fr(--mail)233 b(mailing)p 1156 2840 V
-32 w(list)142 b Fv(address)30 b(list)f(for)h(mailing)e(test)j(output)
-293 2949 y Fr(--name)233 b(targetname)222 b Fv(net)m(w)m(ork)31
-b(name)g(of)f(testing)h(target)h(or)e(its)1516 3059 y(host)198
-3177 y Fr(--outdir)232 b(outdir)414 b Fv(directory)30
-b(for)g(`)p Fq(to)s(ol)p Fr(.sum)p Fv(')g(and)g(`)p Fq(to)s(ol)p
-Fr(.log)p Fv(')198 3287 y Fr(--objdir)232 b(objdir)414
-b Fv(directory)30 b(for)g(compiled)f(binaries)198 3397
-y Fr(--reboot)232 b(reboot)414 b Fv(reb)s(o)s(ot)30 b(the)h(target)h
-(if)d(set)i(to)g Fr("1")p Fv(;)f(do)g(not)1516 3506 y(reb)s(o)s(ot)g
-(if)g(set)h(to)g Fr("0")e Fv(\(the)i(default\))198 3625
-y Fr(--srcdir)232 b(srcdir)414 b Fv(directory)30 b(of)h(test)g(sub)s
-(directories)198 3734 y Fr(--strace)232 b(tracelevel)222
-b Fv(a)31 b(n)m(um)m(b)s(er:)44 b(Tcl)30 b(trace)i(depth)293
-3844 y Fr(--tool)233 b(tool)510 b Fv(name)31 b(of)f(to)s(ol)g(to)i
-(test;)f(iden)m(ti\014es)e(init,)g(test)1516 3954 y(sub)s(dir)150
-4058 y Fr(--verbose)232 b(verbose)366 b Fv(v)m(erb)s(osit)m(y)30
-b(lev)m(el.)46 b(As)30 b(option,)g(use)g(m)m(ultiple)1516
-4167 y(times;)g(as)h(v)-5 b(ariable,)29 b(set)i(a)g(n)m(um)m(b)s(er,)e
-(0)i(or)1516 4277 y(greater)198 4381 y Fr(--target)232
-b(target)p 1108 4381 V 32 w(triplet)46 b Fv(The)30 b(canonical)g
-(con\014guration)g(string)f(for)1516 4491 y(the)i(target.)293
-4595 y Fr(--host)233 b(host)p 1012 4595 V 33 w(triplet)141
-b Fv(The)30 b(canonical)g(con\014guration)g(string)f(for)1516
-4705 y(the)i(host.)245 4809 y Fr(--build)233 b(build)p
-1060 4809 V 33 w(triplet)93 b Fv(The)30 b(canonical)g(con\014guration)g
-(string)f(for)1516 4919 y(the)i(build)c(host.)p eop
-%%Page: 18 20
-18 19 bop 150 -116 a Fv(18)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fi(4.0.2)63
-b(Master)41 b(Con\014g)h(File)275 276 y Fv(The)28 b(master)i(con\014g)g
-(\014le)e(is)h(where)g(all)f(the)i(target)g(sp)s(eci\014c)f(con\014g)g
-(v)-5 b(ariables)28 b(get)j(set)f(for)f(a)h(whole)150
-385 y(site)39 b(get)h(set.)67 b(The)38 b(idea)g(is)g(that)i(for)f(a)g
-(cen)m(tralized)g(testing)g(lab)f(where)g(p)s(eople)g(ha)m(v)m(e)i(to)g
-(share)f(a)150 495 y(target)31 b(b)s(et)m(w)m(een)f(m)m(ultiple)d(dev)m
-(elop)s(ers.)39 b(There)29 b(are)h(settings)f(for)g(b)s(oth)g(remote)h
-(targets)g(and)f(remote)150 604 y(hosts.)51 b(Here's)35
-b(an)f(example)g(of)g(a)g(Master)h(Con\014g)e(File)g(\(also)i(called)e
-(the)h(Global)f(con\014g)h(\014le\))g(for)g(a)150 714
-y Fn(c)-5 b(anadian)32 b(cr)-5 b(oss)p Fv(.)42 b(A)28
-b(canadian)f(cross)h(is)f(when)g(y)m(ou)i(build)c(and)i(test)i(a)f
-(cross)g(compiler)f(on)h(a)g(mac)m(hine)150 824 y(other)j(than)f(the)g
-(one)h(it's)f(to)h(b)s(e)f(hosted)g(on.)275 958 y(Here)f(w)m(e)g(ha)m
-(v)m(e)h(the)f(con\014g)f(settings)h(for)f(our)h(California)d(o\016ce.)
-41 b(Note)30 b(that)f(all)f(con\014g)h(v)-5 b(alues)28
-b(are)150 1068 y(site)36 b(dep)s(endan)m(t.)58 b(Here)36
-b(w)m(e)h(ha)m(v)m(e)h(t)m(w)m(o)f(sets)g(of)f(v)-5 b(alues)36
-b(that)h(w)m(e)g(use)e(for)i(testing)f(m68k-aout)i(cross)150
-1177 y(compilers.)56 b(As)36 b(b)s(oth)f(of)h(these)h(target)g(b)s
-(oards)e(has)h(a)g(di\013eren)m(t)f(debugging)g(proto)s(col,)j(w)m(e)e
-(test)h(on)150 1287 y(b)s(oth)30 b(of)g(them)h(in)e(sequence.)150
-1366 y Fm(\013)p 200 1366 3554 4 v 3553 w(\010)p 150
-4664 4 3252 v 178 1519 a Fr(global)46 b(CFLAGS)178 1622
-y(global)g(CXXFLAGS)178 1830 y(case)h("$target_triplet")c(in)k({)369
-1934 y({)h("native")d(})j({)560 2038 y(set)f(target_abbrev)d(unix)369
-2141 y(})369 2245 y({)k("m68*-unknown-aout")42 b(})48
-b({)560 2349 y(set)f(target_abbrev)712 b("rom68k")560
-2453 y(#)47 b(IDP)g(target)953 b(#)48 b(IDP)f(board)f(with)h(rom68k)f
-(monitor)560 2556 y(set)h(target_info\(idp,name\))328
-b("idp")560 2660 y(set)47 b(target_info\(idp,ldflags\))184
-b("-Tidp.ld")560 2764 y(set)47 b(target_info\(idp,config\))232
-b(m68k-unknown-aout)560 2868 y(set)47 b(target_info\(idp,cflags\))232
-b("")560 2972 y(set)47 b(target_info\(idp,connect\))184
-b(telnet)560 3075 y(set)47 b(target_info\(idp,target\))232
-b("s7")560 3179 y(set)47 b(target_info\(idp,serial\))232
-b("tstty12")560 3283 y(set)47 b(target_info\(idp,netport\))184
-b("truckin:1007")560 3387 y(set)47 b(target_info\(idp,baud\))328
-b("9600")560 3490 y(#)47 b(MVME)g(target)905 b(#)48 b(Motorola)d(MVME)i
-(135)g(with)f(BUG)h(monitor)560 3594 y(set)g(target_info\(mvme,name\))
-280 b("mvme")560 3698 y(set)47 b(target_info\(mvme,ldflags)o(\))137
-b("-Tmvme.ld")560 3802 y(set)47 b(target_info\(mvme,config\))184
-b(m68k-unknown-aout)560 3906 y(set)47 b(target_info\(mvme,cflags\))184
-b("")560 4009 y(set)47 b(target_info\(mvme,connect)o(\))137
-b(telnet)560 4113 y(set)47 b(target_info\(mvme,target\))184
-b("s4")560 4217 y(set)47 b(target_info\(mvme,serial\))184
-b("tstty8")560 4321 y(set)47 b(target_info\(mvme,netport)o(\))137
-b("truckin:1004")560 4424 y(set)47 b(target_info\(mvme,baud\))280
-b("9600")417 4528 y(})178 4632 y(})p 3803 4664 V 150
-4716 a Fm(\012)p 200 4716 3554 4 v 3553 w(\011)275 4861
-y Fv(In)27 b(this)g(case,)j(w)m(e)f(ha)m(v)m(e)h(supp)s(ort)c(for)i
-(sev)m(eral)h(remote)g(hosts)g(for)f(our)g(m68k-aout)i(cross)e
-(compiler.)150 4971 y(T)m(ypically)h(the)j(remote)g(Unix)e(hosts)h(run)
-f(DejaGn)m(u)i(lo)s(cally)-8 b(,)31 b(but)f(w)m(e)i(also)f(use)g(them)g
-(for)g(debugging)150 5080 y(the)c(testsuites)f(when)g(w)m(e)h(\014nd)e
-(problems)g(in)g(running)f(on)j(remote)g(hosts.)40 b(Exp)s(ect)26
-b(w)m(on't)h(run)e(on)i(NT,)150 5190 y(so)j(DejaGn)m(u)h(is)e(run)f(on)
-i(the)g(lo)s(cal)f(build)d(mac)m(hine,)k(and)g(it'll)e(connect)i(to)h
-(the)f(NT)g(host)f(and)h(run)e(all)150 5300 y(the)j(tests)g(for)f(this)
-f(cross)i(compiler)e(on)h(that)h(host.)p eop
-%%Page: 19 21
-19 20 bop 150 -116 a Fv(Chapter)30 b(4:)41 b(Setting)30
-b Fr(runtest)e Fv(defaults)2055 b(19)390 52 y Fm(\013)p
-440 52 3314 4 v 3313 w(\010)p 390 3063 4 2964 v 418 228
-a Fr(case)47 b("$host_triplet")c(in)48 b({)609 332 y("native")e({)609
-436 y(})609 540 y("i?86-*-linux*")e({)906 b(#)48 b(Linux)e(host)800
-643 y(set)h(target_info\(host,name\))280 b("linux-host")800
-747 y(set)47 b(target_info\(host,config\))184 b($host_triplet)800
-851 y(set)47 b(target_info\(host,connect)o(\))137 b(rlogin)800
-955 y(set)47 b(target_info\(host,target\))184 b(chinadoll)609
-1059 y(})609 1162 y("i?86-*-winnt)1094 b(#)48 b(NT)f(host)800
-1266 y(set)g(target_info\(host,name\))280 b("nt-host")800
-1370 y(set)47 b(target_info\(host,config\))184 b(i386-unknown-winnt)800
-1474 y(set)47 b(target_info\(host,connect)o(\))137 b(telnet)800
-1577 y(set)47 b(target_info\(host,target\))184 b(ripple)609
-1681 y(})609 1785 y("hppa*-hp-hpux*")43 b({)859 b(#)48
-b(HP-UX)e(host)800 1889 y(set)h(target_info\(host,name\))280
-b("hpux-host")800 1993 y(set)47 b(target_info\(host,config\))184
-b($host_triplet)800 2096 y(set)47 b(target_info\(host,connect)o(\))137
-b(rlogin)800 2200 y(set)47 b(target_info\(host,target\))184
-b(slipknot)800 2304 y(})609 2408 y("sparc-sun-sunos*")43
-b({)763 b(#)48 b(SunOS)e(\(sun4\))800 2511 y(set)h
-(target_info\(host,name\))280 b("sunos-host")800 2615
-y(set)47 b(target_info\(host,config\))184 b($host_triplet)800
-2719 y(set)47 b(target_info\(host,connect)o(\))137 b(rlogin)800
-2823 y(set)47 b(target_info\(host,target\))184 b(darkstar)609
-2927 y(})418 3030 y(})p 3803 3063 V 390 3115 a Fm(\012)p
-440 3115 3314 4 v 3313 w(\011)150 3339 y Fi(4.0.3)63
-b(Lo)s(cal)40 b(Con\014g)i(File)275 3531 y Fv(It)33 b(is)g(usually)e
-(more)j(con)m(v)m(enien)m(t)h(to)f(k)m(eep)h(these)f(\\man)m(ual)f(o)m
-(v)m(errides")i(in)d(the)i(`)p Fr(site.exp)p Fv(')e(lo)s(cal)150
-3641 y(to)f(eac)m(h)h(test)f(directory)-8 b(,)30 b(rather)h(than)f(in)f
-(the)h(\\master")i(`)p Fr(site.exp)p Fv(')d(in)g(the)h(DejaGn)m(u)i
-(library)-8 b(.)275 3776 y(All)36 b(lo)s(cal)g(`)p Fr(site.exp)p
-Fv(')g(usually)f(\014les)i(ha)m(v)m(e)h(t)m(w)m(o)h(sections,)h
-(separated)e(b)m(y)f(commen)m(t)h(text.)63 b(The)150
-3885 y(\014rst)23 b(section)i(is)e(the)h(part)g(that)g(is)g(generated)h
-(b)m(y)f Fr(make)p Fv(.)37 b(It)24 b(is)f(essen)m(tially)g(a)i
-(collection)f(of)g(Tcl)f(v)-5 b(ariable)150 3995 y(de\014nitions)30
-b(based)j(on)g(`)p Fr(Makefile)p Fv(')e(en)m(vironmen)m(t)h(v)-5
-b(ariables.)47 b(Since)32 b(they)h(are)g(generated)h(b)m(y)f
-Fr(make)p Fv(,)150 4104 y(they)27 b(con)m(tain)h(the)f(v)-5
-b(alues)27 b(as)g(sp)s(eci\014ed)f(b)m(y)h Fr(configure)p
-Fv(.)37 b(\(Y)-8 b(ou)28 b(can)f(also)g(customize)h(these)g(v)-5
-b(alues)26 b(b)m(y)150 4214 y(using)d(the)h(`)p Fr(--site)p
-Fv(')e(option)i(to)h Fr(configure)p Fv(.\))36 b(In)23
-b(particular,)h(this)f(section)h(con)m(tains)g(the)h(`)p
-Fr(Makefile)p Fv(')150 4323 y(v)-5 b(ariables)34 b(for)h(host)h(and)f
-(target)i(con\014guration)e(data.)57 b(Do)36 b(not)g(edit)f(this)f
-(\014rst)h(section;)j(if)d(y)m(ou)h(do,)150 4433 y(y)m(our)30
-b(c)m(hanges)i(are)e(replaced)g(next)h(time)f(y)m(ou)h(run)e
-Fr(make)p Fv(.)275 4568 y(The)g(\014rst)h(section)h(starts)f(with:)150
-4629 y Fm(\013)p 200 4629 3554 4 v 3553 w(\010)p 150
-5014 4 338 v 178 4782 a Fr(##)47 b(these)g(variables)e(are)i
-(automatically)d(generated)h(by)j(make)e(##)178 4885
-y(#)i(Do)f(not)g(edit)f(here.)h(If)g(you)g(wish)f(to)i(override)d
-(these)i(values)178 4989 y(#)h(add)f(them)f(to)h(the)g(last)g(section)p
-3803 5014 V 150 5066 a Fm(\012)p 200 5066 3554 4 v 3553
-w(\011)275 5216 y Fv(In)23 b(the)h(second)g(section,)i(y)m(ou)e(can)g
-(o)m(v)m(erride)g(an)m(y)h(default)e(v)-5 b(alues)23
-b(\(lo)s(cally)g(to)i(DejaGn)m(u\))g(for)f(all)f(the)150
-5326 y(v)-5 b(ariables.)39 b(The)29 b(second)h(section)g(can)g(also)g
-(con)m(tain)g(y)m(our)g(preferred)e(defaults)h(for)h(all)e(the)i
-(command)p eop
-%%Page: 20 22
-20 21 bop 150 -116 a Fv(20)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y(line)30 b(options)h(to)h
-Fr(runtest)p Fv(.)43 b(This)30 b(allo)m(ws)h(y)m(ou)g(to)i(easily)e
-(customize)h Fr(runtest)d Fv(for)j(y)m(our)f(preferences)150
-193 y(in)41 b(eac)m(h)j(con\014gured)e(test-suite)h(tree,)j(so)d(that)g
-(y)m(ou)g(need)f(not)h(t)m(yp)s(e)g(options)e(rep)s(eatedly)h(on)h(the)
-150 302 y(command)31 b(line.)41 b(\(The)31 b(second)g(section)g(ma)m(y)
-g(also)g(b)s(e)g(empt)m(y)-8 b(,)32 b(if)e(y)m(ou)h(do)g(not)h(wish)d
-(to)i(o)m(v)m(erride)h(an)m(y)150 412 y(defaults.\))275
-546 y(The)d(\014rst)h(section)h(ends)e(with)g(this)g(line:)150
-607 y Fm(\013)p 200 607 3554 4 v 3553 w(\010)p 150 806
-4 151 v 178 760 a Fr(##)47 b(All)g(variables)f(above)g(are)h(generated)
-e(by)i(configure.)e(Do)i(Not)g(Edit)g(##)p 3803 806 V
-150 857 a Fm(\012)p 200 857 3554 4 v 3553 w(\011)275
-1002 y Fv(Y)-8 b(ou)31 b(can)f(mak)m(e)i(an)m(y)f(c)m(hanges)g(under)e
-(this)h(line.)40 b(If)30 b(y)m(ou)h(wish)d(to)k(rede\014ne)d(a)i(v)-5
-b(ariable)30 b(in)f(the)i(top)150 1112 y(section,)k(then)f(just)f(put)h
-(a)g(duplicate)f(v)-5 b(alue)33 b(in)g(this)g(second)h(section.)51
-b(Usually)33 b(the)h(v)-5 b(alues)33 b(de\014ned)150
-1221 y(in)c(this)h(con\014g)h(\014le)f(are)h(related)g(to)h(the)f
-(con\014guration)f(of)h(the)g(test)g(run.)41 b(This)29
-b(is)h(the)h(ideal)e(place)i(to)150 1331 y(set)g(the)g(v)-5
-b(ariables)29 b Fr(host_triplet)p Fv(,)e Fr(build_triplet)p
-Fv(,)g Fr(target_triplet)p Fv(.)38 b(All)29 b(other)h(v)-5
-b(ariables)30 b(are)150 1441 y(to)s(ol)i(dep)s(endan)m(t.)46
-b(ie)32 b(for)g(testing)h(a)g(compiler,)e(the)i(v)-5
-b(alue)32 b(for)g Fq(CC)40 b Fv(migh)m(t)32 b(b)s(e)g(set)g(to)i(a)e
-(freshly)f(built)150 1550 y(binary)-8 b(,)29 b(as)i(opp)s(osed)e(to)j
-(one)e(in)f(the)i(user's)f(path.)150 1774 y Fi(4.0.4)63
-b(P)m(ersonal)41 b(Con\014g)g(File)275 1967 y Fv(The)j(p)s(ersonal)g
-(con\014g)h(\014le)f(is)g(used)g(to)i(customize)g Fr(runtest's)c
-Fv(b)s(eha)m(viour)i(for)h(eac)m(h)h(p)s(erson.)150 2077
-y(It's)33 b(t)m(ypically)f(used)g(to)i(set)g(the)f(user)f(prefered)g
-(setting)h(for)g(v)m(erb)s(osit)m(y)-8 b(,)34 b(and)f(an)m(y)g(exp)s
-(erimen)m(tal)f(Tcl)150 2186 y(pro)s(cedures.)39 b(My)31
-b(p)s(ersonal)e(`)p Fr(~/.dejagnurc)p Fv(')e(\014le)j(lo)s(oks)g(lik)m
-(e:)150 2267 y Fm(\013)p 200 2267 V 3553 w(\010)p 150
-2661 4 346 v 178 2421 a Fr(set)47 b(all_flag)f(1)178
-2524 y(set)h(RLOGIN)f(/usr/ucb/rlogin)178 2628 y(set)h(RSH)g
-(/usr/ucb/rsh)p 3803 2661 V 150 2712 a Fm(\012)p 200
-2712 3554 4 v 3553 w(\011)275 2857 y Fv(Here)27 b(I)g(set)h
-Fr(all_flag)d Fv(so)j(I)f(see)h(all)e(the)h(test)i(cases)f(that)g(P)-8
-b(ASS)26 b(along)i(with)e(the)h(ones)h(that)g(F)-10 b(AIL.)150
-2967 y(I)36 b(also)g(set)h Fq(RLOGIN)46 b Fv(and)36 b
-Fr(RSH)f Fv(to)i(the)f(BSD)h(v)m(ersion.)58 b(I)36 b(ha)m(v)m(e)h
-Fr(kerberos)d Fv(installed,)i(and)g(when)f(I)150 3077
-y(rlogin)25 b(to)h(a)h(target)g(b)s(oard,)f(it)g(usually)e(isn't)h
-(supp)s(orted.)38 b(So)25 b(I)h(use)g(the)g(non)g(secure)g(v)m(ersions)
-f(of)h(these)150 3186 y(programs)k(rather)g(than)g(the)h(default)e
-(that's)j(in)d(m)m(y)h(path.)p eop
-%%Page: 21 23
-21 22 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h
-(Implemen)m(tation)1847 b(21)150 100 y Fs(5)80 b(The)54
-b(DejaGn)l(u)e(Implemen)l(tation)275 334 y Fv(DejaGn)m(u)30
-b(is)e(en)m(tirely)h(written)g(in)f Fr(expect)p Fv(,)g(whic)m(h)g(uses)
-h(Tcl)g(as)h(a)g(command)f(language.)41 b Fr(expect)150
-443 y Fv(serv)m(es)26 b(as)f(a)h(v)m(ery)g(programmable)e(shell;)h(y)m
-(ou)h(can)g(run)d(an)m(y)j(program,)g(as)g(with)e(the)h(usual)f(Unix)g
-(com-)150 553 y(mand)30 b(shells|but)e(once)k(the)f(program)f(is)g
-(started,)i(y)m(our)f Fr(expect)e Fv(script)h(has)g(fully)f
-(programmable)150 663 y(con)m(trol)24 b(of)f(its)g(input)e(and)i
-(output.)38 b(This)21 b(do)s(es)i(not)g(just)g(apply)f(to)i(the)f
-(programs)g(under)f(test;)27 b Fr(expect)150 772 y Fv(can)h(also)g(run)
-f(an)m(y)h(auxiliary)e(program,)j(suc)m(h)e(as)i Fr(diff)d
-Fv(or)i Fr(sh)p Fv(,)h(with)d(full)g(con)m(trol)j(o)m(v)m(er)g(its)e
-(input)g(and)150 882 y(output.)275 1016 y(DejaGn)m(u)40
-b(itself)f(is)g(merely)g(a)h(framew)m(ork)g(for)f(the)h(set)g(of)g
-(test)h(suites)e(distributed)e(separately)150 1126 y(for)i(eac)m(h)h
-Fo(gnu)f Fv(to)s(ol.)66 b(F)-8 b(uture)39 b(releases)g(of)g
-Fo(gnu)g Fv(to)s(ols)g(will)d(include)h(ev)m(en)i(more)g(tests,)k(dev)m
-(elop)s(ed)150 1235 y(throughout)30 b(the)h(free)f(soft)m(w)m(are)i
-(comm)m(unit)m(y)-8 b(.)275 1370 y Fr(runtest)29 b Fv(is)h(the)i(glue)f
-(to)h(tie)f(together)i(and)e(manage)h(the)g(test)g(scripts.)43
-b(The)31 b Fr(runtest)e Fv(program)150 1479 y(is)36 b(actually)g(a)h
-(simple)e(Bourne)h(shell)f(script)h(that)h(lo)s(cates)h(a)f(cop)m(y)g
-(of)g(the)g Fr(expect)e Fv(shell)g(and)h(then)150 1589
-y(starts)31 b(the)f(main)g(Tcl)f(co)s(de,)i Fr(runtest.exp)p
-Fv(.)38 b Fr(runtest.exp)27 b Fv(itself)i(has)h(these)h(essen)m(tial)f
-(functions:)199 1724 y(1.)61 b(P)m(arse)21 b(the)f(command)h(line)d
-(options,)k(load)e(the)g(library)e(\014les,)k(and)e(load)g(the)g
-(default)g(con\014guration)330 1833 y(\014les.)199 1968
-y(2.)61 b(Lo)s(cating)41 b(the)g(individual)c(test)42
-b(scripts.)71 b Fr(runtest.exp)38 b Fv(lo)s(cates)j(the)h(tests)f(b)m
-(y)g(exploiting)f(a)330 2077 y(straigh)m(tforw)m(ard)33
-b(naming)g(con)m(v)m(en)m(tion)h(based)g(on)f(the)h(string)e(y)m(ou)i
-(sp)s(ecify)e(with)g(the)i(`)p Fr(--tool)p Fv(')330 2187
-y(option.)199 2321 y(3.)61 b(Pro)m(viding)25 b(an)h(extended)h(test)g
-(en)m(vironmen)m(t,)g(b)m(y)g(de\014ning)d(additional)h(Tcl)g(pro)s
-(cedures)h(b)s(ey)m(ond)330 2431 y(those)31 b(already)f(in)f
-Fr(expect)p Fv(.)199 2565 y(4.)61 b(Lo)s(cating)24 b(target-dep)s
-(enden)m(t)h(functions,)f(to)h(standardize)e(the)i(test)g(en)m
-(vironmen)m(t)e(across)i(a)f(wide)330 2675 y(v)-5 b(ariet)m(y)31
-b(of)f(test)i(platforms.)150 2932 y Fu(5.1)68 b(Con)l(v)l(en)l(tions)47
-b(for)e(using)g(to)t(ol)g(names)275 3125 y Fv(DejaGn)m(u)26
-b(uses)f(`)p Fr($tool)p Fv(',)h(the)g(name)g(of)g(the)g(to)s(ol)f
-(under)g(test,)i(to)g(tie)e(together)j(the)e(testing)f(con\014g-)150
-3235 y(uration)31 b(in)f(a)i(straigh)m(tforw)m(ard)f(but)g(\015exible)f
-(w)m(a)m(y)-8 b(.)45 b(If)32 b(there)f(is)g(only)g(one)g(testsuite)h
-(for)g(a)g(particular)150 3344 y(application,)d(then)h(`)p
-Fr($tool)p Fv(')f(is)h(optional.)275 3479 y(`)p Fr($tool)p
-Fv(')38 b(is)g Fn(not)49 b Fv(used)38 b(to)i(in)m(v)m(ok)m(e)h(the)e
-(to)s(ol,)j(since)d(sites)f(that)i(run)e(m)m(ultiple)f
-(con\014gurations)i(of)150 3588 y(a)47 b(particular)e(to)s(ol)i(often)g
-(call)f(eac)m(h)i(con\014guration)e(b)m(y)h(a)g(di\013eren)m(t)g(name.)
-90 b Fr(runtest)44 b Fv(uses)j(the)150 3698 y(con\014guration-dep)s
-(enden)m(t)40 b(v)-5 b(ariables)40 b(captured)h(in)f(`)p
-Fr(site.exp)p Fv(')f(to)j(determine)e(ho)m(w)h(to)h(call)f(eac)m(h)150
-3807 y(to)s(ol.)275 3942 y Fr(runtest)30 b Fv(uses)h(to)s(ol)h(names)g
-(to)h(\014nd)e(directories)g(con)m(taining)h(tests.)46
-b Fr(runtest)30 b Fv(scans)i(the)h(source)150 4051 y(directory)22
-b(\(sp)s(eci\014ed)g(with)f Fr(--srcdir)p Fv(\))g(for)i(all)e
-(directories)h(whose)h(names)f(start)h(with)f(the)h(to)s(ol)g(name.)150
-4161 y(It)40 b(is)g(a)g(common)h(practice)f(to)h(put)f(a)g(p)s(erio)s
-(d)e(after)j(the)g(to)s(ol)f(part)g(of)g(the)h(name.)70
-b(F)-8 b(or)41 b(instance,)150 4271 y(directories)32
-b(that)i(start)f(with)f(`)p Fr(g++.)p Fv(')h(con)m(tain)g
-Fo(g)p Fr(++)g Fv(tests.)49 b(T)-8 b(o)34 b(add)e(a)i(new)e(test,)j
-(just)e(put)f(it)h(in)f(an)m(y)150 4380 y(directory)24
-b(\(create)j(an)e(en)m(tirely)f(new)g(directory)-8 b(,)27
-b(if)c(y)m(ou)j(wish\))d(whose)i(name)g(follo)m(ws)f(this)g(con)m(v)m
-(en)m(tion.)275 4515 y(A)h(test)g(is)f(an)m(y)h(\014le)f(in)g(an)h
-(appropriately)e(named)h(sub)s(directory)f(whose)i(name)g(ends)f(in)f
-(`)p Fr(.exp)p Fv(')h(\(the)150 4624 y(con)m(v)m(en)m(tional)32
-b(w)m(a)m(y)h(of)f(naming)e Fr(expect)g Fv(scripts\).)44
-b(These)31 b(simple)f(naming)g(con)m(v)m(en)m(tions)j(mak)m(e)g(it)e
-(as)150 4734 y(simple)25 b(as)j(p)s(ossible)c(to)k(install)e(new)g
-(tests:)40 b(all)26 b(y)m(ou)i(m)m(ust)f(do)g(is)f(put)h(the)g(test)i
-(in)d(the)h(righ)m(t)g(directory)-8 b(.)275 4868 y Fr(runtest)31
-b Fv(sorts)i(the)h(tests)g(in)e(eac)m(h)i(sub)s(directory)d(b)m(y)i
-(name)h(\(using)e(the)h(Tcl)g Fr(lsort)f Fv(command\))150
-4978 y(and)e(runs)f(them)h(in)f(the)h(resulting)f(order.)p
-eop
-%%Page: 22 24
-22 23 bop 150 -116 a Fv(22)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(5.2)68 b(Initialization)48
-b(mo)t(dule)275 276 y Fv(The)35 b(initialization)d(mo)s(dule)i(\(or)i
-(\\init)e(\014le"\))h(has)g(t)m(w)m(o)i(purp)s(oses:)49
-b(to)36 b(pro)m(vide)f(to)s(ol)h(and)e(target)150 385
-y(dep)s(enden)m(t)29 b(pro)s(cedures,)h(and)g(to)h(start)g(up)e(an)i
-(in)m(teractiv)m(e)g(to)s(ol)f(to)h(the)g(p)s(oin)m(t)e(where)h(it)g
-(is)g(ready)g(to)150 495 y(op)s(erate.)41 b(The)30 b(latter)g(includes)
-d(establishing)h(comm)m(unications)h(with)g(the)h(target.)42
-b(All)28 b(the)j(tests)f(for)150 604 y(in)m(teractiv)m(e)24
-b(programs)e(assume)h(that)g(the)g(to)s(ol)g(is)f(already)h(running)d
-(and)i(comm)m(unicating.)38 b(Initializa-)150 714 y(tion)30
-b(mo)s(dules)e(for)j(non-in)m(teractiv)m(e)g(programs)f(ma)m(y)h(only)e
-(need)h(to)h(supply)d(the)j(supp)s(ort)d(functions.)275
-848 y(Eac)m(h)33 b(test)g(suite)f(directory)g(m)m(ust)h(con)m(tain)g
-(\(in)e(its)h(`)p Fr(config)p Fv(')g(sub)s(directory\))f(a)i(separate)g
-(initial-)150 958 y(ization)27 b(mo)s(dule)f(for)h(eac)m(h)h(target.)41
-b(The)27 b(appropriate)g(init)e(\014le)i(is)f(can)i(b)s(e)e(named)h
-(sev)m(eral)h(w)m(a)m(ys.)40 b(The)150 1068 y(prefered)33
-b(name)h(is)f(the)i Fn(os)42 b Fv(part)34 b(of)g(the)g(canonical)g
-(con\014guration)f(name)h(with)f Fr(.exp)g Fv(as)h(the)h(su\016x.)150
-1177 y(An)e(example)f(w)m(ould)g(b)s(e)h(that)g(for)g(an)g
-Fr(m68k-coff)e Fv(system,)j(the)f Fr(target_os)e Fv(part)i(w)m(ould)e
-(b)s(e)i Fr(coff)p Fv(.)150 1287 y(The)27 b(next)h(w)m(a)m(y)h(is)d
-(for)i(system)g(where)f(there)h(are)g(short)f(\014lenames,)h(or)f(a)h
-(shortcut)g(is)f(desired)f(to)i(refer)150 1396 y(to)j(the)g(OS)f(name)g
-(for)g(that)h(target.)43 b(This)29 b(is)g(uses)h(the)h(v)-5
-b(alue)30 b(of)h Fr($target_abbrev)26 b Fv(rather)31
-b(than)f(the)150 1506 y Fr(target_os)p Fv(.)275 1641
-y(The)h(\014nal)h(\014le)f(lo)s(ok)m(ed)i(for)f(is)f(simply)f(`)p
-Fr(default.exp)p Fv('.)45 b(If)31 b(there)i(is)f(only)f(one)i(op)s
-(erating)f(system)150 1750 y(to)26 b(supp)s(ort,)f(then)f(this)g
-(\014le)h(can)g(b)s(e)g(used.)38 b(It's)25 b(main)f(purp)s(ose)g(is)g
-(to)i(o\013er)f(some)h(supp)s(ort)d(for)i(new)g(op-)150
-1860 y(erating)i(systems,)i(or)e(for)h(unsupp)s(orted)c(cross)k
-(targets.)41 b(The)27 b(last)g(\014le)g(lo)s(ok)m(ed)g(for)h(is)e(`)p
-Fr(unknown.exp)p Fv('.)150 1969 y(This)37 b(is)h(usually)f(limited)g
-(to)j(error)e(handling)f(for)h(unsupp)s(orted)f(targets.)68
-b(It's)39 b(whole)f(con)m(ten)m(ts)j(is)150 2079 y(t)m(ypically)-8
-b(.)150 2158 y Fm(\013)p 200 2158 3554 4 v 3553 w(\010)p
-150 2439 4 235 v 178 2311 a Fr(perror)46 b("Sorry,)g(there)g(is)i(no)f
-(support)f(for)h(this)f(target")178 2414 y(exit)h(1)p
-3803 2439 V 150 2491 a Fm(\012)p 200 2491 3554 4 v 3553
-w(\011)275 2636 y Fv(A)m(t)35 b(the)f(b)s(eginning)e(of)j(the)f(init)f
-(\014le,)h(y)m(ou)h(m)m(ust)f(\014rst)g(determine)f(the)i(prop)s(er)e
-(executable)i(name)150 2746 y(of)c(the)g(to)s(ol)g(to)h(execute,)h
-(since)d(the)h(actual)h(name)f(of)g(the)g(to)s(ol)g(to)h(b)s(e)e
-(tested)i(m)m(y)f(v)-5 b(ary)31 b(from)g(system)150 2855
-y(to)g(system.)41 b(Here's)31 b(an)f(example)g(for)g(the)h
-Fo(GNU)g Fv(C)f(compiler.)150 2934 y Fm(\013)p 200 2934
-V 3553 w(\010)p 150 4365 4 1384 v 178 3087 a Fr(global)46
-b(AR)178 3191 y(#)i(look)e(for)h(the)g(archiver)f(ar)178
-3295 y(if)h(![info)f(exists)h(AR])f({)369 3398 y(set)h(AR)g([findfile)e
-($base_dir/../../binutils/a)o(r)d($base_dir/../../binutils)o(/ar)f([tr)
-178 3502 y(ansform)46 b(ar]])369 3606 y(verbose)g("AR)h(defaulting)e
-(to)i($AR")g(2)178 3710 y(})178 3814 y(})178 4021 y(global)f(CFLAGS)178
-4125 y(if)h(![info)f(exists)h(CFLAGS])e(then)i({)369
-4229 y(set)g(CFLAGS)f("")178 4332 y(})p 3803 4365 V 150
-4417 a Fm(\012)p 200 4417 3554 4 v 3553 w(\011)275 4562
-y Fv(It)30 b(is)f(alw)m(a)m(ys)i(a)f(go)s(o)s(d)g(idea)g(to)h(\014rst)e
-(c)m(hec)m(k)j(the)e(v)-5 b(ariable,)29 b(and)h(only)f(set)i(it)e(if)g
-(it)h(has)g(not)g(y)m(et)i(b)s(een)150 4671 y(de\014ned.)39
-b(Often)31 b(the)f(prop)s(er)f(v)-5 b(alue)30 b(of)g
-Fr(AR)g Fv(is)g(set)g(on)h(the)f(command)g(line)f(that)i(in)m(v)m(ok)m
-(es)g(`)p Fr(runtest)p Fv('.)275 4806 y(The)c Fr(findfile)f
-Fv(pro)s(cedure)h(tak)m(es)i(as)f(it's)g(\014rst)f(argumen)m(t)i(a)f
-(\014le)f(name)h(to)h(lo)s(ok)f(for.)39 b(The)28 b(second)150
-4915 y(argumen)m(t)f(is)f(returned)g(if)g(the)h(\014le)f(is)f(found,)i
-(and)f(the)h(third)e(argumen)m(t)i(is)f(returned)g(if)g(the)h(\014le)f
-(is)g(not)150 5025 y(found.)39 b Fr(base_dir)29 b Fv(is)g(set)i(in)m
-(ternally)d(b)m(y)i(DejaGn)m(u)i(to)f(the)f(top)h(lev)m(el)f(directory)
-g(of)g(the)h(ob)5 b(ject)31 b(tree.)275 5160 y(The)42
-b Fr(transform)e Fv(pro)s(cedure)h(tak)m(es)j(as)f(its)f(argumen)m(t)h
-(the)g(nativ)m(e)g(name)g(of)f(a)h(to)s(ol)g(\(suc)m(h)g(as)150
-5269 y(`)p Fr(gcc)p Fv(')c(for)h(the)f(compiler\),)i(and)e(returns)g
-(the)h(name)f(as)h(con\014gured)f(for)g(that)i(to)s(ol)e(in)f(the)i
-(curren)m(t)p eop
-%%Page: 23 25
-23 24 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h
-(Implemen)m(tation)1847 b(23)150 83 y(installation.)38
-b(\(F)-8 b(or)31 b(example,)e(a)h(cross-compiling)d(v)m(ersion)i(of)g
-Fo(gnu)g Fv(CC)g(that)g(generates)i(MIPS)e(co)s(de)150
-193 y(ma)m(y)i(b)s(e)f(installed)e(with)h(a)i(name)f(lik)m(e)g
-Fr(mips-idt-ecoff-gcc)p Fv(.\))275 327 y(In)j(a)h(test)h(running)c
-(nativ)m(e,)36 b(writing)c(the)i(Tcl)f(co)s(de)h(for)g(initialization)d
-(is)i(usually)e(quite)j(simple.)150 437 y(F)-8 b(or)23
-b(cross)e(con\014gurations,)i(ho)m(w)m(ev)m(er,)i(more)d(elab)s(orate)g
-(instructions)e(are)i(usually)e(needed)h(to)i(describ)s(e)150
-546 y(ho)m(w)30 b(to)i(talk)e(to)h(a)g(remote)g(target.)275
-681 y(Eac)m(h)g(initialization)c(mo)s(dule)i(de\014nes)g(up)h(to)h
-(four)f(pro)s(cedures)f(with)g(standard)h(names)g(and)g(pur-)150
-790 y(p)s(oses.)58 b(The)36 b(names)g(of)h(these)g(pro)s(cedures)e(b)s
-(egin)f(with)h(`)p Fr($tool)p Fv(',)j(the)e(string)f(that)i(iden)m
-(ti\014es)e(tests)150 900 y(for)j(a)h(particular)e(to)s(ol:)57
-b Fr($tool_start)p Fv(,)38 b Fr($tool_load)p Fv(,)g Fr($tool_exit)p
-Fv(,)g(and)g Fr($tool_version)p Fv(.)61 b(F)-8 b(or)150
-1010 y(example,)28 b(the)f(start)h(pro)s(cedure)e(for)h
-Fo(gdb)g Fv(is)g(called)f Fr(gdb_start)p Fv(.)37 b(\(Since)27
-b(start)h(pro)s(cedures)e(are)i(used)150 1119 y(di\013eren)m(tly)f(for)
-g(batc)m(h)i(and)e(in)m(teractiv)m(e)i(to)s(ols,)f(ho)m(w)m(ev)m(er,)j
-Fr(runtest)25 b Fv(itself)i(nev)m(er)h(calls)g(the)g(start)g(pro-)150
-1229 y(cedure.)40 b(Init)30 b(\014les)f(for)h(in)m(teractiv)m(e)h(to)s
-(ols)g(are)f(exp)s(ected)h(to)g(end)f(b)m(y)g(running)e(the)i(start)h
-(pro)s(cedure.\))275 1363 y(The)37 b(initialization)d(mo)s(dule)i(is)g
-(also)i(a)g(go)s(o)s(d)f(place)g(to)i(call)d Fr(load_lib)g
-Fv(to)i(get)h(an)m(y)e(collections)150 1473 y(of)c(utilit)m(y)f(pro)s
-(cedures)f(mean)m(t)j(for)f(a)g(family)f(of)h(test)h(cases,)h(and)d(to)
-i(set)f(up)f(default)g(v)-5 b(alues)33 b(for)g(an)m(y)150
-1582 y(additional)28 b(Tcl)i(v)-5 b(ariables)29 b(needed)h(for)g(a)h
-(sp)s(eci\014c)e(set)i(of)f(tests.)275 1717 y(See)40
-b(Section)g(5.4)h([T)-8 b(arget)41 b(dep)s(enden)m(t)f(pro)s(cedures],)
-h(page)g(31,)j(for)c(full)d(descriptions)h(of)i(these)150
-1826 y(pro)s(cedures.)150 2084 y Fu(5.3)68 b(DejaGn)l(u)45
-b(pro)t(cedures)275 2276 y Fv(DejaGn)m(u)40 b(pro)m(vides)e(these)i
-(Tcl)e(pro)s(cedures)g(for)h(use)g(in)f(test)i(scripts.)66
-b(Y)-8 b(ou)40 b(can)f(also)h(use)f(an)m(y)150 2386 y(standard)29
-b Fr(expect)g Fv(or)h(Tcl)g(function.)39 b(These)30 b(pro)s(cedures)f
-(are)i(stored)f(in)f(libraries,)f(whic)m(h)h(DejaGn)m(u)150
-2496 y(loads)i(at)h(run)m(time.)42 b(Here's)32 b(explanation)e(of)i
-(the)f(library)e(pro)s(cedures)h(that)i(get)g(loaded)f(at)h(run)m
-(time.)150 2605 y(All)d(other)i(librarys)c(are)k(optional,)f(and)g
-(need)g(to)h(b)s(e)f(loaded)g(b)m(y)g(the)g(testsuite.)150
-2829 y Fi(5.3.1)63 b(Core)41 b(In)m(ternal)f(Pro)s(cedures)275
-3022 y Fv(See)30 b(Section)g(2.4)i([A)f(POSIX)e(conforming)g(test)j
-(framew)m(ork],)f(page)g(6,)g(for)f(more)h(detailed)e(expla-)150
-3132 y(nations)h(of)g(the)h(test)g(outcomes)h(\(`)p Fr(FAIL)p
-Fv(',)e(`)p Fr(PASS)p Fv(',)g(`)p Fr(UNTESTED)p Fv(',)f(`)p
-Fr(UNRESOLVED)p Fv(',)f(`)p Fr(UNSUPPORTED)p Fv('\).)150
-3316 y Fr(perror)h(")p Fq(string)37 b(n)m(um)m(b)s(er)7
-b Fr(")630 3425 y Fv(Declares)28 b(a)g(sev)m(ere)g(error)f(in)f(the)h
-(testing)h(framew)m(ork)f(itself.)39 b Fr(perror)25 b
-Fv(writes)h(in)g(the)i(log)630 3535 y(\014les)j(a)i(message)h(b)s
-(eginning)c(with)h(`)p Fr(ERROR)p Fv(',)h(app)s(ending)e(the)j(argumen)
-m(t)g Fq(string)p Fv(.)46 b(If)32 b(the)630 3645 y(optional)25
-b Fq(n)m(um)m(b)s(er)32 b Fv(is)25 b(supplied,)f(then)i(this)f(is)g
-(used)g(to)i(set)g(the)f(in)m(ternal)f(coun)m(t)i(of)f(errors)630
-3754 y(to)31 b(that)g(v)-5 b(alue.)630 3889 y(As)32 b(a)g(side)e
-(e\013ect,)k Fr(perror)c Fv(also)i(c)m(hanges)h(the)e(e\013ect)j(of)e
-(the)f(next)h Fr(pass)f Fv(or)h Fr(fail)e Fv(com-)630
-3998 y(mand:)50 b(the)36 b(test)h(outcome)f(b)s(ecomes)g(`)p
-Fr(UNRESOLVED)p Fv(',)f(since)g(an)h(automatic)g(`)p
-Fr(PASS)p Fv(')f(or)630 4108 y(`)p Fr(FAIL)p Fv(')d(cannot)h(b)s(e)f
-(trusted)g(after)h(a)g(sev)m(ere)g(error)f(in)g(the)g(test)i(framew)m
-(ork.)47 b(If)32 b(the)h(op-)630 4218 y(tional)d(n)m(umeric)g(v)-5
-b(alue)30 b(is)g(`)p Fr(0)p Fv(',)i(then)f(there)g(are)g(no)g(further)f
-(side)g(e\013ects)i(to)g(calling)d(this)630 4327 y(function,)37
-b(and)f(the)g(follo)m(wing)f(test)i(outcome)h(do)s(esn't)e(b)s(ecome)h
-(`)p Fr(UNRESOLVED)p Fv('.)57 b(This)630 4437 y(can)31
-b(b)s(e)e(used)h(for)g(errors)g(with)f(no)h(kno)m(wn)g(side)f
-(e\013ects.)150 4621 y Fr(warning)f(")p Fq(string)37
-b(n)m(um)m(b)s(er)7 b Fr(")630 4731 y Fv(Declares)27
-b(detection)g(of)f(a)h(minor)e(error)g(in)g(the)i(test)g(case)g
-(itself.)38 b Fr(warning)25 b Fv(writes)g(in)g(the)630
-4840 y(log)35 b(\014les)e(a)i(message)h(b)s(eginning)c(with)h(`)p
-Fr(WARNING)p Fv(',)i(app)s(ending)d(the)j(argumen)m(t)g
-Fq(string)p Fv(.)630 4950 y(Use)41 b Fr(warning)d Fv(rather)j(than)f
-Fr(error)f Fv(for)i(cases)g(\(suc)m(h)g(as)f(comm)m(unication)g
-(failure)f(to)630 5059 y(b)s(e)44 b(follo)m(w)m(ed)g(b)m(y)g(a)h
-(retry\))g(where)f(the)g(test)i(case)f(can)g(reco)m(v)m(er)h(from)e
-(the)h(error.)82 b(If)630 5169 y(the)34 b(optional)e
-Fq(n)m(um)m(b)s(er)39 b Fv(is)33 b(supplied,)e(then)i(this)f(is)h(used)
-g(to)h(set)g(the)f(in)m(ternal)g(coun)m(t)h(of)630 5279
-y(w)m(arnings)29 b(to)i(that)g(v)-5 b(alue.)p eop
-%%Page: 24 26
-24 25 bop 150 -116 a Fv(24)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)630 83 y(As)32 b(a)g(side)f(e\013ect,)
-k Fr(warning_threshold)27 b Fv(or)32 b(more)g(calls)f(to)i
-Fr(warning)d Fv(in)h(a)h(single)f(test)630 193 y(case)k(also)e(c)m
-(hanges)i(the)f(e\013ect)h(of)f(the)g(next)f Fr(pass)g
-Fv(or)g Fr(fail)g Fv(command:)47 b(the)34 b(test)g(out-)630
-302 y(come)39 b(b)s(ecomes)f(`)p Fr(UNRESOLVED)p Fv(')e(since)h(an)h
-(automatic)h(`)p Fr(PASS)p Fv(')e(or)h(`)p Fr(FAIL)p
-Fv(')f(ma)m(y)h(not)h(b)s(e)630 412 y(trust)m(w)m(orth)m(y)j(after)f
-(man)m(y)g(w)m(arnings.)71 b(If)41 b(the)g(optional)f(n)m(umeric)g(v)-5
-b(alue)40 b(is)g(`)p Fr(0)p Fv(',)k(then)630 521 y(there)32
-b(are)h(no)f(further)f(side)g(e\013ects)i(to)g(calling)e(this)g
-(function,)h(and)f(the)h(follo)m(wing)f(test)630 631
-y(outcome)40 b(do)s(esn't)f(b)s(ecome)h(`)p Fr(UNRESOLVED)p
-Fv('.)65 b(This)37 b(can)j(b)s(e)e(used)h(for)g(errors)f(with)g(no)630
-741 y(kno)m(wn)30 b(side)f(e\013ects.)150 923 y Fr(note)g(")p
-Fq(string)8 b Fr(")630 1032 y Fv(App)s(ends)32 b(an)i(informational)e
-(message)j(to)g(the)f(log)g(\014le.)51 b Fr(note)33 b
-Fv(writes)g(in)g(the)h(log)g(\014les)630 1142 y(a)40
-b(message)g(b)s(eginning)d(with)h(`)p Fr(NOTE)p Fv(',)j(app)s(ending)c
-(the)i(argumen)m(t)h Fq(string)p Fv(.)66 b(Use)40 b Fr(note)630
-1252 y Fv(sparingly)-8 b(.)40 b Fr(verbose)29 b Fv(should)f(b)s(e)j
-(used)e(for)i(most)g(suc)m(h)f(messages,)i(but)e(in)g(cases)h(where)630
-1361 y(a)g(message)g(is)f(needed)g(in)f(the)h(log)h(\014le)e
-(regardless)h(of)g(the)h(v)m(erb)s(osit)m(y)f(lev)m(el)g(use)g
-Fr(note)p Fv(.)150 1543 y Fr(pass)f(")p Fq(string)8 b
-Fr(")630 1653 y Fv(Declares)29 b(a)f(test)h(to)f(ha)m(v)m(e)h(passed.)
-40 b Fr(pass)26 b Fv(writes)h(in)g(the)h(log)g(\014les)e(a)j(message)g
-(b)s(eginning)630 1763 y(with)d(`)p Fr(PASS)p Fv(')g(\(or)h
-Fr(XPASS)p Fv(,)g(if)f(failure)f(w)m(as)i(exp)s(ected\),)i(app)s
-(ending)24 b(the)j(argumen)m(t)h Fq(string)p Fv(.)150
-1945 y Fr(fail)h(")p Fq(string)8 b Fr(")630 2055 y Fv(Declares)32
-b(a)f(test)h(to)g(ha)m(v)m(e)g(failed.)41 b Fr(fail)30
-b Fv(writes)g(in)g(the)h(log)g(\014les)f(a)i(message)g(b)s(eginning)630
-2164 y(with)26 b(`)p Fr(FAIL)p Fv(')g(\(or)h Fr(XFAIL)p
-Fv(,)g(if)f(failure)f(w)m(as)i(exp)s(ected\),)i(app)s(ending)24
-b(the)j(argumen)m(t)h Fq(string)p Fv(.)150 2346 y Fr(unresolved)g(")p
-Fq(string)8 b Fr(")630 2456 y Fv(Declares)35 b(a)f(test)h(to)g(ha)m(v)m
-(e)h(an)e(unresolv)m(ed)f(outcome.)53 b Fr(unresolved)31
-b Fv(writes)j(in)e(the)j(log)630 2566 y(\014le)j(a)i(message)h(b)s
-(eginning)36 b(with)i(`)p Fr(UNRESOLVED)p Fv(',)i(app)s(ending)c(the)k
-(argumen)m(t)g Fq(string)p Fv(.)630 2675 y(This)33 b(usually)g(means)i
-(the)g(test)h(did)d(not)j(execute)g(as)f(exp)s(ected,)i(and)e(a)g(h)m
-(uman)f(b)s(eing)630 2785 y(m)m(ust)28 b(go)g(o)m(v)m(er)h(results)e
-(to)i(determine)e(if)f(it)i(passed)f(or)h(failed)e(\(and)i(to)g(impro)m
-(v)m(e)g(the)g(test)630 2894 y(case\).)150 3077 y Fr(untested)g(")p
-Fq(string)8 b Fr(")630 3186 y Fv(Declares)25 b(a)g(test)g(w)m(as)f(not)
-h(run.)37 b Fr(untested)22 b Fv(writes)h(in)g(the)h(log)g(\014le)g(a)g
-(message)i(b)s(eginning)630 3296 y(with)31 b(`)p Fr(UNTESTED)p
-Fv(',)g(app)s(ending)f(the)i(argumen)m(t)h Fq(string)p
-Fv(.)45 b(F)-8 b(or)33 b(example,)g(y)m(ou)f(migh)m(t)g(use)630
-3405 y(this)c(in)g(a)h(dumm)m(y)f(test)i(whose)f(only)f(role)g(is)g(to)
-i(record)f(that)h(a)f(test)h(do)s(es)f(not)g(y)m(et)h(exist)630
-3515 y(for)g(some)h(feature.)150 3697 y Fr(unsupported)c(")p
-Fq(string)8 b Fr(")630 3807 y Fv(Declares)38 b(that)g(a)g(test)g(case)g
-(dep)s(ends)e(on)h(some)h(facilit)m(y)e(that)i(do)s(es)f(not)h(exist)f
-(in)f(the)630 3916 y(testing)h(en)m(vironmen)m(t.)58
-b Fr(unsupported)33 b Fv(writes)j(in)f(the)h(log)h(\014le)e(a)i
-(message)h(b)s(eginning)630 4026 y(with)29 b(`)p Fr(UNSUPPORTED)p
-Fv(',)f(app)s(ending)g(the)j(argumen)m(t)f Fq(string)p
-Fv(.)150 4208 y Fr(get_warning_threshold)630 4318 y Fv(Returns)f(the)i
-(curren)m(t)f(v)-5 b(alue)30 b(of)h Fr(warning_threshold)p
-Fv(.)36 b(The)29 b(default)h(v)-5 b(alue)30 b(is)f(3.)150
-4500 y Fr(set_warning_threshold)c Fq(threshold)630 4610
-y Fv(Sets)f(the)h(v)-5 b(alue)23 b(of)i Fr(warning_threshold)p
-Fv(.)34 b(A)24 b(v)-5 b(alue)24 b(of)g Fr(0)g Fv(disables)e(it:)38
-b(calls)23 b(to)i Fr(warning)630 4719 y Fv(will)j(not)i(turn)g(a)g(`)p
-Fr(PASS)p Fv(')g(or)g(`)p Fr(FAIL)p Fv(')g(in)m(to)h(an)f(`)p
-Fr(UNRESOLVED)p Fv('.)150 4902 y Fr(transform)e(")p Fq(to)s(olname)5
-b Fr(")630 5011 y Fv(Generates)39 b(a)f(string)f(for)h(the)g(name)g(of)
-g(a)h(to)s(ol)e(as)i(it)e(w)m(as)h(con\014gured)g(and)f(installed,)630
-5121 y(giv)m(en)27 b(its)g(nativ)m(e)h(name)g(\(as)g(the)g(argumen)m(t)
-f Fq(to)s(olname)5 b Fv(\).)41 b(This)25 b(mak)m(es)k(the)e(assumption)
-630 5230 y(that)49 b(all)e(to)s(ols)h(are)g(installed)e(using)h(the)h
-(same)h(naming)d(con)m(v)m(en)m(tions:)78 b(it)47 b(extrap-)630
-5340 y(olates)52 b(from)g(the)g(in)m(v)m(o)s(cation)f(name)h(for)g(`)p
-Fr(runtest)p Fv('.)103 b(F)-8 b(or)53 b(example,)k(if)51
-b(y)m(ou)h(call)p eop
-%%Page: 25 27
-25 26 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h
-(Implemen)m(tation)1847 b(25)630 83 y Fr(runtest)52 b
-Fv(as)i(`)p Fr(m68k-vxworks-runtest)p Fv(',)g(the)g(result)f(of)h(`)30
-b Fr(transform)e("gcc")h Fv(')54 b(is)630 193 y(`)p Fr
-(m68k-vxworks-gcc)p Fv('.)150 377 y Fr(ishost)29 b(")p
-Fq(host)r Fr(")630 487 y Fv(T)-8 b(ests)21 b(for)f(a)h(particular)d
-Fn(host)31 b Fv(en)m(vironmen)m(t.)37 b(If)20 b(the)g(curren)m(tly)g
-(con\014gured)f(host)i(matc)m(hes)630 596 y(the)34 b(argumen)m(t)g
-(string,)f(the)h(result)e(is)h Fr(1)p Fv(;)i(otherwise)d(the)i(result)f
-(is)f Fr(0)p Fv(.)50 b Fq(host)35 b Fv(m)m(ust)f(b)s(e)f(a)630
-706 y(full)22 b(three-part)j Fr(configure)d Fv(host)j(name;)h(in)e
-(particular,)g(y)m(ou)h(ma)m(y)g(not)f(use)h(the)f(shorter)630
-815 y(nic)m(knames)f(supp)s(orted)f(b)m(y)i Fr(configure)d
-Fv(\(but)i(y)m(ou)h(can)g(use)f(wildcard)f(c)m(haracters,)k(using)630
-925 y(shell)j(syn)m(tax,)i(to)g(sp)s(ecify)e(sets)i(of)f(names\).)150
-1109 y Fr(istarget)e(")p Fq(target)r Fr(")630 1219 y
-Fv(T)-8 b(ests)40 b(for)g(a)g(particular)e Fn(tar)-5
-b(get)50 b Fv(en)m(vironmen)m(t.)69 b(If)39 b(the)h(curren)m(tly)f
-(con\014gured)g(target)630 1328 y(matc)m(hes)c(the)g(argumen)m(t)f
-(string,)h(the)f(result)f(is)g Fr(1)p Fv(;)j(otherwise)e(the)g(result)f
-(is)h Fr(0)p Fv(.)51 b Fq(target)630 1438 y Fv(m)m(ust)35
-b(b)s(e)f(a)i(full)d(three-part)i Fr(configure)e Fv(target)j(name;)i
-(in)c(particular,)h(y)m(ou)g(ma)m(y)h(not)630 1548 y(use)31
-b(the)g(shorter)g(nic)m(knames)f(supp)s(orted)g(b)m(y)h
-Fr(configure)d Fv(\(but)j(y)m(ou)g(can)h(use)e(wildcard)630
-1657 y(c)m(haracters,)k(using)d(shell)f(syn)m(tax,)k(to)f(sp)s(ecify)d
-(sets)j(of)f(names\).)46 b(If)32 b(it)g(is)f(passed)h(a)g
-Fr(NULL)630 1767 y Fv(string,)e(then)g(it)g(returns)f(the)h(name)h(of)f
-(the)h(build)c(canonical)j(con\014guration.)150 1951
-y Fr(isbuild)e(")p Fq(host)r Fr(")630 2061 y Fv(T)-8
-b(ests)33 b(for)f(a)h(particular)e Fn(build)k(host)42
-b Fv(en)m(vironmen)m(t.)47 b(If)32 b(the)h(curren)m(tly)e(con\014gured)
-h(host)630 2170 y(matc)m(hes)40 b(the)f(argumen)m(t)g(string,)h(the)f
-(result)e(is)h Fr(1)p Fv(;)k(otherwise)d(the)f(result)g(is)g
-Fr(0)p Fv(.)65 b Fq(host)630 2280 y Fv(m)m(ust)40 b(b)s(e)g(a)h(full)e
-(three-part)i Fr(configure)d Fv(host)j(name;)46 b(in)39
-b(particular,)j(y)m(ou)e(ma)m(y)i(not)630 2389 y(use)31
-b(the)g(shorter)g(nic)m(knames)f(supp)s(orted)g(b)m(y)h
-Fr(configure)d Fv(\(but)j(y)m(ou)g(can)h(use)e(wildcard)630
-2499 y(c)m(haracters,)k(using)d(shell)f(syn)m(tax,)k(to)f(sp)s(ecify)d
-(sets)j(of)f(names\).)46 b(If)32 b(it)g(is)f(passed)h(a)g
-Fr(NULL)630 2609 y Fv(string,)e(then)g(it)g(returns)f(the)h(name)h(of)f
-(the)h(build)c(canonical)j(con\014guration.)630 2743
-y(item)k(is3w)m(a)m(y)h Fr(")p Fq(host)r Fr(")f Fv(T)-8
-b(ests)34 b(for)g(a)h(canadian)f(cross.)52 b(This)33
-b(is)g(when)g(the)i(tests)g(will)d(b)s(e)630 2853 y(run)24
-b(on)h(a)h(remotly)f(hosted)h(cross)f(compiler.)38 b(If)25
-b(it)g(is)g(a)g(canadian)g(cross,)i(then)e(the)h(result)630
-2962 y(is)j Fr(1)p Fv(;)i(otherwise)e(the)i(result)e(is)h
-Fr(0)p Fv(.)150 3147 y Fr(isnative)96 b Fv(T)-8 b(ests)28
-b(whether)e(the)h(curren)m(t)g(con\014guration)f(has)h(the)g(same)h
-(host)f(and)f(target.)42 b(When)26 b(it)630 3256 y(runs)32
-b(in)g(a)h Fn(native)41 b Fv(con\014guration)32 b(this)g(pro)s(cedure)g
-(returns)g(a)i Fr(1)p Fv(;)h(otherwise)d(it)h(returns)630
-3366 y(a)e Fr(0)p Fv(.)150 3550 y Fr(load_lib)d(")p Fq(library-\014le)5
-b Fr(")630 3660 y Fv(Loads)46 b(the)f(\014le)g Fq(library-\014le)j
-Fv(b)m(y)d(searc)m(hing)g(a)h(\014xed)f(path)g(built)f(in)m(to)h
-Fr(runtest)p Fv(.)84 b(If)630 3769 y(DejaGn)m(u)25 b(has)f(b)s(een)f
-(installed,)h(it)f(lo)s(oks)h(in)f(a)h(path)g(starting)g(with)f(the)h
-(installed)e(library)630 3879 y(directory)-8 b(.)39 b(If)26
-b(y)m(ou)g(are)h(running)c(DejaGn)m(u)k(directly)e(from)g(a)i(source)f
-(directory)-8 b(,)27 b(without)630 3988 y(\014rst)39
-b(running)f(`)p Fr(make)29 b(install)p Fv(',)41 b(this)e(path)h
-(defaults)g(to)g(the)h(curren)m(t)f(directory)-8 b(.)70
-b(In)630 4098 y(either)31 b(case,)i(it)e(then)h(lo)s(oks)f(in)f(the)i
-(curren)m(t)f(directory)g(for)g(a)h(directory)f(called)g
-Fr(lib)p Fv(.)43 b(If)630 4208 y(there)38 b(are)f(duplicate)g
-(de\014nitions,)g(the)g(last)g(one)h(loaded)f(tak)m(es)i(precedence)f
-(o)m(v)m(er)h(the)630 4317 y(earlier)29 b(ones.)150 4501
-y Fr(setup_xfail)e(")p Fq(con\014g)38 b Fv([)p Fq(bugid)t
-Fv(])p Fr(")630 4611 y Fv(Declares)c(that)h(the)e(test)i(is)d(exp)s
-(ected)j(to)f(fail)e(on)i(a)g(particular)e(set)i(of)f
-(con\014gurations.)630 4721 y(The)f Fq(con\014g)40 b
-Fv(argumen)m(t)32 b(m)m(ust)h(b)s(e)e(a)i(list)d(of)j(full)d
-(three-part)i Fr(configure)e Fv(target)k(name;)630 4830
-y(in)28 b(particular,)h(y)m(ou)h(ma)m(y)g(not)g(use)f(the)h(shorter)g
-(nic)m(knames)f(supp)s(orted)f(b)m(y)h Fr(configure)630
-4940 y Fv(\(but)22 b(y)m(ou)g(can)g(use)g(the)g(common)g(shell)f
-(wildcard)e(c)m(haracters)24 b(to)e(sp)s(ecify)f(sets)h(of)g(names\).)
-630 5049 y(The)33 b Fq(bugid)i Fv(argumen)m(t)f(is)f(optional,)h(and)f
-(used)g(only)f(in)g(the)i(logging)g(\014le)e(output;)j(use)630
-5159 y(it)29 b(as)g(a)h(link)d(to)j(a)f(bug-trac)m(king)h(system)f(suc)
-m(h)g(as)g Fo(gna)-6 b(ts)28 b Fv(\(see)i(section)g(\\Ov)m(erview")f
-(in)630 5269 y Fq(T)-8 b(rac)m(king)31 b(Bugs)f(With)g(GNA)-8
-b(TS)5 b Fv(\).)p eop
-%%Page: 26 28
-26 27 bop 150 -116 a Fv(26)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)630 83 y(Once)36 b(y)m(ou)g(use)f
-Fr(setup_xfail)p Fv(,)f(the)i Fr(fail)e Fv(and)h Fr(pass)g
-Fv(pro)s(cedures)f(pro)s(duce)h(the)h(mes-)630 193 y(sages)43
-b(`)p Fr(XFAIL)p Fv(')e(and)h(`)p Fr(XPASS)p Fv(')f(resp)s(ectiv)m(ely)
--8 b(,)46 b(allo)m(wing)41 b(y)m(ou)h(to)h(distinguish)c(exp)s(ected)
-630 302 y(failures)28 b(\(and)j(unexp)s(ected)e(success!\))42
-b(from)30 b(other)g(test)h(outcomes.)630 437 y Fn(Warning:)43
-b Fv(y)m(ou)25 b(m)m(ust)f(clear)h(the)f(exp)s(ected)h(failure)e(after)
-i(using)e Fr(setup_xfail)e Fv(in)i(a)i(test)630 546 y(case.)41
-b(An)m(y)29 b(call)f(to)h Fr(pass)f Fv(or)h Fr(fail)e
-Fv(clears)i(the)g(exp)s(ected)g(failure)e(implicitly;)e(if)j(the)h
-(test)630 656 y(has)k(some)g(other)g(outcome,)i(e.g.)49
-b(an)32 b(error,)h(y)m(ou)h(can)f(call)f Fr(clear_xfail)d
-Fv(to)34 b(clear)f(the)630 765 y(exp)s(ected)g(failure)f(explicitly)-8
-b(.)46 b(Otherwise,)33 b(the)g(exp)s(ected-failure)f(declaration)h
-(applies)630 875 y(to)e(whatev)m(er)g(test)h(runs)c(next,)j(leading)e
-(to)i(surprising)c(results.)150 1059 y Fr(clear_xfail)g
-Fq(con\014g)630 1169 y Fv(Cancel)c(an)h(exp)s(ected)g(failure)d
-(\(previously)h(declared)h(with)f Fr(setup_xfail)p Fv(\))f(for)i(a)h
-(partic-)630 1279 y(ular)k(set)i(of)g(con\014gurations.)40
-b(The)29 b Fq(con\014g)37 b Fv(argumen)m(t)30 b(is)f(a)h(list)e(of)h
-(con\014guration)g(target)630 1388 y(names.)68 b(It)40
-b(is)e(only)h(necessary)h(to)g(call)f Fr(clear_xfail)d
-Fv(if)i(a)i(test)h(case)f(ends)f(without)630 1498 y(calling)29
-b(either)h Fr(pass)f Fv(or)h Fr(fail)p Fv(,)g(after)h(calling)e
-Fr(setup_xfail)p Fv(.)150 1682 y Fr(verbose)f Fv([)p
-Fr(-log)p Fv(])i([)p Fr(-n)p Fv(])g([)p Fr(--)p Fv(])h
-Fr(")p Fq(string)8 b Fr(")28 b Fq(n)m(um)m(b)s(er)630
-1792 y Fv(T)-8 b(est)42 b(cases)g(can)f(use)g(this)g(function)e(to)j
-(issue)e(helpful)f(messages)j(dep)s(ending)d(on)i(the)630
-1901 y(n)m(um)m(b)s(er)29 b(of)i(`)p Fr(--verbose)p Fv(')d(options)i
-(on)g(the)h Fr(runtest)d Fv(command)i(line.)40 b(It)30
-b(prin)m(ts)f Fq(string)630 2011 y Fv(if)40 b(the)i(v)-5
-b(alue)41 b(of)h(the)g(v)-5 b(ariable)40 b Fr(verbose)f
-Fv(is)i(higher)f(than)h(or)h(equal)f(to)h(the)g(optional)630
-2120 y Fq(n)m(um)m(b)s(er)p Fv(.)g(The)31 b(default)f(v)-5
-b(alue)31 b(for)g Fq(n)m(um)m(b)s(er)36 b Fv(is)31 b(1.)43
-b(Use)32 b(the)f(optional)g(`)p Fr(-log)p Fv(')f(argumen)m(t)630
-2230 y(to)k(cause)h Fq(string)40 b Fv(to)35 b(alw)m(a)m(ys)f(b)s(e)f
-(added)g(to)i(the)f(log)f(\014le,)h(ev)m(en)h(if)d(it)i(w)m(on't)g(b)s
-(e)f(prin)m(ted.)630 2340 y(Use)e(the)h(optional)e(`)p
-Fr(-n)p Fv(')h(argumen)m(t)g(to)h(prin)m(t)e Fq(string)37
-b Fv(without)30 b(a)i(trailing)d(newline.)41 b(Use)630
-2449 y(the)31 b(optional)e(`)p Fr(--)p Fv(')h(argumen)m(t)h(if)f
-Fq(string)37 b Fv(b)s(egins)28 b(with)i Fr(")p Fv(-)p
-Fr(")p Fv(.)150 2698 y Fi(5.3.2)63 b(Remote)39 b(Comm)m(unication)h
-(Pro)s(cedures)275 2891 y Fv(`)p Fr(lib/remote.exp)p
-Fv(')c(de\014nes)i(these)i(functions,)g(for)g(establishing)d(and)i
-(managing)g(comm)m(unica-)150 3000 y(tions:)275 3135
-y Fn(Pr)-5 b(o)g(c)g(e)g(dur)g(es)45 b(to)e(establish)h(a)f(c)-5
-b(onne)g(ction:)70 b Fv(Eac)m(h)42 b(of)g(these)f(pro)s(cedures)g
-(tries)g(to)h(establish)e(the)150 3244 y(connection)31
-b(up)f(to)h(three)g(times)g(b)s(efore)f(returning.)40
-b(W)-8 b(arnings)31 b(\(if)f(retries)g(will)e(con)m(tin)m(ue\))k(or)e
-(errors)150 3354 y(\(if)42 b(the)g(attempt)h(is)f(abandoned\))f(rep)s
-(ort)h(on)g(comm)m(unication)g(failures.)74 b(The)42
-b(result)f(for)h(an)m(y)h(of)150 3464 y(these)31 b(pro)s(cedures)e(is)h
-(either)g Fr(-1)p Fv(,)g(when)f(the)i(connection)g(cannot)g(b)s(e)f
-(established,)f(or)h(the)h(spa)m(wn)f(ID)150 3573 y(returned)f(b)m(y)h
-(the)h Fr(expect)e Fv(command)h Fr(spawn)p Fv(.)275 3708
-y(It)d(use)f(the)h(v)-5 b(alue)27 b(of)g(the)g Fr(connect)e
-Fv(\014eld)g(in)h(the)h Fr(target_info)d Fv(arra)m(y)j(\(w)m(as)h
-Fr(connectmode)c Fv(as)j(the)150 3817 y(t)m(yp)s(e)38
-b(of)g(connection)f(to)i(mak)m(e.)63 b(Curren)m(t)37
-b(supp)s(orted)f(connection)i(t)m(yp)s(es)f(are)h(tip,)h(k)m(ermit,)g
-(telnet,)150 3927 y(rsh,)e(rlogin,)f(and)f(netdata.)59
-b(If)36 b(the)g Fr(--reboot)e Fv(option)h(w)m(as)i(used)e(on)h(the)g
-(run)m(test)g(command)g(line,)150 4037 y(then)30 b(the)h(target)h(is)d
-(reb)s(o)s(oted)h(b)s(efore)g(the)h(connection)f(is)g(made.)150
-4221 y Fr(remote_open)d Fq(t)m(yp)s(e)630 4330 y Fn(R)-5
-b(emote)40 b(Conne)-5 b(ction)41 b(Pr)-5 b(o)g(c)g(e)g(dur)g(e.)64
-b Fv(This)36 b(is)h(passed)g Fn(host)47 b Fv(or)38 b
-Fn(tar)-5 b(get)p Fv(.)63 b(Host)39 b(or)e(target)630
-4440 y(refers)31 b(to)h(whether)f(it)g(is)f(a)i(connection)g(to)g(a)g
-(remote)g(target,)h(or)f(a)g(remote)g(host.)44 b(This)630
-4550 y(op)s(ens)34 b(the)g(connection)h(to)g(the)g(desired)e(target)j
-(or)e(host)h(using)e(the)i(default)e(v)-5 b(alues)34
-b(in)630 4659 y(the)25 b(con\014guration)f(system.)39
-b(It)25 b(returns)e(that)i Fr(spawn_id)e Fv(of)i(the)g(pro)s(cess)f
-(that)h(manages)630 4769 y(the)32 b(connection.)46 b(This)30
-b(v)-5 b(alue)31 b(can)i(b)s(e)e(used)g(in)g Fr(expect)f
-Fv(or)i Fr(exp_send)e Fv(statemen)m(ts,)k(or)630 4878
-y(passed)25 b(to)i(other)f(pro)s(cedures)e(that)i(need)g(the)g
-(connection)g(pro)s(cess's)f(id.)38 b(This)24 b(also)i(sets)630
-4988 y(the)31 b Fr(fileid)d Fv(\014eld)h(in)g(the)i Fr(target_info)c
-Fv(arra)m(y)-8 b(.)p eop
-%%Page: 27 29
-27 28 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h
-(Implemen)m(tation)1847 b(27)150 83 y Fr(remote_close)27
-b Fq(shellid)630 193 y Fn(shel)5 b(lid)42 b Fv(is)31
-b(v)-5 b(alue)31 b(returned)g(b)m(y)h(a)g(call)g(to)g
-Fr(remote_open)p Fv(.)42 b(This)31 b(closes)h(the)g(connection)630
-302 y(to)c(the)g(target)h(so)f(resources)f(can)h(b)s(e)f(used)g(b)m(y)g
-(others.)40 b(This)26 b(parameter)i(can)f(b)s(e)g(left)h(o\013)630
-412 y(if)h(the)i Fr(fileid)e Fv(\014eld)g(in)g(the)h
-Fr(target_info)d Fv(arra)m(y)k(is)f(set.)150 596 y Fr(telnet)f
-Fq(hostname)35 b(p)s(ort)150 706 y Fr(rlogin)29 b Fq(hostname)150
-815 y Fr(rsh)g Fq(hostname)630 925 y Fn(IP)d(network)g(pr)-5
-b(o)g(c)g(e)g(dur)g(es.)42 b Fq(hostname)28 b Fv(refers)23
-b(to)g(the)h(IP)e(address)h(or)g(name)g(\(for)g(example,)630
-1034 y(an)h(en)m(try)g(in)f(`)p Fr(/etc/hosts)p Fv('\))f(for)i(this)f
-(target.)40 b(The)23 b(pro)s(cedure)g(names)h(re\015ect)h(the)f(Unix)
-630 1144 y(utilit)m(y)29 b(used)h(to)i(establish)d(a)j(connection.)42
-b(The)31 b(optional)f Fq(p)s(ort)i Fv(is)e(used)g(to)i(sp)s(ecify)e
-(the)630 1254 y(IP)35 b(p)s(ort)f(n)m(um)m(b)s(er.)53
-b(The)35 b(v)-5 b(alue)34 b(of)h(the)g Fr(netport)e Fv(\014eld)h(in)f
-(the)j Fr(target_info)31 b Fv(arra)m(y)36 b(is)630 1363
-y(used.)64 b(\(w)m(as)40 b Fr($netport)p Fv(\))c(This)h(v)-5
-b(alue)38 b(has)g(t)m(w)m(o)i(parts,)h(the)d(hostname)h(and)f(the)h(p)s
-(ort)630 1473 y(n)m(um)m(b)s(er,)26 b(sep)s(erated)g(b)m(y)g(a)h
-Fn(:)p Fv(.)39 b(If)26 b Fr(host)f Fv(or)h Fr(target)f
-Fv(is)g(used)h(in)f(the)h Fr(hostname)e Fv(\014eld,)i(than)630
-1582 y(the)31 b(con\014g)f(arra)m(y)h(is)e(used)h(for)g(all)f
-(information.)150 1767 y Fr(tip)g Fq(p)s(ort)137 b Fn(Serial)29
-b(line)g(pr)-5 b(o)g(c)g(e)g(dur)g(e.)42 b Fv(Connect)26
-b(using)f(the)h(Unix)f(utilit)m(y)g Fr(tip)p Fv(.)38
-b Fq(p)s(ort)28 b Fv(m)m(ust)e(b)s(e)f(a)i(name)630 1876
-y(from)g(the)g Fr(tip)g Fv(con\014guration)g(\014le)f(`)p
-Fr(/etc/remote)p Fv('.)37 b(Often,)28 b(this)e(is)h(called)f(`)p
-Fr(hardwire)p Fv(',)630 1986 y(or)h(something)g(lik)m(e)g(`)p
-Fr(ttya)p Fv('.)39 b(This)26 b(\014le)g(holds)g(all)h(the)g
-(con\014guration)g(data)h(for)g(the)f(serial)630 2095
-y(p)s(ort.)61 b(The)37 b(v)-5 b(alue)37 b(of)h(the)f
-Fr(serial)f Fv(\014eld)g(in)g(the)i Fr(target_info)c
-Fv(arra)m(y)k(is)e(used.)61 b(\(w)m(as)630 2205 y Fr($serialport)p
-Fv(\))24 b(If)i Fr(host)f Fv(or)h Fr(target)f Fv(is)g(used)h(in)f(the)i
-Fr(port)e Fv(\014eld,)h(than)g(the)h(con\014g)f(arra)m(y)630
-2315 y(is)j(used)h(for)g(all)f(information.)150 2499
-y Fr(kermit)g Fq(p)s(ort)i(bps)630 2609 y Fn(Serial)39
-b(line)e(pr)-5 b(o)g(c)g(e)g(dur)g(e.)60 b Fv(Connect)36
-b(using)f(the)h(program)g Fr(kermit)p Fv(.)56 b Fq(p)s(ort)37
-b Fv(is)e(the)h(device)630 2718 y(name,)28 b(e.g.)40
-b(`)p Fr(/dev/ttyb)p Fv('.)e Fq(bps)29 b Fv(is)c(the)i(line)e(sp)s(eed)
-g(to)j(use)e(\(in)g(bits)f(p)s(er)g(second\))i(for)g(the)630
-2828 y(connection.)59 b(The)36 b(v)-5 b(alue)36 b(of)h(the)f
-Fr(serial)f Fv(\014eld)g(in)g(the)i Fr(target_info)c
-Fv(arra)m(y)k(is)e(used.)630 2937 y(\(w)m(as)29 b Fr($serialport)p
-Fv(\))d(If)i Fr(host)f Fv(or)h Fr(target)f Fv(is)h(used)f(in)g(the)i
-Fr(port)e Fv(\014eld,)h(than)g(the)h(con\014g)630 3047
-y(arra)m(y)i(is)e(used)h(for)g(all)f(information.)150
-3206 y Fn(Pr)-5 b(o)g(c)g(e)g(dur)g(es)35 b(to)e(manage)h(a)f(c)-5
-b(onne)g(ction:)150 3391 y Fr(tip_download)27 b Fq(spa)m(wnid)32
-b(\014le)630 3500 y Fv(Do)m(wnload)25 b(`)p Fq(\014le)5
-b Fv(')24 b(to)i(the)f(pro)s(cess)f Fq(spa)m(wnid)j Fv(\(the)e(v)-5
-b(alue)24 b(returned)g(when)g(the)h(connection)630 3610
-y(w)m(as)42 b(established\),)h(using)d(the)h Fr(~put)g
-Fv(command)g(under)f Fr(tip)p Fv(.)72 b(Most)43 b(often)f(used)e(for)
-630 3719 y(single)29 b(b)s(oard)h(computers)g(that)h(require)e(do)m
-(wnloading)g(programs)h(in)g Fo(asci)r(i)g Fv(S-records.)630
-3829 y(Returns)f Fr(1)h Fv(if)g(an)g(error)g(o)s(ccurs,)g
-Fr(0)g Fv(otherwise.)150 4013 y Fr(exit_remote_shell)c
-Fq(spa)m(wnid)630 4123 y Fv(Exits)34 b(a)g(remote)h(pro)s(cess)f
-(started)h(b)m(y)f(an)m(y)h(of)g(the)f(connection)h(pro)s(cedures.)51
-b Fq(spa)m(wnid)630 4232 y Fv(is)29 b(the)i(result)e(of)i(the)f
-(connection)h(pro)s(cedure)e(that)i(started)g(the)g(remote)g(pro)s
-(cess.)150 4417 y Fr(download)d Fq(\014le)35 b Fv([)30
-b Fq(spa)m(wnid)i Fv(])630 4526 y(After)c(y)m(ou)h(establish)d(a)j
-(connection)f(to)h(a)f(target,)j(y)m(ou)d(can)g(do)m(wnload)g(programs)
-f(using)630 4636 y(this)39 b(command.)68 b Fr(download)38
-b Fv(reads)i(in)e Fq(\014le)44 b Fv(\(ob)5 b(ject)41
-b(co)s(de)f(in)f(S-record)g(format\))i(and)630 4746 y(writes)29
-b(it)g(to)h(the)g(device)g(con)m(trolling)e(this)h Fq(spa)m(wnid)p
-Fv(.)38 b(\(F)-8 b(rom)31 b(the)f(p)s(oin)m(t)e(of)i(view)f(of)h(the)
-630 4855 y(target,)i(the)f(S-record)f(\014le)f(comes)i(in)f(via)g
-(standard)f(input.\))630 4990 y(If)38 b(y)m(ou)g(ha)m(v)m(e)i(more)e
-(than)g(one)g(target)i(activ)m(e,)i(y)m(ou)c(can)h(use)f(the)g
-(optional)f(argumen)m(t)630 5099 y Fq(spa)m(wnid)28 b
-Fv(to)g(sp)s(ecify)d(an)h(alternativ)m(e)h(target)h(\(the)f(default)f
-(is)g(the)g(most)h(recen)m(tly)g(estab-)630 5209 y(lished)h
-Fq(spa)m(wnid)p Fv(.\))p eop
-%%Page: 28 30
-28 29 bop 150 -116 a Fv(28)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fi(5.3.3)63
-b(Utilit)m(y)40 b(Pro)s(cedures)275 276 y Fv(`)p Fr(lib/utils.exp)p
-Fv(')27 b(de\014nes)i(these)i(utilit)m(y)e(pro)s(cedures:)150
-460 y Fr(getdirs)f Fq(dir)150 570 y Fr(getdirs)g Fq(dir)36
-b(pattern)630 679 y Fv(Returns)21 b(a)h(list)e(of)i(all)f(the)h
-(directories)e(in)h(the)h(single)e(directory)h Fq(dir)27
-b Fv(that)22 b(matc)m(h)h Fq(pattern)p Fv(.)630 789 y(If)31
-b(y)m(ou)g(do)g(not)g(sp)s(ecify)f Fq(pattern)p Fv(,)i
-Fr(getdirs)d Fv(assumes)h(`)p Fr(*)p Fv('.)43 b(Y)-8
-b(ou)32 b(ma)m(y)g(use)e(the)i(common)630 898 y(shell)f(wildcard)f(c)m
-(haracters)k(in)e Fq(pattern)p Fv(.)48 b(If)32 b(no)g(directories)g
-(matc)m(h)i(the)f(pattern,)g(then)630 1008 y(a)e Fr(NULL)e
-Fv(string)g(is)h(returned.)150 1192 y Fr(find)f Fq(dir)35
-b(pattern)630 1302 y Fv(Searc)m(h)42 b(for)f(\014les)f(whose)h(names)h
-(matc)m(h)g Fq(pattern)g Fv(\(using)e(shell)f(wildcard)g(c)m(haracters)
-630 1411 y(for)30 b(\014lename)g(expansion\).)41 b(Searc)m(h)31
-b(sub)s(directories)d(recursiv)m(ely)-8 b(,)31 b(starting)f(at)h
-Fq(dir)p Fv(.)40 b(The)630 1521 y(result)g(is)g(the)i(list)e(of)h
-(\014les)f(whose)h(names)g(matc)m(h;)48 b(if)40 b(no)h(\014les)f(matc)m
-(h,)45 b(the)d(result)e(is)630 1631 y(empt)m(y)-8 b(.)54
-b(Filenames)34 b(in)f(the)h(result)g(include)e(all)h(in)m(terv)m(ening)
-h(sub)s(directory)e(names.)53 b(If)630 1740 y(no)30 b(\014les)g(matc)m
-(h)h(the)f(pattern,)h(then)f(a)h Fr(NULL)e Fv(string)h(is)f(returned.)
-150 1924 y Fr(which)g Fq(binary)630 2034 y Fv(Searc)m(hes)43
-b(the)f(execution)g(path)g(for)g(an)g(executable)h(\014le)e
-Fq(binary)p Fv(,)j(lik)m(e)d(the)h(the)h(BSD)630 2144
-y Fr(which)38 b Fv(utilit)m(y)-8 b(.)66 b(This)37 b(pro)s(cedure)i
-(uses)f(the)i(shell)d(en)m(vironmen)m(t)i(v)-5 b(ariable)38
-b(`)p Fr(PATH)p Fv('.)67 b(It)630 2253 y(returns)32 b
-Fr(0)g Fv(if)g(the)h(binary)e(is)h(not)h(in)e(the)i(path,)h(or)f(if)f
-(there)h(is)e(no)i(`)p Fr(PATH)p Fv(')f(en)m(vironmen)m(t)630
-2363 y(v)-5 b(ariable.)40 b(If)29 b Fq(binary)37 b Fv(is)29
-b(in)g(the)i(path,)f(it)g(returns)f(the)i(full)d(path)i(to)h
-Fq(binary)p Fv(.)150 2547 y Fr(grep)e Fq(\014lename)35
-b(regexp)150 2707 y Fr(grep)29 b Fq(\014lename)35 b(regexp)e
-Fr(line)630 2816 y Fv(Searc)m(h)i(the)h(\014le)e(called)h
-Fq(\014lename)k Fv(\(a)d(fully)d(sp)s(eci\014ed)g(path\))j(for)f(lines)
-e(that)j(con)m(tain)g(a)630 2926 y(matc)m(h)i(for)g(regular)e
-(expression)g Fq(regexp)p Fv(.)63 b(The)36 b(result)h(is)f(a)i(list)e
-(of)i(all)e(the)i(lines)d(that)630 3035 y(matc)m(h.)54
-b(If)33 b(no)i(lines)d(matc)m(h,)37 b(the)d(result)f(is)h(an)g(empt)m
-(y)h(string.)51 b(Sp)s(ecify)33 b Fq(regexp)k Fv(using)630
-3145 y(the)31 b(standard)e(regular)h(expression)f(st)m(yle)h(used)g(b)m
-(y)g(the)h(Unix)e(utilit)m(y)g(program)h Fr(grep)p Fv(.)630
-3279 y(Use)f(the)f(optional)g(third)e(argumen)m(t)j(`)p
-Fr(line)p Fv(')f(to)h(start)g(lines)d(in)h(the)i(result)e(with)g(the)i
-(line)630 3389 y(n)m(um)m(b)s(er)35 b(in)g Fq(\014lename)p
-Fv(.)58 b(\(This)35 b(argumen)m(t)i(is)f(simply)e(an)i(option)g
-(\015ag;)k(t)m(yp)s(e)d(it)f(just)g(as)630 3499 y(sho)m(wn|`)p
-Fr(line)p Fv('.\))150 3683 y Fr(diff)29 b Fq(\014lename)35
-b(\014lename)630 3792 y Fv(Compares)f(the)g(t)m(w)m(o)h(\014les)e(and)g
-(returns)g(a)i(1)f(if)f(they)h(matc)m(h,)i(or)e(a)g(0)h(if)e(they)h
-(don't.)51 b(If)630 3902 y Fr(verbose)28 b Fv(is)i(set,)h(then)f(it'll)
-f(prin)m(t)g(the)h(di\013erences)g(to)h(the)g(screen.)150
-4086 y Fr(slay)e Fq(name)630 4196 y Fv(This)h(lo)s(ok)h(in)g(the)h(pro)
-s(cess)f(tab)s(el)g(for)g Fq(name)37 b Fv(and)31 b(send)g(it)h(a)g
-(unix)e Fr(SIGINT)p Fv(,)g(killing)f(the)630 4306 y(pro)s(cess.)150
-4490 y Fr(absolute)f Fq(path)630 4599 y Fv(This)h(pro)s(cedure)g(tak)m
-(es)j(the)e(relativ)m(e)h Fq(path)p Fv(,)f(and)g(con)m(v)m(erts)i(it)e
-(to)h(an)f(absolute)g(path.)150 4784 y Fr(psource)e Fq(\014lename)630
-4893 y Fv(This)23 b(sources)j(the)f(\014le)f Fq(\014lename)p
-Fv(,)i(and)f(traps)g(all)f(errors.)38 b(It)26 b(also)f(ignores)f(all)g
-(extraneous)630 5003 y(output.)40 b(If)30 b(there)h(w)m(as)g(an)f
-(error)g(it)g(returns)f(a)i(1,)g(otherwise)e(it)h(returns)f(a)i(0.)p
-eop
-%%Page: 29 31
-29 30 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h
-(Implemen)m(tation)1847 b(29)150 83 y Fr(prune)29 b Fq(list)i(pattern)
-630 193 y Fv(Remo)m(v)m(e)37 b(elemen)m(ts)f(of)f(the)g(Tcl)g(list)f
-Fq(list)p Fv(.)54 b(Elemen)m(ts)35 b(are)h(\014elds)d(delimited)g(b)m
-(y)i(spaces.)630 302 y(The)29 b(result)f(is)g(a)h(cop)m(y)h(of)g
-Fq(list)p Fv(,)e(without)g(an)m(y)h(elemen)m(ts)h(that)g(matc)m(h)g
-Fq(pattern)p Fv(.)40 b(Y)-8 b(ou)30 b(can)630 412 y(use)g(the)h(common)
-f(shell)f(wildcard)f(c)m(haracters)k(to)f(sp)s(ecify)e
-Fq(pattern)p Fv(.)150 595 y Fr(setenv)g Fq(v)-5 b(ar)36
-b(v)-5 b(al)630 705 y Fv(Sets)30 b(the)h(v)-5 b(ariable)29
-b Fq(v)-5 b(ar)37 b Fv(to)31 b(the)g(v)-5 b(alue)29 b
-Fq(v)-5 b(al)p Fv(.)150 888 y Fr(unsetenv)28 b Fq(v)-5
-b(ar)630 998 y Fv(Unsets)30 b(the)h(en)m(vironmen)m(t)f(v)-5
-b(ariable)29 b Fq(v)-5 b(ar)150 1181 y Fr(getenv)29 b
-Fq(v)-5 b(ar)630 1291 y Fv(returns)39 b(the)i(v)-5 b(alue)40
-b(of)h Fq(v)-5 b(ar)47 b Fv(in)39 b(the)i(en)m(vironmen)m(t)f(if)f(it)h
-(exists,)j(otherwise)d(it)g(returns)630 1400 y Fr(NULL)p
-Fv(.)150 1584 y Fr(runtest_file_p)26 b Fq(run)m(tests)34
-b(testcase)630 1693 y Fv(Searc)m(h)d Fq(run)m(tests)j
-Fv(for)c Fq(testcase)37 b Fv(and)30 b(return)g(1)g(if)g(found,)f(0)i
-(if)e(not.)41 b Fq(run)m(tests)34 b Fv(is)c(a)h(list)e(of)630
-1803 y(t)m(w)m(o)i(elemen)m(ts.)41 b(The)30 b(\014rst)f(is)g(the)h
-(pathname)g(of)g(the)g(testsuite)g(exp)s(ect)h(script)d(running.)630
-1912 y(The)g(second)h(is)f(a)i(cop)m(y)g(of)f(what)f(w)m(as)i(on)f(the)
-g(righ)m(t)f(side)g(of)h(the)h Fr(=)e Fv(if)g(`)p Fr(foo.exp="...)m(")p
-Fv(')630 2022 y(w)m(as)33 b(sp)s(eci\014ed,)f(or)h(an)f(empt)m(y)i
-(string)d(if)h(no)h(suc)m(h)f(argumen)m(t)h(is)f(presen)m(t.)48
-b(This)31 b(is)h(used)630 2131 y(b)m(y)e(to)s(ols)g(lik)m(e)g
-(compilers)f(where)h(eac)m(h)h(testcase)i(is)c(a)i(\014le.)150
-2315 y Fr(prune_system_crud)26 b Fq(system)k(text)630
-2424 y Fv(F)-8 b(or)30 b(system)f Fq(system)p Fv(,)h(delete)g(text)g
-(the)g(host)f(or)g(target)i(op)s(erating)e(system)g(migh)m(t)g(issue)
-630 2534 y(that)22 b(will)c(in)m(terfere)j(with)e(pattern)j(matc)m
-(hing)f(of)g(program)g(output)f(in)g Fq(text)p Fv(.)39
-b(An)20 b(example)630 2644 y(is)29 b(the)i(message)g(that)g(is)f(prin)m
-(ted)f(if)g(a)i(shared)e(library)f(is)i(out)g(of)h(date.)150
-2891 y Fi(5.3.4)63 b(Cross)41 b(target)g(pro)s(cedure)275
-3084 y Fv(`)p Fr(lib/target.exp)p Fv(')27 b(de\014nes)i(these)i(utilit)
-m(y)e(pro)s(cedures:)150 3267 y Fr(push_target)e Fn(name)630
-3377 y Fv(This)22 b(mak)m(es)j(the)f(target)h(named)e
-Fn(name)31 b Fv(b)s(e)24 b(the)g(curren)m(t)f(target)i(connection.)39
-b(The)23 b(v)-5 b(alue)630 3486 y(of)30 b Fn(name)38
-b Fv(is)29 b(an)h(index)f(in)m(to)h(the)g Fr(target_info)d
-Fv(arra)m(y)k(and)e(is)g(set)i(in)e(the)h(global)g(con\014g)630
-3596 y(\014le.)150 3779 y Fr(pop_target)630 3889 y Fv(This)f(unsets)g
-(the)i(curren)m(t)f(target)i(connection.)150 4072 y Fr(list_targets)630
-4182 y Fv(This)d(lists)f(all)i(the)g(supp)s(orted)f(targets)j(for)e
-(this)f(arc)m(hitecture.)150 4365 y Fr(push_host)f Fn(name)630
-4475 y Fv(This)g(mak)m(es)j(the)g(host)f(named)g Fn(name)37
-b Fv(b)s(e)30 b(the)g(curren)m(t)g(remote)h(host)g(connection.)40
-b(The)630 4584 y(v)-5 b(alue)31 b(of)i Fn(name)39 b Fv(is)31
-b(an)h(index)e(in)m(to)i(the)h Fr(target_info)28 b Fv(arra)m(y)33
-b(and)e(is)g(set)i(in)d(the)j(global)630 4694 y(con\014g)e(\014le.)150
-4877 y Fr(pop_host)96 b Fv(This)29 b(unsets)g(the)i(curren)m(t)f(host)h
-(connection.)630 5011 y(This)f(in)m(v)m(ok)m(es)i(the)f(compiler)f(as)i
-(set)g(b)m(y)f Fr(CC)g Fv(to)h(compile)e(the)i(\014le)e
-Fn(\014le)p Fv(.)44 b(The)31 b(default)g(op-)630 5121
-y(tions)24 b(for)h(man)m(y)g(cross)g(compilation)f(targets)i(are)f
-Fn(guesse)-5 b(d)35 b Fv(b)m(y)25 b(DejaGn)m(u,)i(and)d(these)i(op-)630
-5230 y(tions)g(can)h(b)s(e)f(added)h(to)g(b)m(y)g(passing)e(in)h(more)h
-(parameters)g(as)g(argumen)m(ts)g(to)h Fr(compile)p Fv(.)630
-5340 y(Optionally)-8 b(,)32 b(this)f(will)f(also)j(use)g(the)g(v)-5
-b(alue)32 b(of)h(the)g Fr(cflags)e Fv(\014eld)g(in)g(the)i(target)i
-(con\014g)p eop
-%%Page: 30 32
-30 31 bop 150 -116 a Fv(30)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)630 83 y(arra)m(y)g(.)43
-b(If)31 b(the)g(host)g(is)f(not)h(the)g(same)h(as)f(the)g(build)d(mac)m
-(hines,)j(then)g(then)f(compiler)g(is)630 193 y(run)f(on)h(the)h
-(remote)g(host)g(using)d Fr(execute_anywhere)p Fv(.)630
-324 y(This)k(pro)s(duces)g(an)i(arc)m(hiv)m(e)g(\014le.)50
-b(An)m(y)34 b(parameters)g(passed)f(to)h Fr(archive)e
-Fv(are)i(used)f(in)630 434 y(addition)39 b(to)j(the)g(default)e
-(\015ags.)74 b(Optionally)-8 b(,)42 b(this)e(will)f(also)i(use)g(the)h
-(v)-5 b(alue)40 b(of)i(the)630 544 y Fr(arflags)d Fv(\014eld)g(in)h
-(the)h(target)i(con\014g)e(arra)m(y)-8 b(.)73 b(If)41
-b(the)g(host)g(is)f(not)h(the)g(same)h(as)f(the)630 653
-y(build)31 b(mac)m(hines,)k(then)f(then)g(arc)m(hiv)m(er)h(is)e(run)g
-(on)h(the)h(remote)g(host)f(using)f Fr(execute_)630 763
-y(anywhere)p Fv(.)630 895 y(This)28 b(generates)j(an)f(index)e(for)h
-(the)h(arc)m(hiv)m(e)g(\014le)f(for)h(systems)f(that)i(aren't)f(POSIX)f
-(y)m(et.)630 1004 y(An)m(y)h(parameters)h(passed)f(to)h
-Fr(ranlib)e Fv(are)i(used)e(in)g(for)h(the)h(\015ags.)150
-1180 y Fr(execute_anywhere)26 b Fn(cmd)5 b(line)630 1290
-y Fv(This)36 b(executes)j(the)f Fn(cmd)5 b(line)45 b
-Fv(on)37 b(the)h(prop)s(er)f(host.)63 b(This)36 b(should)f(b)s(e)j
-(used)f(as)h(a)g(re-)630 1399 y(placemen)m(t)c(for)e(the)i(Tcl)e
-(command)h Fr(exec)f Fv(as)h(this)f(v)m(ersion)h(utilizes)e(the)i
-(target)i(con\014g)630 1509 y(info)25 b(to)h(execute)h(this)d(command)i
-(on)f(the)h(build)d(mac)m(hine)i(or)h(a)g(remote)g(host.)39
-b(All)25 b(con\014g)630 1619 y(information)k(for)i(the)g(remote)h(host)
-f(m)m(ust)g(b)s(e)f(setup)h(to)g(ha)m(v)m(e)h(this)e(command)h(w)m
-(ork.)42 b(If)630 1728 y(this)25 b(is)g(a)h(canadian)g(cross,)h
-(\(where)f(w)m(e)g(test)h(a)g(cross)f(compiler)e(that)j(runs)d(on)i(a)g
-(di\013eren)m(t)630 1838 y(host)k(then)f(where)h(DejaGn)m(u)g(is)f
-(running\))e(then)j(a)g(connection)g(is)f(made)h(to)g(the)g(remote)630
-1947 y(host)39 b(and)e(the)i(command)f(is)g(executed)h(there.)65
-b(It)39 b(returns)e(either)h Fn(REMOTERR)n(OR)630 2057
-y Fv(\(for)32 b(an)h(error\))f(or)g(the)h(output)e(pro)s(duced)g(when)g
-(the)i(command)f(w)m(as)g(executed.)48 b(This)630 2167
-y(is)29 b(used)h(for)g(running)e(the)i(to)s(ol)h(to)g(b)s(e)f(tested,)h
-(not)g(a)f(test)i(case.)150 2383 y Fi(5.3.5)63 b(Debugging)42
-b(Pro)s(cedures)275 2573 y Fv(`)p Fr(lib/debugger.exp)p
-Fv(')26 b(de\014nes)j(these)i(utilit)m(y)e(pro)s(cedures:)150
-2749 y Fr(dumpvars)f Fn(expr)630 2858 y Fv(This)33 b(tak)m(es)k(a)f
-(csh)f(st)m(yle)g(regular)g(expression)f(\(glob)h(rules\))f(and)h(prin)
-m(ts)f(the)h(v)-5 b(alues)35 b(of)630 2968 y(the)c(global)e(v)-5
-b(ariable)29 b(names)i(that)g(matc)m(h.)41 b(It)31 b(is)e(abbreviated)h
-(as)h Fr(dv)150 3144 y(dumplocals)d Fn(expr)630 3254
-y Fv(This)33 b(tak)m(es)k(a)f(csh)f(st)m(yle)g(regular)g(expression)f
-(\(glob)h(rules\))f(and)h(prin)m(ts)f(the)h(v)-5 b(alues)35
-b(of)630 3363 y(the)c(lo)s(cal)e(v)-5 b(ariable)29 b(names)i(that)g
-(matc)m(h.)41 b(It)31 b(is)e(abbreviated)h(as)g Fr(dl)p
-Fv(.)150 3539 y Fr(dumprocs)e Fn(expr)630 3649 y Fv(This)f(tak)m(es)j
-(a)g(csh)e(st)m(yle)h(regular)f(expression)g(\(glob)h(rules\))e(and)h
-(prin)m(ts)g(the)h(b)s(o)s(dy)e(of)i(all)630 3759 y(pro)s(cs)h(that)h
-(matc)m(h.)41 b(It)31 b(is)e(abbreviated)h(as)g Fr(dp)150
-3935 y(dumpwatch)e Fn(expr)630 4044 y Fv(This)i(tak)m(es)j(a)f(csh)g
-(st)m(yle)g(regular)f(expression)g(\(glob)g(rules\))g(and)g(prin)m(ts)g
-(all)f(the)i(w)m(atc)m(h-)630 4154 y(p)s(oin)m(ts.)40
-b(It)30 b(is)f(abbreviated)h(as)h Fr(dw)p Fv(.)150 4330
-y Fr(watchunset)d Fn(var)630 4440 y Fv(This)22 b(breaks)i(program)f
-(execution)i(when)d(the)j(v)-5 b(ariable)22 b Fn(var)35
-b Fv(is)22 b(unset.)39 b(It)24 b(is)f(abbreviated)630
-4549 y(as)31 b Fr(wu)p Fv(.)150 4725 y Fr(watchwrite)d
-Fn(var)630 4835 y Fv(This)g(breaks)h(program)h(execution)g(when)f(the)g
-(v)-5 b(ariable)29 b Fn(var)40 b Fv(is)29 b(written.)39
-b(It)30 b(is)f(abbrevi-)630 4945 y(ated)i(as)g Fr(ww)p
-Fv(.)150 5121 y Fr(watchread)d Fn(var)630 5230 y Fv(This)e(breaks)h
-(program)g(execution)h(when)e(the)i(v)-5 b(ariable)26
-b Fn(var)38 b Fv(is)27 b(read.)39 b(It)28 b(is)f(abbreviated)630
-5340 y(as)k Fr(wr)p Fv(.)p eop
-%%Page: 31 33
-31 32 bop 150 -116 a Fv(Chapter)30 b(5:)h(The)f(DejaGn)m(u)h(Implemen)m
-(tation)1857 b(31)150 83 y Fr(watchdel)28 b Fn(watch)630
-193 y Fv(This)h(deletes)h(a)h(the)f(w)m(atc)m(hp)s(oin)m(t)h(for)f
-Fn(watch)p Fv(.)42 b(It)31 b(is)e(abbreviated)h(as)g
-Fr(wd)p Fv(.)150 372 y Fr(print)f Fn(var)85 b Fv(This)29
-b(prin)m(ts)f(the)j(v)-5 b(alue)30 b(of)g(the)h(v)-5
-b(ariable)29 b Fn(var)p Fv(.)41 b(It)31 b(is)e(abbreviated)h(as)h
-Fr(p)p Fv(.)150 552 y Fr(quit)288 b Fv(This)29 b(mak)m(es)i(run)m(test)
-f(exit.)41 b(It)30 b(is)g(abbreviated)f(as)i Fr(q)p Fv(.)150
-732 y Fr(bt)384 b Fv(This)29 b(prin)m(ts)f(a)j(bac)m(ktrace)i(of)d(the)
-h(executed)g(Tcl)f(commands.)150 985 y Fu(5.4)68 b(T)-11
-b(arget)45 b(dep)t(enden)l(t)g(pro)t(cedures)275 1176
-y Fv(Eac)m(h)37 b(com)m(bination)e(of)i(target)h(and)e(to)s(ol)g
-(requires)f(some)i(target-dep)s(enden)m(t)g(pro)s(cedures.)57
-b(The)150 1286 y(names)24 b(of)f(these)h(pro)s(cedures)f(ha)m(v)m(e)h
-(a)g(common)g(form:)37 b(the)24 b(to)s(ol)f(name,)j(follo)m(w)m(ed)d(b)
-m(y)g(an)h(underbar)e(`)p Fr(_)p Fv(',)150 1396 y(and)k(\014nally)e(a)j
-(su\016x)e(describing)f(the)i(pro)s(cedure's)g(purp)s(ose.)37
-b(F)-8 b(or)27 b(example,)h(a)e(pro)s(cedure)f(to)i(extract)150
-1505 y(the)45 b(v)m(ersion)g(from)g Fo(gdb)g Fv(is)f(called)h(`)p
-Fr(gdb_version)p Fv('.)83 b(See)45 b(Section)g(5.2)h([Initialization)e
-(Mo)s(dule],)150 1615 y(page)39 b(22,)i(for)d(a)h(discussion)c(of)k(ho)
-m(w)f(DejaGn)m(u)h(arranges)f(to)h(\014nd)e(the)h(righ)m(t)g(pro)s
-(cedures)f(for)h(eac)m(h)150 1724 y(target.)275 1857
-y Fr(runtest)e Fv(itself)i(calls)f(only)h(t)m(w)m(o)i(of)f(these)g(pro)
-s(cedures,)g Fq(to)s(ol)t Fr(_exit)e Fv(and)h Fq(to)s(ol)t
-Fr(_version)p Fv(;)i(these)150 1967 y(pro)s(cedures)29
-b(use)h(no)g(argumen)m(ts.)275 2100 y(The)f(other)i(t)m(w)m(o)h(pro)s
-(cedures,)d Fq(to)s(ol)t Fr(_start)g Fv(and)h Fq(to)s(ol)t
-Fr(_load)p Fv(,)e(are)j(only)f(called)f(b)m(y)i(the)f(test)i(suites)150
-2209 y(themselv)m(es)38 b(\(or)f(b)m(y)h(testsuite-sp)s(eci\014c)f
-(initialization)d(co)s(de\);)42 b(they)37 b(ma)m(y)h(tak)m(e)h(argumen)
-m(ts)f(or)f(not,)150 2319 y(dep)s(ending)28 b(on)i(the)h(con)m(v)m(en)m
-(tions)g(used)f(within)e(eac)m(h)j(test)g(suite.)150
-2499 y Fq(to)s(ol)t Fr(_start)630 2609 y Fv(Starts)22
-b(a)g(particular)e(to)s(ol.)37 b(F)-8 b(or)23 b(an)e(in)m(teractiv)m(e)
-i(to)s(ol,)g Fq(to)s(ol)t Fr(_start)d Fv(starts)i(and)f(initializes)630
-2718 y(the)28 b(to)s(ol,)h(lea)m(ving)f(the)g(to)s(ol)g(up)f(and)h
-(running)d(for)j(the)g(test)h(cases;)h(an)e(example)g(is)f
-Fr(gdb_)630 2828 y(start)p Fv(,)41 b(the)f(start)h(function)d(for)i
-Fo(gdb)p Fv(.)69 b(F)-8 b(or)40 b(a)g(batc)m(h)h(orien)m(ted)f(to)s
-(ol,)i Fq(to)s(ol)t Fr(_start)c Fv(is)630 2937 y(optional;)26
-b(the)e(recommended)g(con)m(v)m(en)m(tion)h(is)e(to)i(let)f
-Fq(to)s(ol)t Fr(_start)f Fv(run)f(the)j(to)s(ol,)g(lea)m(ving)630
-3047 y(the)41 b(output)f(in)g(a)h(v)-5 b(ariable)40 b(called)g
-Fr(comp_output)p Fv(.)69 b(T)-8 b(est)41 b(scripts)f(can)h(then)g
-(analyze)630 3156 y(`)p Fr($comp_output)p Fv(')29 b(to)k(determine)e
-(the)h(test)g(results.)44 b(An)32 b(example)f(of)h(this)f(second)h
-(kind)630 3266 y(of)f(start)f(function)g(is)f Fr(gcc_start)p
-Fv(,)f(the)j(start)g(function)e(for)h Fo(gcc)p Fv(.)630
-3399 y Fr(runtest)18 b Fv(itself)h Fn(do)-5 b(es)25 b(not)f(c)-5
-b(al)5 b(l)30 b Fq(to)s(ol)t Fr(_start)p Fv(.)36 b(The)19
-b(initialization)e(mo)s(dule)i(`)p Fq(to)s(ol)t Fr(_init.exp)p
-Fv(')630 3509 y(m)m(ust)35 b(call)f Fq(to)s(ol)t Fr(_start)f
-Fv(for)i(in)m(teractiv)m(e)h(to)s(ols;)h(for)e(batc)m(h-orien)m(ted)h
-(to)s(ols,)g(eac)m(h)g(indi-)630 3618 y(vidual)i(test)k(script)d(calls)
-h Fq(to)s(ol)t Fr(_start)e Fv(\(or)j(mak)m(es)g(other)g(arrangemen)m
-(ts)g(to)h(run)d(the)630 3728 y(to)s(ol\).)150 3908 y
-Fq(to)s(ol)t Fr(_load)82 b Fv(Loads)25 b(something)f(in)m(to)h(a)g(to)s
-(ol.)39 b(F)-8 b(or)26 b(an)e(in)m(teractiv)m(e)i(to)s(ol,)g(this)e
-(conditions)f(the)i(to)s(ol)g(for)630 4017 y(a)35 b(particular)e(test)i
-(case;)j(for)d(example,)g Fr(gdb_load)e Fv(loads)h(a)h(new)f
-(executable)h(\014le)f(in)m(to)630 4127 y(the)24 b(debugger.)39
-b(F)-8 b(or)24 b(batc)m(h)h(orien)m(ted)f(to)s(ols,)h
-Fq(to)s(ol)t Fr(_load)d Fv(ma)m(y)j(do)f(nothing|though,)g(for)630
-4237 y(example,)h(the)f Fo(gcc)g Fv(supp)s(ort)e(uses)h
-Fr(gcc_load)f Fv(to)j(load)e(and)h(run)e(a)i(binary)e(on)i(the)g
-(target)630 4346 y(en)m(vironmen)m(t.)61 b(Con)m(v)m(en)m(tionally)-8
-b(,)39 b Fq(to)s(ol)t Fr(_load)d Fv(lea)m(v)m(es)j(the)e(output)g(of)h
-(an)m(y)f(program)g(it)630 4456 y(runs)f(in)h(a)h(v)-5
-b(ariable)36 b(called)h(`)p Fr(exec_output)p Fv('.)61
-b(W)-8 b(riting)37 b Fq(to)s(ol)t Fr(_load)e Fv(can)k(b)s(e)e(the)h
-(most)630 4565 y(complex)27 b(part)g(of)g(extending)g(DejaGn)m(u)h(to)f
-(a)h(new)f(to)s(ol)g(or)g(a)g(new)g(target,)j(if)c(it)g(requires)630
-4675 y(m)m(uc)m(h)k(comm)m(unication)g(co)s(ding)g(or)g(\014le)f(do)m
-(wnloading.)630 4808 y(T)-8 b(est)31 b(scripts)e(call)h
-Fq(to)s(ol)t Fr(_load)p Fv(.)150 4988 y Fq(to)s(ol)t
-Fr(_exit)82 b Fv(Cleans)33 b(up)g(\(if)h(necessary\))h(b)s(efore)f
-Fr(runtest)e Fv(exits.)52 b(F)-8 b(or)35 b(in)m(teractiv)m(e)g(to)s
-(ols,)g(this)e(usu-)630 5097 y(ally)38 b(ends)f(the)i(in)m(teractiv)m
-(e)h(session.)65 b(Y)-8 b(ou)39 b(can)g(also)g(use)f
-Fq(to)s(ol)t Fr(_exit)f Fv(to)i(remo)m(v)m(e)i(an)m(y)630
-5207 y(temp)s(orary)30 b(\014les)f(left)h(o)m(v)m(er)i(from)e(the)h
-(tests.)630 5340 y Fr(runtest)d Fv(calls)i Fq(to)s(ol)t
-Fr(_exit)p Fv(.)p eop
-%%Page: 32 34
-32 33 bop 150 -116 a Fv(32)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fq(to)s(ol)t
-Fr(_version)630 193 y Fv(Prin)m(ts)36 b(the)i(v)m(ersion)e(lab)s(el)g
-(and)h(n)m(um)m(b)s(er)f(for)h Fq(to)s(ol)p Fv(.)61 b(This)36
-b(is)g(called)g(b)m(y)i(the)f(DejaGn)m(u)630 302 y(pro)s(cedure)31
-b(that)i(prin)m(ts)e(the)i(\014nal)e(summary)h(rep)s(ort.)46
-b(The)32 b(output)g(should)f(consist)h(of)630 412 y(the)f(full)d(path)i
-(name)g(used)g(for)g(the)g(tested)i(to)s(ol,)e(and)g(its)g(v)m(ersion)g
-(n)m(um)m(b)s(er.)630 546 y Fr(runtest)e Fv(calls)i Fq(to)s(ol)t
-Fr(_version)p Fv(.)275 706 y(The)h(usual)g(con)m(v)m(en)m(tion)i(for)f
-(return)f(co)s(des)h(from)g(an)m(y)g(of)h(these)f(pro)s(cedures)f
-(\(although)h(it)g(is)f(not)150 815 y(required)25 b(b)m(y)i
-Fr(runtest)p Fv(\))f(is)g(to)h(return)f Fr(0)h Fv(if)f(the)h(pro)s
-(cedure)f(succeeded,)i Fr(1)f Fv(if)f(it)g(failed,)h(and)f
-Fr(-1)h Fv(if)f(there)150 925 y(w)m(as)31 b(a)g(comm)m(unication)e
-(error.)150 1182 y Fu(5.5)68 b(Remote)47 b(targets)f(supp)t(orted)275
-1375 y Fv(The)35 b(DejaGn)m(u)j(distribution)33 b(includes)h(supp)s
-(ort)g(for)i(the)h(follo)m(wing)e(remote)i(targets.)61
-b(Y)-8 b(ou)37 b(can)150 1484 y(set)f(the)f(target)h(name)f(and)g(the)g
-(connect)h(mo)s(de)f(in)e(the)j(`)p Fr(site.exp)p Fv(')d(\014le)h
-(\(using)g(the)h(Tcl)f(v)-5 b(ariables)150 1594 y(`)p
-Fr(targetname)p Fv(')37 b(and)h(`)p Fr(connectmode)p
-Fv(',)h(resp)s(ectiv)m(ely\),)i(or)e(on)g(the)g Fr(runtest)e
-Fv(command)i(line)e(\(using)150 1704 y(`)p Fr(--name)p
-Fv(')29 b(and)h(`)p Fr(--connect)p Fv('\).)150 1863 y
-Fo(amd)g Fh(29000,)j(with)d(UDI)g(proto)s(col)630 1973
-y Fv(Con\014gure)e(DejaGn)m(u)h(for)g(target)h(`)p Fr(a29k-amd-udi)p
-Fv('.)37 b(\(Cygn)m(us)29 b Fr(configure)d Fv(also)i(recog-)630
-2082 y(nizes)36 b(the)g(abbreviation)f(`)p Fr(udi29k)p
-Fv('.\))58 b(Then,)37 b(to)g(run)e(tests,)k(use)d(the)g
-Fr(runtest)e Fv(target)630 2192 y(name)29 b(to)g(sp)s(ecify)e(whether)h
-(y)m(ou)h(w)m(an)m(t)h(to)f(use)g(a)g(sim)m(ulator,)f(or)g(a)h
-(particular)e(hardw)m(are)630 2301 y(b)s(oard.)67 b(The)38
-b(particular)g(string)g(to)i(use)g(with)e(`)p Fr(--name)p
-Fv(')g(will)e(dep)s(end)i(on)h(y)m(our)h(UDI)630 2411
-y(setup)d(\014le,)j(`)p Fr(udi_soc)p Fv(')c(\(if)h(`)p
-Fr(udi_soc)p Fv(')f(is)h(not)i(in)d(y)m(our)i(w)m(orking)f(directory)-8
-b(,)40 b(the)e(en)m(vi-)630 2521 y(ronmen)m(t)31 b(v)-5
-b(ariable)29 b(`)p Fr(UDICONF)p Fv(')g(should)g(con)m(tain)h(a)h(path)g
-(to)g(this)e(\014le\).)41 b(F)-8 b(or)31 b(example,)g(if)630
-2630 y(y)m(our)f(UDI)h(setup)f(\014le)f(includes)f(these)j(lines:)150
-2734 y Fm(\013)p 200 2734 3554 4 v 3553 w(\010)p 150
-3043 4 262 v 178 2894 a Fr(iss)143 b(AF_UNIX)93 b(*)143
-b(isstip)46 b(-r)h(/home/gnu/29k/src/osboot/)o(sim/)o(osbo)o(ot)178
-2998 y(mon)143 b(AF_UNIX)93 b(*)143 b(montip)46 b(-t)h(serial)f(-baud)h
-(9600)f(-com)h(/dev/ttyb)p 3803 3043 V 150 3095 a Fm(\012)p
-200 3095 3554 4 v 3553 w(\011)630 3265 y Fv(Y)-8 b(ou)37
-b(can)f(use)g(`)p Fr(--name)28 b(iss)p Fv(')36 b(to)h(run)d(tests)j(on)
-f(the)g(sim)m(ulator,)h(and)e(`)p Fr(--name)29 b(mon)p
-Fv(')35 b(to)630 3375 y(run)e(tests)j(on)f(the)g(29K)g(hardw)m(are.)54
-b(See)35 b(the)g(man)m(ufacturer's)g(man)m(uals)f(for)h(more)g(in-)630
-3484 y(formation)30 b(on)g(UDI)h(and)f(`)p Fr(udi_soc)p
-Fv('.)630 3619 y(The)k(default)g(connect)i(proto)s(col)e(is)g(`)p
-Fr(mondfe)p Fv(')g(with)f(either)h(bac)m(k)i(end.)53
-b Fr(mondfe)33 b Fv(is)h(the)630 3728 y(only)21 b(shell)f(DejaGn)m(u)j
-(supp)s(orts)d(for)h(UDI)i(targets.)39 b Fr(mondfe)20
-b Fv(is)h(an)h Fo(amd)f Fv(sp)s(eci\014c)g(monitor)630
-3838 y(program)30 b(freely)g(a)m(v)-5 b(ailable)30 b(from)g
-Fo(amd)p Fv(.)630 3972 y Fn(Warning:)49 b Fv(This)30
-b(target)j(requires)d Fo(gdb)i Fv(v)m(ersion)f(4.7.2)i(\(or)f
-(greater\).)47 b(Earlier)30 b(v)m(ersions)630 4082 y(of)e
-Fo(gdb)g Fv(do)h(not)f(fully)e(supp)s(ort)h(the)h Fr(load)f
-Fv(command)i(on)f(this)f(target,)j(so)f(DejaGn)m(u)g(has)630
-4192 y(no)h(w)m(a)m(y)i(to)f(load)f(executable)h(\014les)e(from)h(the)g
-(debugger.)150 4351 y Fh(Motorola)j(680x0)f(b)s(oards,)d(a.out)j(or)e
-Fo(coff)f Fh(ob)5 b(ject)32 b(format)630 4461 y Fv(Con\014gure)d
-(DejaGn)m(u)j(for)e(an)m(y)g(remote)i(target)g(matc)m(hing)e(`)p
-Fr(m68k-*)p Fv('.)630 4595 y Fn(Warning:)70 b Fv(Most)43
-b(`)p Fr(m68k-*)p Fv(')d(con\014gurations)i(run)e(all)h(tests)i(only)f
-(for)f(nativ)m(e)i(testing)630 4705 y(\(when)c(the)g(target)i(is)e(the)
-g(same)h(as)g(the)f(host\).)68 b(When)39 b(y)m(ou)h(sp)s(ecify)e(most)i
-(of)f(these)630 4814 y(targets)i(for)e(a)h(cross)f(con\014guration,)i
-(y)m(ou)f(will)d(only)h(b)s(e)h(able)g(to)h(use)f(tests)h(that)g(run)
-630 4924 y(completely)25 b(within)e(the)j(host)g(\(for)g(example,)g
-(tests)h(of)f(the)g(binary)d(utilities)g(suc)m(h)j(as)g(the)630
-5033 y(arc)m(hiv)m(er;)31 b(or)f(compiler)f(tests)i(that)g(only)f
-(generate)i(co)s(de)e(rather)g(than)g(running)e(it\).)630
-5168 y(T)-8 b(o)27 b(run)e(a.out)j(or)f Fo(coff)e Fv(binaries)g(on)h(a)
-i(remote)f(M68K,)h(y)m(ou)f(m)m(ust)g(con\014gure)f(DejaGn)m(u)630
-5277 y(for)37 b(a)g(particular)e(target)k(b)s(oard.)59
-b(`)p Fr(m68k-abug)p Fv(')35 b(is)h(an)h(example.)60
-b(\(In)36 b(general)h(for)g(an)p eop
-%%Page: 33 35
-33 34 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h
-(Implemen)m(tation)1847 b(33)630 83 y(em)m(b)s(edded)35
-b(en)m(vironmen)m(t,)i(b)s(ecause)g(it)e(do)s(es)h(not)g(ha)m(v)m(e)i
-(absolute)e(addresses,)h(a.out)g(is)630 193 y(not)25
-b(a)g(go)s(o)s(d)g(c)m(hoice)h(for)f(output)f(format)h(in)f(an)m(y)h
-(case;)j(most)e(often)f(S-records)f(or)h(Hex-32)630 302
-y(are)31 b(used)e(instead.\))150 462 y Fh(Motorola)k(68K)e(MVME)g(135)g
-(b)s(oard)f(running)f(ABug)g(b)s(o)s(ot)h(monitor)630
-571 y Fv(Con\014gure)g(for)h(`)p Fr(m68k-abug-aout)p
-Fv(')c(or)k(`)p Fr(m68k-abug-coff)p Fv(')d(\(as)j(a)h(target\).)44
-b(This)29 b(b)s(o)s(ot)630 681 y(monitor)42 b(can)i(only)e(do)m(wnload)
-h(S-records;)49 b(therefore,)e(the)c(DejaGn)m(u)h(tests)g(for)f(this)
-630 790 y(en)m(vironmen)m(t)34 b(require)f(a)i(link)m(er)e(command)i
-(script)e(to)i(con)m(v)m(ert)h(either)e(output)h(format)630
-900 y(to)c(S-records,)f(setting)h(the)f(default)g(addresses)g(for)g
-Fr(.text)p Fv(,)f Fr(.bss)p Fv(,)g(and)h Fr(.data)p Fv(.)630
-1034 y(With)i(this)f(con\014guration,)i(the)f(default)g(for)g(`)p
-Fr(--connect)p Fv(')e(is)i(`)p Fr(tip)p Fv('.)46 b(`)p
-Fr(tip)p Fv(')32 b(is)f(the)i(only)630 1144 y(comm)m(unications)38
-b(proto)s(col)g(supp)s(orted)f(for)h(connecting)h(to)g(`)p
-Fr(m68k-abug-*)p Fv(')d(targets.)630 1254 y(`)p Fr(tip)p
-Fv(')28 b(uses)h(an)f Fo(asci)r(i)h Fv(do)m(wnloader)f(\(the)h
-Fr(~put)e Fv(command\))i(to)h(load)e(S-records)g(in)m(to)h(the)630
-1363 y(target)39 b(b)s(oard.)59 b(The)37 b(`)p Fr(--name)p
-Fv(')e(string)h(m)m(ust)h(b)s(e)f(a)i(mac)m(hine)e(name)i(that)f
-Fr(tip)f Fv(under-)630 1473 y(stands)g(\(for)h(example,)i(on)e(some)g
-Fr(tip)f Fv(implemen)m(tations)f(it)i(m)m(ust)f(b)s(e)h(an)f(en)m(try)h
-(from)630 1582 y(the)31 b(initialization)c(\014le)i(for)h
-Fr(tip)p Fv(;)g(this)f(\014le)h(is)f(sometimes)i(called)e(`)p
-Fr(/etc/remote)p Fv('\).)630 1717 y(See)d(y)m(our)g(system)g(do)s
-(cumen)m(tation)g(for)g(information)f(on)g(ho)m(w)h(to)h(create)h(new)d
-(en)m(tries)h(in)630 1826 y(`)p Fr(/etc/remote)p Fv('.)50
-b(\(Some)35 b Fo(unix)f Fv(systems)h(are)g(distributed)c(with)i(at)i
-(least)g(one)g(default)630 1936 y(en)m(try)29 b(with)f(a)h(name)g
-(resem)m(bling)e(`)p Fr(hardwire)p Fv(';)h(if)f(y)m(our)i(system)g(has)
-g(one,)g(y)m(ou)g(can)g(edit)630 2046 y(it,)44 b(or)d(mak)m(e)h(a)g(mo)
-s(di\014ed)d(cop)m(y)j(with)e(a)i(new)f(name.\))74 b(When)41
-b(y)m(ou)g(ha)m(v)m(e)i(a)f(w)m(orking)630 2155 y(`)p
-Fr(/etc/remote)p Fv(')30 b(en)m(try)j Fq(abugtarget)p
-Fv(,)h(y)m(ou)f(should)e(b)s(e)g(able)h(to)i(t)m(yp)s(e)e(`)p
-Fr(tip)e Fq(abugtarget)r Fv(',)630 2265 y(and)24 b(get)h(the)g(prompt)f
-(`)p Fr(135ABUG>)p Fv(')e(from)i(the)h(b)s(oard.)38 b(Use)25
-b(the)f(same)h Fq(abugtarget)j Fv(string)630 2374 y(with)h(`)p
-Fr(runtest)g(--name)p Fv('.)150 2534 y Fh(Motorola)k(IDP)d(b)s(oard)f
-(running)g(the)i(rom68k)g(b)s(o)s(ot)g(monitor)630 2643
-y Fv(This)36 b(is)g(the)i(same)g(in)e(functionalit)m(y)g(as)h(the)h
-(MVME)g(b)s(oard)e(running)f(the)j Fr(BUG)e Fv(b)s(o)s(ot)630
-2753 y(monitor.)k(Only)29 b(the)h(monitor)g(commands)g(and)g(the)g
-(addresses)g(are)h(di\013eren)m(t.)150 2912 y Fh(VxW)-8
-b(orks)31 b(\(Motorola)i(68K)e(or)g(In)m(tel)g(960\))630
-3022 y Fv(Con\014gure)k(DejaGn)m(u)h(for)g(either)f(`)p
-Fr(m68k-wrs-vxworks)p Fv(')d(\(abbreviated)k(`)p Fr(vxworks68)p
-Fv('\))630 3132 y(or)21 b(`)p Fr(i960-wrs-vxworks)p Fv(')c
-(\(abbreviated)k(`)p Fr(vxworks960)p Fv('\).)35 b(Since)20
-b(b)s(oth)g(targets)j(supp)s(ort)630 3241 y(IP)42 b(addressing,)i(sp)s
-(ecify)d(the)i(net)m(w)m(ork)h(address)d(\(for)i(example,)i(a)e(host)g
-(name)f(from)630 3351 y(`)p Fr(/etc/hosts)p Fv('\))28
-b(with)i(`)p Fr(--name)p Fv('.)630 3485 y(The)35 b(default)g(connect)h
-(proto)s(col)f(is)g(`)p Fr(rlogin)p Fv(',)h(but)e(y)m(ou)i(can)g(use)f
-(an)m(y)h(of)f(`)p Fr(--connect)630 3595 y(rlogin)p Fv(',)29
-b(`)p Fr(--connect)f(telnet)p Fv(',)h(or)i(`)p Fr(--connect)d(rsh)p
-Fv('.)630 3729 y(T)-8 b(est)42 b(scripts)f(need)g(no)g(sp)s(ecial)g(co)
-s(de)g(to)i(load)e(programs)g(in)m(to)h(these)g(targets;)49
-b(since)630 3839 y(VxW)-8 b(orks)42 b(supp)s(orts)d(NFS,)j(all)e(y)m
-(ou)h(m)m(ust)h(do)f(is)f(ensure)g(test)i(programs)f(are)h(on)f(an)630
-3949 y(exp)s(orted)30 b(\014lesystem.)630 4083 y(When)j(y)m(ou)g
-(compile)f(for)h(VxW)-8 b(orks,)35 b(use)d(the)i(link)m(er)d(`)p
-Fr(-r)p Fv(')i(option)g(to)g(mak)m(e)h(the)g(link)m(er)630
-4193 y(output)25 b(relo)s(catable|at)g(least)h(if)e(y)m(ou)h(w)m(an)m
-(t)h(to)g(use)f(library)d(routines.)38 b(Man)m(y)26 b(standard)630
-4302 y(C)34 b(routines)f(are)i(included)d(in)h(VxW)-8
-b(orks;)37 b(often)e(no)f(additional)f(libraries)e(are)k(needed.)630
-4412 y(See)c(y)m(our)f(VxW)-8 b(orks)31 b(system)g(do)s(cumen)m(tation)
-f(for)g(additional)e(details.)p eop
-%%Page: 34 36
-34 35 bop 150 -116 a Fv(34)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(5.6)68 b(The)45
-b(\014les)g(DejaGn)l(u)g(reads)275 276 y Fv(The)28 b
-Fr(runtest)g Fv(program)h(used)f(to)i(in)m(v)m(ok)m(e)h(DejaGn)m(u)f
-(is)e(a)i(short)f(shell)e(script)i(generated)h(b)m(y)f
-Fr(make)150 385 y Fv(during)h(the)i(con\014guration)f(pro)s(cess.)45
-b(Its)32 b(main)e(task)j(is)e(to)h(read)g(the)g(main)f(test)i(framew)m
-(ork)f(driv)m(er,)150 495 y(`)p Fr(runtest.exp)p Fv('.)275
-629 y(`)p Fr(runtest.exp)p Fv(',)c(in)h(turn,)g(reads)h
-Fr(expect)f Fv(co)s(de)i(from)e(certain)i(other)f(\014les,)g(in)f(this)
-g(order:)199 764 y(1.)61 b(Eac)m(h)31 b(of)f(the)g(`)p
-Fr(site.exp)p Fv(')f(lo)s(cal)g(de\014nition)f(\014les)h(a)m(v)-5
-b(ailable.)40 b(See)31 b(Chapter)e(4)i([Setting)f Fr(runtest)330
-873 y Fv(defaults],)g(page)h(15,)h(for)e(details.)199
-1008 y(2.)61 b(`)p Fr(lib/utils.exp)p Fv(',)23 b(a)i(collection)f(of)h
-(utilit)m(y)d(pro)s(cedures.)38 b(See)25 b(Section)f(5.3)i([DejaGn)m(u)
-f(Builtins],)330 1117 y(page)31 b(23,)h(for)e(descriptions)e(of)j
-(these)f(pro)s(cedures.)199 1252 y(3.)61 b(`)p Fr(lib/framework.exp)p
-Fv(',)37 b(a)j(\014le)e(of)h(subroutines)e(mean)m(t)j(for)f
-Fr(runtest)e Fv(itself)g(rather)i(than)g(for)330 1362
-y(general-purp)s(ose)29 b(use)h(in)f(b)s(oth)h Fr(runtest)e
-Fv(and)i(test)h(suites.)199 1496 y(4.)61 b(`)p Fr(debugger.exp)p
-Fv(',)45 b(Don)g(Lib)s(es')e(Tcl)g(Debugger.)84 b(\(See)45
-b Fq(A)f(Debugger)h(for)f(Tcl)g(Applications)330 1606
-y Fv(b)m(y)38 b(Don)h(Lib)s(es.)63 b(This)37 b(pap)s(er)g(is)g
-(distributed)f(with)h Fr(expect)g Fv(in)g(P)m(ostScript)h(form)g(as)g
-(the)h(\014le)330 1715 y(`)p Fr(expect/tcl-debug.ps)p
-Fv('.\))199 1850 y(5.)61 b(`)p Fr(lib/remote.exp)p Fv(',)20
-b(a)h(collection)f(of)h(subroutines)e(mean)m(t)i(for)g(connecting)g(to)
-g(remote)h(mac)m(hines.)199 1984 y(6.)61 b(`)p Fr(lib/target.exp)p
-Fv(',)41 b(a)g(collection)g(of)g(subroutines)e(used)h(for)h(the)g
-(con\014guration)f(systems)h(in)330 2094 y(DejaGn)m(u.)h(These)30
-b(pro)s(cedures)f(t)m(ypically)g(manipulate)g(or)h(utilize)f(the)h
-(con\014guration)g(system.)199 2228 y(7.)61 b(An)34 b(initialization)e
-(\014le)i Fq(to)s(ol)t Fr(_init.exp)p Fv(.)50 b(See)35
-b(Section)g(5.2)g([Initialization)e(mo)s(dule],)h(page)i(22,)330
-2338 y(for)30 b(more)h(discussion)c(of)k(init)e(\014les.)p
-eop
-%%Page: 35 37
-35 36 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h
-(Implemen)m(tation)1847 b(35)150 83 y Fu(5.7)68 b(The)45
-b(\014les)g(DejaGn)l(u)g(writes)275 276 y Fr(runtest)31
-b Fv(alw)m(a)m(ys)j(writes)e(t)m(w)m(o)j(kinds)c(of)i(output)g
-(\014les:)46 b(summary)32 b(logs)h(and)g(detailed)f(logs.)49
-b(The)150 385 y(con)m(ten)m(ts)32 b(of)f(b)s(oth)e(of)i(these)g(are)f
-(determined)f(b)m(y)i(y)m(our)f(tests.)275 520 y(F)-8
-b(or)37 b(troublesho)s(oting,)g(a)g(third)e(kind)g(of)i(output)g
-(\014le)f(is)g(useful:)52 b(use)36 b(`)p Fr(--debug)p
-Fv(')g(to)h(request)g(an)150 629 y(output)30 b(\014le)f(sho)m(wing)h
-(details)f(of)i(what)f Fr(expect)f Fv(is)g(doing)h(in)m(ternally)-8
-b(.)150 853 y Fi(5.7.1)63 b(Summary)39 b(log)275 1046
-y Fr(runtest)33 b Fv(alw)m(a)m(ys)j(pro)s(duces)e(a)i(summary)f(output)
-g(\014le)g(`)p Fq(to)s(ol)p Fr(.sum)p Fv('.)55 b(This)34
-b(summary)g(sho)m(ws)i(the)150 1156 y(names)f(of)g(all)f(test)i
-(\014les)e(run;)i(for)f(eac)m(h)h(test)g(\014le,)g(one)f(line)f(of)h
-(output)f(from)h(eac)m(h)h Fr(pass)e Fv(command)150 1265
-y(\(sho)m(wing)39 b(status)g(`)p Fr(PASS)p Fv(')g(or)g(`)p
-Fr(XPASS)p Fv('\))f(or)h Fr(fail)f Fv(command)h(\(status)h(`)p
-Fr(FAIL)p Fv(')f(or)g(`)p Fr(XFAIL)p Fv('\);)k(trailing)150
-1375 y(summary)26 b(statistics)g(that)h(coun)m(t)h(passing)d(and)h
-(failing)f(tests)i(\(exp)s(ected)h(and)e(unexp)s(ected\);)i(and)e(the)
-150 1484 y(full)e(pathname)i(and)f(v)m(ersion)h(n)m(um)m(b)s(er)f(of)h
-(the)g(to)s(ol)g(tested.)41 b(\(All)25 b(p)s(ossible)e(outcomes,)29
-b(and)c(all)g(errors,)150 1594 y(are)36 b(alw)m(a)m(ys)g(re\015ected)g
-(in)f(the)h(summary)e(output)h(\014le,)i(regardless)e(of)h(whether)f
-(or)g(not)h(y)m(ou)g(sp)s(ecify)150 1704 y(`)p Fr(--all)p
-Fv('.\))275 1838 y(If)k(an)m(y)g(of)h(y)m(our)f(tests)i(use)e(the)g
-(pro)s(cedures)g Fr(unresolved)p Fv(,)g Fr(unsupported)p
-Fv(,)g(or)h Fr(untested)p Fv(,)g(the)150 1948 y(summary)29
-b(output)h(also)h(tabulates)f(the)h(corresp)s(onding)d(outcomes.)275
-2082 y(F)-8 b(or)21 b(example,)h(after)f(`)p Fr(runtest)28
-b(--tool)h(binutils)p Fv(',)20 b(lo)s(ok)g(for)g(a)h(summary)e(log)h
-(in)f(`)p Fr(binutils.sum)p Fv('.)150 2192 y(Normally)-8
-b(,)39 b Fr(runtest)d Fv(writes)h(this)g(\014le)g(in)f(y)m(our)i
-(curren)m(t)g(w)m(orking)f(directory;)k(use)d(the)g(`)p
-Fr(--outdir)p Fv(')150 2301 y(option)30 b(to)h(select)g(a)g(di\013eren)
-m(t)f(directory)-8 b(.)150 2416 y(Here)31 b(is)e(a)i(short)f(sample)g
-(summary)f(log:)150 2495 y Fm(\013)p 200 2495 3554 4
-v 3553 w(\010)p 150 4457 4 1915 v 178 2648 a Fr(Test)47
-b(Run)g(By)g(rob)g(on)g(Mon)g(May)g(25)g(21:40:57)f(PDT)g(1992)942
-2752 y(===)h(gdb)g(tests)f(===)178 2856 y(Running)g(./gdb.t00/echo.exp)
-d(...)178 2959 y(PASS:)142 b(Echo)47 b(test)178 3063
-y(Running)f(./gdb.all/help.exp)d(...)178 3167 y(PASS:)142
-b(help)47 b(add-symbol-file)178 3271 y(PASS:)142 b(help)47
-b(aliases)178 3374 y(PASS:)142 b(help)47 b(breakpoint)e("bre")h
-(abbreviation)178 3478 y(FAIL:)142 b(help)47 b(run)g("r")f
-(abbreviation)178 3582 y(Running)g(./gdb.t10/crossload.exp)41
-b(...)178 3686 y(PASS:)142 b(m68k-elf)46 b(\(elf-big\))f(explicit)g
-(format;)h(loaded)178 3790 y(XFAIL:)94 b(mips-ecoff)45
-b(\(ecoff-bigmips\))f("ptype)i(v_signed_char")e(signed)178
-3893 y(C)k(types)942 3997 y(===)f(gdb)g(Summary)e(===)178
-4101 y(#)j(of)f(expected)e(passes)h(5)178 4205 y(#)i(of)f(expected)e
-(failures)h(1)178 4308 y(#)i(of)f(unexpected)e(failures)g(1)178
-4412 y(/usr/latest/bin/gdb)e(version)j(4.6.5)g(-q)p 3803
-4457 V 150 4509 a Fm(\012)p 200 4509 3554 4 v 3553 w(\011)p
-eop
-%%Page: 36 38
-36 37 bop 150 -116 a Fv(36)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fi(5.7.2)63
-b(Detailed)40 b(log)275 270 y Fr(runtest)28 b Fv(also)h(sa)m(v)m(es)j
-(a)e(detailed)f(log)h(\014le)g(`)p Fq(to)s(ol)p Fr(.log)p
-Fv(',)f(sho)m(wing)g(an)m(y)i(output)e(generated)i(b)m(y)f(tests)150
-380 y(as)g(w)m(ell)f(as)h(the)g(summary)f(output.)40
-b(F)-8 b(or)31 b(example,)f(after)h(`)p Fr(runtest)d(--tool)h(binutils)
-p Fv(',)f(lo)s(ok)i(for)g(a)150 489 y(detailed)f(log)i(in)e(`)p
-Fr(binutils.log)p Fv('.)37 b(Normally)-8 b(,)30 b Fr(runtest)f
-Fv(writes)g(this)g(\014le)g(in)g(y)m(our)i(curren)m(t)f(w)m(orking)150
-599 y(directory;)g(use)g(the)h(`)p Fr(--outdir)p Fv(')d(option)i(to)h
-(select)g(a)g(di\013eren)m(t)f(directory)-8 b(.)150 708
-y(Here)31 b(is)e(a)i(brief)e(example)h(sho)m(wing)f(a)i(detailed)f(log)
-g(for)g Fo(g)p Fr(++)g Fv(tests:)150 787 y Fm(\013)p
-200 787 3554 4 v 3553 w(\010)p 150 4306 4 3472 v 178
-940 a Fr(Test)47 b(Run)g(By)g(rob)g(on)g(Mon)g(May)g(25)g(21:40:43)f
-(PDT)g(1992)942 1148 y(===)h(g++)g(tests)f(===)178 1355
-y(---)h(Running)f(./g++.other/t01-1.exp)c(---)560 1459
-y(PASS:)142 b(operate)46 b(delete)178 1667 y(---)h(Running)f
-(./g++.other/t01-2.exp)c(---)560 1770 y(FAIL:)142 b(i960)46
-b(bug)h(EOF)178 1874 y(p0000646.C:)e(In)i(function)f(`int)94
-b(warn_return_1)44 b(\(\)':)178 1978 y(p0000646.C:109:)g(warning:)h
-(control)h(reaches)g(end)h(of)g(non-void)f(function)178
-2082 y(p0000646.C:)f(In)i(function)f(`int)94 b(warn_return_arg)44
-b(\(int\)':)178 2186 y(p0000646.C:117:)g(warning:)h(control)h(reaches)g
-(end)h(of)g(non-void)f(function)178 2289 y(p0000646.C:)f(In)i(function)
-f(`int)94 b(warn_return_sum)44 b(\(int,)i(int\)':)178
-2393 y(p0000646.C:125:)e(warning:)h(control)h(reaches)g(end)h(of)g
-(non-void)f(function)178 2497 y(p0000646.C:)f(In)i(function)f(`struct)f
-(foo)i(warn_return_foo)d(\(\)':)178 2601 y(p0000646.C:132:)g(warning:)h
-(control)h(reaches)g(end)h(of)g(non-void)f(function)178
-2808 y(---)h(Running)f(./g++.other/t01-4.exp)c(---)560
-2912 y(FAIL:)142 b(abort)178 3016 y(900403_04.C:8:)44
-b(zero)j(width)f(for)h(bit-field)e(`foo')178 3120 y(---)i(Running)f
-(./g++.other/t01-3.exp)c(---)560 3223 y(FAIL:)142 b(segment)46
-b(violation)178 3327 y(900519_12.C:9:)e(parse)i(error)h(before)f(`;')
-178 3431 y(900519_12.C:12:)e(Segmentation)g(violation)178
-3535 y(/usr/latest/bin/gcc:)e(Internal)k(compiler)g(error:)g(program)f
-(cc1plus)h(got)178 3638 y(fatal)h(signal)942 3846 y(===)g(g++)g
-(Summary)e(===)178 4054 y(#)j(of)f(expected)e(passes)h(1)178
-4157 y(#)i(of)f(expected)e(failures)h(3)178 4261 y(/usr/ps/bin/g++)e
-(version)i(cygnus-2.0.1)p 3803 4306 V 150 4358 a Fm(\012)p
-200 4358 3554 4 v 3553 w(\011)150 4566 y Fi(5.7.3)63
-b(Logging)42 b Fg(expect)g Fi(in)m(ternal)e(actions)275
-4753 y Fv(With)32 b(the)h(`)p Fr(--debug)p Fv(')e(option,)i(y)m(ou)h
-(can)f(request)g(a)g(log)g(\014le)f(sho)m(wing)g(the)h(output)f(from)h
-Fr(expect)150 4863 y Fv(itself,)k(running)d(in)h(debugging)g(mo)s(de.)
-59 b(This)34 b(\014le)i(\(`)p Fr(dbg.log)p Fv(',)h(in)e(the)i
-(directory)f(where)g(y)m(ou)g(start)150 4972 y Fr(runtest)p
-Fv(\))29 b(sho)m(ws)h(eac)m(h)h(pattern)g Fr(expect)e
-Fv(considers)g(in)g(analyzing)g(test)j(output.)275 5101
-y(This)26 b(\014le)h(re\015ects)h(eac)m(h)h Fr(send)e
-Fv(command,)h(sho)m(wing)f(the)h(string)f(sen)m(t)h(as)g(input)e(to)j
-(the)f(to)s(ol)f(under)150 5211 y(test;)32 b(and)d(eac)m(h)j
-Fr(expect)d Fv(command,)h(sho)m(wing)f(eac)m(h)j(pattern)e(it)g
-(compares)h(with)e(the)i(to)s(ol)f(output.)275 5340 y(The)f(log)i
-(messages)g(for)f Fr(expect)f Fv(b)s(egin)g(with)g(a)i(message)g(of)g
-(the)f(form)p eop
-%%Page: 37 39
-37 38 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h
-(Implemen)m(tation)1847 b(37)390 83 y Fr(expect:)46 b(does)g({)p
-Fq(to)s(ol)31 b(output)r Fr(})47 b(\(spawn_id)e Fq(n)p
-Fr(\))i(match)f(pattern)390 187 y({)p Fq(exp)s(ected)31
-b(pattern)p Fr(}?)150 321 y Fv(F)-8 b(or)30 b(ev)m(ery)h(unsuccessful)c
-(matc)m(h,)k Fr(expect)d Fv(issues)h(a)h(`)p Fr(no)p
-Fv(')f(after)h(this)f(message;)i(if)e(other)h(patterns)g(are)150
-431 y(sp)s(eci\014ed)f(for)i(the)g(same)h Fr(expect)d
-Fv(command,)i(they)h(are)f(re\015ected)h(also,)f(but)f(without)h(the)g
-(\014rst)f(part)150 540 y(of)h(the)f(message)i(\(`)p
-Fr(expect...)n(match)d(pattern)p Fv('\).)275 675 y(When)j
-Fr(expect)e Fv(\014nds)h(a)i(matc)m(h,)g(the)g(log)f(for)g(the)h
-(successful)e(matc)m(h)i(ends)f(with)f(`)p Fr(yes)p Fv(',)h(follo)m(w)m
-(ed)150 785 y(b)m(y)g(a)h(record)g(of)f(the)h Fr(expect)e
-Fv(v)-5 b(ariables)31 b(set)i(to)g(describ)s(e)e(a)i(successful)e(matc)
-m(h.)48 b(Here)33 b(is)f(an)g(excerpt)150 894 y(from)e(the)g(debugging)
-g(log)g(for)g(a)h Fo(gdb)f Fv(test:)150 973 y Fm(\013)p
-200 973 3554 4 v 3553 w(\010)p 150 3669 4 2649 v 178
-1134 a Fr(send:)47 b(sent)f({break)g(gdbme.c:34\\n})e(to)k(spawn)e(id)h
-(6)178 1237 y(expect:)f(does)h({})g(\(spawn_id)e(6\))i(match)g(pattern)
-e({Breakpoint.*at.*)f(file)226 1341 y(gdbme.c,)h(line)i
-(34.*\\\(gdb\\\))e($}?)i(no)178 1445 y({.*\\\(gdb\\\))e($}?)i(no)178
-1549 y(expect:)f(does)h({})g(\(spawn_id)e(0\))i(match)g(pattern)e
-({<return>}?)g(no)178 1652 y({\\\(y)i(or)g(n\\\))g(}?)g(no)178
-1756 y({buffer_full}?)d(no)178 1860 y({virtual}?)h(no)178
-1964 y({memory}?)g(no)178 2068 y({exhausted}?)g(no)178
-2171 y({Undefined}?)g(no)178 2275 y({command}?)g(no)178
-2379 y(break)i(gdbme.c:34)178 2483 y(Breakpoint)e(8)j(at)f(0x23d8:)f
-(file)g(gdbme.c,)g(line)g(34.)178 2586 y(\(gdb\))h(expect:)e(does)i
-({break)f(gdbme.c:34\\r\\nBreakpoint)41 b(8)48 b(at)f(0x23d8:)178
-2690 y(file)g(gdbme.c,)e(line)i(34.\\r\\n\(gdb\))d(})k(\(spawn_id)d
-(6\))i(match)g(pattern)178 2794 y({Breakpoint.*at.*)c(file)k(gdbme.c,)e
-(line)i(34.*\\\(gdb\\\))e($}?)i(yes)178 2898 y(expect:)f(set)h
-(expect_out\(0,start\))42 b({18})178 3002 y(expect:)k(set)h
-(expect_out\(0,end\))c({71})178 3105 y(expect:)j(set)h
-(expect_out\(0,string\))42 b({Breakpoint)j(8)i(at)h(0x23d8:)d(file)178
-3209 y(gdbme.c,)h(line)g(34.\\r\\n\(gdb\))f(})178 3313
-y(expect:)h(set)h(expect_out\(spawn_id\))42 b({6})178
-3417 y(expect:)k(set)h(expect_out\(buffer\))c({break)j
-(gdbme.c:34\\r\\nBreakpoint)41 b(8)178 3520 y(at)47 b(0x23d8:)f(file)h
-(gdbme.c,)e(line)i(34.\\r\\n\(gdb\))d(})560 3624 y(PASS:)142
-b(70)286 b(0)333 b(breakpoint)45 b(line)i(number)f(in)h(file)p
-3803 3669 V 150 3721 a Fm(\012)p 200 3721 3554 4 v 3553
-w(\011)150 3866 y Fv(This)26 b(example)i(exhibits)f(three)h(prop)s
-(erties)f(of)h Fr(expect)f Fv(and)g(DejaGn)m(u)i(that)g(migh)m(t)f(b)s
-(e)g(surprising)c(at)150 3976 y(\014rst)30 b(glance:)225
-4110 y Ft(\017)60 b Fv(Empt)m(y)25 b(output)f(for)h(the)g(\014rst)f
-(attempted)i(matc)m(h.)40 b(The)25 b(\014rst)f(set)h(of)g(attempted)h
-(matc)m(hes)h(sho)m(wn)330 4220 y(ran)34 b(against)g(the)h(output)f(`)p
-Fr({})p Fv('|that)h(is,)f(no)h(output.)52 b Fr(expect)33
-b Fv(b)s(egins)f(attempting)j(to)g(matc)m(h)330 4329
-y(the)i(patterns)f(supplied)e(immediately;)k(often,)g(the)f(\014rst)f
-(pass)g(is)g(against)h(incomplete)e(output)330 4439 y(\(or)c
-(completely)f(b)s(efore)g(all)f(output,)h(as)h(in)e(this)g(case\).)225
-4573 y Ft(\017)60 b Fv(In)m(tersp)s(ersed)39 b(to)s(ol)i(output.)71
-b(The)40 b(b)s(eginning)d(of)k(the)g(log)g(en)m(try)f(for)h(the)f
-(second)h(attempted)330 4683 y(matc)m(h)32 b(ma)m(y)g(b)s(e)e(hard)h
-(to)h(sp)s(ot:)42 b(this)30 b(is)g(b)s(ecause)h(the)h(prompt)e(`)p
-Fr(\(gdb\))f Fv(')j(app)s(ears)e(on)h(the)h(same)330
-4793 y(line,)d(just)h(b)s(efore)g(the)g(`)p Fr(expect:)p
-Fv(')f(that)i(marks)f(the)h(b)s(eginning)c(of)k(the)f(log)h(en)m(try)-8
-b(.)225 4927 y Ft(\017)60 b Fv(F)-8 b(ail-safe)32 b(patterns.)43
-b(Man)m(y)32 b(of)f(the)h(patterns)f(tested)h(are)f(fail-safe)g
-(patterns)g(pro)m(vided)f(b)m(y)h Fo(gdb)330 5037 y Fv(testing)43
-b(utilities,)h(to)f(reduce)g(p)s(ossible)e(indeterminacy)-8
-b(.)77 b(It)43 b(is)f(useful)f(to)j(an)m(ticipate)f(p)s(oten-)330
-5146 y(tial)g(v)-5 b(ariations)44 b(caused)g(b)m(y)g(extreme)h(system)f
-(conditions)f(\()p Fo(gdb)h Fv(migh)m(t)g(issue)e(the)j(message)p
-eop
-%%Page: 38 40
-38 39 bop 150 -116 a Fv(38)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)330 83 y(`)p Fr(virtual)29
-b(memory)f(exhausted)p Fv(')j(in)h(rare)g(circumstances\),)i(or)f(b)m
-(y)g(c)m(hanges)h(in)d(the)i(tested)h(pro-)330 193 y(gram)f(\(`)p
-Fr(Undefined)28 b(command)p Fv(')j(is)g(the)h(lik)m(eliest)f(outcome)j
-(if)d(the)h(name)h(of)f(a)h(tested)g(command)330 302
-y(c)m(hanges\).)330 437 y(The)f(pattern)g(`)p Fr({<return>})p
-Fv(')f(is)g(a)i(particularly)d(in)m(teresting)h(fail-safe)h(to)h
-(notice;)h(it)e(c)m(hec)m(ks)i(for)330 546 y(an)k(unexp)s(ected)952
-543 y Fk(h)p 976 490 151 4 v 976 546 a Fj(RET)p 976 562
-V 1123 543 a Fk(i)1191 546 y Fv(prompt.)64 b(This)37
-b(ma)m(y)i(happ)s(en,)g(for)f(example,)i(if)d(the)i(tested)g(to)s(ol)g
-(can)330 656 y(\014lter)29 b(output)h(through)g(a)h(pager.)330
-790 y(These)e(fail-safe)f(patterns)h(\(lik)m(e)g(the)g(debugging)f(log)
-h(itself)7 b(\))28 b(are)h(primarily)d(useful)h(while)g(dev)m(el-)330
-900 y(oping)32 b(test)h(scripts.)46 b(Use)33 b(the)g
-Fr(error)e Fv(pro)s(cedure)g(to)j(mak)m(e)f(the)g(actions)g(for)f
-(fail-safe)g(patterns)330 1010 y(pro)s(duce)i(messages)j(starting)e
-(with)g(`)p Fr(ERROR)p Fv(')f(on)i(the)f Fr(runtest)f
-Fv(standard)h(output,)i(and)d(in)h(the)330 1119 y(detailed)29
-b(log)i(\014le.)p eop
-%%Page: 39 41
-39 40 bop 150 -116 a Fv(Chapter)30 b(6:)41 b(Ho)m(w)31
-b(T)-8 b(o)31 b(W)-8 b(rite)31 b(a)f(T)-8 b(est)31 b(Case)1988
-b(39)150 100 y Fs(6)80 b(Ho)l(w)53 b(T)-13 b(o)53 b(W)-13
-b(rite)54 b(a)g(T)-13 b(est)53 b(Case)150 457 y Fu(6.1)68
-b(W)-11 b(riting)46 b(a)f(test)h(case)275 649 y Fv(The)30
-b(easiest)h(w)m(a)m(y)h(to)f(prepare)g(a)g(new)f(test)i(case)g(is)e(to)
-h(base)g(it)f(on)h(an)g(existing)f(one)h(for)f(a)i(similar)150
-759 y(situation.)63 b(There)38 b(are)g(t)m(w)m(o)i(ma)5
-b(jor)38 b(categories)i(of)e(tests:)57 b(batc)m(h)39
-b(or)f(in)m(teractiv)m(e.)65 b(Batc)m(h)40 b(orien)m(ted)150
-868 y(tests)31 b(are)g(usually)d(easier)i(to)h(write.)275
-1003 y(The)22 b Fo(gcc)h Fv(tests)h(are)f(a)h(go)s(o)s(d)f(example)g
-(of)g(batc)m(h)h(orien)m(ted)f(tests.)39 b(All)22 b Fo(gcc)h
-Fv(tests)h(consist)e(primarily)150 1112 y(of)35 b(a)h(call)f(to)h(a)g
-(single)e(common)h(pro)s(cedure,)h(since)f(all)f(the)h(tests)h(either)f
-(ha)m(v)m(e)i(no)e(output,)h(or)g(only)150 1222 y(ha)m(v)m(e)k(a)g(few)
-f(w)m(arning)f(messages)i(when)e(successfully)g(compiled.)65
-b(An)m(y)40 b(non-w)m(arning)d(output)i(is)g(a)150 1332
-y(test)31 b(failure.)39 b(All)29 b(the)h(C)g(co)s(de)h(needed)e(is)h(k)
-m(ept)h(in)e(the)h(test)h(directory)-8 b(.)41 b(The)30
-b(test)h(driv)m(er,)e(written)g(in)150 1441 y Fr(expect)p
-Fv(,)d(need)h(only)f(get)i(a)f(listing)e(of)i(all)e(the)i(C)g(\014les)f
-(in)f(the)i(directory)-8 b(,)28 b(and)e(compile)g(them)h(all)e(using)
-150 1551 y(a)j(generic)g(pro)s(cedure.)39 b(This)26 b(pro)s(cedure)h
-(and)h(a)g(few)g(others)g(supp)s(orting)d(for)j(these)g(tests)h(are)g
-(k)m(ept)f(in)150 1660 y(the)i(library)d(mo)s(dule)h(`)p
-Fr(lib/c-torture.exp)p Fv(')d(in)k(the)h Fo(gcc)f Fv(test)h(suite.)40
-b(Most)31 b(tests)f(of)g(this)e(kind)g(use)150 1770 y(v)m(ery)j(few)f
-Fr(expect)f Fv(features,)h(and)g(are)h(co)s(ded)f(almost)h(purely)d(in)
-h(Tcl.)150 1905 y(W)-8 b(riting)30 b(the)g(complete)h(suite)f(of)g(C)g
-(tests,)i(then,)e(consisted)g(of)g(these)h(steps:)199
-2039 y(1.)61 b(Cop)m(ying)26 b(all)f(the)i(C)f(co)s(de)g(in)m(to)h(the)
-g(test)g(directory)-8 b(.)39 b(These)26 b(tests)i(w)m(ere)f(based)f(on)
-g(the)h(C-torture)330 2149 y(test)e(created)g(b)m(y)f(T)-8
-b(orb)5 b(jorn)23 b(Granlund)f(\(on)i(b)s(ehalf)e(of)j(the)f(F)-8
-b(ree)25 b(Soft)m(w)m(are)g(F)-8 b(oundation\))24 b(for)g
-Fo(gcc)330 2258 y Fv(dev)m(elopmen)m(t.)199 2393 y(2.)61
-b(W)-8 b(riting)30 b(\(and)g(debugging\))f(the)i(generic)f
-Fr(expect)f Fv(pro)s(cedures)g(for)h(compilation.)199
-2527 y(3.)61 b(W)-8 b(riting)32 b(the)h(simple)e(test)i(driv)m(er:)45
-b(its)32 b(main)g(task)h(is)f(to)h(searc)m(h)h(the)f(directory)f
-(\(using)g(the)h(Tcl)330 2637 y(pro)s(cedure)f Fr(glob)f
-Fv(for)i(\014lename)f(expansion)g(with)f(wildcards\))g(and)h(call)g(a)h
-(Tcl)g(pro)s(cedure)e(with)330 2746 y(eac)m(h)h(\014lename.)39
-b(It)31 b(also)f(c)m(hec)m(ks)i(for)e(a)h(few)f(errors)g(from)g(the)g
-(testing)h(pro)s(cedure.)275 2906 y(T)-8 b(esting)37
-b(in)m(teractiv)m(e)h(programs)g(is)e(in)m(trinsically)e(more)k
-(complex.)62 b(T)-8 b(ests)38 b(for)f(most)h(in)m(teractiv)m(e)150
-3015 y(programs)30 b(require)f(some)i(trial)e(and)h(error)g(b)s(efore)g
-(they)g(are)h(complete.)275 3150 y(Ho)m(w)m(ev)m(er,)44
-b(some)d(in)m(teractiv)m(e)f(programs)g(can)g(b)s(e)g(tested)g(in)f(a)h
-(simple)e(fashion)h(reminiscen)m(t)g(of)150 3259 y(batc)m(h)c(tests.)54
-b(F)-8 b(or)36 b(example,)f(prior)e(to)i(the)g(creation)g(of)g(DejaGn)m
-(u,)h(the)f Fo(gdb)f Fv(distribution)d(already)150 3369
-y(included)j(a)k(wide-ranging)d(testing)j(pro)s(cedure.)59
-b(This)36 b(pro)s(cedure)g(w)m(as)h(v)m(ery)h(robust,)g(and)e(had)h
-(al-)150 3479 y(ready)29 b(undergone)f(m)m(uc)m(h)g(more)h(debugging)f
-(and)g(error)g(c)m(hec)m(king)i(than)e(man)m(y)h(recen)m(t)h(DejaGn)m
-(u)f(test)150 3588 y(cases.)64 b(Accordingly)-8 b(,)39
-b(the)e(b)s(est)h(approac)m(h)g(w)m(as)g(simply)d(to)j(encapsulate)g
-(the)g(existing)f Fo(gdb)g Fv(tests,)150 3698 y(for)32
-b(rep)s(orting)f(purp)s(oses.)45 b(Thereafter,)33 b(new)f
-Fo(gdb)g Fv(tests)h(built)d(up)i(a)g(family)f(of)i Fr(expect)d
-Fv(pro)s(cedures)150 3807 y(sp)s(ecialized)f(for)h Fo(gdb)g
-Fv(testing.)275 3942 y(`)p Fr(gdb.t10/crossload.exp)p
-Fv(')25 b(is)k(a)i(go)s(o)s(d)f(example)g(of)h(an)f(in)m(teractiv)m(e)h
-(test.)p eop
-%%Page: 40 42
-40 41 bop 150 -116 a Fv(40)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(6.2)68 b(Debugging)46
-b(a)f(test)h(case)150 276 y Fv(These)30 b(are)h(the)f(kinds)f(of)h
-(debugging)g(information)e(a)m(v)-5 b(ailable)30 b(from)g(DejaGn)m(u:)
-199 410 y(1.)61 b(Output)29 b(con)m(trolled)h(b)m(y)g(test)h(scripts)e
-(themselv)m(es,)h(explicitly)e(allo)m(w)m(ed)i(for)g(b)m(y)g(the)g
-(test)h(author.)330 520 y(This)21 b(kind)g(of)j(debugging)d(output)i
-(app)s(ears)f(in)g(the)h(detailed)f(output)h(recorded)g(in)e(the)j(`)p
-Fq(to)s(ol)p Fr(.log)p Fv(')330 629 y(\014le.)41 b(T)-8
-b(o)31 b(do)g(the)f(same)i(for)e(new)g(tests,)i(use)e(the)h
-Fr(verbose)e Fv(pro)s(cedure)h(\(whic)m(h)f(in)h(turn)f(uses)i(the)330
-739 y(v)-5 b(ariable)29 b(also)h(called)f Fr(verbose)p
-Fv(\))f(to)j(con)m(trol)g(ho)m(w)f(m)m(uc)m(h)g(output)f(to)i
-(generate.)42 b(This)29 b(will)e(mak)m(e)330 848 y(it)i(easier)h(for)g
-(other)g(p)s(eople)f(running)e(the)j(test)h(to)g(debug)e(it)g(if)g
-(necessary)-8 b(.)42 b(Whenev)m(er)30 b(p)s(ossible,)330
-958 y(if)h(`)p Fr($verbose)p Fv(')g(is)g Fr(0)p Fv(,)h(there)h(should)d
-(b)s(e)i(no)g(output)g(other)g(than)g(the)h(output)e(from)h
-Fr(pass)p Fv(,)g Fr(fail)p Fv(,)330 1068 y Fr(error)p
-Fv(,)h(and)f Fr(warning)p Fv(.)47 b(Then,)33 b(to)h(whatev)m(er)g
-(exten)m(t)g(is)e(appropriate)g(for)h(the)g(particular)f(test,)330
-1177 y(allo)m(w)h(successiv)m(ely)f(higher)g(v)-5 b(alues)33
-b(of)g(`)p Fr($verbose)p Fv(')e(to)j(generate)h(more)e(information.)48
-b(Be)34 b(kind)330 1287 y(to)d(other)g(programmers)f(who)f(use)h(y)m
-(our)h(tests:)41 b(pro)m(vide)30 b(for)g(a)h(lot)f(of)h(debugging)e
-(information.)199 1421 y(2.)61 b(Output)26 b(from)g(the)h(in)m(ternal)e
-(debugging)h(functions)f(of)i(Tcl)f(and)g Fr(expect)p
-Fv(.)38 b(There)26 b(is)g(a)h(command)330 1531 y(line)h(options)i(for)g
-(eac)m(h;)h(b)s(oth)e(forms)h(of)g(debugging)f(output)h(are)g(recorded)
-g(in)f(the)h(\014le)f Fr(dbg.log)330 1641 y Fv(in)g(the)i(curren)m(t)f
-(directory)-8 b(.)330 1775 y(Use)23 b(`)p Fr(--debug)p
-Fv(')d(for)i(information)f(from)h(the)g Fr(expect)e Fv(lev)m(el;)25
-b(it)d(generates)i(displa)m(ys)c(of)i(the)h Fr(expect)330
-1885 y Fv(attempts)i(to)g(matc)m(h)h(the)e(to)s(ol)g(output)g(with)f
-(the)i(patterns)f(sp)s(eci\014ed)f(\(see)i(Section)f(5.7.3)i([Debug)330
-1994 y(Log],)34 b(page)f(36\).)47 b(This)30 b(output)i(can)g(b)s(e)g(v)
-m(ery)h(helpful)c(while)h(dev)m(eloping)h(test)i(scripts,)f(since)f(it)
-330 2104 y(sho)m(ws)e(precisely)f(the)i(c)m(haracters)h(receiv)m(ed.)41
-b(Iterating)29 b(b)s(et)m(w)m(een)h(the)g(latest)g(attempt)g(at)h(a)e
-(new)330 2213 y(test)k(script)d(and)h(the)h(corresp)s(onding)e(`)p
-Fr(dbg.log)p Fv(')g(can)i(allo)m(w)f(y)m(ou)h(to)h(create)g(the)f
-(\014nal)e(patterns)330 2323 y(b)m(y)g(\\cut)h(and)f(paste".)42
-b(This)28 b(is)i(sometimes)g(the)h(b)s(est)f(w)m(a)m(y)h(to)g(write)f
-(a)g(test)i(case.)330 2457 y(Use)45 b(`)p Fr(--strace)p
-Fv(')d(to)j(see)g(more)f(detail)g(at)h(the)f(Tcl)g(lev)m(el;)51
-b(this)43 b(sho)m(ws)h(ho)m(w)h(Tcl)e(pro)s(cedure)330
-2567 y(de\014nitions)f(expand,)47 b(as)d(they)g(execute.)84
-b(The)43 b(asso)s(ciated)i(n)m(um)m(b)s(er)e(con)m(trols)h(the)g(depth)
-g(of)330 2677 y(de\014nitions)20 b(expanded;)25 b(see)e(the)g
-(discussion)d(of)j(`)p Fr(--strace)p Fv(')d(in)i(Chapter)g(3)h
-([Running)d(the)j(T)-8 b(ests],)330 2786 y(page)31 b(9.)199
-2921 y(3.)61 b(Finally)-8 b(,)24 b(if)e(the)i(v)-5 b(alue)23
-b(of)h(`)p Fr(verbose)p Fv(')e(is)h(3)h(or)f(greater,)k
-Fr(runtest)22 b Fv(turns)g(on)h(the)h Fr(expect)e Fv(command)330
-3030 y Fr(log_user)p Fv(.)38 b(This)26 b(command)h(prin)m(ts)f(all)h
-Fr(expect)f Fv(actions)i(to)g(the)g Fr(expect)e Fv(standard)h(output,)h
-(to)330 3140 y(the)j(detailed)e(log)h(\014le,)g(and)g(\(if)g(`)p
-Fr(--debug)p Fv(')f(is)g(on\))i(to)g(`)p Fr(dbg.log)p
-Fv('.)150 3397 y Fu(6.3)68 b(Adding)44 b(a)h(test)h(case)g(to)f(a)g
-(test)h(suite)275 3590 y Fv(There)32 b(are)h(t)m(w)m(o)h(sligh)m(tly)c
-(di\013eren)m(t)j(w)m(a)m(ys)g(to)g(add)f(a)h(test)h(case.)48
-b(One)32 b(is)g(to)h(add)f(the)h(test)h(case)f(to)150
-3699 y(an)27 b(existing)f(directory)-8 b(.)40 b(The)26
-b(other)i(is)e(to)i(create)g(a)g(new)e(directory)h(to)h(hold)e(y)m(our)
-h(test.)40 b(The)27 b(existing)150 3809 y(test)g(directories)e
-(represen)m(t)h(sev)m(eral)g(st)m(yles)g(of)g(testing,)i(all)d(of)h
-(whic)m(h)e(are)j(sligh)m(tly)d(di\013eren)m(t;)j(examine)150
-3919 y(the)k(directories)e(for)h(the)h(to)s(ol)f(of)h(in)m(terest)f(to)
-h(see)g(whic)m(h)e(\(if)h(an)m(y\))h(is)e(most)i(suitable.)275
-4053 y(Adding)f(a)i Fo(gcc)f Fv(test)i(can)e(b)s(e)h(v)m(ery)g(simple:)
-41 b(just)31 b(add)g(the)h(C)f(co)s(de)h(to)g(an)m(y)g(directory)g(b)s
-(eginning)150 4163 y(with)d(`)p Fr(gcc.)p Fv(')h(and)g(it)f(runs)g(on)i
-(the)f(next)h(`)p Fr(runtest)d(--tool)h(gcc)p Fv('.)275
-4297 y(T)-8 b(o)26 b(add)g(a)h(test)g(to)g Fo(gdb)p Fv(,)g(\014rst)f
-(add)g(an)m(y)g(source)h(co)s(de)f(y)m(ou)h(will)d(need)i(to)h(the)f
-(test)i(directory)-8 b(.)39 b(Then)150 4407 y(y)m(ou)29
-b(can)g(either)f(create)i(a)f(new)f Fr(expect)f Fv(\014le,)h(or)g(add)g
-(y)m(our)h(test)g(to)h(an)e(existing)g(one)g(\(an)m(y)i(\014le)d(with)h
-(a)150 4516 y(`)p Fr(.exp)p Fv(')g(su\016x\).)39 b(Creating)28
-b(a)g(new)g(`)p Fr(.exp)p Fv(')g(\014le)f(is)g(probably)g(a)i(b)s
-(etter)f(idea)g(if)f(the)h(test)h(is)f(signi\014can)m(tly)150
-4626 y(di\013eren)m(t)36 b(from)f(existing)g(tests.)59
-b(Adding)34 b(it)i(as)g(a)g(separate)h(\014le)f(also)g(mak)m(es)g
-(upgrading)f(easier.)57 b(If)150 4736 y(the)33 b(C)g(co)s(de)h(has)f
-(to)h(b)s(e)e(already)h(compiled)f(b)s(efore)h(the)g(test)i(will)30
-b(run,)j(then)g(y)m(ou'll)f(ha)m(v)m(e)j(to)f(add)e(it)150
-4845 y(to)f(the)g(`)p Fr(Makefile.in)p Fv(')c(\014le)j(for)g(that)h
-(test)g(directory)-8 b(,)31 b(then)f(run)f Fr(configure)f
-Fv(and)h Fr(make)p Fv(.)275 4980 y(Adding)f(a)j(test)g(b)m(y)g
-(creating)f(a)h(new)f(directory)g(is)f(v)m(ery)i(similar:)199
-5114 y(1.)61 b(Create)34 b(the)f(new)f(directory)-8 b(.)48
-b(All)31 b(sub)s(directory)g(names)i(b)s(egin)e(with)h(the)h(name)f(of)
-h(the)g(to)s(ol)g(to)330 5224 y(test;)f(e.g.)43 b Fo(g)p
-Fr(++)31 b Fv(tests)h(migh)m(t)e(b)s(e)g(in)g(a)h(directory)f(called)g
-(`)p Fr(g++.other)p Fv('.)41 b(There)30 b(can)h(b)s(e)f(m)m(ultiple)330
-5333 y(test)h(directories)f(that)h(start)g(with)e(the)h(same)h(to)s(ol)
-f(name)h(\(suc)m(h)f(as)h(`)p Fr(g++)p Fv('\).)p eop
-%%Page: 41 43
-41 42 bop 150 -116 a Fv(Chapter)30 b(6:)41 b(Ho)m(w)31
-b(T)-8 b(o)31 b(W)-8 b(rite)31 b(a)f(T)-8 b(est)31 b(Case)1988
-b(41)199 83 y(2.)61 b(Add)28 b(the)i(new)e(directory)h(name)g(to)h(the)
-g(`)p Fr(configdirs)p Fv(')c(de\014nition)h(in)h(the)i(`)p
-Fr(configure.in)p Fv(')c(\014le)330 193 y(for)g(the)g(test)h(suite)e
-(directory)-8 b(.)40 b(This)24 b(w)m(a)m(y)j(when)e Fr(make)g
-Fv(and)g Fr(configure)f Fv(next)i(run,)g(they)g(include)330
-302 y(the)31 b(new)e(directory)-8 b(.)199 437 y(3.)61
-b(Add)29 b(the)i(new)f(test)h(case)h(to)f(the)f(directory)-8
-b(,)31 b(as)f(ab)s(o)m(v)m(e.)199 571 y(4.)61 b(T)-8
-b(o)36 b(add)f(supp)s(ort)e(in)h(the)i(new)f(directory)g(for)g
-(con\014gure)g(and)g(mak)m(e,)i(y)m(ou)f(m)m(ust)f(also)h(create)h(a)
-330 681 y Fr(Makefile.in)h Fv(and)i(a)h Fr(configure.in)p
-Fv(.)69 b(See)41 b(section)g(\\What)g(Con\014gure)f(Do)s(es")i(in)e
-Fq(Cygn)m(us)330 790 y(Con\014gure)5 b Fv(.)150 1048
-y Fu(6.4)68 b(Hin)l(ts)46 b(on)f(writing)g(a)h(test)g(case)275
-1240 y Fv(There)27 b(ma)m(y)h(b)s(e)g(useful)e(existing)g(pro)s
-(cedures)h(already)g(written)g(for)h(y)m(our)g(test)g(in)f(the)h(`)p
-Fr(lib)p Fv(')g(direc-)150 1350 y(tory)j(of)f(the)h(DejaGn)m(u)g
-(distribution.)37 b(See)31 b(Section)f(5.3)h([DejaGn)m(u)h(Builtins],)c
-(page)j(23.)275 1484 y(It)26 b(is)g(safest)h(to)g(write)f(patterns)h
-(that)g(matc)m(h)g Fn(al)5 b(l)37 b Fv(the)27 b(output)f(generated)h(b)
-m(y)g(the)g(tested)g(program;)150 1594 y(this)22 b(is)g(called)h
-Fq(closure)p Fv(.)38 b(If)22 b(a)i(pattern)f(do)s(es)g(not)h(matc)m(h)g
-(the)f(en)m(tire)g(output,)i(an)m(y)e(output)g(that)h(remains)150
-1704 y(will)35 b(b)s(e)j(examined)f(b)m(y)g(the)i Fn(next)46
-b Fr(expect)37 b Fv(command.)63 b(In)37 b(this)g(situation,)i(the)f
-(precise)f(b)s(oundary)150 1813 y(that)32 b(determines)e(whic)m(h)g
-Fr(expect)f Fv(command)i(sees)g(what)g(is)g(v)m(ery)g(sensitiv)m(e)g
-(to)g(timing)f(b)s(et)m(w)m(een)i(the)150 1923 y Fr(expect)37
-b Fv(task)j(and)e(the)h(task)h(running)c(the)j(tested)h(to)s(ol.)66
-b(As)39 b(a)g(result,)h(the)g(test)f(ma)m(y)h(sometimes)150
-2032 y(app)s(ear)35 b(to)h(w)m(ork,)h(but)d(is)h(lik)m(ely)f(to)i(ha)m
-(v)m(e)g(unpredictable)d(results.)54 b(\(This)34 b(problem)g(is)g
-(particularly)150 2142 y(lik)m(ely)d(for)i(in)m(teractiv)m(e)h(to)s
-(ols,)f(but)g(can)g(also)f(a\013ect)j(batc)m(h)e(to)s(ols|esp)s
-(ecially)e(for)i(tests)h(that)f(tak)m(e)i(a)150 2252
-y(long)24 b(time)h(to)g(\014nish.\))37 b(The)24 b(b)s(est)g(w)m(a)m(y)i
-(to)f(ensure)f(closure)g(is)g(to)i(use)e(the)h(`)p Fr(-re)p
-Fv(')f(option)g(for)h(the)g Fr(expect)150 2361 y Fv(command)k(to)h
-(write)f(the)h(pattern)f(as)h(a)g(full)d(regular)i(expressions;)f(then)
-h(y)m(ou)h(can)g(matc)m(h)g(the)g(end)f(of)150 2471 y(output)i(using)f
-(a)i(`)p Fr($)p Fv('.)44 b(It)31 b(is)g(also)g(a)h(go)s(o)s(d)f(idea)g
-(to)h(write)f(patterns)g(that)h(matc)m(h)g(all)f(a)m(v)-5
-b(ailable)30 b(output)150 2580 y(b)m(y)36 b(using)f(`)p
-Fr(.*\\)p Fv(')h(after)h(the)f(text)i(of)e(in)m(terest;)k(this)35
-b(will)f(also)i(matc)m(h)h(an)m(y)g(in)m(terv)m(ening)f(blank)e(lines.)
-150 2690 y(Sometimes)e(an)h(alternativ)m(e)g(is)e(to)i(matc)m(h)h(end)e
-(of)g(line)f(using)g(`)p Fr(\\r)p Fv(')i(or)f(`)p Fr(\\n)p
-Fv(',)h(but)f(this)f(is)h(usually)e(to)s(o)150 2800 y(dep)s(enden)m(t)f
-(on)i(terminal)e(settings.)275 2934 y(Alw)m(a)m(ys)45
-b(escap)s(e)g(punctuation,)j(suc)m(h)d(as)g(`)p Fr(\()p
-Fv(')g(or)h(`)p Fr(")p Fv(',)j(in)43 b(y)m(our)j(patterns;)52
-b(for)45 b(example,)k(write)150 3044 y(`)p Fr(\\\()p
-Fv('.)41 b(If)30 b(y)m(ou)h(forget)g(to)h(escap)s(e)f(punctuation,)e(y)
-m(ou)i(will)d(usually)g(see)j(an)g(error)f(message)h(lik)m(e)f(`)p
-Fr(extra)150 3153 y(characters)e(after)h(close-quote)p
-Fv('.)275 3288 y(If)k(y)m(ou)h(ha)m(v)m(e)h(trouble)e(understanding)f
-(wh)m(y)h(a)i(pattern)f(do)s(es)f(not)h(matc)m(h)h(the)f(program)g
-(output,)150 3397 y(try)45 b(using)f(the)h(`)p Fr(--debug)p
-Fv(')f(option)h(to)h Fr(runtest)p Fv(,)h(and)d(examine)h(the)h(debug)e
-(log)h(carefully)-8 b(.)85 b(See)150 3507 y(Section)30
-b(5.7.3)i([Debug)f(Log],)h(page)f(36.)275 3641 y(Be)d(careful)f(not)h
-(to)h(neglect)f(output)g(generated)g(b)m(y)g(setup)f(rather)h(than)f(b)
-m(y)h(the)g(in)m(teresting)f(parts)150 3751 y(of)32 b(a)g(test)h(case.)
-46 b(F)-8 b(or)33 b(example,)f(while)e(testing)i Fo(gdb)p
-Fv(,)g(I)f(issue)g(a)h(send)f(`)p Fr(set)f(height)f(0\\n)p
-Fv(')i(command.)150 3861 y(The)h(purp)s(ose)f(is)h(simply)f(to)i(mak)m
-(e)h(sure)e Fo(gdb)h Fv(nev)m(er)g(calls)f(a)h(paging)f(program.)48
-b(The)33 b(`)p Fr(set)c(height)p Fv(')150 3970 y(command)39
-b(in)e Fo(gdb)i Fv(do)s(es)g(not)g(generate)h(an)m(y)g(output;)j(but)38
-b(running)e Fn(any)48 b Fv(command)38 b(mak)m(es)i Fo(gdb)150
-4080 y Fv(issue)28 b(a)h(new)g(`)p Fr(\(gdb\))g Fv(')g(prompt.)40
-b(If)28 b(there)i(w)m(ere)f(no)g Fr(expect)e Fv(command)i(to)h(matc)m
-(h)g(this)e(prompt,)h(the)150 4189 y(output)c(`)p Fr(\(gdb\))k
-Fv(')d(b)s(egins)e(the)i(text)h(seen)f(b)m(y)f(the)h(next)g
-Fr(expect)e Fv(command|whic)m(h)g(migh)m(t)h(mak)m(e)i
-Fn(that)150 4299 y Fv(pattern)j(fail)g(to)h(matc)m(h.)275
-4433 y(T)-8 b(o)39 b(preserv)m(e)g(basic)f(sanit)m(y)-8
-b(,)42 b(I)c(also)h(recommended)f(that)i(no)f(test)g(ev)m(er)h(pass)f
-(if)e(there)i(w)m(as)h(an)m(y)150 4543 y(kind)32 b(of)i(problem)f(in)g
-(the)h(test)h(case.)53 b(T)-8 b(o)34 b(tak)m(e)i(an)e(extreme)h(case,)h
-(tests)f(that)f(pass)g(ev)m(en)h(when)e(the)150 4653
-y(to)s(ol)i(will)d(not)j(spa)m(wn)f(are)h(misleading.)51
-b(Ideally)-8 b(,)35 b(a)g(test)g(in)f(this)f(sort)i(of)g(situation)f
-(should)e(not)j(fail)150 4762 y(either.)41 b(Instead,)31
-b(prin)m(t)e(an)i(error)f(message)i(b)m(y)e(calling)f(one)i(of)g(the)g
-(DejaGn)m(u)g(pro)s(cedures)f Fr(error)f Fv(or)150 4872
-y Fr(warning)p Fv(.)p eop
-%%Page: 42 44
-42 43 bop 150 -116 a Fv(42)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(6.5)68 b(Sp)t(ecial)45
-b(v)-7 b(ariables)46 b(used)f(b)l(y)g(test)h(cases)275
-276 y Fv(Y)-8 b(our)44 b(test)i(cases)f(can)g(use)f(these)h(v)-5
-b(ariables,)47 b(with)c(con)m(v)m(en)m(tional)j(meanings)d(\(as)i(w)m
-(ell)f(as)h(the)150 385 y(v)-5 b(ariables)29 b(sa)m(v)m(ed)i(in)f(`)p
-Fr(site.exp)p Fv(')e(see)j(Chapter)f(4)h([Setting)f Fr(runtest)e
-Fv(defaults],)i(page)h(15\):)390 514 y Fn(These)i(variables)g(ar)-5
-b(e)34 b(available)g(to)f(al)5 b(l)33 b(test)g(c)-5 b(ases.)150
-698 y Fr(prms_id)144 b Fv(The)34 b(trac)m(king)h(system)f(\(e.g.)55
-b Fo(gna)-6 b(ts)p Fv(\))34 b(n)m(um)m(b)s(er)f(iden)m(tifying)f(a)j
-(corresp)s(onding)d(bugre-)630 808 y(p)s(ort.)40 b(\(`)p
-Fr(0)p Fv(')31 b(if)e(y)m(ou)i(do)f(not)h(sp)s(ecify)e(it)h(in)f(the)h
-(test)i(script.\))150 992 y Fr(bug_id)192 b Fv(An)28
-b(optional)f(bug)g(id;)h(ma)m(y)h(re\015ect)f(a)h(bug)e(iden)m
-(ti\014cation)g(from)g(another)i(organization.)630 1102
-y(\(`)p Fr(0)p Fv(')i(if)e(y)m(ou)i(do)f(not)h(sp)s(ecify)e(it.\))150
-1286 y Fr(subdir)192 b Fv(The)30 b(sub)s(directory)e(for)i(the)h
-(curren)m(t)f(test)h(case.)390 1440 y Fn(These)i(variables)g(should)h
-(never)f(b)-5 b(e)32 b(change)-5 b(d.)43 b(They)33 b(app)-5
-b(e)g(ar)36 b(in)c(most)i(tests.)150 1624 y Fr(expect_out\(buffer\))630
-1733 y Fv(The)27 b(output)f(from)h(the)g(last)g(command.)40
-b(This)25 b(is)h(an)h(in)m(ternal)f(v)-5 b(ariable)26
-b(set)h(b)m(y)g Fr(expect)p Fv(.)150 1918 y Fr(exec_output)630
-2027 y Fv(This)j(is)h(the)h(output)f(from)h(a)g Fq(to)s(ol)t
-Fr(_load)e Fv(command.)45 b(This)30 b(only)g(applies)g(to)j(to)s(ols)f
-(lik)m(e)630 2137 y Fo(gcc)37 b Fv(and)f Fo(gas)h Fv(whic)m(h)f(pro)s
-(duce)g(an)h(ob)5 b(ject)38 b(\014le)f(that)g(m)m(ust)h(in)d(turn)i(b)s
-(e)f(executed)i(to)630 2247 y(complete)31 b(a)g(test.)150
-2431 y Fr(comp_output)630 2540 y Fv(This)k(is)g(the)h(output)g(from)g
-(a)h Fq(to)s(ol)t Fr(_start)d Fv(command.)58 b(This)35
-b(is)g(con)m(v)m(en)m(tionally)i(used)630 2650 y(for)d(batc)m(h)h
-(orien)m(ted)f(programs,)i(lik)m(e)d Fo(gcc)h Fv(and)g
-Fo(gas)p Fv(,)h(that)g(ma)m(y)g(pro)s(duce)f(in)m(teresting)630
-2760 y(output)c(\(w)m(arnings,)g(errors\))g(without)f(further)g(in)m
-(teraction.)p eop
-%%Page: 43 45
-43 44 bop 150 -116 a Fv(Chapter)30 b(7:)41 b(New)30 b(T)-8
-b(o)s(ols,)31 b(T)-8 b(argets,)31 b(or)g(Hosts)1888 b(43)150
-100 y Fs(7)80 b(New)54 b(T)-13 b(o)t(ols,)53 b(T)-13
-b(argets,)53 b(or)g(Hosts)275 334 y Fv(The)31 b(most)h(common)g(w)m(a)m
-(ys)h(to)g(extend)f(the)g(DejaGn)m(u)h(framew)m(ork)f(are:)44
-b(adding)31 b(a)h(suite)f(of)h(tests)150 443 y(for)24
-b(a)h(new)e(to)s(ol)h(to)h(b)s(e)f(tested;)j(adding)c(supp)s(ort)g(for)
-h(testing)g(on)g(a)h(new)e(target;)28 b(and)c(p)s(orting)f
-Fr(runtest)150 553 y Fv(to)31 b(a)g(new)f(host.)150 810
-y Fu(7.1)68 b(W)-11 b(riting)46 b(tests)f(for)h(a)f(new)g(to)t(ol)275
-1003 y Fv(In)38 b(general,)j(the)e(b)s(est)f(w)m(a)m(y)i(to)g(learn)e
-(ho)m(w)h(to)g(write)f(\(co)s(de)i(or)e(ev)m(en)i(prose\))f(is)f(to)h
-(read)g(some-)150 1112 y(thing)34 b(similar.)52 b(This)34
-b(principle)e(applies)h(to)j(test)g(cases)g(and)e(to)i(test)g(suites.)
-54 b(Unfortunately)-8 b(,)37 b(w)m(ell-)150 1222 y(established)42
-b(test)i(suites)f(ha)m(v)m(e)i(a)f(w)m(a)m(y)h(of)e(dev)m(eloping)g
-(their)g(o)m(wn)h(con)m(v)m(en)m(tions:)68 b(as)44 b(test)g(writers)150
-1332 y(b)s(ecome)29 b(more)g(exp)s(erienced)e(with)h(DejaGn)m(u)h(and)g
-(with)e(Tcl,)h(they)h(accum)m(ulate)h(more)f(utilities,)e(and)150
-1441 y(tak)m(e)32 b(adv)-5 b(an)m(tage)32 b(of)f(more)f(and)g(more)h
-(features)f(of)h Fr(expect)d Fv(and)i(Tcl)g(in)f(general.)275
-1576 y(Insp)s(ecting)37 b(suc)m(h)h(established)f(test)j(suites)d(ma)m
-(y)j(mak)m(e)f(the)g(prosp)s(ect)f(of)h(creating)g(an)g(en)m(tirely)150
-1685 y(new)31 b(test)h(suite)e(app)s(ear)h(o)m(v)m(erwhelming.)42
-b(Nev)m(ertheless,)32 b(it)f(is)f(quite)h(straigh)m(tforw)m(ard)g(to)h
-(get)g(a)f(new)150 1795 y(test)g(suite)f(going.)275 1929
-y(There)e(is)g(one)h(test)g(suite)f(that)i(is)d(guaran)m(teed)j(not)f
-(to)g(gro)m(w)h(more)f(elab)s(orate)g(o)m(v)m(er)h(time:)39
-b(b)s(oth)28 b(it)150 2039 y(and)34 b(the)g(to)s(ol)h(it)f(tests)h(w)m
-(ere)g(created)g(expressly)f(to)h(illustrate)d(what)j(it)f(tak)m(es)i
-(to)f(get)g(started)g(with)150 2149 y(DejaGn)m(u.)63
-b(The)37 b(`)p Fr(example/)p Fv(')f(directory)h(of)h(the)g(DejaGn)m(u)g
-(distribution)c(con)m(tains)k(b)s(oth)f(an)g(in)m(ter-)150
-2258 y(activ)m(e)d(to)s(ol)f(called)f Fr(calc)p Fv(,)h(and)f(a)h(test)h
-(suite)e(for)h(it.)47 b(Reading)33 b(this)f(test)h(suite,)g(and)g(exp)s
-(erimen)m(ting)150 2368 y(with)h(it,)j(is)d(a)i(go)s(o)s(d)f(w)m(a)m(y)
-i(to)f(supplemen)m(t)e(the)i(information)e(in)g(this)g(section.)56
-b(\(Thanks)35 b(to)h(Rob)s(ert)150 2477 y(Lupton)29 b(for)g(creating)h
-Fr(calc)e Fv(and)h(its)g(test)h(suite|and)e(also)i(the)g(\014rst)e(v)m
-(ersion)h(of)h(this)e(section)i(of)g(the)150 2587 y(man)m(ual!\))275
-2721 y(T)-8 b(o)31 b(help)f(orien)m(t)i(y)m(ou)f(further)g(in)f(this)g
-(task,)i(here)g(is)e(an)h(outline)f(of)i(the)f(steps)h(to)g(b)s(egin)e
-(building)150 2831 y(a)h(test)g(suite)f(for)g(a)h(program)f
-Fq(example)p Fv(.)199 2966 y(1.)61 b(Create)38 b(or)g(select)g(a)g
-(directory)g(to)g(con)m(tain)g(y)m(our)g(new)f(collection)g(of)h
-(tests.)63 b(Change)38 b(to)g(that)330 3075 y(directory)30
-b(\(sho)m(wn)g(here)g(as)h Fr(testsuite)p Fv(\):)570
-3204 y Fr(eg$)47 b(cd)g(testsuite/)199 3338 y Fv(2.)61
-b(Create)51 b(a)g(`)p Fr(configure.in)p Fv(')d(\014le)i(in)f(this)g
-(directory)-8 b(,)56 b(to)51 b(con)m(trol)g(con\014guration-dep)s
-(enden)m(t)330 3448 y(c)m(hoices)36 b(for)e(y)m(our)h(tests.)56
-b(So)35 b(far)g(as)g(DejaGn)m(u)h(is)e(concerned,)i(the)f(imp)s(ortan)m
-(t)g(thing)f(is)g(to)h(set)330 3557 y(a)g(v)-5 b(alue)33
-b(for)h(the)h(v)-5 b(ariable)33 b Fr(target_abbrev)p
-Fv(;)f(this)h(v)-5 b(alue)34 b(is)f(the)i(link)d(to)j(the)f(init)f
-(\014le)g(y)m(ou)i(will)330 3667 y(write)30 b(so)s(on.)40
-b(\(F)-8 b(or)32 b(simplicit)m(y)-8 b(,)28 b(w)m(e)j(assume)f(the)h(en)
-m(vironmen)m(t)f(is)g(Unix,)f(and)h(use)g(`)p Fr(unix)p
-Fv(')g(as)h(the)330 3777 y(v)-5 b(alue.\))330 3911 y(What)28
-b(else)g(is)f(needed)g(in)f(`)p Fr(configure.in)p Fv(')f(dep)s(ends)h
-(on)h(the)h(requiremen)m(ts)f(of)h(y)m(our)g(to)s(ol,)g(y)m(our)330
-4021 y(in)m(tended)j(test)i(en)m(vironmen)m(ts,)f(and)g(whic)m(h)e
-Fr(configure)g Fv(system)i(y)m(ou)h(use.)45 b(This)31
-b(example)g(is)h(a)330 4130 y(minimal)g Fr(configure.in)g
-Fv(for)i(use)h(with)e(Cygn)m(us)h(Con\014gure.)54 b(\(F)-8
-b(or)36 b(an)e(alternativ)m(e)i(based)e(on)330 4240 y(the)d(FSF)g
-Fr(autoconf)e Fv(system,)j(see)f(the)g Fr(calc)f Fv(example)h
-(distributed)d(with)i(DejaGn)m(u.\))44 b(Replace)330
-4350 y Fq(example)35 b Fv(with)29 b(the)i(name)f(of)h(y)m(our)f
-(program:)p eop
-%%Page: 44 46
-44 45 bop 150 -116 a Fv(44)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)330 52 y Fm(\013)p 380
-52 3374 4 v 3373 w(\010)p 330 1683 4 1584 v 358 205 a
-Fr(#)48 b(This)e(file)h(is)g(a)h(shell)e(script)g(fragment)358
-309 y(#)i(for)f(use)f(with)h(Cygnus)f(configure.)358
-516 y(srctrigger=")p Fq(example)p Fr(.0")358 620 y(srcname="The)f
-(DejaGnu)g Fq(example)53 b Fr(tests")358 828 y(#)48 b(per-host:)358
-1035 y(#)g(per-target:)358 1243 y(#)g(everything)d(defaults)g(to)i
-(unix)g(for)g(a)g(target)358 1347 y(target_abbrev=unix)358
-1554 y(#)h(post-target:)p 3803 1683 V 330 1735 a Fm(\012)p
-380 1735 3374 4 v 3373 w(\011)199 1880 y Fv(3.)61 b(Create)28
-b(`)p Fr(Makefile.in)p Fv(',)e(the)i(source)f(\014le)g(used)g(b)m(y)g
-Fr(configure)e Fv(to)j(build)d(y)m(our)i(`)p Fr(Makefile)p
-Fv('.)38 b(Its)330 1989 y(leading)29 b(section)i(should)d(as)j(usual)e
-(con)m(tain)h(the)h(v)-5 b(alues)30 b(that)g Fr(configure)e
-Fv(ma)m(y)j(o)m(v)m(erride:)330 2070 y Fm(\013)p 380
-2070 V 3373 w(\010)p 330 3721 4 1604 v 358 2224 a Fr(srcdir)46
-b(=)i(.)358 2327 y(prefix)e(=)i(/usr/local)358 2535 y(exec_prefix)d(=)i
-($\(prefix\))358 2639 y(bindir)f(=)i($\(exec_prefix\)/bin)358
-2742 y(libdir)e(=)i($\(exec_prefix\)/lib)358 2846 y(tooldir)e(=)h
-($\(libdir\)/$\(target_alias\))358 3054 y(datadir)f(=)h
-($\(exec_prefix\)/lib/dejagnu)358 3261 y(RUNTEST)f(=)h(runtest)358
-3365 y(RUNTESTFLAGS)e(=)358 3469 y(FLAGS_TO_PASS)f(=)358
-3676 y(####)j(host,)f(target,)g(site)h(specific)e(Makefile)h(frags)g
-(come)h(in)g(here.)p 3803 3721 V 330 3773 a Fm(\012)p
-380 3773 3374 4 v 3373 w(\011)330 3918 y Fv(This)26 b(should)g(b)s(e)h
-(follo)m(w)m(ed)h(b)m(y)f(the)i(standard)e(targets)i(at)f(y)m(our)g
-(site.)40 b(T)-8 b(o)28 b(b)s(egin)f(with,)g(they)h(need)330
-4028 y(not)j(do)f(an)m(ything|for)f(example,)i(these)g(de\014nitions)c
-(will)h(do:)p eop
-%%Page: 45 47
-45 46 bop 150 -116 a Fv(Chapter)30 b(7:)41 b(New)30 b(T)-8
-b(o)s(ols,)31 b(T)-8 b(argets,)31 b(or)g(Hosts)1888 b(45)330
-52 y Fm(\013)p 380 52 3374 4 v 3373 w(\010)p 330 1420
-4 1321 v 358 253 a Fr(all:)358 461 y(info:)358 668 y(install-info:)358
-876 y(install:)358 980 y(uninstall:)358 1187 y(clean:)740
-1291 y(-rm)47 b(-f)g(*~)g(core)g(*.info*)p 3803 1420
-V 330 1472 a Fm(\012)p 380 1472 3374 4 v 3373 w(\011)330
-1616 y Fv(It)30 b(is)f(also)h(a)g(go)s(o)s(d)g(idea)f(to)i(mak)m(e)g
-(sure)e(y)m(our)h(`)p Fr(Makefile)p Fv(')e(can)i(rebuild)d(itself)i(if)
-g(`)p Fr(Makefile.in)p Fv(')330 1726 y(c)m(hanges,)j(with)d(a)h(target)
-i(lik)m(e)e(this)f(\(whic)m(h)h(w)m(orks)g(for)g(either)g(Cygn)m(us)g
-(or)g(FSF)h(Con\014gure\):)330 1810 y Fm(\013)p 380 1810
-V 3373 w(\010)p 330 2223 4 366 v 358 1970 a Fr(Makefile)46
-b(:)h($\(srcdir\)/Makefile.in)42 b($\(host_makefile_frag\))g(\\)979
-2074 y($\(target_makefile_frag\))740 2178 y($\(SHELL\))k
-(./config.status)p 3803 2223 V 330 2275 a Fm(\012)p 380
-2275 3374 4 v 3373 w(\011)330 2420 y Fv(Y)-8 b(ou)34
-b(also)f(need)g(to)h(include)d(t)m(w)m(o)j(targets)h(imp)s(ortan)m(t)d
-(to)i(DejaGn)m(u:)47 b Fr(check)p Fv(,)33 b(to)h(run)e(the)h(tests,)330
-2530 y(and)d Fr(site.exp)p Fv(,)g(to)i(set)f(up)f(the)h(Tcl)g(copies)g
-(of)g(con\014guration-dep)s(enden)m(t)f(v)-5 b(alues.)42
-b(The)30 b Fr(check)330 2639 y Fv(target)i(m)m(ust)e(run)f(`)p
-Fr(runtest)g(--tool)f Fq(example)5 b Fv(':)330 2718 y
-Fm(\013)p 380 2718 V 3373 w(\010)p 330 3121 4 356 v 358
-2871 a Fr(check:)46 b(site.exp)g(all)740 2975 y($\(RUNTEST\))f
-($\(RUNTESTFLAGS\))f($\(FLAGS_TO_PASS\))f(\\)931 3078
-y(--tool)j Fq(example)53 b Fr(--srcdir)45 b($\(srcdir\))p
-3803 3121 V 330 3173 a Fm(\012)p 380 3173 3374 4 v 3373
-w(\011)330 3323 y Fv(The)35 b Fr(site.exp)f Fv(target)k(should)33
-b(usually)h(set)j(up)d(\(among)j(other)f(things!\))57
-b(a)36 b(Tcl)f(v)-5 b(ariable)35 b(for)330 3433 y(the)c(name)f(of)h(y)m
-(our)f(program:)p eop
-%%Page: 46 48
-46 47 bop 150 -116 a Fv(46)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)330 52 y Fm(\013)p 380
-52 3374 4 v 3373 w(\010)p 330 3475 4 3376 v 358 213 a
-Fr(site.exp:)45 b(./config.status)f(Makefile)740 316
-y(@echo)i("Making)g(a)i(new)f(config)f(file...")740 420
-y(-@rm)h(-f)g(./tmp?)740 524 y(@touch)f(site.exp)740
-731 y(-@mv)h(site.exp)e(site.bak)740 835 y(@echo)h("##)h(these)g
-(variables)e(are)i(automatically\\)406 939 y(generated)e(by)i(make)g
-(##")g(>)g(./tmp0)740 1043 y(@echo)f("#)i(Do)f(not)g(edit)f(here.)h(If)
-g(you)g(wish)f(to\\)406 1147 y(override)f(these)i(values")f(>>)h
-(./tmp0)740 1250 y(@echo)f("#)i(add)e(them)h(to)g(the)g(last)g
-(section")e(>>)j(./tmp0)740 1354 y(@echo)e("set)h(host_os)f
-(${host_os}")f(>>)i(./tmp0)740 1458 y(@echo)f("set)h(host_alias)e
-(${host_alias}")f(>>)j(./tmp0)740 1562 y(@echo)f("set)h(host_cpu)f
-(${host_cpu}")e(>>)j(./tmp0)740 1665 y(@echo)f("set)h(host_vendor)e
-(${host_vendor}")e(>>)48 b(./tmp0)740 1769 y(@echo)e("set)h(target_os)e
-(${target_os}")f(>>)k(./tmp0)740 1873 y(@echo)e("set)h(target_alias)d
-(${target_alias}")g(>>)j(./tmp0)740 1977 y(@echo)f("set)h(target_cpu)e
-(${target_cpu}")f(>>)j(./tmp0)740 2081 y(@echo)f("set)h(target_vendor)d
-(${target_vendor}")f(>>)k(./tmp0)740 2184 y(@echo)f("set)h
-(host_triplet)d(${host_canonical}")f(>>)k(./tmp0)740
-2288 y(@echo)f("set)h(target_triplet)d(${target_canonical}">>./)o(tmp0)
-740 2392 y(@echo)i("set)h(tool)g(binutils")e(>>)i(./tmp0)740
-2496 y(@echo)f("set)h(srcdir)f(${srcdir}")f(>>)i(./tmp0)740
-2599 y(@echo)f("set)h(objdir)f(`pwd`")g(>>)h(./tmp0)740
-2703 y(@echo)f("set)h Fq(examplename)53 b(example)5 b
-Fr(")47 b(>>)g(./tmp0)740 2807 y(@echo)f("##)h(All)g(variables)e(above)
-i(are)g(generated)e(by\\)406 2911 y(configure.)g(Do)i(Not)g(Edit)g(##")
-g(>>)g(./tmp0)1122 3015 y(@cat)f(./tmp0)h(>)g(site.exp)740
-3118 y(@sed)g(<)g(site.bak)f(\\)1074 3222 y(-e)h('1,/^##)f(All)h
-(variables)e(above)i(are.*##/)e(d')i(\\)1074 3326 y(>>)g(site.exp)740
-3430 y(-@rm)g(-f)g(./tmp?)p 3803 3475 V 330 3527 a Fm(\012)p
-380 3527 3374 4 v 3373 w(\011)199 3677 y Fv(4.)61 b(Create)31
-b(a)g(directory)f(\(in)f(`)p Fr(testsuite/)p Fv('\))g(called)g(`)p
-Fr(config/)p Fv(':)570 3805 y Fr(eg$)47 b(mkdir)f(config)199
-3940 y Fv(5.)61 b(Mak)m(e)31 b(an)e(init)e(\014le)i(in)e(this)h
-(directory;)i(its)e(name)i(m)m(ust)f(start)g(with)f(the)i
-Fr(target_abbrev)25 b Fv(v)-5 b(alue,)330 4049 y(so)33
-b(call)g(it)f(`)p Fr(config/unix.exp)p Fv('.)45 b(This)32
-b(is)g(the)h(\014le)f(that)i(con)m(tains)f(the)g(target-dep)s(enden)m
-(t)h(pro-)330 4159 y(cedures;)f(fortunately)-8 b(,)33
-b(most)g(of)f(them)h(do)f(not)g(ha)m(v)m(e)i(to)f(do)f(v)m(ery)h(m)m
-(uc)m(h)f(in)f(order)h(for)g Fr(runtest)330 4269 y Fv(to)f(run.)330
-4403 y(If)f Fq(example)35 b Fv(is)29 b(not)i(in)m(teractiv)m(e,)g(y)m
-(ou)g(can)f(get)i(a)m(w)m(a)m(y)g(with)d(this)g(minimal)f(`)p
-Fr(unix.exp)p Fv(')g(to)j(b)s(egin)330 4513 y(with:)330
-4574 y Fm(\013)p 380 4574 V 3373 w(\010)p 330 4883 4
-262 v 358 4734 a Fr(proc)47 b(foo_exit)e({})j({})358
-4838 y(proc)f(foo_version)e({})i({})p 3803 4883 V 330
-4935 a Fm(\012)p 380 4935 3374 4 v 3373 w(\011)330 5080
-y Fv(If)30 b Fq(example)36 b Fv(is)30 b(in)m(teractiv)m(e,)h(ho)m(w)m
-(ev)m(er,)i(y)m(ou)e(migh)m(t)f(as)h(w)m(ell)f(de\014ne)g(a)h(start)g
-(routine)f Fn(and)k(invoke)330 5190 y(it)39 b Fv(b)m(y)30
-b(using)f(an)h(init)f(\014le)h(lik)m(e)f(this:)p eop
-%%Page: 47 49
-47 48 bop 150 -116 a Fv(Chapter)30 b(7:)41 b(New)30 b(T)-8
-b(o)s(ols,)31 b(T)-8 b(argets,)31 b(or)g(Hosts)1888 b(47)330
-52 y Fm(\013)p 380 52 3374 4 v 3373 w(\010)p 330 1284
-4 1185 v 358 213 a Fr(proc)47 b(foo_exit)e({})j({})358
-316 y(proc)f(foo_version)e({})i({})358 524 y(proc)g(foo_start)e({})i({)
-454 628 y(global)f Fq(examplename)454 731 y Fr(spawn)g($)p
-Fq(examplename)454 835 y Fr(expect)g({)549 939 y(-re)h("")g({})454
-1043 y(})358 1147 y(})358 1250 y(foo_start)p 3803 1284
-V 330 1336 a Fm(\012)p 380 1336 3374 4 v 3373 w(\011)199
-1481 y Fv(6.)61 b(Create)31 b(a)g(directory)f(whose)g(name)g(b)s(egins)
-f(with)g(y)m(our)i(to)s(ol's)f(name,)h(to)g(con)m(tain)g(tests:)570
-1609 y Fr(eg$)47 b(mkdir)f Fq(example)p Fr(.0)199 1744
-y Fv(7.)61 b(Create)33 b(a)g(sample)f(test)h(\014le)f(in)f(`)p
-Fq(example)p Fr(.0)p Fv('.)47 b(Its)32 b(name)h(m)m(ust)f(end)g(with)f
-(`)p Fr(.exp)p Fv(';)j(y)m(ou)e(can)h(use)330 1853 y(`)p
-Fr(first-try.exp)p Fv(')27 b(T)-8 b(o)30 b(b)s(egin)e(with,)h(just)g
-(write)g(there)h(a)g(line)e(of)i(Tcl)f(co)s(de)h(to)h(issue)d(a)j
-(message:)330 1935 y Fm(\013)p 380 1935 V 3373 w(\010)p
-330 2140 4 159 v 358 2095 a Fr(send_user)45 b("Testing:)h(one,)g
-(two...\\n")p 3803 2140 V 330 2192 a Fm(\012)p 380 2192
-3374 4 v 3373 w(\011)199 2342 y Fv(8.)61 b(Bac)m(k)32
-b(in)d(the)i(`)p Fr(testsuite/)p Fv(')d(\(top)j(lev)m(el\))f(directory)
--8 b(,)31 b(run)570 2471 y Fr(eg$)47 b(configure)330
-2606 y Fv(\(Y)-8 b(ou)36 b(ma)m(y)f(ha)m(v)m(e)i(to)e(sp)s(ecify)f
-(more)h(of)g(a)g(path,)i(if)c(a)j(suitable)d Fr(configure)g
-Fv(is)h(not)h(a)m(v)-5 b(ailable)34 b(in)330 2715 y(y)m(our)c
-(execution)h(path.\))199 2850 y(9.)61 b(Y)-8 b(ou)34
-b(are)g(no)m(w)g(ready)g(to)g(triumphan)m(tly)e(t)m(yp)s(e)i(`)p
-Fr(make)29 b(check)p Fv(')k(or)g(`)p Fr(runtest)c(--tool)g
-Fq(example)5 b Fv('.)330 2959 y(Y)-8 b(ou)31 b(should)d(see)j
-(something)f(lik)m(e)g(this:)330 3038 y Fm(\013)p 380
-3038 V 3373 w(\010)p 330 4046 4 961 v 358 3191 a Fr(Test)47
-b(Run)g(By)g(rhl)g(on)g(Fri)g(Jan)g(29)g(16:25:44)f(EST)g(1993)1122
-3399 y(===)h Fq(example)52 b Fr(tests)47 b(===)358 3606
-y(Running)f(./)p Fq(example)p Fr(.0/first-try.exp)d(...)358
-3710 y(Testing:)j(one,)g(two...)1122 3917 y(===)h Fq(example)52
-b Fr(Summary)46 b(===)p 3803 4046 V 330 4098 a Fm(\012)p
-380 4098 3374 4 v 3373 w(\011)330 4243 y Fv(There)35
-b(is)g(no)g(output)h(in)e(the)i(summary)-8 b(,)36 b(b)s(ecause)g(so)g
-(far)f(the)h(example)g(do)s(es)f(not)h(call)f(an)m(y)h(of)330
-4352 y(the)31 b(pro)s(cedures)e(that)i(establish)d(a)j(test)g(outcome.)
-154 4487 y(10.)61 b(Begin)39 b(writing)e(some)i(real)g(tests.)67
-b(F)-8 b(or)40 b(an)f(in)m(teractiv)m(e)h(to)s(ol,)h(y)m(ou)e(should)e
-(probably)g(write)i(a)330 4597 y(real)31 b(exit)f(routine)g(in)g
-(fairly)f(short)i(order;)f(in)g(an)m(y)h(case,)i(y)m(ou)e(should)e
-(also)i(write)f(a)h(real)f(v)m(ersion)330 4706 y(routine)f(so)s(on.)p
-eop
-%%Page: 48 50
-48 49 bop 150 -116 a Fv(48)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(7.2)68 b(Adding)44
-b(a)h(target)275 276 y Fv(DejaGn)m(u)j(has)f(some)h(additional)e
-(requiremen)m(ts)h(for)g(target)i(supp)s(ort,)i(b)s(ey)m(ond)c(the)h
-(general-)150 385 y(purp)s(ose)37 b(pro)m(visions)g(of)h(Cygn)m(us)g
-Fr(configure)p Fv(.)63 b Fr(runtest)37 b Fv(m)m(ust)h(activ)m(ely)h
-(comm)m(unicate)g(with)f(the)150 495 y(target,)31 b(rather)e(than)g
-(simply)e(generating)i(or)g(managing)g(co)s(de)g(for)g(the)h(target)g
-(arc)m(hitecture.)41 b(There-)150 604 y(fore,)30 b(eac)m(h)i(to)s(ol)d
-(requires)g(an)h(initialization)d(mo)s(dule)h(for)i(eac)m(h)h(target.)
-42 b(F)-8 b(or)31 b(new)e(targets,)j(y)m(ou)e(m)m(ust)150
-714 y(supply)21 b(a)j(few)g(Tcl)e(pro)s(cedures)h(to)h(adapt)g(DejaGn)m
-(u)g(to)h(the)f(target.)40 b(This)21 b(p)s(ermits)h(DejaGn)m(u)j
-(itself)d(to)150 824 y(remain)j(target)i(indep)s(enden)m(t.)37
-b(See)26 b(Section)f(5.2)i([Initialization)c(mo)s(dule],)j(page)g(22,)i
-(for)d(a)i(discussion)150 933 y(of)k(the)f(naming)f(con)m(v)m(en)m
-(tions)j(that)f(enable)f(DejaGn)m(u)h(to)g(lo)s(cate)g(and)f(use)g
-(init)f(\014les.)275 1068 y(Usually)24 b(the)i(b)s(est)f(w)m(a)m(y)i
-(to)g(write)e(a)h(new)g(initialization)c(mo)s(dule)j(is)g(to)h(edit)g
-(an)f(existing)g(initializa-)150 1177 y(tion)30 b(mo)s(dule;)g(some)h
-(trial)f(and)g(error)g(will)e(b)s(e)i(required.)41 b(If)30
-b(necessary)-8 b(,)32 b(y)m(ou)f(can)g(use)f(the)h(`)p
-Fr(--debug)p Fv(')150 1287 y(option)f(to)h(see)g(what)f(is)g(really)f
-(going)h(on.)275 1421 y(When)f(y)m(ou)h(co)s(de)g(an)f(initialization)e
-(mo)s(dule,)h(b)s(e)h(generous)h(in)e(prin)m(ting)f(information)h(con)m
-(trolled)150 1531 y(b)m(y)i(the)h Fr(verbose)d Fv(pro)s(cedure)h(\(see)
-j(Section)e(5.3)h([DejaGn)m(u)h(Builtins],)c(page)j(23\).)275
-1665 y(Most)40 b(of)f(the)h(w)m(ork)g(is)e(in)g(getting)i(the)g(comm)m
-(unications)f(righ)m(t.)67 b(Comm)m(unications)38 b(co)s(de)i(\(for)150
-1775 y(sev)m(eral)26 b(situations)e(in)m(v)m(olving)g(IP)h(net)m(w)m
-(orks)h(or)f(serial)f(lines\))g(is)h(a)m(v)-5 b(ailable)25
-b(in)f(a)h(DejaGn)m(u)i(library)c(\014le,)150 1885 y(`)p
-Fr(lib/remote.exp)p Fv('.)37 b(See)31 b(Section)f(5.3)i([DejaGn)m(u)f
-(Builtins],)d(page)j(23.)275 2019 y(If)e(y)m(ou)i(susp)s(ect)e(a)i
-(comm)m(unication)f(problem,)f(try)h(running)d(the)k(connection)f(in)m
-(teractiv)m(ely)g(from)150 2129 y Fr(expect)p Fv(.)37
-b(\(There)24 b(are)h(three)f(w)m(a)m(ys)h(of)g(running)c
-Fr(expect)i Fv(as)i(an)f(in)m(teractiv)m(e)h(in)m(terpreter.)38
-b(Y)-8 b(ou)25 b(can)f(run)150 2238 y Fr(expect)k Fv(with)g(no)h
-(argumen)m(ts,)h(and)f(con)m(trol)h(it)f(completely)g(in)m(teractiv)m
-(ely;)h(or)f(y)m(ou)h(can)f(use)g(`)p Fr(expect)150 2348
-y(-i)p Fv(')c(together)i(with)e(other)g(command-line)f(options)h(and)g
-(argumen)m(ts;)j(or)e(y)m(ou)f(can)h(run)e(the)i(command)150
-2457 y Fr(interpreter)f Fv(from)i(an)m(y)i Fr(expect)d
-Fv(pro)s(cedure.)39 b(Use)28 b Fr(return)e Fv(to)j(get)g(bac)m(k)g(to)f
-(the)h(calling)d(pro)s(cedure)150 2567 y(\(if)32 b(an)m(y\),)i(or)e
-Fr(return)d(-tcl)i Fv(to)i(mak)m(e)h(the)e(calling)f(pro)s(cedure)g
-(itself)h(return)f(to)i(its)f(caller;)h(use)f Fr(exit)150
-2677 y Fv(or)40 b(end-of-\014le)g(to)h(lea)m(v)m(e)g
-Fr(expect)e Fv(altogether.\))72 b(Run)39 b(the)h(program)h(whose)f
-(name)g(is)f(recorded)h(in)150 2786 y(`)p Fr($connectmode)p
-Fv(',)45 b(with)d(the)j(argumen)m(ts)f(in)e(`)p Fr($targetname)p
-Fv(',)j(to)g(establish)d(a)j(connection.)81 b(Y)-8 b(ou)150
-2896 y(should)28 b(at)j(least)g(b)s(e)f(able)g(to)h(get)g(a)g(prompt)f
-(from)g(an)m(y)g(target)i(that)f(is)f(ph)m(ysically)e(connected.)150
-3153 y Fu(7.3)68 b(P)l(orting)46 b(to)f(a)g(new)h(host)275
-3346 y Fv(The)c(task)i(of)f(p)s(orting)f(DejaGn)m(u)h(is)g(basically)e
-(that)j(of)f(p)s(orting)e(Tcl)i(and)f Fr(expect)p Fv(.)77
-b(Tcl)43 b(and)150 3455 y Fr(expect)p Fv(,)31 b(as)h(distributed)e
-(with)g(DejaGn)m(u,)k(b)s(oth)d(use)h Fr(autoconf)p Fv(;)f(they)h
-(should)f(p)s(ort)g(automatically)150 3565 y(to)g(most)g(Unix)e
-(systems.)275 3699 y(Once)k(Tcl)g(and)g Fr(expect)e Fv(are)j(p)s
-(orted,)g(DejaGn)m(u)h(should)c(run.)49 b(Most)34 b(system)g(dep)s
-(endencies)e(are)150 3809 y(tak)m(en)f(care)h(of)e(b)m(y)g(using)f
-Fr(expect)g Fv(as)i(the)f(main)f(command)i(shell.)p eop
-%%Page: 49 51
-49 50 bop 150 -116 a Fv(App)s(endix)28 b(A:)i(Installing)e(DejaGn)m(u)
-2215 b(49)150 100 y Fs(App)t(endix)53 b(A)81 b(Installing)55
-b(DejaGn)l(u)275 301 y Fv(Once)27 b(y)m(ou)h(ha)m(v)m(e)h(the)f(DejaGn)
-m(u)h(source)f(unpac)m(k)m(ed)g(and)f(a)m(v)-5 b(ailable,)28
-b(y)m(ou)g(m)m(ust)f(\014rst)g(con\014gure)h(the)150
-411 y(soft)m(w)m(are)35 b(to)g(sp)s(ecify)d(where)i(it)f(is)g(to)h(run)
-f(\(and)g(the)h(asso)s(ciated)g(defaults\);)h(then)f(y)m(ou)g(can)g
-(pro)s(ceed)150 520 y(to)d(installing)d(it.)150 758 y
-Fu(A.1)67 b(Con\014guring)45 b(the)h(DejaGn)l(u)f(test)h(driv)l(er)275
-944 y Fv(It)37 b(is)g(usually)e(b)s(est)i(to)h(con\014gure)g(in)e(a)i
-(directory)f(separate)h(from)f(the)h(source)g(tree,)i(sp)s(ecifying)150
-1054 y(where)29 b(to)i(\014nd)d(the)j(source)f(with)e(the)i(optional)f
-(`)p Fr(--srcdir)p Fv(')g(option)g(to)i Fr(configure)p
-Fv(.)38 b(DejaGn)m(u)30 b(uses)150 1164 y(the)39 b(GNU)h
-Fr(autoconf)c Fv(to)k(con\014gure)e(itself.)65 b(F)-8
-b(or)40 b(more)f(info)f(on)h(using)e(auto)s(conf,)k(read)e(the)g(GNU)
-150 1273 y(auto)s(conf)i(man)m(ual.)70 b(T)-8 b(o)41
-b(con\014gure,)i(execute)f(the)e(`)p Fr(configure)p Fv(')f(program,)k
-(no)d(other)h(options)f(are)150 1383 y(required.)f(F)-8
-b(or)31 b(an)f(example,)h(to)g(con\014gure)f(in)f(a)i(sep)s(erate)f
-(tree)h(for)g(ob)5 b(jects,)31 b(execute)h(the)e(con\014gure)150
-1492 y(script)f(from)h(the)h(source)f(tree)h(lik)m(e)f(this:)390
-1615 y Fr(../dejagnu-1.3/configure)275 1743 y Fv(DejaGn)m(u)f(do)s
-(esn't)g(care)g(at)g(con\014g)g(time)g(if)e(it's)i(for)f(testing)h(a)g
-(nativ)m(e)g(system)g(or)g(a)g(cross)g(system.)150 1852
-y(That)h(is)g(determined)f(at)i(run)m(time)e(b)m(y)h(using)f(the)i
-(con\014g)f(\014les.)275 1980 y(Y)-8 b(ou)49 b(ma)m(y)g(also)g(w)m(an)m
-(t)h(to)g(use)e(the)h Fr(configure)e Fv(option)h(`)p
-Fr(--prefix)p Fv(')f(to)j(sp)s(ecify)d(where)i(y)m(ou)150
-2090 y(w)m(an)m(t)f(DejaGn)m(u)f(and)f(its)g(supp)s(orting)e(co)s(de)j
-(installed.)88 b(By)47 b(default,)j(installation)44 b(is)i(in)g(sub)s
-(di-)150 2199 y(rectories)40 b(of)f(`)p Fr(/usr/local)p
-Fv(',)g(but)g(y)m(ou)g(can)h(select)g(an)m(y)f(alternate)h(directory)f
-Fq(altdir)44 b Fv(b)m(y)39 b(including)150 2309 y(`)p
-Fr(--prefix=)p Fq(altdir)7 b Fv(')23 b(on)k(the)g Fr(configure)d
-Fv(command)j(line.)37 b(\(This)26 b(v)-5 b(alue)26 b(is)g(captured)h
-(in)e(the)i(Mak)m(e\014le)150 2419 y(v)-5 b(ariables)29
-b Fr(prefix)g Fv(and)g Fr(exec_prefix)p Fv(.\))275 2547
-y(Sa)m(v)m(e)46 b(for)e(a)i(small)d(n)m(um)m(b)s(er)g(of)i(example)g
-(tests,)k(the)d(DejaGn)m(u)f(distribution)c(itself)j(do)s(es)h(not)150
-2656 y(include)38 b(an)m(y)j(test)g(suites;)j(these)d(are)f(a)m(v)-5
-b(ailable)40 b(separately)-8 b(.)71 b(T)-8 b(est)41 b(suites)e(for)h
-(the)g Fo(gnu)g Fv(compiler)150 2766 y(\(testing)e(b)s(oth)g(GCC)f(and)
-g(G)p Fr(++)p Fv(\))h(and)g(for)g(the)g Fo(gnu)f Fv(binary)g(utilities)
-e(are)j(distributed)d(in)i(parallel)150 2875 y(with)29
-b(the)h(DejaGn)m(u)h(distribution)26 b(\(but)k(pac)m(k)-5
-b(aged)31 b(as)g(separate)g(\014les\).)39 b(The)30 b(test)h(suite)e
-(for)h(the)g Fo(gnu)150 2985 y Fv(debugger)h(is)f(distributed)e(in)i
-(parallel)g(with)f(eac)m(h)k(release)e(of)h(GDB)g(itself,)e(starting)h
-(with)f(GDB)j(4.9.)150 3095 y(After)27 b(con\014guring)e(the)h(top-lev)
-m(el)h(DejaGn)m(u)g(directory)-8 b(,)27 b(unpac)m(k)f(and)g
-(con\014gure)g(the)h(test)g(directories)150 3204 y(for)40
-b(the)h(to)s(ols)f(y)m(ou)h(w)m(an)m(t)g(to)g(test;)47
-b(then,)c(in)c(eac)m(h)j(test)f(directory)-8 b(,)43 b(run)c
-Fr(make)h Fv(to)h(build)c(auxiliary)150 3314 y(programs)30
-b(required)f(b)m(y)h(some)h(of)f(the)h(tests.)150 3552
-y Fu(A.2)67 b(Installing)47 b(DejaGn)l(u)275 3738 y Fv(T)-8
-b(o)36 b(install)e(DejaGn)m(u)k(in)d(y)m(our)h(\014lesystem)f(\(either)
-i(in)e(`)p Fr(/usr/local)p Fv(',)g(or)i(as)f(sp)s(eci\014ed)f(b)m(y)h
-(y)m(our)150 3847 y(`)p Fr(--prefix)p Fv(')29 b(option)g(to)j
-Fr(configure)p Fv(\),)c(execute)390 3969 y Fr(eg$)47
-b(make)g(install)150 4098 y Fv(`)p Fr(make)29 b(install)p
-Fv(')g(do)s(es)h(these)h(things)e(for)h(DejaGn)m(u:)199
-4226 y(1.)61 b(Lo)s(ok)28 b(in)f(the)h(path)f(sp)s(eci\014ed)g(for)g
-(executables)i(\(`)p Fr($exec_prefix)p Fv('\))d(for)h(directories)g
-(called)g(`)p Fr(lib)p Fv(')330 4335 y(and)j(`)p Fr(bin)p
-Fv('.)40 b(If)30 b(these)h(directories)e(do)i(not)f(exist,)h(`)p
-Fr(make)e(install)p Fv(')g(creates)i(them.)199 4463 y(2.)61
-b(Create)31 b(another)g(directory)f(in)f(the)h(`)p Fr(lib)p
-Fv(')g(directory)-8 b(,)31 b(called)e(`)p Fr(dejagnu)p
-Fv('.)199 4591 y(3.)61 b(Cop)m(y)30 b(the)h Fr(runtest)d
-Fv(shell)h(script)g(in)m(to)i(`)p Fr($exec_prefix/bin)p
-Fv('.)199 4719 y(4.)61 b(Cop)m(y)20 b(all)f(the)i(library)d(\014les)h
-(\(used)h(to)h(supp)s(ort)d(the)j(framew)m(ork\))g(in)m(to)f(`)p
-Fr($exec_prefix/lib/dejagnu)o Fv('.)199 4847 y(5.)61
-b(Cop)m(y)40 b(`)p Fr(runtest.exp)p Fv(')e(in)m(to)i(`)p
-Fr($exec_prefix/lib/dejagnu)o Fv('.)65 b(This)38 b(is)h(the)h(main)f
-(Tcl)h(co)s(de)330 4957 y(implemen)m(ting)28 b(DejaGn)m(u.)275
-5103 y(Eac)m(h)33 b(test)h(suite)e(collection)h(comes)g(with)f(simple)f
-(installation)f(instructions)h(in)h(a)h(`)p Fr(README)p
-Fv(')f(\014le;)150 5213 y(in)43 b(general,)49 b(the)c(test)g(suites)f
-(are)h(designed)e(to)j(b)s(e)e(unpac)m(k)m(ed)g(in)g(the)g(source)h
-(directory)f(for)h(the)150 5322 y(corresp)s(onding)28
-b(to)s(ol,)j(and)f(extract)i(in)m(to)e(a)h(directory)f(called)f(`)p
-Fr(testsuite)p Fv('.)p eop
-%%Page: 50 52
-50 51 bop 150 -116 a Fv(50)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)p eop
-%%Page: 51 53
-51 52 bop 150 -116 a Fv(Index)3286 b(51)150 100 y Fs(Index)150
-1097 y Fu(-)150 1255 y Ff(--all)27 b Fe(\()p Ff(runtest)g
-Fe(option\))20 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)46 b Fe(10)150
-1366 y Ff(--baud)27 b Fe(\()p Ff(runtest)g Fe(option\))19
-b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)44 b Fe(11)150 1476 y Ff(--build)27
-b Fe(\()p Ff(runtest)g Fe(option\))17 b Fd(.)c(.)g(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fe(11)150 1587 y Ff(--connect)28 b Fe(\()p Ff(runtest)f
-Fe(option\))15 b Fd(.)d(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)40 b Fe(11)150 1698 y Ff(--debug)27
-b Fe(\()p Ff(runtest)g Fe(option\))17 b Fd(.)c(.)g(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fe(11)150 1809 y Ff(--help)27 b Fe(\()p Ff(runtest)g
-Fe(option\))19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(11)150 1920
-y Ff(--host)27 b Fe(\()p Ff(runtest)g Fe(option\))19
-b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)44 b Fe(11)150 2031 y Ff(--name)27
-b Fe(\()p Ff(runtest)g Fe(option\))19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44
-b Fe(11)150 2142 y Ff(--objdir)27 b Fe(\()p Ff(runtest)g
-Fe(option\))16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)42 b Fe(12)150 2252 y Ff(--outdir)27
-b Fe(\()p Ff(runtest)g Fe(option\))16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)42 b Fe(12)150
-2363 y Ff(--reboot)27 b Fe(\()p Ff(runtest)g Fe(option\))16
-b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)42 b Fe(12)150 2474 y Ff(--srcdir)27 b Fe(\()p
-Ff(runtest)g Fe(option\))16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)42 b Fe(12)150 2585
-y Ff(--strace)27 b Fe(\()p Ff(runtest)g Fe(option\))16
-b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)42 b Fe(12)150 2696 y Ff(--target)27 b Fe(\()p
-Ff(runtest)g Fe(option\))16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)42 b Fe(12)150 2807
-y Ff(--tool)27 b Fe(\()p Ff(runtest)g Fe(option\))19
-b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)44 b Fe(10)150 2918 y Ff(--tool)27
-b Fe(and)e(naming)g(con)n(v)n(en)n(tions)9 b Fd(.)j(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fe(21)150 3028
-y Ff(--verbose)28 b Fe(\()p Ff(runtest)f Fe(option\))15
-b Fd(.)d(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)40 b Fe(13)150 3139 y Ff(--version)28 b Fe(\()p Ff(runtest)f
-Fe(option\))15 b Fd(.)d(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)40 b Fe(13)150 3250 y Ff(-b)26 b Fe(\()p
-Ff(runtest)h Fe(option\))7 b Fd(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32
-b Fe(11)150 3361 y Ff(-v)26 b Fe(\()p Ff(runtest)h Fe(option\))7
-b Fd(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 b Fe(13)150
-3472 y Ff(-V)26 b Fe(\()p Ff(runtest)h Fe(option\))7
-b Fd(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 b Fe(13)150
-3805 y Fu(.)150 3962 y Ff(.exp)14 b Fd(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40
-b Fe(1)150 4296 y Fu(A)150 4453 y Ff(absolute)27 b Fc(path)8
-b Fd(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fe(28)150 4564 y(adding)26 b(a)g(target)14 b Fd(.)f(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fe(48)150 4675 y(adding)26
-b(a)g(test)f(case)8 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33
-b Fe(40)150 4786 y Ff(all_flag)7 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fe(17)150
-4897 y(am)n(biguit)n(y)-6 b(,)24 b(required)i(for)g(POSIX)11
-b Fd(.)g(.)i(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-37 b Fe(7)150 5007 y(arc)n(hiv)n(e)26 b(ob)t(ject)g(\014les)15
-b Fd(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(30)150
-5118 y(auxiliary)26 b(\014les,)h(building)16 b Fd(.)c(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)43 b Fe(3)150 5229 y(auxiliary)26 b(programs)11 b
-Fd(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)36 b Fe(49)150
-5340 y(auxiliary)26 b(test)g(programs)9 b Fd(.)j(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34
-b Fe(12)2025 424 y Fu(B)2025 557 y Ff(baud)13 b Fd(.)g(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38
-b Fe(17)2025 657 y(baud)25 b(rate,)h(sp)r(ecifying)12
-b Fd(.)i(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)38 b Fe(11)2025 756 y(bps,)25
-b(sp)r(ecifying)8 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)33 b Fe(11)2025 856 y Ff(bt)15 b Fd(.)e(.)f(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41
-b Fe(31)2025 956 y(bug)25 b(n)n(um)n(b)r(er)16 b Fd(.)11
-b(.)h(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)42
-b Fe(42)2025 1055 y(bug)25 b(n)n(um)n(b)r(er,)f(extra)15
-b Fd(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fe(42)2025
-1155 y Ff(bug_id)10 b Fd(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fe(42)2025 1254
-y(build)25 b(con\014g)h(name,)f(c)n(hanging)c Fd(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46
-b Fe(11)2025 1354 y(build)25 b(host)h(con\014guration)g(test)14
-b Fd(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)40 b Fe(25)2025 1454 y Ff(build_triplet)18 b Fd(.)d(.)d(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b Fe(17)2025 1553 y(built)25
-b(in)h(pro)r(cedures,)g(DejaGn)n(u)19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fe(23)2025
-1819 y Fu(C)2025 1952 y Fe(C)26 b(torture)f(test)d Fd(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)47
-b Fe(39)2025 2052 y(canadian)26 b(cross)h(con\014guration)f(test)12
-b Fd(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38
-b Fe(25)2025 2151 y(cancelling)27 b(exp)r(ected)e(failure)11
-b Fd(.)j(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)37 b Fe(26)2025 2251 y Ff(check)26 b Fe(mak)n(e\014le)f
-(target)e Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(3)2025
-2351 y Ff(clear_xfail)28 b Fc(con\014g)22 b Fd(.)12 b(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)41 b Fe(26)2025 2450 y(Closing)27 b(a)f(remote)f
-(connection)14 b Fd(.)g(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)40 b Fe(27)2025 2550 y(command)24
-b(line)i(option)g(v)l(ariables)13 b Fd(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)39 b Fe(17)2025 2650 y(command)24
-b(line)i(options)13 b Fd(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40
-b Fe(9)2025 2749 y(command)24 b(line)i(Tcl)g(v)l(ariable)g
-(de\014nition)18 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44
-b Fe(10)2025 2849 y(comm)n(unications)24 b(pro)r(cedures)9
-b Fd(.)k(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)35 b Fe(26)2025 2948 y Ff(comp_output)23 b Fd(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46
-b Fe(42)2025 3048 y(comparing)25 b(\014les)c Fd(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 b Fe(28)2025
-3148 y(compile)25 b(a)h(\014le)14 b Fd(.)f(.)g(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)40 b Fe(29)2025 3247 y(con\014guration)26
-b(dep)r(enden)n(t)e(defaults)14 b Fd(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)39 b Fe(15)2025 3347 y(con\014guring)26
-b(DejaGn)n(u)16 b Fd(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b
-Fe(49)2025 3447 y(connecting)26 b(to)g(target)e Fd(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fe(11)2025 3546 y Ff(connectmode)23
-b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46
-b Fe(17)2025 3646 y(con)n(v)n(erting)25 b(relativ)n(e)i(paths)e(to)h
-(absolute)d Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48
-b Fe(28)2025 3746 y(Core)26 b(In)n(ternal)g(Pro)r(cedures)14
-b Fd(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)39 b Fe(23)2025 3845 y(cross)27 b(con\014guration)14
-b Fd(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 b Fe(4)2025
-3945 y(curren)n(t)25 b(test)h(sub)r(directory)18 b Fd(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)44 b Fe(42)2025 4211 y Fu(D)2025 4344 y Ff(dbg.log)27
-b Fe(\014le)19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)45 b Fe(11)2025 4443 y(debug)25 b(log)c Fd(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45
-b Fe(36)2025 4543 y(debug)25 b(log)i(for)f(test)g(cases)8
-b Fd(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)33 b Fe(11)2025 4642 y Ff(debugger.exp)22
-b Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
-b Fe(30)2025 4742 y(debugging)26 b(a)g(test)f(case)f
-Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(40)2025 4842 y(default)26
-b(options,)g(con)n(trolling)c Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)46 b Fe(17)2025
-4941 y(defaults,)27 b(option)11 b Fd(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)37 b Fe(17)2025 5041 y(defaults,)27 b(setting)f(in)f
-(init)h(\014le)9 b Fd(.)k(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fe(23)2025 5141 y(DejaGn)n(u)25
-b(con\014guration)18 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b
-Fe(49)2025 5240 y(DejaGn)n(u)25 b(test)h(driv)n(er)11
-b Fd(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38 b Fe(9)2025
-5340 y(DejaGn)n(u,)26 b(the)f(name)18 b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)44 b Fe(6)p eop
-%%Page: 52 54
-52 53 bop 150 -116 a Fv(52)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 152 y Fe(Delete)26
-b(a)g(w)n(atc)n(hp)r(oin)n(t.)16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42
-b Fe(31)150 253 y(design)26 b(goals)18 b Fd(.)c(.)f(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(5)150 354
-y(detailed)26 b(log)f Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)49 b Fe(36)150 455 y Ff(diff)27 b Fc(\014lename)i
-(\014lename)18 b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fe(28)150
-555 y(directories)27 b(matc)n(hing)e(a)h(pattern)18 b
-Fd(.)11 b(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fe(28)150 656 y(directory)26 b(names)f(and)g Ff(--tool)17
-b Fd(.)d(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)43 b Fe(21)150 757 y(do)n(wnload)26 b(a)g(\014le)20
-b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45
-b Fe(27)150 858 y Ff(download)27 b Fc(\014le)j Fe([)c
-Fc(spa)n(wnid)j Fe(])18 b Fd(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fe(27)150
-959 y(do)n(wnload,)27 b Ff(tip)13 b Fd(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)39 b Fe(27)150 1059 y Ff(dumplocals)28
-b Fd(expr)15 b(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32
-b Fe(30)150 1160 y Ff(dumprocs)27 b Fd(expr)18 b(.)c(.)e(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fe(30)150 1261 y
-Ff(dumpvars)27 b Fd(expr)18 b(.)c(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)35 b Fe(30)150 1362 y Ff(dumpwatch)28 b Fd(expr)16
-b(.)d(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34
-b Fe(30)150 1635 y Fu(E)150 1770 y Ff(echo.exp)8 b Fd(.)14
-b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)34 b Fe(5)150 1870 y Ff(ERROR)24 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fe(9,)26
-b(23)150 1971 y(example)9 b Fd(.)i(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fe(5)150
-2072 y Ff(exec_output)23 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)46 b Fe(42)150 2173 y Ff(exec_prefix)p
-Fe(,)28 b(con\014gure)e(options.)9 b Fd(.)k(.)g(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fe(49)150 2274 y Ff(execute_anywhere)29
-b Fd(cmd)t(line)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)37 b Fe(30)150 2374 y(executing)26
-b(commands)e(remotely)18 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(30)150 2475 y(existing)26
-b(tests,)h(running)10 b Fd(.)h(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36
-b Fe(3)150 2576 y(exit)25 b(co)r(de)i(from)e Ff(runtest)8
-b Fd(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)35 b Fe(9)150 2677 y(exit)25
-b(pro)r(cedure,)h(tested)g(to)r(ols)14 b Fd(.)g(.)e(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fe(31)150
-2778 y Ff(exit_remote_shell)29 b Fc(spa)n(wnid)10 b Fd(.)j(.)g(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33
-b Fe(27)150 2878 y Ff(exp)26 b Fe(\014lename)f(su\016x)15
-b Fd(.)d(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(21)150
-2979 y Ff(expect)27 b Fe(in)n(ternal)f(tracing)10 b Fd(.)j(.)f(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)35 b Fe(12)150 3080 y Ff(expect)27 b Fe(script)f(names)c
-Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(1)150
-3181 y Ff(expect)27 b Fe(scripting)f(language)21 b Fd(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)45 b Fe(8)150 3281 y Ff(expect_out\(buffer\))10
-b Fd(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fe(42)150
-3382 y(exp)r(ected)25 b(failure)20 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)44 b Fe(9,)26 b(25)150 3483 y(exp)r(ected)f(failure,)i
-(cancelling)21 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(26)150 3756 y Fu(F)150
-3891 y Ff(FAIL)7 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fe(7,)26
-b(9)150 3992 y Ff(fail)h(")p Fc(string)6 b Ff(")g Fd(.)14
-b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32
-b Fe(24)150 4093 y(failing)c(test,)e(exp)r(ected)15 b
-Fd(.)d(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b Fe(9)150 4193
-y(failing)28 b(test,)e(unexp)r(ected)9 b Fd(.)i(.)h(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35
-b Fe(9)150 4294 y(failure,)27 b(exp)r(ected)14 b Fd(.)e(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)40 b Fe(25)150 4395 y(failure,)27
-b(POSIX)e(de\014nition)17 b Fd(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43
-b Fe(7)150 4496 y(\014lename)25 b(for)h(test)g(\014les)14
-b Fd(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)40 b Fe(21)150 4596 y(\014les)26
-b(matc)n(hing)f(a)h(pattern)18 b Fd(.)12 b(.)g(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fe(28)150 4697 y Ff(find)27 b Fc(dir)k(pattern)13 b
-Fd(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fe(28)150
-4798 y Ff(findfile)7 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fe(22)150 4899 y(\014nding)25
-b(\014le)h(di\013erences)17 b Fd(.)c(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fe(28)150 5000 y(future)25 b(directions)15 b Fd(.)f(.)e(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)41 b Fe(8)2025 501 y Fu(G)2025
-648 y Ff(gdb.t00/echo.exp)14 b Fd(.)i(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)41 b Fe(5)2025 755 y Ff(get_warning_threshold)29
-b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)50 b Fe(24)2025 862 y Ff(getdirs)27
-b Fc(dir)d Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)44 b Fe(28)2025 968 y Ff(getdirs)27 b Fc(dir)k(pattern)9
-b Fd(.)j(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)35 b Fe(28)2025 1075
-y Ff(getenv)27 b Fc(v)l(ar)19 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fe(29)2025 1181
-y(getting)26 b(en)n(vironmen)n(t)e(v)l(ariables)11 b
-Fd(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)37
-b Fe(29)2025 1288 y(GNA)-6 b(TS)25 b(bug)g(n)n(um)n(b)r(er)15
-b Fd(.)c(.)h(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fe(42)2025 1395
-y(Granlund,)25 b(T)-6 b(orb)t(jorn)12 b Fd(.)i(.)e(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)38 b Fe(39)2025 1501 y Ff(grep)26 b Fc(\014lename)j(regexp)10
-b Fd(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fe(28)2025 1608
-y Ff(grep)26 b Fc(\014lename)j(regexp)f Ff(line)7 b Fd(.)13
-b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)33 b Fe(28)2025 1915 y Fu(H)2025 2063 y Fe(help)25
-b(with)h Ff(runtest)21 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
-b Fe(11)2025 2170 y(hin)n(ts)25 b(on)h(test)f(case)i(writing)12
-b Fd(.)h(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)38 b Fe(41)2025 2276 y(host)26 b(con\014g)f(name,)h(c)n
-(hanging)17 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)42 b Fe(11)2025 2383 y(host)26
-b(con\014guration)g(test)c Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47
-b Fe(25)2025 2490 y(host,)26 b(explained)19 b Fd(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fe(49)2025
-2596 y Ff(host_triplet)22 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)45 b Fe(17)2025 2904 y Fu(I)2025 3052
-y Ff(ignoretests)23 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)46 b Fe(17)2025 3158 y(init)26 b(\014le)f(name)14
-b Fd(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40
-b Fe(22)2025 3265 y(init)26 b(\014le,)g(purp)r(ose)16
-b Fd(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)42 b
-Fe(22)2025 3372 y(initialization)7 b Fd(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fe(22)2025 3478
-y(input)25 b(\014les)15 b Fd(.)d(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)41 b Fe(34)2025 3585 y(installed)26
-b(to)r(ol)h(name)c Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50
-b Fe(24)2025 3691 y(installing)27 b(DejaGn)n(u)11 b Fd(.)i(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)37 b Fe(49)2025 3798 y(in)n(ternal)26
-b(details)c Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47
-b Fe(21)2025 3904 y(in)n(v)n(oking)23 b Fd(.)13 b(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)50
-b Fe(9)2025 4011 y(IP)25 b(net)n(w)n(ork)h(pro)r(cedures)20
-b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fe(27)2025 4118 y Ff(isbuild)27
-b(")p Fc(host)r Ff(")12 b Fd(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)38 b Fe(25)2025 4224 y Ff(ishost)27 b(")p Fc(host)r
-Ff(")13 b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39
-b Fe(25)2025 4331 y Ff(isnative)7 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fe(25)2025
-4437 y Ff(istarget)27 b(")p Fc(target)r Ff(")17 b Fd(.)c(.)g(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)43 b Fe(25)2025 4745 y Fu(K)2025 4893
-y Ff(kermit)27 b Fc(p)r(ort)g(bps)18 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)42 b Fe(27)2025 5000 y Ff(kermit)p
-Fe(,)27 b(remote)e(testing)h(via)9 b Fd(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fe(11)p
-eop
-%%Page: 53 55
-53 54 bop 150 -116 a Fv(Index)3286 b(53)150 695 y Fu(L)150
-850 y Fe(last)26 b(command)e(output)c Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46
-b Fe(42)150 960 y Ff(lib/debugger.exp)13 b Fd(.)j(.)d(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)39 b Fe(30)150 1070 y Ff(lib/remote.exp)16
-b Fd(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b
-Fe(26)150 1180 y Ff(lib/target.exp)16 b Fd(.)g(.)c(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)42 b Fe(29)150 1289 y Ff(lib/utils.exp)18
-b Fd(.)d(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fe(28)150 1399 y(Lib)r(es,)27 b(Don)18 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(8)150
-1509 y(list,)27 b(pruning)13 b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)38 b Fe(29)150 1619 y Ff(list_targets)22
-b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)45
-b Fe(29)150 1729 y(lists)27 b(supp)r(orted)e(targets)6
-b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fe(29)150 1839 y(load)26
-b(library)g(\014le)15 b Fd(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)41 b Fe(25)150 1948 y(load)26 b(pro)r(cedure,)g(tested)g(to)r(ols)7
-b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)32 b Fe(31)150 2058 y Ff(load_lib)27 b(")p
-Fc(library-\014le)t Ff(")15 b Fd(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40
-b Fe(25)150 2168 y(lo)r(cal)27 b(`)p Ff(site.exp)p Fe(')e
-Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47
-b Fe(19)150 2278 y(log)27 b(\014les,)f(where)g(to)g(write)7
-b Fd(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)32 b Fe(12)150 2388 y(Lupton,)25
-b(Rob)r(ert)10 b Fd(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36
-b Fe(43)150 2715 y Fu(M)150 2870 y Ff(make)27 b Fe(builds)e(part)h(of)g
-(tests)9 b Fd(.)k(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fe(49)150 2980 y
-Ff(make)27 b(check)12 b Fd(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)38 b Fe(3)150 3090 y(master)25
-b(`)p Ff(site.exp)p Fe(')g Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48
-b Fe(18)150 3199 y(Menapace,)27 b(Julia)20 b Fd(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fe(6)150
-3309 y Ff(mondfe)10 b Fd(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fe(32)150 3419
-y Ff(mondfe)p Fe(,)27 b(remote)f(testing)g(via)9 b Fd(.)j(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)34
-b Fe(11)150 3746 y Fu(N)150 3901 y Fe(name)25 b(\\DejaGn)n(u")c
-Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46
-b Fe(6)150 4011 y(name)25 b(for)h(remote)g(test)f(mac)n(hine)7
-b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)32 b Fe(12)150 4121 y(name)25 b(transformations)15
-b Fd(.)e(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(24)150 4231 y(name,)25
-b(initialization)j(mo)r(dule)13 b Fd(.)e(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fe(22)150
-4341 y(naming)25 b(con)n(v)n(en)n(tions)14 b Fd(.)e(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)40 b Fe(21)150 4450 y(naming)25 b(tests)h(to)g(run)14
-b Fd(.)e(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)40 b Fe(10)150 4560
-y(nativ)n(e)25 b(con\014guration)11 b Fd(.)j(.)e(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)37 b Fe(4)150 4670 y(nativ)n(e)25 b(con\014guration)i(test)8
-b Fd(.)k(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)33 b Fe(25)150 4780 y(net)n(w)n(ork)25
-b(\(IP\))h(pro)r(cedures)8 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34
-b Fe(27)150 4890 y Ff(NOTE)6 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 b Fe(9,)26
-b(24)150 5000 y Ff(note)h(")p Fc(string)6 b Ff(")g Fd(.)14
-b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32
-b Fe(24)2025 84 y Fu(O)2025 217 y Ff(objdir)10 b Fd(.)j(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35
-b Fe(17)2025 316 y(ob)t(ject)26 b(directory)e Fd(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fe(12)2025
-416 y(Op)r(ening)25 b(a)h(remote)f(connection)15 b Fd(.)e(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40
-b Fe(26)2025 516 y(op)r(erating)26 b(principles)13 b
-Fd(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fe(21)2025 615
-y(option)26 b(defaults)c Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)47 b Fe(17)2025 715 y(option)26 b(list,)g Ff(runtest)15
-b Fd(.)f(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fe(9)2025
-814 y(options)7 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fe(9)2025 914
-y(options)26 b(for)g Ff(runtest)p Fe(,)i(common)15 b
-Fd(.)c(.)h(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)41 b Fe(4)2025 1014 y(options,)26 b(Tcl)h(v)l(ariables)f(for)h
-(defaults)18 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-44 b Fe(17)2025 1113 y(order)26 b(of)g(tests)15 b Fd(.)e(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(21)2025
-1213 y(Ousterhout,)25 b(John)h(K.)16 b Fd(.)c(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)42 b Fe(8)2025 1313 y Ff(outdir)10 b Fd(.)j(.)f(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35
-b Fe(17)2025 1412 y(output)24 b(directory)14 b Fd(.)f(.)g(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)40 b Fe(12)2025 1512 y(output)24
-b(\014les)10 b Fd(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)36 b Fe(35)2025 1612 y(output,)25 b(additional)e
-Fd(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fe(13)2025
-1711 y(o)n(v)n(erriding)26 b(`)p Ff(site.exp)p Fe(')f
-Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fe(15)2025 1811 y(o)n(v)n(erview)20
-b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)46 b Fe(1)2025 2077 y Fu(P)2025 2210 y Ff(PASS)7
-b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)33 b Fe(6,)27 b(9)2025 2309 y Ff(pass)f(")p
-Fc(string)6 b Ff(")g Fd(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)32 b Fe(24)2025 2409 y(path)25 b(lo)r(okup)15
-b Fd(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41
-b Fe(28)2025 2509 y(pattern)25 b(matc)n(h,)g(directory)d
-Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)48 b Fe(28)2025 2608 y(pattern)25
-b(matc)n(h,)g(\014lenames)18 b Fd(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b
-Fe(28)2025 2708 y Ff(perror)27 b(")p Fc(string)33 b(n)n(um)n(b)r(er)5
-b Ff(")h Fd(.)11 b(.)h(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)32 b Fe(23)2025 2807 y(p)r(ersonal)26
-b(con\014g)g(`)p Ff(site.exp)p Fe(')12 b Fd(.)j(.)e(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)38
-b Fe(20)2025 2907 y Ff(pop_host)7 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fe(29)2025
-3007 y Ff(pop_target)24 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)48 b Fe(29)2025 3106 y(p)r(orting)26
-b(to)g(a)g(new)g(host)18 b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43
-b Fe(48)2025 3206 y(POSIX)24 b(conformance)e Fd(.)13
-b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fe(6)2025 3306 y
-Ff(prefix)p Fe(,)27 b(con\014gure)f(options)9 b Fd(.)j(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34
-b Fe(49)2025 3405 y(Prin)n(t)25 b(a)h(bac)n(ktrace)17
-b Fd(.)c(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 b Fe(31)2025
-3505 y(Prin)n(t)25 b(global)j(v)l(ariable)e(v)l(alues)14
-b Fd(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)40 b Fe(30)2025 3605 y(Prin)n(t)25 b(lo)r(cal)j(v)l(ariable)e
-(v)l(alue)15 b Fd(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(30)2025 3704 y(Prin)n(t)25
-b(pro)r(cedure)h(b)r(o)r(dies)15 b Fd(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40
-b Fe(30)2025 3804 y Ff(print)26 b Fd(var)d(.)12 b(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)39 b Fe(31)2025
-3904 y(Prin)n(t)25 b(w)n(atc)n(hp)r(oin)n(ts)8 b Fd(.)14
-b(.)e(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fe(30)2025
-4003 y(Prin)n(ting)26 b(v)l(ariable)g(v)l(alues)21 b
-Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)47 b Fe(31)2025 4103 y(PRMS)25
-b(bug)h(n)n(um)n(b)r(er)17 b Fd(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)46
-b Fe(42)2025 4202 y Ff(prms_id)8 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fe(42)2025
-4302 y(problem,)25 b(detected)g(b)n(y)g(test)h(case)17
-b Fd(.)c(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-44 b Fe(9)2025 4402 y Ff(prune)26 b Fc(list)i(pattern)9
-b Fd(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fe(29)2025
-4501 y Ff(prune_system_crud)29 b Fc(system)c(text)d Fd(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47
-b Fe(29)2025 4601 y(pruning)25 b(system)g(output,)g(examining)g
-(program)g(output)2193 4701 y Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)40
-b Fe(29)2025 4800 y Ff(psource)27 b Fc(\014lename)22
-b Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fe(28)2025
-4900 y Ff(push_host)27 b Fd(name)14 b(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)34 b Fe(29)2025 5000 y Ff(push_target)28
-b Fd(name)i(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 b Fe(29)p
-eop
-%%Page: 54 56
-54 55 bop 150 -116 a Fv(54)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 657 y Fu(Q)150 810
-y Ff(quit)13 b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fe(31)150 919
-y(Quiting)26 b(DejaGn)n(u)19 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)45 b Fe(31)150 1243 y Fu(R)150 1396 y Fe(ranlib)26
-b(a)g(\014le)8 b Fd(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)33 b Fe(30)150 1506 y Ff(reboot)10 b Fd(.)j(.)g(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35
-b Fe(17)150 1615 y(reb)r(o)r(oting)27 b(remote)e(targets)c
-Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)45 b Fe(12)150 1724 y(regular)27 b(expression,)f
-(\014le)g(con)n(ten)n(ts)18 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)44 b Fe(28)150 1833 y(remote)25
-b(connection)h(pro)r(cedures)8 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33 b Fe(26)150 1942
-y(remote)25 b(connection,)i(ending)12 b Fd(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38
-b Fe(27)150 2052 y(remote)25 b(test)h(mac)n(hine)f(name)11
-b Fd(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)37 b Fe(12)150 2161 y(remote)25 b(testb)r(ed,)h(connecting)
-g(to)8 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)34 b Fe(11)150 2270 y(remote)25 b(testing)13
-b Fd(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)39
-b Fe(32)150 2379 y(remote)25 b(testing)h(via)g Ff(kermit)21
-b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)45 b Fe(11)150 2488 y(remote)25 b(testing)h(via)g
-Ff(mondfe)21 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)45 b Fe(11)150 2597 y(remote)25
-b(testing)h(via)g Ff(rlogin)21 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)45 b Fe(11)150
-2707 y(remote)25 b(testing)h(via)g Ff(rsh)f Fd(.)12 b(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-49 b Fe(11)150 2816 y(remote)25 b(testing)h(via)g Ff(telnet)21
-b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)45 b Fe(11)150 2925 y(remote)25 b(testing)h(via)g
-Ff(tip)f Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)49 b Fe(11)150 3034
-y Ff(remote.exp)24 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)47 b Fe(26)150 3143 y Ff(remote_close)28
-b Fc(shellid)10 b Fd(.)j(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b
-Fe(27)150 3253 y Ff(remote_open)c Fc(t)n(yp)r(e)e Fd(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(26)150 3362
-y Ff(rlogin)27 b Fc(hostname)20 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)42 b Fe(27)150 3471 y Ff(rlogin)p Fe(,)27 b(remote)f(testing)g
-(via)9 b Fd(.)j(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)34 b Fe(11)150 3580 y Ff(rsh)26 b
-Fc(hostname)e Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-46 b Fe(27)150 3689 y Ff(rsh)p Fe(,)27 b(remote)e(testing)h(via)13
-b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)39 b Fe(11)150 3799 y(running)16
-b Fd(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)42 b Fe(9)150 3908 y(running)25 b(tests)17
-b Fd(.)c(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fe(3)150 4017 y Ff(runtest)27 b Fe(description)12 b
-Fd(.)h(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38 b Fe(9)150
-4126 y Ff(runtest)27 b Fe(exit)f(co)r(de)8 b Fd(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fe(9)150
-4235 y Ff(runtest)27 b Fe(option)f(defaults)17 b Fd(.)c(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42
-b Fe(17)150 4344 y Ff(runtest)27 b Fe(option)f(list)7
-b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)33 b Fe(9)150
-4454 y Ff(runtest)p Fe(,)28 b(listing)e(options)21 b
-Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)45 b Fe(11)150 4563 y Ff(runtest)p
-Fe(,)28 b(most)d(common)f(options)16 b Fd(.)d(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)42 b Fe(4)150 4672
-y Ff(runtest)p Fe(,)28 b(v)l(ariable)e(defns)g(on)f(cmdline)12
-b Fd(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)37
-b Fe(10)150 4781 y Ff(runtest.exp)23 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fe(21)150 4890 y
-Ff(runtest_file_p)29 b Fc(run)n(tests)f(testcase)17 b
-Fd(.)d(.)e(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39
-b Fe(29)150 5000 y Ff(runtests)7 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fe(17)2025
-681 y Fu(S)2025 835 y Fe(searc)n(hing)26 b(\014le)g(con)n(ten)n(ts)13
-b Fd(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fe(28)2025 945 y(selecting)27
-b(a)f(range)g(of)g(tests)15 b Fd(.)e(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)41 b Fe(10,)27 b(29)2025
-1054 y(selecting)g(tests)f(for)g(a)g(to)r(ol)16 b Fd(.)e(.)e(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42
-b Fe(10)2025 1164 y(serial)27 b(do)n(wnload,)g Ff(tip)22
-b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fe(27)2025 1274
-y(serial)27 b(line)f(connection,)g Ff(kermit)15 b Fd(.)f(.)f(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b
-Fe(27)2025 1383 y(serial)27 b(line)f(connection,)g Ff(tip)21
-b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)45 b Fe(27)2025 1493 y(set)26 b(curren)n(t)f(host)9
-b Fd(.)j(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)34
-b Fe(29)2025 1602 y(set)26 b(curren)n(t)f(target)15 b
-Fd(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(29)2025
-1712 y Ff(set_warning_threshold)30 b Fc(threshold)20
-b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fe(24)2025 1822 y Ff(setenv)27 b Fc(v)l(ar)j(v)l(al)10
-b Fd(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32
-b Fe(29)2025 1931 y(setting)26 b(defaults)g(for)h(DejaGn)n(u)f(v)l
-(ariables)17 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42
-b Fe(15)2025 2041 y(setting)26 b(en)n(vironmen)n(t)e(v)l(ariables)15
-b Fd(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-41 b Fe(29)2025 2150 y(setting)26 b(up)f(targets)12 b
-Fd(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fe(22)2025
-2260 y Ff(setup_xfail)28 b(")p Fc(con\014g)k Fe([)p Fc(bugid)s
-Fe(])p Ff(")10 b Fd(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)36 b Fe(25)2025 2369 y Ff(site.exp)7 b
-Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)32 b Fe(15)2025 2479 y(`)p Ff(site.exp)p Fe(')c(for)e(all)h(of)
-f(DejaGn)n(u)13 b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)38 b Fe(18)2025 2589 y(`)p Ff(site.exp)p
-Fe(')28 b(for)e(eac)n(h)g(p)r(erson)8 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)34
-b Fe(20)2025 2698 y(`)p Ff(site.exp)p Fe(')28 b(for)e(eac)n(h)g(to)r
-(ol)17 b Fd(.)c(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fe(19)2025 2808 y(`)p
-Ff(site.exp)p Fe(',)28 b(m)n(ultiple)23 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)50 b Fe(15)2025 2917 y Ff(slay)26 b Fc(name)21 b
-Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-43 b Fe(28)2025 3027 y(sla)n(ying)26 b(pro)r(cesses)9
-b Fd(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35
-b Fe(28)2025 3137 y(source)26 b(directory)d Fd(.)12 b(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(12)2025 3246 y(sourcing)26
-b(Tcl)h(\014les)7 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-32 b Fe(28)2025 3356 y(sp)r(ecial)27 b(v)l(ariables)20
-b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45
-b Fe(42)2025 3465 y(sp)r(ecifying)26 b(target)h(name)18
-b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(11)2025 3575 y(sp)r(ecifying)26
-b(the)g(build)f(con\014g)h(name)19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fe(11)2025 3685 y(sp)r(ecifying)26
-b(the)g(host)g(con\014g)f(name)17 b Fd(.)12 b(.)g(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fe(11)2025 3794 y(sp)r(ecifying)26
-b(the)g(target)g(con\014guration)d Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)48 b Fe(12)2025 3904 y Ff(srcdir)10 b
-Fd(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)35 b Fe(17)2025 4013 y(standard)25 b(conformance:)35
-b(POSIX)25 b(1003.3)17 b Fd(.)e(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44
-b Fe(6)2025 4123 y(start)26 b(pro)r(cedure,)g(tested)f(to)r(ols)16
-b Fd(.)e(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)42 b Fe(31)2025 4232 y(starting)26 b(in)n(teractiv)n(e)g(to)r(ols)f
-Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)49 b Fe(22)2025 4342 y(starting)26
-b(the)f(tcl)h(debugger)20 b Fd(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fe(13)2025
-4452 y Ff(subdir)10 b Fd(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fe(42)2025 4561
-y(success,)27 b(POSIX)d(de\014nition)f Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49
-b Fe(6)2025 4671 y(successful)27 b(test)19 b Fd(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45
-b Fe(9)2025 4780 y(successful)27 b(test,)f(unexp)r(ected)c
-Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)50 b Fe(9)2025 4890 y(su\016x,)25 b Ff(expect)i
-Fe(scripts)12 b Fd(.)i(.)e(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39
-b Fe(1)2025 5000 y(summary)23 b(log)e Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fe(35)p eop
-%%Page: 55 57
-55 56 bop 150 -116 a Fv(Index)3286 b(55)150 84 y Fu(T)150
-217 y Fe(target)26 b(con\014guration)h(test)10 b Fd(.)i(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35
-b Fe(25)150 316 y(target)26 b(con\014guration,)h(sp)r(ecifying)d
-Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)49
-b Fe(12)150 416 y(target)26 b(dep)r(enden)n(t)f(pro)r(cedures)11
-b Fd(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)37 b Fe(31)150 516 y(target)26 b(mac)n(hine)f(name)10
-b Fd(.)i(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fe(11)150 615 y(target,)27
-b(explained)8 b Fd(.)k(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fe(49)150 715 y Ff(target.exp)24 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fe(29)150 815 y
-Ff(target_triplet)16 b Fd(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-42 b Fe(17)150 914 y Ff(targetname)24 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fe(17)150 1014
-y(targets)12 b Fd(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fe(32)150 1113 y(tcl)13
-b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fe(8)150 1213
-y(tcl)26 b(debugger)11 b Fd(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)37 b Fe(13)150 1313 y(Tcl)27 b(v)l(ariables)f(for)g
-(option)g(defaults)8 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)33 b Fe(17)150 1412 y(Tcl)27 b(v)l(ariables,)f
-(de\014ning)f(for)i Ff(runtest)22 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)46 b Fe(10)150 1512 y Fc(tclv)l(ar)5
-b Ff(=)p Fc(v)l(alue)16 b Fd(.)d(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)38 b Fe(10)150 1612 y Ff(telnet)27
-b Fc(hostname)i(p)r(ort)24 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47
-b Fe(27)150 1711 y Ff(telnet)p Fe(,)27 b(remote)f(testing)g(via)9
-b Fd(.)j(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)34 b Fe(11)150 1811 y(terminating)25 b(remote)h(connection)
-10 b Fd(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-36 b Fe(27)150 1911 y(test)26 b(case)g(cannot)g(run)7
-b Fd(.)k(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fe(9)150
-2010 y(test)26 b(case)g(messages)d Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)48 b Fe(9)150 2110 y(test)26 b(case)g(w)n(arnings)f
-Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 b Fe(9)150
-2210 y(test)26 b(case,)h(debugging)8 b Fd(.)k(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)33 b Fe(40)150 2309 y(test)26 b(case,)h(declaring)f(am)n(biguit)n
-(y)10 b Fd(.)i(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)36 b Fe(24)150 2409 y(test)26 b(case,)h(declaring)f(failure)17
-b Fd(.)d(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)43 b Fe(24)150 2508 y(test)26 b(case,)h(declaring)f(no)g
-(supp)r(ort)13 b Fd(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)38 b Fe(24)150 2608 y(test)26 b(case,)h(declaring)f(no)g
-(test)8 b Fd(.)k(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)33 b Fe(24)150 2708 y(test)26 b(case,)h(declaring)f
-(success)f Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)49 b Fe(24)150 2807 y(test)26 b(case,)h(ERR)n(OR)d
-(in)12 b Fd(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38 b Fe(23)150
-2907 y(test)26 b(case,)h(exp)r(ecting)e(failure)9 b Fd(.)14
-b(.)e(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)34 b Fe(25)150 3007 y(test)26 b(case,)h(informational)g
-(messages)8 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)34 b Fe(24)150 3106 y(test)26 b(case,)h(W)-9 b(ARNING)24
-b(in)12 b Fd(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fe(23)150 3206 y(test)26
-b(case,)h(W)-9 b(ARNING)24 b(threshold)16 b Fd(.)c(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fe(24)150 3306
-y(test)26 b(case,)h(writing)c Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)48 b Fe(39)150 3405 y(test)26 b(cases,)h(debug)e(log)c
-Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fe(11)150 3505
-y(test)26 b(directories,)h(naming)22 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48
-b Fe(21)150 3605 y(test)26 b(\014lename)c Fd(.)12 b(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 b Fe(21)150 3704 y(test)26
-b(output,)f(displa)n(ying)h(all)c Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)46 b Fe(10)150
-3804 y(test)26 b(programs,)g(auxiliary)16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42
-b Fe(12)150 3903 y(test)26 b(suite)g(distributions)21
-b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)47 b Fe(49)150 4003 y(test,)26
-b(failing)12 b Fd(.)i(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)38 b Fe(9)150 4103 y(test,)26 b(successful)8
-b Fd(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34
-b Fe(9)150 4202 y(test,)26 b(unresolv)n(ed)f(outcome)c
-Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)47 b Fe(9)150 4302 y(test,)26
-b(unsupp)r(orted)14 b Fd(.)d(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40
-b Fe(9)150 4402 y(tests,)26 b(running)6 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fe(3)150 4501
-y(tests,)26 b(running)f(order)14 b Fd(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-39 b Fe(21)150 4601 y(tests,)26 b(running)f(sp)r(eci\014cally)e
-Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)48 b Fe(10,)26 b(29)150 4701 y(TET)10 b Fd(.)k(.)e(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)37
-b Fe(6)150 4800 y Ff(tip)26 b Fc(p)r(ort)c Fd(.)12 b(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45
-b Fe(27)150 4900 y Ff(tip)p Fe(,)27 b(remote)e(testing)h(via)13
-b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)39 b Fe(11)150 5000 y Ff(tip_download)28
-b Fc(spa)n(wnid)h(\014le)f Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fe(27)2025 368
-y Ff(tool)13 b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 b Fe(17)2025 472
-y(to)r(ol)26 b(command)e(language)d Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45
-b Fe(8)2025 576 y(to)r(ol)26 b(initialization)d Fd(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fe(22)2025
-681 y(to)r(ol)26 b(name,)g(as)g(installed)c Fd(.)12 b(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-46 b Fe(24)2025 785 y(to)r(ol)26 b(names)g(and)f(naming)g(con)n(v)n(en)
-n(tions)17 b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42
-b Fe(21)2025 889 y Fc(to)r(ol)s Ff(_exit)17 b Fd(.)d(.)f(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fe(31)2025
-994 y Fc(to)r(ol)s Ff(_load)17 b Fd(.)d(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fe(31)2025 1098
-y Fc(to)r(ol)s Ff(_start)16 b Fd(.)e(.)f(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b Fe(31)2025 1202 y Fc(to)r(ol)s
-Ff(_version)13 b Fd(.)i(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)39 b Fe(32)2025 1307 y Ff(tracelevel)24 b Fd(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48
-b Fe(17)2025 1411 y(tracing)26 b(Tcl)h(commands)22 b
-Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fe(12)2025 1516 y Ff(transform)25
-b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-49 b Fe(22)2025 1620 y Ff(transform)27 b(")p Fc(to)r(olname)t
-Ff(")14 b Fd(.)g(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fe(24)2025 1724
-y(transform)26 b(to)r(ol)g(name)19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-45 b Fe(24)2025 1829 y(turning)25 b(on)h(output)d Fd(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fe(13)2025 2123
-y Fu(U)2025 2266 y Fe(unexp)r(ected)24 b(success)7 b
-Fd(.)14 b(.)e(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fe(9)2025
-2370 y Ff(UNRESOLVED)17 b Fd(.)d(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)42 b Fe(7,)27 b(9)2025 2475 y Ff(unresolved)h(")p
-Fc(string)6 b Ff(")16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41
-b Fe(24)2025 2579 y(unset)25 b(curren)n(t)g(host)c Fd(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fe(29)2025 2684
-y(unset)25 b(curren)n(t)g(target)9 b Fd(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-34 b Fe(29)2025 2788 y Ff(unsetenv)27 b Fc(v)l(ar)17
-b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)37
-b Fe(29)2025 2892 y(unsetting)25 b(en)n(vironmen)n(t)f(v)l(ariables)9
-b Fd(.)k(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35
-b Fe(29)2025 2997 y Ff(UNSUPPORTED)15 b Fd(.)g(.)d(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(7,)27 b(9)2025 3101 y
-Ff(unsupported)h(")p Fc(string)6 b Ff(")14 b Fd(.)g(.)e(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-40 b Fe(24)2025 3205 y(unsupp)r(orted)24 b(test)6 b Fd(.)13
-b(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fe(9)2025
-3310 y Ff(UNTESTED)21 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)45 b Fe(7,)27 b(9)2025 3414 y
-Ff(untested)g(")p Fc(string)6 b Ff(")20 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)44 b Fe(24)2025 3519 y(un)n(tested)25 b(prop)r(erties)f
-Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fe(9)2025
-3623 y(utilities,)27 b(loading)g(from)e(init)h(\014le)15
-b Fd(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-40 b Fe(23)2025 3727 y Ff(utils.exp)25 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fe(28)2025
-4022 y Fu(V)2025 4165 y Fe(v)l(ariables)26 b(for)h(all)f(tests)15
-b Fd(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)41 b Fe(42)2025 4269
-y(v)l(ariables)26 b(for)h(option)f(defaults)c Fd(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47
-b Fe(17)2025 4373 y(v)l(ariables)26 b(of)h(DejaGn)n(u,)f(defaults)21
-b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-46 b Fe(15)2025 4478 y Ff(verbose)8 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b
-Fe(17)2025 4582 y Ff(verbose)27 b Fe([)p Ff(-log)p Fe(])g([)p
-Ff(-n)p Fe(])g([)p Ff(--)p Fe(])g Ff(")p Fc(string)6
-b Ff(")27 b Fc(n)n(um)n(b)r(er)21 b Fd(.)12 b(.)h(.)f(.)g(.)g(.)44
-b Fe(26)2025 4686 y Ff(verbose)27 b Fe(builtin)e(function)6
-b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)32 b Fe(26)2025 4791 y(v)n(ersion)26
-b(n)n(um)n(b)r(ers)18 b Fd(.)10 b(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)44 b Fe(13)2025 4895 y(v)n(ersion)26 b(pro)r(cedure,)g(tested)f(to)
-r(ols)14 b Fd(.)g(.)e(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)40 b Fe(32)2025 5000 y(VxW)-6 b(orks,)25 b(link)g(with)h(`)p
-Ff(-r)p Fe(')16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b Fe(33)p eop
-%%Page: 56 58
-56 57 bop 150 -116 a Fv(56)2364 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 147 y Fu(W)150 282
-y Ff(WARNING)22 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)46 b Fe(9,)26 b(23)150 383 y Ff(warning)h(")p
-Fc(string)33 b(n)n(um)n(b)r(er)5 b Ff(")22 b Fd(.)12
-b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)48 b Fe(23)150 483 y(W)-6 b(atc)n(h)25 b(when)h(a)g(v)l(ariable)
-g(is)g(read)19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)44 b Fe(30)150 584 y(W)-6 b(atc)n(h)25
-b(when)h(a)g(v)l(ariable)g(is)g(unset)19 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fe(30)150 685
-y(W)-6 b(atc)n(h)25 b(when)h(a)g(v)l(ariable)g(is)g(written)f
-Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50
-b Fe(30)150 785 y Ff(watchdel)27 b Fd(watch)j(.)13 b(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(31)150 886 y Ff(watchread)28
-b Fd(var)16 b(.)d(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33
-b Fe(30)150 987 y Ff(watchunset)28 b Fd(var)14 b(.)f(.)g(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fe(30)150 1087 y Ff(watchwrite)c
-Fd(var)14 b(.)f(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32
-b Fe(30)2025 90 y(What)25 b(is)h(New)17 b Fd(.)c(.)g(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fe(3)2025 189
-y Ff(which)26 b Fc(binary)21 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)40 b Fe(28)2025 289 y(writing)26
-b(a)g(test)g(case)21 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45
-b Fe(39)2025 556 y Fu(X)2025 688 y Ff(XFAIL)25 b Fd(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)50 b Fe(6,)27 b(9)2025 788 y(XF)-9 b(AIL,)25 b(a)n(v)n(oiding)h
-(for)h(POSIX)19 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)47 b Fe(6)2025 888 y Ff(XFAIL)p
-Fe(,)27 b(pro)r(ducing)20 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)46 b Fe(25)2025 988 y Ff(XPASS)12 b Fd(.)h(.)g(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38
-b Fe(9)2025 1087 y Ff(XPASS)p Fe(,)27 b(pro)r(ducing)20
-b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)46 b Fe(25)p
-eop
-%%Page: -1 59
--1 58 bop 3725 -116 a Fv(i)150 100 y Fs(T)-13 b(able)54
-b(of)g(Con)l(ten)l(ts)150 442 y Fu(1)135 b(What)45 b(is)g(DejaGn)l(u?)
-24 b Fb(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h
-(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)69 b Fu(1)150
-711 y(2)135 b(What)45 b(is)g(new)g(in)g(this)g(release)i(?)29
-b Fb(.)19 b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)73
-b Fu(3)449 848 y Fv(2.1)92 b(Running)28 b(existing)h(tests)20
-b Fn(.)c(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)49 b Fv(3)449 958 y(2.2)92 b(What)31 b(do)s(es)f(a)h(DejaGn)m(u)g
-(test)g(lo)s(ok)f(lik)m(e?)f Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)59 b Fv(5)449
-1068 y(2.3)92 b(Design)30 b(goals)23 b Fn(.)16 b(.)f(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)53 b Fv(5)449 1177 y(2.4)92 b(A)30 b(POSIX)g(conforming)f(test)
-j(framew)m(ork)25 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Fv(6)449
-1287 y(2.5)92 b(F)-8 b(uture)30 b(directions)17 b Fn(.)d(.)h(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-47 b Fv(8)449 1396 y(2.6)92 b(Tcl)30 b(and)f(Exp)s(ect)e
-Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Fv(8)150 1639 y Fu(3)135
-b(Using)45 b Fa(runtest)11 b Fb(.)16 b(.)k(.)f(.)h(.)f(.)h(.)f(.)g(.)h
-(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)
-h(.)f(.)g(.)56 b Fu(9)150 1909 y(4)135 b(Setting)46 b
-Fa(runtest)41 b Fu(defaults)26 b Fb(.)21 b(.)e(.)h(.)f(.)g(.)h(.)f(.)h
-(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)71 b Fu(15)748
-2046 y Fv(4.0.1)93 b(Con\014g)29 b(V)-8 b(ariables)17
-b Fn(.)d(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46
-b Fv(15)748 2155 y(4.0.2)93 b(Master)31 b(Con\014g)f(File)13
-b Fn(.)h(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)43 b
-Fv(18)748 2265 y(4.0.3)93 b(Lo)s(cal)30 b(Con\014g)g(File)22
-b Fn(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51
-b Fv(19)748 2374 y(4.0.4)93 b(P)m(ersonal)30 b(Con\014g)g(File)24
-b Fn(.)15 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Fv(20)150
-2617 y Fu(5)135 b(The)44 b(DejaGn)l(u)h(Implemen)l(tation)28
-b Fb(.)22 b(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)73
-b Fu(21)449 2754 y Fv(5.1)92 b(Con)m(v)m(en)m(tions)31
-b(for)f(using)f(to)s(ol)h(names)16 b Fn(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45
-b Fv(21)449 2863 y(5.2)92 b(Initialization)28 b(mo)s(dule)d
-Fn(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)56 b Fv(22)449 2973 y(5.3)92 b(DejaGn)m(u)31 b(pro)s(cedures)14
-b Fn(.)g(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)44 b Fv(23)748 3083 y(5.3.1)93 b(Core)30 b(In)m(ternal)g(Pro)s
-(cedures)15 b Fn(.)e(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 b Fv(23)748 3192
-y(5.3.2)93 b(Remote)31 b(Comm)m(unication)e(Pro)s(cedures)14
-b Fn(.)g(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)43
-b Fv(26)748 3302 y(5.3.3)93 b(Utilit)m(y)29 b(Pro)s(cedures)21
-b Fn(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)50
-b Fv(28)748 3411 y(5.3.4)93 b(Cross)29 b(target)j(pro)s(cedure)17
-b Fn(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47 b Fv(29)748 3521 y(5.3.5)93
-b(Debugging)30 b(Pro)s(cedures)25 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-55 b Fv(30)449 3631 y(5.4)92 b(T)-8 b(arget)32 b(dep)s(enden)m(t)d(pro)
-s(cedures)13 b Fn(.)h(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)42
-b Fv(31)449 3740 y(5.5)92 b(Remote)32 b(targets)f(supp)s(orted)10
-b Fn(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)39
-b Fv(32)449 3850 y(5.6)92 b(The)30 b(\014les)f(DejaGn)m(u)i(reads)26
-b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55
-b Fv(34)449 3959 y(5.7)92 b(The)30 b(\014les)f(DejaGn)m(u)i(writes)11
-b Fn(.)j(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
-b Fv(35)748 4069 y(5.7.1)93 b(Summary)28 b(log)14 b Fn(.)i(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)43 b
-Fv(35)748 4178 y(5.7.2)93 b(Detailed)30 b(log)17 b Fn(.)e(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47
-b Fv(36)748 4288 y(5.7.3)93 b(Logging)30 b Fr(expect)f
-Fv(in)m(ternal)g(actions)f Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)57 b Fv(36)150 4531 y Fu(6)135
-b(Ho)l(w)45 b(T)-11 b(o)45 b(W)-11 b(rite)45 b(a)h(T)-11
-b(est)44 b(Case)39 b Fb(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h
-(.)f(.)h(.)f(.)h(.)82 b Fu(39)449 4667 y Fv(6.1)92 b(W)-8
-b(riting)30 b(a)g(test)i(case)25 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 b Fv(39)449
-4777 y(6.2)92 b(Debugging)30 b(a)h(test)g(case)f Fn(.)15
-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58
-b Fv(40)449 4887 y(6.3)92 b(Adding)29 b(a)h(test)i(case)f(to)g(a)g
-(test)g(suite)19 b Fn(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)48 b Fv(40)449
-4996 y(6.4)92 b(Hin)m(ts)30 b(on)g(writing)f(a)h(test)i(case)22
-b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51
-b Fv(41)449 5106 y(6.5)92 b(Sp)s(ecial)29 b(v)-5 b(ariables)29
-b(used)g(b)m(y)h(test)i(cases)23 b Fn(.)15 b(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52
-b Fv(42)p eop
-%%Page: -2 60
--2 59 bop 150 -116 a Fv(ii)2402 b(DejaGn)m(u)32 b(T)-8
-b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(7)135 b(New)45
-b(T)-11 b(o)t(ols,)45 b(T)-11 b(argets,)46 b(or)f(Hosts)23
-b Fb(.)e(.)e(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)68
-b Fu(43)449 220 y Fv(7.1)92 b(W)-8 b(riting)30 b(tests)h(for)f(a)h(new)
-e(to)s(ol)19 b Fn(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)48
-b Fv(43)449 330 y(7.2)92 b(Adding)29 b(a)h(target)17
-b Fn(.)g(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)46 b Fv(48)449 439 y(7.3)92 b(P)m(orting)30
-b(to)h(a)g(new)f(host)f Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)58 b Fv(48)150 682 y Fu(App)t(endix)44
-b(A)134 b(Installing)46 b(DejaGn)l(u)29 b Fb(.)20 b(.)f(.)h(.)f(.)g(.)h
-(.)f(.)h(.)f(.)h(.)f(.)g(.)74 b Fu(49)449 819 y Fv(A.1)92
-b(Con\014guring)28 b(the)i(DejaGn)m(u)i(test)f(driv)m(er)9
-b Fn(.)k(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)38 b Fv(49)449 928 y(A.2)92 b(Installing)28
-b(DejaGn)m(u)10 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)39 b Fv(49)150 1171 y Fu(Index)e
-Fb(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h
-(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)
-h(.)f(.)g(.)h(.)f(.)82 b Fu(51)p eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
+++ /dev/null
-o\input texinfo @c -*- Texinfo -*-
-@finalout
-@setfilename dejagnu.info
-@c
-@c This file documents the GNU Testing Framework ``DejaGnu''
-@c
-@c Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-@c
-@c This text may be freely distributed under the terms of the GNU
-@c General Public License.
-@c
-
-@c FIXME---MAIN TODO LIST!
-@c
-@c * Revisit organization.
-@c
-@c * discuss Tcl/expect basics---enough to get started (see seminar notes).
-@c Maybe this would permit abbreviating appendices.
-
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* DejaGnu: (dejagnu). The GNU testing framework.
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-
-@syncodeindex ky cp
-@syncodeindex fn cp
-
-@setchapternewpage odd
-@settitle DejaGnu Testing Framework
-@titlepage
-@title The DejaGnu Testing Framework
-@subtitle for DejaGnu Version 1.3
-@sp 1
-@subtitle Jan 1996
-@author Rob Savoye
-@page
-
-@tex
-{\parskip=0pt \hfill Cygnus Support}
-@end tex
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@noindent
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
-@end titlepage
-
-@ifinfo
-Copyright @copyright{} 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries a copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
-
-@node Top
-@top DejaGnu
-
-DejaGnu is a framework for running test suites on software tools.
-
-This file describes version 1.3 of DejaGnu.
-
-@menu
-* Overview:: What is DejaGnu?
-* What is New:: What is new in this release.
-* Invoking runtest:: Using `runtest', the main test driver
-* Customizing:: Setting `runtest' defaults
-* Internals:: The DejaGnu implementation
-* Tests:: How to write a test case
-* Extending:: New tools, new targets, and new hosts
-* Installation:: Configuring and Installing DejaGnu
-* Index:: Index
-@end menu
-@end ifinfo
-
-@iftex
-@raggedbottom
-@end iftex
-
-@node Overview
-@chapter What is DejaGnu?
-@cindex overview
-
-DejaGnu is a framework for testing other programs. Its purpose is to
-provide a single front end for all tests. Beyond this, DejaGnu offers
-several advantages for testing:
-
-@enumerate
-@item
-The flexibility and consistency of the DejaGnu framework make it easy
-to write tests for any program.
-
-@item
-DejaGnu provides a layer of abstraction which allows you to write tests
-that are portable to any host or target where a program must be tested.
-For instance, a test for GDB can run (from any Unix based host) on any
-target architecture that DejaGnu supports. Currently DejaGnu runs tests
-on several single board computers, whose operating software ranges from
-just a boot monitor to a full-fledged, Unix-like realtime OS.
-
-@item
-All tests have the same output format. This makes it easy to integrate
-testing into other software development processes. DejaGnu's output is
-designed to be parsed by other filtering script, and it is also human
-readable.
-@end enumerate
-
-DejaGnu is written in @code{expect}, which in turn uses @dfn{Tcl}---Tool
-command language.
-
-@cindex @code{expect} script names
-@kindex .exp
-@cindex suffix, @code{expect} scripts
-Running tests requires two things: the testing framework, and the test
-suites themselves. Tests are usually written in @code{expect} using
-Tcl, but you can also use a Tcl script to run a test suite that is not
-based on @code{expect}. (@code{expect} script filenames conventionally
-use @samp{.exp} as a suffix; for example, the main implementation of the
-DejaGnu test driver is in the file @file{runtest.exp}.)
-
-
-@menu
-* Running Tests:: A first look at running DejaGnu tests
-* Sample Test:: What does a DejaGnu test case look like?
-* Design Goals:: Goals behind DejaGnu
-* Posix:: DejaGnu conforms to POSIX 1003.3
-* Future Directions:: Where is DejaGnu going?
-* Tcl and Expect:: Reading more about Tcl and Expect
-@end menu
-
-@node What is New
-@chapter What is new in this release ?
-@cindex What is New
-
-This release has a number of substantial changes over version 1.2. The
-most visible change is that the version of expect and Tcl included in
-the release are up-to-date with the current stable net releases. Other
-changes are:
-
-@enumerate
-@item
-@c FIXME: add a link to the config section
-The config sub-system in DejaGnu has been completely redesigned. It now
-supports testing on remote hosts as well as remote targets.
-
-@item
-More builtin support for building target binaries with the correct
-linker flags. Currently this only works with GCC, preferably with a
-target support by @code{libgloss}.
-
-@item
-Lots of little bug fixes from a year of heavy use here at Cygnus
-Support.
-
-@item
-DejaGnu now uses @code{autoconf} for configuration.
-
-@item
-New test cases for DejaGnu have been added for the new features, plus
-the "--tool" option bug in the 1.2 testsuite has been fixed.
-
-@item
-The @code{--tool} option is now optional.
-
-@item
-@code{runtest} when searching for test drivers ignores all directories
-named SCCS, RCS, and CVS.
-
-@item
-There is now a generic keyword based test harness that uses comments in
-source code to control how each test case gets built and run.
-
-@item
-There is now some support for running a testsuite with multiple passes.
-
-@end enumerate
-
-@node Running Tests
-@section Running existing tests
-@cindex existing tests, running
-@cindex running tests
-@cindex tests, running
-
-@kindex make check
-To run tests from an existing collection, first use @code{configure} as
-usual to set up the source directory containing the tests. Then try
-running
-
-@example
-make check
-@end example
-
-@cindex @code{check} makefile target
-If the @code{check} target exists, it usually saves you some
-trouble---for instance, it can set up any auxiliary programs or other
-files needed by the tests.
-
-@cindex auxiliary files, building
-Once you have run @samp{make check} to build any auxiliary files, you
-might want to call the test driver @code{runtest} directly to repeat the
-tests. You may also have to call @code{runtest} directly for test
-collections with no @code{check} target in the @file{Makefile}.
-
-@c force page break to avoid losing footnote to another page
-@page
-@cindex @code{runtest}, most common options
-@cindex options for @code{runtest}, common
-Typically, you must use two command-line options: @samp{--tool}, to
-specify which set of tests to run@footnote{@samp{--tool} selects a
-particular suite of tests, @emph{not} the name of the executable program
-to run. @xref{Config Values,,Configuration dependent values}, for
-information on the variables that you can use to specify the names of
-programs to run.}, and @samp{--srcdir}, to specify where to find test
-directories.
-
-For example, if the directory @file{gdb/testsuite} contains a collection
-of DejaGnu tests for @sc{gdb}, you can run them like this:
-
-@example
-eg$ cd gdb/testsuite
-eg$ runtest --tool gdb
-@exdent @emph{Test output follows, ending with:}
-
- === gdb Summary ===
-
-# of expected passes 508
-# of expected failures 103
-/usr/latest/bin/gdb version 4.14.4 -nx
-@end example
-
-You can use the option @samp{--srcdir} to point to some other directory
-containing a collection of tests:
-
-@smallexample
-eg$ runtest --tool gdb --srcdir /devo/gdb/testsuite
-@end smallexample
-
-@cindex native configuration
-@cindex cross configuration
-These examples assume a @dfn{native} configuration, where the same
-computer runs both @code{runtest} and the tests themselves. When you
-have a @dfn{cross} configuration, the tests run on a different computer,
-controlled by the host running @code{runtest}. In this situation, you
-need the option @samp{--name} to specify the network address for the
-other computer:
-
-@smallexample
-eg$ runtest --tool gdb --name vx9.munist.com
-@end smallexample
-
-If you always use the same option values, you can record them in a file
-called @file{site.exp}, rather than typing them each time. @xref{Config
-Values,,Setting defaults for @code{runtest} options}.
-
-By default, @code{runtest} prints only the names of the tests it runs,
-output from any tests that have unexpected results, and a summary
-showing how many tests passed and how many failed. To display output
-from all tests (whether or not they behave as expected), use the
-@samp{--all} option. For more verbose output about processes being run,
-communication, and so on, use @samp{--verbose}. To see even more output,
-use multiple @samp{--verbose} options. @xref{Invoking runtest,,Using
-@code{runtest}}, for a more detailed explanation of each @code{runtest}
-option.
-
-Test output goes into two files in your current directory: summary
-output in @file{@var{tool}.sum}, and detailed output in
-@file{@var{tool}.log}. (@var{tool} refers to the collection of tests;
-for example, after a run with @samp{--tool gdb}, look for output files
-@file{gdb.sum} and @file{gdb.log}.) @xref{Output Files,,The files
-DejaGnu writes}.
-
-@node Sample Test
-@section What does a DejaGnu test look like?
-
-@cindex example
-Each DejaGnu test is an @code{expect} script; the tests vary widely in
-complexity, depending on the nature of the tool and the feature tested.
-
-@kindex gdb.t00/echo.exp
-@kindex echo.exp
-Here is a very simple @sc{gdb} test---one of the simplest tests shipped
-with DejaGnu (extracted from @file{gdb.t00/echo.exp}):@footnote{More
-recent @sc{gdb} tests use the @samp{gdb_test} procedure.
-An equivalent test using that procedure is @samp{ gdb_test "echo Hello
-world!" "Hello world!" }}
-@c FIXME! include xref in footnote, when gdb_test documented in some manual.
-@c @xref{}.
-@c Extra spaces in @samp above avoid running end ' against " inside.
-
-@cartouche
-@smallexample
-# send a string to the GDB stdin:
-send "echo Hello world!\n"
-
-# inspect the GDB stdout for the correct reply,
-# and determine whether the test passes or fails:
-expect @{
- -re "Hello world.*$prompt $" @{ pass "Echo test" @}
- -re "$prompt $" @{ fail "Echo test" @}
- timeout @{ fail "(timeout) Echo test" @}
- @}
-@end smallexample
-@end cartouche
-
-Though brief, this example is a complete test. It illustrates some of
-the main features of DejaGnu test scripts:
-
-@itemize @bullet
-@item
-The test case does not start the tested program (@sc{gdb} in this case);
-all test scripts for interactive tools can assume the corresponding tool
-is running.
-
-@item
-Comments start with @samp{#}.
-
-@item
-The main commands you use to control a tested program are @code{send}
-(to give it commands) and @code{expect} (to analyze its responses).
-
-@item
-The @code{expect} command uses a list of pairs; a pattern (regular
-expression if @samp{-re} specified), followed by an action to run if the
-pattern matches output from the program. Only the action for the
-@emph{first} matching pattern will execute.
-
-@item
-Test cases use the commands @code{pass} and @code{fail} to record the
-test outcome.
-@end itemize
-
-@node Design Goals
-@section Design goals
-@cindex design goals
-
-DejaGnu grew out of the internal needs of Cygnus Support. Cygnus
-maintains and enhances a variety of free programs in many different
-environments, and we needed a testing tool that:
-
-@itemize @bullet
-@item
-is useful to developers while fixing bugs;
-
-@item
-automates running many tests during a software release process;
-
-@item
-is portable among a variety of host computers;
-
-@item
-supports cross-development testing;
-
-@item
-permits testing interactive programs, like @sc{gdb}; and
-
-@item
-permits testing batch oriented programs, like @sc{gcc}.
-@end itemize
-
-Some of the requirements proved challenging. For example, interactive
-programs do not lend themselves very well to automated testing. But all
-the requirements are important: for instance, it is imperative to make
-sure that @sc{gdb} works as well when cross-debugging as it does in a
-native configuration.
-
-Probably the greatest challenge was testing in a cross-development
-environment (which can be a real nightmare). Most cross-development
-environments are customized by each developer. Even when buying
-packaged boards from vendors there are many differences. The
-communication interfaces vary from a serial line to ethernet. DejaGnu
-was designed with a modular communication setup, so that each kind of
-communication can be added as required, and supported thereafter. Once
-a communication procedure is coded, any test can use it. Currently
-DejaGnu can use @code{rsh}, @code{rlogin}, @code{telnet}, @code{tip},
-@code{kermit}, and @code{mondfe} for remote communications.
-
-@cindex name ``DejaGnu''
-@cindex DejaGnu, the name
-@cindex Menapace, Julia
-Julia Menapace first coined the term ``Deja Gnu'' to describe an earlier
-testing framework at Cygnus Support. When we replaced it with the
-Expect-based framework, it was like DejaGnu all over again@dots{}
-
-@node Posix
-@section A POSIX conforming test framework
-
-@cindex POSIX conformance
-@cindex standard conformance: POSIX 1003.3
-DejaGnu conforms to the @sc{posix} standard for test frameworks.
-
-@cindex TET
-@sc{posix} standard 1003.3 defines what a testing framework needs to
-provide, in order to permit the creation of @sc{posix} conformance
-test suites. This standard is primarily oriented to running @sc{posix}
-conformance tests, but its requirements also support testing of features
-not related to @sc{posix} conformance. @sc{posix} 1003.3 does not
-specify a particular testing framework, but at this time there is only
-one other @sc{posix} conforming test framework:
-@sc{tet}.@footnote{@sc{tet} was created by Unisoft for a consortium
-comprised of X/Open, Unix International, and the Open Software
-Foundation.}
-
-The @sc{posix} documentation refers to @dfn{assertions}. An assertion
-is a description of behavior. For example, if a standard says ``The sun
-shall shine'', a corresponding assertion might be ``The sun is
-shining.'' A test based on this assertion would pass or fail depending
-on whether it is daytime or nighttime. It is important to note that the
-standard being tested is never 1003.3; the standard being tested is some
-other standard, for which the assertions were written.
-
-As there is no test suite to test @emph{testing frameworks} for
-@sc{posix} 1003.3 conformance, verifying conformance to this standard is
-done by repeatedly reading the standard and experimenting. One of the
-main things 1003.3 does specify is the set of allowed output messages,
-and their definitions. Four messages are supported for a required
-feature of @sc{posix} conforming systems, and a fifth for a conditional
-feature. DejaGnu supports the use of all five output messages; in this
-sense a test suite that uses exactly these messages can be considered
-@sc{posix} conforming. These definitions specify the output of a test
-case:
-
-@ftable @code
-@cindex success, POSIX definition
-@item PASS
-A test has succeeded. That is, it demonstrated that the assertion is true.
-
-@cindex XFAIL, avoiding for POSIX
-@item XFAIL
-@sc{posix} 1003.3 does not incorporate the notion of expected failures,
-so @code{PASS}, instead of @code{XPASS}, must also be returned for test
-cases which were expected to fail and did not. This means that
-@code{PASS} is in some sense more ambiguous than if @code{XPASS} is also
-used. For information on @code{XPASS} and @code{XFAIL}, see
-@ref{Invoking runtest,,Using @code{runtest}}.
-
-@item FAIL
-@cindex failure, POSIX definition
-A test @emph{has} produced the bug it was intended to capture. That is,
-it has demonstrated that the assertion is false. The @code{FAIL}
-message is based on the test case only. Other messages are used to
-indicate a failure of the framework.
-
-As with @code{PASS}, @sc{posix} tests must return @code{FAIL} rather
-than @code{XFAIL} even if a failure was expected.
-
-@item UNRESOLVED
-@cindex ambiguity, required for POSIX
-A test produced indeterminate results. Usually, this means the test
-executed in an unexpected fashion; this outcome requires that a human
-being go over results, to determine if the test should have passed or
-failed. This message is also used for any test that requires human
-intervention because it is beyond the abilities of the testing
-framework. Any unresolved test should resolved to @code{PASS} or
-@code{FAIL} before a test run can be considered finished.
-
-Note that for @sc{posix}, each assertion must produce a test result
-code. If the test isn't actually run, it must produce @code{UNRESOLVED}
-rather than just leaving that test out of the output. This means that
-you have to be careful when writing tests, to not carelessly use tcl
-statements like @code{return}---if you alter the flow of control of the
-tcl code you must insure that every test still produces some result code.
-
-Here are some of the ways a test may wind up @code{UNRESOLVED}:
-
-@itemize @bullet
-@item
-A test's execution is interrupted.
-
-@item
-A test does not produce a clear result. This is usually because there
-was an @code{ERROR} from DejaGnu while processing the test, or because there
-were three or more @code{WARNING} messages. Any @code{WARNING} or
-@code{ERROR} messages can invalidate the output of the test. This
-usually requires a human being to examine the output to
-determine what really happened---and to improve the test case.
-
-@item
-A test depends on a previous test, which fails.
-
-@item
-The test was set up incorrectly.
-@end itemize
-
-@item UNTESTED
-A test was not run. This is a placeholder, used when there is no
-real test case yet.
-@end ftable
-
-@noindent
-The only remaining output message left is intended to test features that
-are specified by the applicable @sc{posix} standard as conditional:
-
-@ftable @code
-@item UNSUPPORTED
-There is no support for the tested case. This may mean that a
-conditional feature of an operating system, or of a compiler, is not
-implemented. DejaGnu also uses this message when a testing environment
-(often a ``bare board'' target) lacks basic support for compiling or
-running the test case. For example, a test for the system subroutine
-@code{gethostname} would never work on a target board running only a
-boot monitor.
-@end ftable
-
-DejaGnu uses the same output procedures to produce these messages for
-all test suites, and these procedures are already known to conform to
-@sc{posix} 1003.3. For a DejaGnu test suite to conform to @sc{posix}
-1003.3, you must avoid the @code{setup_xfail} procedure as described in
-the @code{PASS} section above, and you must be careful to return
-@code{UNRESOLVED} where appropriate, as described in the
-@code{UNRESOLVED} section above.
-
-@node Future Directions
-@section Future directions
-@cindex future directions
-
-In the near future, there are two parallel directions for DejaGnu
-development. The first is to add support for more hosts and targets.
-
-The second would permit testing programs with a more complex interface,
-whether text based or GUI based. Two components already exist: a Tcl
-based X window toolkit, and a terminal package for @code{expect}. Both
-of these could be merged into DejaGnu in a way that permits testing
-programs that run in each environment.
-
-Meanwhile, we hope DejaGnu enables the creation of test suites for
-conformance to @sc{ansi} C and C++, to @sc{posix}, and to other
-standards. We encourage you to make any test suites you create freely
-available, under the same terms as DejaGnu itself.
-
-@node Tcl and Expect
-@section Tcl and Expect
-@cindex tool command language
-@cindex tcl
-@cindex Ousterhout, John K.
-Tcl was introduced in a paper by John K. Ousterhout at the 1990 Winter
-Usenix conference, @cite{Tcl: An Embeddable Command Language}. That
-paper is included in PostScript form in the @file{doc} subdirectory of
-the Tcl distribution. The version of Tcl included in DejaGnu at this time is
-Tcl 7.4p3.
-
-@cindex @code{expect} scripting language
-@cindex Libes, Don
-Don Libes introduced @code{expect} in his paper @cite{expect: Curing
-Those Uncontrollable Fits of Interaction} at the 1990 Summer Usenix
-conference. The paper is included in PostScript form in the
-@code{expect} distribution (as are several other papers about
-@code{expect}). The version of expect included in DejaGnu at this time
-is expect 5.18.0.
-
-@node Invoking runtest
-@chapter Using @code{runtest}
-@cindex invoking
-@cindex running
-@cindex command line options
-@cindex options
-
-@cindex @code{runtest} description
-@cindex DejaGnu test driver
-@code{runtest} is the executable test driver for DejaGnu. You can
-specify two kinds of things on the @code{runtest} command line: command
-line options, and Tcl variables for the test scripts. The options are
-listed alphabetically below.
-
-@cindex exit code from @code{runtest}
-@cindex @code{runtest} exit code
-@code{runtest} returns an exit code of @code{1} if any test
-has an unexpected result; otherwise (if all tests pass or fail as
-expected) it returns @code{0} as the exit code.
-
-@code{runtest} flags the outcome of each test as one of these cases.
-(@xref{Posix,,A POSIX conforming test framework}, for a discussion of
-how @sc{posix} specifies the meanings of these cases.)
-
-@table @code
-@item PASS
-@kindex PASS
-@cindex successful test
-@cindex test, successful
-The most desirable outcome: the test succeeded, and was expected to
-succeed.
-
-@item XPASS
-@kindex XPASS
-@cindex successful test, unexpected
-@cindex unexpected success
-A pleasant kind of failure: a test was expected to fail, but succeeded.
-This may indicate progress; inspect the test case to determine whether
-you should amend it to stop expecting failure.
-
-@item FAIL
-@kindex FAIL
-@cindex failing test, unexpected
-@cindex test, failing
-A test failed, although it was expected to succeed. This may indicate
-regress; inspect the test case and the failing software to locate the bug.
-
-@item XFAIL
-@kindex XFAIL
-@cindex expected failure
-@cindex failing test, expected
-A test failed, but it was expected to fail. This result indicates no
-change in a known bug. If a test fails because the operating system
-where the test runs lacks some facility required by the test, the
-outcome is @code{UNSUPPORTED} instead.
-
-@item UNRESOLVED
-@kindex UNRESOLVED
-@cindex test, unresolved outcome
-Output from a test requires manual inspection; the test suite could not
-automatically determine the outcome. For example, your tests can report
-this outcome is when a test does not complete as expected.
-
-@item UNTESTED
-@kindex UNTESTED
-@cindex untested properties
-A test case is not yet complete, and in particular cannot yet produce a
-@code{PASS} or @code{FAIL}. You can also use this outcome in dummy
-``tests'' that note explicitly the absence of a real test case
-for a particular property.
-
-@item UNSUPPORTED
-@kindex UNSUPPORTED
-@cindex unsupported test
-@cindex test, unsupported
-A test depends on a conditionally available feature that does not exist
-(in the configured testing environment). For example, you can use this
-outcome to report on a test case that does not work on a particular
-target because its operating system support does not include a required
-subroutine.
-@end table
-
-@code{runtest} may also display the following messages:
-
-@table @code
-@item ERROR
-@kindex ERROR
-@cindex problem, detected by test case
-@cindex test case cannot run
-Indicates a major problem (detected by the test case itself) in running
-the test. This is usually an unrecoverable error, such as a missing file
-or loss of communication to the target. (@sc{posix} test suites should
-not emit this message; use @code{UNSUPPORTED}, @code{UNTESTED}, or
-@code{UNRESOLVED} instead, as appropriate.)
-
-@item WARNING
-@kindex WARNING
-@cindex test case warnings
-Indicates a possible problem in running the test. Usually warnings
-correspond to recoverable errors, or display an important message about
-the following tests.
-
-@item NOTE
-@kindex NOTE
-@cindex test case messages
-An informational message about the test case.
-@end table
-
-This is the full set of command line options that @code{runtest}
-recognizes. Arguments may be abbreviated to the shortest unique string.
-
-@cindex @code{runtest} option list
-@cindex option list, @code{runtest}
-@smallexample
-runtest --tool @var{tool} [ @var{testsuite}.exp @dots{} ]
-[ @var{testsuite}.exp="testfile1 @dots{}" ]
-[ @var{tclvar}=@var{value}@dots{} ]
-[ --all ] [ --baud @var{baud-rate} ] [ --connect @var{type} ]
-[ --debug ] [ --help ] [ --host @var{string} ]
-[ --mail "@var{name} @dots{}" ] [ --name @var{string} ]
-[ --name @var{name} ] [ --outdir @var{path} ]
-[ --objdir @var{path} ] [ --reboot ]
-[ --srcdir @var{path} ] [ --strace @var{n} ]
-[ --target @var{string} --build @var{string} ]
-[ -v | --verbose ] [ -V | --version ] [ --D@var{n} ]
-@end smallexample
-
-@table @code
-@item --tool @var{tool}
-@cindex selecting tests for a tool
-@cindex @code{--tool} (@code{runtest} option)
-@var{tool} specifies what set of tests to run, and what initialization
-module to use. @var{tool} is used @emph{only} for these two purposes:
-it is @emph{not} used to name the executable program to test.
-Executable tool names (and paths) are recorded in @file{site.exp}
-(@pxref{Config Values,,Configuration dependent values}), and you can
-override them by specifying Tcl variables on the command line.
-
-For example, including @samp{--tool gcc} on the @code{runtest} command
-line runs tests from all test subdirectories whose names match
-@file{gcc.*}, and uses one of the initialization modules named
-@file{config/*-gcc.exp}. To specify the name of the compiler (perhaps
-as an alternative path to what @code{runtest} would use by default), use
-@samp{GCC=@var{binname}} on the @code{runtest} command line.
-
-@item @var{testsuite}.exp @dots{}
-@cindex selecting a range of tests
-@cindex tests, running specifically
-@cindex naming tests to run
-Specify the names of testsuites to run.
-By default, @code{runtest} runs all tests for the tool, but you can
-restrict it to particular testsuites by giving the names of the @samp{.exp}
-@code{expect} scripts that control them.
-
-@var{testsuite}.exp may not include path information; use plain filenames.
-
-@item @var{testfile}.exp="testfile1 @dots{}"
-@cindex selecting a range of tests
-@cindex tests, running specifically
-@cindex naming tests to run
-Specify a subset of tests in a suite to run.
-For compiler or assembler tests, which often use a single @samp{.exp}
-script covering many different source files, this option allows you to
-further restrict the tests by listing particular source files to compile.
-Some tools even support wildcards here. The wildcards supported depend
-upon the tool, but typically they are @code{?}, @code{*}, and @code{[chars]}.
-
-@item @var{tclvar}=@var{value}
-@kindex @var{tclvar}=@var{value}
-@cindex Tcl variables, defining for @code{runtest}
-@cindex command line Tcl variable definition
-@cindex @code{runtest}, variable defns on cmdline
-You can define Tcl variables for use by your test scripts in the same
-style used with @code{make} for environment variables. For example,
-@samp{runtest GDB=gdb.old} defines a variable called @samp{GDB}; when
-your scripts refer to @samp{$GDB} in this run, they use the value
-@samp{gdb.old}.
-
-The default Tcl variables used for most tools are defined in the main
-DejaGnu @code{Makefile}; their values are captured in the
-@file{site.exp} file. @xref{Config Values,,Configuration dependent
-values}.
-
-@item --all
-@cindex @code{--all} (@code{runtest} option)
-@cindex test output, displaying all
-Display all test output. By default, @code{runtest} shows only the
-output of tests that produce unexpected results; that is, tests with
-status @samp{FAIL} (unexpected failure), @samp{XPASS} (unexpected
-success), or @samp{ERROR} (a severe error in the test case itself).
-Specify @samp{--all} to see output for tests with status @samp{PASS}
-(success, as expected) @samp{XFAIL} (failure, as expected), or
-@samp{WARNING} (minor error in the test case itself).
-
-@item --baud @var{baud-rate}
-@itemx -b @var{baud-rate}
-@cindex baud rate, specifying
-@cindex bps, specifying
-@cindex @code{--baud} (@code{runtest} option)
-@cindex @code{-b} (@code{runtest} option)
-Set the default baud rate to something other than 9600. (Some serial
-interface programs, like @code{tip}, use a separate initialization file
-instead of this value.)
-
-@item --connect @var{type}
-@cindex connecting to target
-@cindex @code{--connect} (@code{runtest} option)
-@cindex remote testbed, connecting to
-@cindex @code{rlogin}, remote testing via
-@cindex @code{telnet}, remote testing via
-@cindex @code{rsh}, remote testing via
-@cindex @code{tip}, remote testing via
-@cindex @code{kermit}, remote testing via
-@cindex @code{mondfe}, remote testing via
-@cindex remote testing via @code{rlogin}
-@cindex remote testing via @code{telnet}
-@cindex remote testing via @code{rsh}
-@cindex remote testing via @code{tip}
-@cindex remote testing via @code{kermit}
-@cindex remote testing via @code{mondfe}
-Connect to a target testing environment as specified by @var{type}, if
-the target is not the computer running @code{runtest}. For example, use
-@samp{--connect} to change the program used to connect to a ``bare
-board'' boot monitor. The choices for @var{type} in the DejaGnu 1.0
-distribution are @samp{rlogin}, @samp{telnet}, @samp{rsh}, @samp{tip},
-@samp{kermit}, and @samp{mondfe}.
-
-@noindent
-The default for this option depends on the configuration (@pxref{Cross
-Targets,,Remote targets supported}). The default is chosen to be the
-most convenient communication method available, but often other
-alternatives work as well; you may find it useful to try alternative
-connect methods if you suspect a communication problem with your testing
-target.
-
-@item --debug
-@cindex @code{--debug} (@code{runtest} option)
-@cindex debug log for test cases
-@cindex test cases, debug log
-@cindex @code{dbg.log} file
-Turns on the @code{expect} internal debugging output. Debugging output
-is displayed as part of the @code{runtest} output, and logged to a file
-called @file{dbg.log}. The extra debugging output does @emph{not}
-appear on standard output, unless the verbose level is greater than 2
-(for instance, to see debug output immediately, specify @samp{--debug -v
--v}). The debugging output shows all attempts at matching the test
-output of the tool with the scripted patterns describing expected
-output. The output generated with @samp{--strace} also goes into
-@file{dbg.log}.
-
-@item --help
-@itemx -he
-@cindex @code{--help} (@code{runtest} option)
-@cindex help with @code{runtest}
-@cindex @code{runtest}, listing options
-Prints out a short summary of the @code{runtest} options, then exits
-(even if you also specify other options).
-
-@item --host @var{string}
-@cindex @code{--host} (@code{runtest} option)
-@cindex specifying the host config name
-@cindex host config name, changing
-@var{string} is a full configuration ``triple'' name as used by
-@code{configure}. Use this option to override the default string
-recorded by your configuration's choice of host. This choice does not
-change how anything is actually configured unless --build is also
-specified; it affects @emph{only} DejaGnu procedures that compare the
-host string with particular values. The procedures @code{ishost},
-@code{istarget}, @code{isnative}, and @code{setup_xfail} are affected by
-@samp{--host}. In this usage, @code{host} refers to the machine that the
-tests are to be run on, which may not be the same as the @code{build}
-machine. If @code{--build} is also specified, then @code{--host} refers
-to the machine that the tests wil, be run on, not the machine DejaGnu is
-run on.
-
-@item --build @var{string}
-@cindex @code{--build} (@code{runtest} option)
-@cindex specifying the build config name
-@cindex build config name, changing
-@var{string} is a full configuration ``triple'' name as used by
-@code{configure}. This is the type of machine DejaGnu and the tools to
-be tested are built on. For a normal cross this is the same as the host,
-but for a canadian cross, they are seperate.
-
-@item --name @var{name}
-@cindex specifying target name
-@cindex target machine name
-@cindex @code{--name} (@code{runtest} option)
-@var{name} is a name for the particular testing target machine (for
-cross testing). If the testing target has IP network support (for
-example, @code{RPC} or @code{NFS}), this is the network name for the
-target itself. (@var{name} is @emph{not the configuration string} you
-specify as a target with @code{configure}; the @samp{--name} option
-names a particular target, rather than describing a class of targets.)
-For targets that connect in other ways, the meaning of the @var{name}
-string depends on the connection method. @xref{Cross Targets,,Remote
-targets supported}.
-
-@item --name @var{string}
-@cindex remote test machine name
-@cindex name for remote test machine
-Specify a network name of testing target or its host. The particular
-names that are meaningful with @samp{--name} will depend on your site
-configuration, and on the connection protocol: for example, @code{tip}
-connections require names from a serial line configuration file (usually
-called @file{/etc/remote}), while @code{telnet} connections use IP
-hostnames.
-
-@item --objdir @var{path}
-@cindex @code{--objdir} (@code{runtest} option)
-@cindex object directory
-@cindex test programs, auxiliary
-@cindex auxiliary test programs
-Use @var{path} as the top directory containing any auxiliary compiled
-test code. This defaults to @file{.}. Use this option to locate
-pre-compiled test code. You can normally prepare any auxiliary files
-needed with @code{make}.
-
-@item --outdir @var{path}
-@cindex output directory
-@cindex @code{--outdir} (@code{runtest} option)
-@cindex log files, where to write
-Write output logs in directory @var{path}. The default is @samp{.}, the
-directory where you start @code{runtest}. This option affects only the
-summary and the detailed log files @file{@var{tool}.sum} and
-@file{@var{tool}.log}. The DejaGnu debug log @file{dbg.log} always
-appears (when requested) in the local directory.
-
-@item --reboot
-@cindex rebooting remote targets
-@cindex @code{--reboot} (@code{runtest} option)
-Reboot the target board when @code{runtest} initializes.
-Usually, when running tests on a separate target board, it is safer to
-reboot the target to be certain of its state. However, when developing
-test scripts, rebooting takes a lot of time.
-
-@item --srcdir @var{path}
-@cindex source directory
-@cindex @code{--srcdir} (@code{runtest} option)
-Use @var{path} as the top directory for test scripts to run.
-@code{runtest} looks in this directory for any subdirectory whose name
-begins with the toolname (specified with @samp{--tool}). For instance,
-with @samp{--tool gdb}, @code{runtest} uses tests in subdirectories
-@file{gdb.*} (with the usual shell-like filename expansion). If you do
-not use @samp{--srcdir}, @code{runtest} looks for test directories under
-the current working directory.
-
-@item --strace @var{n}
-@cindex @code{--strace} (@code{runtest} option)
-@cindex tracing Tcl commands
-@cindex @code{expect} internal tracing
-Turn on internal tracing for @code{expect}, to @var{n} levels deep. By
-adjusting the level, you can control the extent to which your output
-expands multi-level Tcl statements. This allows you to ignore some
-levels of @code{case} or @code{if} statements. Each procedure call or
-control structure counts as one ``level''.
-
-The output is recorded in the same file, @file{dbg.log}, used for output
-from @samp{--debug}.
-
-@item --target @var{string}
-@cindex @code{--target} (@code{runtest} option)
-@cindex specifying the target configuration
-@cindex target configuration, specifying
-Use this option to override the default setting (running native tests).
-@var{string} is a full configuration ``triple''
-name@footnote{Configuration triples have the form
-@samp{@var{cpu}-@var{vendor}-@var{os}}.} as used by @code{configure}.
-This option changes the configuration @code{runtest} uses for the
-default tool names, and other setup information. @xref{Using
-configure,,Using @code{configure}, configure.info, Cygnus configure},
-for details about @code{configure} names.
-
-@item --verbose
-@itemx -v
-@cindex @code{--verbose} (@code{runtest} option)
-@cindex @code{-v} (@code{runtest} option)
-@cindex turning on output
-@cindex output, additional
-Turns on more output. Repeating this option increases the amount of
-output displayed. Level one (@samp{-v}) is simply test output. Level
-two (@samp{-v -v}) shows messages on options, configuration, and process
-control. Verbose messages appear in the detailed (@file{*.log}) log
-file, but not in the summary (@file{*.sum}) log file.
-
-@item --version
-@itemx -V
-@cindex @code{-V} (@code{runtest} option)
-@cindex @code{--version} (@code{runtest} option)
-@cindex version numbers
-Prints out the version numbers of DejaGnu, @code{expect} and Tcl, and
-exits without running any tests.
-
-@item -D0
-@itemx -D1
-@cindex starting the tcl debugger
-@cindex tcl debugger
-@c FIXME!!! we should say a *lot* more about this debugger
-Start the internal Tcl debugger. The Tcl debugger supports breakpoints,
-single stepping, and other common debugging activities. (See @cite{A
-Debugger for Tcl Applications} by Don Libes. @footnote{Distributed in
-PostScript form with @code{expect} as the file@*
-@file{expect/tcl-debug.ps}.})
-
-If you specify @samp{-D1}, the @code{expect} shell stops at a breakpoint
-as soon as DejaGnu invokes it.
-
-If you specify @samp{-D0}, DejaGnu starts as usual, but you can enter
-the debugger by sending an interrupt (e.g. by typing @key{C-c}).
-@end table
-
-@node Customizing
-@chapter Setting @code{runtest} defaults
-
-@kindex site.exp
-@cindex variables of DejaGnu, defaults
-The site configuration file, @file{site.exp}, captures
-configuration-dependent values and propagates them to the DejaGnu test
-environment using Tcl variables. This ties the DejaGnu test scripts
-into the @code{configure} and @code{make} programs.
-
-@cindex @file{site.exp}, multiple
-@cindex overriding @file{site.exp}
-DejaGnu supports more than one @file{site.exp} file. The multiple
-instances of @file{site.exp} are loaded in a fixed order built into
-DejaGnu (the more local last). The first file loaded is the optional
-@code{~/.dejagnurc}, then the local files, and finally the global file.
-
-@enumerate
-@item
-There is am optional ``master'' @file{site.exp}, capturing configuration values
-that apply to DejaGnu across the board, in each configuration-specific
-subdirectory of the DejaGnu library directory. @code{runtest} loads
-these values first. @xref{Installation,,Configuring and Installing
-DejaGnu}. The master @file{site.exp} contains the default values for
-all targets and hosts supported by DejaGnu. This master file is
-identified by setting the environment variable @code{DEJAGNU} to the
-name of the file. This is also refered to as the ``global'' config file.
-
-@item
-Any directory containing a configured test suite also has a
-@file{site.exp}, capturing configuration values specific to the tool
-under test. Since @code{runtest} loads these values last, the
-individual test configuration can either rely on and use, or override,
-any of the global values from the ``master'' @file{site.exp}.
-
-You can usually generate or update the testsuite @file{site.exp} by
-typing @samp{make site.exp} in the test suite directory, after the test
-suite is configured.
-
-@item
-You can also have a file in your home directory called
-@code{.dejagnurc}. This gets loaded first before the other config
-files. Usually this is used for personal stuff, like setting
-@code{all_flag} so all the output gets printed, or verbosity levels.
-@end enumerate
-
-You can further override the default values in a user-editable section
-of any @file{site.exp}, or by setting variables on the @code{runtest}
-command line.
-
-@menu
-* Config Values:: Variables used in the configuration file.
-* Master Config File:: The master configuration file.
-* Local Config File:: The local configuration file.
-* Personal Config File:: The personal configuration file.
-@end menu
-
-@node Config Values, Master Config File, , Customizing
-@subsection Config Variables
-@cindex configuration dependent defaults
-@cindex setting defaults for DejaGnu variables
-
-@c NOTE: default values are given via @code{"fubar"} rather than the
-@c more conventional @samp{fubar} to permit a consistent and clear
-@c notation for the empty string (@code{""}), which will work exactly as
-@c typed.
-
-DejaGnu uses a named array in Tcl to hold all the info for each
-machine. In the case of a canadian cross, this means host information as
-well as target information. The named array is called
-@code{target_info}, and it has two indices. The following fields are
-part of the array.
-
-@table @code
-@item name
-The name of the target. (mostly for error messages) This
-should also be the string used for this target's array.
-It should also be the same as the linker script so we
-can find them dynamically. This should be the same as the argument used
-for @code{push_target@{@}}.
-
-@item ldflags
-This is the linker flags required to produce a fully linked
-executable. For @code{libgloss} supported targets this is usually just
-the name of the linker script.
-
-@item config
-The target canonical for this target. This is used by some init files to
-make sure the target is supported.
-
-@item cflags
-The flags required to produce an object file from a source file.
-
-@item connect
-This is the connectmode for this target. This is for both IP and
-serial connections. Typically this is either @code{telnet},
-@code{rlogin}, or @code{rsh}.
-
-@item target
-This is the hostname of the target. This is for TCP/IP based connections,
-and is also used for version of tip that use /etc/remote.
-
-@item serial
-This is the serial port. This is typically /dev/tty? or com?:.
-
-@item netport
-This is the IP port. This is commonly used for telneting to target
-boards that are connected to a terminal server. In that case the IP port
-specifies the which serial port to use.
-
-@item baud
-This is the baud rate for a serial port connection.
-
-@item x10
-This is the parameters for an x10 controller. These are simple devices
-that let us power cycle or reset a target board remotely.
-
-@item fileid
-This is the fileid or spawn id of of the connection.
-
-@item prompt
-a glob style pattern to recognize the prompt.
-
-@item abbrev
-abbreviation for tool init files.
-
-@item ioport
-This is the port for I/O on dual port systems. In this configuration,
-the main serial port @code{0} is usually used for stdin and stdout,
-which the second serial port can be used for debugging.
-@end table
-
-The first index into the array is the same value as used in the
-@code{name} field. This is usually a short version of the name of the
-target board. For an example, here's the settings I use for my
-@code{Motorola's} @code{IDP} board and my @code{Motorola} 6U VME
-@code{MVME135-1} board. (both m68k targets)
-
-@cartouche
-@smallexample
-# IDP board
-set target_info(idp,name) "idp"
-set target_info(idp,ldflags) "-Tidp.ld"
-set target_info(idp,config) m68k-unknown-aout
-set target_info(idp,cflags) ""
-set target_info(idp,connect) telnet
-set target_info(idp,target) "s7"
-set target_info(idp,serial) "tstty7"
-set target_info(idp,netport) "wharfrat:1007"
-set target_info(idp,baud) "9600"
-# MVME 135 board
-set target_info(idp,name) "mvme"
-set target_info(idp,ldflags) "-Tmvme.ld"
-set target_info(idp,config) m68k-unknown-aout
-set target_info(idp,cflags) ""
-set target_info(idp,connect) telnet
-set target_info(idp,target) "s8"
-set target_info(idp,serial) "tstty8"
-set target_info(idp,netport) "wharfrat:1008"
-set target_info(idp,baud) "9600"
-@end smallexample
-@end cartouche
-
-DejaGnu can use this information to switch between multiple targets in
-one test run. This is done through the use of the @code{push_target}
-procedure, which is discussed elsewhere.
-@c FIXME: write that section and put an xref here
-
-This array can also hold information for a remote host, which is used
-when testing a candain cross. In this case, the only thing different is
-the index is just @code{host}. Here's the settings I use to run tests
-on my NT machine while running DejaGnu on a Unix machine. (in this case
-a Linux box)
-
-@cartouche
-@smallexample
-set target_info(host,name) "nt-host"
-set target_info(host,config) "386-unknown-winnt"
-set target_info(host,connect) "telnet"
-set target_info(host,target) "ripple"
-@end smallexample
-@end cartouche
-
-There is more info on how to use these variables in the sections on the
-config files. @xref{Master Config File,,Configuration Files}.
-
-@cindex option defaults
-@cindex @code{runtest} option defaults
-@cindex variables for option defaults
-@cindex defaults, option
-In the user editable second section of @file{site.exp}, you can not only
-override the configuration variables captured in the first section, but
-also specify default values for all the @code{runtest} command line
-options. Save for @samp{--debug}, @samp{--help}, and @samp{--version},
-each command line option has an associated Tcl variable. Use the Tcl
-@code{set} command to specify a new default value (as for the
-configuration variables). The following table describes the
-correspondence between command line options and variables you can set in
-@file{site.exp}. @xref{Invoking runtest,,Running the Tests}, for
-explanations of the command-line options.
-
-@kindex all_flag
-@kindex baud
-@kindex reboot
-@kindex outdir
-@kindex objdir
-@kindex runtests
-@kindex ignoretests
-@kindex srcdir
-@kindex tracelevel
-@kindex targetname
-@kindex connectmode
-@kindex tool
-@kindex target_triplet
-@kindex host_triplet
-@kindex build_triplet
-@kindex verbose
-
-@cindex command line option variables
-@cindex Tcl variables for option defaults
-@cindex default options, controlling
-@cindex options, Tcl variables for defaults
-
-@ifinfo
-@display
-runtest Tcl
-option variable description
-__________ ________ ___________________________________________
-
---all all_flag display all test results if set
-
---baud baud set the default baud rate to something other
- than 9600.
---connect connectmode @samp{rlogin}, @samp{telnet}, @samp{rsh},
- @samp{kermit}, @samp{tip}, or @samp{mondfe}
-
---outdir outdir directory for @file{@var{tool}.sum} and @file{@var{tool}.log}
-
---objdir objdir directory for pre-compiled binaries
-
---reboot reboot reboot the target if set to @code{"1"};
- do not reboot if set to @code{"0"} (the default)
-
---srcdir srcdir directory of test subdirectories
-
---strace tracelevel a number: Tcl trace depth
-
---tool tool name of tool to test; identifies init, test subdir
-
---verbose verbose verbosity level. As option, use multiple times;
- as variable, set a number, 0 or greater
---target target_triplet The canonical configuration string for the target.
---host host_triplet The canonical configuration string for the host.
---build build_triplet The canonical configuration string for the
- build host.
-
-@end display
-@end ifinfo
-
-@tex
-\vbox{\halign{\hfil \tt #\quad &\quad\tt #\hfil &\hbox{\vtop{{\raggedright\parindent=0pt\parskip=5pt\hsize=2.75in\rm#\strut\par}}}\hfill\cr
-\cr
-{\it runtest}&{\it Tcl}\cr
-{\it option}&{\it variable}&{\it description}\cr
-\noalign{\hrule width\hsize}\cr
---all &all\_flag &display all test results if set\cr
---baud &baud &set the default baud rate to something other
- than 9600.\cr
---connect &connectmode &@samp{rlogin}, @samp{telnet}, @samp{rsh},
- @samp{kermit}, @samp{tip}, or @samp{mondfe}\cr
---mail &mailing\_list&address list for mailing test output\cr
---name &targetname &network name of testing target or its host\cr
---outdir &outdir &directory for @file{@var{tool}.sum} and @file{@var{tool}.log}\cr
---objdir &objdir &directory for compiled binaries\cr
---reboot &reboot &reboot the target if set to @code{"1"};
-do not reboot if set to @code{"0"} (the default)\cr
---srcdir &srcdir &directory of test subdirectories\cr
---strace &tracelevel &a number: Tcl trace depth\cr
---tool &tool &name of tool to test; identifies init, test subdir\cr
---verbose &verbose &verbosity level. As option, use multiple times;
- as variable, set a number, 0 or greater\cr
---target &target\_triplet
- &The canonical configuration string for the target.\cr
---host &host\_triplet &The canonical configuration string for the host.\cr
---build &build\_triplet &The canonical configuration string for the
- build host.\cr
-}}
-@end tex
-
-@node Master Config File, Local Config File, Config Values, Customizing
-@subsection Master Config File
-@cindex master @file{site.exp}
-@cindex @file{site.exp} for all of DejaGnu
-The master config file is where all the target specific config variables
-get set for a whole site get set. The idea is that for a centralized
-testing lab where people have to share a target between multiple
-developers. There are settings for both remote targets and remote hosts.
-Here's an example of a Master Config File (also called the Global config
-file) for a @emph{canadian cross}. A canadian cross is when you build
-and test a cross compiler on a machine other than the one it's to be
-hosted on.
-
-Here we have the config settings for our California office. Note that
-all config values are site dependant. Here we have two sets of values
-that we use for testing m68k-aout cross compilers. As both of these
-target boards has a different debugging protocol, we test on both of
-them in sequence.
-
-@cartouche
-@smallexample
-global CFLAGS
-global CXXFLAGS
-
-case "$target_triplet" in @{
- @{ "native" @} @{
- set target_abbrev unix
- @}
- @{ "m68*-unknown-aout" @} @{
- set target_abbrev "rom68k"
- # IDP target # IDP board with rom68k monitor
- set target_info(idp,name) "idp"
- set target_info(idp,ldflags) "-Tidp.ld"
- set target_info(idp,config) m68k-unknown-aout
- set target_info(idp,cflags) ""
- set target_info(idp,connect) telnet
- set target_info(idp,target) "s7"
- set target_info(idp,serial) "tstty12"
- set target_info(idp,netport) "truckin:1007"
- set target_info(idp,baud) "9600"
- # MVME target # Motorola MVME 135 with BUG monitor
- set target_info(mvme,name) "mvme"
- set target_info(mvme,ldflags) "-Tmvme.ld"
- set target_info(mvme,config) m68k-unknown-aout
- set target_info(mvme,cflags) ""
- set target_info(mvme,connect) telnet
- set target_info(mvme,target) "s4"
- set target_info(mvme,serial) "tstty8"
- set target_info(mvme,netport) "truckin:1004"
- set target_info(mvme,baud) "9600"
- @}
-@}
-@end smallexample
-@end cartouche
-
- In this case, we have support for several remote hosts for
-our m68k-aout cross compiler. Typically the remote Unix hosts run
-DejaGnu locally, but we also use them for debugging the testsuites when
-we find problems in running on remote hosts. Expect won't run on NT, so
-DejaGnu is run on the local build machine, and it'll connect to the NT
-host and run all the tests for this cross compiler on that host.
-
-@smallexample
-@cartouche
-case "$host_triplet" in @{
- "native" @{
- @}
- "i?86-*-linux*" @{ # Linux host
- set target_info(host,name) "linux-host"
- set target_info(host,config) $host_triplet
- set target_info(host,connect) rlogin
- set target_info(host,target) chinadoll
- @}
- "i?86-*-winnt # NT host
- set target_info(host,name) "nt-host"
- set target_info(host,config) i386-unknown-winnt
- set target_info(host,connect) telnet
- set target_info(host,target) ripple
- @}
- "hppa*-hp-hpux*" @{ # HP-UX host
- set target_info(host,name) "hpux-host"
- set target_info(host,config) $host_triplet
- set target_info(host,connect) rlogin
- set target_info(host,target) slipknot
- @}
- "sparc-sun-sunos*" @{ # SunOS (sun4)
- set target_info(host,name) "sunos-host"
- set target_info(host,config) $host_triplet
- set target_info(host,connect) rlogin
- set target_info(host,target) darkstar
- @}
-@}
-@end cartouche
-@end smallexample
-
-@node Local Config File, Personal Config File, Master Config File, Customizing
-@subsection Local Config File
-@cindex local @file{site.exp}
-@cindex @file{site.exp} for each tool
-It is usually more convenient to keep these ``manual overrides'' in the
-@file{site.exp} local to each test directory, rather than in the
-``master'' @file{site.exp} in the DejaGnu library.
-
-All local @file{site.exp} usually files have two sections, separated by
-comment text. The first section is the part that is generated by
-@code{make}. It is essentially a collection of Tcl variable definitions
-based on @file{Makefile} environment variables. Since they are generated
-by @code{make}, they contain the values as specified by
-@code{configure}. (You can also customize these values by using the
-@samp{--site} option to @code{configure}.) In particular, this section
-contains the @file{Makefile} variables for host and target configuration
-data. Do not edit this first section; if you do, your changes are replaced
-next time you run @code{make}.
-
-The first section starts with:
-
-@cartouche
-@smallexample
-## these variables are automatically generated by make ##
-# Do not edit here. If you wish to override these values
-# add them to the last section
-@end smallexample
-@end cartouche
-
-In the second section, you can override any default values (locally to
-DejaGnu) for all the variables. The
-second section can also contain your preferred defaults for all the
-command line options to @code{runtest}. This allows you to easily
-customize @code{runtest} for your preferences in each configured
-test-suite tree, so that you need not type options repeatedly on the
-command line. (The second section may also be empty, if you do not wish
-to override any defaults.)
-
-The first section ends with this line:
-
-@cartouche
-@smallexample
-## All variables above are generated by configure. Do Not Edit ##
-@end smallexample
-@end cartouche
-
-You can make any changes under this line. If you wish to redefine a
-variable in the top section, then just put a duplicate value in this
-second section. Usually the values defined in this config file are
-related to the configuration of the test run. This is the ideal place to
-set the variables @code{host_triplet}, @code{build_triplet},
-@code{target_triplet}. All other variables are tool dependant. ie for
-testing a compiler, the value for @var{CC} might be set to a freshly
-built binary, as opposed to one in the user's path.
-
-@node Personal Config File, , Local Config File, Customizing
-@subsection Personal Config File
-@cindex personal config @file{site.exp}
-@cindex @file{site.exp} for each person
-The personal config file is used to customize @code{runtest's} behaviour
-for each person. It's typically used to set the user prefered setting
-for verbosity, and any experimental Tcl procedures. My personal
-@file{~/.dejagnurc} file looks like:
-
-@cartouche
-@smallexample
-set all_flag 1
-set RLOGIN /usr/ucb/rlogin
-set RSH /usr/ucb/rsh
-@end smallexample
-@end cartouche
-
-Here I set @code{all_flag} so I see all the test cases that PASS along
-with the ones that FAIL. I also set @var{RLOGIN} and @code{RSH} to the
-BSD version. I have @code{kerberos} installed, and when I rlogin to a
-target board, it usually isn't supported. So I use the non secure
-versions of these programs rather than the default that's in my path.
-
-@node Internals
-@chapter The DejaGnu Implementation
-@cindex operating principles
-@cindex internal details
-
-DejaGnu is entirely written in @code{expect}, which uses Tcl as a
-command language. @code{expect} serves as a very programmable shell;
-you can run any program, as with the usual Unix command shells---but
-once the program is started, your @code{expect} script has fully
-programmable control of its input and output. This does not just apply
-to the programs under test; @code{expect} can also run any auxiliary
-program, such as @code{diff} or @code{sh}, with full control over its
-input and output.
-
-DejaGnu itself is merely a framework for the set of test suites
-distributed separately for each @sc{gnu} tool. Future releases of
-@sc{gnu} tools will include even more tests, developed throughout the
-free software community.
-
-@kindex runtest.exp
-@code{runtest} is the glue to tie together and manage the test scripts.
-The @code{runtest} program is actually a simple Bourne shell script that
-locates a copy of the @code{expect} shell and then starts the main Tcl
-code, @code{runtest.exp}. @code{runtest.exp} itself has these essential
-functions:
-
-@enumerate
-@item
-Parse the command line options, load the library files, and load the
-default configuration files.
-
-@item
-Locating the individual test scripts. @code{runtest.exp} locates the tests
-by exploiting a straightforward naming convention based on the string
-you specify with the @samp{--tool} option.
-
-@item
-Providing an extended test environment, by defining additional Tcl
-procedures beyond those already in @code{expect}.
-
-@item
-Locating target-dependent functions, to standardize the test environment
-across a wide variety of test platforms.
-@end enumerate
-
-@menu
-* Names:: Conventions for using tool names
-* Init Module:: Initialization module
-* DejaGnu Builtins:: DejaGnu provides these Tcl procedures
-* Target Dependent:: Procedures supplied by the init module
-* Cross Targets:: Remote targets supported
-* Input Files:: The files DejaGnu depends on
-* Output Files:: The files DejaGnu produces
-@end menu
-
-@node Names
-@section Conventions for using tool names
-
-@cindex @code{--tool} and naming conventions
-@cindex tool names and naming conventions
-@cindex naming conventions
-DejaGnu uses @samp{$tool}, the name of the tool under test, to tie
-together the testing configuration in a straightforward but flexible
-way. If there is only one testsuite for a particular application, then
-@samp{$tool} is optional.
-
-@samp{$tool} is @emph{not} used to invoke the tool, since sites that run
-multiple configurations of a particular tool often call each
-configuration by a different name. @code{runtest} uses the
-configuration-dependent variables captured in @file{site.exp} to
-determine how to call each tool.
-
-@cindex directory names and @code{--tool}
-@cindex test directories, naming
-@code{runtest} uses tool names to find directories containing tests.
-@code{runtest} scans the source directory (specified with
-@code{--srcdir}) for all directories whose names start with the tool
-name. It is a common practice to put a period after the tool part of the
-name. For instance, directories that start with
-@samp{g++.} contain @sc{g++} tests. To add a new test, just put it in
-any directory (create an entirely new directory, if you wish) whose name
-follows this convention.
-
-@cindex @code{exp} filename suffix
-@cindex test filename
-@cindex filename for test files
-A test is any file in an appropriately named subdirectory whose name
-ends in @samp{.exp} (the conventional way of naming @code{expect}
-scripts). These simple naming conventions make it as simple as possible
-to install new tests: all you must do is put the test in the right
-directory.
-
-@cindex order of tests
-@cindex tests, running order
-@code{runtest} sorts the tests in each subdirectory by name (using the
-Tcl @code{lsort} command) and runs them in the resulting order.
-
-@node Init Module
-@section Initialization module
-@cindex tool initialization
-@cindex setting up targets
-
-@c FIXME! should this node be merged with "Target dependent"?
-
-@cindex init file, purpose
-@cindex starting interactive tools
-@cindex initialization
-The initialization module (or ``init file'') has two purposes: to
-provide tool and target dependent procedures, and to start up an
-interactive tool to the point where it is ready to operate. The latter
-includes establishing communications with the target. All the tests for
-interactive programs assume that the tool is already running and
-communicating. Initialization modules for non-interactive programs may
-only need to supply the support functions.
-
-@cindex init file name
-@cindex name, initialization module
-Each test suite directory must contain (in its @file{config}
-subdirectory) a separate initialization module for each target. The
-appropriate init file is can be named several ways. The prefered name is
-the @emph{os} part of the canonical configuration name with @code{.exp}
-as the suffix. An example would be that for an @code{m68k-coff} system,
-the @code{target_os} part would be @code{coff}. The next way is for
-system where there are short filenames, or a shortcut is desired to
-refer to the OS name for that target. This is uses the value of
-@code{$target_abbrev} rather than the @code{target_os}.
-
-The final file looked for is simply @file{default.exp}. If there is only
-one operating system to support, then this file can be used. It's main
-purpose is to offer some support for new operating systems, or for
-unsupported cross targets. The last file looked for is
-@file{unknown.exp}. This is usually limited to error handling for
-unsupported targets. It's whole contents is typically.
-
-@cartouche
-@smallexample
-perror "Sorry, there is no support for this target"
-exit 1
-@end smallexample
-@end cartouche
-
-At the beginning of the init file, you must first determine the proper
-executable name of the tool to execute, since the actual name of the
-tool to be tested my vary from system to system. Here's an example
-for the @sc{GNU} C compiler.
-
-@cartouche
-@smallexample
-global AR
-# look for the archiver ar
-if ![info exists AR] @{
- set AR [findfile $base_dir/../../binutils/ar $base_dir/../../binutils/ar [tr
-ansform ar]]
- verbose "AR defaulting to $AR" 2
-@}
-@}
-
-global CFLAGS
-if ![info exists CFLAGS] then @{
- set CFLAGS ""
-@}
-@end smallexample
-@end cartouche
-
-It is always a good idea to first check the variable, and only set it if
-it has not yet been defined. Often the proper value of @code{AR} is set
-on the command line that invokes @file{runtest}.
-
-@kindex findfile
-The @code{findfile} procedure takes as it's first argument a file name
-to look for. The second argument is returned if the file is found, and
-the third argument is returned if the file is not found. @code{base_dir}
-is set internally by DejaGnu to the top level directory of the object
-tree.
-
-@kindex transform
-The @code{transform} procedure takes as its argument the native name of
-a tool (such as @samp{gcc} for the compiler), and returns the name as
-configured for that tool in the current installation. (For example, a
-cross-compiling version of @sc{gnu} CC that generates MIPS code may be
-installed with a name like @code{mips-idt-ecoff-gcc}.)
-
-In a test running native, writing the Tcl code for initialization is
-usually quite simple. For cross configurations, however, more elaborate
-instructions are usually needed to describe how to talk to a remote
-target.
-
-Each initialization module defines up to four procedures with standard
-names and purposes. The names of these procedures begin with
-@samp{$tool}, the string that identifies tests for a particular tool:
-@code{$tool_start}, @code{$tool_load}, @code{$tool_exit}, and
-@code{$tool_version}. For example, the start procedure for @sc{gdb} is
-called @code{gdb_start}. (Since start procedures are used differently
-for batch and interactive tools, however, @code{runtest} itself never
-calls the start procedure. Init files for interactive tools are
-expected to end by running the start procedure.)
-
-@cindex utilities, loading from init file
-@cindex defaults, setting in init file
-The initialization module is also a good place to call @code{load_lib}
-to get any collections of utility procedures meant for a family of test
-cases, and to set up default values for any additional Tcl variables
-needed for a specific set of tests.
-
-@xref{Target Dependent,,Target dependent procedures}, for full
-descriptions of these procedures.
-
-@node DejaGnu Builtins
-@section DejaGnu procedures
-@cindex built in procedures, DejaGnu
-
-DejaGnu provides these Tcl procedures for use in test scripts.
-You can also use any standard @code{expect} or Tcl function. These
-procedures are stored in libraries, which DejaGnu loads at
-runtime. Here's explanation of the library procedures that get loaded at
-runtime. All other librarys are optional, and need to be loaded by the
-testsuite.
-
-@menu
-* framework.exp:: Core Internal Procedures.
-* remote.exp:: Procedures for remote communication.
-* utils.exp:: Utility procedures.
-* target.exp:: Cross target procedures.
-* debugger.exp:: Procedures for debugging your Tcl code.
-@end menu
-
-@node framework.exp, remote.exp, ,DejaGnu Builtins
-@subsection Core Internal Procedures
-@cindex Core Internal Procedures
-
-@xref{Posix,,A POSIX conforming test framework}, for more detailed
-explanations of the test outcomes (@samp{FAIL}, @samp{PASS},
-@samp{UNTESTED}, @samp{UNRESOLVED}, @samp{UNSUPPORTED}).
-
-@ftable @code
-@item perror "@var{string} @var{number}"
-@cindex test case, ERROR in
-@kindex ERROR
-Declares a severe error in the testing framework itself.
-@code{perror} writes in the log files a message beginning with
-@samp{ERROR}, appending the argument @var{string}. If the optional
-@var{number} is supplied, then this is used to set the internal count of
-errors to that value.
-
-As a side effect, @code{perror} also changes the effect of the next
-@code{pass} or @code{fail} command: the test outcome becomes
-@samp{UNRESOLVED}, since an automatic @samp{PASS} or @samp{FAIL} cannot
-be trusted after a severe error in the test framework. If the optional
-numeric value is @samp{0}, then there are no further side effects to
-calling this function, and the following test outcome doesn't become
-@samp{UNRESOLVED}. This can be used for errors with no known side
-effects.
-
-@item warning "@var{string} @var{number}"
-@cindex test case, WARNING in
-@kindex WARNING
-Declares detection of a minor error in the test case itself.
-@code{warning} writes in the log files a message beginning with
-@samp{WARNING}, appending the argument @var{string}. Use @code{warning}
-rather than @code{error} for cases (such as communication failure
-to be followed by a retry) where the test case can recover from the
-error. If the optional @var{number} is supplied, then this is used to
-set the internal count of warnings to that value.
-
-As a side effect, @code{warning_threshold} or more calls to
-@code{warning} in a single test case also changes the effect of the next
-@code{pass} or @code{fail} command: the test outcome becomes
-@samp{UNRESOLVED} since an automatic @samp{PASS} or @samp{FAIL} may not
-be trustworthy after many warnings. If the optional numeric value is
-@samp{0}, then there are no further side effects to calling this
-function, and the following test outcome doesn't become
-@samp{UNRESOLVED}. This can be used for errors with no known side
-effects.
-
-@item note "@var{string}"
-@cindex test case, informational messages
-@kindex NOTE
-Appends an informational message to the log file.
-@code{note} writes in the log files a message beginning with
-@samp{NOTE}, appending the argument @var{string}. Use @code{note}
-sparingly. @code{verbose} should be used for most such messages,
-but in cases where a message is needed in the log file regardless of
-the verbosity level use @code{note}.
-
-@item pass "@var{string}"
-@cindex test case, declaring success
-Declares a test to have passed. @code{pass} writes in the
-log files a message beginning with @samp{PASS} (or @code{XPASS}, if
-failure was expected), appending the argument @var{string}.
-
-@item fail "@var{string}"
-@cindex test case, declaring failure
-Declares a test to have failed. @code{fail} writes in the
-log files a message beginning with @samp{FAIL} (or @code{XFAIL}, if
-failure was expected), appending the argument @var{string}.
-
-@item unresolved "@var{string}"
-@cindex test case, declaring ambiguity
-Declares a test to have an unresolved outcome. @code{unresolved} writes
-in the log file a message beginning with @samp{UNRESOLVED}, appending
-the argument @var{string}. This usually means the test did not execute
-as expected, and a human being must go over results to determine if it
-passed or failed (and to improve the test case).
-
-@item untested "@var{string}"
-@cindex test case, declaring no test
-Declares a test was not run. @code{untested} writes in the log file a
-message beginning with @samp{UNTESTED}, appending the argument
-@var{string}. For example, you might use this in a dummy test whose
-only role is to record that a test does not yet exist for some feature.
-
-@item unsupported "@var{string}"
-@cindex test case, declaring no support
-Declares that a test case depends on some facility that does not exist
-in the testing environment. @code{unsupported} writes in the log file a
-message beginning with @samp{UNSUPPORTED}, appending the argument
-@var{string}.
-
-@item get_warning_threshold
-@cindex test case, WARNING threshold
-Returns the current value of @code{warning_threshold}.
-The default value is 3.
-
-@item set_warning_threshold @var{threshold}
-@cindex test case, WARNING threshold
-Sets the value of @code{warning_threshold}.
-A value of @code{0} disables it: calls to @code{warning} will not turn
-a @samp{PASS} or @samp{FAIL} into an @samp{UNRESOLVED}.
-
-@item transform "@var{toolname}"
-@cindex transform tool name
-@cindex installed tool name
-@cindex tool name, as installed
-@cindex name transformations
-Generates a string for the name of a tool as it was configured and
-installed, given its native name (as the argument @var{toolname}).
-This makes the assumption that all tools are installed using the same
-naming conventions: it extrapolates from the invocation name for
-@file{runtest}. For example, if you call @code{runtest} as
-@file{m68k-vxworks-runtest}, the result of @w{@samp{ transform "gcc" }}
-is @samp{m68k-vxworks-gcc}.
-
-@item ishost "@var{host}"
-@cindex host configuration test
-Tests for a particular @emph{host} environment. If the currently
-configured host matches the argument string, the result is @code{1};
-otherwise the result is @code{0}. @var{host} must be a full three-part
-@code{configure} host name; in particular, you may not use the shorter
-nicknames supported by @code{configure} (but you can use wildcard
-characters, using shell syntax, to specify sets of names).
-
-@item istarget "@var{target}"
-@cindex target configuration test
-Tests for a particular @emph{target} environment. If the currently
-configured target matches the argument string, the result is @code{1};
-otherwise the result is @code{0}. @var{target} must be a full
-three-part @code{configure} target name; in particular, you may not use
-the shorter nicknames supported by @code{configure} (but you can use
-wildcard characters, using shell syntax, to specify sets of names). If it is
-passed a @code{NULL} string, then it returns the name of the build
-canonical configuration.
-
-@item isbuild "@var{host}"
-@cindex build host configuration test
-Tests for a particular @emph{build host} environment. If the currently
-configured host matches the argument string, the result is @code{1};
-otherwise the result is @code{0}. @var{host} must be a full three-part
-@code{configure} host name; in particular, you may not use the shorter
-nicknames supported by @code{configure} (but you can use wildcard
-characters, using shell syntax, to specify sets of names). If it is
-passed a @code{NULL} string, then it returns the name of the build
-canonical configuration.
-
-item is3way "@var{host}"
-@cindex canadian cross configuration test
-Tests for a canadian cross. This is when the tests will be run on a
-remotly hosted cross compiler. If it is a canadian cross, then the
-result is @code{1}; otherwise the result is @code{0}.
-
-@item isnative
-@cindex native configuration test
-Tests whether the current configuration has the same host and target.
-When it runs in a @emph{native} configuration this procedure returns a
-@code{1}; otherwise it returns a @code{0}.
-
-@item load_lib "@var{library-file}"
-@cindex load library file
-Loads the file @var{library-file} by searching a fixed path built into
-@code{runtest}. If DejaGnu has been installed, it looks in a path
-starting with the installed library directory. If you are running
-DejaGnu directly from a source directory, without first running
-@samp{make install}, this path defaults to the current directory. In
-either case, it then looks in the current directory for a directory
-called @code{lib}. If there are duplicate definitions, the last one
-loaded takes precedence over the earlier ones.
-
-@item setup_xfail "@var{config} @r{[}@var{bugid}@r{]}"
-@c two spaces above to make it absolutely clear there's whitespace---a
-@c crude sort of italic correction!
-@cindex test case, expecting failure
-@cindex failure, expected
-@cindex expected failure
-Declares that the test is expected to fail on a particular set of
-configurations. The @var{config} argument must be a list of full
-three-part @code{configure} target name; in particular, you may not use
-the shorter nicknames supported by @code{configure} (but you can use the
-common shell wildcard characters to specify sets of names). The
-@var{bugid} argument is optional, and used only in the logging file
-output; use it as a link to a bug-tracking system such as @sc{gnats}
-(@pxref{Overview,, Overview, gnats.info, Tracking Bugs With GNATS}).
-
-@cindex @code{XFAIL}, producing
-@cindex @code{XPASS}, producing
-Once you use @code{setup_xfail}, the @code{fail} and @code{pass}
-procedures produce the messages @samp{XFAIL} and @samp{XPASS}
-respectively, allowing you to distinguish expected failures (and
-unexpected success!) from other test outcomes.
-
-@emph{Warning:} you must clear the expected failure after using
-@code{setup_xfail} in a test case. Any call to @code{pass} or
-@code{fail} clears the expected failure implicitly; if the test has some
-other outcome, e.g. an error, you can call @code{clear_xfail} to clear
-the expected failure explicitly. Otherwise, the expected-failure
-declaration applies to whatever test runs next, leading to surprising
-results.
-
-@item clear_xfail @var{config}
-@cindex cancelling expected failure
-@cindex expected failure, cancelling
-Cancel an expected failure (previously declared with @code{setup_xfail})
-for a particular set of configurations. The @var{config} argument is a
-list of configuration target names. It is only necessary to call
-@code{clear_xfail} if a test case ends without calling either
-@code{pass} or @code{fail}, after calling @code{setup_xfail}.
-
-@item verbose @r{[}-log@r{]} @r{[}-n@r{]} @r{[}--@r{]} "@var{string}" @var{number}
-@cindex @code{verbose} builtin function
-Test cases can use this function to issue helpful messages depending on
-the number of @samp{--verbose} options on the @code{runtest} command
-line. It prints @var{string} if the value of the variable
-@code{verbose} is higher than or equal to the optional @var{number}. The
-default value for @var{number} is 1. Use the optional @samp{-log} argument
-to cause @var{string} to always be added to the log file, even if it won't
-be printed. Use the optional @samp{-n} argument to print @var{string}
-without a trailing newline. Use the optional @samp{--} argument if
-@var{string} begins with "-".
-
-@end ftable
-
-@noindent
-@node remote.exp, utils.exp, framework.exp, DejaGnu Builtins
-@subsection Remote Communication Procedures
-
-@kindex remote.exp
-@kindex lib/remote.exp
-@cindex remote connection procedures
-@cindex communications procedures
-@file{lib/remote.exp} defines these functions, for establishing and
-managing communications:
-
-@emph{Procedures to establish a connection:} Each of these procedures
-tries to establish the connection up to three times before returning.
-Warnings (if retries will continue) or errors (if the attempt is
-abandoned) report on communication failures. The result for any of
-these procedures is either @code{-1}, when the connection cannot be
-established, or the spawn ID returned by the @code{expect} command
-@code{spawn}.
-
-It use the value of the @code{connect} field in the @code{target_info}
-array (was @code{connectmode} as the type of connection to make. Current
-supported connection types are tip, kermit, telnet, rsh, rlogin, and
-netdata. If the @code{--reboot} option was used on the runtest command
-line, then the target is rebooted before the connection is made.
-
-@ftable @code
-
-@item remote_open @var{type}
-@cindex Opening a remote connection
-@emph{Remote Connection Procedure.} This is passed @emph{host} or
-@emph{target}. Host or target refers to whether it is a connection to a
-remote target, or a remote host. This opens the connection to the
-desired target or host using the default values in the configuration
-system. It returns that @code{spawn_id} of the process that manages the
-connection. This value can be used in @code{expect} or @code{exp_send}
-statements, or passed to other procedures that need the connection
-process's id. This also sets the @code{fileid} field in the
-@code{target_info} array.
-
-
-@item remote_close @var{shellid}
-@cindex Closing a remote connection
-@emph{shellid} is value returned by a call to @code{remote_open}. This
-closes the connection to the target so resources can be used by
-others. This parameter can be left off if the @code{fileid} field in the
-@code{target_info} array is set.
-
-@item telnet @var{hostname} @var{port}
-@itemx rlogin @var{hostname}
-@itemx rsh @var{hostname}
-@cindex IP network procedures
-@cindex network (IP) procedures
-@emph{IP network procedures.} @var{hostname} refers to the IP address or
-name (for example, an entry in @file{/etc/hosts}) for this target. The
-procedure names reflect the Unix utility used to establish a
-connection. The optional @var{port} is used to specify the IP port
-number. The value of the @code{netport} field in the @code{target_info}
-array is used. (was @code{$netport}) This value has two parts, the
-hostname and the port number, seperated by a @emph{:}. If @code{host} or
-@code{target} is used in the @code{hostname} field, than the config
-array is used for all information.
-
-@item tip @var{port}
-@cindex serial line connection, @code{tip}
-@emph{Serial line procedure.} Connect using the Unix utility @code{tip}.
-@var{port} must be a name from the @code{tip} configuration file
-@file{/etc/remote}. Often, this is called @samp{hardwire}, or something
-like @samp{ttya}. This file holds all the configuration data for
-the serial port. The value of the @code{serial} field in the
-@code{target_info} array is used. (was @code{$serialport}) If
-@code{host} or @code{target} is used in the @code{port} field, than
-the config array is used for all information.
-
-@item kermit @var{port} @var{bps}
-@cindex serial line connection, @code{kermit}
-@emph{Serial line procedure.} Connect using the program @code{kermit}.
-@var{port} is the device name, e.g. @file{/dev/ttyb}. @var{bps} is
-the line speed to use (in bits per second) for the connection. The value
-of the @code{serial} field in the @code{target_info} array is used. (was
-@code{$serialport}) If @code{host} or @code{target} is used in the
-@code{port} field, than the config array is used for all information.
-
-@end ftable
-
-@noindent
-@emph{Procedures to manage a connection:}
-
-@ftable @code
-@item tip_download @var{spawnid} @var{file}
-@cindex download, @code{tip}
-@cindex serial download, @code{tip}
-Download @file{@var{file}} to the process @var{spawnid} (the value
-returned when the connection was established), using the @code{~put}
-command under @code{tip}. Most often used for single board computers
-that require downloading programs in @sc{ascii} S-records. Returns
-@code{1} if an error occurs, @code{0} otherwise.
-
-@item exit_remote_shell @var{spawnid}
-@cindex terminating remote connection
-@cindex remote connection, ending
-Exits a remote process started by any of the connection procedures.
-@var{spawnid} is the result of the connection procedure that started the
-remote process.
-
-@item download @var{file} @r{[} @var{spawnid} @r{]}
-@cindex download a file
-After you establish a connection to a target, you can download programs
-using this command. @code{download} reads in @var{file} (object code in
-S-record format) and writes it to the device controlling this
-@var{spawnid}. (From the point of view of the target, the S-record file
-comes in via standard input.)
-
-If you have more than one target active, you can use the optional argument
-@var{spawnid} to specify an alternative target (the default is the most
-recently established @var{spawnid}.)
-@end ftable
-
-@noindent
-@node utils.exp, target.exp, remote.exp, DejaGnu Builtins
-@subsection Utility Procedures
-
-@kindex utils.exp
-@kindex lib/utils.exp
-@file{lib/utils.exp} defines these utility procedures:
-
-@ftable @code
-@item getdirs @var{dir}
-@itemx getdirs @var{dir} @var{pattern}
-@cindex directories matching a pattern
-@cindex pattern match, directory
-Returns a list of all the directories in the single directory @var{dir}
-that match @var{pattern}. If you do not specify @var{pattern},
-@code{getdirs} assumes @samp{*}. You may use the common shell wildcard
-characters in @var{pattern}. If no directories match the pattern, then a
-@code{NULL} string is returned.
-
-@item find @var{dir} @var{pattern}
-@cindex files matching a pattern
-@cindex pattern match, filenames
-Search for files whose names match @var{pattern} (using shell wildcard
-characters for filename expansion). Search subdirectories recursively,
-starting at @var{dir}. The result is the list of files whose names
-match; if no files match, the result is empty. Filenames in the result
-include all intervening subdirectory names. If no files match the
-pattern, then a @code{NULL} string is returned.
-
-@item which @var{binary}
-@cindex path lookup
-Searches the execution path for an executable file @var{binary}, like
-the the BSD @code{which} utility. This procedure uses the shell
-environment variable @samp{PATH}. It returns @code{0} if the binary is
-not in the path, or if there is no @samp{PATH} environment variable. If
-@var{binary} is in the path, it returns the full path to @var{binary}.
-
-@item grep @var{filename} @var{regexp}
-@item grep @var{filename} @var{regexp} line
-@cindex regular expression, file contents
-@cindex searching file contents
-Search the file called @var{filename} (a fully specified path) for lines
-that contain a match for regular expression @var{regexp}. The result is
-a list of all the lines that match. If no lines match, the result is an
-empty string. Specify @var{regexp} using the standard regular
-expression style used by the Unix utility program @code{grep}.
-
-Use the optional third argument @samp{line} to start lines in the result
-with the line number in @var{filename}. (This argument is simply an
-option flag; type it just as shown---@samp{line}.)
-
-@item diff @var{filename} @var{filename}
-@cindex finding file differences
-@cindex comparing files
-Compares the two files and returns a 1 if they match, or a 0 if they
-don't. If @code{verbose} is set, then it'll print the differences to the
-screen.
-
-@item slay @var{name}
-@cindex slaying processes
-This look in the process tabel for @var{name} and send it a unix
-@code{SIGINT}, killing the process.
-
-@item absolute @var{path}
-@cindex converting relative paths to absolute
-This procedure takes the relative @var{path}, and converts it to an
-absolute path.
-
-@item psource @var{filename}
-@cindex sourcing Tcl files
-This sources the file @var{filename}, and traps all errors. It also
-ignores all extraneous output. If there was an error it returns a 1,
-otherwise it returns a 0.
-
-@item prune @var{list} @var{pattern}
-@cindex list, pruning
-Remove elements of the Tcl list @var{list}. Elements are fields
-delimited by spaces. The result is a copy of @var{list}, without any
-elements that match @var{pattern}. You can use the common shell
-wildcard characters to specify @var{pattern}.
-
-@item setenv @var{var} @var{val}
-@cindex setting environment variables
-Sets the variable @var{var} to the value @var{val}.
-
-@item unsetenv @var{var}
-@cindex unsetting environment variables
-Unsets the environment variable @var{var}
-
-@item getenv @var{var}
-@cindex getting environment variables
-returns the value of @var{var} in the environment if it exists,
-otherwise it returns @code{NULL}.
-
-@item runtest_file_p @var{runtests} @var{testcase}
-@cindex selecting a range of tests
-@cindex tests, running specifically
-Search @var{runtests} for @var{testcase} and return 1 if found, 0 if not.
-@var{runtests} is a list of two elements. The first is the pathname of
-the testsuite expect script running. The second is a copy of what was
-on the right side of the @code{=} if @samp{foo.exp="@dots{}"} was specified,
-or an empty string if no such argument is present.
-This is used by tools like compilers where each testcase is a file.
-
-@item prune_system_crud @var{system} @var{text}
-@cindex pruning system output, examining program output
-For system @var{system}, delete text the host or target operating system might
-issue that will interfere with pattern matching of program output in
-@var{text}. An example is the message that is printed if a shared library
-is out of date.
-
-@end ftable
-
-@noindent
-@node target.exp, debugger.exp, utils.exp, DejaGnu Builtins
-@subsection Cross target procedure
-
-@kindex target.exp
-@kindex lib/target.exp
-@file{lib/target.exp} defines these utility procedures:
-
-@ftable @code
-
-@item push_target @emph{name}
-@cindex set current target
-This makes the target named @emph{name} be the current target
-connection. The value of @emph{name} is an index into the
-@code{target_info} array and is set in the global config file.
-
-@item pop_target
-@cindex unset current target
-This unsets the current target connection.
-
-@item list_targets
-@cindex lists supported targets
-This lists all the supported targets for this architecture.
-
-@item push_host @emph{name}
-@cindex set current host
-This makes the host named @emph{name} be the current remote host
-connection. The value of @emph{name} is an index into the
-@code{target_info} array and is set in the global config file.
-
-@item pop_host
-@cindex unset current host
-This unsets the current host connection.
-
-@c @item compile @emph{file}
-@cindex compile a file
-This invokes the compiler as set by @code{CC} to compile the file
-@emph{file}. The default options for many cross compilation targets are
-@emph{guessed} by DejaGnu, and these options can be added to by passing
-in more parameters as arguments to @code{compile}. Optionally, this will
-also use the value of the @code{cflags} field in the target config
-array. If the host is not the same as the build machines, then then
-compiler is run on the remote host using @code{execute_anywhere}.
-
-@c @item archive @emph{file}
-@cindex archive object files
-This produces an archive file. Any parameters passed to @code{archive}
-are used in addition to the default flags. Optionally, this will
-also use the value of the @code{arflags} field in the target config
-array. If the host is not the same as the build machines, then then
-archiver is run on the remote host using @code{execute_anywhere}.
-
-@c @item ranlib @emph{file}
-@cindex ranlib a file
-This generates an index for the archive file for systems that aren't
-POSIX yet. Any parameters passed to @code{ranlib} are used in for the
-flags.
-
-@item execute_anywhere @emph{cmdline}
-@cindex executing commands remotely
-This executes the @emph{cmdline} on the proper host. This should be used
-as a replacement for the Tcl command @code{exec} as this version
-utilizes the target config info to execute this command on the build
-machine or a remote host. All config information for the remote host
-must be setup to have this command work. If this is a canadian cross,
-(where we test a cross compiler that runs on a different host then where
-DejaGnu is running) then a connection is made to the remote host and
-the command is executed there. It returns either @emph{REMOTERROR} (for
-an error) or the output produced when the command was executed. This is
-used for running the tool to be tested, not a test case.
-
-@end ftable
-
-@node debugger.exp, , target.exp, DejaGnu Builtins
-@subsection Debugging Procedures
-
-@kindex debugger.exp
-@kindex lib/debugger.exp
-@file{lib/debugger.exp} defines these utility procedures:
-
-@ftable @code
-
-@item dumpvars @emph{expr}
-@cindex Print global variable values
-This takes a csh style regular expression (glob rules) and prints the
-values of the global variable names that match. It is abbreviated as
-@code{dv}
-
-@item dumplocals @emph{expr}
-@cindex Print local variable value
-This takes a csh style regular expression (glob rules) and prints the
-values of the local variable names that match. It is abbreviated as
-@code{dl}.
-
-@item dumprocs @emph{expr}
-@cindex Print procedure bodies
-This takes a csh style regular expression (glob rules) and prints the
-body of all procs that match. It is abbreviated as @code{dp}
-
-@item dumpwatch @emph{expr}
-@cindex Print watchpoints
-This takes a csh style regular expression (glob rules) and prints all
-the watchpoints. It is abbreviated as @code{dw}.
-
-@c FIXME: finish these when the code is fixed.
-@c @item watcharray @emph{element} @emph{type}
-@c @cindex Set a watchpoint on an array
-@c This sets an watchpoint of the @emph{element-type} on the
-@c @item watchvar v null type
-@c @cindex Set a watchpoint on a variable
-
-@item watchunset @emph{var}
-@cindex Watch when a variable is unset
-This breaks program execution when the variable @emph{var} is unset. It
-is abbreviated as @code{wu}.
-
-@item watchwrite @emph{var}
-@cindex Watch when a variable is written
-This breaks program execution when the variable @emph{var} is
-written. It is abbreviated as @code{ww}.
-
-@item watchread @emph{var}
-@cindex Watch when a variable is read
-This breaks program execution when the variable @emph{var} is read. It
-is abbreviated as @code{wr}.
-
-@item watchdel @emph{watch}
-@cindex Delete a watchpoint.
-This deletes a the watchpoint for @emph{watch}. It is abbreviated as
-@code{wd}.
-
-@item print @emph{var}
-@cindex Printing variable values
-This prints the value of the variable @emph{var}. It is abbreviated as
-@code{p}.
-
-@item quit
-@cindex Quiting DejaGnu
-This makes runtest exit. It is abbreviated as @code{q}.
-
-@item bt
-@cindex Print a backtrace
-This prints a backtrace of the executed Tcl commands.
-
-@end ftable
-
-@node Target Dependent
-@section Target dependent procedures
-@cindex target dependent procedures
-
-@c FIXME? These may be renamed to just "start", "load", "exit", and
-@c "version" eventually.
-
-Each combination of target and tool requires some target-dependent
-procedures. The names of these procedures have a common form: the tool
-name, followed by an underbar @samp{_}, and finally a suffix describing
-the procedure's purpose. For example, a procedure to extract the
-version from @sc{gdb} is called @samp{gdb_version}. @xref{Init Module,,
-Initialization Module}, for a discussion of how DejaGnu arranges to find
-the right procedures for each target.
-
-@code{runtest} itself calls only two of these procedures,
-@code{@var{tool}_exit} and @code{@var{tool}_version}; these procedures use
-no arguments.
-
-The other two procedures, @code{@var{tool}_start} and
-@code{@var{tool}_load}, are only called by the test suites themselves
-(or by testsuite-specific initialization code); they may take arguments
-or not, depending on the conventions used within each test suite.
-
-@ftable @code
-@item @var{tool}_start
-@cindex start procedure, tested tools
-Starts a particular tool. For an interactive tool,
-@code{@var{tool}_start} starts and initializes the tool, leaving the
-tool up and running for the test cases; an example is @code{gdb_start},
-the start function for @sc{gdb}. For a batch oriented tool,
-@code{@var{tool}_start} is optional; the recommended convention is to
-let @code{@var{tool}_start} run the tool, leaving the output in a
-variable called @code{comp_output}. Test scripts can then analyze
-@samp{$comp_output} to determine the test results. An example of this
-second kind of start function is @code{gcc_start}, the start function
-for @sc{gcc}.
-
-@code{runtest} itself @emph{does not call} @code{@var{tool}_start}. The
-initialization module @file{@var{tool}_init.exp} must call
-@code{@var{tool}_start} for interactive tools; for batch-oriented tools,
-each individual test script calls @code{@var{tool}_start} (or makes
-other arrangements to run the tool).
-
-@item @var{tool}_load
-@cindex load procedure, tested tools
-Loads something into a tool. For an interactive tool, this conditions
-the tool for a particular test case; for example, @code{gdb_load} loads
-a new executable file into the debugger. For batch oriented tools,
-@code{@var{tool}_load} may do nothing---though, for example, the
-@sc{gcc} support uses @code{gcc_load} to load and run a binary on the
-target environment. Conventionally, @code{@var{tool}_load} leaves the
-output of any program it runs in a variable called @samp{exec_output}.
-Writing @code{@var{tool}_load} can be the most complex part of extending
-DejaGnu to a new tool or a new target, if it requires much communication
-coding or file downloading.
-
-Test scripts call @code{@var{tool}_load}.
-
-@item @var{tool}_exit
-@cindex exit procedure, tested tools
-Cleans up (if necessary) before @code{runtest} exits. For interactive
-tools, this usually ends the interactive session. You can also use
-@code{@var{tool}_exit} to remove any temporary files left over from the
-tests.
-
-@code{runtest} calls @code{@var{tool}_exit}.
-
-@item @var{tool}_version
-@cindex version procedure, tested tools
-Prints the version label and number for @var{tool}. This is called by
-the DejaGnu procedure that prints the final summary report. The output
-should consist of the full path name used for the tested tool, and its
-version number.
-
-@code{runtest} calls @code{@var{tool}_version}.
-@end ftable
-
-The usual convention for return codes from any of these procedures
-(although it is not required by @code{runtest}) is to return @code{0} if
-the procedure succeeded, @code{1} if it failed, and @code{-1} if there
-was a communication error.
-
-@node Cross Targets
-@section Remote targets supported
-
-@cindex targets
-@cindex remote testing
-The DejaGnu distribution includes support for the following remote
-targets. You can set the target name and the connect mode in the
-@file{site.exp} file (using the Tcl variables @samp{targetname} and
-@samp{connectmode}, respectively), or on the @code{runtest} command line
-(using @samp{--name} and @samp{--connect}).
-
-@table @strong
-@item @sc{amd} 29000, with UDI protocol
-Configure DejaGnu for target @samp{a29k-amd-udi}. (Cygnus
-@code{configure} also recognizes the abbreviation @samp{udi29k}.) Then,
-to run tests, use the @code{runtest} target name to specify whether you
-want to use a simulator, or a particular hardware board. The particular
-string to use with @samp{--name} will depend on your UDI setup file,
-@file{udi_soc} (if @file{udi_soc} is not in your working directory, the
-environment variable @samp{UDICONF} should contain a path to this file).
-For example, if your UDI setup file includes these lines:
-@end table
-@c table "ends" *only* to allow wider example below
-
-@cartouche
-@smallexample
-iss AF_UNIX * isstip -r /home/gnu/29k/src/osboot/sim/osboot
-mon AF_UNIX * montip -t serial -baud 9600 -com /dev/ttyb
-@end smallexample
-@end cartouche
-
-@table @strong
-@item @w{ }
-@c fake out table/item into continuing w/same margin as before
-You can use @samp{--name iss} to run tests on the simulator, and
-@samp{--name mon} to run tests on the 29K hardware. See the
-manufacturer's manuals for more information on UDI and @file{udi_soc}.
-@c FIXME! Is there a better ref than "the manufacturer's manuals"?
-
-@kindex mondfe
-The default connect protocol is @samp{mondfe} with either back end.
-@code{mondfe} is the only shell DejaGnu supports for UDI targets.
-@code{mondfe} is an @sc{amd} specific monitor program freely available
-from @sc{amd}.
-
-@emph{Warning:} This target requires @sc{gdb} version 4.7.2 (or
-greater). Earlier versions of @sc{gdb} do not fully support the
-@code{load} command on this target, so DejaGnu has no way to load
-executable files from the debugger.
-
-@item Motorola 680x0 boards, a.out or @sc{coff} object format
-Configure DejaGnu for any remote target matching @samp{m68k-*}.
-
-@emph{Warning:} Most @samp{m68k-*} configurations run all tests only for
-native testing (when the target is the same as the host). When you
-specify most of these targets for a cross configuration, you will only be
-able to use tests that run completely within the host (for example,
-tests of the binary utilities such as the archiver; or compiler tests
-that only generate code rather than running it).
-
-To run a.out or @sc{coff} binaries on a remote M68K, you must configure
-DejaGnu for a particular target board. @samp{m68k-abug} is an example.
-(In general for an embedded environment, because it does not have absolute
-addresses, a.out is not a good choice for output format in any case; most
-often S-records or Hex-32 are used instead.)
-
-@item Motorola 68K MVME 135 board running ABug boot monitor
-Configure for @samp{m68k-abug-aout} or @samp{m68k-abug-coff} (as a
-target). This boot monitor can only download S-records; therefore, the
-DejaGnu tests for this environment require a linker command script to
-convert either output format to S-records, setting the default addresses
-for @code{.text}, @code{.bss}, and @code{.data}.
-
-With this configuration, the default for @samp{--connect} is @samp{tip}.
-@samp{tip} is the only communications protocol supported for connecting
-to @samp{m68k-abug-*} targets. @samp{tip} uses an @sc{ascii} downloader
-(the @code{~put} command) to load S-records into the target board. The
-@samp{--name} string must be a machine name that @code{tip}
-understands (for example, on some @code{tip} implementations it must be
-an entry from the initialization file for @code{tip}; this file is
-sometimes called @file{/etc/remote}).
-
-See your system documentation for information on how to create new
-entries in @file{/etc/remote}. (Some @sc{unix} systems are distributed
-with at least one default entry with a name resembling @samp{hardwire};
-if your system has one, you can edit it, or make a modified copy with a
-new name.) When you have a working @file{/etc/remote} entry
-@var{abugtarget}, you should be able to type @samp{tip
-@var{abugtarget}}, and get the prompt @samp{135ABUG>} from the board.
-Use the same @var{abugtarget} string with @samp{runtest --name}.
-
-@item Motorola IDP board running the rom68k boot monitor
-@c FIXME 1: this doesn't really say anything! OK, so functionality is
-@c the same. Is object code the same (srecords)? Do we configure with
-@c the same triplets? What is the default for --connect? Is
-@c any comms method other than tip supported? What prompt to expect
-@c when tip connected?
-@c FIXME 2: should @code{BUG} below be @code{ABUG}?
-This is the same in functionality as the MVME board running the
-@code{BUG} boot monitor. Only the monitor commands and the addresses are
-different.
-
-@item VxWorks (Motorola 68K or Intel 960)
-Configure DejaGnu for either @samp{m68k-wrs-vxworks} (abbreviated
-@samp{vxworks68}) or @samp{i960-wrs-vxworks} (abbreviated
-@samp{vxworks960}). Since both targets support IP addressing, specify
-the network address (for example, a host name from @file{/etc/hosts})
-with @samp{--name}.
-
-The default connect protocol is @samp{rlogin}, but you can use any of
-@samp{--connect rlogin}, @samp{--connect telnet}, or @samp{--connect
-rsh}.
-
-Test scripts need no special code to load programs into these targets;
-since VxWorks supports NFS, all you must do is ensure test programs are
-on an exported filesystem.
-
-@cindex VxWorks, link with @samp{-r}
-When you compile for VxWorks, use the linker @samp{-r} option to make
-the linker output relocatable---at least if you want to use library
-routines. Many standard C routines are included in VxWorks; often no
-additional libraries are needed. See your VxWorks system documentation
-for additional details.
-@end table
-
-@node Input Files
-@section The files DejaGnu reads
-@cindex input files
-
-The @code{runtest} program used to invoke DejaGnu is a short shell
-script generated by @code{make} during the configuration process. Its
-main task is to read the main test framework driver, @file{runtest.exp}.
-
-@file{runtest.exp}, in turn, reads @code{expect} code from certain other
-files, in this order:
-
-@enumerate
-@item
-Each of the @file{site.exp} local definition files available.
-@xref{Customizing,,Setting @code{runtest} defaults}, for details.
-
-@item
-@file{lib/utils.exp}, a collection of utility procedures. @xref{DejaGnu
-Builtins,,DejaGnu Builtins}, for descriptions of these procedures.
-
-@item
-@file{lib/framework.exp}, a file of subroutines meant for @code{runtest}
-itself rather than for general-purpose use in both @code{runtest} and
-test suites.
-
-@item
-@file{debugger.exp}, Don Libes' Tcl Debugger. (See @cite{A Debugger for
-Tcl Applications} by Don Libes. This paper is distributed with
-@code{expect} in PostScript form as the file
-@file{expect/tcl-debug.ps}.)
-
-@item
-@file{lib/remote.exp}, a collection of subroutines meant for connecting
-to remote machines.
-
-@item
-@file{lib/target.exp}, a collection of subroutines used for the
-configuration systems in DejaGnu. These procedures typically manipulate
-or utilize the configuration system.
-
-@item
-@c FIXME! A comment in runtest.exp claims a system default is used if
-@c no tool-specific init file is not available; I couldn't see where
-@c the program flow actually does this, though---pesch 30jul1993.
-An initialization file @code{@var{tool}_init.exp}. @xref{Init
-Module,,Initialization module}, for more discussion of init files.
-@end enumerate
-
-@c This hard page break is mainly intended for smallbook formatting;
-@c some examples in this section come out better if this starts at a
-@c page boundary.
-@page
-@node Output Files
-@section The files DejaGnu writes
-@cindex output files
-
-@code{runtest} always writes two kinds of output files: summary logs and
-detailed logs. The contents of both of these are determined by your
-tests.
-
-For troubleshooting, a third kind of output file is useful: use
-@samp{--debug} to request an output file showing details of what
-@code{expect} is doing internally.
-
-@menu
-* Summary:: Files that summarize tests
-* Detail:: Files that contain complete test results
-* Debug:: Logging expect internal actions
-@end menu
-
-@node Summary
-@subsection Summary log
-@cindex summary log
-
-@code{runtest} always produces a summary output file
-@file{@var{tool}.sum}. This summary shows the names of all test files
-run; for each test file, one line of output from each @code{pass}
-command (showing status @samp{PASS} or @samp{XPASS}) or @code{fail}
-command (status @samp{FAIL} or @samp{XFAIL}); trailing summary
-statistics that count passing and failing tests (expected and
-unexpected); and the full pathname and version number of the tool
-tested. (All possible outcomes, and all errors, are always reflected in
-the summary output file, regardless of whether or not you specify
-@samp{--all}.)
-
-If any of your tests use the procedures @code{unresolved},
-@code{unsupported}, or @code{untested}, the summary output also
-tabulates the corresponding outcomes.
-
-For example, after @samp{runtest --tool binutils}, look for a summary
-log in @file{binutils.sum}. Normally, @code{runtest} writes this file
-in your current working directory; use the @samp{--outdir} option to
-select a different directory.
-
-@need 3500
-@noindent
-Here is a short sample summary log:
-
-@cartouche
-@smallexample
-Test Run By rob on Mon May 25 21:40:57 PDT 1992
- === gdb tests ===
-Running ./gdb.t00/echo.exp ...
-PASS: Echo test
-Running ./gdb.all/help.exp ...
-PASS: help add-symbol-file
-PASS: help aliases
-PASS: help breakpoint "bre" abbreviation
-FAIL: help run "r" abbreviation
-Running ./gdb.t10/crossload.exp ...
-PASS: m68k-elf (elf-big) explicit format; loaded
-XFAIL: mips-ecoff (ecoff-bigmips) "ptype v_signed_char" signed
-C types
- === gdb Summary ===
-# of expected passes 5
-# of expected failures 1
-# of unexpected failures 1
-/usr/latest/bin/gdb version 4.6.5 -q
-@end smallexample
-@end cartouche
-
-@node Detail
-@subsection Detailed log
-@cindex detailed log
-
-@code{runtest} also saves a detailed log file @file{@var{tool}.log},
-showing any output generated by tests as well as the summary output.
-For example, after @samp{runtest --tool binutils}, look for a detailed
-log in @file{binutils.log}. Normally, @code{runtest} writes this file
-in your current working directory; use the @samp{--outdir} option to
-select a different directory.
-
-@need 4000
-@noindent
-Here is a brief example showing a detailed log for @sc{g++} tests:
-
-@cartouche
-@smallexample
-Test Run By rob on Mon May 25 21:40:43 PDT 1992
-
- === g++ tests ===
-
---- Running ./g++.other/t01-1.exp ---
- PASS: operate delete
-
---- Running ./g++.other/t01-2.exp ---
- FAIL: i960 bug EOF
-p0000646.C: In function `int warn_return_1 ()':
-p0000646.C:109: warning: control reaches end of non-void function
-p0000646.C: In function `int warn_return_arg (int)':
-p0000646.C:117: warning: control reaches end of non-void function
-p0000646.C: In function `int warn_return_sum (int, int)':
-p0000646.C:125: warning: control reaches end of non-void function
-p0000646.C: In function `struct foo warn_return_foo ()':
-p0000646.C:132: warning: control reaches end of non-void function
-
---- Running ./g++.other/t01-4.exp ---
- FAIL: abort
-900403_04.C:8: zero width for bit-field `foo'
---- Running ./g++.other/t01-3.exp ---
- FAIL: segment violation
-900519_12.C:9: parse error before `;'
-900519_12.C:12: Segmentation violation
-/usr/latest/bin/gcc: Internal compiler error: program cc1plus got
-fatal signal
-
- === g++ Summary ===
-
-# of expected passes 1
-# of expected failures 3
-/usr/ps/bin/g++ version cygnus-2.0.1
-@end smallexample
-@end cartouche
-
-@node Debug
-@subsection Logging @code{expect} internal actions
-@cindex debug log
-
-With the @samp{--debug} option, you can request a log file showing the
-output from @code{expect} itself, running in debugging mode. This file
-(@file{dbg.log}, in the directory where you start @code{runtest}) shows
-each pattern @code{expect} considers in analyzing test output.
-
-This file reflects each @code{send} command, showing the string sent as
-input to the tool under test; and each @code{expect} command, showing
-each pattern it compares with the tool output.
-
-The log messages for @code{expect} begin with a message of the form
-
-@smallexample
-expect: does @{@var{tool output}@} (spawn_id @var{n}) match pattern
-@{@var{expected pattern}@}?
-@end smallexample
-
-@noindent
-For every unsuccessful match, @code{expect} issues a @samp{no} after
-this message; if other patterns are specified for the same
-@code{expect} command, they are reflected also, but without the first
-part of the message (@samp{expect@dots{}match pattern}).
-
-When @code{expect} finds a match, the log for the successful match ends
-with @samp{yes}, followed by a record of the @code{expect} variables set
-to describe a successful match. Here is an excerpt from the debugging
-log for a @sc{gdb} test:
-
-@c FIXME! Why is the second spawn_id shown 0 rather than 6?
-@cartouche
-@smallexample
-send: sent @{break gdbme.c:34\n@} to spawn id 6
-expect: does @{@} (spawn_id 6) match pattern @{Breakpoint.*at.* file
- gdbme.c, line 34.*\(gdb\) $@}? no
-@{.*\(gdb\) $@}? no
-expect: does @{@} (spawn_id 0) match pattern @{<return>@}? no
-@{\(y or n\) @}? no
-@{buffer_full@}? no
-@{virtual@}? no
-@{memory@}? no
-@{exhausted@}? no
-@{Undefined@}? no
-@{command@}? no
-break gdbme.c:34
-Breakpoint 8 at 0x23d8: file gdbme.c, line 34.
-(gdb) expect: does @{break gdbme.c:34\r\nBreakpoint 8 at 0x23d8:
-file gdbme.c, line 34.\r\n(gdb) @} (spawn_id 6) match pattern
-@{Breakpoint.*at.* file gdbme.c, line 34.*\(gdb\) $@}? yes
-expect: set expect_out(0,start) @{18@}
-expect: set expect_out(0,end) @{71@}
-expect: set expect_out(0,string) @{Breakpoint 8 at 0x23d8: file
-gdbme.c, line 34.\r\n(gdb) @}
-expect: set expect_out(spawn_id) @{6@}
-expect: set expect_out(buffer) @{break gdbme.c:34\r\nBreakpoint 8
-at 0x23d8: file gdbme.c, line 34.\r\n(gdb) @}
- PASS: 70 0 breakpoint line number in file
-@end smallexample
-@end cartouche
-
-@noindent
-This example exhibits three properties of @code{expect} and DejaGnu that
-might be surprising at first glance:
-
-@itemize @bullet
-@item
-Empty output for the first attempted match. The first set of attempted
-matches shown ran against the output @samp{@{@}}---that is, no output.
-@code{expect} begins attempting to match the patterns supplied
-immediately; often, the first pass is against incomplete output (or
-completely before all output, as in this case).
-
-@item
-Interspersed tool output. The beginning of the log entry for the second
-attempted match may be hard to spot: this is because the prompt
-@samp{(gdb) } appears on the same line, just before the @samp{expect:}
-that marks the beginning of the log entry.
-
-@item
-Fail-safe patterns. Many of the patterns tested are fail-safe patterns
-provided by @sc{gdb} testing utilities, to reduce possible
-indeterminacy. It is useful to anticipate potential variations
-caused by extreme system conditions (@sc{gdb} might issue the message
-@samp{virtual memory exhausted} in rare circumstances), or by changes in
-the tested program (@samp{Undefined command} is the likeliest outcome if
-the name of a tested command changes).
-
-The pattern @samp{@{<return>@}} is a particularly interesting fail-safe
-to notice; it checks for an unexpected @key{RET} prompt. This may
-happen, for example, if the tested tool can filter output through a
-pager.
-
-These fail-safe patterns (like the debugging log itself) are primarily
-useful while developing test scripts. Use the @code{error} procedure to
-make the actions for fail-safe patterns produce messages starting with
-@samp{ERROR} on the @code{runtest} standard output, and in the detailed
-log file.
-@end itemize
-
-@node Tests
-@chapter How To Write a Test Case
-@cindex writing a test case
-@cindex test case, writing
-
-@menu
-* Writing:: Writing a test case
-* Debugging:: Debugging a test case
-* Adding:: Adding a test case to a test suite
-* Hints:: Hints on writing a test case
-* Variables:: Special variables used by test cases
-@end menu
-
-@node Writing
-@section Writing a test case
-
-The easiest way to prepare a new test case is to base it on an existing
-one for a similar situation. There are two major categories of tests:
-batch or interactive. Batch oriented tests are usually easier to write.
-
-The @sc{gcc} tests are a good example of batch oriented tests. All
-@sc{gcc} tests consist primarily of a call to a single common procedure,
-since all the tests either have no output, or only have a few warning
-messages when successfully compiled. Any non-warning output is a test
-failure. All the C code needed is kept in the test directory. The test
-driver, written in @code{expect}, need only get a listing of all the C
-files in the directory, and compile them all using a generic procedure.
-This procedure and a few others supporting for these tests are kept in
-the library module @file{lib/c-torture.exp} in the @sc{gcc} test suite.
-Most tests of this kind use very few @code{expect} features, and are
-coded almost purely in Tcl.
-
-@noindent
-Writing the complete suite of C tests, then, consisted of these steps:
-
-@enumerate
-@item
-@cindex Granlund, Torbjorn
-@cindex C torture test
-Copying all the C code into the test directory. These tests were based on
-the C-torture test created by Torbjorn Granlund (on behalf of the Free
-Software Foundation) for @sc{gcc} development.
-
-@item
-Writing (and debugging) the generic @code{expect} procedures for
-compilation.
-
-@item
-Writing the simple test driver: its main task is to search the directory
-(using the Tcl procedure @code{glob} for filename expansion with
-wildcards) and call a Tcl procedure with each filename. It also checks
-for a few errors from the testing procedure.
-@end enumerate
-
-Testing interactive programs is intrinsically more complex. Tests for most
-interactive programs require some trial and error before they are complete.
-
-However, some interactive programs can be tested in a simple fashion
-reminiscent of batch tests. For example, prior to the creation of
-DejaGnu, the @sc{gdb} distribution already included a wide-ranging
-testing procedure. This procedure was very robust, and had already
-undergone much more debugging and error checking than many recent
-DejaGnu test cases. Accordingly, the best approach was simply to
-encapsulate the existing @sc{gdb} tests, for reporting purposes.
-Thereafter, new @sc{gdb} tests built up a family of @code{expect}
-procedures specialized for @sc{gdb} testing.
-
-@file{gdb.t10/crossload.exp} is a good example of an interactive test.
-@c FIXME! Check what *kind* of example it is---work-intensive, or generic...
-
-@node Debugging
-@section Debugging a test case
-@cindex debugging a test case
-@cindex test case, debugging
-
-@noindent
-These are the kinds of debugging information available from DejaGnu:
-
-@enumerate
-@item
-Output controlled by test scripts themselves, explicitly allowed for by
-the test author. This kind of debugging output appears in the detailed
-output recorded in the @file{@var{tool}.log} file. To do the same for
-new tests, use the @code{verbose} procedure (which in turn uses the
-variable also called @code{verbose}) to control how much output to
-generate. This will make it easier for other people running the test to
-debug it if necessary. Whenever possible, if @samp{$verbose} is
-@code{0}, there should be no output other than the output from
-@code{pass}, @code{fail}, @code{error}, and @code{warning}. Then, to
-whatever extent is appropriate for the particular test, allow
-successively higher values of @samp{$verbose} to generate more
-information. Be kind to other programmers who use your tests: provide
-for a lot of debugging information.
-
-@item
-Output from the internal debugging functions of Tcl and @code{expect}.
-There is a command line options for each; both forms of debugging output
-are recorded in the file @code{dbg.log} in the current directory.
-
-Use @samp{--debug} for information from the @code{expect} level; it
-generates displays of the @code{expect} attempts to match the tool
-output with the patterns specified (@pxref{Debug,,Debug Log}). This
-output can be very helpful while developing test scripts, since it shows
-precisely the characters received. Iterating between the latest attempt
-at a new test script and the corresponding @file{dbg.log} can allow you
-to create the final patterns by ``cut and paste''. This is sometimes
-the best way to write a test case.
-
-Use @samp{--strace} to see more detail at the Tcl level; this shows how Tcl
-procedure definitions expand, as they execute. The associated number
-controls the depth of definitions expanded; see the discussion of
-@samp{--strace} in @ref{Invoking runtest,,Running the Tests}.
-
-@item
-Finally, if the value of @samp{verbose} is 3 or greater, @code{runtest}
-turns on the @code{expect} command @code{log_user}. This command prints
-all @code{expect} actions to the @code{expect} standard output, to the
-detailed log file, and (if @samp{--debug} is on) to @file{dbg.log}.
-@end enumerate
-
-@node Adding
-@section Adding a test case to a test suite
-@cindex adding a test case
-
-There are two slightly different ways to add a test case. One is to add
-the test case to an existing directory. The other is to create a new
-directory to hold your test. The existing test directories represent
-several styles of testing, all of which are slightly different; examine
-the directories for the tool of interest to see which (if any) is most
-suitable.
-
-Adding a @sc{gcc} test can be very simple: just add the C code to any
-directory beginning with @samp{gcc.} and it runs on the next
-@samp{runtest --tool gcc}.
-
-To add a test to @sc{gdb}, first add any source code you will need to
-the test directory. Then you can either create a new @code{expect} file,
-or add your test to an existing one (any file with a @samp{.exp}
-suffix). Creating a new @samp{.exp} file is probably a better idea if
-the test is significantly different from existing tests. Adding it as a
-separate file also makes upgrading easier. If the C code has to be
-already compiled before the test will run, then you'll have to add it to
-the @file{Makefile.in} file for that test directory, then run
-@code{configure} and @code{make}.
-
-Adding a test by creating a new directory is very similar:
-
-@enumerate
-@item
-Create the new directory. All subdirectory names begin with the name of
-the tool to test; e.g. @sc{g++} tests might be in a directory called
-@file{g++.other}. There can be multiple test directories that start with
-the same tool name (such as @samp{g++}).
-
-@item
-Add the new directory name to the @samp{configdirs} definition in the
-@file{configure.in} file for the test suite directory. This way when
-@code{make} and @code{configure} next run, they include the new directory.
-
-@item
-Add the new test case to the directory, as above.
-
-@item
-To add support in the new directory for configure and make, you must
-also create a @code{Makefile.in} and a @code{configure.in}. @xref{What
-Configure Does,,What Configure Does, configure.info, Cygnus Configure}.
-@end enumerate
-
-@c FIXME! Expand this sentence to at least a section, maybe a chapter...
-@c The @file{admin} directory contains templates for a few common forms
-@c of test.
-
-@node Hints
-@section Hints on writing a test case
-@cindex hints on test case writing
-
-There may be useful existing procedures already written for your test in
-the @file{lib} directory of the DejaGnu distribution. @xref{DejaGnu
-Builtins,,DejaGnu Builtins}.
-
-It is safest to write patterns that match @emph{all} the output
-generated by the tested program; this is called @dfn{closure}. If a
-pattern does not match the entire output, any output that remains will
-be examined by the @emph{next} @code{expect} command. In this
-situation, the precise boundary that determines which @code{expect}
-command sees what is very sensitive to timing between the @code{expect}
-task and the task running the tested tool. As a result, the test may
-sometimes appear to work, but is likely to have unpredictable results.
-(This problem is particularly likely for interactive tools, but can also
-affect batch tools---especially for tests that take a long time to finish.)
-The best way to ensure closure is to use the @samp{-re} option for the
-@code{expect} command to write the pattern as a full regular
-expressions; then you can match the end of output using a @samp{$}. It
-is also a good idea to write patterns that match all available output by
-using @samp{.*\} after the text of interest; this will also match any
-intervening blank lines. Sometimes an alternative is to match end of
-line using @samp{\r} or @samp{\n}, but this is usually too dependent on
-terminal settings.
-@c FIXME!! explain what "end of output" means for interactive task.
-@c (Timeout or EOF, right?)
-
-Always escape punctuation, such as @samp{(} or @samp{"}, in your
-patterns; for example, write @samp{\(}. If you forget to escape
-punctuation, you will usually see an error message like @samp{extra
-characters after close-quote}.
-
-If you have trouble understanding why a pattern does not match the
-program output, try using the @samp{--debug} option to @code{runtest},
-and examine the debug log carefully. @xref{Debug,,Debug Log}.
-
-Be careful not to neglect output generated by setup rather than by the
-interesting parts of a test case. For example, while testing @sc{gdb},
-I issue a send @samp{set height 0\n} command. The purpose is simply to
-make sure @sc{gdb} never calls a paging program. The @samp{set height}
-command in @sc{gdb} does not generate any output; but running @emph{any}
-command makes @sc{gdb} issue a new @samp{(gdb) } prompt. If there were
-no @code{expect} command to match this prompt, the output @samp{(gdb) }
-begins the text seen by the next @code{expect} command---which might
-make @emph{that} pattern fail to match.
-
-To preserve basic sanity, I also recommended that no test ever pass if
-there was any kind of problem in the test case. To take an extreme
-case, tests that pass even when the tool will not spawn are misleading.
-Ideally, a test in this sort of situation should not fail either.
-Instead, print an error message by calling one of the DejaGnu procedures
-@code{error} or @code{warning}.
-
-@node Variables
-@section Special variables used by test cases
-@cindex special variables
-
-@cindex variables for all tests
-Your test cases can use these variables, with conventional meanings (as
-well as the variables saved in @file{site.exp}
-@pxref{Customizing,,Setting @code{runtest} defaults}):
-
-@quotation
-@emph{These variables are available to all test cases.}
-@end quotation
-
-@ftable @code
-@item prms_id
-@cindex PRMS bug number
-@cindex GNATS bug number
-@cindex bug number
-The tracking system (e.g. @sc{gnats}) number identifying a corresponding
-bugreport. (@samp{0} if you do not specify it in the test script.)
-
-@item bug_id
-@cindex bug number, extra
-An optional bug id; may reflect a bug identification from another
-organization. (@samp{0} if you do not specify it.)
-
-@item subdir
-@cindex current test subdirectory
-The subdirectory for the current test case.
-@end ftable
-
-@quotation
-@emph{These variables should never be changed. They appear in most
-tests.}
-@end quotation
-
-@ftable @code
-@item expect_out(buffer)
-@cindex last command output
-The output from the last command. This is an internal variable set by
-@code{expect}.
-
-@item exec_output
-This is the output from a @code{@var{tool}_load} command. This only
-applies to tools like @sc{gcc} and @sc{gas} which produce an object
-file that must in turn be executed to complete a test.
-
-@item comp_output
-This is the output from a @code{@var{tool}_start} command. This is
-conventionally used for batch oriented programs, like @sc{gcc} and
-@sc{gas}, that may produce interesting output (warnings, errors) without
-further interaction.
-@end ftable
-
-@node Extending
-@chapter New Tools, Targets, or Hosts
-
-The most common ways to extend the DejaGnu framework are: adding a suite
-of tests for a new tool to be tested; adding support for testing on a
-new target; and porting @code{runtest} to a new host.
-
-@menu
-* Adding Tools:: How to add tests for a new tool
-* Adding Targets:: How to add a new target
-* Porting:: Porting DejaGnu to a new host
-@end menu
-
-@node Adding Tools
-@section Writing tests for a new tool
-
-In general, the best way to learn how to write (code or even prose) is
-to read something similar. This principle applies to test cases and to
-test suites. Unfortunately, well-established test suites have a way of
-developing their own conventions: as test writers become more
-experienced with DejaGnu and with Tcl, they accumulate more utilities,
-and take advantage of more and more features of @code{expect} and Tcl in
-general.
-
-Inspecting such established test suites may make the prospect of
-creating an entirely new test suite appear overwhelming. Nevertheless,
-it is quite straightforward to get a new test suite going.
-
-@cindex Lupton, Robert
-There is one test suite that is guaranteed not to grow more elaborate
-over time: both it and the tool it tests were created expressly to
-illustrate what it takes to get started with DejaGnu. The
-@file{example/} directory of the DejaGnu distribution contains both an
-interactive tool called @code{calc}, and a test suite for it. Reading
-this test suite, and experimenting with it, is a good way to supplement
-the information in this section. (Thanks to Robert Lupton for creating
-@code{calc} and its test suite---and also the first version of this
-section of the manual!)
-
-To help orient you further in this task, here is an outline of the steps
-to begin building a test suite for a program @var{example}.
-
-@enumerate
-@item
-Create or select a directory to contain your new collection of tests.
-Change to that directory (shown here as @code{testsuite}):
-
-@example
-eg$ cd testsuite/
-@end example
-
-@item
-Create a @file{configure.in} file in this directory, to control
-configuration-dependent choices for your tests. So far as DejaGnu is
-concerned, the important thing is to set a value for the variable
-@code{target_abbrev}; this value is the link to the init file you will
-write soon. (For simplicity, we assume the environment is Unix, and use
-@samp{unix} as the value.)
-
-What else is needed in @file{configure.in} depends on the requirements
-of your tool, your intended test environments, and which
-@code{configure} system you use. This example is a minimal
-@code{configure.in} for use with Cygnus Configure. (For an alternative
-based on the FSF @code{autoconf} system, see the @code{calc} example
-distributed with DejaGnu.) Replace @var{example} with the name of your
-program:
-
-@cartouche
-@smallexample
-# This file is a shell script fragment
-# for use with Cygnus configure.
-
-srctrigger="@var{example}.0"
-srcname="The DejaGnu @var{example} tests"
-
-# per-host:
-
-# per-target:
-
-# everything defaults to unix for a target
-target_abbrev=unix
-
-# post-target:
-
-@end smallexample
-@end cartouche
-
-@item
-Create @file{Makefile.in}, the source file used by @code{configure} to
-build your @file{Makefile}. Its leading section should as usual contain
-the values that @code{configure} may override:
-
-@cartouche
-@smallexample
-srcdir = .
-prefix = /usr/local
-
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-libdir = $(exec_prefix)/lib
-tooldir = $(libdir)/$(target_alias)
-
-datadir = $(exec_prefix)/lib/dejagnu
-
-RUNTEST = runtest
-RUNTESTFLAGS =
-FLAGS_TO_PASS =
-
-#### host, target, site specific Makefile frags come in here.
-@end smallexample
-@end cartouche
-
-This should be followed by the standard targets at your site. To begin
-with, they need not do anything---for example, these definitions will
-do:
-
-@cartouche
-@smallexample
-
-all:
-
-info:
-
-install-info:
-
-install:
-uninstall:
-
-clean:
- -rm -f *~ core *.info*
-
-@end smallexample
-@end cartouche
-
-It is also a good idea to make sure your @file{Makefile} can rebuild
-itself if @file{Makefile.in} changes, with a target like this (which
-works for either Cygnus or FSF Configure):
-
-@cartouche
-@smallexample
-Makefile : $(srcdir)/Makefile.in $(host_makefile_frag) \
- $(target_makefile_frag)
- $(SHELL) ./config.status
-@end smallexample
-@end cartouche
-
-You also need to include two targets important to DejaGnu: @code{check},
-to run the tests, and @code{site.exp}, to set up the Tcl copies of
-configuration-dependent values. The @code{check} target must run
-@samp{runtest --tool @var{example}}:
-
-@cartouche
-@smallexample
-check: site.exp all
- $(RUNTEST) $(RUNTESTFLAGS) $(FLAGS_TO_PASS) \
- --tool @var{example} --srcdir $(srcdir)
-@end smallexample
-@end cartouche
-
-The @code{site.exp} target should usually set up (among other things!) a
-Tcl variable for the name of your program:
-
-@cartouche
-@smallexample
-site.exp: ./config.status Makefile
- @@echo "Making a new config file..."
- -@@rm -f ./tmp?
- @@touch site.exp
-
- -@@mv site.exp site.bak
- @@echo "## these variables are automatically\
- generated by make ##" > ./tmp0
- @@echo "# Do not edit here. If you wish to\
- override these values" >> ./tmp0
- @@echo "# add them to the last section" >> ./tmp0
- @@echo "set host_os $@{host_os@}" >> ./tmp0
- @@echo "set host_alias $@{host_alias@}" >> ./tmp0
- @@echo "set host_cpu $@{host_cpu@}" >> ./tmp0
- @@echo "set host_vendor $@{host_vendor@}" >> ./tmp0
- @@echo "set target_os $@{target_os@}" >> ./tmp0
- @@echo "set target_alias $@{target_alias@}" >> ./tmp0
- @@echo "set target_cpu $@{target_cpu@}" >> ./tmp0
- @@echo "set target_vendor $@{target_vendor@}" >> ./tmp0
- @@echo "set host_triplet $@{host_canonical@}" >> ./tmp0
- @@echo "set target_triplet $@{target_canonical@}">>./tmp0
- @@echo "set tool binutils" >> ./tmp0
- @@echo "set srcdir $@{srcdir@}" >> ./tmp0
- @@echo "set objdir `pwd`" >> ./tmp0
- @@echo "set @var{examplename} @var{example}" >> ./tmp0
- @@echo "## All variables above are generated by\
- configure. Do Not Edit ##" >> ./tmp0
- @@cat ./tmp0 > site.exp
- @@sed < site.bak \
- -e '1,/^## All variables above are.*##/ d' \
- >> site.exp
- -@@rm -f ./tmp?
-@end smallexample
-@end cartouche
-
-@item
-Create a directory (in @file{testsuite/}) called @file{config/}:
-
-@example
-eg$ mkdir config
-@end example
-
-@item
-Make an init file in this directory; its name must start with the
-@code{target_abbrev} value, so call it @file{config/unix.exp}.
-This is the file that contains the target-dependent procedures;
-fortunately, most of them do not have to do very much in order for
-@code{runtest} to run.
-
-If @var{example} is not interactive, you can get away with this minimal
-@file{unix.exp} to begin with:
-
-@cartouche
-@smallexample
-proc foo_exit @{@} @{@}
-proc foo_version @{@} @{@}
-@end smallexample
-@end cartouche
-
-If @var{example} is interactive, however, you might as well define a
-start routine @emph{and invoke it} by using an init file like this:
-
-@cartouche
-@smallexample
-proc foo_exit @{@} @{@}
-proc foo_version @{@} @{@}
-
-proc foo_start @{@} @{
- global @var{examplename}
- spawn $@var{examplename}
- expect @{
- -re "" @{@}
- @}
-@}
-foo_start
-@end smallexample
-@end cartouche
-
-@item
-Create a directory whose name begins with your tool's name, to contain
-tests:
-
-@example
-eg$ mkdir @var{example}.0
-@end example
-
-@item
-Create a sample test file in @file{@var{example}.0}. Its name must end
-with @samp{.exp}; you can use @samp{first-try.exp} To begin with, just
-write there a line of Tcl code to issue a message:
-
-@cartouche
-@smallexample
-send_user "Testing: one, two...\n"
-@end smallexample
-@end cartouche
-
-@item
-Back in the @file{testsuite/} (top level) directory, run
-
-@example
-eg$ configure
-@end example
-
-(You may have to specify more of a path, if a suitable @code{configure}
-is not available in your execution path.)
-
-@item
-You are now ready to triumphantly type @samp{make check} or
-@samp{runtest --tool @var{example}}. You should see something like this:
-
-@cartouche
-@smallexample
-Test Run By rhl on Fri Jan 29 16:25:44 EST 1993
-
- === @var{example} tests ===
-
-Running ./@var{example}.0/first-try.exp ...
-Testing: one, two...
-
- === @var{example} Summary ===
-
-@end smallexample
-@end cartouche
-
-There is no output in the summary, because so far the example does not
-call any of the procedures that establish a test outcome.
-
-@item
-Begin writing some real tests. For an interactive tool, you should
-probably write a real exit routine in fairly short order; in any case,
-you should also write a real version routine soon.
-@end enumerate
-
-@node Adding Targets
-@section Adding a target
-@cindex adding a target
-
-DejaGnu has some additional requirements for target support, beyond the
-general-purpose provisions of Cygnus @code{configure}. @code{runtest}
-must actively communicate with the target, rather than simply generating
-or managing code for the target architecture. Therefore, each tool
-requires an initialization module for each target. For new targets, you
-must supply a few Tcl procedures to adapt DejaGnu to the target. This
-permits DejaGnu itself to remain target independent. @xref{Init
-Module,,Initialization module}, for a discussion of the naming
-conventions that enable DejaGnu to locate and use init files.
-
-Usually the best way to write a new initialization module is to edit an
-existing initialization module; some trial and error will be required.
-If necessary, you can use the @samp{--debug} option to see what
-is really going on.
-
-When you code an initialization module, be generous in printing
-information controlled by the @code{verbose} procedure (@pxref{DejaGnu
-Builtins, DejaGnu procedures}).
-
-Most of the work is in getting the communications right. Communications
-code (for several situations involving IP networks or serial lines) is
-available in a DejaGnu library file, @file{lib/remote.exp}.
-@xref{DejaGnu Builtins,,DejaGnu Builtins}.
-
-@c FIXME! Say something about Tcl debugger here.
-If you suspect a communication problem, try running the connection
-interactively from @code{expect}. (There are three ways of running
-@code{expect} as an interactive interpreter. You can run @code{expect}
-with no arguments, and control it completely interactively; or you can
-use @samp{expect -i} together with other command-line options and
-arguments; or you can run the command @code{interpreter} from any
-@code{expect} procedure. Use @code{return} to get back to the calling
-procedure (if any), or @code{return -tcl} to make the calling procedure
-itself return to its caller; use @code{exit} or end-of-file to leave
-@code{expect} altogether.) Run the program whose name is recorded in
-@samp{$connectmode}, with the arguments in @samp{$targetname}, to
-establish a connection. You should at least be able to get a prompt
-from any target that is physically connected.
-
-@node Porting
-@section Porting to a new host
-@cindex porting to a new host
-
-The task of porting DejaGnu is basically that of porting Tcl and
-@code{expect}. Tcl and @code{expect}, as distributed with DejaGnu, both
-use @code{autoconf}; they should port automatically to most Unix
-systems.
-
-Once Tcl and @code{expect} are ported, DejaGnu should run. Most system
-dependencies are taken care of by using @code{expect} as the main
-command shell.
-
-@node Installation
-@appendix Installing DejaGnu
-
-@cindex host, explained
-@cindex target, explained
-@cindex DejaGnu configuration
-@cindex configuring DejaGnu
-Once you have the DejaGnu source unpacked and available, you must first
-configure the software to specify where it is to run (and the associated
-defaults); then you can proceed to installing it.
-
-@menu
-* Configuring DejaGnu::
-* Installing DejaGnu::
-@end menu
-
-@node Configuring DejaGnu
-@section Configuring the DejaGnu test driver
-
-It is usually best to configure in a directory separate
-from the source tree, specifying where to find the source with the
-optional @samp{--srcdir} option to @code{configure}. DejaGnu uses the
-GNU @code{autoconf} to configure itself. For more info on using
-autoconf, read the GNU autoconf manual. To configure, execute the
-@file{configure} program, no other options are required. For an example,
-to configure in a seperate tree for objects, execute the configure
-script from the source tree like this:
-
-@smallexample
-../dejagnu-1.3/configure
-@end smallexample
-
-DejaGnu doesn't care at config time if it's for testing a native system
-or a cross system. That is determined at runtime by using the config
-files.
-
-@cindex @code{prefix}, configure options
-@cindex @code{exec_prefix}, configure options.
-You may also want to use the @code{configure} option @samp{--prefix} to
-specify where you want DejaGnu and its supporting code installed. By
-default, installation is in subdirectories of @file{/usr/local}, but you
-can select any alternate directory @var{altdir} by including
-@samp{--prefix=@var{altdir}} on the @code{configure} command line.
-(This value is captured in the Makefile variables @code{prefix}
-and @code{exec_prefix}.)
-
-@cindex auxiliary programs
-@cindex test suite distributions
-@cindex @code{make} builds part of tests
-Save for a small number of example tests, the DejaGnu distribution
-itself does not include any test suites; these are available separately.
-Test suites for the @sc{gnu} compiler (testing both GCC and G++) and for
-the @sc{gnu} binary utilities are distributed in parallel with the
-DejaGnu distribution (but packaged as separate files). The test suite
-for the @sc{gnu} debugger is distributed in parallel with each release
-of GDB itself, starting with GDB 4.9. After configuring the top-level
-DejaGnu directory, unpack and configure the test directories for the
-tools you want to test; then, in each test directory, run @code{make} to
-build auxiliary programs required by some of the tests.
-
-@node Installing DejaGnu
-@section Installing DejaGnu
-
-@cindex installing DejaGnu
-To install DejaGnu in your filesystem (either in @file{/usr/local}, or
-as specified by your @samp{--prefix} option to @code{configure}), execute
-
-@example
-eg$ make install
-@end example
-
-@noindent
-@samp{make install} does these things for DejaGnu:
-
-@enumerate
-@item
-Look in the path specified for executables (@file{$exec_prefix}) for
-directories called @file{lib} and @file{bin}. If these directories do
-not exist, @samp{make install} creates them.
-
-@item
-Create another directory in the @file{lib} directory, called
-@file{dejagnu}.
-
-@item
-Copy the @code{runtest} shell script into @file{$exec_prefix/bin}.
-
-@item
-Copy all the library files (used to support the framework) into
-@file{$exec_prefix/lib/dejagnu}.
-
-@item
-Copy @file{runtest.exp} into @file{$exec_prefix/lib/dejagnu}. This is
-the main Tcl code implementing DejaGnu.
-
-@end enumerate
-
-Each test suite collection comes with simple installation instructions
-in a @file{README} file; in general, the test suites are designed to be
-unpacked in the source directory for the corresponding tool, and extract
-into a directory called @file{testsuite}.
-
-@node Index
-@unnumbered Index
-
-@printindex cp
-
-@contents
-
-@bye
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!--Converted with LaTeX2HTML 98.1p1 release (March 2nd, 1998)
-originally by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds
-* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
- Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>Release NoticeBlueGnu Testing Framework
-Version 2.0.3</TITLE>
-<META NAME="description" CONTENT="Release NoticeBlueGnu Testing Framework
-Version 2.0.3">
-<META NAME="keywords" CONTENT="READMEdvi">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<LINK REL="STYLESHEET" HREF="READMEdvi.css">
-</HEAD>
-<BODY >
-
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
- SRC="/tools/latex2html-98.1p1/icons.gif/next_motif_gr.gif">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
- SRC="/tools/latex2html-98.1p1/icons.gif/up_motif_gr.gif">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
- SRC="/tools/latex2html-98.1p1/icons.gif/previous_motif_gr.gif"> <BR>
-<BR> <P>
-
-<!--End of Navigation Panel-->
-
-<P>
-
-<P>
-<H1 ALIGN="CENTER">Release Notice
-<BR>
-BlueGnu Testing Framework
-<BR>
-Version 2.0.3</H1>
-<P ALIGN="CENTER"><STRONG>Jan-Willem Neurdenburg
-<BR>
-jotOmega dsc
-<BR>
-56 Brigham Hill Road
-<BR>
-Grafton MA 01519-1135
-<BR>
-neurdenburgj@acm.org
-<BR>
-Tel: (508) 839-0276
-<BR>
-Fax: (508) 839-7267</STRONG></P>
-<P ALIGN="LEFT"></P>
-
-<P>
-
-<H1><A NAME="SECTION00010000000000000000">
-Introduction</A>
-</H1>
-BlueGnu is a framework for testing other programs. It has been created
-to be compatible with DejaGnu. Its purpose is to provide a single
-front end for all tests. Beyond this, BlueGnu offers several
-advantages for testing:
-
-<P>
-<UL>
-<P>
-<LI>The flexibility and consistency of the BlueGnu framework makes it
-easy to write tests for any program, with the exception of GUI
-applications.
-
-<P>
-<LI>BlueGnu provides a layer of abstraction, which makes all tests
-(if correctly written) portable to any host or target where a program
-must be tested.
-
-<P>
-<LI>BlueGnu is written in [incr Tcl], which in turn is based on Tcl
-(Tool Command Language). The framework comprises two parts:
-<DL COMPACT>
-<DT>1.
-<DD>the testing framework,
-<DT>2.
-<DD>the test-suites or test-sets themselves.
-</DL>
-<P>
-<LI>BlueGnu will work with any Tcl based interpreter as long as
-[incr Tcl] has been included. You can include 'expect', 'Tk', and/or
-other extensions.
-
-<P>
-<LI>Includes DejaGnu release 1.6
-
-<P>
-</UL>
-<P>
-
-<H1><A NAME="SECTION00020000000000000000">
-Requirements</A>
-</H1>
-The following modules should have been installed, before you can
-install and/or use BlueGnu:
-
-<P>
-<UL>
-<LI>Tcl release 8.0 or higher,
-<LI>incr Tcl release 3.0 or higher.
-</UL>
-<P>
-Any other extensions that is compatible with Tcl release 8.0 can be used
-as well.
-
-<P>
-
-<H1><A NAME="SECTION00030000000000000000">
-Structure and Contents of the Release</A>
-</H1>
-
-<P>
-The root directory of the release contains the README files with
-installation instructions and the files needed to build and install
-this product. It also contains the executable scripts of the
-BlueGnu testing framework.
-
-<P>
-The top-level directories are listed below:
-
-<P>
-<DL>
-<DT><STRONG>lib:</STRONG>
-<DD>the packages and procedures that make the BlueGnu and
-DejaGnu testing framework. This also includes the default target
-definition files.
-<P>
-<DT><STRONG>testsets:</STRONG>
-<DD>the BlueGnu test-suites and test examples. It contains
-the following subdirectories.
-
-<P>
-<DL>
-<DT><STRONG>BlueGnu:</STRONG>
-<DD>test scripts to test the testing framework itself.
-<P>
-<DT><STRONG>examples:</STRONG>
-<DD>test suite and test script examples.
-
-<P>
-<DT><STRONG>config, lib, tools:</STRONG>
-<DD>currently empty, but can be used for
-test-set dependent configuration files, library files, and tools.
-</DL>
-<P>
-<DT><STRONG>config:</STRONG>
-<DD>currently empty.
-
-<P>
-<DT><STRONG>doc:</STRONG>
-<DD>the DejaGnu texinfo source and the documentation in
-'info', 'dvi', 'ps', and 'pdf' representation, respectively
-dejagnu.info*, dejagnu.dvi, dejagnu.ps, and dejagnu.pdf. A DejaGnu man
-page is also available.
-
-<P>
-It also contains
-the T<SMALL>E</SMALL>X version (README.tex) of this document as well as the 'dvi', 'ps'
-'html', and 'pdf' representation, respectively notice.dvi, notice.ps,
-notice.html, and notice.pdf.
-
-<P>
-<DT><STRONG>testsuite:</STRONG>
-<DD>contains a mixture of DejaGnu and BlueGnu test
-scripts.
-
-<P>
-<DT><STRONG>contrib:</STRONG>
-<DD>contains examples how DejaGnu is used at Cygnus.
-
-<P>
-<DT><STRONG>example:</STRONG>
-<DD>contains a full DejaGnu test framework example for testing the program 'calc' which is also included.
-
-<P>
-</DL>
-<P>
-
-<H1><A NAME="SECTION00040000000000000000">
-Installation and use under Unix</A>
-</H1>
-
-<P>
-Before you can install and use BlueGnu you need to have installed the
-following three packages:
-<UL>
-<LI>Tcl version 8.0.3
-<LI>Tk version 8.0.3
-<LI>incr Tcl version 3.0.1
-</UL>The source for these packages should all be located in one directory.
-The subdirectory in the directory should be:
-<UL>
-<LI>tcl8.0.3
-<LI>tk8.0.3
-<LI>itcl3.0.1
-</UL>
-<P>
-The following examples use the command `./configure
--prefix=/tools/...`. This will install all packages in a directory
-``/tools''. When you omit the ``-prefix''-switch then the
-installation default will be the directory ``/usr/local''.
-
-<P>
-
-<H2><A NAME="SECTION00041000000000000000">
-Installation of needed Packages</A>
-</H2>
-
-<P>
-When you have not installed Tcl and the other needed extensions, then
-you need to retrieve the sources from ``www.tcltk.com/itcl''. You need
-to `gunzip` the files and do a `tar xf` of all these packages in one
-directory, let's call this directory ``TclTk''.
-
-<P>
-From the directory ``TclTk'', you should do the following to install
-the packages:
-
-<P>
-<PRE>
-% cd tcl8.0.3/unix
-% ./configure --prefix=/tools/tcl8.0.3 --enable-gcc --enable-shared
-% make
-% mkdir /tools/tcl8.0.3
-% make install
-% cd ../../tk8.0.3/unix
-% ./configure --prefix=/tools/tk8.0.3 --enable-gcc --enable-shared
-% make
-% mkdir /tools/tk8.0.3
-% make install
-% cd ../../itcl3.0.1
-% ./configure --prefix=/tools/itcl3.0.1 --enable-gcc --enable-shared
-% make
-% mkdir /tools/itcl3.0.1
-% make install
-</PRE>
-<P>
-
-<H2><A NAME="SECTION00042000000000000000">
-Installing BlueGnu</A>
-</H2>
-You can now `gunzip` and `tar xf` the BlueGnu version 2.0.3 in the
-directory ``TckTk''. This will create the directory
-``bluegnu2.0.3''. Now do the following:
-
-<P>
-<PRE>
-% cd bluegnu2.0.3
-% ./configure --prefix=/tools/bluegnu2.0.3
-% make
-% mkdir /tools/bluegnu2.0.3
-% make install
-</PRE>
-<P>
-This will install BlueGnu in the directories:
-<UL>
-<LI>/tools/bluegnu2.0.3/bin
-<LI>/tools/bluegnu2.0.3/lib/bluegnu
-<LI>/tools/bluegnu2.0.3/info
-<LI>/tools/bluegnu2.0.3/man
-</UL>
-<P>
-
-<H2><A NAME="SECTION00043000000000000000">
-Using BlueGnu</A>
-</H2>
-When you have installed [incr Tcl] and BlueGnu and you have the
-respective ``bin'' directories in your PATH variable, then you can
-start running some tests. You can go into the BlueGnu source directory
-``bluegnu2.0.3/testsets/examples'' and run the following:
-
-<P>
-<PRE>
-% bluegnu versionTcl.itcl
-% bluegnu ts_001
-% bluegnu ts_002
-% bluegnu ts_003
-</PRE>
-<P>
-The above test result should all be PASS. The following test will give
-a result UNKNOWN, because no pass/fail instruction have been given.
-
-<P>
-<PRE>
-% bluegnu tc001
-</PRE>
-<P>
-The last test you can run will fail in its simple form:
-
-<P>
-<PRE>
-% bluegnu tc002
-</PRE>
-<P>
-But will pass if you execute the test as follows:
-
-<P>
-<PRE>
-% bluegnu tc002[English]
-</PRE>
-<P>
-This is because the test scripts need a test case identifier to find
-the correct benchmark code.
-
-<P>
-
-<H1><A NAME="SECTION00050000000000000000">
-Changes</A>
-</H1>
-
-<H2><A NAME="SECTION00051000000000000000">
-Version 2.0.3</A>
-</H2>
-This being the first public release it is not to useful to list all
-the changes. BlueGnu has been modeled after DejaGnu and is a complete
-new implementation which has been tested thoroughly. When
-documentation is being written more changes will be made. An example
-of some of these changes as a result of this documentation effort can
-be found in the test-suites ts<code>_</code>001, ts<code>_</code>002, and
-ts<code>_</code>003. The first two are not as easy to write as the
-third. The test suite ts<code>_</code>001 is a script implementation of the
-command line:
-<PRE>
-% cd bluegnu2.0.3/testsets
-% bluegnu examples/tc002[English=B] \
-> "examples/tc002[Dutch=B]={MSG=Hallo Wereld}"
-</PRE>This may be useful for simple tests but when you want to write more
-complex test-suite scripts you would like some more flexibility, so two
-procedures were introduced, which are shown in test-suite ts<code>_</code>002. This
-makes writing rather complex so the procedures have become part of
-the procedures 'appendQueue', 'prependQueue', and 'runtest'. The
-resulting script is shown in test-suit ts<code>_</code>003.
-
-<P>
-Changes like this will be made in the future!
-
-<P>
-
-<H1><A NAME="SECTION00060000000000000000">
-Future Enhancements</A>
-</H1>
-The following enhancements are being planned:
-<UL>
-<LI>Target code will be made into a class with methods 'start',
-'load', 'exit', and 'version'. Instead of the current
-'<target><code>_</code>start', '<target><code>_</code>load', '<target><code>_</code>exit', and
-'<target><code>_</code>version', which have been taken from DejaGnu.
-
-<P>
-<LI>Procedures will be created that make it easy to test WEB
-application from the framework.
-
-<P>
-<LI>Other enhancements will be made depending on the use of the
-framework in testing different applications.
-</UL>
-<H1><A NAME="SECTION00070000000000000000">
- About this document ... </A>
-</H1>
- <STRONG>Release Notice
-<BR>
-BlueGnu Testing Framework
-<BR>
-Version 2.0.3</STRONG><P>
-This document was generated using the
-<A HREF="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 98.1p1 release (March 2nd, 1998)
-<P>
-Copyright © 1993, 1994, 1995, 1996, 1997,
-<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
-Computer Based Learning Unit, University of Leeds.
-<P>
-The command line arguments were: <BR>
- <STRONG>latex2html</STRONG> <tt>-t BlueGnu Release Notice -split 0 READMEdvi.tex</tt>.
-<P>
-The translation was initiated by Jan-Willem Neurdenburg on 1999-09-19<HR>
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
- SRC="/tools/latex2html-98.1p1/icons.gif/next_motif_gr.gif">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
- SRC="/tools/latex2html-98.1p1/icons.gif/up_motif_gr.gif">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
- SRC="/tools/latex2html-98.1p1/icons.gif/previous_motif_gr.gif"> <BR>
-
-<!--End of Navigation Panel-->
-<ADDRESS>
-<I>Jan-Willem Neurdenburg <BR>
-1999-09-19</I>
-</ADDRESS>
-</BODY>
-</HTML>
+++ /dev/null
-%PDF-1.2
-8 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.19
-/Ascent 694.44
-/Descent -194.51
-/Flags 4
-/FontBBox [-232 -250 945 963]
-/FontName /CMR17
-/ItalicAngle 0
-/XHeight 430
-/StemV 80
-/FontFile 7 0 R
->>
-endobj
-9 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F1
-/FontDescriptor 8 0 R
-/BaseFont /BHYBSB+CMR17
-/FirstChar 0
-/LastChar 127
-/Widths [575.97 772.08 719.84 641.07 615.35 693.31 667.59 719.84 667.59 719.84 667.59
-525.41 499.29 499.29 748.93 748.93 249.64 275.77 458.62 458.62 458.62 458.62 458.62
-693.31 406.37 458.62 667.59 719.84 458.62 837.18 941.67 719.84 249.64 249.64 458.62
-772.08 458.62 772.08 719.84 249.64 354.13 354.13 458.62 719.84 249.64 301.89 249.64
-458.62 458.62 458.62 458.62 458.62 458.62 458.62 458.62 458.62 458.62 458.62 249.64
-249.64 249.64 719.84 432.5 432.5 719.84 693.31 654.33 667.59 706.58 628.21 602.09
-726.27 693.31 327.61 471.48 719.44 575.97 850.05 693.31 719.84 628.21 719.84 680.45
-510.86 667.59 693.31 693.31 954.53 693.31 693.31 563.11 249.64 458.62 249.64 458.62
-249.64 249.64 458.62 510.86 406.37 510.86 406.37 275.77 458.62 510.86 249.64 275.77
-484.74 249.64 772.08 510.86 458.62 510.86 484.74 354.13 359.36 354.13 510.86 484.74
-667.59 484.74 484.74 406.37 458.62 917.24 458.62 458.62 458.62]
->>
-endobj
-11 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -194.44
-/Flags 4
-/FontBBox [-246 -251 988 968]
-/FontName /CMR12
-/ItalicAngle 0
-/XHeight 431
-/StemV 80
-/FontFile 10 0 R
->>
-endobj
-12 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F2
-/FontDescriptor 11 0 R
-/BaseFont /JUQUTE+CMR12
-/FirstChar 0
-/LastChar 127
-/Widths [611.8 815.96 761.57 679.62 652.77 734.02 707.17 761.57 707.17 761.57 707.17
-571.17 543.98 543.98 815.96 815.96 271.99 299.19 489.58 489.58 489.58 489.58 489.58
-734.02 435.18 489.58 707.17 761.57 489.58 883.79 992.58 761.57 271.99 271.99 489.58
-815.96 489.58 815.96 761.57 271.99 380.78 380.78 489.58 761.57 271.99 326.39 271.99
-489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 271.99
-271.99 271.99 761.57 462.38 462.38 761.57 734.02 693.4 707.17 747.79 666.2 639 768.28
-734.02 353.24 503.01 761.22 611.8 897.21 734.02 761.57 666.2 761.57 720.6 543.98
-707.17 734.02 734.02 1006.01 734.02 734.02 598.37 271.99 489.58 271.99 489.58 271.99
-271.99 489.58 543.98 435.18 543.98 435.18 299.19 489.58 543.98 271.99 299.19 516.78
-271.99 815.96 543.98 489.58 543.98 516.78 380.78 386.22 380.78 543.98 516.78 707.17
-516.78 516.78 435.18 489.58 979.16 489.58 489.58 489.58]
->>
-endobj
-14 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 686.11
-/Ascent 694.44
-/Descent -194.44
-/Flags 4
-/FontBBox [-296 -251 1139 946]
-/FontName /CMBX12
-/ItalicAngle 0
-/XHeight 444
-/StemV 80
-/FontFile 13 0 R
->>
-endobj
-15 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F3
-/FontDescriptor 14 0 R
-/BaseFont /PRPCHF+CMBX12
-/FirstChar 0
-/LastChar 127
-/Widths [675.93 937.5 875 787.04 750 879.63 812.5 875 812.5 875 812.5 656.25 625
-625 937.5 937.5 312.5 343.75 562.5 562.5 562.5 562.5 562.5 849.54 500 574.07 812.5
-875 562.5 1018.52 1143.52 875 312.5 342.59 581.02 937.5 562.5 937.5 875 312.5 437.5
-437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5
-562.5 562.5 312.5 312.5 342.59 875 531.25 531.25 875 849.54 799.77 812.5 862.27 738.43
-707.18 884.26 879.63 418.98 581.02 880.79 675.93 1067.13 879.63 844.91 768.52 844.91
-839.12 625 782.41 864.58 849.54 1162.04 849.54 849.54 687.5 312.5 581.02 312.5 562.5
-312.5 312.5 546.88 625 500 625 513.31 343.75 562.5 625 312.5 343.75 593.75 312.5
-937.5 625 562.5 625 593.75 459.49 443.75 437.5 625 593.75 812.5 593.75 593.75 500
-562.5 1125 562.5 562.5 562.5]
->>
-endobj
-17 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -960
-/Flags 68
-/FontBBox [-29 -960 1116 775]
-/FontName /CMSY10
-/ItalicAngle -14
-/XHeight 431
-/StemV 80
-/FontFile 16 0 R
->>
-endobj
-18 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F4
-/FontDescriptor 17 0 R
-/BaseFont /MYFBJI+CMSY10
-/FirstChar 0
-/LastChar 127
-/Widths [777.78 277.78 777.78 500 777.78 500 777.78 777.78 777.78 777.78 777.78 777.78
-777.78 1000 500 500 777.78 777.78 777.78 777.78 777.78 777.78 777.78 777.78 777.78
-777.78 777.78 777.78 1000 1000 777.78 777.78 1000 1000 500 500 1000 1000 1000 777.78
-1000 1000 611.11 611.11 1000 1000 1000 777.78 275 1000 666.67 666.67 888.89 888.89
-0 0 555.56 555.56 666.67 500 722.22 722.22 777.78 777.78 611.11 798.47 656.81 526.53
-771.39 527.78 718.75 594.87 844.52 544.52 677.78 761.95 689.72 1200.9 820.49 796.11
-695.56 816.67 847.5 605.56 544.64 625.83 612.78 987.78 713.3 668.34 724.73 666.67
-666.67 666.67 666.67 666.67 611.11 611.11 444.45 444.45 444.45 444.45 500 500 388.89
-388.89 277.78 500 500 611.11 500 277.78 833.34 750 833.34 416.67 666.67 666.67 777.78
-777.78 444.45 444.45 444.45 611.11 777.78 777.78 777.78 777.78]
->>
-endobj
-20 0 obj
-<<
-/Length 2396
->>
-stream
-0 w 0 g 0 G BT/F1 20.66 Tf 172.82 -114.07 TD[(Release)-301(Notice)]TJ -58.8 -24.91 TD[(BlueGn)26(u)-301(T)77(esting)-301(F)78(ramew)26(ork)]TJ 66.1 -24.91 TD[(V)78(ersion)-301(2.0.3)]TJ/F2 14.35 Tf -24.54 -35.49 TD[(Jan-Willem)-326(Neurden)26(burg)]TJ 35.56 -17.93 TD[(jotOmega)-326(dsc)]TJ -25.71 -17.93 TD[(56)-326(Brigham)-326(Hill)-327(Road)]TJ -9.02 -17.94 TD[(Grafton)-326(MA)-653(01519-1135)]TJ 6.28 -17.93 TD[(neurden)27(burg)-26(j@acm.org)]TJ 10.54 -17.93 TD[(T)81(el:)-434(\(508\))-326(839-0276)]TJ -1.66 -17.93 TD[(F)81(ax:)-434(\(508\))-326(839-7267)]TJ 1.47 -28.05 TD[(Septem)27(b)-26(er)-327(19,)-326(1999)]TJ/F3 17.22 Tf -134.19 -52.4 TD[(1)-1124(In)30(tro)-30(duction)]TJ/F2 11.96 Tf 0 -26.28 TD[(BlueGn)27(u)-356(is)-356(a)-356(framew)26(ork)-355(for)-356(testing)-357(other)-356(programs.)-525(It)-356(has)-356(b)-27(een)-357(created)-356(to)]TJ 0 -14.45 TD[(b)-27(e)-300(compatible)-301(with)-301(DejaGn)26(u.)-425(Its)-301(purp)-27(ose)-301(is)-301(to)-301(pro)27(vide)-300(a)-301(single)-301(fron)26(t)-299(end)-301(for)]TJ 0 -14.44 TD[(all)-326(tests.)-435(Bey)26(ond)-325(this,)-327(BlueGn)27(u)-326(o\013ers)-326(sev)26(eral)-325(adv)53(an)27(tages)-325(for)-327(testing:)]TJ/F4 11.96 Tf 17.44 -26.97 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(The)-245(\015exibilit)26(y)-245(and)-246(consistency)-245(of)-246(the)-246(BlueGn)26(u)-245(framew)27(ork)-245(mak)26(es)-245(it)-246(easy)]TJ 0 -14.45 TD[(to)-283(write)-284(tests)-284(for)-284(an)27(y)-283(program,)-293(with)-283(the)-284(exception)-284(of)-284(GUI)-283(applications.)]TJ/F4 11.96 Tf -11.83 -24.3 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(BlueGn)27(u)-333(pro)26(vides)-333(a)-334(la)26(y)27(er)-333(of)-334(abstraction,)-336(whic)26(h)-333(mak)26(es)-333(all)-334(tests)-334(\(if)-334(cor-)]TJ 0 -14.45 TD[(rectly)-389(written\))-389(p)-28(ortable)-389(to)-390(an)27(y)-389(host)-389(or)-390(target)-389(where)-390(a)-389(program)-389(m)26(ust)]TJ 0 -14.44 TD[(b)-27(e)-326(tested.)]TJ/F4 11.96 Tf -11.83 -24.3 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(BlueGn)27(u)-376(is)-377(written)-377(in)-377([incr)-376(Tcl],)-390(whic)26(h)-375(in)-377(turn)-377(is)-377(based)-377(on)-376(Tcl)-377(\(T)80(o)-26(ol)]TJ 0 -14.45 TD[(Command)-326(Language\).)-435(The)-326(framew)26(ork)-326(comprises)-326(t)26(w)27(o)-325(parts:)]TJ 10.79 -24.3 TD[(1.)-489(the)-326(testing)-327(framew)26(ork,)]TJ 151.29 -29.89 TD[(1)]TJ ET 0 g 0 G
-endstream
-endobj
-22 0 obj
-<<
-/F1 9 0 R
-/F2 12 0 R
-/F3 15 0 R
-/F4 18 0 R
->>
-endobj
-6 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 22 0 R
->>
-endobj
-25 0 obj
-<<
-/Length 3301
->>
-stream
-0 w 0 g 0 G BT/F2 11.96 Tf 78.91 -65.75 TD[(2.)-489(the)-326(test-suites)-327(or)-326(test-sets)-327(themselv)27(es.)]TJ/F4 11.96 Tf -22.62 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(BlueGn)27(u)-313(will)-314(w)26(ork)-313(with)-314(an)26(y)-313(Tcl)-314(based)-314(in)26(terpreter)-313(as)-314(long)-314(as)-314([incr)-315(Tcl])]TJ 0 -14.45 TD[(has)-301(b)-27(een)-301(included.)-427(Y)81(ou)-300(can)-302(include)-301('exp)-27(ect',)-306('Tk',)-306(and/or)-302(other)-301(exten-)]TJ 0 -14.44 TD[(sions.)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Includes)-326(DejaGn)26(u)-325(release)-326(1.6)]TJ/F3 17.22 Tf -29.27 -39.94 TD[(2)-1124(Requiremen)30(ts)]TJ/F2 11.96 Tf 0 -26.28 TD[(The)-467(follo)26(wing)-466(mo)-27(dules)-467(should)-468(ha)26(v)28(e)-467(b)-27(een)-467(installed,)-503(b)-27(efore)-467(y)26(ou)-466(can)-468(install)]TJ 0 -14.45 TD[(and/or)-326(use)-326(BlueGn)26(u:)]TJ/F4 11.96 Tf 17.44 -27.39 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Tcl)-326(release)-326(8.0)-327(or)-326(higher,)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(incr)-326(Tcl)-326(release)-327(3.0)-326(or)-326(higher.)]TJ -11.71 -27.4 TD[(An)27(y)-310(other)-310(extensions)-310(that)-311(is)-310(compatible)-310(with)-311(Tcl)-310(release)-310(8.0)-311(can)-310(b)-27(e)-311(used)]TJ -17.56 -14.45 TD[(as)-326(w)26(ell.)]TJ/F3 17.22 Tf 0 -39.93 TD[(3)-1124(Structure)-375(and)-375(Con)30(ten)31(ts)-374(of)-375(the)-375(Release)]TJ/F2 11.96 Tf 0 -26.28 TD[(The)-235(ro)-27(ot)-235(directory)-236(of)-235(the)-235(release)-235(con)26(tains)-235(the)-235(README)-235(\014les)-235(with)-236(installation)]TJ 0 -14.45 TD[(instructions)-407(and)-407(the)-408(\014les)-407(needed)-408(to)-407(build)-408(and)-407(install)-407(this)-408(pro)-27(duct.)-678(It)-408(also)]TJ 0 -14.45 TD[(con)27(tains)-326(the)-326(executable)-326(scripts)-327(of)-326(the)-327(BlueGn)27(u)-326(testing)-326(framew)26(ork.)]TJ 17.56 -14.44 TD[(The)-326(top-lev)26(el)-325(directories)-326(are)-327(listed)-326(b)-27(elo)26(w:)]TJ/F3 11.96 Tf -17.56 -27.4 TD[(lib:)]TJ/F2 11.96 Tf 24.54 0 TD[(the)-275(pac)26(k)54(ages)-274(and)-276(pro)-27(cedures)-276(that)-276(mak)26(e)-274(the)-276(BlueGn)26(u)-275(and)-275(DejaGn)26(u)-275(test-)]TJ 4.73 -14.44 TD[(ing)-326(framew)26(ork.)-434(This)-326(also)-327(includes)-326(the)-326(default)-327(target)-326(de\014nition)-327(\014les.)]TJ/F3 11.96 Tf -29.27 -24.41 TD[(testsets:)]TJ/F2 11.96 Tf 53.47 0 TD[(the)-298(BlueGn)26(u)-298(test-suites)-299(and)-298(test)-299(examples.)-426(It)-299(con)26(tains)-298(the)-298(follo)26(w-)]TJ -24.2 -14.45 TD[(ing)-326(sub)-27(directories.)]TJ/F3 11.96 Tf 0 -27.4 TD[(BlueGn)31(u:)]TJ/F2 11.96 Tf 61.64 0 TD[(test)-326(scripts)-326(to)-327(test)-326(the)-326(testing)-327(framew)26(ork)-325(itself.)]TJ/F3 11.96 Tf -61.64 -19.42 TD[(examples:)]TJ/F2 11.96 Tf 63.22 0 TD[(test)-326(suite)-326(and)-327(test)-326(script)-326(examples.)]TJ/F3 11.96 Tf -63.22 -19.43 TD[(con\014g,)-375(lib,)-375(to)-31(ols:)]TJ/F2 11.96 Tf 103.44 0 TD[(curren)27(tly)-402(empt)26(y)82(,)-421(but)-403(can)-403(b)-27(e)-403(used)-403(for)-403(test-set)-403(de-)]TJ -77.69 -14.45 TD[(p)-27(enden)26(t)-325(con\014guration)-326(\014les,)-327(library)-326(\014les,)-326(and)-327(to)-27(ols.)]TJ 136.33 -41.41 TD[(2)]TJ ET 0 g 0 G
-endstream
-endobj
-26 0 obj
-<<
-/F2 12 0 R
-/F4 18 0 R
-/F3 15 0 R
->>
-endobj
-24 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 26 0 R
->>
-endobj
-29 0 obj
-<<
-/Length 3404
->>
-stream
-0 w 0 g 0 G BT/F3 11.96 Tf 38.85 -65.75 TD[(con\014g:)]TJ/F2 11.96 Tf 43.96 0 TD[(curren)27(tly)-326(empt)27(y)81(.)]TJ/F3 11.96 Tf -43.96 -24.41 TD[(do)-31(c:)]TJ/F2 11.96 Tf 30.14 0 TD[(the)-275(DejaGn)26(u)-275(texinfo)-275(source)-276(and)-275(the)-276(do)-27(cumen)26(tation)-275(in)-275('info',)-286('dvi',)-286('ps',)]TJ -0.87 -14.45 TD[(and)-426('p)-28(df)-69(')-427(represen)26(tation,)-451(resp)-27(ectiv)26(ely)-426(dejagn)26(u.info*,)-451(dejagn)26(u.dvi,)-451(de-)]TJ 0 -14.44 TD[(jagn)27(u.ps,)-326(and)-326(dejagn)26(u.p)-26(df.)-435(A)-327(DejaGn)27(u)-326(man)-326(page)-327(is)-326(also)-326(a)26(v)54(ailable.)]TJ 0 -19.43 TD[(It)-375(also)-375(con)26(tains)-374(the)-376(T)]TJ 111.07 -2.57 TD[(E)]TJ 6.5 2.57 TD[(X)-375(v)26(ersion)-374(\(README.tex\))-375(of)-376(this)-375(do)-27(cumen)26(t)-374(as)]TJ -117.57 -14.45 TD[(w)27(ell)-340(as)-340(the)-341('dvi',)-343('ps')-341('h)26(tml',)-343(and)-340('p)-27(df)-70(')-340(represen)26(tation,)-343(resp)-27(ectiv)26(ely)-339(no-)]TJ 0 -14.44 TD[(tice.dvi,)-326(notice.ps,)-326(notice.h)26(tml,)-325(and)-327(notice.p)-27(df.)]TJ/F3 11.96 Tf -29.27 -24.41 TD[(testsuite:)]TJ/F2 11.96 Tf 59.38 0 TD[(con)27(tains)-326(a)-326(mixture)-326(of)-327(DejaGn)26(u)-325(and)-326(BlueGn)26(u)-326(test)-326(scripts.)]TJ/F3 11.96 Tf -59.38 -24.41 TD[(con)31(trib:)]TJ/F2 11.96 Tf 51.33 0 TD[(con)27(tains)-326(examples)-326(ho)26(w)-325(DejaGn)26(u)-325(is)-327(used)-326(at)-327(Cygn)27(us.)]TJ/F3 11.96 Tf -51.33 -24.41 TD[(example:)]TJ/F2 11.96 Tf 57.92 0 TD[(con)27(tains)-384(a)-386(full)-385(DejaGn)26(u)-384(test)-385(framew)26(ork)-384(example)-385(for)-385(testing)-386(the)]TJ -28.65 -14.44 TD[(program)-326('calc')-326(whic)26(h)-325(is)-327(also)-326(included.)]TJ/F3 17.22 Tf -29.27 -39.94 TD[(4)-1124(Installation)-375(and)-375(use)-375(under)-375(Unix)]TJ/F2 11.96 Tf 0 -26.28 TD[(Before)-370(y)26(ou)-369(can)-371(install)-370(and)-371(use)-370(BlueGn)26(u)-369(y)26(ou)-370(need)-370(to)-371(ha)27(v)27(e)-370(installed)-370(the)-371(fol-)]TJ 0 -14.45 TD[(lo)27(wing)-326(three)-326(pac)26(k)55(ages:)]TJ/F4 11.96 Tf 17.44 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Tcl)-326(v)26(ersion)-325(8.0.3)]TJ/F4 11.96 Tf -11.83 -24.4 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Tk)-326(v)26(ersion)-325(8.0.3)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(incr)-326(Tcl)-326(v)26(ersion)-325(3.0.1)]TJ -29.27 -24.41 TD[(The)-410(source)-410(for)-410(these)-410(pac)26(k)55(ages)-410(should)-410(all)-410(b)-27(e)-410(lo)-27(cated)-410(in)-411(one)-410(directory)81(.)-686(The)]TJ 0 -14.45 TD[(sub)-27(directory)-326(in)-326(the)-327(directory)-326(should)-327(b)-27(e:)]TJ/F4 11.96 Tf 17.44 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(tcl8.0.3)]TJ/F4 11.96 Tf -11.83 -24.4 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(tk8.0.3)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(itcl3.0.1)]TJ -11.71 -24.41 TD[(The)-261(follo)26(wing)-260(examples)-262(use)-261(the)-262(command)-261(`./con\014gure)-262({pre\014x=/to)-27(ols/...`.)]TJ -17.56 -14.45 TD[(This)-332(will)-332(install)-332(all)-332(pac)27(k)54(ages)-331(in)-332(a)-332(directory)-332(\\/to)-27(ols".)-453(When)-332(y)27(ou)-331(omit)-333(the)-332(\\{)]TJ 0 -14.44 TD[(pre\014x"-switc)27(h)-254(then)-255(the)-255(installation)-254(default)-255(will)-255(b)-27(e)-255(the)-255(directory)-255(\\/usr/lo)-27(cal".)]TJ 191.35 -55.83 TD[(3)]TJ ET 0 g 0 G
-endstream
-endobj
-30 0 obj
-<<
-/F3 15 0 R
-/F2 12 0 R
-/F4 18 0 R
->>
-endobj
-28 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 30 0 R
->>
-endobj
-34 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 611.11
-/Ascent 611.11
-/Descent -222.22
-/Flags 5
-/FontBBox [-1 -234 716 801]
-/FontName /CMTT12
-/ItalicAngle 0
-/XHeight 431
-/StemV 80
-/FontFile 33 0 R
->>
-endobj
-35 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F5
-/FontDescriptor 34 0 R
-/BaseFont /ATVUDO+CMTT12
-/FirstChar 0
-/LastChar 127
-/Widths [514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58
-514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58]
->>
-endobj
-36 0 obj
-<<
-/Length 2558
->>
-stream
-0 w 0 g 0 G BT/F3 14.35 Tf 38.85 -65.75 TD[(4.1)-1124(Installation)-375(of)-375(needed)-375(P)30(ac)31(k)63(ages)]TJ/F2 11.96 Tf 0 -22.17 TD[(When)-324(y)26(ou)-324(ha)26(v)27(e)-323(not)-325(installed)-325(Tcl)-325(and)-325(the)-324(other)-325(needed)-325(extensions,)-325(then)-325(y)26(ou)]TJ 0 -14.45 TD[(need)-252(to)-252(retriev)26(e)-251(the)-252(sources)-252(from)-252(\\www.tcltk.com/itcl".)-411(Y)81(ou)-251(need)-252(to)-252(`gunzip`)]TJ 0 -14.44 TD[(the)-310(\014les)-311(and)-311(do)-310(a)-311(`tar)-311(xf`)-311(of)-310(all)-311(these)-311(pac)26(k)55(ages)-310(in)-311(one)-310(directory)80(,)-313(let's)-310(call)-311(this)]TJ 0 -14.45 TD[(directory)-326(\\TclTk".)]TJ 17.56 -14.44 TD[(F)81(rom)-393(the)-394(directory)-394(\\TclTk",)-411(y)26(ou)-393(should)-394(do)-394(the)-395(follo)27(wing)-393(to)-395(install)-394(the)]TJ -17.56 -14.45 TD[(pac)27(k)54(ages:)]TJ/F5 11.96 Tf 0 -27.4 TD[(%)-514(cd)-515(tcl8.0.3/unix)]TJ 0 -14.44 TD[(%)-514(./configure)-515(--prefix=/tools/tcl8.0.3)-514(--enable-gcc)-515(--enable-shared)]TJ 0 -14.45 TD[(%)-514(make)]TJ 0 -14.44 TD[(%)-514(mkdir)-515(/tools/tcl8.0.3)]TJ 0 -14.45 TD[(%)-514(make)-515(install)]TJ 0 -14.45 TD[(%)-514(cd)-515(../../tk8.0.3/unix)]TJ 0 -14.44 TD[(%)-514(./configure)-515(--prefix=/tools/tk8.0.3)-514(--enable-gcc)-515(--enable-shared)]TJ 0 -14.45 TD[(%)-514(make)]TJ 0 -14.44 TD[(%)-514(mkdir)-515(/tools/tk8.0.3)]TJ 0 -14.45 TD[(%)-514(make)-515(install)]TJ 0 -14.44 TD[(%)-514(cd)-515(../../itcl3.0.1)]TJ 0 -14.45 TD[(%)-514(./configure)-515(--prefix=/tools/itcl3.0.1)-514(--enable-gcc)-515(--enable-shared)]TJ 0 -14.45 TD[(%)-514(make)]TJ 0 -14.44 TD[(%)-514(mkdir)-515(/tools/itcl3.0.1)]TJ 0 -14.45 TD[(%)-514(make)-515(install)]TJ/F3 14.35 Tf 0 -34.66 TD[(4.2)-1124(Installing)-375(BlueGn)30(u)]TJ/F2 11.96 Tf 0 -22.17 TD[(Y)81(ou)-411(can)-412(no)26(w)-411(`gunzip`)-412(and)-412(`tar)-412(xf`)-413(the)-412(BlueGn)27(u)-412(v)27(ersion)-412(2.0.3)-412(in)-412(the)-412(direc-)]TJ 0 -14.44 TD[(tory)-401(\\Tc)26(kTk".)-660(This)-401(will)-402(create)-402(the)-401(directory)-402(\\bluegn)26(u2.0.3".)-659(No)26(w)-401(do)-401(the)]TJ 0 -14.45 TD[(follo)27(wing:)]TJ/F5 11.96 Tf 0 -27.4 TD[(%)-514(cd)-515(bluegnu2.0.3)]TJ 0 -14.44 TD[(%)-514(./configure)-515(--prefix=/tools/bluegnu2.0.3)]TJ 0 -14.45 TD[(%)-514(make)]TJ 0 -14.44 TD[(%)-514(mkdir)-515(/tools/bluegnu2.0.3)]TJ 0 -14.45 TD[(%)-514(make)-515(install)]TJ/F2 11.96 Tf 17.56 -27.4 TD[(This)-326(will)-326(install)-327(BlueGn)27(u)-326(in)-326(the)-327(directories:)]TJ 173.79 -42.05 TD[(4)]TJ ET 0 g 0 G
-endstream
-endobj
-37 0 obj
-<<
-/F3 15 0 R
-/F2 12 0 R
-/F5 35 0 R
->>
-endobj
-32 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 37 0 R
->>
-endobj
-40 0 obj
-<<
-/Length 2393
->>
-stream
-0 w 0 g 0 G BT/F4 11.96 Tf 56.29 -65.75 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(/to)-27(ols/bluegn)26(u2.0.3/bin)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(/to)-27(ols/bluegn)26(u2.0.3/lib/bluegn)28(u)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(/to)-27(ols/bluegn)26(u2.0.3/info)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(/to)-27(ols/bluegn)26(u2.0.3/man)]TJ/F3 14.35 Tf -29.27 -34.66 TD[(4.3)-1124(Using)-375(BlueGn)30(u)]TJ/F2 11.96 Tf 0 -22.17 TD[(When)-384(y)26(ou)-384(ha)26(v)27(e)-383(installed)-385([incr)-385(Tcl])-385(and)-385(BlueGn)27(u)-384(and)-385(y)26(ou)-384(ha)27(v)27(e)-384(the)-385(resp)-27(ec-)]TJ 0 -14.44 TD[(tiv)27(e)-231(\\bin")-231(directories)-232(in)-231(y)26(our)-231(P)81(A)82(TH)-231(v)53(ariable,)-249(then)-232(y)27(ou)-231(can)-231(start)-232(running)-231(some)]TJ 0 -14.45 TD[(tests.)-398(Y)80(ou)-216(can)-218(go)-218(in)27(to)-217(the)-218(BlueGn)27(u)-217(source)-218(directory)-217(\\bluegn)26(u2.0.3/testsets/examples")]TJ 0 -14.44 TD[(and)-326(run)-326(the)-327(follo)27(wing:)]TJ/F5 11.96 Tf 0 -27.4 TD[(%)-514(bluegnu)-515(versionTcl.itcl)]TJ 0 -14.45 TD[(%)-514(bluegnu)-515(ts_001)]TJ 0 -14.44 TD[(%)-514(bluegnu)-515(ts_002)]TJ 0 -14.45 TD[(%)-514(bluegnu)-515(ts_003)]TJ/F2 11.96 Tf 17.56 -27.4 TD[(The)-356(ab)-28(o)27(v)27(e)-356(test)-357(result)-357(should)-357(all)-357(b)-27(e)-357(P)80(ASS.)-356(The)-357(follo)26(wing)-356(test)-357(will)-357(giv)27(e)-356(a)]TJ -17.56 -14.44 TD[(result)-326(UNKNO)26(WN,)-325(b)-27(ecause)-327(no)-326(pass/fail)-326(instruction)-327(ha)26(v)28(e)-326(b)-27(een)-326(giv)26(en.)]TJ/F5 11.96 Tf 0 -27.4 TD[(%)-514(bluegnu)-515(tc001)]TJ/F2 11.96 Tf 17.56 -27.4 TD[(The)-326(last)-326(test)-327(y)27(ou)-326(can)-326(run)-327(will)-326(fail)-326(in)-327(its)-326(simple)-327(form:)]TJ/F5 11.96 Tf -17.56 -27.39 TD[(%)-514(bluegnu)-515(tc002)]TJ/F2 11.96 Tf 17.56 -27.4 TD[(But)-326(will)-326(pass)-327(if)-326(y)26(ou)-325(execute)-327(the)-326(test)-326(as)-327(follo)26(ws:)]TJ/F5 11.96 Tf -17.56 -27.4 TD[(%)-514(bluegnu)-515(tc002[English])]TJ/F2 11.96 Tf 17.56 -27.4 TD[(This)-463(is)-463(b)-27(ecause)-463(the)-463(test)-463(scripts)-463(need)-463(a)-463(test)-463(case)-463(iden)26(ti\014er)-462(to)-463(\014nd)-463(the)]TJ -17.56 -14.44 TD[(correct)-326(b)-27(enc)26(hmark)-325(co)-27(de.)]TJ 191.35 -99.59 TD[(5)]TJ ET 0 g 0 G
-endstream
-endobj
-41 0 obj
-<<
-/F4 18 0 R
-/F2 12 0 R
-/F3 15 0 R
-/F5 35 0 R
->>
-endobj
-39 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 41 0 R
->>
-endobj
-45 0 obj
-<<
-/Type /FontDescriptor
-/CapHeight 683.33
-/Ascent 694.44
-/Descent -194.44
-/Flags 68
-/FontBBox [-30 -250 1026 750]
-/FontName /CMMI12
-/ItalicAngle -14
-/XHeight 431
-/StemV 80
-/FontFile 44 0 R
->>
-endobj
-46 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/Name /F6
-/FontDescriptor 45 0 R
-/BaseFont /AEVAHO+CMMI12
-/FirstChar 0
-/LastChar 127
-/Widths [606.65 815.96 748.3 679.62 728.67 811.28 765.79 571.17 652.77 598.03 757.63
-622.79 552.77 507.89 433.67 395.37 427.66 483.1 456.3 346.06 563.65 571.17 589.12
-483.79 427.66 555.44 505.03 556.53 425.23 527.77 579.51 613.42 636.57 609.72 458.21
-577.08 808.91 505.03 354.16 641.43 979.16 979.16 979.16 979.16 271.99 271.99 489.58
-489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 271.99
-271.99 761.57 489.58 761.57 489.58 516.89 734.02 743.86 700.54 812.98 724.82 633.85
-772.35 811.28 431.86 541.2 833.04 666.2 947.27 784.08 748.3 631.13 775.5 745.29 602.19
-573.89 665.01 570.83 924.41 812.64 568.11 670.19 380.78 380.78 380.78 979.16 979.16
-410.88 514 416.31 421.41 508.79 453.82 482.64 468.86 563.65 334.03 405.09 509.25
-291.66 856.47 584.48 470.71 491.43 434.14 441.26 461.22 353.58 557.29 473.37 699.93
-556.42 477.43 454.86 312.5 377.89 623.37 489.58 271.99]
->>
-endobj
-47 0 obj
-<<
-/Length 4786
->>
-stream
-0 w 0 g 0 G BT/F3 17.22 Tf 38.85 -65.75 TD[(5)-1124(Changes)]TJ/F3 14.35 Tf 0 -29.78 TD[(5.1)-1124(V)92(ersion)-374(2.0.3)]TJ/F2 11.96 Tf 0 -22.16 TD[(This)-370(b)-28(eing)-370(the)-371(\014rst)-371(public)-371(release)-371(it)-370(is)-371(not)-371(to)-371(useful)-371(to)-371(list)-370(all)-371(the)-371(c)26(hanges.)]TJ 0 -14.45 TD[(BlueGn)27(u)-462(has)-462(b)-27(een)-463(mo)-27(deled)-462(after)-463(DejaGn)26(u)-461(and)-463(is)-462(a)-462(complete)-463(new)-462(imple-)]TJ 0 -14.44 TD[(men)27(tation)-323(whic)26(h)-323(has)-325(b)-27(een)-324(tested)-324(thoroughly)80(.)-433(When)-324(do)-27(cumen)26(tation)-323(is)-324(b)-28(eing)]TJ 0 -14.45 TD[(written)-301(more)-302(c)26(hanges)-301(will)-302(b)-27(e)-302(made.)-427(An)-302(example)-302(of)-302(some)-302(of)-302(these)-302(c)26(hanges)-301(as)]TJ 0 -14.45 TD[(a)-350(result)-351(of)-351(this)-351(do)-27(cumen)26(tation)-350(e\013ort)-351(can)-350(b)-28(e)-350(found)-351(in)-351(the)-351(test-suites)-351(ts)]TJ/F5 11.96 Tf 361.58 0 TD[(_)]TJ/F2 11.96 Tf 6.16 0 TD[(001,)]TJ -367.74 -14.44 TD[(ts)]TJ/F5 11.96 Tf 9.17 0 TD[(_)]TJ/F2 11.96 Tf 6.16 0 TD[(002,)-331(and)-330(ts)]TJ/F5 11.96 Tf 56.75 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(003.)-447(The)-330(\014rst)-331(t)26(w)28(o)-330(are)-330(not)-331(as)-330(easy)-331(to)-330(write)-330(as)-331(the)-330(third.)-448(The)]TJ -78.23 -14.45 TD[(test)-326(suite)-326(ts)]TJ/F5 11.96 Tf 60.03 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(001)-326(is)-326(a)-327(script)-326(implemen)26(tation)-325(of)-327(the)-326(command)-326(line:)]TJ/F5 11.96 Tf -66.18 -24.41 TD[(%)-514(cd)-515(bluegnu2.0.3/testsets)]TJ 0 -14.44 TD[(%)-514(bluegnu)-515(examples/tc002[English=B])-514(\\)]TJ 0 -14.45 TD[(>)-514("examples/tc002[Dutch=B]={MSG=Hallo)-515(Wereld}")]TJ/F2 11.96 Tf 0 -24.41 TD[(This)-351(ma)26(y)-350(b)-27(e)-352(useful)-351(for)-352(simple)-351(tests)-352(but)-351(when)-352(y)27(ou)-351(w)26(an)27(t)-350(to)-351(write)-352(more)-351(com-)]TJ 0 -14.44 TD[(plex)-277(test-suite)-277(scripts)-277(y)26(ou)-276(w)26(ould)-277(lik)27(e)-277(some)-277(more)-277(\015exibilit)26(y)82(,)-287(so)-277(t)26(w)28(o)-277(pro)-27(cedures)]TJ 0 -14.45 TD[(w)27(ere)-374(in)26(tro)-26(duced,)-387(whic)26(h)-373(are)-375(sho)26(wn)-374(in)-375(test-suite)-374(ts)]TJ/F5 11.96 Tf 255.16 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(002.)-580(This)-375(mak)27(es)-374(writing)]TJ -261.31 -14.44 TD[(rather)-386(complex)-386(so)-387(the)-386(pro)-28(cedures)-386(ha)26(v)27(e)-385(b)-27(ecome)-387(part)-386(of)-387(the)-386(pro)-28(cedures)-386('ap-)]TJ 0 -14.45 TD[(p)-27(endQueue',)-304('prep)-27(endQueue',)-304(and)-299('run)26(test'.)-425(The)-298(resulting)-299(script)-299(is)-298(sho)26(wn)-298(in)]TJ 0 -14.44 TD[(test-suit)-326(ts)]TJ/F5 11.96 Tf 54.83 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(003.)]TJ -43.42 -14.45 TD[(Changes)-326(lik)26(e)-325(this)-326(will)-327(b)-27(e)-326(made)-327(in)-326(the)-327(future!)]TJ/F3 17.22 Tf -17.56 -39.93 TD[(6)-1124(F)92(uture)-374(Enhancemen)31(ts)]TJ/F2 11.96 Tf 0 -26.29 TD[(The)-326(follo)26(wing)-325(enhancemen)26(ts)-325(are)-327(b)-27(eing)-326(planned:)]TJ/F4 11.96 Tf 17.44 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(T)81(arget)-246(co)-27(de)-247(will)-247(b)-27(e)-247(made)-247(in)26(to)-246(a)-247(class)-246(with)-247(metho)-28(ds)-246('start',)-263('load',)-263('exit',)]TJ 0 -14.44 TD[(and)-217('v)26(ersion'.)-398(Instead)-217(of)-218(the)-218(curren)27(t)-217(')]TJ/F6 11.96 Tf 185.36 0 TD[(<)]TJ/F2 11.96 Tf 9.11 0 TD[(target)]TJ/F6 11.96 Tf 30.56 0 TD[(>)]TJ/F5 11.96 Tf 9.11 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(start',)-239(')]TJ/F6 11.96 Tf 36.74 0 TD[(<)]TJ/F2 11.96 Tf 9.11 0 TD[(target)]TJ/F6 11.96 Tf 30.56 0 TD[(>)]TJ/F5 11.96 Tf 9.11 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(load',)]TJ -331.96 -14.45 TD[(')]TJ/F6 11.96 Tf 3.25 0 TD[(<)]TJ/F2 11.96 Tf 9.11 0 TD[(target)]TJ/F6 11.96 Tf 30.56 0 TD[(>)]TJ/F5 11.96 Tf 9.11 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(exit',)-334(and)-334(')]TJ/F6 11.96 Tf 55.78 0 TD[(<)]TJ/F2 11.96 Tf 9.11 0 TD[(target)]TJ/F6 11.96 Tf 30.56 0 TD[(>)]TJ/F5 11.96 Tf 9.11 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(v)27(ersion',)-334(whic)26(h)-332(ha)26(v)27(e)-332(b)-27(een)-333(tak)26(en)-332(from)]TJ -168.89 -14.44 TD[(DejaGn)27(u.)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Pro)-27(cedures)-331(will)-331(b)-27(e)-331(created)-331(that)-331(mak)27(e)-330(it)-331(easy)-331(to)-331(test)-331(WEB)-331(application)]TJ 0 -14.45 TD[(from)-326(the)-326(framew)26(ork.)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Other)-340(enhancemen)27(ts)-339(will)-340(b)-28(e)-340(made)-340(dep)-27(ending)-340(on)-340(the)-340(use)-340(of)-340(the)-340(frame-)]TJ 0 -14.44 TD[(w)27(ork)-326(in)-326(testing)-326(di\013eren)26(t)-326(applications.)]TJ 162.08 -49.72 TD[(6)]TJ ET 0 g 0 G
-endstream
-endobj
-48 0 obj
-<<
-/F3 15 0 R
-/F2 12 0 R
-/F5 35 0 R
-/F4 18 0 R
-/F6 46 0 R
->>
-endobj
-43 0 obj
-<<
-/ProcSet [/PDF /Text /ImageC]
-/Font 48 0 R
->>
-endobj
-7 0 obj
-<<
-/Length1 1137
-/Length2 5239
-/Length3 533
-/Length 6909
->>
-stream
-%!PS-AdobeFont-1.1: CMR17 1.0
-%%CreationDate: 1991 Aug 20 16:38:24
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR17) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /BHYBSB+CMR17 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 46 /period put
-dup 48 /zero put
-dup 50 /two put
-dup 51 /three put
-dup 66 /B put
-dup 70 /F put
-dup 71 /G put
-dup 78 /N put
-dup 82 /R put
-dup 84 /T put
-dup 86 /V put
-dup 97 /a put
-dup 99 /c put
-dup 101 /e put
-dup 103 /g put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 119 /w put
-readonly def
-/FontBBox{-33 -250 945 749}readonly def
-/UniqueID 5000795 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÍÖP
-½¥í\985ö \16ÏÈð\vl\ 5.×j\87\85kPôØ\rúëP\8c\97ø(\1f?\88±~M;\90Àö^Ãyy\1a¬Ü\16*f˼[âõ:\8dç-Ñ\13µZ\ 2/¿îe\8c¹_[³+ 5{^\ 5\ fÝòd tp¾ñÅ!\19¶ûÕÇ~¾Ùd¬Z+¾Éسä\8aå»\0:cÕEwK\92+\9d_ö°\ 6nÎCdZ\13\18y°2\13}m\823\85þUó@-U\7fÓ´HkãVÂ\9c:ì\91ï\17õÓ\11\83±ä\89ñúU\9af\93ûÝ\ 4Ô÷é\98\86ØË|Ê\13Ôª\9cë4§\b¯"æ\9cÎðå\ 4Ã\99pu$5\85íö\vdGÈÐ\1cÿ°Kn=Ûª}¥\89\12\86\86\13"§\95éÙ\90ýV¯/\+5\80\1a\v\a\87NJÃ\17\ 4\81Ò2áPD2SÉ*\8b\ 5Q=JAT©\9d\91ö)ÌÓ\ 3vP\ f]\16ª©²\ 3ºÖ5\ eK\19BL\ e3uò\94\9bÁ\92zob!%/\8a\96a\8edj¡°\81\aSÉ\8bìÂk7\83wu$¼§+\81\8d1@tÁÉ\1fN\1fAHÓ×\ 3Ñ-\17\9eæ\97\vÕ]\ 4ª\9a\9d\97ö?,}½\12\9eÂí;¥ø\b\ 2pêXTê\16]¼Àaâô\7f\1a¯ \97*ɦ\89¢©b\v\91µ?kP\92\88Crõ÷¯ÊI_3\118ØZ\97Å»\83Ø\a-È\80\10ü\89\10\8b`¼\ 6Ôù<r.\89\b×Î<\1e£Ç\ e\9eeí×i}±|àà\127Ô\ 3\ f3Ó
-sýe[z.W/3x¬\93=×P\82òñhp+á\9bÆ\fïkÕð¡\80Ò\14\bÀK\7f}¹¶Û®þ è ¨\rߥ6m\10\93\r>hÊSär\1fõ%\85?LxO,,: \12\9a4Ùß\0Þ¼®@7äÀûÜã\98\9f5\96KL\aç\81{\80[þ\8c\15ðÀëò&Ïö\ 6¶)Tðô-ÿ\8c!Je7«fm%8\9cDÛ{XfD\v¿Á7q+ÍÌ\89Æ\8cÑý\85d\8b\1eÒ\9bûE¥d°!r\13\7fî÷\82Ö\ 4à×áñs|\96q\9cÊ\9eK\9dýÈ~Y\99¸\86¡ZÅr\18=ø`~Ï«^êþÙòy\8b;ÛVÜ&ø¶ð\0ë\ eÏ$4\1c\96\99Sã\17Ë\ 1¿r¿\0,\ac+Q\95¢\89\95À²04g\1dÒÿ\7f\ 34tZ] dk¶\ 2{T\ 3O7kê\19A\9aau~Iza\95\13éUÒU
-\1e" \8fôFùtð,b\9dNì\93BÊÄ\1e$>Ú\82\86\UÞ|f\1eõôÜGÇ\7fUK\ f0¨>2Õ\16H\8bë\ 6¢þ4ÉtNÎÕQ\6òz¡â
-±J\9bÈôç(\17\10ùد\9d-¬\95\13\91ù/8R\ 1fKý)\88zÄæ;féIÆ\81\82\9d`þ¶c©\98µYVìZ\83\ f£5Ü¿\15^¬xöÓ´enÜ»Ú[¨\1aq¯óH\1awSþ`EU-?©G¸Ó~<ÅÐä\ fl)\8b2\81\M8´ÇF2ë¦\83Ï%IÕd®\11\11º ë\18°+îÑ\9e/ç|=Û\ fOì\ 2r£Ì.à\85=\94±\9d\85ëlÿ£c³\9anCw)\ 38VÜn\8cÓ]*D$h\ e0V\8a±ä=\80UÉ?\ 6ø\13¦\9c´vZ½\1dM\·ã^'\13éÄ\98|`\13Ì`z²j\99iÅ\11\99\96lu1¤\888®±\19\85[Õ>pgKþÎM\92\ 3\97Ú\1c\96\9b¨-=@ܼ\9f¸\85\ 4Y\82\b%&\86Éâì¾ ¯\ 4H
-&\927\12\19+ !\11\11îSaÆ\9ax\93\0ã ÛE\19¤D±\83¦\fêuF\85Û,iÁo\1fsà\82I\9f*¦ì\15m\98eÓ\15'§\1cBEô͸¡qßs>-\1cA¡_ÂÄ\9dX\18\8cÅi\9fÒËÖÔt#4\17\9fÎiÌh\8eY#\98EÉd\ f\0Ð\9fn\83`'ü\0[ôÌ£\18¶gP\1fÚ3ÛZ¦æÛÇ®ÞÔ\93æsý\ 3½¥\16\16U:ðÂR\ 2ÀñlH2àM\9bÚ\92¦ìw°Ò¿-íõA\0ìa·f\83\96üÁduª£ÓN]Ê\87MÚߺÞ\ 1Ðò¼\1c·\11\ 3J¶|訨ʯ_\98\808qPb[D/:7àí]§é\r\90ÙBÞ<qBÞ\15E)Sh\ f<Sø\ 1Õí]\7f%\95\v\97Ø{p¬:wK`¨EðL¶U\9fwkIÅ\87Ä\88S\1eÜc&¹égùæ8h\93¤>ú\18ÁÒb[½\8e\19×\1eØzð\83I«N@àr\9cWÏ\9f\fÕl*v3\11N©°w
-ücpä`F2ÀBX.&\b!\ 4˾ÞæÐÃ\8fÛ\ eÛ÷\1d\16$ɤ¹n\8b\8bø?ɪõ¾í®ºýËSí\97G`3&Þ\1dv\ß\93\93®9OнQwÌç¸ ¨\eì,k\19=Ý\11<ï\8aµµ\16Nl÷\eI\99Ï\1fÎûÑî \8d\ f\954fVÖ¹9J\15«Ö=\ 2ñ\ 5©ÌöÚ\19á
-p\f\9fÙ/½\18Z \e\0J\aá¬\87¸ë\1f\8a d\14ì«õ\865½N!g;\9a®\98Ñz\9fióA.\9e\1fGnw2R\95\14}\911b{Ô'\11ÉiÂ%É\96\8cEò\13û>±öà³6iâ\14iàßJa#\90\0\1fn\8fûå5Õz©{\10\87\ 4RÏCbÉ\94^\91q\b
-^¡´xÓ²\96^(í¿ì´\1eÒ \\93\9c\1dW\98\ 2\1a¨\1aºÓM\93§e7·1Ô½\rW}`¦r.Ì\rÑ\93\88Ó\1f\ 2ΩX\8aÒ\87\ 6P>¨&ÿÕ8Ð\16\ 3¬ÀJ\1dõ@&ræ\ 13hÌ\177àÌ\84\91çk\12\ fD\96«Yk\ e\8aá¸òuÛÖl&Í+¨å\95Ù\17«]\ eÖñ6$e\18_æâ@ c³CÖP\7fŽ\89\ 4¤*-ìÄB÷eÇ%Èo\9f\9eyj!\13\7f\8cP\8c\97p\9a\1fêHªÉ«e,\11\96~R\v\9b Ûæ0IÓ,\8a/¡×¤TæÄõ4\82ù¥É¸J©,\0\95$\1e\10¸Ò7Éb¬Ø; EiGX[°Ê¬ôsÑç\ 5Á²*ú\0 OÄ\9e\13D\1aØë\0\85«\9c/\1aôW \91ïõOHq\8bªã.n\13ú\85=êë\9e\92èsý@-\88Ãw0¢\ 4\93 \9b\áõ¶HG\8b£#¸Í ;\v*ÃÎÃ|V\1c\86m\ 6,ÅË\ 3Ú\8cáG¼RL$\ fí4\83¼\80ü·øú×QÐ|\0.4\107xU\11KöÍN\ 45ûÞmmXù\8cmG²d>\ e¡ã\8er\86ór\ fUÙ¹ß\18\ 1\8b÷\ f\ 5ü\r\8b¡ä\ eÀ\81 :-á,ñdG,ô'¦\\8eó\10H¦ÏiA<p\9dD\99\93\9a\1c\11´Xâ\9f|Uæ¸kz¾\9a\1elÂctóÛL±¬\13*?xÔ\164@\bj\9bv,þ\95"b-.v{Oq½l\17\98Ðmí\17\1a*\83ó Kí\9f\£Øñw\99\ eR8ï@ì±v\13ß\9bÑ'ã´?ý\9e\89\93©\1a å×å\ 3ßËÇí8óòññ¯\9aG <J*T^\10Ù\90ý\88 ²ã·\8eè½*"J±\10¸"Ð\râ\13¥\82\9d81êfSïðb\8a½ Q\ eBv\8fN\95c|\16:Ä\92\vu\17P'Ý;\ 2±½}/\92sw\84\f\0ýÝÏÿ1\ 3+±g\98¸?|ÃÞ^ .>1Ýtþ½£hQº\82h£2ÇÉ»Ò\e°a³l\0o\12\fd\14\13̧<Ü\13\15\b-R\ 5Y\9a¦?@\95%$É\92¹·d¾k\1ew«1ÍíÊ\ 6}\ 2}i\86Å\8b¥ÿ½\9d\ 6\8bq\0\8f;³ \eÍf¿;\98y©\ 3\8bõ3îëut\14\8dÐ\84%Aí\r+ãYughì¡Ù4ÞþÃþ\19îæFYh=+zÏr\8dÃ\v\10nTGíÑ+Ãv Î]\1eU\1d®\95s\r\8bÈþ\98eçäHj\ 3ie®f.M\12.\90&\9b×D\ 2\88>Ñî\÷
-=ãõK¥\15ãÞ\12\8d\ 6\16-çy\\7fï\90+é\ 6\ 4Å ÓråOy¯\86¯\94§§u=\9ft+\9féCô¡cÙIÇ$ùèÈ\96Éåmâ¨ñ i\12þ\89&¹Ø\9c\1f\90\94\ 1å\ 6l\9c\85\87\14!Û\91\r<OC@\9aþQm´±ë@p\ 4[\1f±L.}\80ã\15à÷ÌF\ 5GBFl\1el\88\91_ùx\nB^üÐÇÃqróL¥× \1adÌ·(H\e¦\90êoW\9byU¤5j\98Y~\18\81 \8b%\8a\91×\84qÓ?\9d\17¢\8fy\8eQ\8dËHi \12\8bs^3þ6ïÞ\0¬Äª·§5ûDë«à5òÓÑ\0N\14Þ'GÅ>{ªö(ÉíãV¦ÍÀ>kÐȱ\\e\8d\ 6\8f\ 3\85Ï\8e´>OE\vP\14¡Êÿ\87l<áf^\ 3ì'!¾\8c)G\1eÌèå\85\ fsl=\18®\1cF½ÌUö\17ªÌ~ÑØ\9agw*CÃ\8dcÇÔ\8cÏ\88Ó\8e\11vÆd.â\95Ö¬ÜK\10Ò?À\85IKcù\91ï\ f\81\8b@Ä\97Ö"=x\9eqÇ\8c\102è\9d\895ø0\f\1dnkO\97i\81\7f¿\81ïòÎ \7f\8f\15m£Ñ|zF\90\9f.àxë4ðí\1fsâBÃÚ¢ÞëËJÛ\9c"îkñô¬*\1f`9L±\8cá\81\1c¥\9d\8bû\f]»\80\1aDÙY/'r£\1e\12"\1f@ÚcLòBÖ¬ÀÅÆÆ\a\ 2\f\16 Ó+\88Âà\fewÿ\88s\95 ø\1e¹Hd\17!ì¢\80åòr¢4bo\9d\vÙ\ 4\9dOìád´g\1eªðì\9bÙ\13?LN\13;Ûp^«\84ãe6ø^skþ3F¯\ 54Ly\ 4P\13×0\85\ 1(Þ.Mn,g-µî¹lX\13Rã\87\=er\8f¨YxÐ\97j5âÑÝ\a\bdX(~¸K\ 3á\12-\7fB J,v\8cQ0îý\91\8d*¾\14ªä¹ì>D«Ù\ 1%¤\1fNº\ 6\87Rk<#\92D\ 1\10\1eÇð®J ?\eÂ\ 6ÑD\15vÀ\178dH3\82\80:R\83\ eÜâ\ 4¸éTð\97\99l¶NAèà/øz\ 3ÖÙX\12M\b£ö\aü g½64ç\8bõSÂuKÂúÚ\15 ã\98\r\18\8c±*á¸þ1lç×7\13CÏNÓ~\85ìt1W\aH¬\83Dù\83Eb9nhbjîõ\93m9¸¿i\1dì\b.É\13R9ïe\86\1fÑ(L'úÓªM\fdXÈ\1d\±s\váû¥}ì\ 3\ f_N\8aªØ\bP>û\16³ý\7f¬\98\1f\ 4Ó\aø\97\9e\1dæK\8a^%\ 5¶\97ý
-\84k;Kâö×\90óöD=ñ~\9a5û\87\9a]T\89¥·×\96x¸Ud¯"°ÉhÛ\12é\\ 3F¶MÐÇ\89\\94\1d¹\96\82G´\8f\14º\8dG&\93\18!Jß\9c)ËP4\9bd\gtYe»\9a\11N±\8dz³1\8c\r0{½ô86\ 1\89\82åîv\ 3\15Ìh\81I\96¼\10\83û \ 1DÒ^\84·-d"ÃÒå×z\v\8a3z\jí\83\11ÔZ\88v7Æ\b\ehi?Þ\7fǦ\17Ìú\1cZ\ 5\94ê\ 3"\13ÚÝÒì\9a´\9f\9b
-B'\8e\81\11\1dÄ\H(ÆYèV6\17\92þ4 ³?PÔ£½¬cLkݾÅÒò\9cÙ:ûÐw°ÀñÁÝùêøD\843""\84ÙL`\ eB\88X\19Î~â1×\b\ 4\14\ 2\85\833ËÙüÍÃ\97s*ÒÌ\98!\ 1»\1eO\18¦¡åTk\8c}C&Z\88\ f¨\8b\83\9aÏ%Q\8bW¥ß\0\éO/?F\84 \88Ùc\ 21\93L\a+\9a8\80Ô/:\ eó\0u$#YZD\8b¹0\89)h8\10\bÅÊ(Æ\v\ 2æX\r®\8c¥ÐCÐm\90\1e\94{¡\ 6´üù½ËEÍÈà\80VÍ\9aLô\ 6ÎW\13¾ÕkOrï~\1dñä\82'j\aDWx\1a\81§\12cª+\15
-Ríá-J\81\19©\90Í\12w\9dÃyð'ÌI\93wÊ·?Ê8ò\ e\92ÚûîTÖ\10{\85º\14ÜÜÒi\91=¥\f|Ã;\84÷$\92\9cª\9cÂM\1dw«(\7fIK,+°8\ 6ámöóÆ÷ìn[\92æ\98\86\19M½#'Èú{î\9e\ 1ê´\v\10Ñî\8e"ìiN\,÷\9c|Þ\13zç7\18¦\13ì\9bíò@\ f½\9f@êK8å\93tLS£-ÞGHÀÛ\80k\99ò\1d¼î\90×^Óå\97\18îàaI3¬\1a\vÞ\1f«êL\8fÞ»{ÂN]T6u\15®\ 4NßJ=\106(Oò®*Öô»¯~èD$×£Hê-\10u\16\ 1NU\0ù˪\10EÒ4\8e&»¬Û\84Oáþìâ(rëªN\19\15ÞÏU\8c=\9c»\86\85ÇOz\93\98=¼:k\9a¬W[ [o\ 5±\14\aí\89\1fmÃ\91\8bÍÂÛ#\1cÏJL\15\99ÀïFýò8ih\b\eCnzTÞ"J»â¹\8c¶ý´DñsÏ\83Tä»\ 6'ó\1d\v\ 5çP¹5Q_\r\ 1\ 1ÄG\HKµo$i@>\81ܤÄ\ fÅÍ6¥\11¿\õâT¹G8\ 1 \8dB\9dâÄmG\0.õ\0Ùþù\8bùXÏî*F¬÷wBK0\9ehMn#¡ÔizâfÀT7\8b;\99f\7ffÃ\8b8Âç¡L\bä
-1á:µÐ»\f¾ù´\92!\8aÞÖ Âðh\ e\0\ 6ô\80P\11U\105|\vë\16&\9cý°Y \f\9e\92ÝÂÑ""\81Ó:\11\9a\95\89<Dä\9f>ç\88$kvwß\93=eaÇ+\80'8òS?\9eG\12¿üqv.â\rï®v~i\85'mßõ®¤\94¾3úÒ\81ÅâõNmÉ¢Æ]Ç8\9a\ 6\82\8eò3ëoVàÅ\9e\95ÞZ\fý'I¾Hé#\vðD'â|ý\15óX\¤£\15\1f&¢^Y\83\81\87¹x}?\8f²\\1dò#Á±?\90ÝÏ{~\87ÌWú\ 4xd\91\12£Ó\1a&6\18\97 îBE\1dD!1°Ïbx(§
-]YÛ\1fZÉBT\89è$\8bPª\8bb¹ïµ\7f~ëvÇÎ×\7fâN\b7°\16x\17jÂÆåã\1e\843Ù;VGµ\98:6×<9C\9cϲ·ÿI*C}\13T\96_ð!ÊñöÖ\83\8a^\92]áYs\83"tyi]Ó¡ÙG\ 5\14\vëºU5\16\bSxºêkúX³â"\82H+áÙM Y\9aÀæ>¦\18 ¤V\90^Öµ¿½Gs
-+ñ£*YC\19=fUý\ 3\ 2\16e°`\ eËi\96ô\ 4Å\ 5 \emä\1f\18ÖeBá\1f³Ü_1\ 4\16í\16¢ÿ6úͦØÕÖê \17Ë`´ )f\95ï\1a\9a*\98Ó\8eë\15?oRý\16\8d\ 4\83&Ü~ó&\87?V\vË\1cÌ3\90¸\12\88\18\94ß¡\90r\ 6Ñ\94\87\11Ê\99ª~^\1e\81þ¯â\13\ 5ú¼oÓ\9cTÌ\9aZÂ\9egºt\1cV\9c\95T\b\87Ta\12¬\ f\979±\14ZºÅ<Äc,\11\12ó/BS\1a\95\80çy\97ú±ìÊ©óQÍ ¸ï\14Mj¾kÂ\9d\0Ëþ¼ÚÔ 9ݱ°ÉXÿ«oD\12½i\94½\9c\90V'mHcX_¦Ì'´²¡\86M\94Þ@ÉOeM<$ë¶òg\ 5\9dbÐ\19\82-rìs4>\eÐ8ÔˤÂÝ47.O\93øR\98\8b¤se^\81ëÜ·0\1az=\14bvÄÜ\15\ 6ö|Ý\97%V*Fsö»%W¹\9a\96uJL8uXbéû\9e\1fJ(\96Ù'²ç¦Î\89§b\ 2À\r\8fpèS^2Fe\8e¬B¼l6k2\9bÐ\1d³ÿ(\9b\93º¨\r\91\8b᪱R\998ê®´môY Ø×U´5'É®Ð\1eò\81Bt"7,>\11ë|\92\9f}âú´ÆÆ\ 5\ f\8a?áÉ\15\16~¶\1f\1c÷8\ 2©à\1fHGÙnãç^ÛÝ|·Þ\9e\84\ 5àש:ÈG4ä\99\81\91=·wQx&\15Sµ\88C\vß°Î\87\19H i»\13a\13ÊO@Çî9uÚ³Ñ\17[\19Òsè\86Anëî\98â\0źþ/^c\8fÝtÞ\ eív\16\10]8©ûå\91Ä¡V\8b\81Fçþª\16Ø"Í©\9e\12C¬G>®$\9c\1dæjÿt\90ÃîÈ繾ܩëÞ]Fµ\9ay`/\a¸\99÷\1a ´¢\99ó×"\ e\1d
-\ 2\18#U07=·ì¯\15iyòú\16ªA\9b¤~V\ 4ß\17´|å\ew-\11x÷\99¶\1f\8ful÷/\ 5!¢-ĽE\8eSÂ\8bëÚg8Å¥Ë\1d\8fù>;H"Þn×V°\8f\80D\87a\13\93«\88Cr\86\8eT\89\90¿
-\9b*\9c \89÷2b\ 1µÐÄ»H\83y\17\1fßÅÛålZl#\97\97Æ5¡^ª¾~\9eVµ\19«!\0Û\97Ø RÙã¥PÚêïfÉ\9dæÒE\a\ f\1a·ÿX>ù³\87G¾Ù¶ì¬\91_W5oÏçÝ\12\14o]Ùµ#\1a\98·#·uôï&@pâ\9eÛItþôè\9då\8dM\bhN\94Â\1d\ 2æ\e÷0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-10 0 obj
-<<
-/Length1 2044
-/Length2 13621
-/Length3 533
-/Length 16198
->>
-stream
-%!PS-AdobeFont-1.1: CMR12 1.0
-%%CreationDate: 1991 Aug 20 16:38:05
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /JUQUTE+CMR12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 33 /exclam put
-dup 34 /quotedblright put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 61 /equal put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 91 /bracketleft put
-dup 92 /quotedblleft put
-dup 93 /bracketright put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-readonly def
-/FontBBox{-34 -251 988 750}readonly def
-/UniqueID 5000794 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÍÖP
-½¥í\985ö \16ÏÈð\vl\ 5.×j\87\85kPôØ\rúëP\8c\97ø(\1f?\88±~M;\90Àö^Ãyy\1a¬Ü\16*f˼[âõ:\8dç-Ñ\13µZ\ 2/¿îe\8c¹_[³+ 5{^\ 5\ fÝòd tp¾ñÅ!\19¶ûÕÇ~¾Ùd¬Z+¾Éسä\8aå»\0:cÕEwK\92+\9d_ö°\ 6nÎCdZ\13\18y°2\13}m\823\85þUó@-U\7fÓ´HhX²¤µ Ì.\eô⤠çHH<;Ï]ä|Å&
-:\96|¬p§£[\88µC\15\19\1d\ 4#´\ 6\zC)\87\93\8ckí;rcÂ\91\8bnZ \17E~\rN¼ JR\ 6@ý|M\ 5ã^¥Ho¤=\ e\97\a\87 8UÚ̱í\v\162X(±;|vz\1aXÈy\ 2ðTn¥@D@úe&\97W\83ÂשW+\8e]QvºÅ\98¸\96\ 6 ô\90\16®¿7c\89Áþj\1fü\fS³¬ÙÑhì:'\8fÔñÙ°\85Ü-÷\ 14l\9d\b\87=#
-\16\16\92´*E»]£C´íØ9Ý`hZYª¤\9fÆ\Øâ*\9c\«\954\95\17*\1a\9f@Õó\8e\92$C¥\19Ý\96ög \1a@\8bÑØ\9e5ô«\98âö\8c3fïÁKZþ\10\18ÙÈEØ\bÔøà~¨\16\85\18¡q«Mn!pî¬ \9e·ïFë\97\818M¡úó\13;·\18¼\80\b.®¨\87YtQ\88òf³\1d\f~y\1dc?\16í\94àU\17£!cçL½\96Ü]°fò¥1=m\7f FV\bË@F\13àðX\a:ð\0å½úû¿\9d ÀÕÀ*4GòÍÁõd\81\90\1e4&\&Ó1¬?\85½ËÇÅ\1eùíß+\9c\18\9cRSøçB\82ÖðS×Ñ\83®\17ê\17^^¼@\1egÒ\1a\9fê\13\9c»ó»\13XÇ\13§XC³\9aiª+\1a{\97_Sÿ"ÑÜ;ßzÍ\17¯¡Ú!V\83\10Æ\82A³\1d=\ 3¿@KÓ\v¯\9cÁ\9cu¹X¼ç\15_\ 3Ë\fþ,®\ 3'ªÔ¶\ 3(JQ|&Þu¸Æöª©Þ¾Jì\bÊKdmxx\0¬ÛD[µ]\10ËÂ#{ÿ«X 9\9b\8e\1aG îæ\ 1$2\0T\87¦\97\9c«ýuÊê¤\80ô\11©\90\8bm:.~i7x2y¬\9aQ¬i9 \85Ø8(þîÂê(\8ae~\ fyæ\8aÃE\1ak±È\98\9cQ- fÖÜw\15HòÚ;xÐ\1c\ 3âøò\r¾%jìþr:úñ½r\8b\86ó\1fﶤ˼£Vø\v\83|\9aZË\8fQ\1aWjk\8c §\ 1ë§2c\0%¨C\8d\13x1g\89)\80Zn\8cªãQݼ\9a[æ\ eÈ)\vy]ðݼêð\15\9a´çum\96{üqM¶KóÕ-?Ô\8d+ùþ\81íÜ{\93\89kÍb+\9b1Ñ\v&\fÔÌ\1d\84\7f¡\1dJaG\19\ e\83\9f} \96%!V\98#\81²r;®b\952\8bÊ\8dO)ù\8b\89,òà£Æ\17Áé\83\90D\ 1]Rã²Á\9a\8a¦\17\1e=\86m\89v\1a?&)\94º©uòÑݸ=½$~6wâ䡽¬SkQlG÷÷\99øo\81ãH\82³¾èzG\89Ãâ,ø9\ 6\7f\19P·Þ\8f(\e\ 1\82; «2u\ 1\9cº¸\9a\1c\96X\93è[åA}\7f&\1cõ e³oi`\93Xe_\8apÊJc\8b$i$$¡L¹UØëRàdHrÇ;Ò\ ff+\89Ó\ 4çà 8TzÔÞ\18è\98'\89öííàÆAú\0ª½P\12\83[ë\ 3\9b
-Q\8a\ 3\10\11ð´\9f\9dI¿\vÝ£/\89\14\8fnKãúà/\99Ö@VJ XÒé\8a|\0\1e¿\83\v\1féü_ü\8bÎ;\9f\0¼|Ëáè!._\9d1ûý¼Ü!ø3Sjñ´\rÖ-\87áY~a\838\18M7</¶» ÿ?\ 5\94FZùì3\92\91Ó¢s\92N§\9cÑmE\98\13é«\1a\81\7f®)Hh1mµ¸ÜµïXÓk\ fX\9au@öD\v¡hô\88\8am°\ 3+g;\|
-\roÇ\96TÑ-Ï\14ç\82!\91jw1s5\ 4¬Ú\r\92\16á\ 3--ÊßèZ|Àøã0 ³\ 6\88oÕâ~;\84d\83'\7f\ 2,\95\1f\ 5\80u\9eÐ`Akß\0eé\18M¦«í@#\18÷U[±\19·\ 6\95\b\13óL\10ms\1aÆ\ 4Ywg\8cÅÿ_\8fQ\1f\17S£Ó\18\bÒ\9b\95'\95N&\86+ã?>IqÖ¹%\82\8fò _|\14íâp\8b/on\99l\10]5~Ù\14\85̱\90uÐQ8\83¥¾õ;$I&óPm?\a¼\96Jü\94\19 ¼D¼#\90j\8fWUÿ\ fid¸Í\9eH\r»9\aáSh~\v8ð\18!,\1392Â\9e\95c0²!¾R\83(\85\16 2\0[ñ\98¡Þw\7f\96|I·®Ôs\aXpÙº.\vÒ³\13\ 4¼¿§\fß]A\ 5.Ñ C4¢ÓѬ\8cE"f\10]DF\86åhGà\0ä\9c\8a\0ýÂÂ\91ç'\8dÄ\8e¿¨\9bÃ\99YÆ\ 64\® \14¾\1a\16\9aIÏ&Éΰ\1e,V\80F\96+b\165\92)Ü«Ñ\1d%Î`]ùPÝõ&*\13¦[ùÞ!Y^¶Í²PêÓ*ù Eße;\7f®i5²\80þõ¨æO\rpü2J5Ð_ +\94¹|¾¤\19z)/¦zѯ</t;Ì´z-\8bBøí\1fÍp\94ÿÊ\88h7\bÖR
-¹+¯\80µÀwóå\1eù4\9dím\12F\82(ä95¿\1eDæÂÂÏyu\92\7f¹\ e\ e s\8bÉÅ%¶½\vZã5µUôÀýD xÆ[ßú¡ÎDd·ý_\0joà\17Ê«\8dzÛÔó\¿\94³÷£\19gë\9d\9d
-ËÖ\16dªaûûF\83P\92ÖqFr\908<r7Ä÷>Ñ÷á,\ 2_oæNÑàaÊHce\17(_±ÃKL\ 2ð\ 3%¥3®öæ\10V\10/ì«\19< ,ï7yàáNF\1d}ïæ\8aIFD´ÛßúxÍ\89N\8añÐ5yÃÒ\9aá\90Lbj¿Á}#Có%°3\b\ 1®c
-µØQ\9eü\1cåVäÆ\10\b\10ÂeÉ@Q\1ab\89skß\ 4\ 3¼êöý\7fM\ f¾rûKq¥"YÎES\vÍ\1aëÃdßì\11:Tÿtïµ·öòe[~\91\f\aO&¬vþFý¯_I¬ê\ 3ìÈ\9f6#\16¢ë¥+@?ØÂ6k5L\8dybU¶]?ê\86=øñÃTÈÓõña\14\ 6÷!k©£t`Í\94Öð÷\ 5ý¶lÓFe}`ó\1d\1c»g=§d2h"à\8fü\0\9fG,\0>\ 3m¡.ëZz\14'R¼Þj\ÎÚ\ 3&C\ fR\81Ú]q\1cý$V_v?\ 34×¹\1aBÕÇ\9fU\ 2Ön¦#\17VÏ\86R\ 4\89\8f\ 4tÖÍþcÂá\ 4ÛøáT\13º\81ÊÊÒ\ 1Zõ\9f\9fìO\93-R¾´C$ö\13Ðâ\17ü\ 2à`ª\17ë\9cÁ
-n\13rärIÎ\ 1ú. O9\983\99 Hã8¡z¦.Æßý\ f<n\17\ e=\90üSvà\8bXärÚíSZ\8eWrk§;g¿xF¯ú)\83Ýû8\a\96à ¿\0©¤oÛIÔ\eU\e¢ÑÐùxæ»w1Å;þxº\8d\13½÷y¹Æe~¹\1e\9aÎ\ 3\09\eR\Ë\90´÷\87½ôߢ¼F\91¯¿\ 5¼\10oé\16É\95·iÈ ´D\9frD\80Ü°<ßв6u\92\88±:ógl\96\94 XäØð°ÈQ©ÔÁA»\ f&¡\89Ú²\87\ 6£¿\ 2°"W\98\8c³%}ð]¿\M\99$\9aW+?A
-Ï\ 6Üò¿\19°Z)\8d»ã\8dÊ!\94ÜýÖÏiIçd¶28`F`E£;\85½é\8dÒèæÚ¸:Mè¿JÓ×ÐY\7fÈ \13ïæ\80\b\96û»\ 4Ì *Ç\13Ïë|µúºT\8f\ 1³\87á\94å\ 4eÚ¡Àèd:êËéÜ\ 1BT\r\ 4\ 54}R\1fv'¨\ 5£âI¹\13@йNWo\8cr \ 3ý%ë ®*v\887\ 5"Qýe´Y\84ý\19îT˹m\ 4a\9b\818\1a¹\vm¥\1d\82Ì\9e;WÛû"va \91Ü\14p^à2Þ\88.\91/æ±Þï$Ͷ×pµúR>\1c\96\bÑáÜ¥> ¥\v sê\1dTûµ~1;¦2\1eqqV\ 3h\rFÕ\19ÑHÇ\8c\1f\8aʦ\14pÒ\°ç\12Fïë\9aÅ(^\\räkEZ\1añhÔ\9a\84×dY\80ü\9a\10ÂB©\94\ 3{\v\88äòd¥/\9e&\95\8e\95ÈvÛ \15*üÔÊ_\e¥UÕm\99\1f+;-ivÀYÄÆ\10\ 6èLüY»p\0\98<0yq7sý\85³BíÈ|\ 4\8c\96iÔ\95Q«2\95\93Ç\17®ûh|¼ÊÖ\17FPîî\8e Óù%\ó:¯»:;1 9Dû¨G\f\9eò\v\16ä\1e\13Î6\85\1a¿¹ß`\a6δÇìÔ\8cÄ6\83Ýƾ\0mS_è:ZÍ¿±÷Ù¢VTÍjyç\97HÊ/\vjDþf\8c\1d\91Ø\v\17RA<\ 3UH\86|b%ZÄÏ,n¥kø¾t~wG\80:=a\ 1ª\92öÅ7\ 1X¸¹<*\9bRq?à\87\18\18\9d+°úÛhæj7\9f¸{Ø\1c¨Þ\86é\1f2öÑzà>gÏ¡¿Á<\9bû1\1d ׫î¿çS10ó\14¢ü*\91\19g\1eì:Ô\12fÞÅ\87V\ 1\ e!T¸7$\9bÚ\8dÀ¨:\ 5 Ý(\83|\80\a\vbø\98\91\ eÃ!~ñ³o¼å´\97·²\18»¡ùð6\15ý\95
-\1fnev\93òX\1dn¥n2ª\14R\92åÙXS\ 4_âXA\ 6«pS\14\88TZA\amJ\95\ 6R/꿺q\f\0\13\b\ 4¨Ä³}lqy\88\97jÓ\12Y_~y¨\1f a\11ÓËy\14j:g\ fÇj³+bñÒ\83^*÷³\9aUa}$ºÑȽ;?rÖ\blKå\83\0\85¸<mn47Ú\r\96û¼øò\9bJë\9aøRÀÂÈZ\0j°¹\91i\10º\8a\1dÒUúNH*õ\8b\15è\19"§É¿-¾ò\9c\14«Ôv]ã-\ 5(!gF\95\9c\ 6(\91\9aÖE¯\19R\10|:\82\ e«\12^1\8d]¿\12\82#\8a^É\83Ø\11+½À\1a\ 2\15qOhà>wÛ(0U^ó´=\93\7f¸9ßw\aö¾[\96\95\85\86n²\85^¹kG¸Ê"èK \12¹C«C´&Añ\81¤¨êÔ\93¢Ìd̨\9d\ 6\a\a!\1d²gâÙVÂX~Å7]Îá¦\ e.\ e\ eÂ\82¦\f°Ï\83Ìàã\96\1a\84Ø\84M\10´j÷j\90\81\12*¨\8bÛBÖ\18¬P¼0kK?±CÙl^ÄlÌ\8aUE-\1eKß·5NâY\7f \f~]Ó¡\9an±\910ü*q\10 rð\9aÛËgß×pEZ\98Ìq7÷Ô\ 5\97ÚP)V}¯E<ä\97ZB\11\16cçÀ\89©\9f\9dÍð,á\ 6\80¶\8d.\aÏü\7fyá*ïÌ"\8dt\1fÅé\95\1cRwÍ»1\85:¿Zl\1e\8aAè2Õ\80W\e\ 6kóÛ½é3\8f&\89JäDä!G4!\97\80ÊÖ\89¹ÔZF·UÎ\ 6+çA/\1ag\8eæY/¸U\97\1acy>\13k\8a\ 4
-\ eRÊ ³Ï0\9b¤Ú¿ú¦¿Y7uGÈ\12%"7t\18åQ\r\86d\f\a\7fÑKBÝ\98\97ææ\8dP\82\ 3\1eä(5£\ 6¿õDò¥Ù½\f\81\ f%G\0
-^\9f\e\92D\f\11k\87à\ 3¼¤Àµ\ 6v*
-ä¢Ûh\888\19Ö\b\rQGÞ«_ã\81µ\12ÅR$ü\81\98!a\96±\ 3Ì&¹\1au\84\90\aßÓÇìÜ\9bÖ}\89°\8a~C\87,Ã\ 6\96ü\ em\96zÍEi\16\88U!x\16\1d\1aG¾n¦Iy÷¾Ø\86Í¢k\1e\92#L®wA\89\99!\7fÊ\ 4\8d
-\v\85\9bÃäöÀ÷¢\ 5Af©d\13ºüE\16¥¬\16eS¢ä\9fs\86\94\0J°\97:8ÝØá½$Tº1\9b\94?\99ÞÓ='X9øÇ-ÕÄñ6¬b¼¦\9fCÄ%î,I
-1¢&\94[¦¬)Újµîµ\1f\92\99\81\94
-#RpBÁ\81ò?]X$9\ f\ 29Cs\9b+n¯i\9eî\8b¹Á?ó\91#GáÓ*¹³>ð\1c¼ä l`\87ö\98YAÁµ2B\ 5\11tÓl,´@ÛJþ\18\8dW\16\0ÆvRK\f\foÑ<ü/OßnP\11NóÀ÷ò°\10\10\1aìÁ\16\8f\9aÚL[\0\92k \82\8ey\ 5Ö\85§êÕ°\1eA<{´0g³'\ 1\9b\ eþ\ fuUg\93_Áª¾\8fH:Yº>E\96:\96ªÿÊÂ:Ýý\1dª¶\Õ\8då\ 2\f½@\15R©llp÷·\ 1ð2+\ ftÒ\8b\81õ¸»»\9c\0y~øÈÉ\13Ròô\11IPJ\1aô\89/Rë\8fw\1aj\82\r}i"¥\83\1d\84\9cÏ\89\8d4:\8aZKJQ\ 1ç\16ÁuT\ 5`y2°!_q\ 1Yä\97&ß\ 5ãVsprh[±qE&mQ¼2\18\ 1Ý\1aKE\v¥ô\ 4\ 3\17BE²\ 5\ftçipDmyóµ\9c\ 2²"«¢ìNß\80\841¾¿\17\81]×\81ù\9e´Jè\10ÐyL|,\ e®Ä¶\9b²åýûo\95\95sx:\9e\7f\¸áܨ\1dÆÿÿ^\ 1n>Þ}¨dW?Àõ&ø×6\19gÂ\8ap`©LOÜQàHÜkìÇ\19G\10©Q½\82Ñvï\14C\979çWKÁwÁs\0úð\914ÁWÁ\8dó\ 4ÏÉà DC4û7ÝÕ\80ß¾X-\ 4ÛïÎ=\96Ы5-\89ä¾\12²\8b\98k\18çEYøq¾ä¢R!PAÐ, ¡ªDzà¬y[g[\94ÕÆ\88"¾Kð\81äÝ-\ 4\ f@â\9a¹\ e\12»\vòñ\14íTßN\\10\>Ð\ 2Î\1e\9eXµÞ£`\98T2_BÕþ\96w\11>w^\ f\1dáp
-÷4L\7fÁ±ö\88Mï0[\8f½8\9e\ 2ÊXì\10Ôñ\91Wý
-\81ÐæÔ\96ÆÊ\94xþp¤\8cÌPg\98»I\e8Î\ 2Äýì#ºÀ)ú`ì\ 5Þp\81\87¢d\83©\ 1\94Ì×°j\96c\96_6¿\15\10Ä5%æÜ AÝ=`ä@%®®C\ f0B\81~èF®w\8a,¼\88\19 >\b9\805¾îªó~_äP\81<O\ 1¢\9a÷l]ãð\1e
-Æï\10ÈïYÎ¥º\86\96ï¥rÒ\15)R\9a\ 2G\11À1>B¥°ë\fsaN´£\8ah\98;+\8e\85%\1381¯\10\11Ã\93Ñ\83óËà
-\17®ûÌ \9diÃhä\9bn?H¿Ì\ 2=ú\17jã>ïÚo\99$\96·ÓÐ)äº\ 3ÉÄ \aè¼\ 5
-\a\98UèZ»â~®$\rM"\97g¦ì\ eè3ß\93¾\r ;\ï³\8e\95ù\92\8fò øqÉkÃ\ e\vÈ\1e\ 6V\801gÄHC\81\16GÁjBàæ6©\e¨¡Q^g\11e\87°Kê$\94_)\18Ó.ª\8co\9cÈN\15\1d¹½\v\16^%\96\ 1eõ½èÅãçzüLâ*\13Ô\9dop\12´sZddTº(©üiNÉúO_\vu\96/ù\86\aEId\ 6\89\94íLMg\fõ\1a\84\16Ù\f$/\87Åé$xa£\80ÉkUY\95t\ 4\84\17b·>Ã)÷\95\98Èìª\1fÛV\86Â_R¢,\8bøÝâ\)»H¥\ 4PÔ_²I½\9c¯\87\94\9a3\93MX!0Uáê÷X\8b\1a\84Æ&Ä÷\1fè\8c*V@d\8eP\90öèÒ¿Ò¥\eh\81\ 1\ 3ù_¢\8cÊؤ\94L¤\7f¯6 Ò\ e±\14qïîARm¾¦\91S>dzA²\ fKh=¹\86C:U \8d9#*}gÐËTBÆÒÆ\8f\ 2\vú $dg©Ó\89Ä/=´O©þù\ 5»¥y»Æ\a\ f1\rE¥\94\ 1-1»\f\83\99Ip\85g¶>\98×@V6\15½NÒ\13\14ý@\89Ì$Ü\9aóÑp\99¿\94\1cý\13\9dÎÂ`íÚnÖ)Wô\eF\92!yÙ[ÈÜHÁÐS¬©\89GÒê \14²\ 2 w\8a\94\13Aþ\1cXú\17èÍË\94>ôz8à
-\88<Äg¸\b¡7\ e|éd*\89\81\ 6r®÷ÌD\83@\fü\8cýK\9cÍ\89\19Lt\ e÷¡v4¨a`Çü\95åõ)>o'\8bïônU+F| \b\8e*¦ÅÂ/\ 4ÏGÛ\1a¢¹uhðè\8døh\ fuC\13\18D\10\e \0/%÷Ý é\8e¢²è-¼wøÌã\eNrõ]\91àxZ3\ 6Áð\84ï\9c»"î¿\8dà\93/\8dûß\ 2ͼ*í\vãK\8a\8e£%m¯\9a\8cQF)åÎþ\8a\1ek°Õ-w²¼Î\10w\1c\80-ÜöT¢\91@çN=±\f\9aäÿGàÎ\rRÉV*}\1a\92\8d\89\ 2ÃHU`¶ûhzRÙc+¦\15¹vOä\1dÊï\8f\ 2Sx\90\95\ 4\87z\e+uI\7fàtoÏ©¡}+ôÿ\88À^ËÒì?8ÙÊ?kDazÔ\9a\1e\15ü\ fæqMÓ\87\8d\9dùÝ\15aöû¼R\9fy\½ØÏE:\81\9a\92»\ 3ÒJ.äH\1eÝñ¬SÔ*\96
-Ä·¾}êzvÑÍí\99¯'À\87t-»\97(=\12ü\8blìÒ!¹â&¿DiÖ{ \9fï\96ÂüTOe\9a])\19=\1c\11\91ÃD¹ó\13\ 1#ÑÇî-Õi'?sþK\96\99Ü\9fÅmû\9bÜÂ\11\f9ñT\1e9½ïVÔ\ 6zàw\e¦\82\82B\87§ÿ\9b\ecwvå\b\82\ 16\17¸üÀ²Xiè·12\98²!ø\9b\98aTçm9I\13\ 5\87Ͻ\a\8b\96þ }\85¼³ Ã\14!¤\84-\ 5\16A\932éB¨ª
-\14"æ\1e\98\f\18>r¸½âð\89SÏt3Á1¥âóÖª-&aåéÅ^z\ 5´ÐÕä$\87yb¯Ì&Í6;\9ar%F\14\ 5óØ2ªrã\94¹Nt9á-Ĥifý¥\8fh63/fÜ\8a!}ï\8a\1f\9di!µ^ÜûhÊ\85Úú¨Æíá\7fz?TyêÀãá\b\89]\vð®ð¾Ì¸¢óÜ\8f\8dSà,: \98æ®ûIP¢,¾Sj¦*Ã&<bså\99â\14Õ:©°XLR¹¥X\ eH«¦ÐIVìÄäË×]\9f\8a\16©ëHÓÌÆO«ÿ7µ»\95Y!\ 5-1úéÐv1Ü$Ôbl±t%\9dIÿ¹Ã<$0ÊB\8aiÙ±\90\ f\OV\8fþܹ:ÑÊ\8e\92ºEôÛk93\1aw*Gk2+&D\8a6Ì,Ñû\95ïÝn\9f\1dÄ\90¨\8e\83`â\93y\ 5f;k\19\87|ÿ\12II\81qm#\98\ e¿ç\96Ó\18öJ\96q\ en\99\1f¯M\ 1æö.\848\8a\1có u\86dN(7Q«\8cvÔÞ\9ejô1û§ `µÿfò\82\85\ 5B§HP\95fÅ\86\15\84¥\ 4;éí\róc.\92\85\95,Ñfí Y+G\93\89l\90¦\8d¼ø\9a\98\84\v«X&\97¢í\ 3èU\8fmA~[)g\16úÁg\ eicÆ\¦ß\bB6\ 5\e½½\ eÌ¥\8d·Y\9dÄ\9dï|ä£\1dO)òÜ\843\91ìaj'º4ì¿\9eïRÈ á\0\89£5º\90sÂkߦl\18L\94\1c \13\89>o\94!ð¿\84\19à \ 2\8dv2µ\9aa\8b@\96\8eW\8d3\81{Ù¬\93Û~ãm\1caÏv¶È>\90ïÝÅ¥Ð+\82³ÜLΦ\92@\8aºö\8aÙI\90»#Þº2ù\8b\8ccÌ\19^ê³
-\96ût\99%l\ 2ÉyP=\96-\89\8e-à\ e|Í/XÔsÄ\80\11©\10\11\f\e\92\81-Cþfë\1d\93,\17þT\8fÑ\92\99]\16øó\0g\eb\ 5ÝÎü\ 5§@\15Ë\12%æ}ÊÌ´#¿\ 4\18í(&\80*õÍ\9dG_Ä#
-]O®h¨³°\96Ô(uô9¤cZ³\9f^\ai|ôm#M¨\89²\v°\10Ì>\86cC\9bXɱ\r\0<õMnâ\97Ò s\98ß5t$ñï½Fþ×¼¸
-M3\1avË&µ\15?HCª8ç\ 5égõ~úô8²NÖ±ñ\ 6D3íRÕc\1f\91~\12Ы\82û«*\ 6çd\92áí\83ö&¹\99mCÅüÇ?â\14´´\95Ê]E4h\9fo1¤¾\r)\17-âní¹:\16Fß\8e95À\11Iå\8c##Ã3¡\12D7Á¨\1a\91¯4\16Íê\8d\17\80¶\90\9d\9d p~\9b9â\94b÷¥éa8%\83ë3\84Ú¡)æ&F6 ù\ 3̤ð\1cκ\Ù½H}Å\1ci¶\7f1ß{\18\10õ³Ñb%m\81\ f\ 1ÈkÃÖ\84ä \15y\9a8s\7f7IsøÏ÷}]ìó®¨4-ÞªKý¼\9a¾z\11\7f.}\bÐ;\ÛW\ fdØë\r«ó\89I×ù£\87\87s\85\989k\83o*Ø"z\81\15\96+l8\9c§C\9aBÈÚÖ\95\9a5I?däúâ\9b\19\16\9afôÃ\19ã³ÇA¦\96;¥hÜW\8eÒ\96ãd\90p\ 6\92\7fØø3ë#¬´÷uþ\1fé1Ú}ä`ú¬.Sç¢Ü\1a|\aà5ï£\1eÐ\83.üÓÒÑÑ\ 6oC\9cþ½{U͹٠(r\8c\93`FóF¡ü¾[ÁcN\a«×e8²/ðTþ£\87cý°=ЫcÖö\9dÍþ4pé]lP|Ä\98åJN\ 4÷Úi\92\9a2Ð D¯¸0¤\8dª\ 5wÝÒ°\e\82\b\85\1aB_Í9¢æ\17N®Ï3/×Õ|\80ÎqLÈ7\8f\16\87
-Q\1eÜ\ 2rú꧱H4-_VË*º¯\9c@T³+Äåsf \a\93\r\9eë8\95Bª\88îÕÝ\8cÛÀ(\1c¯â\9dÚc`ÃùQÕ\ 1#ùT-\99û\bÍm¯l\9d[TbÓS\ eÎ\\r-ã¹\82ÀZ·Ýéj\ 4l)Vò\90¼i î¿é\93`4Î_;òQß,°\1fº\86Öþ¬÷5\8e®1ÇDÑ"wéDÏÂi¥\801z,Ë\ 3嬼`RC\88m5~\j3:ôªí \96-\7fX\ 6ý\88.\ f\85å¥0Ç[±ÍëãGb\9d®t\8d\1c\9fsVuåóZ^*j\ eZ@\90±¯Ai&Vì\93øay\QãÄñ{êÅ=«AîóO¿\b¿~]Z*
-,\ f\ 5µ¨\1d÷Ķ\9e\827°ß\94I\97ùAø¨\97\ 3\7fÞ {HÆ\90,ÑEwQ\82¥¡\ 6Äx$s\12\1f\8cÞ&\10ß$¹>\06ñJ)Ãn\96pi¾ª!½\1d\90%)=\16ç\15ø{\8b+\81\1d¹Ý9'UPðÖ\89\7fÁ0^"\ 4iݳ<Ô~V\85ü§\8ac\1eªAß\8e\8e\98aÎM\12[þ¦s^ÖûË\1a^äÂ\12%Ið\8e'Ïqts?j!Þ\ 5?ï~À[ÊèØ\99\1eÓOVêtWÐ\8e;\fçhK\ 4\ 1*¾qÇ~Òèì\16§É³%.
-±VÛ¤-ý\87\82- ÿ\91\89Ï.¼f\98\ f\8d"xÿ´Ø,
-äá\8fY\94\91\7f\7fKî\96\154\9e\r@\89FéòLÄ¥\ 6ïl\92ô\99\81\85\9a\94\9b\19\aFNç\1f\vî°t\12cÔ-\81\fA Jðz\8cá\ e\89R\99k\98\9f×ÞǺ©å\ eµHÈ°aïÏ\91\94Ð\ eèp\9fÄ\8a;vÀà
-\92s=ÍiÞ\90Ú¥\1fü¦¿nÀã\1d@\ 4¶\ 2¾-£\90µ\ 2Ûö>söòÖ.Y\85\98K\84×ú,â®\95´íàZV.)íFøT69ØðQl>Xõþd\94Ò\80{lûà\18¶¸`\13;ìrÁNÄS\95\b\95âe xÿ\96§/ö\ 3@V\a®\ e\80<º[\18\92" ¢\frf%+%óÝ\96õ\18üÜ[Ó7\8eâàñè\8f©c\95[èéKE\90\ f*S\ 2¸Õð\vñ¦±$Ðç¦Ýñb\94·ÉNJ×ÂItü\13tî\91±\96-$¿O\937\l\1dþÆE\14üí"
-Q"á\11#{ 9ín'\8c;\b\1fï \12µOZTæ«\vt#;\87¯aì)g\bµÏä£\15\85ÔÌïUMáÇæ2×hãQ\99Z)ñË!\13\88~Ôx0;os\9bJëÁ8ÅcÛJ®\ 6X½l0©\eÜü\w44\9f\94F\92X7³\fF\91á°Y$ô\8b;5 ûg\19Ôܳ<,® \14ê#°\ 3\8c\9aQ[©<ʺâQÉÞO\e\ e\8aHOû¤¤à\18ð]Þ¿\81@ë\11ß\98v>ÊËñnñ\8bC7 õ\8dÜ\82 }^\98QM'F¹±\195OÀ\8c\11¡M»\83÷\ 34I8l\12\ eã15L\ f4YÕi L«ÆòÿØȱãYÊâì\96í\17\89w\9bfG|ó\85\97Qìì1\96\91\98\11Å\1dt\83\8c\1cü\85\ròVW~ò§É9Þ½ä-\10}ÿ+{5|¼\fåÅ£Áÿ\91\19¸\1c¶¡ ÏxkÅ\81³¢Ç7\ 6<])S;Vk\82Æ_Ósv¾\91\ 5\93S© ºô\ 3Þ
-¸:ç²Z\9a3&'ó¦©4~\ 4\fô\84£\16MÙp\97>åxç»X´¶Ö¸!d\8cA\81+þ´\96^3êýàÚ\1fl\8fÍÉf\ 6D\bôÑ\88\1cÖ\ 5ò0\10\19ýM\0\89ýá÷ô\92«f\ 6r+Ûà6Þ×\82\93ö§ª%Ógµg\97\14¿\15$\9cC.Í\1ek\\9c²°ß[H1\90T<¢©´^\fMéÝ\eÚ#^Ù¢:\91ùIÇuÄ\ 1n\98\90%Áªw¶\165\8cÄ×\1cI\11·\87Ä\91®T3ó#\9a9Isz\1còQ\1dL\b\r¿{ÆéÆ¥@\84\86_|£cܦ\889^\80y\81l%ü0»\91îçã?ñh_ gÛú9`f[`ç¿8}\80\1a®È<ù\ 3óõ]-¾\1díúW\84´\8e¬Q\ e]PõGéD
-ñá/\91\9e\93ù\f·W`^&\v0\9b\8fýÐoOª\95· b\1e@"Â\93\ 3Æê\v\89¥>\8fèY)sýND_ª\1cHË\ f\12ã\88âs\a\ 3\94ñe/\87\1f!io\83Y½¼Z\85Ü^«\ 3KP@Ü\87µÍAþK´¢®©aìÝ\82\1c\19^ \10*½ñ\16cÃ\v\978(±\92ÇR\18-®±H\89÷jLÊâ»RÕ\84Eìâ\94oÈ\8b&¥\8b<ï~\17Ü©Ò\87¸<;0G\87l\82\9cÓ¿ÒÇJÍ\85Õ\1c`\ 4¶\ 2y:
-\98ÂÈ\rþ;31>\8cq\0ÝÕ/\ eîmo¦nÖ\99þ\8ayÀ60@\12H\ 1¡!Äfbg\vt°ô|\açè/\97"?gè¹¼\83e\17q\16¦å%¸\8d\80¼\97Ö¯ÎýÚüXè¢\ fú^µ¤\1f_\18pUvòA\1dF°¾(w\18`Õl\ 5\90ÚÔÛ9¶W×Bö°\9e\ 1"\85Ñ-Î|ç-;áV\99:íÛY\ 2+ÑR«\8b5à\9a\8a\ 6È\92Úö\8e/\83¼\1cü\ 1ÿ\9cúÉ+?EÎd¾êU¡?\ 1¡)³2àQÙ¾9õ;C\10\ 5õQ\v\80\v·ØÎk\9d¤íR\8eþ^ÐÓ\8ej¼1Õ³\ 1HWløyHaqX{&å\e#\8dÌá\9e\ 2É9K é\8e&âRþ\ 4mó¶ÁNC¼XáÏO\13>Éhã\0âN¨®2\ 4\ 5ìd`\88RÇ\1aé\16b\ f¤±\95\v°AýJ`-\19Á$t\8d@n<\7f\8eÕ\89î\97½\16:*kç\11\16ËÏe5Ö`\8a¸ú@5{\1eR: BQ^Á>\18I«\f+P`\93¨È²À½Ö§á²p&n\91\17oOØ\7f\9cÏtçz\eõG5\134NH\82\9d\82Y\12$\ 3ç\f\vÆK\9c\ 3Éx\fQ\9fh\81\8e\1c7m¦E6ÛPXÀ^z,6\b׶cí>¤[=½lM\14\18á+\9fá5¢&\1cÁ-ëq\7fÆ Ú\2û\7fÚ\f\83\b\8cD£ú\97 _ö\8b\86¨\8d°\84\14úȾ+õ¹¥í\18>º\vÇðÍ\rl\8es\82¼\96K¡\14
-\e\90bb \14\ 6*\8f}Âe\97\ f0.ú\97\12Å}\8eü}çs\1aî#\90\8c$éàÒ×òE`Æ2²çß\8fâÖ˦ê\9eÿ\#°,S@\ 3µ\ 1;¾îïÞ÷h§\81ÓþÕBF5íK}´ðÁ¿8xh\8c Û\88,Õ)QówÎ)N\ fÞúÒãnG?Ià4\91cçg6\®\97 ½J\86=\7f\88õ.)7\99ö\ 4PÓ3«=E\1c¶\ 6Ò\ 6dãü\ 4jFá\95(>Pó½ë L%t ÂÏ\bE\93¥qfýáohZ\ flé\97û\9fWÀIÜ°:J\13\ 4\ 6¥Õ¨vmAo\96\97\80Þ4\94\13q1²\9bhì\ 4É·¨ÒÞ\ 3câ.Xjº@[9\8eOÛ¾vËÔÈ\91i©íXSDo\18jÿÞ\bý\89\92H3\1f²\15Þ|U\11\rÄÝÎ[È^\92P\8eS\15ÂÕ\1e\11ÏT<\ 3\1e\9e\17cü}=éþ\15§WÙ\aË*\95¢\99Så²7¥\ 2\9b1'á'3BA\8c½p½\eøßqTJA÷\17¯BrD}
-tÞþ3w\81æ±gN\f\877Q\97x9#\7fR,ÖF\89cÍ\8c·\8c\ 4\1eÁ_Ðuf\0\83º§OÝ]¶cAìcw¶©MÏ\8fx\13ÁÜ
-\13Sz\1fÙÉY¿P9°Z\88+þÁ[¦åNÇ,×\1d¸\88\80F\ f¬\0¢BvåªYS¤dô\1aSû²µÜÄ\15\17Ѧý\85Þ¿\ 2ñêÁú⨯Ñ×6yÝQÏ4Nptù>%\90ã\rÇøhnU7¬\90ð\19"\r¢.öÜDÜhìئtëð\ eS¯W\8a°)S]òHÖs,\7f®^\92¿(úgn\ 5r\8b\7f#MøøèAú²\99p¿Y\12P®o\11\ 3ZÃ\11b3˳\f\92\r¶0\\8drnt\ 2uYà\96Uknùe¸+þáK\9fÃ\82±Á\98ò²ª\9f>AT¤\90²2+\96\ 37\b\1cËɵDZ%\ e\ 3\8b`u \1aJ\81«û;\1cè¼W^H$V\0w\1cï5\96 ¥'|\12ì?\r\8e`MF\1e\9c>Ëó,\ 2ý!\1f¥b2íÁs\92ü\9do¬ÏÜ\1f?v*Z\87aàÉÁ\ eÎ\88\1aZ«\81\1d¡x~²§_\eä sEõ*\98Hg©\ f%ÛWÐgµH\1c\12\80\18Û7\1fõðîs\b8\8dfÉKÿù\1fÕ^\15Ʊ~â¯c\82R)\8d\82än;\9d@Ùó'çåM\ 3«C7ZôZ\ f\85¢x²¯\e_ù\97\1dâ\1a\ 3ò\v½ßç\1e ÷[\9cÀ.9®Ý\9a\17tÍ\1eÀÿÜ\ 4\12]è"ÜdïùufòäÌ·a\99ýì$Ý\a!n4ëo¸?îÉ\83\ 1xÔþ\89\0;\8d%X\9d\85O*KxZ£U¥â\ 2E\96
-\18ª\vu¦ðÃïÐ×\ 4Rÿ\8ba¶FÀr°*U¾\1a\v\87ÕWõµ5e`\16\b®ÄGi¾Êá\83cu&rµñ\92õÑ\1c[Á¨rO]rBèÙ\1aR4ÍC\16ÿ;ò\ fT*ÚH1¨x¤ÐQ÷6¦\8bSç-éWíõ;fÖ\94\9c춽z?\9eá2À\18\88\8c\0qóK/\96ï÷0\\86á\13Î7ú1\87
-F_FsÍÁZ\8b(G\8e\9f\8c¶½ Î\r\10F\1fâÄ$4·^Ì2J\8d®|J\0Ø$É\13\99¶7y\88ᯣ¹\92u´\80ÛùÝ ûMÊâU&\13x\9eQ\8fN\1301Ùní\88`%L\f/í\eFáÁ\vSÎPtÑ\86\8d¼e#\89ÉE\92i^]5 {\95\v8>«eø¨n\ 2¡\bÅå\ fÇ\86<\15xy¥D\81´Ò¨\89\ 5)ÿJ\ 4¢\e\10E³A\ 4\9aÚ]Ì\81 \12d¿.'ס;b\9eû\9dH¥RÇ/Ø°\8a\84Áa\84+~\10Z¦ðo«v:[!E«º£\95\9e\vCyR\8fa¡\99
-²Ô\17Ý\9fD÷Õ%¢ª²£à©GØNk\11¦\ 6!\19+!\ai²8¢Ä¨Àî®2\98R\8b\81\1e,Ã}ÕO"Ø\aM°=JËÞb\f\ 5\e9\19iq}\0_v´ì~\ fÏê\ 4Ã)\9cñÏ$P ¿P3åRdÒ,1ü®\12\14ÊûÀ\9278º/ÞVÅße¢«\ eÕ?³ò\ e\88\89o*\90¼©\ 2J´\ 3^ÂÕ»,L=ô\17S\858MÙ\aH\ 3~\9dáÕ% \8cß\16Í\eiÙd\83kr\9c\8e\aY\89\e,\ 2i_\8eoØÕq?4µèxÍ;í\11\1fû_I\1c*[¾XÂnT\9aQÓ\1dBAÅNVð\1a\8dà^¸Z\99`Æ\96 re\1a}é\ 2æ\9bgUBU+Â\82\19\88ãi\ 3°7ÜI\ 6:ùN¢ÇÐÀ\1d\a<¨Ë/½|¯\12'=¬iÛ\9dE\13\84\17\b×ê+þ#Þ <
-g\1f\11¸\0Å\16\ 3`\ 6\92P×\17 "ñïtÜQoå\v\18\82Êü&5í\ 6)\98¦÷\94\98\97Y×FÕX)\1c\ e\ fpV @+/Ev\ 4g\ f #*XÂ\ f\8b¾\bG-£I
-ã\93ÒèÑ\11â\9b\ 6\83L¥¶Î,ë\1f=´\80CúV:Ã\92CH?\15CÊ\r,~\f\19\9bâÃLiWt¤[´ý\1c\8c\87Ã1\8d\93\11¨\175>I\17¬úýy\14é\10Yy*\16$\82ÄO\vº+"bþß9ª\8d=\91
-\12éìYnXö+\fXÓLø\ûw\8b#J4\9bè\89\9a\ 3\80Cmv7<\16Ee¬|õ ¦ÓQâêÙ\93\9f¤\ 5¿¶ùÞüî(¦\12ùLݱp\82GÍ\7f\8c`ÿf\ 2\16Í\ fW»W@¹ØÆOÞ\ 3oÇ\8b\1fÔ"«\143¾Y»ÅƬr\eOèíÂnêÊmUE\f\9cÚM\1axMº`mj:Æ
-\80\r\f\ 1\1a\9b9¡0;E¦Ô]¦\82\10ÌE\80µ\ fÏ\82\99NõÃÔõ\1c
-\93-ö\9a\16\1f}Ioì[¬Rá@:ÈE\8b$eO8\f®\81ã@~Ç\16iïG®Nv\ 1»¯\10.C\v\98/\1d6é"lm\16Àª)\9fô[\84{\ftç84¸níß}°tq
-Íc\9fk(\90cZ×Y\84\ 4ÍȺ¯Æ\1aØFéè\13ªÖ\83\1cN½/Þ\8d\\ 1/êíÖ}\99(Ì0\f-×Yc\rÎàÖ\fbb\17Ì\9dpwwZSñP@\9d#3¥K\1dY\91¨=û\91Uíí\16*þØ\98¤sJPÎ÷Û9rjÔ\9bѶ\9bÉ\11÷ÝJHà\8cõ5;9÷²]å½+~\aQ\92\12µWo\ 1èíð\0ncÞØd\13XÏ\ 29Ç\80Ç\92\92üþ\8aÈ(C\18ÄZø½2E´\ f\96\8fïÇÊc@ Ê~\84EÂ\ 1\ 6\8a\1f\v\0K\ 4x\9f§cÅ-è\87p\1c\90<k[\90\8dÀÉ\ f¶\1c* Â|kÊ\býªv\92óæ\92
-\89\ f\ 5ªò\84R\ e\87ßË+(§å:´Ãä\7fôC\18Oob¿çø¡c° \11e\95T@ë<d.Ë\7f\17\95\ 4U\1a®¤ö×\19¨Û\8c®WÆGe(DC=\19ë®Û^G\15\8b*ld65møòÂÿ\1aØ\94ðÜÅA»î¹Ð\1c×FÚðµÔ+\9aKÔF'gSDÝ9øDrU©òÚ¦æ+\1eìå@\0\83\1cQï[ù¸õ\11Æ+£ª ù|6¿\19{Á±\10ê×FVã\r!\
-ÂLç³HÞ\97c|N\8c=\80\8a ²¦Ää\ fðF\95tÔ+\1dG~×\93áADâ¤\0-¼+[\ 2B^ÀÊ£»¹\9fN:J):FTK\15*5ù«û¨\9f\84¿A ö(¿÷ßÌú½ ' 9ç × \0þZÆÊ\ 6\94e\8174B\93vª+³¢A{9\f¦#\1a¤\94º\9a\ 4Óû¢¤8]\ 3ÖW¦Ó=Ý\86?M-g<"ùN\9d8=Åhí#\1féç´//\8få=F\186{Áø¨\85\81Ì¿÷\7f®\ 5ï\9c\13,Y@\9bÐE\95ÆÄ\b\92o1\9fåÀ5Ò\13ö§\1e¿çô\1d:×X#Ó\80´ËUù`eº\8e\81È\ efÏVuÏ#-dÎ\87tW(î
-'ÀA9èÜt/\14\14b¹Ø^\8a\ 1\8a&\1fòÎ\16å\ e쬴ÂñY\8eXçhP\1fÓ=IØ]×ïòÎâ\945.¾%·$!s0gn$m\9aò\85\15謾Êê\96w «Üý«[\98¾\a\ 3:#£y¥uf\ fÏ@\11ØÇ¿\ 2S¹~ëiuÌ£\11÷©®¢ÜÑ\95\87.\*\81L|\98f\bû©¦.©m[Ôù.\12x¸×\86j@\13ö¤\88¸üe\9b\8d \9c\8fÝqÕª2\91\ fØWµ\83\e ¾F\1d,\r\9fÝï~\12!4\98³¡\r\94ØÏe£ºA:éÍ \Áÿ\1fË\99ß\1cÏ\8a\89\13\fÅ\ 2ó¼YO\11Áð3s\1eìË\947Æî¿qÊz<\92x\a,£\85õ4cW\12Ö}\9cÎVqô
->«·ð³¨jÑ£ïy\8då\92®\92.Â\91\16\bÌòß
-ýÀµÿq\9b\9c\80A;Ù´¶XS|\81ó\88Ã\rø\rÎÚ\1fWÌ\0üPï\1c\16M$qHuo\8cÅ%6\17h\11#\80þe¥Ý5áw\11\12°ó½µ \99\aÄ \ 5è\º?¶\94\ 5ýSñȯ\10\1d\ 3\84\16Z.zÜ
-\8a\94ï\9f!\12t#ç¾ÎÙaÖÞù\92"®i\92é\ 1\f3S\84Îù¥Åô\1e¸\bÞ÷T(\0Òg¦Ý^=?N\82½\ 2\93*Bå¼(\bÆ®¡ÅHÂѵn;¯ê/|ZG)üÒ\81-\8döÇ_Fëõ ç¶x\vrð¹ýß\82në4©"\9a\88¥Tÿ\8bÚs6Ô\ 6ÞÀ¬1\9eIßÍ|Üé19ÿ\e\83ógÅi\16TÃ[Ä¥¼\7f\83ÔmuÏ\97;\7f\9bµþ\ fC\14RôÔ\.\88Fw1B\bGý\82\85²Ñ\1d%ÏÌ00ÿ\12s|«þ\18²ûòÅ`\ e$tGrøÄ\99vòx\8e\a*ÃÍÞ\98\8eË,\9fÝQºÄÎ{\8dQ\8eEÀ\84Vz«¨»\93\90ÁO\1e(\94¡\16Y½ôÎ\83,[\15K\rÁ+\13¨0©°Ò#nÝRÀ\985àªÈ\9f1ÏxÉ[ÑÂtUO\87ÕO§Ë¡\95\91\9eÌ\ 5;)r(Ù\1d_Û\bðkæ7Í\ e\8cÔ \1f
-ZBx!\7f\83\16\8b\83Åz\fî\bòSo(dþ\8e\ 3568ñ\04<GÂ\88.\8c\7f8\ f\bcu¾÷\16%¡u\15±Û`\86ÉÑ\ 5V\93ñ\92\97cÉ\94¾£
-Ð\aõèùÕ\89q«4\80òW¯àF'
-F·\e0jPæ¥uT¿N\r\8d¶¡ú\9f\7f^\v3/fOÄ\10Eìë4Q\ 4.ëÍÿ-\18P\b\ 6¬G7ÃF}Û\9f+Æàã¸é©9|B©\ f\80uÒ@\b\97\95v\94\86áò\8d\8a-£ÅX\8a\14K`øÃ/\90\87\ 1\84\1cµ¬3Eʪ°ü¨'\9b±\vÒ\81õõ\91èËY1Û\12.ñi½\ 4zø\9e\81@¥ì\99ì\975\16Ìá.\99\ 2\ e{Òº\1clß¹)9;VÔ£½Ê±Íe¦AÞHM\8aæ¡A ¹fÌ# |ùß{#ö\9c\8e&\8cB\1evþ\1a\7fÛ \97ý÷R0zx\9aM¾ \´\83¾Ü\8c\ 4\9ds\165~øÐ3«\82\8eÍÏN\19°½À\ 6\1e=ªTX¸/\1e¤¾X\98úæÌ\1a¬®Ø½m\9aÝïCö3Ó\11ók/¿Së«Ó=B\89ïä|\aÄ\9b\r\1aTÊ\9a\98ôp\18ú\88ÒÞà{±\99\98 +§\ 2\b] 3ó,û\ 1Ù\b,þ\v\90©éCbé\89Ë¡wá»°|ëÑUݨûVY©½ãQ\8eê\ 1²\ 5û¾I\94^\ f£äÿ¶°
-ÇZ\9a8\882¹\ 61\b\v¹Þ\ 2Q\87X\1fÂ0\89³-çSî\88¶Ã\ 6¿x\99ÏC\1dðO/s>Q¡\ fXÓ¸\^%QÄ\ 2©\9bé\10\ 5>ûΣÜ)\ 3{¶6\ 3T\92^ýÿ¨UÿËÅ\8f÷Áh\82´»¤òaqEƾ.4a`øο°>$úv¼@\ f<Åý\92·r&\9e¼\12\0Ú\10Ö"ã'Àª6£\91\82¢\ 6n\ 3*L\ae9k\9f7Ý\93Ô\9d \9bßáðoÊ*\137\1a\86\ 2\98\13_\15µÌúîØDC\19 P¬«Håbξóp\9eÃlHÎ\ 4±,Ø`\aÛe[\11X\1cõÝ´\8f\922¢\ð?\97·"\95suR\10\8dØ¡$^ý\82\8eûhÝ\8f\1cd\ 4\82\0jÑ\96é¹Äð\ 3lú\8f5Í&¢¯Ô9N\95\8aQ\9fÅ\ 4~Bv\ÏÞG\16ùxÁ\9a]ÏÌ[\1dné[¬,CöñþÎõ\9d1½hRê<t+!8QTdÚëg[ÂòI\eéYÈ83\80 \9a*6ÒÔ´O
-ï\0©º&?,Fú>V\94XÔ@\8c\18|R\92á\92£ðh¢{îÚÔ\eÊÓ=¿\889>\93Ó=´¸úIz¤1\8a§õ=\ajY\9cµ5\ 55C¹Qà¶J\80c\1e\vj\9cèÕTo[ù=ób·-\8es·§Y\ 3\98\86l¯1\91dÉÉ\ 6§Jì³PpO\1d±\8b³\17)~ù3P\8c§µ-oZxE/n}X\1c£<}û¤Ì\-|\89>\1e\8fj}\83TLcBÇJPv]\8e<\ fÕ÷\b/á¼»\16:7ÿ'
-\ 1ª\969\88\8d\9cÞÌWåj\91\9föC\9f\8ev,²1ê]\1em(eç÷Û/È8\8fô£x½ÜºTí[tmÀË#º@Ë\87}"éðê§yuÑâ¯\9bÚudqgmÌÄx\9aÞ$\ 2\82\97¨\91\17°aoÛ\92\9cè5ln\0æGÊÒDhs\9dÐ\ 1\7f\a2\9fÛ\ fy5\80ó4Õ´Û¹T\91Ë\\17"k\9a\93\83µ?ôö7¤¨\fØÇ\8d©;AÝé\13èܱ}s \92piËÚ\9a0WõRK7&[Ëß¹»\9bð\97l¼.ÈÕ\ 2jCÿPÛ¤t Y\8eË,o}rè\16\1c\10K\ fe§º
-¤¡\9c¨Ïb\16Ø"Æ\ 2ª¸\13F÷Eã#ö\81\ 1UÑ\1cO\8d\e3´Qg¤±û@kÖ\0-¦¿\9c"\88Ø\8epí\1aMQM+²Ý";ÄÆr32ÿáFM\9b¾Dåp\98ÀÀ@\aqÞ~Q\81¤ÒrÑ{<*À\8e\16<\9a(^\13¶Ä2ÞT\91\a-È\88"=\14\9c¹ê7%îïÛco\81\15"nðtÐÆ5××Ï\1eª®'c>\ eýÑ\ 6veÇ\995ÚQÉEñ×\ 2¨\86\ 2Ç\91Ö\15\vþ£Ô¥
-¢\197aÝÿ\ 4ÚæE\ 1ó¨iá\92mÇ};¸\b?öj]ÆöKªeÇh\86áßÎ\14ÿ¢;!~\1a>c²h8ßèl\1a\12\ e);¿¹$6\16Õ/Ûð¦\19«\ e±\bbÌÑìb(Æø_Îî\99\159\8fÆ\0gîA\98`\86ZÐ\89\920HzµÁ^r\83\9b¬±\13+ÄËKouƬz\12\ 5óRmoA/\1eG¼^hѽ\vá¨a0âV db\8bÖ)=³%´'ò¥Á»s¾9N\aÑUñ\1eÕÛ£O4\98\87-ZÞ=[[Ýs?ß½#.JÏO;\ ep¹î\91©\86.\b&¢,JH? ¢ó;\8f\87§k²jÖl\\98\82ZQâ\r\10÷&¬B7ve¥\841fÈð\ 3ÃVx¸\9dC\84ÿ`p\1fOL·³\1aø0Ø\93&¬g5\ 6¥\ 4ÂÌQ|\ 4\ 5Ûé\87î\a\85k\ f#Þ\1a@\7f\ f\9eeGê\15gµÕ¨½üù\89c®bÉßD\96HÅAÚ\1eaôïz\18-\bgìÙÁ\89÷~\ 1`wÓ°G$:Ñ\b\e÷\19=~\870A\92»A\ 4$ \8cÎ
->þ¸ËÝn²°ZÊ÷\87èfÁ\8b\ 3ã,Ï}\8dsu\ 5¨\8e¢©*"xJ\17\14\87¡Üx\82Æ\0;D\a \a^\r\8b!\8f÷\ 3°û \84Z0-åÉP1Iå>\8cÙ?R]\19òÈÂ9®\92\82\12Üæbº£\8aX>\99\8e×K¶µ>NÄj\eÇV\98JhÁ\91¾Êz\8b7É\8d]zVYT4d¢\"bâèÝƱ¿Õûe¸w¯ÏÏw¯ç\ 2V\8fL\8f\8c\8c;ju\89\0\8eó\aíl[NîðÿÙ\83LW\ 5úWc.\16\7f?\83|b\14£0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-13 0 obj
-<<
-/Length1 1401
-/Length2 7398
-/Length3 533
-/Length 9332
->>
-stream
-%!PS-AdobeFont-1.1: CMBX12 1.0
-%%CreationDate: 1991 Aug 20 16:34:54
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /PRPCHF+CMBX12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 44 /comma put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 58 /colon put
-dup 66 /B put
-dup 67 /C put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 85 /U put
-dup 86 /V put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 120 /x put
-readonly def
-/FontBBox{-53 -251 1139 750}readonly def
-/UniqueID 5000769 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÍÖP
-½¥í\985ö \16ÏÈð\vl\ 5.×j\87\85kPôØ\rúëP\8c\97ø(\1f?\88±~M;\90Àö^Ãyy\1a¬Ü\16*f˼[âõ:\8dç-Ñ\13µZ\ 2/¿îe\8c¹_[³+ 5{^\ 5\ fÝòd tp¾ñÅ!\19¶ûÕÇ~¾Ùd¬Z+¾Éسä\8aå»\0:cÕEwK\92+\9d_ö°\ 6nÎCdZ\13\18y°2\13}m\823\85þUó@-U\7fÓ´Hkç\90\11Ñõ¿®\\1fGnæð^±ÒÊë&\99X±\94R\11\97³\12üÎÔ\86\7f<\8f½\ 3\v×\15ØÿÚ\1dÍEK\17Nz\1a\97µ\9fçpæw\ 2Q\9d\9d\9b#Ö\1aÀ\84$ÕU$*\8c \8cI®ó\0\94]\99¹\99§\9cçH\ 4®kýæ#ôF3qD/e#¥öÎ\19È9§\bÀ%\13."Æ\96ÈÌäV\80å\19q\89Ðù\8e\7f\r_\95^59p³\92ÏS
-hÌV°\ 3]ß¿ l0t¾ë\a9ܼ¢r¦æ)ûzê,[§ºå\f{L¥\95ßx \f5)\97ì>ådß"\9f»Tsõè̱Ì\ 1Sé§â\99¨ê¢\9biѶ"±ðÏüX)\12Hu\96\aÙ\11PË\ 6Q\12 pÜ\9ft;ëïDö®\92úÎÅvX\99\9c\8bð\1f`a\15`\ 49bÀi^\e¸} \ e\ fÚ«e\9deW \8af\vé®ï\8aå_q¸¼v9My)gä\eØ\ 2;n\7f\8c=\99\87ÕåLS¿+»2\85[\94ds´H3½x\87=øäÇæhÿÿ%ª»\8d¤\14\8ftK\9d\ 5$ÖË\82\81${0RÌ]fóñ¼ø¥j?´FêX{ؾ0%vRÎà5b\8aíßØ(;ZÒ\e\8b\14\80$Ø\98\97
-È¡ã>T<äãÄ\8f\9eæ!ÅÎ>\8aé0ø\90\ 1\ec\bfÉ\88``hÙé#\96ëõ\e³Û E\ 5ü= Ôp\1aÇ\ 3¡M\92»þ'½t\11³c¨\8e3¨é¨\ 2ZÃ\1f!ç=Å+3;\91\8d\v\12pÅHs¤\90"-\ 4\1afà\19&\12¾m,\88\95\8a\8fpÁ\ 3\90\14nå \1dð «\97g^\8ei\ 1"níP\12]6Â!¾\8f dtBDK\13ð2_\89\9b\8f¡^\14\14\11\9bEù ÷=ÃIomàÝD\18¡\18\1ey\eI¥(fÇ\9d7t\94¾ÿ\7f\eDA\11¼¤ü+ûryú)8ú\9bâÞv/ Ôp\81<Nà\ 3Cq\81.û\9f\87\ 1E(· \9bäð\1f\1f\84Þ\92-lf×öÿ\96¤\923²9m\9c\19¸[\13/õe\89:Ó¡\1dÛ\88äiü\1dìÕ\1e[?ý\1e>P\91H9ÞåÕÒ¶?\83è§\9583ïâI*01O2â½\9au\8f*½¨\10v\18îø\86ñ9\ 5îÎ)ã &\7f¥\ 6§rqÈ\94P¶ËC ç\96øÐUÔ
-\89+\1eÌ\19yá÷Í\ e¤\ 3\87ÒÏ]\85k¾>¨Üûã\fTÞ\81\1cQc\17@\96%ÎPð\1a£e\9c\r\92LC*ö\1dªÊ\87\90¢æQ\8f_\19ÓìÊNJ<\1f\ fF@\96\8fÄ\88ÓuÀ%¡\8aý\8a8û%6g~±e0t(Å#Ø·¦ã\99²ÒÊþ8&5qUûá\1aVÒº\97Ö\b>Â\15ÿÊ\17Pc\ 2ÅJª³´Ï;ÿ\83tñ̵\80\91\18xW\9cI£\f\9f9Q\f]|ÅÛÙ¢Z\-\14\a\12Íë:\r\8bª·¿Î_]á\ 3hÖaî)Êít`UTÉéLL.oü\94)\1a0VV¼R\14S?Þ~S´\9a\8dp¤-\vá6\926@?\rñ\82à1CÃ"ÔmÿÈÐU¯j\80Yº\1eû\17\87¶\9c\1a\83SÂÓÃþ¿<a\18f\94«\97b¶¸\ f\10`\84ÿü×\18\91®°Ñ\8f\8c£h\ 5\9aìÂ\11p®cÍGõ¹n)ª\82úpob¼Î©Íñ0~wEü ºzô|Ö1~h\15\9dR?Ãi\9d/hÌ$í\b}2S\9f\10e6m\8d²íÞÕß?\1d\ 6Õ\88V©ð l\90i½ \14¢ÀÉ\18Þf}Ñã\19\ 4/\03²\83\8f\ eÊl\85Ï\ 6xù¾0Ý=\12h¢!\83¨KäÔ¸éÈ9\92îÏ\0ùh2P\ 5¢@q\11\1aaÆùüÁ\15ê\8a\1a_ºy\0ôhËDn¸o[ÿ\93É]\11ÖWrtZ/\ 1'ñ{ÝP¥Baîë¨j`Ó\8ec\18¯fZµûÉNÝ\8cú'øY\81A\83ò½Çz\919´ô/\159F\be¹È2Ç\1eô(J0\ 39\f«»§nºQ\9b¿àÍoÿ\86áU\818F\81\0\87\14^\955Üi\7f\15T\94\1f¦*ÕVD6@Ä¥W\1e\8eÞ\9b¨u'|ÐbÚ\9dSÓ˯0.çÖ>\92(ÍñÞ\99¨\14\9fþÈËܶÖø:\v4>J'\1a¡XäÊÀ\0C\88ò\8byÒ\9f\91$\1a`èH#ß\90\ 5r8ßúábH\11á\ fd«Ã¬¶ÏbF³øqûÈ\80\1d\860PV\1cÛà4\85"*\7f»\89\9a\1a\ f_zns\ 1\12ÍMæ;l¬`=ÒGå\9b\0Í)\8eN7¯%á!\15ã\90Ç\8d\9a9M8\83\9e2¢ç\ 5\ 4«yck\88º/\8duë\88Aþ\96t5\1e»Lý\9a±°Ë\7f;½« \v¾\ft4@b\0g\9cYÐ\8aäB3äï¹ëÃ_¦\14¯û°é!\1cqò©è6ì#þÐ\11\98\86\0öêÁ ï\8bôÔ{\90´\9cÔnøLXU\92\82}\19Ñ\ f¿Î!\8dà¢\9c~Ì\ e\14\fÎ\ 1ö:<ADøþ¨¥\11Éô\81ÝØÙ\eÔ-¼ø¿\r\9fó\9d\8e\9c0»\91QLϺ\±ý×\97Fn\82g|\yºHAÄþ÷Dÿ8Î\847¼\1d<{gÝ\Ù\8d
-Y_\ 3¸\v\17\9c·ÕTóUK~iÀD\16\86I=?x\1d\9fÒÏ\8cÍï®èën\eD§ô\9cy3à\17N»\1cBX\9fm>æËI!}2ؽ[*ßEd4ºT¯\e\91ËýÞN¹6S\87D'\e+ξP\85ð\11õI(\ f\8dFÊa§×\8cÓd¢\87ÑEÀ£\ f\8c§§\rX \816ɹ&³¹\94xuÔó\8d±\9bG\11KlB´Z8m0åYN~/\93ÈÎק\b\9cÞü´8\9c0ûâ¡\82È%5ÐA\9a\81Pí
- \9f\1dMôwç\8e=ÅuqFÒK!þxÖ<'(üã\8cÈì5ûc6ë$65\1a\ 3ýeµ®£séJÐ\ 1.Á¼Â\8d¹-5¢þEÝ~2\0a[w>6Å\10\1fZ²\80\98rèÏA\8d\1cÈ44è\83è\14<I4ÒêòZÿG¦\84 \84þ\1a\ 1\17º\12JEå°§\14\89¿Ô×uõ%\8cpÃÎ\15wå3lãêBò\9c"\0\8fV .jòy\ 2\9bùç·$óm¾ªta\9a \8c\1e ó¨ç=\9eNRdA\90\\97·ûzU\ 1\10¬óµÅ|\93z´\8bwögý\18ült:\17[¶øÆ&\88®øè\MÖeóeT`\7fH^Nä@ç\9d;«ÁM\ 5U@\ e\8b\9dF~VÂÔ|Âe\94¥ÁàHMõ©´\15W\ 61\12£F-^Óñ\8e>µ\84\9d\88\e\9fU\výD\eó¿¶\9fF\85£æq^Ù§\8b?\9c\97ýÁ\8a\89&Ö\87±.r\9fèM&è÷\a\9b¬QÊã\ 26é4Ù»\88ü=\1céó\8f?ñÏÀ÷ê\ 6©pod\9fæ»Õú\14ß\aâ\88=\10\84ÈT\15\81\90á=º»î¥6£ªMé\13¯õ\15\80Ê*h¸Ê\81&\fN:\1f³þ\r»ùS ¸\8fÌi@â \93\9dï\95Y¯#ÕJ;rspÕÓ\84ºÝ Awî
-\12RÜûkJ\9bßð¼o»\1d\17U\990Ðî I!\95\18uõJlf \82\91bp¸\15%÷'\ 6\12þ\98x]\87SÎ\r\15\fYõÂ1Ð_Ûß46´\11\13GËâ@«O$·¡±¥\ 6k^\100%\13/ð\113Ë\11DÅz\7f(½âÇ(\89\83\0b¼\arq¥,«V¹ëM\rÎTLÕ\92\13\14ûÃÊ0\99²(¹OéÌ\13=\8b\87
-\93&^J\17B³oX¬d´#\87\ 2MýÉ\88\8b\90(&ª\1dô\17\1aã´|ÏÐÛ9Ç\18\1aÂBè{ÑùÞt7é1\ 4w\88åaõ\82éÀ&\97\ 38¥\f\v¤\9fÊ7¡Z\rŬ~ \82\93Úßs`ç\10\94\a%á®\1d6UìÛBmÂpD«p:èb×<Þ¯E\10µ\ 4}5µÒç|ñ\ ezbæð\ 6wG\8d´e1Þ\ 3n\8b\1cÑ)Æ´)þ\891m\1a$\ 3!O ä\96-\90û®.)Úv\1a\ 3â*:@\b¢\15©Äë\b\10þ&ýÅ\v\92\9e?\8bêá\ 4tîPè\1f\89.\81Â\8f>Íwüí÷\1eÒG\8bÖ
-\ 3Yß\91¥P:ÒÂ\0\80\16
-÷ aW¤}?\a\8e\86$\8f0Ç\aòKº\99\9e\b,\15$\90\ f\ 4úÐÎj°¤ø(hp\1f\8eL6°*\8a\1fë¦\ 5áýͤÏ\88.ù\8b|¨$}µ\8fÞo\83\88\18S¨üÖ×ïÕã¯\13M\r\81׬cF5.îm`z¿\9c\90n¤uß\86K\8a?ToX\1e\ f\90ú\94¡\10\98/Òïî\8f\v6?\9bYh\ 6\84f\1c.\ 3e\0ä\9c\8a\0Þ\9bMô\13\95íg6ßä\1eZ\aWÍ\83§üÊʨMÏ\89:¥Ëõ&<§¬2\93\8a\e\95#\14)"\8a¯XnÉ!O\89ô\95ýÎT\7f
-\13 7¹¶T\865nþ±}®\8c÷¶\14¸}\92ôìj\80\9f\8d¾\933×±³obHv\\90ê\1c:
-Ùý\a1\aÉÌ×\15«\Ç\19\ 1\9eUÀÆ;Þ)õU\90¹C\ eAUÍ\9aRå¿P©i\1c\94Ë\0\1d+'Úøê\ 1\9eÏ\0uÄï6qHd¨µcFþÍ*v\15\8d9s\7f¬'zóir\7f»\93M\ 6PpÎzb\86\ e*żZóös\9cÿ7pîd\10¬|Y2C\vµ²¸Õ]\95bUêN\13/ò\16Ãð±L¥\10\1aNSb}½Öx\ 5ÁWXX\89F--æH©2Z¿¥\90\80Ko\1dMo¦\90\ 2ÝÃ\9f¡¤Ë[ó\81º¡q¯\89?¿úh·©\83%÷ªtÔØ-1\ 3bý\9b\ 1â:§ðåÙË ÄÚÝGY M@ùÔ\9dl4ê¹z\v\95D\9cg;ã\12Ñ!þqá\1cL\11Ôyl4¤\ 3!6¨Uºo
-=DÜô\95Høí\8cøÎÔÙäN½OR\b\rÉÃzÀ\a\1e cì\87¯Ó7¥2\8a\90\8e£\bg8³¯ã¹^\ 4rÛ\ 5\17\®U\ 4\9f\91ø^\vdØîEÆ\12ZeÇB\82\91\ f\1emÆ5²\8e©µ(Ä:¸\95öNÈ\ 6é\açbyÌ\b\8aóÆß\f\1dv;d÷7#nÍ*¡£Nÿ\7fé2§Ö\0U»?ö\80¨B£$KÝ\ 6é\922È\8e(e\90\17n duAiN¶r\1cÈL2ØÇ\8b²¿L\1fÊ¿æ\8eA,\1d\13fØõ@>b\83\93µ\1eO\ e>\0¹L<`²]1å\96'Çö\94\¸JÌ\18=p}Zf\19J²æ\rä\94ä«#\85sý\9a\90\e7ØÒÖ\9eM>ß\90`\1d}7\ 2\rq\14Ya\fJª\ 1\ f9ÃÃkY\b¤äi\930©\ fú3¥Åv\92\ 2\8cf>\1e^b¥Nñ\b\11â\8bðfÚ®\1eJ\17\819´#¢O<ÉðÐÏÀ¨×{\rn\9f\89;\9a\ 3\7f&Å¿=!èT¡\11\7fÄx79æU¨Wèc8lÈ\8b|U\18+¨Ñdâþ`ÍÉ:2©Ëúêèh~³Ö¸\ 5Nt[$á%ôòݺ8Ïö\3a¾X»£¨²ì¶* \ 1(2,4ÖTÛ,n×!Î-¼\f\7fÁ\99sx|5|b,Ý##Âqt)\8aÄ>\95µ\17J\rÐ\18µ÷õ9p\9b\ 2§\82\ 5³bkìùó\8f¢îÄ8w\eìmÒ\18\7fár¥\9aÖ\1a¾\9eïpì®·W\8frB\9d1\8eàâõ|(Ø\99\v\83¿¨+Æý\r#º\9e\91.ø.aýaÇÕ6çhÀ\0\ fpí⧬zç\ 1¾V3_¸\82K\92Ç\9a\88öa\99\92 å>À\ 2¬\92~ \9cQ\0jç$ ²\11ëÝ
-MÌðþA~&'u\aµ'¯;,ß
-\9fõú¸À\10ÈÎT¬7z\1a¨ÓÔ\92\87v¢\93\914\ 5ròi\ e\8e\1f±\8b¨DËD\7fù\95\94v7*9õÑÔW\ 2\94?·¬Ú\96³ãA\85\87¢m"î7\8döc\~hâ¡<\88\13áÚR\8d\1a{Û6¸»x \87ìÓ\0UjÜDÞup\b\97=ñÉw\ 5ÅÃg\80þÔ¤\16\8e¶lpU8QÅ%l\15¾÷ë\ 6\19Ð23ÕNeõ\88äZà\1eý)t\9b±AWÇcû3ò¹t;\9a\92ù9\92\81S¯CæóÖtæd·nÈÇ\e\e·PÆ\85\9dÖ\87\ 3P_Q\19oÓ\11Áý1=Ò_@\93}y\98U3*7\9fü\90ñ\14\88Ï\eQÀÛ\96c\1c3¢\1a\ 1Ö\8få\9b\\90Nùó2ªSz\11í\15=V/Ü`¨Ub¶\9c\16Úfz=JJ,\8eJP2óú\96ü6ó3O2WÀ÷\87Í_b\ fW\92\96éÜ:\e|rf]\v·hCÈ\91`f³ÇÆÆ\83 KãËÔ\84~£þ\ 6\ 5!ç j\8f[$\1c¿äUϲÏC1\ 5\8b\ 6óØ»\8f¹´¹\91[u\\9d¥ã\12\12\ e"\88\eY¢\9cyúÚðë
-Ë×òhLùùØ\96½\9fê\12Q\9e[ÌÉÛK±sÕS\9b©2¼Æ\9b\7f\87¬Ìé¥Zij1Ç\91ÒA\16\92ª#<\9f\9c¾]¾K\9d\84&i_\89XÐv\1e\8e\87d\8b88L\bÙj-\84¶m\r/ÇÔ\9f\9a(27\8cÀ·ü6X\fa'¼\13²jo½ôÏÄYhJëÇâ\97HM»a»5Á\0[¦ô;p\1e\86¥ÊKokU\80tª¨#(:?[Ô\ 5à\90L! 7ä/'@}À1¿L\ 6'¿\9fÂ\99Ï\97¢\vus\1f\9a\ 5\8bÙ\96\8f\8eæ¤Ù\a¼«Wuc\1cµ(\91©\0°\94ÎåËè¬v®\8b*Þä@éO·ïbwê~º©uSÃHtlø"k\18o¿G÷ÑÂ\80Æá¦Ô8δÝMTë\8a*\b~:&:s\96avå\ f+T\ 5\7flXÚüK~¶Õ\pHY\10WÂýh\9aOÑÆ\88(å«2éð\10\89Ú\90å&!¡ï\97póݮƥâ.\8cQI¡1í£\b\9d¿tÄâ]¾ÙÙ©ì=ª/k ß\8a\82\açÑ'YÁÐ\v\16ÓKYŲÈ
-\vÅ·ÛØá\11\a¼Óþ\897kÍ\8c\93´\8fãvË^éÉw1eðÍ\92B(\19íO½KQ±A8\ 2ðéØ,»\9eZa:ú\1ag<º\vû\ e\9fk\9c\12R@®\8a¶\83\ fú\ 2>\895¯¨\99»vT|\8b¦\18õü\91¡0\80R°èa\90¼¯\85:ñ/ì\94P<I\aö¡}~\93oW>Æ\91êr4\ 2\84Hξ\9bÎ\93\81ô\89bÞ\13\8c\88Om\9c%¤n|\râ\v\810«\9bdhä\1cÛ~)£Ò¡*}\9býw0\91wÀ÷\ 1\ 4yqYÍÐÎÝ5\9e\82ÂY\1dââ\10K:±mö\17ïieθûSâA-¤ÿp\8f\0Ë"ôwа\17äU\1d\9dcou\81\11\91\ 62BÔÝ}Ù³Í\98\8eÏ\16Ô7\ 2\ 5ß-\11÷uÊôá:\8f@?èÅ-Am×Ïéb\9fÆKÊ°R\ 1c\9b\17ʾ·\7f¾:Öbð׫\ 3\8bàÐ\ f\98ÓdÌK7\90&3,\89¬µ\99\15\80\9cTí/¿:ùI\91+á\90YÝñ\84Ë=;\11®Ô\9b\ f61¥\f8/\12âP¯&j$@\11\ 6\83¸3\9f:\18yO\0u2nFWþá"áOÿþ\eûà0JKYnn\16\ 6\7fL!Ô86Û¤O\0æc%·Ë\ e\10#XO\86\83úAEÝuÖ½È?·P\9bH(\87\eÏmh\1d¹\eÃ7rÚi#.r\9a¤ x\86ç\95 zs®\8f_\80\1e~8±oJß^'5!¬\ f-}gí(\87LëMâÿÈn\81AÉ]\11\8fYhV\7fí§\89C\94beîÓ\ fä8,°?\ 6¬\9fÚ\82´èÅ\8f\82(\1e¯Ò\19Ò¨|¯¯\9aOçàèªLò\93´#g\85Þt40D\10 Ĺ7\füC\14\1c\92\97¹G\ 5ÌL\ 6¼_Jõ¸òËrJ\14b \ 4~0¥\18\8cÆ.!m\9diMç,^Ê®ªògP\fD\9a~\17q¾¢k×÷¨À7\ 3÷ô±ÀíÇ\9c\19SÃ\86\931ôdF^\¢EãóÞSx/.ÛûC¯ÇÒ\eb+o\ 1\83mo1Z)wl93Ã\8b¯màW¬ÊØÀ@\84¡ä>\0ñSë´<\1dô:\ÖC¶®çg£\L\14Â4S\1e\86\83\99jj*(
-öÙS·Ô\11Þ²åMï\rµ!vu\ 2%\18Oÿ;\9bÍ\b\13
-âYK"ðb¯}nL3:\e\1fÏI9\8b©þ(çä\88 ×]z -½Æ\86ÿ¶-\99<ï\bmì\ 4\8fVFkÚ³£\859\ 4Ë\81ÿ\ 3\92"ø\16f\9ek¥\9ft\1c\0Tlr^±P\183\9eS½¬[ ^\ 5\8d!=9Í'IN\97½nð~`¨=£XI´¾\11Ã\9aaÛ\0?Otµ\9f\ 24\8c\860\1fÐä%pÐ\a¿\e°\17ÒpÌÉÀÄAÐɸ\1e¸]'ÖKöm\18î\ fÄ\9c\12\95\89$pÀP$\Gã*\b\8e\0LD"ç\8dU\95\99J\0ÿ\1c\ 1²þÅc±®Xoxª5æ}4{&òjßÑ »+=/\9d-Û6\b=úk\7f^NÖ#\aç5.\90ØÉ\7fA"Ð\16 R\17(±\99¤\9dS9]\18Z\94O\ 2\93\99\19Áòs\8d¨ã\90\1fÉ\87\983)\f%¤\8epµZÝQþ!\90J\1dè¡ÎçI\89\8bÂPPk©g(.\9d\9e X\1e_H§_è>\ 4#DÒ¯4\9a\90\9c²\7f\7f,\ e½\1c\ 3¢Ræ£\19\ 6úÎf\ 6?E\12o¤@´\18Ñ1\1d\0[r«Ö\93ÝÄ«ûöá£\80Ù\16\84êBdXølX\88ò(¿^\92q\91\83m³¤'Þ;ÃÏó\7fõkR\86¤½§\9b\10c1\89Û\víA@©ê(Í\87\9c¼<²æm@\89 ]tB¦âÆ?\88ç¤\80\9dLü\91p\0¡¾\98Û¤§BÑ\98ÙÎû\92\ fçïz\v\r\ 4]lÎZ\ 3\19ü\87Ùt\7fa_\91º\1c>,ò'Ëë\0õ\f_8æzyr¹bä1:\89ïLµn¾.# 3h\91ËÕ¦\86"BnAXqÊ#Gù_¸Zd!\89«å\bÛ\9c?|R6\88iù\9e-ô¼'ÊsaiÃ\f²X
-H ÖªÍ{\1f\7f= y=Ó\bP\9bMÒ\ 4Âf¥\86`±@°\9aìÔâC\12d·ñt\93v\824fêæBv³@\17\9a«¶ö$pËßO\18"\97_8OõܦßÖ\9d\9d)3¯oö:F\93\97LT.\ 5sà\16\90íÔÈ]\139Êv\ fgö\97ê\91ñ\860_!
-{>\96\1et#QlÉ\e°Äæ\90»/â,\86fóG\18d¶¨Î\8e\ 6¤\17iòA¼>Î\9f_ñäÛSáÄ!¥Éûѽ\86Tò\94\94åÙ@\8bE\8c\b+Ï\12©\8bsüÄ\8aóY^\18]Ü\1a·Ù\89\ 6\12ì &¾ñ*$ zlEü!É\8bâäñÇ;ÞKM@]Ur\19-\84·\90v\7fa\15z\ 60!Ï+a]´§\9e 'Z\ 4÷gU\896\89_4ülÝr\93ü·>o|\ 3ôÛ\8döÔ#lL±ps\1cÞoP\1d\993æ3r\1cÞ"ÅókÕB*þC\12èØ*\f¥\9b\1cJ×å¸\a7¸J Ó*S\19)ýGB\ 1a\9bý\1aÌöò\8e\1eF¤3ÎGL-\8b
-*Ã\89¥s
-\97F\1e4~:²2hÙó°/ø¤õåÄ8[i\81c\80\14'\ 2[\1d\16À\9fê\b5×NI\8d\12ÍhEô,\1dÔ\1e¥\ 5,\1c\99>k](&N\1f\842ã\9e¢5¹
-»p\8a\94¨\12"ñF\132÷g/¯\bz\15¶qÓ+§>ëJQÕ´¢òôÖ\9cw\9e2Ù-/ÖÇ-r\99ÍS´Ø|È7Þ\93\19\87
-á´X}¦éÊ\8f,\93t\fbWy`
-oH ßç\8f\99{\11\936_\8e\88û\16¬\94»\18Z`\7f±={\9b\ 1㤽²ñ\8cÒ\ 1ëj%õx:\86½! H3Í\1f\1c\v\8f\8eA#\ 6¡oMÃ)#\ 1\91\9f\8d\11\ 33u*UùÅ'«\8a\b}\rغ\8f\96ð%\8fãZ\84#·\ e\80ñ|ÊÐÎm"=\13zñ®g\ e\92ÿ\84ZÙâl3\80ÍÀ\97\9eÓòdw8+j\95^|\94M\8eÖÈ\15¤L§¦F ]÷ÞeZ|¯
-Iö\11JM\83äWÃãξXøÐ\a\14¿rÒñKÕçÅ\10´\9d·\ 3\8b¼\v\1e3\86Æ«\96è\ 4¯!\17à\ 1\1až.x\10±\9bÕ£\19r\81\80Ò\ftPò\9d\èçÑúr\88\ar\9e°\ 5û³Â2gJ\92íø\e©3¥\v°S\83Iɾ\92\8d\15\1c¹ÖcÎ >Sj¾5Y\11ðA>ÄPs?\13,P? \1dsy;\ 1\9b¹æ2\8057ÁÞ\fϵ\rö\83-{ÈZ\ 4D\170Yªßï]Ü[s\p\15\9ex'\98"n\e½lðc\9c¿\0ñ5V©&Ü\94\ 6\19B+±½ÿñ\94p¤Ïï\11è\8c\ 3øÀÊ\94S\12\83ÆwXá!U\80\12*\vÍ;ÿ\16\1e\83PþÄé-ØD°Í¢ô\ 3(Û¥P§@ÆUåzdÅnBÀ\Úu\84~K\e~ò\9c9(4\9fkK\91î\96º\9d¦A\94ÞfG"O\10Û³\12/\8ea'\9c~-ªåp\8diá.ÖÆ\8e\16ÚÕÚ³\aò,ú8Y\89G»\ e¤]\11ÓÌ\90}¾¿(£\85?\b¥´ºµx\7+s¥\94ücïô6")ïõ\8dï\ 2×Àöu\87°Úy\9b\159½k\87\8ahL\7fî®%\98g´Îä¶\ 1=ÙÞË\90Þ:\88©Z\ 5\84ߦW¥.´´a»¼\ fd\9c\90\99)\93V°t°ê\9cÃ\1fnÏøÄ \94¤Yñ\9b\93K>\92¬Ç\82VfÛø\9bwop·mOl\1cp§XÒÀý#ðù\r\0Mùx\1d~DJÑ\9c\8c·«û\8b[üÝAS\15åE4
-ªDÝ\11\98\1a#l¾@Ʋ\84'/\ eSp\ 4:WÐ]Ái\10ôB»\18\16ÎA,ù\8cg`\80-Â9 \ 5Ý\88\18\96\17\_\\7fß7Ź B\89©$?Ûõ\95É\9b:ÇÛ\v·´\ 3º\ 3¥oÔ-ôº<Ö\13Éaa=ÅX»y\víÙ\1dò-å\r$I\ 6hÖMô\18 iEÁT\80á\85\v/õ±\92\10\ e¤
-\7fظ£\8b_(¡\18s\87ª\1a\99\1e\eÝaZ©1àX\11*ñ\1dçfë\89\97°x )\f?ç%\19åÆÉy\18]ýM¨\11\9dOño¬ìQCE\ 5¶\14\ 3*\13\83âqÄp\r\17I\92ÍÂéº\83¶Dó-°üÄ,+¢¯Ú~\ 38\baÜ{\ 1\9c_nui+üg\aa¤\1cqA\8c~\0\\ 2\ 2C0\ 3ïZÕ×\9fJ37¨'\7f\1\7f\15¶=ã§\18«{¥\e=
-ÖI\ f¨R\8a\82\99\10ù¸o\e\11h\8a«ÆË\7fëò<\98¼.-¨%ë\10MR'@Ü\82\ 5óB\11d³3#ÊûË\95\97\92P+Ä¿*Êû9£l]%\91Â\86È\8cL\8bª7Ð\83~?}´\90,\95ª?\12\85\8f\10ØúðA«'Í@Ê|ãÊóÙ\1d\9c\\81\17Ô«qs)W¬:\9a\88°X3\86½â\ e$sJÂ\90X-\8f Ý\8eçHV´Á;\ 1¬\8a®OrtW\98ªù\80ww©Ôc\1e\ 6©÷±ö\12?^\8a$\e1k\r²0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-16 0 obj
-<<
-/Length1 775
-/Length2 594
-/Length3 533
-/Length 1902
->>
-stream
-%!PS-AdobeFont-1.1: CMSY10 1.0
-%%CreationDate: 1991 Aug 15 07:20:57
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /MYFBJI+CMSY10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 15 /bullet put
-readonly def
-/FontBBox{-29 -960 1116 775}readonly def
-/UniqueID 5000820 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÈÎÙ°\9a'Z²1\19NÏ\82\93R\ 5\82oN\97]ÎÎÇ+,ó¡\88\99ÌÞ\1fÙ5Ð\9d\81; lƸ<ßO#¹¦\r´\1f\99v¬32cÉ\bÜïͽL\84\ 2í\0£nt\87cM\b\9fÔZô£\8aV¤A,;\v¯úëq{ðÞ\9fûz\84`¿GZg\18°Ç<W\11EÐ&\95rvS\ 50¢ûïÆÈöpRx\8eg\ 3»^ä\953\87\vÊ\1f\11:Ø7PÕ\97¸BØÙlB;¡'=Ý2ó¥J\91*D?ÍD÷æþ9V°ª\1exJ®Æüà\8d®\fvÚ\9d
->ºW¹\8ab3ÙéðÃð\ fÌk,j\9b¢:ó\89æßÿNþÃÞ\ 5Ö'lkä\17p<å\b7\7f%\96\ eôí\83´\9b\ 1¸só¦9Î\0óV"\9bdw \81\93?ï;¸\ e+\9dÿ§÷Ug±úMs\9bw/\8dgNVu4ÆÅ»ñÏaSr¾ ±\84r÷ªX¾\8c!m½ß\81Ì
-\86¶Ø1\8c¦\8fâ,\8añ;T×WoäÊZzù\0^¥ÌNÛyÀ«f\8eOìK\7fZ\9eµðäÀ\88Í\81\8eÌOëK@ì\8bÒ\98\eò3`t¶LC\ 1ÃÖ¿\1d\8bÃÇv¬~·\9c\95#,ÿ=\ 5Ö\9f\88×Ðî0!ÇKû`¶\92D\7f\93\9d\ eª¦[úp\19\ 1\8dÙ\ 2\93ÍÍã3$\89âQ \1fZ\97\1cµfå·\14j\90²\0ô%o\98\rÈ 9\1149\8cìY?z4Û@ÒÐá¬M\16ý7£F-\12[ÈôE\11Vj8\83|©\84\15gjs 0ûSaÎÅs$k]\0-Ë\9a¼\1c»I¡\80ð\88ûe\8fBÓZ\88ÜÌÙ÷}\89T.íÕØÚ¾â©[g*K\ 1\ 6T\80\92\ 1uxd9\16ÊU3Röã_\r8ýS\16T\97þ\18\ 4ö\97rwë Í\12Køãù0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-33 0 obj
-<<
-/Length1 1546
-/Length2 7957
-/Length3 533
-/Length 10036
->>
-stream
-%!PS-AdobeFont-1.1: CMTT12 1.0
-%%CreationDate: 1991 Aug 20 16:45:46
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /ATVUDO+CMTT12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 34 /quotedbl put
-dup 37 /percent put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 56 /eight put
-dup 61 /equal put
-dup 62 /greater put
-dup 66 /B put
-dup 68 /D put
-dup 69 /E put
-dup 71 /G put
-dup 72 /H put
-dup 77 /M put
-dup 83 /S put
-dup 84 /T put
-dup 87 /W put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 95 /underscore put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 123 /braceleft put
-dup 125 /braceright put
-readonly def
-/FontBBox{-1 -234 524 695}readonly def
-/UniqueID 5000833 def
-currentdict end
-currentfile eexec
-\9b\9c\15i\ 1_,\1d+õ`ôÀÕ"WºÍÖP
-½¥í\985ö \16ÏÈð\vl\ 5.×j\87\85kPôØ\rúëP\8c\97ø(\1f?\88±~M;\90Àö^Ãyy\1a¬Ü\16*f˼[âõ:\8dç-Ñ\13µZ\ 2/¿îe\8c¹_[³+ 5{^\ 5\ fÝòd tp¾ñÅ!\19¶ûÕÇ~¾Ùd¬Z+¾Éسä\8aå»\0:cÕEwK\92+\9d_ö°\ 6nÎCdZ\13\18y°2\13}m\823\85þUó@-U\7fÓ´Hkç\90\11Ñõ¶gîØ_ã
-²ìN\1c/OçPÏ\9aiPdX\a\1dè\89baÀ\ 1±Â\90\93\7f¤*\1f¨}ä\ 6éøjL\9c\ f\ 3ö\9fºq\91\14ø®Q\ 4
-L\ 3¥\8bo=à'öro2t=Îs\95\14ÂÆóÂÞ\1aíÜú\8eí}¥mÖ\8d¼Þ3Â\9f÷¦\94v\90Iä2^Éa²ß\16ÒFñ\87\81ûÖ>ìbÂo\1d´\1ejfj \88c\82Üë©\1d\8f÷ÎÝdÝÈ¢ñ_ã@v dÄoëÑôÜ7\a®Þ\fè¯\16\eË\8eJÚ - TºÊ[ç\1c(«\8bó/× )ª\aò}e\8ahôT¤¿8oc\14"M\16Çð¨bOk\861\9aN/Ñxõ\96ó²\r°2ê(ÁW¦\8aiúÒ¼\88\88\16XÒ(l\rNða¼\a\f1Eò£~¾À?QÞ|Ú4Í\97~î½\86°\ f\97X³¤\96ô\1d\9at'\9eóÆ2-ÅIEùPbÅóz\1eQÏ~¯Eò³cK-}\ 1ì;)\8fó[f\16Í0 à\96öƪ+ðLJ\93aÁ\9f<g¢\8d\93oü\81 ñäi\80²\9bõ@GÅñúHæv\11§O¤43\84ø\ 2¤\a\9b(¹F\81á\19«\f\16\92Þ[¿Bd@\10#Pl¸\a2ÞÆM\90a\86\9c³Mé$ÒÂn@K}½\9bå[\9c\fZã \\15Òx»I\12ß\14\84í-s\12\8e]\9c\1f\1a;\9aÁ\9e,å6l\96dO[=>êX\9c®ÛXoÙ¸ôß2ì\91\ e\9bt4Õ»å~\ 3\89.°8\90V}õ¸\11¯ Ú^\92\9dEjó``\92æ\9d×ý\ fÕ\ 5¡4<\14=\8cØSÄ\85Ã\ 57ÄH®¦O1ø\87'V\96£'.\0ø\86\ e`¯±©2${pÔ_ì\9bu\83M¡oé¶Ñ\97}lòQV\8eÆá²2\1f
-\16\8fà\1c«°Û\85Z<\93Ûb\ 2\14gÃ\9f3¾4£E¨4ÀõpïÄæ\81\ f\9bý5?$\eø\96æ\0\11\1c/¯¢çμø\93xA\8f\7fµA'\ 5\82\17 sx\8f7ã\15µT{Ñû`t`¯\1cZ\ 2[w".u\99ñÝÏÕ¦\ 4\82^D\ f°¥âÈò3zj>#Y\1a$(µ\18x\ 1xkÅ'Îë\aàG\9f/F\ 5\ 6X꣪9§þ£ö\ 5±\ 2"{iz\96`\8c@\11\18¿\1ejàìÄópÁ\19yÎ:\v R\8cµQ3kèoÎÔVék\1aõ
-=Áʹ:T»\1e\7fwÐ\87·|\85ñ¥\ 4yBi;\ e9lÒWRxý1Ú¦@g\915\x8\ f\9a\8dëó\1aúN)\bvn9o\8aC´¸\ 6OQT~=Üc&>¢\86×r*¾ \12¦H¿æl&Ä\83V¬"\9dP0÷s±¡\vv\ fÝ\ 34ü6ÖKë3Sþ\11l\97P\a¿\1a\91ç*×JîA`ꦺ]\ eÊJo? \ 5Iâÿ\vÍ{Ò\8e\8b\95$\ 5\81\8dqÑEVÍ.\8eVQ\r\18\13¿2\80\10\1c¾£È5\19ï\8aP\93ºó.߯É,]A½z-\rõ Uu3ó¦Ó£O\15\8d"Fz§¤ZÏ\9cïy\97wÏïv\vîVe\88bO\15j\8eç6\12#\1cl\15\1fDCj°\aw¿Y¿Ê6åP\86G\98\rGUSÂØ\ 2?ôÇW7m°ZÓ\800\1cö\12\ f\90û\86\9b\0\15¨£¤*îfæ¹ô}òWæv\10\18½om\14yOm\97\8fuÚw®\8a@Í{u=\85å\ 6ÙB³\96;é¿2ýü\ 6}ã5zi\10´Êü\16$Ç\em\ fB$¡Ý\9fÀ\rõí¥]Ïä´9;Çõý"î³ÓB{{\84<HÇNNüÊ\ f\0C<¸\90O\1c¢5G¢\90èíìÿr© ÑáÚ\$\14&ãk\90Ñ\93¬ò¡ZvïNõkê\18\ 4skv2\80¨\vö\916y\1fßWÔ\8azâ\18FÈL³qÓ\94Tµ+\f\9b\85\8d%è\93l½X=Ýzÿº[\ f_2©5\7f9K^ÕN9\92X\16\ e1çnï!\18G\96?Éó,)NaÖ£¦²\90\1cÂÜÌt\v\80²çI\f\aý\1a
-\0.É\92Æó\9a\ 4ª\8cwÿÈwäíWó\13\8eô³ØÉeè<fÐoCÛà%]±@,¶V\95\1fG³rw|Ç1WÈ(ÿªu\15á\0¶SLÉô\r;ÿKCV"+\ÏLÂ\9f\v\92\97ͽ)¥Ò\8cx\b\86ò\89\1d´£dåxJ'`\13<f>b@¨ì.%\19Ô,T\83\90R3\81"RÞz0çë\1a\1aK¸;5
-\8aÝaô\9fÕÓ©)¥³«o¡®wE÷ÿ/w_W|¼À\98\9d±\81Û¿\vèÇzúM9«ËMA\94ü-@C\8fû\eØÞâ!.MoÁcw{½qÚÌ£\ f\99M\9d±J¡HÀÙ ±3p\8e7\16·¡\14
-%WHEÑÙe\ 5˱×\ e¾\0\ 1\12\18_\94¼\ 1\ 5áï|\81Ãð\\1c\1dM¿,±\96êO¶\aÍS\ fûbCISÃ\92EA\91L0V»ËEkØ}\17\ 5ÔçËþt msi\81®\137u*\99Kð:Z;\a^<\9fæT\15\8d¢\16]\7fdt\85\18·\96Ö³a\ fõþ
-= z\ 2ð\10s[¤Ò\16ä½8\1e9WLyK\94ªö+Ï4¿\8dI\ 5Õ\8dNC\9a+2·\8b÷\86å.lû©µ\8d3\8dx\18ù-|ÁKg:þ\8eßÙÖ $\8dXÁ-\85ã\8cH\9eñ\9d\ 4ì×\10íìËôéZdë\9a\97T¨\bxdÌ\9bØ{ϱ\85"¸öý¸ý\8e\10Dàõ3·\94s\9fñf\8f\ e\ foT©Eý\7f--yÞ\9bùj$ùá Û÷\93]üö¸,s8O\11\19%\99f \9a'\3ç׿\8e>}q?Rã.£ÿH¿\97´\9e+¬\80GwL"Êuþz/\8cR\0\1e\f\ 5>ÍëÃ\93\15.T4£\8b¶9rs\98q÷o¯,ùÏ\1f·\94\8a\bºFX\9fÉÓâ²f\16\98%\1c¿\eæ7
-\0dÜ\18ù_§.äµ
-Ù \7f\8aè?©Í7ÿ\81}5m\84fa]ð\9d&%ÅôÜ;ÐÜA\1a
-}\81\88¬Ë(ì¬õ\ 5[ÄÞÖ <à\8dYU}Û©Fk^\ 2H|b§\9eÃÒ5Z«lO\ 1`\14\9d ÖÆ¢í{<0}W:J㦧/u\7f²ù¼çR'^tÂ^<Â\aæá\14h\7fð\12y¼§\84\ eQ¶P¼j\f\19L\18te^a4\18 âûö`:,\82ì¨gÏ\ 4Æ%^\15\11\eç×Û½_U\1cmþ\bò\ 5\98Ãù°^2}\8e\e\ 6Ü¥'ýR¯ý_p:Å7\9bÒ\\v\8b\87!íG\81>É!ª\95\vÖ\8fI\91Î=\aÉÿ ª®\ 1P\9ee\1d#Þiè\19Ýû\18¿\1ac@J½oB\95\bþ\eÄÓY\ 1¦Ü¬4\18À¹Ó\ 6\9f\82¶'³\8f\e}a\9e\ f\85l`Ú¸\9ari¶¥«4³ç3¼\ 6\vY@=Û¿\86êv°\ 2ÓÉxÖZ\ 4\a/[èHèR\9c¿U\92×\8cl¡±ól¹®Ò\82Þ¬FÏÌÂ\1dÉd%HÛûoîµ\17~?\`\18\vmqåµ)qZ&²Òï¢4-|b\90ÍÖÓ ¾Ç2\0M¢(Ýæ\9b$+âýÇ\8b}\8dGYÙ\r? »ÝVÕÝF8P"}J\87ñS\9c%\f_ªzÏÇzyxP×\ fe¸êIÌ|GõÌñç\95°\13pùR\83»S\92íôhGÏç\93í\8d"¥²Ð\b
-c(\ 3?eªÌÇZ$¦k¡®¦GuOéªrsÂN]s\91Ó{«\88dû\8eÄa¯æø\ fßg\81¢4\95È/MK\953F\1eqONÂÙyÝÆWÜôÉ\99\r\8e\82æ\ 2ßç\0ë<gµO@7Q\94"\17ïÉ\8b}H\99î\8bk\8f']û\84\b\ 6ñö&è~ûÍ P!y\19Ó\0¿¯\9c}\9aI\97\ 3x»!ï6\8ch(Õu£,O\\ 6\97é«!ð\13;0ÎôÌFhã\97\88\1e"fIæmÒ\8e@ M®f«N\1e\a,n*¸\ 2£U \15Îw(ز«\9dÈvMÌÖ\86\ 1Æt»>:\f\a\19:=\99aÊ¥u»·¬?\ f\84Y9'\M\9fÛÔ@Æ8¥\15É\81\14Ï\18¡à\ 4˪Âm´áÁ¨\1c"C\96\18p°xa]Vó>1\16½\96Ü\94+6\96îT4ÿ[>¢\7f?\85\8dÌi>Y,3\8e³¬\11'8\97³ÁÌ\89\81í>4Õ6BÀv\89a\80_\a\18Y
-õݱ¦¼\86ÿÀ\7f×íÝÏ\85Í?\96_\a§\98éé\evç\85\86|%}ÚÞ\7fù g\ e>Þ¤\13¯I\88í\ 6¯ÍC¨¾æ\prq\ e \9cÎuN¾\94Wé\10\13\81\8e4~9aÈ\92²+\ 5³êZ\9cÊÕÕ¡"ó\96r$\88\11
-/\ 2\15\0\8a\1dD±ÚL¶\94x{iÎN\95\88÷Í¢>\90\80í°\8eô\90Ð)*4®¾7\ 3\9dþ\15[i\83ÓO)¤ÿgÇ\fcãÕ\19k \ e´¹KÆÇ}%ËMÍÃd²v\ 5\fBÂóo\97\85ðÙú#Q\17\96m\93°£%Ü×kW\0oûÇ¿c Zq\8cÁ\8a\80\eC°4¶²\10~Oqï\9aDp\19cÅj\18ÚeÛ\ 4\ 6P\7f\97[VM\8eÛÝC´îs\ eS3,²Y\97'&w´\87æd"1p++\9f\81·ÒðIá\94ß}fý/Æ\ 2[4e\9bë\9cþïUÛKnª¿÷NÑ üd \7fÌò}¹\1cì[6\16nÅúØ,\82¸\bÔ=-Ò2ç0VZ®o\17\1eg{\e\b9sé²S*\86_\ e)\ 2PÁ¶uc\82ï^Àa l\90\19È\7f\98¼L_û9»º\\8d|z>,Ýý¢#\bà\9fß\rANØÿõ\83 .,
-¹
-ÇÉýaM[Âë\1c\8d?\15\8d0½AáÑ\89Ûmd\a_Ç\ eÅ\90â\ 4\f\15\ fë `0ñE¯î±\93ºõ7\95ªÉ\8a`Å\8c?³\vA\89TïÕ*4:áâÃèùCú¿\14dʽ\1föLð\90\10\98\9e\97\8fä\97©²©\99Ú6\97/åÂû\90éÍ8ä\12\83¶KÓ\896¶cN\95`
-\1f\1f/j\ 6ø \ 4±µ\ 3é.\99\8b»ÙôR\91\83¿ñ~g\93-Xº&:¶<ìÂ\84ThF©.§\ frè\ 6\83A;úâ\87ÐÜòÕå\19\9c¿{ÅÑ\82=f,á\9d±q\ 6·#ñ=6\86Í\fÿÆyÄÏ·\ fY\9cÚÃC\1d\17{¤´j¬Ñþ@fºÌU $"ø%#\eþ+p5¦W\10\1d¼è\1dÜ\95°ô½×nMÕæÛ\axOÓk\ 6^cjy·kZXiö\1fí¾\12\80¿-)_\99
-u ÒÜqh\87²O\88Ìc\7f\fÃ\1a~\ 2þ¦ \a+f£²\12³w\19YÁüØ:ëði\89Y+2\120\1a\95`\9cðP\892c\eí``³´EBL\81\94ýð=[.>Î\96ùçµNÐ\1eô&åfQ\9f*\ 4\ e~\1c[\0£ò4\13¿}*í\19íß\e-V\12Ç´c\1aêmßO¯#2`Xiù\ 6\1cH\9b]\9fd=\eç&SÅÍ\12#ª\ 3\ 3õÐy¥\95F\9a§\96\96\ 2\16\1c¯\0mQ#ô½\v[|©ËC\81\94PÈkÁ_á\08.¶È\1f^7U7¢ìù\vijbk8\1a`ÚÂ&IÀTc\r5.·8râS\88,\ 4ÇÕJU¿´`cê«ÂøT\8bð\fp´{î*\1eà\90S#\97ñ\ 5D\9dd-çÿo:«pÒ&Ñl#(ÌÑÆã\1dþ\83ýÁh@;!z=ÆÒm¨\a\80\1c\1c\10\v\ e¾-\ 3?ÔÄ»Y\8c2Òá°\ 3ö\93\v\9eýå\ e×S5R¸´\15UýÃë·ÈA\94JH øló/KÒ\ 6\13\1ew\Þ\e\1dî»$å@ùg¯ýr*G·O>L^â1Énj;\10f\ 6r÷PqLeò\86\97¹\ em\e\16ÉÉ3Iánòú>¹Ù\8bªö\ 4ÎÆbÎY\ 2ìðé\9aQñcØ\92k×\85s°\87Ð\8dÇPÏˬÝ$o\1a\85\91ú ¬g®\14\8a\88Ç\11sßÛ\AáÞxìëüî\0_àÎatiµa@0ÅûY\97²n¤\ 6\8e6S\82i\84Eë·`E£x\13\98\11t×7\97\0Ájï\8fïÑnÄ-ÖÞÁ©ü\80ª\8fê\8eųìúö\81dæ\85yÈ\ 4\156B\8fºå¬\ 5äþÕÏU5öÁ\9f«ÀZ#¶f\89j\r%Îp¬n\89\9d\89\80\90^\91æö\93\ 6,AR§ß8}ðV½óâã\83ñ²òÉ\ 4\1fG \86~9\9afP\10ñ\1f÷xj\14\ 2\azó°in0@IrxáÐõX£\86ó¾È½\r\99Û¯híTíɹ\\a'P\7fÝyzª\7fi\R\ 6E1ßnìùtI\fêí\ f(\ 6È;\921\ 5=.eùiÑc\11\12\ fÎrªÆ³5¨ßÚì\86zå|\85/\19¼Ä·\89\8b4×Æ\)zîdð½u¦à\ fzÐ\8eÐ{t®\b\ 1ñb\1e%¢£©þQØåÏ¿A n*gèé\94¿%3?Z\ 5ßÐiðËEÉú/\8dáÆñ\13\89\86\8aÚòéa\89øÓ¯'Û÷ùQh\e\fêO¥í-\94¥Ó£h\96-)\86Tî\88ùþä'Ý+ã\ 2âDa\91üïßíË\13\8bC±NTàÕÔ\8c§x\12¿\86Ò\v줯Y\88Q\f\1cæWò§ï>bÔ\81@Ý\92S %/ \0ÞC°ýÖ\\12ú\9fkäÙm¦RÌv\vÛd\15èt\9cT \8eÉ-Ŧý$\ 2ø@Í\1a\9eÖs\7fR\1cã¹nÔÇ\ 3Ýxä\85åië\0\9cO¦Ð\8c\86\8b\r@\10f0\12Ìok \84^|ª\13½â+\7fð6û\95ú°\80AEu;³ò\8b\10yC ²\16ü°n\82Æ:àÁAÖeè¡ è\eÙp0j\16;À1l\82\923\9c¾ùÞÍ\84û\9c\92\91S!hmñ\15\ e\91\a\19ÇÊÛ;Ô\7f\89¯ç¸=\9d\85Íø¢2cÞH\10"êóT¹ÃPÐ\0$\7fèß\91[\ fÄéEK5Á\99Wxú\11±lt\13ý\9f9Qñê@©\15&h?h¤ü\1a&\ 3H`ÚÒ®7óIËàg10L\18¬\fr\ 1\8dv\ 6ü\ 1ô\b_}w ðDó):£øÁÚ\f\f_©E\19ØMbè7i\10\ 5¤z!Ttô¦«\93\93ùÂ:éËÓâx¬ôS\\9d[¼1å6HÍ\0åö:qR´,\1e3k¥5ÏfDlß#\7f7Ðã \9c¦MVñ\99øÍÍEV\86ÎÏyÿ§\r(Oó·}á-\1a@'jêæ\98-\83ç7DK¤¢\f±fª{Ìd²\8dÎ6\82\95\94=æ\80nÕ\86V\86[Ψ)Jê/&\8d:IpÉz\bo®zF\8f¤u½,ÿb\86/~eÖäA\80iÉu3nâ\7fK(\91pü\82¶\90ÍñÚî4\10ã\16iØ\ 2
-\1f\14\85óãµ^òh\1c-\15\87ñÙcÎySh\96¿q\98Ç^¬n\91Ç;\87Lú\947"Á5©²iZ1Õ¶-c½1D\11NMë\17\vÃæ6=¬ 0\ 3#³Â:G\87\ e)
-\99\85\09\1aZÎEi\7fBÐÀä×üIL¼\15¨\85\92J\8a\ 3 Q\ 4PÒ>ú3\16)É\84\8c\9f\Fë©[È+Ñ>a\8f¨\15\ e%\0\17okE\13Ó#\0\93@àô¥DÎR\93¡õXÙ½\1dE\8b[\966\12î0³ÐþrnÅî\rÀ*°Eåß÷¾Ú\ 3\1dÚ\f\9b9c\14\84¥ éän\1dÒ\8c \9b/¸Õ\94d½îW5`aíQ\ 4\99\f.P\0T¸ZLwSà-ÍNlªB\9e`áçCzÖÊ\\81@!^\16\ eéi.Lº!\8e2îè\1d\16\1f\1e\96Ú¡Óày¯1\18|æðX«¡ù¨\13h·ùÇ[J\13Ä!ó\10ÓÕ7Õ¼.ÐpÀXì\e&'\9ah\83UúÖ\ 4Å·\89\ 4Xª7òH´£s¼\85Aë\8c\8buÊwx\87'ûä\97W\0\93\8d"\8d;^\19»\16\v`NHÉ\8c%¡\95²ª/öÆÈw½A\90ÞþoåÆ\8eç\ 3Üã@\ 5ÿøÒ0\eYØo\ eê×\84\8béÆC£\97ôábV~Ô\1e\19Û\86Ë\9då»l·¥Ò;yq\13C\19û\14µoöÃ\ e}Ï÷\11ã7\vC§gÜÛb\ 6¾\8cn(\9b¤Àr.j4Y\8bÏñ|FÙÔØ~\8cÕE
-)\86Là>\83O¼x«^\rA¹ßZ\9d\ 4®x\84ÅÜ\91yÎ\15¾ÕJäí\84\ 3]XKma_JXº«0k#µï=Z\ 5kG\ 2\93+p´ÿ\13ªß¼ý\8cl\1fìRò\0Ρ@Xè^¹ô0üÍòØQ³\13\94\99Ø\12Çå9Ú×\Î\ 3\95¡\ 2c\v¦\88Ã\95þbH.û\89®X¸Ñ\82{ÑÁ½f¬é\17 vª§\14ÔÈlµ#/\16Ì©B\0Û6w6÷\13ÕË\94AÚÉ¥ìJi6âaòZô;ø\82\1f\13j(ï\19\8e\85Ò\90\99W\93W¡ê´\ f\ 5\9e3¶\11\9eÍ2\18(µ²uë\v¯V\8bG¤/õÍØ$æßcº\v-\1c&æ\17\7f\1a\f \10l°¡\0f7pô.Ô\81³1\8bØ}\94ïÅ£Æ
-ڥر\9d\96\ 5eª~º\84ÂY\91NªXÏôÅ\82r£h\1d\8bX \13\88ø\88\9d(\9b^Ê\0DüoH5¿}ìk'\88¾\1f\16¼ç1®\96ÔÙ\eý.ïeðÆ
-TU\98:5\ 1s\v\7fvÓ×\13ëd½Æ*(êõ\8bF¥kÞ\16\82]tµ®\ 3««¢\9cf³#\18A\95ó/\ eX0:6\eL-ùëÁäé\10\93)\9a\9e$l®02ö«\98§\8a\fî<Áåu,tÈmJ\96\95$\95x§xjÀ?f\8bU7¹e\8bmèߧ;³¤\ 4>\95\ 1\97ÍÛ¢\17F¾¶\18\ 4þ ¢àÁ\vá×å\ 3î\v IÖïøÌì,À\bnéwN\ fä\f²I\19ÛKÝ·¯©±Ñ\8a½k}Ý\88\95\9e\1c\r\K`hzñd\ eHÐ\1f\ 5\95zÞh\1e\1c{\18ç\ 5\94TÑO\97Ø\1e\9d.\83$ÄçÏ[\84PËÍecl\a³&!øÿ2ÞÒþðrm\1aêòsö\1e\91Â\13fh5äbÓu^º§´8ç6 \97÷öt§²\80\ 6\fÖÔÔÑùÞùÇ\ 1+\94S\15Îe¾\10Q§Á\98\eg½æ=®ºt\190 \90\89¨~ÅÙ\9d~Ùït©_ó\11¬VúP\9fombÁö7\8eì eµ\16.ª0½Èf¢_<\93*¨\ 5*yìêÄZ¸®û¢ed\13Pâ\ 64¸tÉÅn9]Xê\8a¯ëü"ªØf?î/m\16FíkÜ}RÎ\12_º\9c}®\11J\9e©\83üÑ×a1|¿\e\ 5ëGzÃ\9dN)\9e¦\98ÁÁ)À\8e\ 1]Ç»\1f(\84;VÎ\15_ý° \ 1ú=â`{o\19â*:\ f.Ë\9aïR¼\1e\ 3¸M`@\1exeËÎYð\1açÙ\13õܽc+QRzX"îÆ\11§\ 1\19>J²æ\f¦í´\90\91*\ fÛ&PöõÎ\132å52P\ 4\13¦îI¬ý,è;½M0\1e\1cÃ\903î\80µ?ü÷q΢¦G¢`â˾X5.B\r\ 3\81ô\83U\13ÓN¥ÇHvM\9c^³¤\9fÜ7\12\16é)\7fÆ÷N-¬©\Ai¸ýrù!1\ eÑ^\9a5\9cY5Æ\9d-i\87\9fÄÈ\93\9fÚ½\f\93\1c\8df\91ä(KúóöT§\1dßîõR«\97Íñ¾ÈCãU\97í·¯ê\91FÞÇJ\83!16\81ÈQ\12HÒ¼´ÏÚkr\17íúQÓUzP¬¾µû±_XíÔ¾È\9aÖi¤Y5Vh·â{#O"UHU\ 2ù¬\vj}\8f§?\aÍeH«s\850\80£\0\1a£éþ6}T^\90zÐ\19jѱÖÕ=rí\84Õ¶Bb\86Þ.ærÖÐ)\1d²ñÓ«õ\85¡2c-E+¦¦\95\ f¸¡Ïß\9eÆ[¬¾K¦ÐV\ 12\r>ë{ÅÄå\ f.#v#Ók×£¬\ f\1dfÌÃ\ ek\80\9ebQôy\89\13CDÞ\9c%\11̪ñ¾«\13Å
-C\92ÄAòËú\1aMþÉ\187£ædhB\r÷L\88zÝvõj\7f ËR~\1aî×]ìø#\96ù¬\rÉ#Ò\92Ìæ\1aiÞ\9e^Æ_ùxB¡\97ø\98Y¯\ eKje\ f$\8e\8c\11Ï\aë\83Ð\85ÑM+\97îË\16ï\82ãRÿn Qú\94Ú\ 2¶\87å¸Ý`\ 6v\7f0\ 6=¯¨ª\82«©XW¹U\ e&ñr\17ðpÛ8v\a\vs Ã7Ññ\99Ñ+ÊÄéz]Þó\11ê\90çð\17\98~(In4±\8ci\982\15¸Ò¹Á9=½ìY#\896ÝuÐɵýqæ\ 2Ó]Ä»\ fS\85w\0ì\1f\94\15÷¨S\15½Ò\98\16!u5I\91z])\fø \12PY3\8bR#æ\eu\90À°'?Ùí(S\ 5\8dEG\9cÇõx\a\ f\13°kh¿M\91\8f4³\9aï-Ø\0\19\9eÀ\80>̵\ eÎ\8d\eù\ 2À"\96oöòÃE<¬\17Ê Fäh\89\1cá\VEÄúÞ^êÀµ4iRXÔ\9f\f´q¡Ä}eÐ(\19\136Qíò\89o¡4\rú
-¥[z®6¼\ry¹eX\9fÌ\93_5%ÿ\ 5\89yz\\1czEíµècÓÏ(ï K\8fò2ëY\98iâÓÌ`ÕF¸nÒ\8b3À\10ÛÆ'ý\92¹LZÄÆCç§Vp8±/\ 1z>\84j\13zD\98Sæ\r\ 6\86¨)ÆCÅ:J\ 2-Ú\8d\19½×h\82÷Ã($âIb\8f
-mú\13.\97L#9Â\b6*Q\92\9960\1dë\17#é-ÍQnP\1dè\87\96«ÛzÔ\r0¬â\10Êu~J/ïi^Nz*\9d]."\8b)\9f&\12¾Y\8dr\ f/M\ fÊí\9eé\93³ÎX\87¼\10\90l´ìô¢[Büe\96ýµ\99Þ\84s\92\9bµ½~M_¼¶\1dM¨Tk\X\82\1e\90ö\13h;\84\ 1w\18úÀ\ 6Ö\1fS{¦ï\9eìÙýù\eöѪ\16\9e\95%¨ò*\1c\92\13wHê7D\98à5ò\a©.Ë\ 5\8cÀ\86(õ\88Yy ¦`ɱ\95.Ø\a\18ïÏM¾\90EÂå±\14Á\ 5ìm[^S\0×3ñ\8f <íâ\ 1n¤i6±@UÚÎÁÌN°½\97©\9d\17¹è²>{}´ó\ 4Z\98ø9d w8\9bJ.Õalf°½¿ \ 4\9dZÁlx'[ùÈ\ 6^;1\89\95(±À\rn\84\91F&\1cúÊ\e\ 4 k<' \16\98\13¦ÀÉ?±gø{ZYß\9cw\8dC\86V\10\80lïµ"X³\13c¾®hñþ¨9¿#²{\14ð\92\90\11?Ú&D\8eÀ)Ö\14q\8c\ 6FWÀ:L])\17\ 6àWhÕ¬wêCPÝ\88r}|;î\f\94\0zª\7f1yEauwS\95nG«\95Wöî¹\98B±ÎÜ)£ßA\94Ãw\e\1eb&\13\931±îQJMA\186\87\a«k\e¤}~Ãx-{qí]üð\13p\8cU\8a\95\90\90/±îß{Û\88\85¾+\r k;\15S÷-`\ 6\84jäx\93\17\81Ì={`%scÑ\95Ø;$\0ôG\944J\ 6LY\8dí¢í)\80Å\0\-ß\ eçn¦Ê\98^¡åæ"ËóA\vQå®+ÛfþjqìÊ·\99ß
-°Y\1cTðéÇý\eÂiû\17b6Q·+\8cà\94qQ\f\1eP{\87s×\9cj\14\1f-\95T¯KZgU\80\ 2N\8e[r\ f`/¤-þ®1ý¤K7¬àÛÖ®SYËö¡Õ9qûë¢Ñ+1h\1e@<ºÛtSÈ;ûW\91ßB!\81E a\82ܸr\96\98{\11{.°\1eøY\11\08çÆÕRA\8f.;÷\8ew?Pß\ 4È/ìè(Ñ|1ó\a÷\99\17×Xs\89\807æ\7f®9T*ò\97tH\r¹ÄÀ°\fU+%\ 6KhmÜ"DïNj2\9aXâJ\8cÑ]ÿhó\8d笺M$lA¸\13Eç/[JHÙR/\91\bÕîpò½Âîú(Ø'Ç:\82@öù}Á³vB\9cÂ=nØÏ\9fºãÜ \âgÌ.\9d²Êæ\80\97qûÇSÑ°Xb&\9aÉÓkÁÂH*\7fã)ªw2´(\89FUî"\ 4(\bÒ¸Dg\8bêiÆ\a\80ó.X\aJ;\ 6ÔøKÇ\bæ(Ô\19s!íAôr\14T®Pê´$½lÖ«+W°£ÝMÔÈ\14\82¢.ok[û\97\98as§\18d\93Ï_ò\0\ 3Ö\96ß\9eUê§3;\a(^\1d Ã\8f\19\87¿ÙbO\88Z-¸\9fü¨\fã¸\1c£)ɶ§\8c¡¢õú\87w\ 4Ôç\89~ÓY\8e\16gh\ 4\83?ÏÍ\eÍ]ÑK2\8d5S±[?[\8aÙ\9f\98"\91j\7f\0\0r¼;\85º×Ø\vÆ]buoTvÍ\e×X\15gõZo\ 45*û"mÇ\b\7f\9d[%NEA&Ú\1c\12ÇìÖ\bi\8a\v.5\95Êö;\8b³ÁÜ\9aÃyý·ù\9f%\\8aÂ\9aFª2+Õ\b\ 2\15\92\96\9a\16ܺiYŹ-\ 5\10¬@\bD@\\81\rn4Ô\1fÜ\88gæ©0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-44 0 obj
-<<
-/Length1 796
-/Length2 2243
-/Length3 533
-/Length 3572
->>
-stream
-%!PS-AdobeFont-1.1: CMMI12 1.100
-%%CreationDate: 1996 Jul 27 08:57:55
-
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /AEVAHO+CMMI12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 60 /less put
-dup 62 /greater put
-readonly def
-/FontBBox{-30 -250 1026 750}readonly def
-/UniqueID 5087386 def
-currentdict end
-currentfile eexec
-\804y\82«9BÙ0ài§\r\rH1\1dr^\83\r\1cvû¡.\12Hn\98\9c\98tµ'ð\92W"xp'ôDpÔ\84&,6\fßÝß6WS:W»\16÷0H¿»ü·:e\ 4\84\ 1TAýÈ7ÙJÈûÒ\ 2.>Èñ\15Ô´»{\7f\158\8f"Ìa\98ïçh½\9fγDnä¨Ü'ÖÍ\15$\858Nõõ\93\81ÿÚCòÒ\f\8f°\8a¢z²\ 1[wM±\r¬ýÍ3æ\ f\17\8cF\15S\14j´'½×Ú\12SK x=x\ 4\14\93\ er!\8b0u\92\á\19/\11ü\850üÕã\ 3\8e:jm²Üû®;FSçà'01N\ 2µJ\1e)m+ï\8ayA\1d\92%Ú×´æÖùÏ\ 6\88¶\9b¢\11\93¿\14\95\80~{Ë ·\ 6N\91ú\rí"\8eB ªä\a§ªÊ`±\ab\99¬J½#ï\ 2ñ\bv_\ e=\91ù/:ûýí7/ÏnK\14\16\90\15\17Ú\8f/³Éþz\87¼¾oÓlÕµ\82?Ût"\906¦<3F¡ >k\106\90,\eô/Ã\17È
-¿\ 4\ 2
-G³DÃmä/\ 5Ä\90 ÿD«mRIéõR¨p{·f\1e$&D\81@\ 1ÈC\ e½^_\v\94LëfnæCYÖcãU²ñp\93©d\13\9d\17(\7fl¦ $v~ºOä\878Uº¾/\a¹\15`ö\83\0°mþ'&L\161\95ÔF\98\f5¼ ´\8fx\ 6bjç&6Y:\ 5º@<áÀø²Î£ìÕ\86é
-Á}\ 3K¤¯p\83\ 4ò114Yû»û\97Ô\83M\ 3\95uJ³ò-d\95Ò\14@\87ÔHao¡Î'¼PÓFT2\87ã\86\r\99´3bA\19»\99 ¢\116\ 4Àâ`ý'[¥^\ fÑ\9c\83á\9aÝú¡ó/kr\84\ 3\88EÌîq£1\1dÛ\17¸Iu÷©\84¾×Æì*\ 6å³5§cÐ\81Æ'?\86¤f2ý\91A¢y\ 2\aOÈ`ß:.µ\9b\89wLvp"Ûµwã\r¡(½w\ 6¤:ø\86ÐÂVµ\ f©hï\ 6wj¬\v¥8~\90\11ë#4Áô, \ f\ 6¡\12\ ~¦2N\87ôd\14\ 5\r\88\0OVN£6 P\16Ç·V\9ec?{\7f\14(ÅÌGÚ|\87R\18Ô¡\ 4N&¤r±ûRÎc«ù¸@¸øºE¼Ï¶SgÈuܾ\e
-Ýï7aâ\96ÜÚ ~\86FtcËK)ÍÉZÚ\ 6 Gm\ e^ùï{Å:¥:μ^\0ÕW\82\92\94\91KÇø#ì\a)I@\ 5¤Z\1e\1ch\a~Ä,½§ä ~\a«0Ø \8b\1dòëî\1e ÔíÉ\ 3Uf¢±F\89ðÕ¥ºVX\96yz¦\1f\ 6ª´\96òÀ¸Ë+7£X\89Ý\87\80:æy[#¯V¨\94.¹:Ö÷nð[8\ 5¿8?ôWTe¨Bè´Õ¼®6>êÎ@~[\è;g\8a\ 1$\976¬ë\14k\9dL¹\eH\82Q«\19\0&\90+ÚÉf\96ܳ³×íN\84E\13\ fJcÏRÿèÑ\ 4\ 2ʳ\8cÎu°\84\88\aNé
- êÝd\9d\83N\80\19Ö$]eÇ\ 1W\1c4\11\a\9e\ 5Âä$¬s\85¶Y0-µ\80-\10÷Ì\8cÙöëkè\99MO»ë²Í\ 6KöUY\8a\1aõÍS\88 \80-\8424ZWí,.\95I.<O
-náÅÙÎ\84\9dsKW.\8f\17t¤c6±\0õcêø@\82#\1ekñH¯¥\94_\8bQç\vûyçjKÅÒÁR±U\fl¶S\80\11³\1d^\97\9f0»\95Ѧ\14md4VT98\8fè\15õ`Wkq×\99öÚ\1cØ£s¦\85'\8cY\88Û?\ 2s°\ 2HÿäPÁN,Å:k¥\89ÙPý.C¾ëäãX84\9c²\ 1Ý\94\98\ 5\ 2gõ\93×Hï0ÁHM±\159Ëpo<e¯¾wxíDpõ\e\ 2f\18¤¥þ\1cz\9d\93¥bR&ôÏM´ßkáÑC\90\ 3\ 2z\1c¥Û\1d(\8e\10\96\90åï\e³ÕfóÈc\ 2Îu\ 1ð\90\91ª½øK\8cx÷\13Hóap¾eûÏQa\14\8diëÉ\1d(ÎáZ;D®Æ»ÈåÖÎË\8f\9a-¬×¶h\ 4ïÿ\b4<Ù%¥
-í.ÂÅ\8crþ\19\8a\93ÞØ\96\95ÁUs»\95äy{è\94]]ðm\1e\ 6\90áÞË\10J©\141\11h(1)?¶ù÷\81éÕ@Åçò]F;{!\1f> d(\ 6¢\1eÆ/R4M}\8b²0G}\85ã\9aLcÒÒ \a\16ä\19ã¼xH/\90\ 5§<vw\97û\93\8f\ f¹\857dh\f\98MÎÿ%±\f\b¥³U¿ô\17\e\10rpØhÌ5x·\89{\88ØQ\15ßuÒf\1fÅ.Æ\14Û\ 6EI÷ç·æ\9c\93øßA\ 5RÑ\899ÕÏ2\96.úxyI¾Ð\83RZæ.!\19Íñ/Ù2ùn\9d]_ÉmQ\91-v9t7{ix^\84¿\96\0¦©FÊ\88H\12Lµï -K·-Êgõ-c{\80n\1f¹G~KË$äx\05ø§+û¶pË\93)\81gÎ\e?7\15Ͻí\15Fº\7f\97H\98ð;xkjËÉ2j\85»)`Lîþ«éßòÎ\9cØ\96;\11\ 4H
-÷\88\7f¸^\89D5z\91¼Ó\82M©õ7\ e\8aÚ\17¾\9cónϸa\95\ f\9dç=)\ 2Ãÿ_\8e\12(æO\19\ fR2Hë¦Ïb\90¢x« ÷æ6\ 1'T\b\9bÔ\9aø.ß\9f2îC2\r$ã\93e\8bB8¯dä!\89¡\1eÁ.BE:bpæ×\f\84Í\90"\893_.\9eÐF\ 66\8b\7féQ±)J\17 /k\eø\85\7fE6¡\ 5×F$t\aØâîÇ\f~¥ÆÍÇ!â\90¨¸Õ(¾ÈX,5Ò¦æÓ \944k^ÂG|-\r[\97`<\8c4#tM^\fPêu U\94»$¹ãL\ e¢®\82ÓÛ\11ÝÄZwÎþ\93ĪfB©Çn4õvïqý`ô\1f>\aNt\95+ÅvåX\ 3n¹\89.\ 1m?FÚ5\17ø\84´\9c=iÐÃd\9c\98ä\1f·È0\v\18¥ª\1aFoy#oÙLè\96Çv\94ÐJ(4\15\85\13\ fÂ\9cgJ\82FØ{¶ ¸#ºûw,¨ð;8:9\87gÉ\81yxì\95\8b\15\17ú\1cÚ\96\ 6V\897±¬\8e6\13[uÉ3Û\19\büKò\8fÿúðÛ©\89¹Ï
-w(Lÿ\9e\86\85\18ÇYØ&\8e'\912îL\ f\bu $Û\16,8Ô\ 2fìK¬¸$\9fÙ\81Ƕí\16SØ[\99à¢n\ e.l(oB\ e*µôÉjËËؤÁ~D\94\95Æ\vß\99²\87ÑÇüï®\11dó\8dÉ\8bq_®ÚL\81q°÷°\83i\1f\882LÆà&*BÜÕ\9eª,:KK½¹Ì±ç\85\9bÇà\-\ 2é[r Ï$$\83\ 1>\12\84·p\81\97öïúûÛ"\ e\8b\83^®SØ# 1\ 6øs\19èÖË7Éh¼µþëíõ\ 2×\99êÙFÔ\8däG\9c½Yã 4¡\89ï©\94\89\9e\90£ëµF×\1e9¿]Oø\16ÀóGa£Ñ\8b¨·w\8fæ\85VÖ2Fë¼)\13zÒ\87\a\149ÖI|\1fß\95Î0²\ e\v\9fâÀ§`¿$\86pL¥\1611#.Mv3f\8fGý°®Óà¨\9eB\8d\9e'À©-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-
-endstream
-endobj
-1 0 obj
-<<
-/Creator ( TeX output 1999.09.19:2116)
-/Producer (dvipdfm \(null\), Copyright \251 1998, by Mark A. Wicks)
-/CreationDate (D:19990919212041+00'00')
->>
-endobj
-5 0 obj
-<<
-/Type /Page
-/Resources 6 0 R
-/Contents [19 0 R 4 0 R 20 0 R 21 0 R]
-/Parent 3 0 R
->>
-endobj
-23 0 obj
-<<
-/Type /Page
-/Resources 24 0 R
-/Contents [19 0 R 4 0 R 25 0 R 21 0 R]
-/Parent 49 0 R
->>
-endobj
-27 0 obj
-<<
-/Type /Page
-/Resources 28 0 R
-/Contents [19 0 R 4 0 R 29 0 R 21 0 R]
-/Parent 49 0 R
->>
-endobj
-49 0 obj
-<<
-/Type /Pages
-/Count 2
-/Kids [23 0 R 27 0 R]
-/Parent 3 0 R
->>
-endobj
-31 0 obj
-<<
-/Type /Page
-/Resources 32 0 R
-/Contents [19 0 R 4 0 R 36 0 R 21 0 R]
-/Parent 3 0 R
->>
-endobj
-38 0 obj
-<<
-/Type /Page
-/Resources 39 0 R
-/Contents [19 0 R 4 0 R 40 0 R 21 0 R]
-/Parent 50 0 R
->>
-endobj
-42 0 obj
-<<
-/Type /Page
-/Resources 43 0 R
-/Contents [19 0 R 4 0 R 47 0 R 21 0 R]
-/Parent 50 0 R
->>
-endobj
-50 0 obj
-<<
-/Type /Pages
-/Count 2
-/Kids [38 0 R 42 0 R]
-/Parent 3 0 R
->>
-endobj
-3 0 obj
-<<
-/Type /Pages
-/Count 6
-/Kids [5 0 R 49 0 R 31 0 R 50 0 R]
-/MediaBox [0 0 612 792]
->>
-endobj
-19 0 obj
-<<
-/Length 1
->>
-stream
-
-endstream
-endobj
-21 0 obj
-<<
-/Length 1
->>
-stream
-
-endstream
-endobj
-4 0 obj
-<<
-/Length 18
->>
-stream
-1 0 0 1 72 720 cm
-endstream
-endobj
-51 0 obj
-<<
->>
-endobj
-52 0 obj
-null
-endobj
-53 0 obj
-<<
->>
-endobj
-2 0 obj
-<<
-/Type /Catalog
-/Pages 3 0 R
-/Outlines 51 0 R
-/Threads 52 0 R
-/Names 53 0 R
->>
-endobj
-xref
-0 54
-0000000000 65535 f
-0000075678 00000 n
-0000076972 00000 n
-0000076638 00000 n
-0000076840 00000 n
-0000075846 00000 n
-0000007289 00000 n
-0000027172 00000 n
-0000000009 00000 n
-0000000212 00000 n
-0000034173 00000 n
-0000001248 00000 n
-0000001453 00000 n
-0000050466 00000 n
-0000002485 00000 n
-0000002692 00000 n
-0000059891 00000 n
-0000003611 00000 n
-0000003817 00000 n
-0000076740 00000 n
-0000004776 00000 n
-0000076790 00000 n
-0000007224 00000 n
-0000075949 00000 n
-0000010761 00000 n
-0000007353 00000 n
-0000010706 00000 n
-0000076055 00000 n
-0000014337 00000 n
-0000010826 00000 n
-0000014282 00000 n
-0000076241 00000 n
-0000018312 00000 n
-0000061884 00000 n
-0000014402 00000 n
-0000014606 00000 n
-0000015647 00000 n
-0000018257 00000 n
-0000076346 00000 n
-0000020888 00000 n
-0000018377 00000 n
-0000020822 00000 n
-0000076452 00000 n
-0000027107 00000 n
-0000072014 00000 n
-0000020953 00000 n
-0000021162 00000 n
-0000022192 00000 n
-0000027030 00000 n
-0000076161 00000 n
-0000076558 00000 n
-0000076907 00000 n
-0000076929 00000 n
-0000076950 00000 n
-trailer
-<<
-/Size 54
-/Root 2 0 R
-/Info 1 0 R
->>
-startxref
-77068
-%%EOF
+++ /dev/null
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.85 Copyright 1999 Radical Eye Software
-%%Title: READMEdvi.dvi
-%%Pages: 6
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips READMEdvi.dvi -o notice.ps
-%DVIPSParameters: dpi=600, compressed
-%DVIPSSource: TeX output 1999.09.19:2116
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-TeXDict begin 39158280 55380996 1000 600 600 (READMEdvi.dvi)
-@start
-%DVIPSBitmapFont: Fa cmmi12 12 2
-/Fa 2 63 df<F001C0F007E0181FF07FC0943801FF00EF07FCEF1FF0EF7FC04C48C7FCEE
-0FFCEE3FF0EEFFC0030390C8FCED0FF8ED3FE0EDFF80DA03FEC9FCEC1FF8EC7FE0903801
-FF80D907FECAFCEB1FF0EB7FC04848CBFCEA07FCEA1FF0EA7FC048CCFCA2EA7FC0EA1FF0
-EA07FCEA01FF38007FC0EB1FF0EB07FE903801FF809038007FE0EC1FF8EC03FE913800FF
-80ED3FE0ED0FF8ED03FF030013C0EE3FF0EE0FFCEE01FF9338007FC0EF1FF0EF07FCEF01
-FF9438007FC0F01FE01807F001C03B3878B44C>60 D<127012FCB4FCEA7FC0EA1FF0EA07
-FCEA01FF38007FC0EB1FF0EB07FE903801FF809038007FE0EC1FF8EC03FE913800FF80ED
-3FE0ED0FF8ED03FF030013C0EE3FF0EE0FFCEE01FF9338007FC0EF1FF0EF07FCEF01FF94
-38007FC0F01FE0A2F07FC0943801FF00EF07FCEF1FF0EF7FC04C48C7FCEE0FFCEE3FF0EE
-FFC0030390C8FCED0FF8ED3FE0EDFF80DA03FEC9FCEC1FF8EC7FE0903801FF80D907FECA
-FCEB1FF0EB7FC04848CBFCEA07FCEA1FF0EA7FC048CCFC12FC12703B3878B44C>62
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmtt12 12 48
-/Fb 48 126 df<00085B003EEB07C0007FEB0FE0A24814F0A26C14E0B3A2007E1307003E
-14C0A20008EB01001C1E75BD33>34 D<D803E0143CD80FF8147C486C14FEA2486C1301A2
-D87F7F495AEA7E3F5E00FEEB8007EAFC1F5E150FA24B5AA25ED8FE3F133F007E13004B5A
-EA7F7FD83FFE91C7FC5D6C5A5D380FF801EA03E0C7485AA25D1407A24A5AA25D141FA24A
-5AA25D147FA292C8FC5CA2495AA25C1303A2495A167C4A48B4FC010F491380A24A4813C0
-131F92380FEFE0D93FC013C7031F13F002801383137FA2EBFF00A25B1201A24914C70003
-020F13E016EF4848903807FFC0A2496D1380A26C486D13000001EC007C2C4D7DC433>37
-D<007FB612FEA2B8FCA36C15FEA228077BA133>45 D<121FEA3F80EA7FC0EAFFE0A5EA7F
-C0EA3F80EA1F000B0B6C8A33>I<167816F8ED01FCA21503A2ED07F8A2ED0FF0A2ED1FE0
-A216C0153FA2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA25D143FA24A5A
-A24AC7FCA2495AA25C1303A2495AA2495AA25C131FA2495AA2495AA249C8FCA25B1201A2
-485AA2485AA2485AA25B121FA2485AA2485AA248C9FCA25AA2127CA2264D7AC433>I<14
-FF010313C0010F13F0497F497F497F9038FF81FF3A01FE007F804848EB3FC049131F4848
-EB0FE0A24848EB07F0A24848EB03F8A24848EB01FCA348C812FEA4007E157E00FE157FAE
-6C15FF6C15FEA46D1301003F15FCA26D1303001F15F8A26C6CEB07F0A26C6CEB0FE06D13
-1F6C6CEB3FC0A26CB4EBFF806C018113006DB45A6D5B6D5B6D5B010313C0010090C7FC28
-3F7BBD33>I<EB01E0497EA21307A2130FA2131F133F137F13FF1203123F5AEAFFF713E7
-1387EA7E071200B3B3A2003FB512FE48801680A216006C5C213E76BD33>I<EB03FF011F
-13E0017F13FC48B57E48ECFF804815C0260FFE0313E03A1FF0007FF049EB1FF84848130F
-49EB03FC127F90C7EA01FE4814005A6C15FF167FA3127E123CC9FCA216FF16FEA2150116
-FC150316F81507ED0FF0ED1FE0153F16C0ED7F80EDFF004A5AEC07FC4A5A4A5A4A5A4A5A
-4A5A4990C7FC495AEB07F8EB1FF0495A495A495A4890C8FC4848143E4848147FEA0FF048
-5A48B7FCB8FCA37E6C15FE283E7BBD33>I<903801FFC0010F13F8013F13FE90B67E4881
-4881489038807FF03A0FFC000FF801F06D7E484813036F7EA21500A26C5A6C5AC9FC1501
-5EA215034B5A150F4B5A4B5A913803FFC00103B55A4991C7FC5D8116C06D8090C76C7EED
-0FF8ED03FC6F7E6F7E821780163FA2EE1FC0A3123C127EB4FCA2163F1780167F6C16006D
-5C6D495A6C6C1303D81FF8EB0FFC3A0FFF807FF86C90B55A6C5D6C15806C6C91C7FC010F
-13FC010113C02A3F7CBD33>I<ECFFC0010713F8011F13FE017F6D7E90B67E4881489038
-807FF03A07FE001FF8D80FF8EB07FC49130348486D7E491300003F814980A66C6C14FEA2
-6C6C495A6D13036C6C495AD803FEEB1FF03A01FF807FE06C90B55A013F91C7FC010F13FC
-A2013F13FF90B612C0489038807FE03A07FC000FF848486D7ED81FE0EB01FE4913004848
-147F007F168090C8123FA200FEED1FC0A76C153F6C16806D147F003F16006D5C6C6C495A
-01F813076C6C495A3A07FF807FF86C90B55A6C5D6C6C14806D91C7FC010713F8010013C0
-2A3F7CBD33>56 D<007FB71280A2B812C0A36C16806C1600CBFCA9003FB7FC481680B812
-C0A36C1680A22A177CA933>61 D<1278127EB4FC13C07FEA7FF813FEEA1FFF6C13C00003
-7F6C13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF806E13C0020113
-F06E13F8ED3FFE151FED07FF815DED1FFE153FEDFFF84A13F0020713C04A138091383FFE
-004A5A903801FFF0495B010F13804990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7F
-FE13F8EAFFE05B90C9FC127E127828337BB733>I<007FB512F8B7FC16C082826C813A03
-F8000FFCED03FE15016F7E82A2EE3F80A7EE7F00A25E4B5AA2ED07FCED1FF890B65A5E16
-80828216F89039F8000FFCED01FE6F7EEE7F80163F17C0161FA2EE0FE0A7161F17C0A216
-3FEE7F8016FF4B1300150F007FB65AB75A5E16E05E6C4AC7FC2B3D7DBC33>66
-D<003FB512F04814FCB7FC826C816C813A03F8007FF0ED1FF8ED07FC15036F7E8281EE7F
-80A2163F17C0161FA217E0160FA4EE07F0AD160F17E0A4161F17C0163FA21780167FEEFF
-00A24B5A15034B5AED1FF8ED7FF0003FB6FC4815C0B75A93C7FC6C14FC6C14F02C3D7EBC
-33>68 D<003FB712E04816F0B8FCA27E7ED801FCC71207A8EE03E093C7FCA6151F4B7EA4
-90B6FCA69038FC003FA46FC7FC92C8FCA817F8EE01FCA9003FB7FC5AB8FCA27E6C16F82E
-3D7EBC33>I<91387F803C903901FFF03E0107EBFC7E011F13FE49EBFFFE5B9038FFE07F
-48EB803FEC000FEA03FC00071407491303485A491301121F5B123F491300A2127F90C8FC
-167C93C7FCA25A5AA992387FFFC092B512E0A37E6C6E13C0923800FE00A36D1301123FA2
-7F121F6D1303120F7F6C6C1307A26C6C130F6C6C131F9038FF803F6CEBE0FF6DB5FC7F6D
-13FE010713F80101EBF07C9026007F80C7FC2B3F7CBD33>71 D<3B7FFFC00FFFF8B56C48
-13FCA46C496C13F8D803F8C7EA7F00B3A290B7FCA601F8C77EB3A53B7FFFC00FFFF8B56C
-4813FCA46C496C13F82E3D7EBC33>I<D83FF8EC1FFC486CEC3FFE486CEC7FFFA2007F16
-FE6C6CECFFFC000716E001EF14F7EC8001A39039E7C003E7A3ECE007A201E314C7A2ECF0
-0FA201E11487ECF81FA201E01407A2ECFC3FA2EC7C3E157E147EEC3E7CA3EC1E78EC1FF8
-A2EC0FF0A3EC07E0EC03C091C7FCAED83FFCEC3FFC486CEC7FFEB591B5FCA26C48EC7FFE
-6C48EC3FFC303D7FBC33>77 D<D907FE137890393FFFC07C90B5EAF0FC4814FC000714FF
-5AEBFC03391FF0007F4848133F0180131F007F140F90C712074814035AA21501A46CEC00
-F86C15007F7F6C7E7FEA1FFE380FFFE06C13FF6C14F06C14FC6C6C13FF011F1480010314
-C0D9003F13E0020313F09138003FF8ED0FFC1507ED03FE1501150016FFA2007C157F12FE
-A56C15FF16FE7FED01FC6D130301F0EB07F801FC130F9039FF807FF091B512E016C000FC
-1580013FEBFE00D8F80F5BD8780013E0283F7BBD33>83 D<003FB712F84816FCB8FCA43A
-FE000FE001A8007CED00F8C71500B3B3A40107B512C049804980A26D5C6D5C2E3D7EBC33
->I<D83FFCEC3FFC486CEC7FFEB591B5FCA26C48EC7FFE6C48EC3FFCD80FC0EC03F0A76D
-1407000716E0A86C6CEC0FC0A2EC07E0EC0FF0EC1FF8A3000116809039F83FFC1FEC3E7C
-A4EC7E7EA200001600A2EC7C3E01FC5CECFC3FA3ECF81F017C143EA590397DF00FBEA301
-3D14BC90393FE007FCA5ECC003011F5C6D486C5A303E7FBC33>87
-D<007FB512C0B612E0A415C048C8FCB3B3B3ABB612C015E0A46C14C01B4D6CC433>91
-D<127CA212FEA27EA26C7EA26C7EA26C7EA2120F7FA26C7EA26C7EA26C7EA212007FA26D
-7EA26D7EA26D7EA2130F80A26D7EA26D7EA2130180A26D7EA26E7EA26E7EA2141F81A26E
-7EA26E7EA26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2151F16E0A2ED0FF0A2ED07F8A2
-ED03FCA21501A2ED00F81678264D7AC433>I<007FB512C0B612E0A47EC7120FB3B3B3AB
-007FB5FCB6FCA46C14C01B4D7DC433>I<007FB612FEA2B8FCA36C15FEA228077B7D33>
-95 D<EB1FFC90B57E000314E048804814FC48809038F007FFEBE0016E7F153F6C48806C
-48131FC87F150FA5EC0FFF49B5FC131F137F48B6FC0007140F4813C0381FFC00EA3FF0EA
-7FC05B48C7FC5AA56C141F7E6D137FD83FE0497ED9F807EBFFF06CB712F87E6C14F36C14
-C1C69138003FF0D91FF090C7FC2D2E7BAC33>97 D<EA3FFC487E12FFA2127F123F1200AB
-EC01FE91380FFFC04A13F0027F7F91B512FE90B7FCECFE07DAF800138002E0EB7FC04AEB
-3FE04A131FEE0FF091C7FC16074915F81603A217FC1601A9160317F8A26D140717F06E13
-0F17E06E131FEE3FC06E137F9139F801FF80DAFE07130091B55A495C6E5BD97E3F13E0D9
-3C0F138090260003FEC7FC2E3E7FBC33>I<ECFFF0010713FE011FEBFF804914C04914E0
-48B612F048EBC01F9038FE000F485A485A4848EB07E049EB03C0484890C7FC5BA2127F90
-C9FCA25A5AA97E7EA27F003FEC01F06DEB03F86C7E6D13076C6C14F06C6C130F01FFEB1F
-E06CEBE07F6C90B512C06C1580013F14006D13FC01075B010013C0252E79AC33>I<ED7F
-F84B7E5CA280157F1501ABEB01FF010713C1011F13F1017F13F990B6FC5A4813813907FE
-003FD80FF8131F49130F48481307491303123F491301127F90C7FCA25A5AA97E7E15037F
-123F6D1307A26C6C130F6D131F6C6C133F6C6C137F2603FF81B512F091B612F8C602FD13
-FC6D13F96D01E113F8010F018013F0D901FEC8FC2E3E7DBC33>I<ECFF80010713F0011F
-13FC497F90B6FC48158048018013C03A07FE003FE001F8EB0FF048481307484814F84913
-03003F15FC491301127F90C7FC16FE15005A5AB7FCA516FC48C9FC7E7EA36C7E167C6C6C
-14FE7F6C7E6D13016C6CEB03FC6CB4130F6C9038C03FF86C90B512F06D14E06D14C0010F
-1400010313FC9038007FE0272E7BAC33>I<ED3FE0913801FFFC020713FE141F4A13FF5C
-ECFFC015004948137E4A133C010314005CA8003FB612F84815FCB7FCA36C15F8260003F8
-C7FCB3AD003FB612804815C0A46C1580283E7DBD33>I<D901FEEB1FE0903A0FFFC0FFF0
-013F01F313F84990B512FC90B7FC5A48010313E12607FC00EB80F849017F136048489038
-3FC00049131FA2001F8149130FA66D131F000F5DA26D133F6C6C495A6D13FF2603FF0390
-C7FCECFFFE485C5D5DD80FCF13C0D981FEC8FC0180C9FCA27FA26C7E7F90B512FC6CECFF
-C06C15F0000715FC4815FF4816809038E0000748489038007FC090C8EA1FE048150F007E
-150700FE16F0481503A56C1507007E16E0007F150F6C6CEC1FC001E0147FD81FF8903801
-FF80270FFF801F13006C90B55A6C5DC615F0013F14C0010F91C7FC010013F02E447DAB33
->I<EA3FFC487E12FFA2127F123F1200AB4AB4FC020713C0021F13F0027F7F91B5FC90B6
-7EED07FEECF801ECF0004A7F4A7F5CA291C7FCA35BB3A43B3FFFF80FFFFC486D4813FEB5
-6C4813FFA26C496C13FE6C496C13FC303D7FBC33>I<14E0EB03F8A2497EA36D5AA2EB00
-E091C8FCAA383FFFF8487FA47EEA0001B3AD007FB612C0B712E016F0A216E06C15C0243E
-78BD33>I<EA7FF8487EA4127F1200AC4AB512C04A14E04A14F0A26E14E06E14C0913900
-0FF0004B5A4B5A4B5A4BC7FC4A5A4A5A4A5A4A5A4A5A4A5A4A5A4A7E01FD7F90B5FC81EC
-F3F8ECE3FC14C1EC80FEEC007F5B496D7E6F7E82150F6F7E6F7E8215016F7E3B7FFFF80F
-FFF0B56C4813F817FCA217F86C496C13F02E3D7EBC33>107 D<383FFFFC487FB5FCA27E
-7EC7FCB3B3AD003FB612F84815FCB712FEA26C15FC6C15F8273D7ABC33>I<02FC137E3B
-7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07130301FC01
-FE7F9039F803FC01A201F013F8A401E013F0B3A53C7FFE0FFF07FF80B548018F13C0A46C
-486C01071380322C80AB33>I<4AB4FC263FFC0713C0267FFE1F13F000FF017F7F91B5FC
-6CB67E6CEC07FEC6EBF801ECF0004A7F4A7F5CA291C7FCA35BB3A43B3FFFF80FFFFC486D
-4813FEB56C4813FFA26C496C13FE6C496C13FC302C7FAB33>I<EB01FE90380FFFC0013F
-13F0497F90B57E488048EB03FF2607FC0013804848EB7FC049133F4848EB1FE049130F48
-48EB07F0A2007F15F890C71203A300FEEC01FCAA6C14036C15F8A26D1307003F15F06D13
-0FA26C6CEB1FE06D133F6C6CEB7FC06C6CEBFF802603FF0313006CEBFFFE6C5C6D5B6D5B
-010F13C0D901FEC7FC262E7AAC33>I<EC01FE3A3FFC0FFFC0486C4813F000FF017F7F91
-B512FE6CB7FC6CEBFE07C6D9F800138002E0EB7FC04AEB3FE04A131FEE0FF091C7FC1607
-4915F81603A217FC1601A9160317F8A26D140717F06E130F17E06E131FEE3FC06E137F91
-39F801FF80DAFE07130091B55A495C6E5B6E13E0020F1380DA03FEC7FC91C9FCAF383FFF
-F8487FB57EA26C5B6C5B2E427FAB33>I<ED03FE3B7FFF801FFF80B5D8C07F13E002C1B5
-FC02C314F014C76C9038CFFE0F39001FDFF09139FFC007E092388003C092C8FC5C5C5CA2
-5CA25CA35CB2007FB512FEB7FCA46C5C2C2C7DAB33>114 D<90381FFE0F90B5EA8F8000
-0314FF120F5A5AEBF007387F800190C7FC00FE147F5A153FA37E007FEC1F0001C090C7FC
-EA3FF8EBFFC06C13FF6C14E0000314F8C680011F13FF01001480020713C0EC007FED1FE0
-007C140F00FEEC07F01503A27EA27F15076D14E06D130F6DEB3FC09038FE01FF90B61280
-160000FD5C00FC14F8D8F83F13E0D8780790C7FC242E79AC33>I<EB03C0497E130FAA00
-3FB612FC4881B7FCA36C5D26000FE0C8FCB3A3161FEE3F80A5167F6E140001075C6E5A91
-38FE07FE6DB55A6D5C6D5C6E5B021F1380DA07FCC7FC29387EB633>I<D83FFCEB1FFE48
-6C497E00FF5CA2007F80003F800000EC007FB3A75EA25DA26D5B90387F800FDAE03F13FC
-6DB612FE17FF6D806D01FE13FE01039038F83FFC010001C0C7FC302C7FAA33>I<3B3FFF
-C00FFFF0486D4813F8B56C4813FCA26C496C13F86C496C13F0D801F8C7EA7E006D14FE00
-005DA26D1301017E5CA2017F13036D5CA2EC8007011F5CA2ECC00F010F5CA36D6C485AA3
-ECF03F010391C7FCA26E5A0101137EA2ECFCFE01005BA214FF6E5AA36E5AA26E5A6E5A2E
-2B7EAA33>I<3B3FFFC07FFF80486DB512C0B500F114E0A26C01E014C06C496C13803B00
-FE000FE000017F495AEB3F804B5A6D6C48C7FC90380FE07E903807F0FEECF1FC903803FB
-F8EB01FF6D5B5D6E5A143F6E5A143F814A7E14FF903801FBF0ECF9F8903803F1FCEB07E0
-157E90380FC07F011F6D7E90383F801F02007F496D7E01FE6D7E484813033B7FFFC03FFF
-E0B56C4813F0A46C496C13E02C2B7DAA33>120 D<ED07FEED7FFF4AB5FC14075C4A13FE
-91383FFE0015E0EC7F8092C7FCB3A45C495A1303EB1FFCEA3FFFB55A14E05C8014F8003F
-7FEA001FEB03FE13016D7E80B3A481EC3FE015FE91381FFFFE6E13FF8014016E7EED07FE
-284D7BC433>123 D<EA7FF0B5FC14C014F0806C7F38003FFE1303EB00FF80B3A4816E7E
-81EC1FFCEDFFFC6E13FF1403805C140F4A13FCEDFC00EC3FE05D4A5A92C7FCB3A45CEB03
-FE133F387FFFFCB55A5C14C091C8FCEA7FF0284D7BC433>125 D
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmbx12 14.4 28
-/Fc 28 118 df<EA07F0487E487E487E487EB51280A76C13006C5A6C5A6C5A6C5A111176
-9025>46 D<913803FFC0023F13FC91B6FC010315C0010F018113F0903A1FFC003FF84948
-6D7E49486D7E49486D7E48496D138048496D13C0A24817E04890C813F0A34817F8A24817
-FC49157FA3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A36C17
-F0A26C6D4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFCEB3FF8903A0F
-FF81FFF06D90B55A01011580D9003F01FCC7FC020313C0384F7BCD43>48
-D<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A600
-7FB712FEA52F4E76CD43>I<EC3FFE0103B512E0010F14FC013F14FF90B712C048D9C07F
-7F2703FE000F13F8D807F801037FD80FE06D7F48486D7F48488001F01680486C6E13C07F
-486C6E13E07FA27013F0A56C5AA26C5AEA0FF0EA03C0C914E05EA218C05E1880A24C1300
-5F4C5A4B5B5F4B5B5F4B5B4B90C7FC4B5A5E4B5AED7FE04B5A4A5B4A48C8FC4A5A5D4A48
-EB01F04A5AEC3F804AC7FC02FEEC03E0495A495A495A495AD91F80140749C8FC013E150F
-017FB7FC90B812C05A5A5A5A5A5A5AB9FC1880A4344E79CD43>I<91380FFFC091B512FC
-0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D8
-07FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005F
-A24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113
-F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8
-487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A13
-80D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F
-1380374F7ACD43>I<177C17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D
-5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C
-5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E
-127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE43>I<D80380150ED807E0157E
-01FEEC03FED9FFF0137F91B65A5F5F5F5F5F94C7FC5E5E16F016C093C8FC15F801E190C9
-FC01E0CAFCABEC0FFF027F13F001E3B512FE01E76E7E9026FFF8077FDAC0017F49C713F8
-496E7E49143F4981496E7E6C481680C9FC18C08218E0A418F0A3EA0FE0487E487E487E48
-7EA418E0A35B6C484A13C05B491680003EC85A003F17006C6C4A5A6D5D6C6C4A5AD807F8
-495BD803FE01075B2701FFC03F5B6C90B65A013F4AC7FC6D14F8010314C09026007FF8C8
-FC344F79CD43>I<BA12C019FEF1FFC01AF01AFCD8000701F0C7000313FFDE007F7F737F
-070F7F737F878587858785A287A84F5BA263616361634F5B4F5B077F90C7FC4E485A0607
-13F892B812E097C8FC861AF003F0C7000313FE9539003FFF80070F13E0737F07017F8773
-7F747E1C807413C0A27413E0A31CF0A386A362A31CE0A2621CC0A250138097B5FC1C004F
-5B19074F5B073F13F04EB55ABC128098C7FC1AF81AC007F8C8FC54527CD160>66
-D<932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203
-DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901
-F8824949824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA248
-49181FA3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000
-A36C7FA36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF
-6D6C6D5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE
-001F030703FC1307DB007F02E01301040149CAFC5B5479D26A>71
-D<B812C0A5D8000701F8C7FCB3B3B3B2B812C0A52A527CD132>73
-D<BAFC19F819FF1AE086D8000701F0C7001F13FC060113FF726C13807313C0070F13E01B
-F0857313F81BFCA27313FEA41BFFA81BFEA31BFC61A21BF84F13F04F13E0614F13C04F13
-004E485A061F5B92B812F01AC04FC7FC19E003F8CBFCB3AEB812C0A550527CD15C>80
-D<B800C00103B612FCA5D8000701F8CAEBF000F31F80B3B3B11B3FA26D97C7FC81637F1B
-7E6D6D17FE505A6E7E505A6E6D15076E4D5A6E6D4B5A6E6D4B5A6E01F84B5A6E6DDA03FF
-C8FC6E6CB46CEB0FFE6F9039F001FFF8030F90B65A030316C0DB007F92C9FC040F14F8DC
-007F13805E537CD167>85 D<B700FE031FB512FEA5D8001F01F0CA383FFE00F307F06D62
-6F170F6D62811B1F6D6D601B3F6D97C7FC6F5F6D197E821BFE6E6D5E1A016E6D5E1A036E
-60701507A26E6D5E1A0F6E6D5E1A1F6E6070153FA26E6D93C8FC626E6E147E1AFE6F5E71
-1301A26F6D5C19036F6D5C19076F5E71130FA26F6D5C191F6F6D5C193F6F93C9FC715BA2
-6FEC807E19FE706D5A18C1705C18E3705C18F318F770EBFFE0A2705CA2705CA37091CAFC
-A2705BA2715AA3715AA2715AA2715A715A5F537DD166>I<EC7FFF0107B512F0013F14FE
-90B77E48D9E00F7F2703FE000113F0486C6D7F6EEB3FFC48826E131F83707FA36C496D7F
-A26C90C7FC6C5AC9FCA6037FB5FC020FB6FC91B7FC01071487013FEBF0074913803901FF
-FC004813F0485B485B485B4890C7FC5A5BA2485AA45EA26D5C007F151D163D6C6C02797F
-6C6D01F113F86C9026C003E1EBFFE06C9026F81FC014F06C90B5487EC6ED001F011F01FC
-010713E0010101E090C8FC3C387CB641>97 D<913801FFF8021FEBFF8091B612F0010315
-FC010F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2
-486F138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C
-6D15C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0
-010390B55A01001580023F49C7FC020113E033387CB63C>99 D<4DB47E0407B5FCA5EE00
-1F1707B3A4913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97F
-FC0101B5FC49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C
-7EA37EA26C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0F
-FFC07FCF6D90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803
-FFC0023F13FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F
-48496D7E48178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E0
-49CAFCA6127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C
-6DEC3F806D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC
-020113F034387CB63D>I<ED3FFC0203B5FC020F14C0023F14E09139FFF81FF0499038C0
-3FF849EB807F49903800FFFC495A495AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB7
-12E0A526007FF8C8FCB3B3A7007FB512FEA52E547CD329>I<DA3FFF14FF0103B5D8F007
-13C0010FDAFC1F13E0013FECFF7F90267FFC0F9038FF9FF09026FFE001EBF83F48496C13
-E0484990387FF01F4890C7D83FF813E0489338FC0FC0F0078048486E6CC7FCA2003F82A9
-001F5EA26C6C4A5AA26C5E6C6D495A6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14
-FC01C314F02607C03F90C9FC91CBFCA2120FA37FA213F813FE90B7FC6C16F817FF18C06C
-836C836C836D828448B9FC12074848C700031480D81FF8EC003F4848150748486F13C083
-485A83A56D5D007F18806D5D003F18006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049
-485A6C01FE011F5B6C6CB71280010F03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>
-I<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA5
-12017EB3B3A6B612E0A51B547BD325>105 D<EB3FF0B5FCA51203C6FCB3A54CB512F8A5
-9339003FFE00EF1FF0EF3FC04D5A4DC7FCEE03FEEE07F84C5A4C5AEE7FC04CC8FC4B5A4B
-5AED0FF8ED1FE04B7E4B7EECF1FF02F37F02F77F91B6FC83159F030F7F02FE80DAF8077F
-4A7E6F7F6F7F83707E82707F84707F707F82707F84707F177F717E4D13C0B6D8F003B6FC
-A540537CD247>107 D<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD225>I<D93FF0
-EB1FFCB591B512C0030314F0030F8092391FE07FFC92393F001FFE0003027C80C602F07F
-DAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542367BB54B
->110 D<913801FFE0021F13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED9
-7FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3
-007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A
-6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C002
-3F91C8FC020113E03A387CB643>I<90397FE003FEB590380FFF80033F13E04B13F09238
-FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE
-1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE
-1F90B7FC120348EB003FD80FF81307D81FE0130148487F4980127F90C87EA24881A27FA2
-7F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15F06C816C816C81C681013F1580
-010F15C01300020714E0EC003F030713F015010078EC007F00F8153F161F7E160FA27E17
-E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0
-D8F807148048C601F8C7FC2C387CB635>I<143EA6147EA414FEA21301A313031307A213
-0F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26D
-EC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>I<D93F
-F8913801FFC0B50207B5FCA50003ED001FC61607B3AE5FA35FA2017F5D173B177B6D6C14
-F3DC01E313F06D6CD907C3EBFFC0903A0FFFC03F836D90B51203010114FE6D6C13F80207
-01E091C7FC42377BB54B>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmbx12 12 22
-/Fd 22 121 df<ED0FFF4AB512C0020F14F0027F80903A01FFF803FC499038C000FE010F
-EB00034948497E49485B5C495A4C138001FF6E13005CA3705AEE01F893C8FCA74BB51280
-B9FCA5C69038E00003B3B0007FD9FFC1B6FCA538467EC53E>12 D<EA07C0EA1FF0EA3FF8
-EA7FFC12FF13FEA213FFA47E7E7EEA07CFEA000FA2131F131EA2133EA2133C137C13F8A2
-EA01F0120313E0EA07C0EA1F801300121E120C1022788E1F>44 D<EA07C0EA1FF0EA3FF8
-EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C0C7FCAEEA07C0EA1FF0EA3FF8EA7FFCEAFF
-FEA7EA7FFCEA3FF8EA1FF0EA07C00F2C78AB1F>58 D<B9FC18F018FE727E19E026003FFC
-C700077F05017F716C7E727E727EA2721380A37213C0A74E1380A24E1300A24E5A4E5A4E
-5A4D5B05075B94B5128091B700FCC7FC18F018FF19E002FCC7000113F8716C7EF01FFE72
-7E7213801AC07213E0A27213F0A31AF8A71AF0A2601AE0604E13C0604E138095B5120005
-075BBA12F86119C04EC7FC18E045447CC350>66 D<DCFFF01470031F01FF14F04AB6EAE0
-010207EDF803023FEDFE0791B539E001FF0F4949C7EA3F9F010701F0EC0FFF4901C08049
-90C87E4948814948814948167F4849163F4849161F5A4A160F485B19074890CAFC19035A
-5BA2007F1801A34994C8FC12FFAD057FB612F0127F7FA3003FDC0001EBF000A27F7EA26C
-7FA26C7F807E6C7F6C7F6D7E6D6C5D6D6C7E6D6D5C6D01F05C010101FE143F6D903AFFF0
-01FF9F023F90B6120F0207EDFC030201EDF000DA001F02C01330030001FCC9FC4C467AC4
-58>71 D<903801FFE0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E48
-6C6D7EA26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FF
-FC01000313E0000F1380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83F
-FE013EEBFFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36
->97 D<EB7FC0B5FCA512037EB1ED0FF892B57E02C314E002CF14F89139DFC03FFC9139FF
-000FFE02FCEB03FF4A6D13804A15C04A6D13E05CEF7FF0A218F8173FA318FCAC18F8A217
-7F18F0A3EFFFE06E15C06E5B6E491380027C491300496C495A903AFC1FC07FFC496CB512
-F0D9F00314C049C691C7FCC8EA1FF036467DC43E>I<EC3FFC49B512C0010F14F0013F14
-FC90397FF003FE9039FFC001FF0003495A48494813805B120F485AA2485A6F1300007F6E
-5AED00784991C7FCA212FFAC6C7EA3123F6DEC03C0A26C6C1407000F16806D140F6C6DEB
-1F006C6D133E6C01F05B3A007FFC03F86DB55A010F14C0010391C7FC9038003FF82A2F7C
-AD32>I<EE03FEED07FFA5ED001F160FB1EC3FE0903803FFFC010FEBFF8F013F14CF9039
-FFF807FF48EBC00148903880007F4890C7123F4848141F49140F121F485AA3127F5BA212
-FFAC127FA37F123FA26C6C141FA26C6C143F0007157F6C6C91B5FC6CD9C00314FC6C9038
-F01FEF6DB5128F011FEBFE0F010713F89026007FC0EBF80036467CC43E>I<EC3FF80103
-B57E010F14E0013F8090397FF83FF89039FFC007FC48496C7E48496C7E48486D1380485A
-001FED7FC05B003FED3FE0A2127F5B17F0161F12FFA290B7FCA401F0C9FCA5127FA27FA2
-123F17F06C7E16016C6C15E06C6C14036C6DEB07C06C6DEB0F806C01F0EB3F0090397FFE
-01FE011FB55A010714F0010114C09026001FFEC7FC2C2F7DAD33>I<DAFFE0137E010F90
-39FE03FF80013FEBFF8F90B812C048D9C07F133F489038001FF84848EB0FFC4848903907
-FE1F80001F9238FF0F00496D90C7FCA2003F82A8001F93C7FCA26D5B000F5D6C6C495A6C
-6C495A6C9038C07FF04890B55A1680D8078F49C8FC018013E0000F90CAFCA47F7F7F90B6
-12C016FC6CEDFF8017E06C826C16FC7E000382000F82D81FF0C77ED83FC0140748480201
-13808248C9FC177FA46D15FF007F17006D5C6C6C4A5A6C6C4A5AD80FFEEC3FF83B07FFC0
-01FFF0000190B612C06C6C92C7FC010F14F8D9007F90C8FC32427DAC38>103
-D<137C48B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7F
-C0EA7FFFA512037EB3AFB6FCA518467CC520>105 D<EB7FC0B5FCA512037EB3B3B3A3B6
-1280A519457CC420>108 D<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F0
-01B512E002816E4880913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026
-FF3E007F6C019E6D013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B600
-03B512FEA5572D7CAC5E>I<90397F8007FEB590383FFF8092B512E0028114F8913987F0
-3FFC91388F801F000390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512
-FEA5372D7CAC3E>I<EC1FFC49B512C0010714F0011F14FC90397FF80FFF9026FFC0017F
-48496C7F4848C7EA3FE000078248486E7E49140F001F82A2003F82491407007F82A400FF
-1780AA007F1700A46C6C4A5AA2001F5E6D141F000F5E6C6C4A5AA26C6C6CEBFFE06C6D48
-5B27007FF80F90C7FC6DB55A010F14F8010114C09026001FFCC8FC312F7DAD38>I<9039
-7FC00FF8B590B57E02C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C
-496D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E0
-6E15C06E5B6E4913806E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FC
-ED1FF092C9FCADB67EA536407DAC3E>I<90387F807FB53881FFE0028313F0028F13F8ED
-8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3
-A5B612E0A5272D7DAC2E>114 D<90391FFC038090B51287000314FF120F381FF003383F
-C00049133F48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14
-C015F06C14FC6C800003806C15806C7E010F14C0EB003F020313E0140000F0143FA26C14
-1F150FA27EA26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F
-13E026E007FEC7FC232F7CAD2C>I<EB01E0A51303A41307A2130FA2131FA2133F137F13
-FF1203000F90B51280B7FCA4C601E0C7FCB3A3ED01E0A9150302F013C0137F150790393F
-F80F8090391FFC1F006DB5FC6D13FC01015B9038003FE023407EBE2C>I<D97FC049B4FC
-B50103B5FCA50003EC000F6C81B3A85EA25EA25E7E6E491380017FD901F713FE9138F807
-E76DB512C7010F1407010313FE9026007FF0EBFC00372E7CAC3E>I<B500FE90383FFFF0
-A5C601F0903803E0006D6C495A013F4A5A6D6C49C7FC6E5B6D6C137E6DEB807C6D6D5A6D
-EBC1F0EDE3E06DEBF7C06EB45A806E90C8FC5D6E7E6E7F6E7FA24A7F4A7F8291381F3FFC
-EC3E1F027C7F4A6C7E49486C7F01036D7F49487E02C08049486C7F49C76C7E013E6E7E01
-7E141FB500E090B512FCA5362C7EAB3B>120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmsy10 12 1
-/Fe 1 16 df<49B4FC010F13E0013F13F8497F48B6FC4815804815C04815E04815F0A248
-15F84815FCA3B712FEAA6C15FCA36C15F86C15F0A26C15E06C15C06C15806C15006C6C13
-FC6D5B010F13E0010190C7FC27267BAB32>15 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmr12 12 76
-/Ff 76 124 df<9239FFC001FC020F9038F80FFF913B3F803E3F03C0913BFC00077E07E0
-D903F890390FFC0FF0494890383FF81F4948EB7FF0495A494814E049C7FCF00FE0499139
-3FC0038049021F90C7FCAFB912F0A3C648C7D81FC0C7FCB3B2486CEC3FF0007FD9FC0FB5
-12E0A33C467EC539>11 D<4AB4FC020F13E091387F80F8903901FC001C49487FD907E013
-0F4948137F011FECFF80495A49C7FCA25B49EC7F00163E93C7FCACEE3F80B8FCA3C648C7
-FC167F163FB3B0486CEC7FC0007FD9FC1FB5FCA330467EC536>I<913801FFC0020FEBFB
-8091387F803F903801FC00494813FFEB07E0EB1FC0A2495A49C7FC167F49143F5BAFB8FC
-A3C648C7123FB3B2486CEC7FC0007FD9FC1FB5FCA330467EC536>I<121EEA7F80EAFFC0
-A9EA7F80ACEA3F00AB121EAC120CA5C7FCAA121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A
-4778C61B>33 D<001EEB03C0397F800FF000FF131F01C013F8A201E013FCA3007F130F39
-1E6003CC0000EB000CA401E0131C491318A3000114384913300003147090C712604814E0
-000614C0000E130148EB038048EB070048130E0060130C1E1D7DC431>I<121EEA7F8012
-FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A1206120E5A5A5A
-12600B1D78C41B>39 D<140C141C1438147014E0EB01C01303EB0780EB0F00A2131E5BA2
-5B13F85B12015B1203A2485AA3485AA348C7FCA35AA2123EA2127EA4127CA312FCB3A212
-7CA3127EA4123EA2123FA27EA36C7EA36C7EA36C7EA212017F12007F13787FA27F7FA2EB
-0780EB03C01301EB00E014701438141C140C166476CA26>I<12C07E12707E7E7E120F6C
-7E6C7EA26C7E6C7EA21378137C133C133E131E131FA2EB0F80A3EB07C0A3EB03E0A314F0
-A21301A214F8A41300A314FCB3A214F8A31301A414F0A21303A214E0A3EB07C0A3EB0F80
-A3EB1F00A2131E133E133C137C13785BA2485A485AA2485A48C7FC120E5A5A5A5A5A1664
-7BCA26>I<14F0A2805CA70078EC01E000FCEC03F0B4140FD87F80EB1FE0D83FC0EB3FC0
-3A0FF060FF003903F861FC3900FC63F090383F6FC0D90FFFC7FCEB03FCEB00F0EB03FCEB
-0FFF90383F6FC09038FC63F03903F861FC390FF060FF3A3FC0F03FC0D87F80EB1FE0D8FF
-00EB0FF000FC14030078EC01E0C790C7FCA7805CA2242B7ACA31>I<121EEA7F8012FF13
-C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A1206120E5A5A5A1260
-0B1D78891B>44 D<B612C0A61A067F9721>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00
-0A0A78891B>I<1618163C167CA2167816F8A216F01501A216E01503A216C01507A21680
-150FA2ED1F00A2151E153EA2153C157CA2157815F8A25D1401A24A5AA25D1407A25D140F
-A292C7FC5CA2141E143EA2143C147CA25CA25C1301A25C1303A25C1307A25C130FA291C8
-FC5BA2133EA2133C137CA2137813F8A25B1201A25B1203A2485AA25B120FA290C9FC5AA2
-121E123EA2123C127CA2127812F8A25A126026647BCA31>I<14FF010713E090381F81F8
-90383E007C01FC133F4848EB1F8049130F4848EB07C04848EB03E0A2000F15F049130100
-1F15F8A2003F15FCA390C8FC4815FEA54815FFB3A46C15FEA56D1301003F15FCA3001F15
-F8A26C6CEB03F0A36C6CEB07E0000315C06D130F6C6CEB1F806C6CEB3F00013E137C9038
-1F81F8903807FFE0010090C7FC28447CC131>I<143014F013011303131F13FFB5FC13E7
-13071200B3B3B0497E497E007FB6FCA3204278C131>I<EB03FE90381FFFC0017F13F039
-01F80FFC3903C001FE48486C7E000EC7EA7F8048EC3FC0ED1FE04815F00030140F007015
-F800601407126CB415FC7F7F1503A46C4813076CC7FCC8FC16F8A2150F16F0151F16E0A2
-ED3FC0ED7F8016005D5D4A5A4A5A4A5A5D4A5A4A5A4AC7FC147C5C5C495A495A495A49C7
-120C131E5B013814185B5B485A4848143848C81230000E1570001FB612F0A25A5AB712E0
-A326427BC131>I<49B4FC010F13E0013F13FC9038FE01FE3A01F0007F80D803C0EB3FC0
-48C7EA1FE0120EED0FF0EA0FE0486C14F8A215077F5BA26C48130FEA03C0C813F0A3ED1F
-E0A2ED3FC01680ED7F0015FE4A5AEC03F0EC1FC0D90FFFC7FC15F090380001FCEC007FED
-3F80ED1FC0ED0FE016F0ED07F816FC150316FEA2150116FFA3121EEA7F80487EA416FE49
-1303A2007EC713FC00701407003015F80038140F6C15F06CEC1FE06C6CEB3FC0D803E0EB
-7F803A01FE01FE0039007FFFF8010F13E0010190C7FC28447CC131>I<ED0380A2150715
-0FA2151F153FA2157F15FFA25CEC03BF153F14071406140C141C141814301470146014C0
-13011480EB03005B13065B131C13185B1370136013E0485A5B120390C7FC1206120E120C
-5A123812305A12E0B812C0A3C8383F8000ADEDFFE0027FEBFFC0A32A437DC231>I<0006
-15C0D807C0130701FCEB7F8090B612005D5D5D15E0158026063FFCC7FC90C9FCAE14FF01
-0713C090381F01F090383800FC01F0137ED807C07F49EB1F8016C090C7120F000615E0C8
-EA07F0A316F81503A216FCA5123E127F487EA416F890C712075A006015F0A20070140F00
-3015E00038EC1FC07E001EEC3F806CEC7F006C6C13FE6C6C485A3901F807F039007FFFE0
-011F90C7FCEB07F826447BC131>I<EC07FCEC3FFF91B512C0903903FC03E0903907E000
-F0D91FC0133849C71258017EEB01FC01FE1303491307485A485AA24848EB03F8000FEC01
-F092C7FC485AA3485AA3127FA29038007F80903801FFF090380780FC39FF0E003E49EB1F
-8049EB0FC049EB07E0136001E0EB03F04914F8150116FC5BED00FEA390C812FFA47EA57F
-123FA216FE121F15016D14FC120FED03F86C7EED07F06C6C14E06C6CEB0FC06C6CEB1F80
-017EEB3F0090383F80FE90380FFFF8010313E00100138028447CC131>I<14FF010713E0
-011F13F890387F00FE01FC133FD801F0EB1F804848EB0FC049EB07E00007EC03F0484813
-01A290C713F8481400A47FA26D130116F07F6C6CEB03E013FC6C6CEB07C09039FF800F80
-6C9038C01F006CEBF03EECF87839007FFEF090383FFFC07F01077F6D13F8497F90381E7F
-FFD97C1F1380496C13C02601E00313E048486C13F000079038007FF84848EB3FFC48C712
-0F003EEC07FE150148140016FF167F48153FA2161FA56C151E007C153EA2007E153C003E
-157C6C15F86DEB01F06C6CEB03E06C6CEB07C0D803F8EB1F80C6B4EBFF0090383FFFFC01
-0F13F00101138028447CC131>56 D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3A5
-121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2B78AA1B>58 D<007FBAFCBB1280A26C1900
-CEFCB0007FBAFCBB1280A26C190041187BA44C>61 D<16C04B7EA34B7EA34B7EA34B7EA3
-ED19FEA3ED30FFA203707FED607FA203E07FEDC03FA2020180ED801FA2DA03007F160FA2
-0206801607A24A6D7EA34A6D7EA34A6D7EA20270810260147FA202E08191B7FCA2498202
-80C7121FA249C87F170FA20106821707A2496F7EA3496F7EA3496F7EA201788313F8486C
-83D80FFF03037FB500E0027FEBFFC0A342477DC649>65 D<B8FC17E017FC00019039C000
-03FF6C6C4801007FEF3FC0717E717E717E84170384170184A760A21703601707604D5A4D
-5AEF7FC04DC7FCEE03FEEE3FF091B65A17FC0280C7B47EEF1FC0EF0FF0717E717E717E71
-7E1980187F19C0A2183F19E0A8F07FC0A2198018FF4D1300A24D5AEF0FFC4D5AEF7FE048
-486C903803FFC0B9C7FC17FC17C03B447CC345>I<DB0FFE146092B500C013E0020314F0
-913A0FFC01FC0191393FC0003E02FFC7EA0F83D903FCEC03C74948EC01E74948EC00FF49
-48157F4948153F4948151F49C9120F485A491607120348481603A248481601A248481600
-A2123FA2491760127FA31900485AAE6C7EA21960A2123F7FA2001F18E07F000F18C0A26C
-6C160119806C6C160312016DEE07006C6C16066D6C150E6D6C5D6D6C5D6D6C15786D6C5D
-6D6C4A5AD900FFEC0780DA3FC0011FC7FCDA0FFC13FC0203B512F0020014C0DB0FFEC8FC
-3B487BC546>I<B8FC17F017FC00019039C00007FF6C499038007FC0017FED1FE0EF07F0
-EF03FC717E717E84727E727E727EA2727E85180385A2180185A38584A31A80AD1A00A360
-61A361180361180761180F614E5A183F614EC7FC18FEEF03FC4D5AEF1FE001FFED7FC048
-6DD907FFC8FCB812FC17F094C9FC41447CC34B>I<B912F8A3000101C0C7127F6C6C48EC
-07FC17011700187C183C181CA284A31806A4180704067FA395C7FCA4160EA2161E163E16
-FE91B5FCA3EC8000163E161E160EA21606A319C0A3F0018093C7FCA41803A21900A260A2
-60A2181EA2183E187EEF01FE170748486C147FB95AA33A447CC342>I<B912F0A3000101
-C0C7127F6C6C48EC0FF817031701170018781838A2181CA3180CA4180E1806160CA21800
-A5161CA2163C167CED01FC91B5FCA3EC8001ED007C163C161CA2160CA793C8FCB0804848
-7EB612F8A337447CC340>I<DB0FFE146092B500C013E0020314F0913A0FFC01FC019139
-3FC0003E02FFC7EA0F83D903FCEC03C74948EC01E74948EC00FF4948157F4948153F4948
-151F49C9120F485A491607120348481603A248481601A248481600A2123FA2491760127F
-A396C7FC485AAD4CB612C06C7EA293C7387FF000725A003F171F7FA2121F7F120FA26C7E
-A26C7E6C7EA26C7E6D7E6D6C153F6D7E6D6C157F6D6C15E7D903FEEC01C7D900FFEC0383
-DA3FE0EB0F01DA0FFCEBFE000203B500F81360020002E090C7FCDB0FFEC9FC42487BC54D
->I<B6D8C003B6FCA3000101E0C70007138026007F80913801FE00B3A991B7FCA30280C7
-1201B3AC2601FFE0913807FF80B6D8C003B6FCA340447CC349>I<B612F0A3C6EBF0006D
-5A6D5AB3B3B3A4497E497EB612F0A31C447DC323>I<B600C049B512C0A3000101E0C838
-7FFC006C49ED3FE06D481680063EC7FC183C183860604D5A4D5A4DC8FC171E17385F5F4C
-5A4C5A4CC9FC160E5E5E5E5E4B5A4B7E4B7E150F4B7E4B7E1577EDE3FE913881C1FFEC83
-81DA87007F028E6D7E149C02B86D7E02F06D7E14C04A6D7E707EA2707E707EA2707F717E
-A2717E717EA2717E717EA2717E717EA2717F8585496C82486D4A13FCB600C0011FEBFFE0
-A343447CC34C>75 D<B612F8A3000101E0C9FC6C6C5A5CB3B31830A418701860A518E0A3
-EF01C0A217031707A2170F173F177FEE01FF48486C011F1380B9FCA334447CC33D>I<B5
-6C933807FFFC6E5EA20001F1FE0026006FE0EE1BF8A3D967F01633A2D963F81663A3D961
-FC16C3A3D960FEED0183A2027FED0303A36E6C1406A36E6C140CA26E6C1418A36E6C1430
-A36E6C1460A26E6C14C0A36E6CEB0180A3037FEB0300A292383F8006A36F6C5AA36F6C5A
-A26F6C5AA36F6C5AA36F6C5AA26FB45AA370C7FC13F0A2486C143ED80FFFEF0FFEB500F0
-011C0107B512FCA34E447BC359>I<B56C020FB5FC8080C6040013F06D6CED1F80D96FF8
-ED0F00A2D967FC1506EB63FEA2EB61FF01607FA26E7E6E7EA26E7E6E7EA26E7E6E7EA26E
-7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E6F1380A2EE7FC0EE3FE0A2EE1FF0EE
-0FF8A2EE07FCEE03FEA2EE01FF701386A2EF7FC6EF3FE6A2EF1FF6EF0FFEA217071703A2
-17011700A201F0167E183E487ED80FFF161EB500F0150EA2180640447CC349>I<ED1FFC
-4AB512C0913907F007F091391F8000FC027EC7123FD901F8EC0FC049486E7E49486E7E49
-486E7E49486E7E49C9127E017E8201FE834848707E4848707EA24848707EA2000F844916
-03001F84A24848707EA3007F84A24982A300FF1980AD6C6C4C1300A4003F606D1603A200
-1F60A26C6C4C5AA26C6C4C5AA20003606D161F6C6C4C5A000060017F4CC7FC6E5D013F5E
-6D6C4A5AD907E0EC03F06D6C4A5AD901FCEC1FC0D9007E4AC8FCDA1F8013FC913907F007
-F00201B512C09126001FFCC9FC41487BC54C>I<B712FCEEFFC017F800019039C0000FFC
-6C6C48EB01FF9338007F80EF1FE0170FEF07F018F8EF03FCA218FE1701A218FFA718FEA2
-170318FCA2EF07F818F0EF0FE0EF1FC0EF7F80933801FE00EE0FFC91B612F017800280C9
-FCB3AA3801FFE0B612C0A338447CC342>I<ED1FFC4AB512C0913907F007F091391F8000
-FC027EC7123F4948EC1FC0D903F0EC07E049486E7E49486E7E49486E7E49C9127E49167F
-01FE707E4848707E00038449160F000784491607000F84A24848707EA2003F84491601A2
-007F84A34982A200FF1980AD007F19006D5EA3003F60A26D1603001F60A2000F606D1607
-0007606DD903F0130F0003DA0FFC5C6DD91C0E131F00014A6C5C6C6C903A3003803F8001
-7FD9700149C7FC92386000C0D93F8015FED91FC0ECE1FCD907E0EC63F0D903F0EC77E090
-2601FC70EB7FC09026007E3091C8FCDA1FB813FC912707FC07F814C00201B57E9139001F
-FC3C92C7FC053E1301171E051F13031A80F08007F0C00F94380FF03F95B51200A2836171
-5BA2715B9438007FE0F01F8042597BC54C>I<B712E016FF17C000019039C0003FF86C6C
-48EB03FCEE00FF717E717E717E717E717EA284170384A760A21707604D5AA24D5A4D5A4D
-C8FCEE01FEEE07F8EE3FE091B6C9FC16FC913980007F80EE0FE0707EEE03FC707E160083
-717EA2717EA784A71A6084171FA21AE0716C13C02601FFE002071301B600C01680943801
-FC03943900FE0700CBEA3FFEF007F843467CC348>I<49B41303010FEBE007013F13F890
-39FE00FE0FD801F8131FD807E0EB079F49EB03DF48486DB4FC48C8FC4881003E81127E82
-127C00FC81A282A37E82A27EA26C6C91C7FC7F7FEA3FF813FE381FFFE06C13FE6CEBFFE0
-6C14FC6C14FF6C15C0013F14F0010F80010180D9001F7F14019138001FFF03031380816F
-13C0167F163F161F17E000C0150FA31607A37EA36C16C0160F7E17806C151F6C16006C5D
-6D147ED8FBC05CD8F9F0495AD8F07C495A90393FC00FE0D8E00FB51280010149C7FC39C0
-003FF02B487BC536>I<003FB912F8A3903BF0001FF8001F01806D481303003EC7150048
-187C0078183CA20070181CA30060180CA5481806A5C81600B3B3A54B7EED7FFE49B77EA3
-3F447DC346>I<B600C0010FB5FCA3000101E0C813F026007F80ED1F80F00F00A21806B3
-B3A7180E6D6C150CA2181C131F6E1518010F163818306D6C1570606D6C14016D6C5D6D6C
-EC0780027F4AC7FC6E6C131EDA1FE0137C913907FC03F00201B55A6E6C1380DB07FCC8FC
-40467CC349>I<B60107B500F890380FFFFEA3000301E0D9001F90C813F06C0180DA0FFC
-ED3FC091C86C48ED1F006C871C0E6D6C6E7E1C0CA26D6C6F5DA36EDA06FF1538011F1A30
-A26E020E6D1470010FDB0C7F1560A26E021C7F0107DB183F5DA2856D6CDA301F4A5AA36D
-6C4A6C6C49C7FCA36D6C4A6C6C1306A3DB80016E130E027FDA8003140CA2DBC00380023F
-DA00015CA203E081021F01066D5CA36E6C486E6C5AA36E6C486E6C5AA36F48EC1FE10203
-60A2DBFE7015F302010160020F90C8FCA2DBFFE015FB6E49EC07FEA36F486E5AA36FC86C
-5AA3031E6F5AA4030C16605F467EC364>87 D<003FB500E0011FB5FCA3C691C7000713E0
-D93FFC020190C7FC6D4815FC010F6F5A6D6C15E0A26D6C4A5A6D6C5D4DC8FC6D6D5B6E6C
-13065F6E6C131C6E6C13185F6E6C13706E6C13605F913803FE01DA01FF5B4CC9FC6E1387
-ED7FC616CCED3FFC6F5A5E6F7E6F7EA26F7E82A203067F150E92380C7FC04B6C7E153892
-38301FF04B6C7E15E04B6C7E4A486C7E14034B6C7E02066D7F140E020C6E7E4A6E7E1438
-02306E7E4A6E7E14E04A6E7E49486E7E130349C86C7E496F7F5B496C8201FF83000701E0
-020313F8B500F8021FEBFFF0A344447EC349>I<B66C91380FFFFCA3000101F8C8000313
-C026007FE0923800FE0061013F17F06D6C5E80010F5F6D6C4B5A18036D6C93C7FC6E1506
-6D160E6D6D140C181C6E6C14186E6C5C18706E6C146018E06E6C5C6E6C495A17036E6C91
-C8FC5F6E6C13066E6D5A171C92387FC0185FED3FE06F6C5A17E06F6C5AEEF980ED07FF6F
-90C9FCA26F5AB3A6923807FF800203B6FCA346447FC349>I<EAFFFCA4EAF000B3B3B3B3
-B3A2EAFFFCA40E6476CA1B>91 D<01C01318000114384848137048C712E0000EEB01C000
-0C1480001C13030018140000385B003013060070130E0060130CA300E0131C481318A400
-CFEB19E039FFC01FF801E013FCA3007F130FA2003F130701C013F8390F0001E01E1D71C4
-31>I<EAFFFCA4EA003CB3B3B3B3B3A2EAFFFCA40E647ECA1B>I<13C01201EA0380EA0700
-120E120C121C12181238123012701260A312E05AA412CFEAFFC013E0A3127FA2123F13C0
-EA0F000B1D79C41B>96 D<EB07FC90383FFF809038F80FE03903C003F048C66C7E000E6D
-7ED80FC0137E486C137F6D6D7EA36F7EA26C5AEA0380C8FCA4EC0FFF49B5FC90380FFE1F
-EB3FC0EBFF00EA03FC485A485A485A485A127F5B176048C7FCA3153FA36D137F007F14EF
-6D9038C7E0C0003F13013A1FE00783F13B07F81E03FF802701FFFC0113003A001FE0007C
-2B2E7CAC31>I<EA01FC12FFA3120712031201B3EC03FC91380FFF8091383C07E0913870
-01F89039FDE0007E02807F01FFEC1F8091C713C049EC0FE049140717F0A2EE03F8A217FC
-A2160117FEAB17FC1603A217F8A2EE07F0A26DEC0FE017C06D141F01FBEC3F80D9F380EB
-7E00D9E1C05B9039E0F001F89039C03C07E09039801FFF80C7D803FCC7FC2F467DC436>
-I<EC7F80903803FFF090380FC07C90383F000F01FCEB03804848EB01C00003140F4848EB
-1FE049133F120F485AA2485AED1FC0007FEC070092C7FCA290C9FC5AAB7E7FA2123F1630
-7F001F15706C6C146016E06C6C14C06C6C13010001EC03806C6CEB0700013F131E90381F
-C078903807FFF001001380242E7DAC2B>I<167FED3FFFA315018182B3EC7F80903803FF
-F090380FC07C90383F000E017E1307496D5AD803F87F48487F5B000F81485AA2485AA212
-7FA290C8FC5AAB7E7FA2123FA26C7EA2000F5D7F6C6C5B00035C6C6C9038077F806C6C01
-0E13C0013F011C13FE90380FC0F8903803FFE09026007F0013002F467DC436>I<EB01FE
-903807FFC090381F03F090387E00FC49137E48487F485A4848EB1F80000F15C049130F12
-1F484814E01507A2007F15F090C7FCA25AA390B6FCA290C9FCA67EA27FA2123F16306C7E
-1670000F15606D14E06C6C14C0000314016C6CEB03806C6CEB0700013E131E90381F80F8
-903803FFE0010090C7FC242E7DAC2B>I<EC0FE0EC7FF8903801F81E903803F03F90390F
-E07F8090381FC0FF5C133F495AA2ED7F0001FE131C92C7FCAFB67EA3C648C8FCB3B2486C
-7E007F13FFA321467EC51E>I<EE0F80D901FCEB7FE0903A0FFF81F0F090393F07E38190
-39FC01FF033A01F800FE014848017E13E00007027FC7FC497F000F8149131F001F81A900
-0F5D6D133F000792C7FC6D5B0003147E6C6C5B6D485A3903BF07E090380FFF80260701FC
-C8FC90CAFCA25AA37F6C7E7F90B512F86C14FF16E06C15F86C6C8048B67E3A07C0000FFF
-48481300003FC8EA3F80003E151F48ED0FC0A2481507A56C150F007C1680007E151F003E
-16006C153E6C6C5CD807E0495AD801F8EB07E0D8007FEB3F8090261FFFFEC7FC010113E0
-2C427DAC31>I<EA01FC12FFA3120712031201B3EC01FE913807FFC091381E07F0913838
-01F802707FECE000D9FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F83F13
-FEA32F457DC436>I<EA01E0EA07F8A2487EA46C5AA2EA01E0C8FCADEA01FC12FFA31207
-12031201B3B0487EB512F8A315437DC21C>I<143C14FFA2491380A46D1300A2143C91C7
-FCADEC7F80EB3FFFA31300147F143FB3B3AA123E127F39FF807F00A2147EA25C6C485A38
-3C01F06C485A3807FF80D801FEC7FC195785C21E>I<EA01FC12FFA3120712031201B3A2
-92381FFFE0A36F1300ED07F816E05E5E030EC7FC5D5D5D5D4A5A4A5A4AC8FC5CEC3F804A
-7E14FF9038FDCFE09038FF8FF01407496C7E01FC7F14016E7E81816F7E82151F6F7E8215
-07826F7E8282486C491380B5D8F81F13F8A32D457DC433>I<EA01FC12FFA31207120312
-01B3B3B3A5487EB512F8A315457DC41C>I<D801FC01FFEC1FE000FF010701E0EBFFFC91
-3B0F03F801E07F913C3C01FC07803F800007903C7000FE0E001FC0000349D97E1C130F26
-01FDC0D97F38804A143001FFDA3FF06D7E91C75BA2495DA3495DB3A8486C4A6C497EB5D8
-F81FB50003B512E0A34B2C7DAB52>I<3901FC01FE00FF903807FFC091381E07F0913838
-01F8000701707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80
-B5D8F83F13FEA32F2C7DAB36>I<EC7F80903803FFF090380FC0FC90383E001F496D7E49
-6D7E48486D7E48486D7E48486D7E000F81A24848147E003F157FA290C87E481680A44816
-C0AA6C1680A26D147F003F1600A2001F157E6D14FE000F5D6D130100075D6C6C495A6C6C
-495A6C6C495A013E49C7FC90381FC0FE903807FFF89038007F802A2E7DAC31>I<3901FC
-03FC00FF90380FFF8091383C07E091387001F83A07FDE000FE00010180137F01FFEC3F80
-91C7EA1FC04915E049140F17F0160717F8160317FCA3EE01FEABEE03FCA3EE07F8A217F0
-160F6D15E0EE1FC06D143F17806EEB7E00D9FDC05B9039FCF003F891383C0FE091381FFF
-80DA03FCC7FC91C9FCAE487EB512F8A32F3F7DAB36>I<3903F803F000FFEB1FFCEC3C3E
-EC707F0007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512
-FEA3202C7DAB26>114 D<90383FE0183901FFFC383907E01F78390F0003F8001E130148
-1300007C1478127800F81438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13
-FF6C14C06C14E0C614F0011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA3
-6C143C6C147C15786C14F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E
-7DAC26>I<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7
-FCB3A4150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC0
-9038007F001E3E7EBC26>I<D801FC147F00FFEC3FFFA300071401000380000181B3A85E
-A35DA212006D5B017E9038077F80017F010E13C06D011C13FE90380FC078903803FFF090
-26007F8013002F2D7DAB36>I<B539F001FFFCA3000790C7EA7FE06C48EC1F8000011600
-160E1200160C017F5CA280013F5CA26E1370011F146080010F5CA2ECF00101075CA26D6C
-48C7FCA26E5A01011306A26D6C5AA214FF6E5AA215B8EC3FB015F06E5AA36E5AA26E5AA3
-6EC8FC2E2C7EAA33>I<B500E0B539E03FFF80A30007903C000FFE000FFC00D803FCD903
-F8EB03F8F001E0120103015D6D80000060A26D6E13036DD9037E91C7FCA20280017F5B01
-3FD9063F1306A2D91FC06E5AED0C1FA2D90FE06E5AED180FA2D907F06E5AED3007A2D903
-F86E5AED6003A2902601FCE06D5AEDC00117FCD900FFECFD80ED800017FF027F92C8FC92
-C77EA26E147E023E143EA2021E143C021C141CA2412C7EAA46>I<B539F007FFFCA30003
-D9C00113C0C6496C1300017F14FC013F5C6E13E06D7E010F495A6D6C485A02F890C7FC90
-3803FC060101130E6E5A903800FF186E5AEC3FF05D141F140F6E7E81140FEC0DFCEC19FE
-EC38FF4A7E9138603F8002C07F0101131F49486C7E02007F01066D7E010E1303496D7E01
-3C80017C80D801FC1580D80FFE4913C0B5D8800F13FFA3302B7FAA33>I<B539F001FFFC
-A3000790C7EA7FE06C48EC1F8000011600160E0000150C6D141C6D1418A26E1338013F14
-30A26D6C5BA26E13E0010F5CA26D6C485AA2ECF803010391C7FCA2903801FC06A2ECFE0E
-0100130CA2EC7F18A215B8EC3FB0A2EC1FE0A36E5AA26E5AA36EC8FCA21406A35CA25CA2
-123C007E5BB4FC5CA25CEAFE01387C0380D87007C9FCEA3C1EEA0FFCEA03F02E3F7EAA33
->I<003FB612E0A29038C0003F90C713C0003CEC7F800038ECFF00A20030495A0070495A
-A24A5A0060495AA24A5A4A5AA2C7485A4AC7FC5B5C495A13075C495A131F4A1360495A49
-5AA249C712C0485AA2485A485A1501485A48481303A24848EB07804848131F00FF14FF90
-B6FCA2232B7DAA2B>I<B9FCA23002809B31>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmbx12 17.28 31
-/Fg 31 121 df<16F04B7E1507151F153FEC01FF1407147F010FB5FCB7FCA41487EBF007
-C7FCB3B3B3B3007FB91280A6395E74DD51>49 D<913801FFF8021FEBFFC091B612F80103
-15FF010F16C0013F8290267FFC0114F89027FFE0003F7F4890C7000F7F48486E7FD807F8
-6E148048486E14C048486E14E048486F13F001FC17F8486C816D17FC6E80B56C16FE8380
-A219FFA283A36C5BA26C5B6C90C8FCD807FC5DEA01F0CA14FEA34D13FCA219F85F19F04D
-13E0A294B512C019804C14004C5B604C5B4C5B604C13804C90C7FC4C5A4C5A4B13F05F4B
-13804B90C8FC4B5AED1FF84B5A4B5A4B48143F4A5B4A48C8FC4A5A4A48157E4A5A4A5AEC
-7F8092C9FC02FE16FE495A495A4948ED01FCD90FC0150749B8FC5B5B90B9FC5A4818F85A
-5A5A5A5ABAFCA219F0A4405E78DD51>I<92B5FC020F14F8023F14FF49B712C04916F001
-0FD9C01F13FC90271FFC00077FD93FE001017F49486D8049C86C7F484883486C6F7F14C0
-486D826E806E82487FA4805CA36C5E4A5E6C5B6C5B6C495E011FC85A90C95CA294B55A61
-4C91C7FC604C5B4C5B4C5B4C5B047F138092260FFFFEC8FC020FB512F817E094C9FC17F8
-17FF91C7003F13E0040713F8040113FE707F717F7113E085717FA2717F85A285831A80A3
-1AC0EA03FCEA0FFF487F487F487FA2B57EA31A80A34D14005C7E4A5E5F6C495E49C8485B
-D81FF85F000F5ED807FE92B55A6C6C6C4914806C01F0010791C7FC6C9026FF803F5B6D90
-B65A011F16F0010716C001014BC8FCD9001F14F0020149C9FC426079DD51>I<F01F804E
-7E187F18FFA25F5F5F5FA25F5F5FA294B5FC5E5E5EA25E5EEE3FBFEE7F3FA216FEED01FC
-ED03F8ED07F0A2ED0FE0ED1FC0ED3F8016005D15FE4A5A4A5AA24A5A4A5A4A5A4A5AA24A
-C7FC14FE495A5C1303495A495A495A5C133F49C8FC13FE485AA2485A485A485A5B121F48
-5A48C9FC12FEBCFCA6CA6CEBC000B1037FB8FCA6485E7CDD51>I<01C0EE01C0D801F816
-0F01FF167F02F0EC07FFDAFF8090B5FC92B7128019006060606060606095C7FC17FC5F17
-E0178004FCC8FC16E09026FC3FFCC9FC91CBFCADED3FFE0203B512F0020F14FE023F6E7E
-91B712E001FDD9E00F7F9027FFFE00037F02F801007F02E06EB4FC02806E138091C8FC49
-6F13C04917E07113F0EA00F090C914F8A219FC83A219FEA419FFA3EA03F0EA0FFC487E48
-7E487FA2B57EA319FEA35C4D13FC6C90C8FC5B4917F8EA3FF001804B13F06D17E0001F5E
-6C6C17C06D4B1380D807FC92B512006C6C4A5B6C6C6C01075B6C01E0011F5BD97FFE90B5
-5A6DB712C0010F93C7FC6D15FC010115F0D9003F1480020301F0C8FC406078DD51>I<EE
-1FFF0303B512E0031F14F892B612FE0203814AD9FC037F021F9039C0007FC04A90C7EA1F
-E0DAFFFC6E7E494914074949EC7FF8494914FF49495B4949497F4990C7FC495D5C13FF48
-5BA25A4A6E5B5A715B48496E5B725A4894C8FCA35AA35C48913801FFE0030F13FE033F6D
-7E4B14E092B612F89126E1FE037FB53AE3F0007FFEDAE7E06D7EDAEFC06D7F4B6D7F02FF
-C76C7F4A82717F4A82A24A828385A24A1780A54A17C0A37EA77EA47E6E1780A27EA21A00
-7E4D5B7E6E5E7E6E5E6C4C5B6D7E013F4B5B6D6C4A5B6D01C0495B6D6D90B5C7FC6DD9FC
-0713FC6D90B65A6D5E023F15C0020F92C8FC020114F8DA001F1380426079DD51>I<4DB5
-ED03C0057F02F014070407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F03
-3F9127F8007FFE13FF92B6C73807FF814A02F0020113C3020702C09138007FE74A91C900
-1FB5FC023F01FC16074A01F08291B54882490280824991CB7E4949844949844949844986
-5D49498490B5FC484A84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C7FC
-A25CA3B5FCB07EA380A27EA2F50FC0A26C7FA37E6E1A1F6C1D80A26C801D3F6C6E1A00A2
-6C6E616D1BFE6D7F6F4E5A7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F6D02E04D5A6E6DEF
-FF806E01FC4C90C7FC020F01FFEE07FE6E02C0ED1FF8020102F8ED7FF06E02FF913803FF
-E0033F02F8013F1380030F91B648C8FC030117F86F6C16E004071680DC007F02F8C9FC05
-0191CAFC626677E375>67 D<BD12FCA488A2D8000102C0C71201F1000F1A01F2007F1B3F
-1B0F1B07757EA28787A288A3F43F80A31C1FA3197EA3F40FC0A499C7FC19FEA31801A218
-031807181F18FF93B6FCA6EEC000181F180718031801A21800A21D7E197EA21DFCA696C8
-12011DF8A31C03A3F407F0A31C0FA21C1F1C3F1DE01C7F1CFF63631B0F093F13C098B5FC
-1A0797B6FCBEFCA31D80A35F617AE06A>69 D<BD12E0A41CF0A2D8000102C0C71207F100
-3F1A0F1A031A001B7F1B3FF31FF81B0FA21B07A21B03A21B011CFCA31B00A419FCA21C7E
-A41C00A21801A31803A21807180F183FEF01FF93B6FCA6EEC001EF003F180F18071803A2
-1801A31800A896C9FCB3A5B912F8A657617AE065>I<B912E0A6C702E0C7FCB3B3B3B3AE
-B912E0A633627CE13C>73 D<BA12F8F1FFE01AFEF2FFC01BF01BFED800010280C76C7F07
-0714C0070014F0747F081F7F747F747F7480A2748089A37480A389A865A3505CA265A250
-5C9AC9FC505B505B505B087F5B4FB55A0707148096B548CAFC93B812F81BC050CBFC621A
-FF932680000314C0DE007F7F071F13F8737F737F737F73808885888688A2747FA688A688
-A676140FF71F80A374801F3F86771400745E746E5BB96E6E5B746E485A75EBFE07091F90
-B55A090715E009015DCF003F91C7FC0A0013FC71647AE178>82 D<DBFFFCEC01E0020FD9
-FFE01303027F02FC130749B7130F0107EEC01F011F16F049D9C007EBF83F4948C7383FFE
-7FD9FFF8020FB5FC4801E014014849804849153F91C97E484882001F834982003F83845B
-007F187FA2193FA200FF181FA27F190FA27FA26D17078080806C01F893C7FC80ECFF8015
-F86CECFFC016FC6CEDFFE017FE6CEEFFE018F86C17FE6C717E6C846C846D17F86D836D83
-6D8313036D18806D6C17C0020F17E01401DA000F16F01500040715F8EE007F1703050014
-FC183F84060713FE84A2007C8300FC83A2197FA3193F7EA31AFC7EA27F1AF86D177F7F1A
-F06D17FF6D18E06D5E01FF18C06E4B138002E04B130002F84B5A02FFED3FFC01CF01E0EC
-FFF8018301FF010F5B010191B65A6D6C5E48011F93C7FC48010315FC48D9003F14E04802
-0149C8FC476677E35A>I<B96C023FB612FEA6D8000102C0CA0007EBF000E2007FC7FCB3
-B3B3AA656D63A2821C01806570170380525A6E7F6E4F5A70171F6E626E6D4D5A6E6D177F
-525A6E6E030390C8FC033F01E04B5A6F6DED1FFC6F01FCED7FF80303D9FF80903803FFE0
-6F02F8017F5B6F6C90B7C9FC041F5E040716F8040016C0050F4ACAFCDD003F13C06F647A
-E17C>85 D<913803FFFE027FEBFFF00103B612FE010F6F7E4916E090273FFE001F7FD97F
-E001077FD9FFF801017F486D6D7F717E486D6E7F85717FA2717FA36C496E7FA26C5B6D5A
-EB1FC090C9FCA74BB6FC157F0207B7FC147F49B61207010F14C0013FEBFE004913F048B5
-12C04891C7FC485B4813F85A5C485B5A5CA2B55AA45FA25F806C5E806C047D7F6EEB01F9
-6C6DD903F1EBFF806C01FED90FE114FF6C9027FFC07FC01580000191B5487E6C6C4B7E01
-1F02FC130F010302F001011400D9001F90CBFC49437CC14E>97 D<92380FFFF04AB67E02
-0F15F0023F15FC91B77E01039039FE001FFF4901F8010113804901E0010713C049018049
-13E0017F90C7FC49484A13F0A2485B485B5A5C5A7113E0485B7113C048701380943800FE
-0095C7FC485BA4B5FCAE7EA280A27EA2806C18FCA26C6D150119F87E6C6D15036EED07F0
-6C18E06C6D150F6D6DEC1FC06D01E0EC7F806D6DECFF00010701FCEB03FE6D9039FFC03F
-FC010091B512F0023F5D020F1580020102FCC7FCDA000F13C03E437BC148>99
-D<F17FF8050FB5FCA6EF000F8484B3A892380FFF804AB512F8020F14FE023FECFF8391B7
-12E301039138807FF3499039F8000FFB011F01E00103B5FC494913004990C87E49488148
-498148834A815A485BA2485BA25AA3485BA4B5FCAE7EA46C7FA37EA26C7FA26C5F806C5F
-6C6D5D6C6D5D017F93B5FC6D6C6C0103806D6D49806D01F0D91FF7EBFFFE6D9039FE01FF
-E7010190B612876D6CECFE07021F14F8020314E09127003FFE00ECC0004F657BE35A>I<
-92380FFFC04AB512FC020FECFF80023F15E091B712F80103D9FE037F499039F0007FFF01
-1F01C0011F7F49496D7F4990C76C7F49486E7F48498048844A804884485B727E5A5C4871
-7EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA380A27EA27E6E160FF11F806C
-183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01E04A5A6D6DEC3FE00103
-01FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715E0020092C8FC030713F0
-41437CC14A>I<EE3FFC0307B51280033F14C04AB612F0020715F84A9038F03FFC4AEB80
-7F913A7FFE00FFFE4A5A4B4813FF4913F05B4913E0A24913C0A27013FE4949EB7FFCEF3F
-F8EF1FF0EF07C094C7FCB0B812C0A6D8001F01C0C8FCB3B3B0007FB612FCA638657CE431
->I<F107F8DB7FFEEC3FFE020FB5D8F001B5FC027FDAFE03148049B7128F49DCDFFD13C0
-010FD9F00FEBFFC149D9800114014990C7EBFC0349486E6C7E4948EC3FFF48496E018113
-800780130048F0C03E97C7FC48496E7FA34884A96C60A36C6D4A5BA26C60A26C6D4A90C8
-FC6D6C4A5A6D6C4A5A6D6D485BDBF00F5B4990B612C060D97C7F4AC9FCD9FC0F14F09126
-007FFECAFC92CCFC1201A47FA27F8014F091B77E18FE6CEFFFC019F06D17FC19FF6D846D
-846D846D84013F8490BAFC0003854801E0C712014890C9000F7F484816014848EE007F48
-48717E8512FF5B85A56D5F007F616D173F003F616D177F6C6C4D5A6C01C003035B6C6D4B
-5B6C01F8031F5BC601FF92B5C7FC6D01F8011F5B011F90B712F8010717E0010094C8FC02
-0F15F0DA003F01FCC9FC4A607CC151>I<903807FF80B6FCA6C6FC7F7FB3A8EF1FFF94B5
-12F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FDB83F86D7FDB87F07FDB8F
-C0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007B71280A651647B
-E35A>I<EB0FE0EB3FF8497E48B5FCA24880A24880A76C5CA26C91C7FCA238007FFC6D5A
-EB0FE090C9FCAF903807FF80007FB5FCA6C6FC7F7FB3B3AEB712C0A622657BE42C>I<90
-3807FF80B6FCA6C6FC7F7FB3B3B3B3ADB712E0A623647BE32C>108
-D<902607FF80D91FFFEEFFF8B691B500F00207EBFF80040702FC023F14E0041F02FF91B6
-12F84C6F488193267FE07F6D4801037F922781FE001F9027E00FF0007FC6DA83F86D9026
-F01FC06D7F6DD987F06D4A487F6DD98FC0DBF87EC7804C6D027C80039FC76E488203BEEE
-FDF003BC6E4A8003FC04FF834B5FA24B5FA24B94C8FCA44B5EB3B2B7D8F007B7D8803FB6
-12FCA67E417BC087>I<902607FF80EB1FFFB691B512F0040714FC041F14FF4C8193267F
-E07F7F922781FE001F7FC6DA83F86D7F6DD987F07F6DD98FC0814C7F039FC78015BE03BC
-8003FC825DA25DA25DA45DB3B2B7D8F007B71280A651417BC05A>I<923807FFE092B6FC
-020715E0021F15F8027F15FE494848C66C6C7E010701F0010F13E04901C001037F49496D
-7F4990C87F49486F7E49486F7E48496F13804819C04A814819E048496F13F0A24819F8A3
-48496F13FCA34819FEA4B518FFAD6C19FEA46C6D4B13FCA36C19F8A26C6D4B13F0A26C19
-E06C6D4B13C0A26C6D4B13806C6D4B13006D6C4B5A6D6D495B6D6D495B010701F0010F13
-E06D01FE017F5B010090B7C7FC023F15FC020715E0020092C8FC030713E048437CC151>
-I<DB0FFFEC01F04AB500E01303020F02F81307023F14FE91B7130F01030280EB801F4990
-3AFC001FC03F011F01F0EB0FE04949903803F07F490180903801F8FF90B56E7E4891C8B5
-FC48498184485B484981A248835C5A845C5AA4B55AAE7E80A37EA2807EA26C6D5D606C7F
-606C6D5D7E6C6D92B5FC6D6D5B6D6D13076D6DEB0FEF6D01F8EB3FCF6D9039FE01FF8F01
-0190B6120F6D6C14FC021F14F0020314C09139003FFE0092C8FCB3A3053FB612FCA64E5D
-7BC055>113 D<D90FFFEB0FFCB690383FFF8093B512E04B14F04B14F8923907FC7FFC92
-390FE0FFFEC6EC1F806DD93F0113FF6D133E157E157C15F8A215F07013FEA24BEB7FFCEF
-3FF8EF0FE04B90C7FCA55DB3B0B712F8A638417BC042>I<913A3FFF8007800107B5EAF8
-1F011FECFE7F017F91B5FC48B8FC48EBE0014890C7121FD80FFC1407D81FF0801600485A
-007F167F49153FA212FF171FA27F7F7F6D92C7FC13FF14E014FF6C14F8EDFFC06C15FC16
-FF6C16C06C16F06C826C826C826C82013F1680010F16C01303D9007F15E0020315F0EC00
-1F1500041F13F81607007C150100FC81177F6C163FA2171F7EA26D16F0A27F173F6D16E0
-6D157F6D16C001FEEDFF806D0203130002C0EB0FFE02FCEB7FFC01DFB65A010F5DD8FE03
-15C026F8007F49C7FC48010F13E035437BC140>I<EC07E0A6140FA5141FA3143FA2147F
-A214FF5BA25B5B5B5B137F48B5FC000F91B512FEB8FCA5D8001F01E0C8FCB3AFEF0FC0AC
-171F6D6D1480A2173F6D16006F5B6D6D137E6D6D5B6DEBFF836EEBFFF86E5C020F14C002
-035C9126003FFCC7FC325C7DDA3F>I<902607FFC0ED3FFEB60207B5FCA6C6EE00076D82
-6D82B3B3A260A360A2607F60183E6D6D147E4E7F6D6D4948806D6DD907F0ECFF806D01FF
-EB3FE06D91B55A6E1500021F5C020314F8DA003F018002F0C7FC51427BC05A>I<007FB6
-00C0017FB512F8A6D8001F01F8C70007EBF0006D040190C7FC6D6D5D6D6D4A5A6D6D4A5A
-70495A6D4C5A6E7F6E6D495A6E6D495A7049C8FC6E4A5A6E6D485A6E6D485A6E13FFEF8F
-F06EEC9FE06FEBFFC06F5C6F91C9FC5F6F5B816F7F6F7F8481707F8493B57E4B805D4B80
-DB0FF37FDB1FE17F04C080153F4B486C7F4B486C7F4A486D7F4A486D7F4A5A4B6D7F020F
-6E7F4A486D7F4A486D804A5A4AC86C7F49486F7F4A6F7F0107707FEB3FFFB600F049B7FC
-A650407EBF55>120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmr12 14.4 49
-/Fh 49 121 df<15E01401EC03C0EC0780EC0F00141E5C147C5C495A13035C495A130F5C
-131F91C7FC133E137EA25BA2485AA25B1203A2485AA3120F5BA2121FA25BA2123FA290C8
-FCA35AA5127EA312FEB3A3127EA3127FA57EA37FA2121FA27FA2120FA27F1207A36C7EA2
-12017FA26C7EA2137EA2133E7F80130F8013076D7E8013016D7E147C143C8080EC0780EC
-03C0EC01E014001B7974D92E>40 D<12E07E12787E7E7E6C7E7F6C7E6C7E7F1200137C13
-7E133E133F7F6D7E80A26D7EA26D7EA2130180A26D7EA380147EA2147FA280A21580A214
-1FA315C0A5140FA315E0B3A315C0A3141FA51580A3143FA21500A25CA2147EA214FE5CA3
-495AA25C1303A2495AA2495AA25C49C7FC5B133E137E137C5B12015B485A485A5B48C8FC
-121E5A5A5A5A1B797AD92E>I<120FEA3FC0EA7FE012FF13F0A213F8A3127F123FEA0F38
-1200A513781370A313F013E0A2120113C0120313801207EA0F00121EA25A5A12300D2376
-8B21>44 D<B612FEA71F077F9C27>I<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F
-000C0C768B21>I<EC1FF891B5FC010314C090390FF81FF090391FC003F849486C7E017E
-C7127E49800001168049141F4848EC0FC0000716E0491407000F16F0A34848EC03F8A200
-3F16FCA44848EC01FEA700FF16FFB3A5007F16FEA56D1403A2003F16FCA4001F16F8A26D
-1407000F16F0A26C6CEC0FE0A26C6CEC1FC0A26C6CEC3F806C6CEC7F00017F14FE6D6C48
-5A6D6C485A90390FF81FF00103B512C0010091C7FCEC1FF830517BCE3B>48
-D<14075C5C147F5C1307133F000FB5FCB6FC13F913C1EAF0011200B3B3B3A7497F010F13
-E0B712FEA4274F75CE3B>I<EC7FE0903803FFFE010F6D7E013F14E0D9FF0013F8D801F8
-EB1FFCD803E06D7E4848EB03FF48486D138090C813C0001E16E0001C157F003CED3FF012
-380078ED1FF81270A2B4ED0FFC13C07FA66C5A6C5A000EC8FCC9EA1FF8A317F0163FA2EE
-7FE017C016FF17804B1300A24B5A4B5A5E4B5A4B5A4B5A5E4BC7FC15FE4A5A4A5A4A5A4A
-5A5D4A5A4AC8FC147E5C4948141CEB03E0495A4948143891C8FC131E5B5B491578485A48
-481570484815F048B7FCA25A5A5AB812E0A42E4F7ACE3B>I<EC3FF849B57E010F14E090
-391FC01FF890397E0003FC01F86DB4FCD801E06D13804848EC7FC0484815E048C8123F01
-C015F013F0486CEC1FF87FA56C5AA2EA03E0C9EA3FF0A317E0167F17C016FF17804B1300
-5E4B5A4B5A4B5AED3FC0DA07FFC7FC903803FFFC5DEDFF8090C7EA1FE0ED07F8ED01FE6F
-7EEE7F8017C0EE3FE0EE1FF017F8A2EE0FFC17FEA2160717FFA3120FEA3FC0487E487EA4
-17FE160F5B6C4815FC90C8FC0078ED1FF87E003EED3FF06CED7FE06C7E6C6CECFFC0D803
-F0491380D801FC903807FE003A00FFC01FFC013FB512F0010F14C0010391C7FC9038003F
-F830517BCE3B>I<000316C001C0140301F8141F903AFFC003FF8091B612005E5E5E16E0
-16804BC7FC019F13F8018113800180C9FCB0EC0FF0ECFFFE01836D7E903987F01FE09039
-9F0007F801BE6D7E01F86D7E496D7E49EC7F805BEE3FC04915E0C9121F17F0A317F8160F
-A317FCA5120EEA3F80487E12FF7FA217F85B161F5B48C813F012700078ED3FE0A26C16C0
-167F6CEDFF80001F16006C6C495A6C6C13036C6CEB07F8D801F8EB1FF06CB4EB7FE06DB5
-1280011F49C7FC010713F8010013C02E517ACE3B>53 D<ED3FE0913803FFFC020F13FF91
-393FE01F8091397F0007C0D901FCEB01E04948EB00F0495A494813034948EB0FF8494813
-1F49C7FC13FEA2485A120349EC0FF00007ED03C093C7FC485AA2121F5BA2123FA3127F5B
-EC0FFF023F13C091B512F03AFFC1F003FC9039C3C000FED9C780137F91C7EA3F8001CE15
-C001DCEC1FE0160F01F815F0EE07F85B17FCA24915FE1603A34915FFA4127FA66C7EA317
-FE121FA216076C6C15FCA2000716F86D140F000316F06DEC1FE012016C6CEC3FC06DEC7F
-806D6CEBFF006D6C485A90390FF80FFC6DB512F0010114C06D6C90C7FCEC0FF830517BCE
-3B>I<121EA2121F13F090B812C0A4481780A218005FA2003CC9123C00385E0078167017
-F000704B5A5F16034C5A94C7FC485D161E5EC9123816785E5E15014B5A5E15074BC8FCA2
-151E153E153C157C157815F8A24A5AA21403A25D1407A2140FA25D141FA3143FA3147F5D
-A414FFA65BAC6D90C9FC143C32537AD03B>I<EC1FF891B5FC010314E090390FF00FF890
-391F8001FC017EC77E49EC3F80D801F0141F0003ED0FC04915E048481407EE03F0120F49
-15F81601121FA37FA36D14036D15F07F6C6CEC07E07F6D6CEB0FC06C6D131F02F0EB3F80
-6C6D14006C01FE137E6E485A6CECC3F06DEBE7E0011FEBFF806D49C7FC01037F6D806D6C
-13E091B57E010314FCD90FC77FD93F817FD97E0014C049133F48486D13E04848010713F0
-48486D13F848481300001FED7FFC49141F48C8EA0FFE1607007E1503EE01FF8212FE4816
-7FA2173FA56C163E127E177E007F167C6C16FC6D15F86C6C14016C6CEC03F06DEC07E06C
-6CEC0FC06C6CEC3F80C6B4ECFF0090397FE007FC011FB55A010714E0010191C7FC903800
-1FF830517BCE3B>I<EC1FF891B5FC010314C090390FF00FE090391FC003F890397F8001
-FC01FEC77E0001157F4848EC3F805B0007ED1FC0484815E0001F150F4915F0123F160700
-7F16F85BA217FC12FFA2160317FEA617FFA35E127FA37F003F5DA2121F6D5C000F151B00
-07153B7F6C6C1473000115E36C6C1301017FEB03C3903A3FC00F83FE010FB51203010313
-FC010013F091C7FC160717FCA317F8A2160F17F0A2161FD803C015E0EA0FF0486CEC3FC0
-1780167F170016FE150149495AD80FC0495A90C7485A6C6C495A01E0495A2703FC01FFC7
-FC6CB55A6C6C13F8011F13E0010390C8FC30517BCE3B>I<120FEA3FC0EA7FE0EAFFF0A6
-EA7FE0EA3FC0EA0F00C7FCB3A9120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C33
-76B221>I<EE7FF80307B57E033F14F09239FF8007FCDA03F8C7127FDA0FC0EC0FC0023F
-C8EA03F0027CED00F84A167CD903E0161F4948707E4948707E49CA6C7E013E717E013C17
-0049187849DA1FE0804848DAFFFC80030713FF484890270FF01F807F484890273FC007C0
-EB078092397F0001F048C700FE6D6CEB03C04A481478000E01036F1301001E49486E14E0
-001C4A91380FF800003C010F7013F00038494802071470A20078494802031478A200701A
-384A5AA200F01A3C481A1C4AC8FCAB6E7E7E1270A26E7E12781B3800386D6C1407A2003C
-6D6C140F001C1307001E6E021F1470000E6D6C143F000F0101157B6E6CDAF9FE13E06C6C
-017FD901F1130192273FC007C0EB03C06C6C903C0FF01F807F07806C6C6DB539003FFF00
-030001FCEB0FFE6C6CDA1FE0EB03F8017891CBFC7F133E7F6D7E6D7E6D6CEF01FCD900F8
-1707027CEF3FF0023F933801FF80DA0FC092381FFE00DA03F8913801FFF0912600FF8090
-B5C7FC033FB612F8030792C8FCDB007F13804E557AD35B>64 D<EE03804C7EA34C7EA34C
-7EA34C7EA34C7EA24C7E16E7A203017F16C3A20303801681A2DB07017F82A2030E80177F
-A24B80173FA24B6D7EA20378800370130FA203F0804B1307A20201814B7FA24A488183A2
-4AC78083A2020E82187FA24A6F7E021FB7FC4A82A30278C8EA1FFC0270150FA202F0824A
-1507A249488284A249488384A249CA7FA24984010E177FA2011E84193F133E017F844848
-6C4C7E000F01E04B487EB500FE037FEBFFFEA44F557CD458>I<B812FEEFFFC018F818FE
-26007FF8C73807FF806D4802017F011F6F6C7E727E727E727E727EA2727EA2721380A21A
-C0A384A360A21A80A2601A00A24E5A180F614E5A4E5AF0FFE04D1380050790C7FCEF7FFC
-91B712E08418FE02F0C73801FF809438007FE0F01FF8727EF003FE857213807213C0F17F
-E0A2F13FF0A21AF8191FA21AFCA81AF8193FA21AF0197FF1FFE0A24E13C04E1380604E13
-00F03FFC013FEEFFF8496C02075BBA12C096C7FC18FC18C046527AD153>I<BA12FCA426
-007FFCC712016D489138001FFE011F160318011800197E193EA2191EA285A385A6F10380
-A2171CA296C7FCA5173CA3177C17FC1601160F91B6FCA49138F8000F16011600177C173C
-A3171CA794C9FCB3497E49B4FCB712E0A441527BD14C>70 D<DC1FFC14060303B56C130E
-031F02F0131E037F14FC912801FFF801FE133E0207903980001F80DA1FFCC73807C07EDA
-3FF0913803E0FEDAFFE0EC00F049018015794990C9123D4948161F4948160F4948160749
-5A494816034A160113FF484916004890CBFC1A7E485AA24848183EA2121F49181EA2123F
-5B1A0E127FA397C7FC5B12FFAE127F6D4BB612FEA4003F93C7003F13806D94380FFE0019
-07121FA27F120FA26C7EA26C7EA26C7F6C7F137F806D7E6D6C160F6D7E6D7E6D6C161F6D
-01C0153D6D6D157DDA3FF815F8DA1FFE913803F07E912607FFC090380FE03E020101FC90
-387F801E6E6CB538FE000E031F02F81306030302E090C7FC9226001FFEC9FC4F567AD35C
->I<B70107B612F8A4C66C48C80003EBF0006D486F5B6D486F5BB3AD91B9FCA402F8C9FC
-B3B1496C4B7F496C4B7FB70107B612F8A44D527BD158>I<49B612FEA490C7003F138092
-380FFE001507B3B3B3A21206EA3FC0487E487EA44B5AA25B007F5D0180131F0078C75B6C
-143F003E4A5A6C5D6C6C495A2707E003FEC7FC3901FC07FC6CB512F0013F13C0D907FCC8
-FC2F547BD13C>74 D<B500FC95B512FCA36E5FD8007FF2F800D93DFF943803BFF0011D62
-A2011C6DEE073FA36E6C160EA36E6C161CA26E6C1638A36E6C1670A36E6C16E0A36E6CED
-01C0A26E6CED0380A36E6DEC0700A36F6C140EA36F6C5CA26F6C5CA36F6C5CA36F6C5CA2
-6F6C495AA36F6C495AA36F6D48C7FCA393387FC00EA2706C5AA3706C5AA3706C5AA3706C
-5AA270B45AA3705BA3013E6E90C8FC137F496C4E7E000701F0027E4B7EB66C4BB612FC17
-3CA35E527AD16B>77 D<B500FC030FB512F8A28080D8003FDC007F13006D6DED0FF8735A
-011D6D6F5A011C6D6F5AA26E7E81143F6E7E81140F6E7E82806E7F82806F7E82153F6F7E
-A26F7E6F7EA26F7F83816F7F83167F707E83161F707E838270138018C0827013E0A2EF7F
-F0EF3FF8A2EF1FFC18FE170FEF07FF1981837113C119E183F07FF119F9183FF01FFD19FF
-8484A28484A284A2197F193F133E017F171F496C160F000713F0B66C15071903A219014D
-527BD158>I<EE7FF80307B57E033F14F09239FFC00FFC913A03FE0001FFDA0FF8903800
-7FC0DA3FE0EC1FF0DA7F80EC07F84AC86C7E49486F7E49486F7E4948707E4948707E4948
-707E4948707E017F844948707E91CA120348854848717EA24848711380A2000F1AC04918
-7F001F1AE0A34848F03FF0A3007F1AF8A249181FA300FF1AFCAE6C6CF03FF8A5003F1AF0
-6D187FA2001F1AE0A26D18FF000F1AC0A26C6C4D1380A200031A006D5F6C616C6D4C5A6E
-160F017F606D6C4C5A6D6C4C5AA26D6C4C5A6D6C4C5A6D6C4B90C7FCD900FFED03FCDA7F
-C0EC0FF86E6C4A5ADA0FF8EC7FC0DA03FE4948C8FC913A00FFC00FFC033FB512F0030714
-809226007FF8C9FC4E567AD35B>I<B812C017FEEFFFC018F026007FFCC713FC6D48EC0F
-FF011F03017F9438007FE0727E727E727E180785727EA28684A286A762A26097C7FCA24E
-5A614E5A4E5A4E5AF0FFC04D90C8FCEF0FFEEFFFF891B712C04DC9FC839126F8000113C0
-9338003FF0EF0FFC717EEF01FF85717F727EA2727EA2727EA985A81B0785180FA21B0F06
-07140E496C82496C6F141EB76EEB801C72EBC03C96387FE0F896381FFFF0CC000713E096
-38007F8050547BD156>82 D<DA3FF0130349B55B010714C0011FECF00F903A7FE00FF81F
-49C712FED801FCEC3F3F4848EC1FBF48486EB4FC48481403485A4980003F8190C97E5A83
-127E8312FEA283A37E837FA27F007F93C7FC7F7FEA3FFC7F6C6C7E14F86CEBFF806C14F8
-EDFF806C15F06C15FE6C6C806D15C0010F81010315F8D9007F80140F020080030F7F0300
-1480161F040713C0160182EF7FE0A2173FEF1FF0A200E0160FA31707A37EA318E07E170F
-7E18C06C161F6C17806D153F6D16006D157E6D15FED8FCFC4A5A017F4A5A26F83FC0EB0F
-F0D90FFEEB7FC0D8F003B65A48C64AC7FC023F13F848010113C034567AD341>I<003FBB
-12C0A449C79038F0000701F06E48130001C0183F48C8EE0FE0007E1907007C1903A20078
-1901A400701900A500F01AF0481A70A6C91700B3B3AC4C7E030313FC027FB712E0A44C51
-7CD055>I<B600F8010FB66C010FB512E0A4000149C8001F01E0C8EBFE0026007FF80307
-0180ED3FF04A94C9EA0FE0013F7060785A6E83011F7095C7FCA26E83010F70170EA2866D
-6C4B5FA36D6C922603BFF05DA36F9126071FF815786D1C70A26F020F6D15F06DDC0E0F5E
-A26F021E6D1401027FDB1C075EA26F023C7F023FDB38034B5AA2876E6C4A6C4BC8FCA36E
-6C4A6C6D130EA36F49486D6C131E02071A1CA26F01036F133C6E4B013F1438A2DC80076F
-13786E92C7001F1470A27048816E020E020F5CA2876F6C480207495AA36F6C486E6C485A
-A370486E1387031F96C9FCA2DCFCF016CF030F496E13CEA204FF17FE6F496F5AA36F496F
-5AA36F90C96C5AA36F48705AA34C1607047C5FA30438705A73547ED178>87
-D<ECFFC0010F13F8013F13FE9039FF00FF80D801F0EB3FE0D803C0EB0FF0486C6D7E01F8
-6D7E000F816D13016F7EA3707E6C5AEA01E0C9FCA6ED3FFF020FB5FC9138FFFC7F010713
-00EB1FF0EB7FC04848C7FCEA03FC485A485A485A123F5B485A187012FF90C8FCA216FFA3
-5D6D14BF007F14036DEB073F6C6C90390F1FC0E06C6C131E6C6C90393C0FE1C02707FE01
-F013FF0001B5486C13806C6C90398003FE00D907FCC712F834367BB43B>97
-D<EB7F80B5FCA41203C6FC137FB3A6ED07FC92387FFF800281B512E0913987F00FF89139
-8F8001FC029EC7B4FC02BC6E7E02F86E7E4A6E7E4A6E7E4A1407844A6E7EA2841701A284
-A283A21980AB19005FA360A24D5AA24D5A804D5A6E5D6E4A5AD97E784A5A6E4AC7FCD97C
-1EEB01FE6E495A903A7807E01FF00201B512C0902670007F90C8FC90C7EA0FF839547DD2
-41>I<EC0FFE91387FFFE049B512F8903907F801FE90391FE0001FD93F80EB078049C7EA
-0FC001FE143F484815E00003157F485A485AA2485AEE3FC0003FED0F004991C7FCA2127F
-A35B12FFAB127F7FA3123F6D1570121F6D15F0000F16E06D140112076C6CEC03C06D1580
-6C6C14076C6DEB0F00D93FC0131E6D6C137C903907FC03F06DB55AD9007F1380DA0FF8C7
-FC2C367CB434>I<17FF4BB5FCA4ED0007160182B3A6EC0FF8EC7FFF49B512E0903907FC
-03F090391FE0007C49487F49C7120F01FE80484880485A000781484880A2485AA2485AA2
-127FA35B12FFAB127FA27FA2123FA27F121FA26C6C5C00075D7F6C6C5C6C6C5C6C6C021E
-7F6D6C017C13E0D91FC049EBFF8090390FF807E00103B512800100495ADA1FF091C7FC39
-547CD241>I<EC0FF891B5FC010314C090390FF80FF090391FC003FC90397F8001FE49C7
-7E4848EC7F804848143F49EC1FC0485A000FED0FE05B001F16F01607485AA2007F16F8A2
-5B160312FF90B7FCA30180C9FCA8127F7FA2123FA26D1538121F17786C6C1570000716F0
-6D15E06C6C14016C6CEC03C06C6C15806D6C130F6D6CEB1F00D90FF0133C903907FE01F8
-0101B512E06D6C1380DA07FCC7FC2D367DB434>I<157F913803FFE0020F13F091383FC0
-F891387F01FC903901FE03FE903803FC0714F81307EB0FF0A290391FE003FCED01F892C7
-FC495AB3B612FEA426003FC0C7FCB3B3A580EBFFF0007FEBFFF8A427547DD324>I<EF1F
-C0DA3FE0EBFFE0902701FFFC0313F001079039FF07E1F8903A1FE03FCF01903A3F800FFC
-03903A7F0007F80101FE010314F04848903901FC004000036F1300491300000781A24980
-000F82A8000793C7FC6D5CA200035D6D130100015D6C6C495A017F495A6E485A9039FFE0
-3FC0D801C7B5C8FC01C113FC3903803FE091CAFCA57FA27F7F7F6CB612E016FF6C16C017
-F0013F15FC8390B8FCD803F8C7001F1380D80FE0020113C04848EC007F4848ED1FE090C9
-120F127EEF07F012FE481603A56C1607007E17E0007F160F6C6CED1FC06C6CED3F806C6C
-ED7F006C6C15FED803FCEC03FCC6B4EC0FF0D93FF0EBFFC0010FB6C7FC010114F8D9001F
-1380354E7DB43B>I<EB7F80B5FCA41203C6FC137FB3A6ED07FC92383FFF8092B512E091
-3981F00FF8913983C007FC9139870003FE028E1301029C6D7E14B814B002F06E7E5CA25C
-A35CB3AD2601FFE0903801FFE0B600C0B612C0A43A537CD241>I<1378EA01FE487E487F
-A66C90C7FC6C5AEA007890C8FCB0EB7F80B5FCA41203C6FC137FB3B3A43801FFE0B61280
-A419507CCF21>I<EC0780EC1FE0EC3FF0EC7FF8A6EC3FF0EC1FE0EC078091C7FCB0EC0F
-F8EB1FFFA4EB003F140FA21407B3B3B2120C003F14F0387F800FEAFFC015E0141F15C0EC
-3F80EA7F809038007F006C13FC6CB45A000713E0C690C7FC1D6885CF24>I<EB7F80B5FC
-A41203C6FC137FB3B3B3B13801FFE0B612C0A41A537CD221>108
-D<01FFD907FEEC03FFB590261FFFC0010F13E0037F01F0013F13F8912701F80FFC9038FC
-07FE913D03C003FE01E001FF000390260700019038038000C6010E6D6C48C76C7E6D48DA
-7F8E6E7E4A159CA24ADA3FF86E7E02605D14E04A5DA34A5DB3AD2601FFE0DAFFF0EC7FF8
-B6D8C07F9026FFE03FB512F0A45C347CB363>I<01FFEB07FCB590383FFF8092B512E091
-3901F00FF8913903C007FC000349C66C7EC6010E13016D486D7E5C143002706E7E146014
-E05CA35CB3AD2601FFE0903801FFE0B600C0B612C0A43A347CB341>I<EC0FFC91387FFF
-8049B512E0903907F807F890391FE001FE90393F80007F017EC7EA1F80496E7E48486E7E
-00038248486E7EA248486E7EA248486E7EA2003F82A24848ED7F80A400FF17C0AB007F17
-80A26D15FFA2003F1700A2001F5E6D1401000F5E6D140300075E6C6C4A5A6C6C4A5AA2D8
-007FEC3F806D6C49C7FC90391FE001FE903907F807F86DB55AD9007F1380DA0FFCC8FC32
-367CB43B>I<90397F8007FCB590387FFF800281B512E0913987F00FF891398F8003FC00
-0190399E0001FF6C01BC6D7FD97FF86E7E4A6E7E4A6E7E4A140F844A6E7EA2717EA3717E
-A4711380AB4D1300A44D5AA24D5AA2606E140F4D5A6E5D6E4A5A6E4A5A02BC4AC7FC029E
-495A028FEB07FC913987E01FF00281B512C0DA807F90C8FCED0FF892CAFCB13801FFE0B6
-12C0A4394B7DB341>I<01FFEB1F80B5EB7FF0913801FFF8913803E1FC91380783FE0003
-EB0F07C6131EEB7F1C1438143091387003FC91386000F0160014E05CA45CB3AA8048487E
-B612F0A427347DB32E>114 D<D907FE13C090387FFF8148B512E33907F803FF390FC000
-7F4848133F48C7121F003E140F007E1407127C00FC1403A315017EA27E7F6C6C90C7FC13
-F013FF6C13F86CEBFF806C14E06C14F86C14FEC680013F1480010714C0D9003F13E01403
-9138007FF0151F00E0140FED07F8A26C1403A215017EA36C15F0A26C14036C15E015076D
-EB0FC06DEB1F80D8FDF0EB3F0039F8FC01FE39F07FFFF8D8E01F13E0D8C00390C7FC2536
-7CB42E>I<EB01C0A71303A41307A3130FA2131FA2133F137F13FF5A5A001F90B512E0B7
-FCA326003FC0C7FCB3A71638AC6E1378011F1470A26D6C13F016E0903807F801903903FC
-03C0903901FE07806DB51200EC3FFCEC07F0254B7EC92E>I<D97F80EC7F80B591B5FCA4
-00031503C61500017F157FB3AC17FFA35EA3013F5C6EEB077FA2011F020E7F6D6C011C13
-F06E0178EBFFC0903903FC01F06DB512E06D6C1380912607FC00EB80003A357CB341>I<
-007FB5D8800FB51280A4C69026FC0003EBF000D93FF86D1380011F4BC7FC010F15F80107
-5D6D6C5C6E495A6D6C5C6D14076E6C48C8FCEDC01E6E6C5A021F133891380FF0786F5A91
-3807FDE002035BEC01FF5E80157F6F7E824B7E15FFEDE7F802017F913803C3FEEC07814A
-C67E020E80021E6D7E4A133F4A6D7E4A80707E4948130749486D7E010781010F6E7E013F
-8201FF8200076D010713F0B500F8011FEBFFE0A43B337FB23E>120
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmr17 20.74 26
-/Fi 26 120 df<EA0780EA1FE0EA3FF0EA7FF8EAFFFCA6EA7FF8EA3FF0EA1FE0EA07800E
-0E728D2B>46 D<ED0FFC92B512C0020314F091390FF807FC91393FC000FF4AC7EA3F80D9
-01FEEC1FE0D903F8EC07F049486E7E49486E7E49486E7E013F824A8149C96C7EA201FE70
-7E000184A24848707EA34848707EA2000F84A34848707EA4003F84A54848701380A900FF
-19C0B3AC007F1980A56D5EA3003F1900A5001F60A26D1607A2000F60A36C6C4C5AA30003
-606D161F000160A26C6C4C5AA26D6C4B5A013F94C7FC6E5D6D6C4A5A6D6C4A5A6D6C4A5A
-6D6C4A5A6D6C4A5A6D6C4A5ADA3FC001FFC8FC91390FF807FC0203B512F0020014C0DB0F
-FCC9FC42757AF14F>48 D<ED7FF00207B57E023F14F091B612FC4915FF902707FE007F13
-C0D90FE0010F7FD91F80010113F849C87F017CED3FFE496F7E48486F138048486F13C048
-48817113E0484817F090CAFC48EF7FF8121E003EEF3FFC123CA2007CEF1FFE1278A2EA7F
-C0D8FFF0EE0FFF7F7F7FA76C5A6C5A6C5AD807C0EE1FFECBFCA3F03FFCA3F07FF8A219F0
-18FF19E05F19C04D1380A24D130060170F4D5A604D5A4D5A604D5A4C90C7FC4C5A4C5A5F
-4C5A4C5A4C5A4C5A94C8FC16FE4B5A4B5A4B5A4B5A4B5A4B5A4BC9FC157E5D4A5A4A5A4A
-5A4A5A4A4815074AC9FC143E4A160E5C495A495A495A495A49CA121E011E171C5B5B4917
-3C485A4848177C4848EE01FC48B912F8A25A5A5ABAFCA219F0A3407279F14F>50
-D<ED1FFE4AB512E0020F14FC023F14FF9126FFE00713C0D903FEC713F0D907F0EC3FF8D9
-1FC06E7E49C8EA07FE017E6F7E017883496F7F48486F7F120349834848167F01F88313FE
-6D6C153F486D82A4805CA37E6C5B6C48C95BD80078167F90CAFCA261A218FF61A24D5B61
-5F96C7FC4D5A60170F4D5AEF3FE04D5A4D5A4C48C8FCEE07FCEE1FF092381FFFC091260F
-FFFEC9FCA2EEFFE091C7EA07FCEE00FFEF3FC0EF1FF0717EEF07FE717E717F717F85727E
-727EA285727EA2727EA31A80A2841AC0A3EA07E0EA1FF8487E487EB5FCA51A80605BA26C
-48180013F001C05E007CCA5B7E4E5A7E6D4C5A6C6C5F000717FF01F04B5B6C6C4B5B6C6C
-5F6CB4030F90C7FC6D6C4A5AD93FF04A5AD90FFCECFFF8902707FFE00713E0010190B612
-806D6C92C8FC020F14F8020314E09126001FFEC9FC42757AF14F>I<BA12FCF1FFE01AFC
-F2FF801BE0D8003F01E0C8000F13F801074903007F4BEE3FFF6D060F7F747F08017F747F
-757E757E757E8887751380A21DC0871DE087A31DF0A387A363A31DE0A2631DC0A2631D80
-511300A2515A515A515A515A505B505B505B081F90C7FCF23FFCF2FFF0070713C0077F90
-C8FC92B812F8621AFF0380C8000313E09638003FF8F20FFE973803FF807413E0746C7E75
-7E757E757E757E7513801DC07513E0A27513F0F47FF8A21DFC1C3FA21DFE1C1FA21DFFAA
-1DFEA21C3FA21DFC1C7FA2F4FFF8A25113F0631DE05113C051138063511300F3FFFE505B
-08075B49061F13E06F047F5B013F6D0307B5C7FCBC5A1BF01BC050C8FC1AC0607678F571
->66 D<BD12F8A5D8003F01F0C98001074916074B16006D193F1B1F1B071B031B011B0088
-1C7EA21C3EA21C1EA31C0EA21C0FA388A6F40380A3191CA299C7FCA7193CA4197CA219FC
-18011803180F18FF92B7FCA503C0C7FC180F180318011800197CA2193CA4191CA996CAFC
-B3AB497F81013F13FEB812E0A5597678F568>70 D<DE7FFCED01C0050FB512C094B600F8
-1403040315FE041F6F6C1307047FD9F00013E04B4848C7D80FF0130F030701F0EC03FC4B
-0180DA00FE131FDB3FFEC9123FDB7FF893381F803F4A4848EE07E04A01C0933803F07F4A
-4916014A90CBEAF8FFDA1FFC187C4A48183F4A48844A5A498649498449498492CCFC4948
-85131F4A85495A017F1B7F5C01FF1B3F5C5A4A1A1F5AA248491A0FA25A91CE1207A25A5B
-A2003F1C03A25BA2127F9AC8FCA45B12FFB26C7EA3083FB712F8A3123F7F97C7ECF8000A
-0F13E0001F755B887F7EA2807EA26C7FA26C7FA27E806D7EA26D7E131F806D7E7F816D7F
-6D6D606D7F6E7E6E6C606E6C606E7E6E01C0173E6E6DEF7E7F6E6DEFFC3F9126007FFCEE
-01F86FB4933807F01F030F01C092380FE00F6F01F8ED7F80030101FF913901FF00076F6C
-01F8D93FFC1303041F90B600F01301040304C01300040093CAFC050F14F09426007FFECB
-FC6D7C78F87D>I<B600E04CB612FCA28181A2D8000F6DDC000714000103070013F86FF0
-3FE0DABFFF725A149F028F6D715AA202876D71C7FC82148302817F82148082157F6F7E82
-8183816F7F83816F7F838183167F707E83828482707F84828482707F84177F717E848385
-83717F85838583717F85187F85183F727E8684727F86848684727F86197F86193F737E1B
-80857313C0A27313E01BF0857313F81BFC1A7F1BFE1A3FF21FFF1C87861CC7867413E71C
-F7867413FFA287A28787A287A28787497E87497E87496C85EB7FFC0003B56C84B600FE84
-A288A288667678F577>78 D<B912FCF0FFF019FEF1FFC01AF8D8003F01F0C7000713FE01
-07499139003FFF804B03077F6D050113F0736C7E747EF20FFF747F747F86747F88757EA2
-757EA2757EA288A28789A99AC8FCA263A264A2515A641B7F64515A64505B5090C9FC505A
-505AF23FF8F27FE0963801FF80DF0FFECAFCF17FF895380FFFE092B8CBFC19F019FC03C0
-C7380FFF80060113E09538003FF8F11FFEF107FF737F7313E0737F747E1A3F87747E1A0F
-878688A3747FAB88AC1F101F38747FA47416787614701B7F496D1BF0756C14E0013F01FC
-051F1401B8707E0907EC03C0756CEB0780759038800F009839007FE03ECF381FFFFC0A07
-5B9938007FC06D7978F575>82 D<001FBE12F8A502F8C7000F01F0C7121F4801806E4902
-0113FC01FCC86C49EC003F491B1F01E01B07491B03491B0190C91800A2003E1D7CA2003C
-1D3CA3481D1EA500701D0EA8481D07A6CA1900B3B3B3B14D7F4D7F057F13FE031FB812F8
-A568757BF473>84 D<B700F00503B612C0A5C602FCCC003FEBFC00011F01E0070F13E06D
-497313807748C7FC6D64775A7F6F627F666F19036D64811D07027F6381023F50C8FCA26F
-61021F1A1E811D3E6E1A3C826E62A27018F86E62821C016E62826E4F5AA2701707037F61
-821C0F033F96C9FC82031F181EA270173E6F183C831C7C6F1878836F60A27115016F6083
-1B036F6083047F4C5AA271150F043F94CAFC8363041F161E83705EA272147C701678841B
-F8705E84704B5AA2721303705E841A07057F5D84053F4ACBFCA2725B051F141E841A3E71
-143C1980715CA2F1C0F8715C19E019E1715C19F171EBF3C0A219FF725BA37290CCFCA272
-5AA3725AA3725AA2725AA3725A72797EF577>86 D<913803FF80021F13F891B512FE903A
-03FC01FF80903A07E0003FE0D91F80EB0FF8013EC76C7E496E7E01F06E7E48486E7F717E
-4848153F4982D807A06F7E13FC487E6D6F7E80A2717EA46C90C8FC6C5A6C5ACAFCA6EE07
-FF0303B5FC157F913903FFFE07021F138091387FF800903801FFC0010790C7FCEB1FFCEB
-3FF0EBFFE0485B485B4890C8FC5B485A485AA2485A1A0E485AA312FF5B170FA4171FA26D
-153F007F163B177B6DDBF1FE131C003F16E16C6C14016C6C912603C0FF13386C6CEC0F80
-6C6C6C903A1F007F80706C6D017CECE1E028007FF803F8EB3FFF011FB500E06D13800103
-91C7000713009026003FF8EC01FC474D79CB4F>97 D<ED07FE92387FFFE00203B512FC91
-390FFC01FF913A3FE0001FC0DA7F80EB03E0D901FEC812F84948157C4948814948814948
-81013FEE0780494815034948ED0BC048177F91C9EAFFE048485D00075EA2485AA2485AA2
-7113C0003F70138049EE7F0095C7FC127FA35BA212FFAE127F7FA4123F7FA2121F6D1738
-120F19786C6C1770A26C6C17F019E06C6D15016C18C06D6C15036D6CED07806EED0F006D
-6C151E6D6C153ED903FE5D6D6C15F06D01C0EB03E0DA3FF0EB0FC0DA0FFE01FFC7FC0203
-B512FCDA007F13E0030790C8FC3D4D7BCB46>99 D<ED1FFC4AB512C0020714F091391FF0
-0FFC91397F8001FFD901FEC7EA7FC049486E7E49486E7E49486E7E49486E7E49486E7E49
-48140101FF824890C91380A24848EE7FC0A2485A000FEF3FE05BA2001F18F0181F485AA3
-007F18F8A349160FA212FF90B9FCA301E0CBFCAB127F7FA3123FA36C7EA219386C7E1978
-000718707F000318F06C6C17E018016C6DED03C06D6C1680013F16076D6CED0F006D6C15
-1E6D6C5D6D6C5D6DB44A5A6D6C6C495ADA3FE0EB1F80DA0FFE01FEC7FC0203B512F8DA00
-7F13E0DB07FEC8FC3D4D7BCB46>101 D<F103F8F13FFEDB1FF891B5FC92B5903903FC07
-8002079139E007E01F913D1FF00FF81F803FC0913B3FC003FC3E0002FFC7B45A49486E5A
-49486E5A49486E48EB1F8049486E6CEB060097C7FC49486E7E013F82A249486E7EA201FF
-82A24A80A24884AA6C95C8FCA26E5CA2017F5EA26D6C4A5AA2011F5E6D6C4A5AA26D6C4A
-5A6D6C4A5A496C4A5A6E4AC9FC903A0F3FC003FC903A1E1FF00FF80207B512E0D91C0091
-CAFC013CEB1FF892CCFCA25BA3137CA4137EA27F8080EB1FF091B612FE6DEDFFF818FF6D
-17E06D17F8010017FE010383010F84D93FE0C7000114E001FFC9120FD801FC04017F4848
-9338003FF84848171F4848717E48481707003F727E49170148CBFC737EA200FE85A76C61
-6C616D1701003F616D17036C6C4D5A6C6C4D5A6C6C4D5A6C6C4D5A6C6C4D5A26007F80DB
-01FEC7FCD93FE0ED07FCD90FF8ED1FF0D903FFEDFFC0010001F8011F90C8FC021FB612F8
-02011580DA000F01F0C9FC4A707DCC4F>103 D<131EEB7F80497E487F487FA66C5B6C5B
-6D5A011EC7FC90C8FCB3A7EB01F0EA07FFB5FCA51201EA007F133FA2131FB3B3B3A3497E
-EBFFFEB612FCA51E727AF12A>105 D<EB01F0EA07FFB5FCA51201EA007F133FA2131FB3
-B10507B512FEA5050114C07149C7FC19F019C0614EC8FC60EF01F04D5A604D5A4DC9FC17
-3E5F5F4C5A4C5A4C5A4C5A4CCAFC163C5E16FC15014B7E4B7E5D033F7F037C7F5D9139F1
-F07FE09139F3E03FF0ECF7C09139FF801FF8ED000F02FC804A6D7E4A13034A80707F8284
-717E173F84717E170F84717EA2717E717FA2717F727EA2727E85181F858585496C83D9FF
-FC037F13F0B600FC0103B612C0A54A787AF753>107 D<EB01F0EA07FFB5FCA51201EA00
-7F133FA2131FB3B3B3B3B3AC497EEBFFFEB612FEA51F787AF72A>I<D901F0902601FFC0
-ED0FFED807FF021F01FC92B512E0B5027F01FF020314F8922601FC0101C090390FE00FFE
-922803E0003FE090391F0001FFDB0F80D91FF8017C6D13C04BC7000F4A147FC6023C9127
-07FC01E06E7E013F496E6C48486E7E011F0170DA01FF496E7E03F0160790260FF1E04CC8
-FCDAF3C06E019E6F7E4B169C02F717BC92C913B802FFDC7FF86F7E4A5FA34A5FA44A5FB3
-B3A8496C4C6C4B7ED97FFF030301F8031F13C0B7D88007B600FC013FB612E0A57B4B7ACA
-86>I<D901F0903803FF80D807FF021F13F8B5027F13FE923A01FC03FF80923A03E0007F
-E0DB0F80EB1FF0031EC76C7EC65C013F496E7E011F496E7E5DEB0FF1DAF3C06E7E5D14F7
-92C9FC02FF835CA35CA45CB3B3A8496C4B7FD97FFF030713F0B7D8800FB612F8A54D4B7A
-CA58>I<ED07FE92387FFFE00203B512FC91390FFC03FF913A3FC0003FC04AC7EA0FE0D9
-01FEEC07F8D903F8EC01FC49486E7E4948157F49486F7E49486F7E017F8349C96C7E4916
-070001844848707EA2000784491601000F84A24848701380A2003F19C0A349177F007F19
-E0A412FF1AF0AD007F19E0A26D17FFA2003F19C0A46C6C4C1380A2000F1900A26C6C4C5A
-A26C6C4C5A0001606D160F6C606D6C4B5A6D6C4B5AA26D6C4B5AD907F003FEC7FCD903FC
-EC03FC6D6C4A5A6D6C6CEB1FF0DA3FE0EB7FC091270FFC03FFC8FC0203B512FCDA007F13
-E0DB07FEC9FC444D7BCB4F>I<D903E0EB1FE0D80FFFECFFFCB501037F923907E01F8092
-391F807FC092383E00FF4B4813E000011478D8007F13F090383FE1E015C0EB1FE39126E7
-800013C0EF7F8092C7EA3F0002EF91C7FC14EE14FE5CA45CA55CB3B3A480133F90B5FCB7
-12C0A5334B7ACA3D>114 D<DA1FFFEB038049B512E0010FECF807903A3FE001FE0F01FE
-C7EA1F9FD801F8EC07DFD807E0EC03FF484880498048C9127F48163F003E161F127E170F
-127C12FC1707A46C1603A27E7F6C7E7F6D92C7FCEA3FFC13FF6C13E06C13FF6C14F06CEC
-FF806C15F86C15FE013F6E7E010F15E0010381010081020F14FEDA007F7F1503DB003F13
-80040713C0040113E000E081177FEF3FF06C161F170FEF07F8A217037E1701A27EA37E18
-F07E17036D16E0A26D15076DED0FC06D168000FE161F017CED3F00486C157E6DEC01F826
-F80FC0EB07F026F003F8EB7FC00100B6C7FC48013F13FC02071380354D7CCB3E>I<1407
-A85CA65CA35CA35CA25CA25BA25B5B5B5B5B5B48B712FE120FB8FCA3D8000190C9FCB3B3
-A2EF01C0B0EF03806D7FA3027FEC0700815F6E6C130E021F141E6F131C6E6C5B6E6C13F8
-913901FF01F09139007FFFC0031F5BDB03FCC7FC326B7EE93D>I<02F8EE0F80D803FFEE
-3FFFB5030FB5FCA5C6EE000F013F1603011F82A2010F82B3B3A660A460A3601307606E15
-0E0103161E606E4B7F010116706D6C03F07F6FD903E013F86E6C4948EBFFF8DA1FE0EB1F
-00DA0FFE13FE0203B512F8DA007F13E0030790C7EBC0004D4C7ACA58>I<B600F0017FB5
-00F849B512FCA5000149C849C8003F13E026007FF8DB3FF8030F13004A031F705A013F4D
-ED03F8180F011F755A735E6D6C1507667315036D6C63A24E7E6D6C50C7FC85606D6C031C
-160E866FEC387F6D63866FEC703F027F62866FDAE01F1578023F1A70866F902601C00F15
-F0021F62866F90260380071401020F62866F90260700031403020762866F010E01011407
-020397C8FC866F496D5C6E190E053C1580DC8038027F131E6E191C057815C0DCC070023F
-133C037F183805F015E07048021F1378033F187004E116F092261FF1C0020F5BA204F316
-F892260FFB80913807F9C0A204FF16FD6F90C86CB45AA36F486F90C9FCA36F486F5AA36F
-48167CA24C163C047016386E4B7EC973>119 D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: a4
-a4
-%%EndPaperSize
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 1440 951 a Fi(Release)53 b(Notice)950 1158 y(BlueGn)l(u)f(T)-13
-b(esting)52 b(F)-13 b(ramew)l(ork)1501 1366 y(V)g(ersion)53
-b(2.0.3)1297 1661 y Fh(Jan-Willem)36 b(Neurden)m(burg)1593
-1811 y(jotOmega)f(dsc)1379 1960 y(56)j(Brigham)d(Hill)j(Road)1303
-2110 y(Grafton)f(MA)78 b(01519-1135)1356 2259 y(neurden)m(burg)s
-(j@acm.org)1444 2409 y(T)-10 b(el:)50 b(\(508\))37 b(839-0276)1430
-2558 y(F)-10 b(ax:)51 b(\(508\))37 b(839-7267)1442 2792
-y(Septem)m(b)s(er)g(19,)g(1999)324 3228 y Fg(1)161 b(In)l(tro)t
-(duction)324 3448 y Ff(BlueGn)m(u)35 b(is)g(a)h(framew)m(ork)f(for)g
-(testing)g(other)h(programs.)52 b(It)35 b(has)h(b)s(een)h(created)f(to)
-324 3568 y(b)s(e)30 b(compatible)e(with)i(DejaGn)m(u.)42
-b(Its)31 b(purp)s(ose)f(is)g(to)g(pro)m(vide)g(a)g(single)f(fron)m(t)g
-(end)i(for)324 3688 y(all)f(tests.)45 b(Bey)m(ond)34
-b(this,)e(BlueGn)m(u)h(o\013ers)g(sev)m(eral)g(adv)-5
-b(an)m(tages)33 b(for)f(testing:)469 3913 y Fe(\017)49
-b Ff(The)25 b(\015exibilit)m(y)e(and)i(consistency)h(of)e(the)h(BlueGn)
-m(u)f(framew)m(ork)h(mak)m(es)g(it)f(easy)568 4033 y(to)k(write)g
-(tests)h(for)f(an)m(y)h(program,)f(with)g(the)h(exception)g(of)e(GUI)i
-(applications.)469 4236 y Fe(\017)49 b Ff(BlueGn)m(u)33
-b(pro)m(vides)h(a)f(la)m(y)m(er)h(of)e(abstraction,)h(whic)m(h)h(mak)m
-(es)g(all)d(tests)k(\(if)d(cor-)568 4356 y(rectly)39
-b(written\))f(p)s(ortable)g(to)h(an)m(y)g(host)g(or)g(target)f(where)i
-(a)f(program)e(m)m(ust)568 4477 y(b)s(e)32 b(tested.)469
-4679 y Fe(\017)49 b Ff(BlueGn)m(u)37 b(is)g(written)h(in)f([incr)g
-(Tcl],)i(whic)m(h)f(in)f(turn)g(is)h(based)g(on)g(Tcl)f(\(T)-8
-b(o)s(ol)568 4800 y(Command)31 b(Language\).)43 b(The)34
-b(framew)m(ork)e(comprises)h(t)m(w)m(o)g(parts:)658 5002
-y(1.)48 b(the)33 b(testing)g(framew)m(ork,)1918 5251
-y(1)p eop
-%%Page: 2 2
-2 1 bop 658 548 a Ff(2.)48 b(the)33 b(test-suites)h(or)e(test-sets)i
-(themselv)m(es.)469 751 y Fe(\017)49 b Ff(BlueGn)m(u)31
-b(will)e(w)m(ork)j(with)f(an)m(y)h(Tcl)f(based)i(in)m(terpreter)e(as)h
-(long)e(as)i([incr)f(Tcl])568 872 y(has)f(b)s(een)h(included.)42
-b(Y)-8 b(ou)30 b(can)h(include)e('exp)s(ect',)j('Tk',)g(and/or)e(other)
-g(exten-)568 992 y(sions.)469 1196 y Fe(\017)49 b Ff(Includes)33
-b(DejaGn)m(u)f(release)h(1.6)324 1528 y Fg(2)161 b(Requiremen)l(ts)324
-1747 y Ff(The)47 b(follo)m(wing)d(mo)s(dules)i(should)g(ha)m(v)m(e)i(b)
-s(een)g(installed,)g(b)s(efore)f(y)m(ou)g(can)g(install)324
-1868 y(and/or)32 b(use)h(BlueGn)m(u:)469 2096 y Fe(\017)49
-b Ff(Tcl)32 b(release)h(8.0)f(or)g(higher,)469 2299 y
-Fe(\017)49 b Ff(incr)32 b(Tcl)g(release)h(3.0)f(or)g(higher.)470
-2528 y(An)m(y)g(other)f(extensions)i(that)d(is)h(compatible)e(with)h
-(Tcl)h(release)g(8.0)g(can)g(b)s(e)g(used)324 2648 y(as)i(w)m(ell.)324
-2981 y Fg(3)161 b(Structure)51 b(and)j(Con)l(ten)l(ts)c(of)k(the)f
-(Release)324 3200 y Ff(The)24 b(ro)s(ot)f(directory)g(of)g(the)h
-(release)g(con)m(tains)g(the)g(README)g(\014les)f(with)g(installation)
-324 3320 y(instructions)40 b(and)h(the)g(\014les)g(needed)h(to)e(build)
-g(and)g(install)f(this)h(pro)s(duct.)68 b(It)41 b(also)324
-3441 y(con)m(tains)32 b(the)h(executable)h(scripts)f(of)f(the)h(BlueGn)
-m(u)g(testing)f(framew)m(ork.)470 3561 y(The)i(top-lev)m(el)d
-(directories)h(are)h(listed)f(b)s(elo)m(w:)324 3789 y
-Fd(lib:)47 b Ff(the)28 b(pac)m(k)-5 b(ages)29 b(and)e(pro)s(cedures)i
-(that)f(mak)m(e)f(the)h(BlueGn)m(u)g(and)f(DejaGn)m(u)g(test-)568
-3910 y(ing)k(framew)m(ork.)44 b(This)33 b(also)e(includes)i(the)g
-(default)f(target)g(de\014nition)f(\014les.)324 4113
-y Fd(testsets:)48 b Ff(the)31 b(BlueGn)m(u)e(test-suites)i(and)f(test)g
-(examples.)43 b(It)30 b(con)m(tains)g(the)g(follo)m(w-)568
-4234 y(ing)h(sub)s(directories.)568 4462 y Fd(BlueGn)m(u:)48
-b Ff(test)34 b(scripts)f(to)f(test)h(the)g(testing)f(framew)m(ork)h
-(itself.)568 4624 y Fd(examples:)48 b Ff(test)34 b(suite)e(and)h(test)g
-(script)g(examples.)568 4786 y Fd(con\014g,)38 b(lib,)e(to)s(ols:)48
-b Ff(curren)m(tly)41 b(empt)m(y)-8 b(,)42 b(but)f(can)f(b)s(e)g(used)i
-(for)d(test-set)j(de-)782 4906 y(p)s(enden)m(t)34 b(con\014guration)e
-(\014les,)h(library)e(\014les,)h(and)h(to)s(ols.)1918
-5251 y(2)p eop
-%%Page: 3 3
-3 2 bop 324 548 a Fd(con\014g:)49 b Ff(curren)m(tly)33
-b(empt)m(y)-8 b(.)324 751 y Fd(do)s(c:)49 b Ff(the)28
-b(DejaGn)m(u)f(texinfo)g(source)i(and)e(the)h(do)s(cumen)m(tation)f(in)
-g('info',)g('dvi',)i('ps',)568 872 y(and)42 b('p)s(df)7
-b(')43 b(represen)m(tation,)j(resp)s(ectiv)m(ely)e(dejagn)m(u.info*,)g
-(dejagn)m(u.dvi,)i(de-)568 992 y(jagn)m(u.ps,)33 b(and)g(dejagn)m(u.p)s
-(df.)44 b(A)32 b(DejaGn)m(u)h(man)e(page)i(is)f(also)g(a)m(v)-5
-b(ailable.)568 1154 y(It)37 b(also)g(con)m(tains)g(the)h(T)1493
-1175 y(E)1547 1154 y(X)g(v)m(ersion)g(\(README.tex\))h(of)e(this)g(do)s
-(cumen)m(t)g(as)568 1274 y(w)m(ell)c(as)h(the)g('dvi',)h('ps')g('h)m
-(tml',)e(and)h('p)s(df)7 b(')34 b(represen)m(tation,)h(resp)s(ectiv)m
-(ely)g(no-)568 1395 y(tice.dvi,)d(notice.ps,)h(notice.h)m(tml,)e(and)i
-(notice.p)s(df.)324 1598 y Fd(testsuite:)48 b Ff(con)m(tains)32
-b(a)g(mixture)g(of)g(DejaGn)m(u)h(and)f(BlueGn)m(u)h(test)g(scripts.)
-324 1802 y Fd(con)m(trib:)47 b Ff(con)m(tains)33 b(examples)g(ho)m(w)g
-(DejaGn)m(u)f(is)g(used)i(at)e(Cygn)m(us.)324 2005 y
-Fd(example:)48 b Ff(con)m(tains)39 b(a)f(full)f(DejaGn)m(u)h(test)h
-(framew)m(ork)f(example)g(for)g(testing)g(the)568 2125
-y(program)31 b('calc')h(whic)m(h)h(is)f(also)g(included.)324
-2458 y Fg(4)161 b(Installation)55 b(and)f(use)f(under)f(Unix)324
-2677 y Ff(Before)37 b(y)m(ou)h(can)f(install)d(and)k(use)f(BlueGn)m(u)g
-(y)m(ou)h(need)g(to)f(ha)m(v)m(e)h(installed)d(the)i(fol-)324
-2798 y(lo)m(wing)31 b(three)i(pac)m(k)-5 b(ages:)469
-3001 y Fe(\017)49 b Ff(Tcl)32 b(v)m(ersion)h(8.0.3)469
-3204 y Fe(\017)49 b Ff(Tk)33 b(v)m(ersion)g(8.0.3)469
-3408 y Fe(\017)49 b Ff(incr)32 b(Tcl)g(v)m(ersion)h(3.0.1)324
-3611 y(The)42 b(source)g(for)e(these)i(pac)m(k)-5 b(ages)42
-b(should)f(all)e(b)s(e)i(lo)s(cated)f(in)g(one)h(directory)-8
-b(.)69 b(The)324 3732 y(sub)s(directory)33 b(in)f(the)h(directory)f
-(should)h(b)s(e:)469 3935 y Fe(\017)49 b Ff(tcl8.0.3)469
-4138 y Fe(\017)g Ff(tk8.0.3)469 4342 y Fe(\017)g Ff(itcl3.0.1)470
-4545 y(The)27 b(follo)m(wing)d(examples)i(use)h(the)f(command)f
-(`./con\014gure)i({pre\014x=/to)s(ols/...`.)324 4666
-y(This)33 b(will)e(install)g(all)g(pac)m(k)-5 b(ages)34
-b(in)e(a)h(directory)g(\\/to)s(ols".)43 b(When)35 b(y)m(ou)e(omit)f
-(the)h(\\{)324 4786 y(pre\014x"-switc)m(h)26 b(then)g(the)g
-(installation)c(default)j(will)e(b)s(e)j(the)g(directory)f(\\/usr/lo)s
-(cal".)1918 5251 y(3)p eop
-%%Page: 4 4
-4 3 bop 324 548 a Fc(4.1)135 b(Installation)47 b(of)e(needed)h(P)l(ac)l
-(k)-7 b(ages)324 733 y Ff(When)33 b(y)m(ou)g(ha)m(v)m(e)h(not)e
-(installed)f(Tcl)h(and)h(the)f(other)h(needed)h(extensions,)g(then)f(y)
-m(ou)324 853 y(need)26 b(to)f(retriev)m(e)h(the)f(sources)i(from)d
-(\\www.tcltk.com/itcl".)40 b(Y)-8 b(ou)25 b(need)h(to)f(`gunzip`)324
-973 y(the)31 b(\014les)g(and)g(do)g(a)g(`tar)g(xf`)g(of)g(all)e(these)j
-(pac)m(k)-5 b(ages)32 b(in)e(one)h(directory)-8 b(,)32
-b(let's)f(call)e(this)324 1094 y(directory)j(\\TclTk".)470
-1214 y(F)-8 b(rom)38 b(the)i(directory)f(\\TclTk",)i(y)m(ou)f(should)g
-(do)f(the)h(follo)m(wing)c(to)j(install)e(the)324 1335
-y(pac)m(k)-5 b(ages:)324 1563 y Fb(\045)51 b(cd)h(tcl8.0.3/unix)324
-1683 y(\045)f(./configure)k(--prefix=/tools/tcl8.0.3)i(--enable-gcc)e
-(--enable-shared)324 1804 y(\045)c(make)324 1924 y(\045)g(mkdir)i
-(/tools/tcl8.0.3)324 2044 y(\045)e(make)i(install)324
-2165 y(\045)e(cd)h(../../tk8.0.3/unix)324 2285 y(\045)f(./configure)k
-(--prefix=/tools/tk8.0.3)i(--enable-gcc)d(--enable-shared)324
-2406 y(\045)d(make)324 2526 y(\045)g(mkdir)i(/tools/tk8.0.3)324
-2646 y(\045)e(make)i(install)324 2767 y(\045)e(cd)h(../../itcl3.0.1)324
-2887 y(\045)f(./configure)k(--prefix=/tools/itcl3.0.1)i(--enable-gcc)e
-(--enable-shared)324 3007 y(\045)c(make)324 3128 y(\045)g(mkdir)i
-(/tools/itcl3.0.1)324 3248 y(\045)e(make)i(install)324
-3537 y Fc(4.2)135 b(Installing)47 b(BlueGn)l(u)324 3722
-y Ff(Y)-8 b(ou)41 b(can)g(no)m(w)h(`gunzip`)f(and)g(`tar)g(xf`)g(the)h
-(BlueGn)m(u)f(v)m(ersion)h(2.0.3)e(in)h(the)g(direc-)324
-3842 y(tory)f(\\Tc)m(kTk".)68 b(This)40 b(will)e(create)j(the)f
-(directory)g(\\bluegn)m(u2.0.3".)66 b(No)m(w)40 b(do)g(the)324
-3963 y(follo)m(wing:)324 4191 y Fb(\045)51 b(cd)h(bluegnu2.0.3)324
-4311 y(\045)f(./configure)k(--prefix=/tools/bluegnu2.0.)q(3)324
-4432 y(\045)c(make)324 4552 y(\045)g(mkdir)i(/tools/bluegnu2.0.3)324
-4672 y(\045)e(make)i(install)470 4901 y Ff(This)33 b(will)d(install)g
-(BlueGn)m(u)j(in)f(the)h(directories:)1918 5251 y(4)p
-eop
-%%Page: 5 5
-5 4 bop 469 548 a Fe(\017)49 b Ff(/to)s(ols/bluegn)m(u2.0.3/bin)469
-751 y Fe(\017)g Ff(/to)s(ols/bluegn)m(u2.0.3/lib/bluegn)m(u)469
-955 y Fe(\017)g Ff(/to)s(ols/bluegn)m(u2.0.3/info)469
-1158 y Fe(\017)g Ff(/to)s(ols/bluegn)m(u2.0.3/man)324
-1447 y Fc(4.3)135 b(Using)46 b(BlueGn)l(u)324 1632 y
-Ff(When)39 b(y)m(ou)g(ha)m(v)m(e)h(installed)c([incr)i(Tcl])h(and)f
-(BlueGn)m(u)h(and)f(y)m(ou)h(ha)m(v)m(e)h(the)f(resp)s(ec-)324
-1752 y(tiv)m(e)23 b(\\bin")f(directories)h(in)f(y)m(our)i(P)-8
-b(A)g(TH)24 b(v)-5 b(ariable,)23 b(then)h(y)m(ou)g(can)f(start)g
-(running)g(some)324 1872 y(tests.)41 b(Y)-8 b(ou)21 b(can)h(go)g(in)m
-(to)f(the)h(BlueGn)m(u)f(source)i(directory)f(\\bluegn)m
-(u2.0.3/testsets/examples")324 1993 y(and)32 b(run)h(the)g(follo)m
-(wing:)324 2221 y Fb(\045)51 b(bluegnu)i(versionTcl.itcl)324
-2342 y(\045)e(bluegnu)i(ts_001)324 2462 y(\045)e(bluegnu)i(ts_002)324
-2582 y(\045)e(bluegnu)i(ts_003)470 2811 y Ff(The)37 b(ab)s(o)m(v)m(e)f
-(test)g(result)g(should)f(all)f(b)s(e)i(P)-8 b(ASS.)36
-b(The)h(follo)m(wing)c(test)j(will)d(giv)m(e)j(a)324
-2931 y(result)c(UNKNO)m(WN,)i(b)s(ecause)g(no)e(pass/fail)f
-(instruction)h(ha)m(v)m(e)i(b)s(een)f(giv)m(en.)324 3159
-y Fb(\045)51 b(bluegnu)i(tc001)470 3388 y Ff(The)34 b(last)d(test)j(y)m
-(ou)f(can)g(run)g(will)d(fail)g(in)i(its)g(simple)f(form:)324
-3616 y Fb(\045)51 b(bluegnu)i(tc002)470 3844 y Ff(But)33
-b(will)d(pass)k(if)d(y)m(ou)i(execute)i(the)e(test)g(as)g(follo)m(ws:)
-324 4073 y Fb(\045)51 b(bluegnu)i(tc002[English])470
-4301 y Ff(This)46 b(is)g(b)s(ecause)i(the)e(test)h(scripts)g(need)g(a)f
-(test)h(case)g(iden)m(ti\014er)f(to)f(\014nd)i(the)324
-4421 y(correct)33 b(b)s(enc)m(hmark)g(co)s(de.)1918 5251
-y(5)p eop
-%%Page: 6 6
-6 5 bop 324 548 a Fg(5)161 b(Changes)324 796 y Fc(5.1)135
-b(V)-11 b(ersion)45 b(2.0.3)324 981 y Ff(This)37 b(b)s(eing)f(the)i
-(\014rst)f(public)f(release)i(it)d(is)i(not)g(to)g(useful)g(to)f(list)g
-(all)f(the)i(c)m(hanges.)324 1101 y(BlueGn)m(u)46 b(has)g(b)s(een)h(mo)
-s(deled)e(after)h(DejaGn)m(u)g(and)g(is)g(a)g(complete)f(new)i(imple-)
-324 1222 y(men)m(tation)31 b(whic)m(h)i(has)g(b)s(een)g(tested)g
-(thoroughly)-8 b(.)43 b(When)33 b(do)s(cumen)m(tation)e(is)h(b)s(eing)
-324 1342 y(written)e(more)f(c)m(hanges)j(will)c(b)s(e)i(made.)42
-b(An)31 b(example)e(of)h(some)g(of)f(these)j(c)m(hanges)f(as)324
-1462 y(a)k(result)f(of)h(this)g(do)s(cumen)m(tation)f(e\013ort)h(can)g
-(b)s(e)g(found)g(in)f(the)i(test-suites)g(ts)p Fb(_)p
-Ff(001,)324 1583 y(ts)p Fb(_)p Ff(002,)d(and)g(ts)p Fb(_)p
-Ff(003.)45 b(The)34 b(\014rst)f(t)m(w)m(o)h(are)f(not)g(as)g(easy)h(to)
-e(write)h(as)g(the)h(third.)44 b(The)324 1703 y(test)33
-b(suite)g(ts)p Fb(_)p Ff(001)f(is)g(a)g(script)h(implemen)m(tation)c
-(of)k(the)g(command)e(line:)324 1906 y Fb(\045)51 b(cd)h
-(bluegnu2.0.3/testsets)324 2027 y(\045)f(bluegnu)i
-(examples/tc002[English=)q(B])k(\\)324 2147 y(>)51 b
-("examples/tc002[Dutch=B])q(={M)q(SG=H)q(allo)58 b(Wereld}")324
-2351 y Ff(This)35 b(ma)m(y)g(b)s(e)g(useful)g(for)g(simple)e(tests)k
-(but)e(when)h(y)m(ou)g(w)m(an)m(t)g(to)f(write)f(more)h(com-)324
-2471 y(plex)28 b(test-suite)f(scripts)i(y)m(ou)f(w)m(ould)g(lik)m(e)f
-(some)g(more)g(\015exibilit)m(y)-8 b(,)27 b(so)h(t)m(w)m(o)g(pro)s
-(cedures)324 2591 y(w)m(ere)39 b(in)m(tro)s(duced,)f(whic)m(h)g(are)g
-(sho)m(wn)g(in)f(test-suite)h(ts)p Fb(_)p Ff(002.)58
-b(This)37 b(mak)m(es)h(writing)324 2712 y(rather)g(complex)g(so)h(the)g
-(pro)s(cedures)h(ha)m(v)m(e)g(b)s(ecome)f(part)f(of)g(the)h(pro)s
-(cedures)h('ap-)324 2832 y(p)s(endQueue',)32 b('prep)s(endQueue',)h
-(and)d('run)m(test'.)44 b(The)30 b(resulting)f(script)h(is)f(sho)m(wn)i
-(in)324 2953 y(test-suit)h(ts)p Fb(_)p Ff(003.)470 3073
-y(Changes)i(lik)m(e)e(this)g(will)e(b)s(e)j(made)f(in)g(the)h(future!)
-324 3406 y Fg(6)161 b(F)-13 b(uture)52 b(Enhancemen)l(ts)324
-3625 y Ff(The)33 b(follo)m(wing)d(enhancemen)m(ts)35
-b(are)d(b)s(eing)g(planned:)469 3828 y Fe(\017)49 b Ff(T)-8
-b(arget)24 b(co)s(de)h(will)e(b)s(e)i(made)f(in)m(to)g(a)g(class)h
-(with)f(metho)s(ds)h('start',)h('load',)f('exit',)568
-3949 y(and)d('v)m(ersion'.)40 b(Instead)23 b(of)e(the)h(curren)m(t)h(')
-p Fa(<)p Ff(target)p Fa(>)p Fb(_)p Ff(start',)h(')p Fa(<)p
-Ff(target)p Fa(>)p Fb(_)p Ff(load',)568 4069 y(')p Fa(<)p
-Ff(target)p Fa(>)p Fb(_)p Ff(exit',)33 b(and)g(')p Fa(<)p
-Ff(target)p Fa(>)p Fb(_)p Ff(v)m(ersion',)h(whic)m(h)g(ha)m(v)m(e)h(b)s
-(een)f(tak)m(en)g(from)568 4189 y(DejaGn)m(u.)469 4393
-y Fe(\017)49 b Ff(Pro)s(cedures)34 b(will)d(b)s(e)i(created)h(that)f
-(mak)m(e)g(it)f(easy)i(to)f(test)h(WEB)f(application)568
-4513 y(from)e(the)i(framew)m(ork.)469 4716 y Fe(\017)49
-b Ff(Other)34 b(enhancemen)m(ts)i(will)31 b(b)s(e)j(made)g(dep)s
-(ending)g(on)g(the)g(use)h(of)f(the)g(frame-)568 4837
-y(w)m(ork)f(in)f(testing)g(di\013eren)m(t)h(applications.)1918
-5251 y(6)p eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
+++ /dev/null
-VPATH = @srcdir@
-srcdir = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = $(exec_prefix)/bin
-libdir = $(exec_prefix)/lib
-tooldir = $(libdir)/$(target_alias)
-datadir = $(exec_prefix)/lib/dejagnu
-mandir = $(prefix)/man
-
-infodir = $(prefix)/info
-includedir = $(prefix)/include
-docdir = $(datadir)/doc
-targetdir = $(datadir)/$(target_canonical)
-
-SHELL = /bin/sh
-
-# Examples don't get installed
-INSTALL =
-INSTALL_PROGRAM = $(INSTALL)
-INSTALL_DATA = $(INSTALL)
-
-CC = @CC@
-CFLAGS = -g
-SUBDIRS = @subdirs@
-RUNTEST = runtest
-RUNTESTFLAGS =
-
-FLAGS_TO_PASS = \
- "CC=$(CC)" \
- "CFLAGS=$(CFLAGS)" \
- "INSTALL=$(INSTALL)" \
- "INSTALL_DATA=$(INSTALL_DATA)" \
- "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
- "LDFLAGS=$(LDFLAGS)" \
- "MAKEINFO=$(MAKEINFO)" \
- "RUNTEST=$(RUNTEST)" \
- "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
- "exec_prefix=$(exec_prefix)" \
- "prefix=$(prefix)" \
- "tooldir=$(tooldir)"
-
-#### host, target, and site specific Makefile frags come in here.
-
-all: force
- @$(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS)
-
-.PHONY: info install install-info check installcheck dvi
-info:
-install:
-dvi:
-install-info:
-check:
-installcheck:
-
-.NOEXPORT:
-MAKEOVERRIDES=
-
-check: force
- rootme=`pwd`; export rootme; $(MAKE) DO=check DODIRS=calc subdir_do
-
-subdir_do: force
- @for i in $(SUBDIRS); do \
- echo "Making $(DO) in $${i}..." ; \
- if [ -d ./$$i ] ; then \
- if (rootme=`pwd`/ ; export rootme ; \
- rootsrc=`cd $(srcdir); pwd`/ ; export rootsrc ; \
- cd ./$$i; \
- $(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \
- else exit 1 ; fi ; \
- else true ; fi ; \
- done
-force:
-
-clean mostlyclean:
- -rm -f \#* *~ core *.o a.out xgdb *.x
- @$(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS)
-
-distclean maintainer-clean realclean: clean
- @$(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS)
- -rm -f *~ core
- -rm -f Makefile *-init.exp site.*
- -rm -f config.status config.log config.cache
- -rm -fr *.log summary detail
-
-Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) config.status
- @echo "Rebuilding the Makefile..."
- $(SHELL) ./config.status
-
-configure: $(srcdir)/configure.in $(srcdir)/Makefile.in $(srcdir)/../aclocal.m4
- @echo "Rebuilding configure..."
- @cd ${srcdir} ;\
- autoconf --localdir=${srcdir}/..
-
-config.status:
- @echo "Rebuilding config.status..."
- $(SHELL) ./config.status --recheck
+++ /dev/null
-# Copyright (C) 1988, 1990, 1991, 1992, 1994 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 1, 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-#
-
-# target name
-PROG= calc
-
-# compiler specifics
-CC = @CC@
-CFLAGS = -g -I$(srcdir) -I.
-CALC = calc
-
-# directory specifics
-VPATH = @srcdir@
-srcdir = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-# testsuite specifics
-# Setup the testing framework, if you have one
-# Flags that we pass when building the testsuite.
-EXPECT = ` \
- if [ -f $${rootme}/../../../expect/expect ] ; then \
- echo $${rootme}/../../../expect/expect ; \
- else echo expect ; fi`
-
-RUNTEST = ` \
- if [ -f $${srcdir}/../../../dejagnu/runtest ] ; then \
- echo $${srcdir}/../../../dejagnu/runtest ; \
- else echo runtest ; fi`
-
-RUNTESTFLAGS=
-
-## --- NOTHING BELOW HERE SHOULD REQUIRE MODIFICATIONS --- ##
-
-SRCS= calc.c
-
-OBJS= calc.o
-
-all: ${PROG}
-
-calc.o: calc.c
-
-.c.o:
- ${CC} ${CFLAGS} -I$(srcdir) -I. -c $<
-
-${PROG}: ${OBJS} ${DPADD}
- ${CC} ${LDFLAGS} ${CFLAGS} -o $@ ${OBJS} ${DPADD} ${LDADD}
-
-check: site.exp all
- rootme=`pwd`; export rootme; \
- srcdir=${srcdir} ; export srcdir ; \
- EXPECT=${EXPECT} ; export EXPECT ; \
- if [ -f $${rootme}/../../expect/expect ] ; then \
- TCL_LIBRARY=$${srcdir}/../../tcl/library ; \
- export TCL_LIBRARY ; fi ; \
- ${RUNTEST} ${RUNTESTFLAGS} --tool ${PROG} CALC=${PROG} --srcdir ${srcdir}/testsuite
-
-site.exp: ./config.status Makefile
- @echo "Making a new config file..."
- -@rm -f ./tmp?
- @touch site.exp
-
- -@mv site.exp site.bak
- @echo "## these variables are automatically generated by make ##" > ./tmp0
- @echo "# Do not edit here. If you wish to override these values" >> ./tmp0
- @echo "# add them to the last section" >> ./tmp0
- @echo "set tool calc" >> ./tmp0
- @echo "set srcdir ${srcdir}" >> ./tmp0
- @echo "set objdir `pwd`" >> ./tmp0
- @echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0
- @cat ./tmp0 > site.exp
- @cat site.bak | sed \
- -e '1,/^## All variables above are.*##/ d' >> site.exp
- -@rm -f ./tmp?
-
-install: ${PROG}
-
-clean mostlyclean:
- -rm -f a.out [Ee]rrs tags mklog core ${OBJS} ${PROG}
-
-distclean maintainer-clean realclean: clean
- -rm -f Makefile
- -rm -f config.status config.log config.cache
- -rm -f calc.h calc.log calc.plog calc.psum
- -rm -f calc.sum site.exp
-
-Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) config.status
- @echo "Rebuilding the Makefile..."
- $(SHELL) ./config.status
-
-configure: $(srcdir)/configure.in $(srcdir)/Makefile.in $(srcdir)/../../aclocal.m4
- @echo "Rebuilding configure..."
- @cd ${srcdir} ;\
- autoconf --localdir=${srcdir}/../..
-
-config.status:
- @echo "Rebuilding config.status..."
- $(SHELL) ./config.status --recheck
+++ /dev/null
-.\"
-.TH SKEL 1 "28th Jan 1993"
-.SH NAME
-calc \- a very dumb calculator to demonstrate
-.I deja-gnu
-.SH SYNOPSIS
-.B calc
-.SH DESCRIPTION
-.LP
-.B calc
-accepts the commands:
-.TP
-.B add #1 #2
-Add #1 and #2 and print the answer.
-.TP
-.B multiply #1 #2
-Multiply #1 and #2 and print the answer.
-.TP
-.B quit
-.br
-Exit
-.TP
-.B version
-Print a version string.
-.SH BUGS
-.LP
-.B multiply 2 n
-gives the wrong answer (unless n == 0).
-
+++ /dev/null
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <ctype.h>
-#include <stdio.h>
-#include "calc.h"
-
-static int words();
-
-int main()
-{
- char line[SIZE];
- int nword;
- char *words[NWORD];
-
- while(printf("calc: "), fflush(stdout), fgets(line,SIZE,stdin) != NULL) {
- if((nword = split(line,words,NWORD)) == 0) continue;
- if(strcmp(words[0],"add") == 0) {
- if(nword != 3) {
- printf("Usage: add #1 #2\n");
- } else {
- printf("%d",atoi(words[1]) + atoi(words[2]));
- }
- } else if(strcmp(words[0],"multiply") == 0) {
- if(nword != 3) {
- printf("Usage: multiply #1 #2\n");
- } else {
- int i1 = atoi(words[1]);
- if(i1 == 2) i1 = 3; /* this is a bug */
- printf("%d",i1*atoi(words[2]));
- }
- } else if(strcmp(words[0],"quit") == 0) {
- break;
- } else if(strcmp(words[0],"version") == 0) {
- printf("Version: %s",VERSION);
- } else {
- printf("Unknown command: %s",words[0]);
- }
- printf("\n");
- }
-
- return(0);
-}
-
-int
-split(line,words,nword)
-char *line;
-char **words;
-int nword; /* number of elements in words */
-{
- int i;
-
- while(isspace(*line)) line++;
- if(*line == '\0') return(0);
-
- for(i = 0;i < nword;i++) {
- words[i] = line;
- while(*line != '\0' && !isspace(*line)) line++;
- if(*line == '\0') break;
- *line++ = '\0';
- while(isspace(*line)) line++;
- }
-
- return(i);
-}
+++ /dev/null
-/*
- * Check for headers
- */
-#ifndef __CALC_H__
-#define __CALC_H__
-
-#undef HAVE_STDLIB_H
-
-/*
- * Check for functions
- */
-#undef HAVE_STRCMP
-
-#define NWORD 10
-#define SIZE 100
-#define VERSION "1.0 Beta"
-
-#endif /* __CALC_H__ */
+++ /dev/null
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.4
-# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Initialize some other variables.
-subdirs=
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -build | --build | --buil | --bui | --bu | --b)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=PREFIX install architecture-dependent files in PREFIX
- [same as prefix]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
---enable and --with options recognized:$ac_help
-EOF
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.4"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=calc.c
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5'
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-CC=${CC-cc}
-
-#
-# Look for various header files
-#
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- # This must be in double quotes, not single quotes, because CPP may get
- # substituted into the Makefile and "${CC-cc}" will confuse make.
- CPP="${CC-cc} -E"
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp.
- cat > conftest.$ac_ext <<EOF
-#line 423 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- rm -rf conftest*
- CPP="${CC-cc} -E -traditional-cpp"
- cat > conftest.$ac_ext <<EOF
-#line 437 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- rm -rf conftest*
- CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
- ac_cv_prog_CPP="$CPP"
-fi
- CPP="$ac_cv_prog_CPP"
-else
- ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-ac_safe=`echo "stdlib.h" | tr './\055' '___'`
-echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 468 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- :
-else
- echo "$ac_t""no" 1>&6
-cat >> confdefs.h <<\EOF
-#define HAVE_STDLIB_H 1
-EOF
-
-fi
-
-
-#
-# Look for various functions
-#
-echo $ac_n "checking for strcmp""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_func_strcmp'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 504 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char strcmp(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-char strcmp();
-
-int main() { return 0; }
-int t() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_strcmp) || defined (__stub___strcmp)
-choke me
-#else
-strcmp();
-#endif
-
-; return 0; }
-EOF
-if eval $ac_link; then
- rm -rf conftest*
- eval "ac_cv_func_strcmp=yes"
-else
- rm -rf conftest*
- eval "ac_cv_func_strcmp=no"
-fi
-rm -f conftest*
-
-fi
-if eval "test \"`echo '$ac_cv_func_'strcmp`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define HAVE_STRCMP 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-#
-# Output Makefile with substitutions
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
- >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-DEFS=-DHAVE_CONFIG_H
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.4"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-
-trap 'rm -fr `echo "Makefile calc.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF
-$ac_vpsub
-$extrasub
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@CPP@%$CPP%g
-s%@CC@%$CC%g
-
-CEOF
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust relative srcdir, etc. for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
-fi; done
-rm -f conftest.subs
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_uB='\([ ]\)%\1#\2define\3'
-ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
-
-CONFIG_HEADERS=${CONFIG_HEADERS-"calc.h"}
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- echo creating $ac_file
-
- rm -f conftest.frag conftest.in conftest.out
- cp $ac_given_srcdir/$ac_file_in conftest.in
-
-EOF
-
-# Transform confdefs.h into a sed script conftest.vals that substitutes
-# the proper values into config.h.in to produce config.h. And first:
-# Protect against being on the right side of a sed subst in config.status.
-# Protect against being in an unquoted here document in config.status.
-rm -f conftest.vals
-cat > conftest.hdr <<\EOF
-s/[\\&%]/\\&/g
-s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
-s%ac_d%ac_u%gp
-s%ac_u%ac_e%gp
-EOF
-sed -n -f conftest.hdr confdefs.h > conftest.vals
-rm -f conftest.hdr
-
-# This sed command replaces #undef with comments. This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >> conftest.vals <<\EOF
-s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
-EOF
-
-# Break up conftest.vals because some shells have a limit on
-# the size of here documents, and old seds have small limits too.
-# Maximum number of lines to put in a single here document.
-ac_max_here_lines=12
-
-rm -f conftest.tail
-while :
-do
- ac_lines=`grep -c . conftest.vals`
- # grep -c gives empty output for an empty file on some AIX systems.
- if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
- # Write a limited-size here document to conftest.frag.
- echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
- echo 'CEOF
- sed -f conftest.frag conftest.in > conftest.out
- rm -f conftest.in
- mv conftest.out conftest.in
-' >> $CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
- rm -f conftest.vals
- mv conftest.tail conftest.vals
-done
-rm -f conftest.vals
-
-cat >> $CONFIG_STATUS <<\EOF
- rm -f conftest.frag conftest.h
- echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
- cat conftest.in >> conftest.h
- rm -f conftest.in
- if cmp -s $ac_file conftest.h 2>/dev/null; then
- echo "$ac_file is unchanged"
- rm -f conftest.h
- else
- rm -f $ac_file
- mv conftest.h $ac_file
- fi
-fi; done
-
-
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
+++ /dev/null
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(calc.c)
-AC_CONFIG_HEADER(calc.h)
-CC=${CC-cc}
-
-#
-# Look for various header files
-#
-AC_HEADER_CHECK(stdlib.h, ,AC_DEFINE(HAVE_STDLIB_H))
-
-#
-# Look for various functions
-#
-AC_FUNC_CHECK(strcmp, AC_DEFINE(HAVE_STRCMP))
-
-#
-# Output Makefile with substitutions
-AC_SUBST(CC)
-AC_OUTPUT(Makefile)
+++ /dev/null
-set timeout 3
-#
-# expectations that clean up in case of error. Note that `$test' is
-# a purely local variable.
-#
-# The first of these is used to match any bad responses, and resynchronise
-# things by finding a prompt. The second is a timeout error, and shouldn't
-# ever be triggered.
-#
-expect_after {
- -re "\[^\n\r\]*$prompt$" {
- fail "$test (bad match)"
- if { $verbose > 0 } {
- regexp ".*\r\n(\[^\r\n\]+)(\[\r\n\])+$prompt$" \
- $expect_out(buffer) "" output
- send_user "\tUnmatched output: \"$output\"\n"
- }
- }
- timeout {
- fail "$test (timeout)"
- }
-}
-#
-# Here are the tests
-#
-set test "version"
-send "version\n"
-expect {
- -re "Version:.*$prompt$" { pass "version" }
-}
-
-set test add1
-send "add 3 4\n"
-expect {
- -re "7+.*$prompt$" { pass "$test" }
-}
-
-set test add2
-send "add 1 2 3\n"
-expect {
- -re "Usage: add #1 #2.*$prompt$" { pass "$test" }
-}
-
-set test multiply1
-send "multiply 3 4\n"
-expect {
- -re "12.*$prompt$" { pass "$test" }
-}
-
-set test multiply2
-send "multiply 2 4\n"
-expect {
- -re "8.*$prompt$" { pass "$test" }
-}
-
-set test multiply3
-send "multiply 1 2 3\n"
-expect {
- -re "Usage: multiply #1 #2.*$prompt$" { pass "$test" }
-}
+++ /dev/null
-if ![info exists prompt] then {
- set prompt "calc: "
-}
-#
-# calc_version -- extract and print the version number of calc
-#
-
-proc calc_version {} {
- global CALC
- global prompt
- set tmp [exec echo "version" | $CALC]
- regexp "$prompt *(\[^\n\]*)\n.*" $tmp tmp version
- clone_output "[which $CALC] version $version\n"
-}
-#
-# calc_load -- loads the program
-#
-proc calc_load { arg } {
- #
-}
-
-#
-# calc_exit -- quit and cleanup
-#
-proc calc_exit {} {
- send "quit\n"
-}
-
-#
-# calc_start -- start calc running
-#
-proc calc_start {} {
- global CALC
- global prompt
- global spawn_id
- global verbose
-
- if { $verbose > 1 } {
- send_user "starting $CALC\n"
- }
- spawn $CALC
- expect {
- -re "No such file.*" { perror "Can't start $CALC"; exit 1 }
- -re "$prompt$" { }
- timeout { perror "Failed to spawn $CALC (timeout)"; exit 1 }
- }
-}
-
-calc_start
+++ /dev/null
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.4
-# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Initialize some other variables.
-subdirs=
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -build | --build | --buil | --bui | --bu | --b)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=PREFIX install architecture-dependent files in PREFIX
- [same as prefix]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
---enable and --with options recognized:$ac_help
-EOF
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.4"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=Makefile.in
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5'
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-CC=${CC-cc}
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-subdirs="calc"
-
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
- >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%-D\1=\2%g
-s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.4"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-
-trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF
-$ac_vpsub
-$extrasub
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@subdirs@%$subdirs%g
-s%@CC@%$CC%g
-
-CEOF
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust relative srcdir, etc. for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
-fi; done
-rm -f conftest.subs
-
-
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
-if test "$no_recursion" != yes; then
-
- # Remove --cache-file and --srcdir arguments so they do not pile up.
- ac_sub_configure_args=
- ac_prev=
- for ac_arg in $ac_configure_args; do
- if test -n "$ac_prev"; then
- ac_prev=
- continue
- fi
- case "$ac_arg" in
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- ;;
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- ;;
- *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
- esac
- done
-
- for ac_config_dir in calc; do
-
- # Do not complain, so a configure script can configure whichever
- # parts of a large source tree are present.
- if test ! -d $srcdir/$ac_config_dir; then
- continue
- fi
-
- echo configuring in $ac_config_dir
-
- case "$srcdir" in
- .) ;;
- *)
- if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :;
- else
- { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; }
- fi
- ;;
- esac
-
- ac_popdir=`pwd`
- cd $ac_config_dir
-
- case "$srcdir" in
- .) # No --srcdir option. We are building in place.
- ac_sub_srcdir=$srcdir ;;
- /*) # Absolute path.
- ac_sub_srcdir=$srcdir/$ac_config_dir ;;
- *) # Relative path.
- ac_sub_srcdir=../$srcdir/$ac_config_dir ;;
- esac
-
- # Check for guested configure; otherwise get Cygnus style configure.
- if test -f $ac_sub_srcdir/configure; then
- ac_sub_configure=$ac_sub_srcdir/configure
- elif test -f $ac_sub_srcdir/configure.in; then
- ac_sub_configure=$ac_configure
- else
- echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2
- ac_sub_configure=
- fi
-
- # The recursion is here.
- if test -n "$ac_sub_configure"; then
-
- # Make the cache file name correct relative to the subdirectory.
- # A "../" for each directory in /$ac_config_dir.
- ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
- case "$cache_file" in
- /*) ac_sub_cache_file=$cache_file ;;
- *) # Relative path.
- ac_sub_cache_file="$ac_dots$cache_file" ;;
- esac
-
- echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir"
- # The eval makes quoting arguments work.
- if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir
- then :
- else
- { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; }
- fi
- fi
-
- cd $ac_popdir
- done
-fi
-
+++ /dev/null
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(Makefile.in)
-CC=${CC-cc}
-
-AC_CONFIG_SUBDIRS(calc)
-
-AC_SUBST(CC)
-AC_OUTPUT(Makefile)
+++ /dev/null
-#! /bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-tranformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
+++ /dev/null
-#
-# This script create a BlueGnu Target object
-#
-
-verbose "BlueGnu Target Information ****" 3
-
-proc BlueGnu {args} {
- global nspTestSuite auto_path env
- global testCases
-
- verbose "@@@@@@@@@@@ BlueGnu Target Initialization Procedure @@@@@@@@@@@"
- verbose " auto_path:\n >$auto_path<" 5
- #
- # Create the BlueGnu Target Object, which need to be returned.
- #
- namespace eval $nspTestSuite {
- set args [uplevel 1 set args]
- verbose "Arguments: $args (are not used)" 3
- verbose "======= BlueGnu Procedure creates Target Object" 3
-
-
- # Check argument and remove the local argument from the list
- # All argument that do not contain a equal sign are also removed
- set i 0
- catch {unset rmList}
- foreach arg $args {
- if {!$i} {
- if {[llength [split $arg "="]] == 1} {
- uplevel set eInterface $arg
- lappend rmList $i
- }
- }
- if {[string compare [lindex [split $arg "="] 0] \
- "testCases"] == 0} {
- uplevel set testCases [lindex [split $arg "="] 1]
- lappend rmList $i
- }
- incr i
- }
- if {[info exists rmList]} {
- #puts "rmList >$rmList<"
- for {set i [expr [llength $rmList] - 1]} {$i >= 0} {incr i -1} {
- set args [lreplace $args $i $i]
- }
- }
- verbose "Arguments (passed): $args" 5
-
- verbose "Arguments (used): $args" 3
- set target [eval [concat createTarget $args]]
- if {! [string match ::* $target]} {
- set target [namespace current]::$target
- }
- debug {Target name >$target<} 3
-
- # Save all Environment Variables so they may be cleared!
- #
- [$target environment] saveEnv
- }
-
- # Return the name of the Target Object that has been created
- # This should be the last statement
- return [namespace eval $nspTestSuite {set target}]
-}
-
-proc BlueGnu_start {} {
- verbose "@@@@@@@@@@@ Starting BlueGnu Environment @@@@@@@@@@@"
-}
-
-proc BlueGnu_load {} {
- verbose "@@@@@@@@@@@ Load BlueGnu Environment @@@@@@@@@@@"
-}
-
-proc BlueGnu_exit {} {
- verbose "@@@@@@@@@@@ Exit BlueGnu Environment @@@@@@@@@@@"
-}
-
-proc BlueGnu_version {} {
- verbose "@@@@@@@@@@@ Version BlueGnu Environment @@@@@@@@@@@"
-}
-
-proc BlueGnu_overwrite {szNamespace} {
- # Modify output procedures to return instead of doing output
- #
- uplevel #0 {
- rename send_user send_user_saved
- rename send_error send_error_saved
- rename send_log send_log_saved
- }
- proc ::send_user args "set ${szNamespace}::sending(USER) 1"
- proc ::send_error args "set ${szNamespace}::sending(ERROR) 1"
- proc ::send_log args "set ${szNamespace}::sending(LOG) 1"
-}
-
-proc BlueGnu_restore {} {
- # Restore original procedures
- #
- uplevel #0 {
- rename send_user ""
- rename send_error ""
- rename send_log ""
- rename send_user_saved send_user
- rename send_error_saved send_error
- rename send_log_saved send_log
- }
-}
+++ /dev/null
-#
-# This script create a Default Target object
-#
-
-verbose "Default Target Information ****" 3
-
-proc Default {args} {
- global nspTestSuite auto_path env
- global testCases
-
- verbose "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
- verbose "@@@@@@@ Default Target Initialization Procedure"
- verbose {@@@@@@@ auto_path:\n [join [split $auto_path] \
- "\n "]} 4
- #
- # Create the Default Target Object, which need to be returned.
- #
- namespace eval $nspTestSuite {
- set args [uplevel 1 set args]
- verbose "Arguments: $args (are not used)" 3
- verbose "======= Default Procedure creates Target Object" 3
-
-
- # Check argument and remove the local argument from the list
- # All argument that do not contain a equal sign are also removed
- set i 0
- catch {unset rmList}
- foreach arg $args {
- if {!$i} {
- if {[llength [split $arg "="]] == 1} {
- uplevel set eInterface $arg
- lappend rmList $i
- }
- }
- if {[string compare [lindex [split $arg "="] 0] \
- "testCases"] == 0} {
- uplevel set testCases [lindex [split $arg "="] 1]
- lappend rmList $i
- }
- incr i
- }
- if {[info exists rmList]} {
- #puts "rmList >$rmList<"
- for {set i [expr [llength $rmList] - 1]} {$i >= 0} {incr i -1} {
- set args [lreplace $args $i $i]
- }
- }
- verbose "Arguments (passed): $args" 5
-
- verbose "Arguments (used): $args" 3
- set target [eval [concat createTarget $args]]
- if {! [string match ::* $target]} {
- set target [namespace current]::$target
- }
- debug {Target name >$target<} 3
-
- # Save all Environment Variables so they may be cleared!
- #
- [$target environment] saveEnv
- }
-
- # Return the name of the Target Object that has been created
- # This should be the last statement
- return [namespace eval $nspTestSuite {set target}]
-}
-
-proc Default_start {} {
- verbose "@@@@@@@ Starting Default Environment"
-}
-
-proc Default_load {} {
- verbose "@@@@@@@ Load Default Environment"
-}
-
-proc Default_exit {} {
- verbose "@@@@@@@ Exit Default Environment"
- verbose "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
-}
-
-proc Default_version {} {
- verbose "@@@@@@@ Version Default Environment"
-}
+++ /dev/null
-# -*-Tcl-*-
-#
-# This [incr Tcl] library script contains type definitions
-#
-#
-# Type super class
-#
-
-if {[string length [info commands debug]] == 0} {
- proc debug {args} {}
-}
-
-class Type {
- variable _value
- variable _valueSaved
- variable _voidPtr
- variable _bVoid
- protected variable _currentNamespace
- protected variable _lProc
- protected variable _upLevel
-
- constructor args {
- debug {======= Constructor: [info class] $this $args} 3
- # Go up in the inheritance tree
- debug { Go up inheritance tree} 4
- set level 1
- if {[string compare [info class] ::Type] != 0} {
- debug { level set to >1<} 5
- while {[string compare [info class] \
- [uplevel $level {namespace current}]] != 0} {
- debug {>[info class]< != >[uplevel $level\
- {namespace current}]<} 5
- incr level
- debug { level incrmented to >$level<} 5
- }
- debug {>[info class]< == >[uplevel $level\
- {namespace current}]<} 5
- incr level
- regsub {^::} [uplevel $level {namespace current}] "" currentNamespace
- } else {
- regsub {^::} [uplevel {namespace current}] "" currentNamespace
- }
- set upLevel [expr [info level] - $level]
- set lProc [info level $upLevel]
- debug { Called from level: >$upLevel<} 4
- debug { Called from : >$lProc<} 4
- debug { Current namespace: >$currentNamespace<} 4
- #catch {puts " [uplevel "info body [lindex $lProc 0]"]"}
- set _bVoid 0
- set _voidPtr 0
- if {[llength $args] > 0} {
- set _value [lindex $args 0]
- } else {
- set _value ""
- }
- if {$upLevel == 0} {
- debug {Called from global} 4
- set $this $_value
- debug {this variable: [set $this]} 4
- trace variable $this rwu traceType
- } elseif {[string length $currentNamespace] && \
- [string length $lProc]} {
- debug {Called from procedure in namespace} 4
- debug { this: >$this<} 4
- debug {set $this >$_value<}
- catch {
- uplevel #$upLevel set [namespace tail $this] \"$_value\"
- uplevel #$upLevel trace variable [namespace tail $this] \
- rwu traceType
- } szErrMsg; debug { szErrMsg: >$szErrMsg<} 4
- } elseif {[string length $currentNamespace]} {
- debug {Called from namespace} 4
- debug {set $this >$_value<}
- catch {
- namespace eval ${currentNamespace} "set $this \"$_value\"\n\
- trace variable $this rwu traceType"
- } szErrMsg
- debug { TRACE set} 4
- debug { szErrMsg: >$szErrMsg<} 4
- } else {
- debug {Called from procedure} 4
- set var [namespace tail $this]
- uplevel "set $var $_value"
- debug {this variable: [uplevel "set $var"]} 4
- uplevel "trace variable $var rwu traceType"
- }
- }
-
- destructor {
- debug {======= destructor $this} 3
- set calledFrom [lindex [split [info level [expr [info level] - 1]]] 0]
- debug { calledFrom: >$calledFrom<} 4
- debug { >[info level [expr [info level] - 1]]<} 4
- # just return when called from traceType
- if {[string compare $calledFrom "traceType"] != 0} {
- set var [namespace tail $this]
- debug { var: >$var<} 4
- debug { >[join [trace vinfo $var]]<} 4
- debug { >[uplevel [join [trace vinfo $var]]]<} 4
- debug { >[join [uplevel "trace vinfo $var"]]<} 4
- catch {
- debug {eval uplevel \"trace vdelete $var [join [uplevel "trace vinfo $var"]]\"} 4
- eval uplevel "trace vdelete $var [join [uplevel "trace vinfo $var"]]"
- uplevel unset $var
- } szErrMsg; debug { #### szErrMsg: >$szErrMsg<} 4
- }
- }
-
- public method value {args} {
- if {[llength $args] > 0} {
- set _value [lindex $args 0]
- }
- return $_value
- }
-
- public method setNull {{ptr 0}} {
- set _voidPtr $ptr
- set _bVoid 1
- }
-
- public method unsetNull {} {
- set _bVoid 0
- }
-
- public method isNull {} {
- return $_bVoid
- }
-
- public method getNull {} {
- return $_voidPtr
- }
-}
-
-proc traceType {name1 name2 ops} {
- debug {======= traceType >$name1< >$name2< >$ops<} 3
- upvar $name1 var
- set upLevel [expr [info level] - 1]
- set lProc [info level $upLevel]
- regsub {^::} [uplevel {namespace current}] "" currentNamespace
- debug { Called from level: >$upLevel<} 4
- debug { level namespace : >[uplevel #$upLevel namespace current]<} 4
- debug { Called from : >$lProc<} 4
- debug { Current namespace: >$currentNamespace<} 4
- if {$upLevel == 0} {
- debug {Called from global} 4
- switch $ops {
- r {
- set var [uplevel $name1 value]
- }
- w {
- if [catch {$name1 value [set var]}] {
- uplevel "$name1 value [set var]"
- }
- }
- u {
- uplevel delete object $name1
- }
- }
- } elseif {[string length $currentNamespace] && \
- [string length $lProc]} {
- debug {Called from procedure in namespace} 4
- set var [uplevel ::itcl::find objects $name1]
- debug { $name1 ->$var< = ><} 4
- switch $ops {
- r {
- uplevel set $name1 [uplevel $var value]
- }
- w {
- if [catch {uplevel $var value [uplevel set $name1]} szErrMsg] {
- debug {####### Error: $szErrMsg} 4
-
- }
- }
- u {
- uplevel delete object $name1
- }
- }
- } elseif {[string length $currentNamespace]} {
- debug {Called from namespace} 4
- set var [uplevel "namespace which -variable $name1"]
- debug { $name1 ->$var< = ><} 4
- switch $ops {
- r {
- set $var [$var value]
- }
- w {
- if [catch {$var value [set $var]} szErrMsg] {
- debug {####### Error: $szErrMsg} 4
-
- }
- }
- u {
- debug {Deleting >$name1<} 4
- debug { [namespace current]} 4
- catch {delete object $name1}
- debug { DONE!} 4
- }
- }
- } else {
- debug {Called from procedure} 4
- switch $ops {
- r {
- set $name1 [$name1 value]
- }
- w {
- if [catch {$name1 value [uplevel set $name1]}] {
- uplevel "$name1 value [set $name1]"
- }
- }
- u {
- delete object $name1
- }
- }
- }
-}
-
+++ /dev/null
-#! iexpect
-#
-# This program is an Object Oriented version of the
-# DejaGnu's runtest program and DejaGnu is a subset.
-#
-# BlueGnu implements a super set of a DejaGnu compatible test Framework
-#
-# Copyright (C) 1998 jotOmega dsc, Inc.
-
-#This file is part of the BlueGnu Test Framework.
-#
-# Load Application Framework Class and associated data
-#
-source $env(BLUEGNULIB)/testSessionApplication.itcl
-
-append auto_path " [pwd]/lib"
-
-set objApplication [::BlueGnu::Application #auto szName=BlueGnu]
-
-$objApplication processArguments argv
-
-$objApplication execute
+++ /dev/null
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-#load_lib remote.exp
-
-#
-# set target variables only if needed.
-#
-global targetname
-global connectmode
-global env
-
-if ![info exists targetname] {
- if [info exists env(TARGETNAME)] {
- set targetname $env(TARGETNAME)
- } else {
- puts stderr "ERROR: Need a target name for the board."
- puts stderr " Use the --name option\n"
- exit 1
- }
-}
-
-# the default connect program to use
-if ![info exists connectmode] {
- set connectmode "tip"
- warning "Using default of $connectmode for target communication."
-}
-
-#
-# Load a file into the bug monitor
-#
-proc bug_load { shell_id file } {
- global OBJCOPY
- global shell_prompt
-
- if { $shell_id < 0 } {
- warning "$file not executed because there is no target."
- return -1
- }
-
- # NOTE: this requires OBJCOPY to be tested first
- catch "exec $OBJCOPY -O srec $file $file.srec" result
- if ![string match "" $result] {
- perror "Couldn't convert to srecord for downloading"
- return -1
- }
-
- send -i $shell_id "lo 0\r"
- expect {
- -i $shell_id "lo 0*" {
- verbose "Got load command echo" 0
- }
- -i $shell_id timeout {
- perror "Load command didn't echo back"
- return -1
- }
- }
-
- if { [download $file.srec $shell_id] < 0 } {
- return -1
- }
-
- send -i $shell_id "\r\r"
- expect {
- -i $shell_id -re "$shell_prompt.*$" {
- }
- -i $shell_id timeout {
- perror "Load command didn't echo back"
- return -1
- }
- }
-
- catch "exec rm -f $file.srec"
- return 0
-}
-
-#
-# Execute a program
-#
-proc bug_execute { shell_id addr } {
- global shell_prompt
- global exec_output
-
- set exec_output ""
-
- if { $shell_id < 0 } {
- warning "$arg not executed because there is no target."
- return -1
- }
- send -i $shell_id "go $addr\r"
- verbose "Sent execute command"
- expect {
- -i $shell_id "*Effective address: $addr" {
- exp_continue
- }
- -i $shell_id -re "$shell_prompt.*$" {
- set exec_output $expect_out(buffer)
- return 0
- }
- -i $shell_id timeout {
- perror "Couldn't execute program (timed out)."
- return 1
- }
- }
-
-}
-
+++ /dev/null
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-#
-# Dump the values of a shell expression representing variable
-# names.
-proc dumpvars { args } {
- uplevel 1 [list foreach i [uplevel 1 "info vars $args"] {
- if { [catch "array names $i" names ] } {
- eval "puts \"${i} = \$${i}\""
- } else {
- foreach k $names {
- eval "puts \"$i\($k\) = \$$i\($k\)\""
- }
- }
- }
- ]
-}
-
-#
-# dump the values of a shell expression representing variable
-# names.
-proc dumplocals { args } {
- uplevel 1 [list foreach i [uplevel 1 "info locals $args"] {
- if { [catch "array names $i" names ] } {
- eval "puts \"${i} = \$${i}\""
- } else {
- foreach k $names {
- eval "puts \"$i\($k\) = \$$i\($k\)\""
- }
- }
- }
- ]
-}
-#
-# Dump the body of procedures specified by a regexp.
-#
-proc dumprocs { args } {
- foreach i [info procs $args] {
- puts "\nproc $i \{ [info args $i] \} \{ [info body $i]\}"
- }
-}
-
-#
-# Dump all the current watchpoints
-#
-proc dumpwatch { args } {
- foreach i [uplevel 1 "info vars $args"] {
- set tmp ""
- if { [catch "uplevel 1 array name $i" names] } {
- set tmp [uplevel 1 trace vinfo $i]
- if ![string match "" $tmp] {
- puts "$i $tmp"
- }
- } else {
- foreach k $names {
- set tmp [uplevel 1 trace vinfo [set i]($k)]
- if ![string match "" $tmp] {
- puts "[set i]($k) = $tmp"
- }
- }
- }
- }
-}
-
-#
-# Trap a watchpoint for an array
-#
-proc watcharray { element type} {
- upvar [set array]($element) avar
- case $type {
- "w" { puts "New value of [set array]($element) is $avar" }
- "r" { puts "[set array]($element) (= $avar) was just read" }
- "u" { puts "[set array]($element) (= $avar) was just unset" }
- }
-}
-
-proc watchvar { v type } {
- upvar $v var
- case $type {
- "w" { puts "New value of $v is $var" }
- "r" { puts "$v (=$var) was just read" }
- "u" { puts "$v (=$var) was just unset" }
- }
-}
-
-#
-# Watch when a variable is written
-#
-proc watchunset { arg } {
- if { [catch "uplevel 1 array name $arg" names ] } {
- if ![uplevel 1 info exists $arg] {
- puts stderr "$arg does not exist"
- return
- }
- uplevel 1 trace variable $arg u watchvar
- } else {
- foreach k $names {
- if ![uplevel 1 info exists $arg] {
- puts stderr "$arg does not exist"
- return
- }
- uplevel 1 trace variable [set arg]($k) u watcharray
- }
- }
-}
-
-#
-# Watch when a variable is written
-#
-proc watchwrite { arg } {
- if { [catch "uplevel 1 array name $arg" names ] } {
- if ![uplevel 1 info exists $arg] {
- puts stderr "$arg does not exist"
- return
- }
- uplevel 1 trace variable $arg w watchvar
- } else {
- foreach k $names {
- if ![uplevel 1 info exists $arg] {
- puts stderr "$arg does not exist"
- return
- }
- uplevel 1 trace variable [set arg]($k) w watcharray
- }
- }
-}
-
-#
-# Watch when a variable is read
-#
-proc watchread { arg } {
- if { [catch "uplevel 1 array name $arg" names ] } {
- if ![uplevel 1 info exists $arg] {
- puts stderr "$arg does not exist"
- return
- }
- uplevel 1 trace variable $arg r watchvar
- } else {
- foreach k $names {
- if ![uplevel 1 info exists $arg] {
- puts stderr "$arg does not exist"
- return
- }
- uplevel 1 trace variable [set arg]($k) r watcharray
- }
- }
-}
-
-#
-# Delete a watch point
-#
-proc watchdel { args } {
- foreach i [uplevel 1 "info vars $args"] {
- set tmp ""
- if { [catch "uplevel 1 array name $i" names] } {
- catch "uplevel 1 trace vdelete $i w watchvar"
- catch "uplevel 1 trace vdelete $i r watchvar"
- catch "uplevel 1 trace vdelete $i u watchvar"
- } else {
- foreach k $names {
- catch "uplevel 1 trace vdelete [set i]($k) w watcharray"
- catch "uplevel 1 trace vdelete [set i]($k) r watcharray"
- catch "uplevel 1 trace vdelete [set i]($k) u watcharray"
- }
- }
- }
-}
-
-#
-# This file creates GDB style commands for the Tcl debugger
-#
-proc print { var } {
- puts "$var"
-}
-
-proc quit { } {
- log_summary
- exit
-}
-
-proc bt { } {
- puts "[w]"
-}
-
-#
-# create some stub procedures since we can't alias the command names
-#
-proc dp { args } {
- uplevel 1 dumprocs $args
-}
-
-proc dv { args } {
- uplevel 1 dumpvars $args
-}
-
-proc dl { args } {
- uplevel 1 dumplocals $args
-}
-
-proc dw { args } {
- uplevel 1 dumpwatch $args
-}
-
-proc q { } {
- quit
-}
-
-proc p { args } {
- uplevel 1 print $args
-}
-
-proc wu { args } {
- uplevel 1 watchunset $args
-}
-
-proc ww { args } {
- uplevel 1 watchwrite $args
-}
-
-proc wr { args } {
- uplevel 1 watchread $args
-}
-
-proc wd { args } {
- uplevel 1 watchdel $args
-}
-
-
-
-
-
-
-
+++ /dev/null
-#! iexpect
-#
-# This program is a full compatible Object Oriented version of
-# DejaGnu's runtest program
-#
-# Copyright (C) 1998 jotOmega dsc, Inc.
-
-#This file is part of BlueGnu.
-
-################################################################
-# Preemble
-################################################################
-# Check Environment variables:
-#
-# BLUEGNULIBS
-# TESTSUITEROOT
-#
-
-if [info exists env(BLUEGNULIBS)] {
- set szToolsLib $env(BLUEGNULIBS)
-} else {
- set szToolsLib [file dirname $argv0]
- set PWD [pwd]
- cd $szToolsLib
- set szToolsLib [pwd]
- cd $PWD
- regsub {/bin$} $szToolsLib {/lib/bluegnu} szToolsLib
- set env(BLUEGNULIBS) $szToolsLib
-}
-
-if [info exists env(TESTSUITEROOT)] {
- set szRootDir $env(TESTSUITEROOT)
-} else {
- set szRootDir [pwd]
- set env(TESTSUITEROOT) $szRootDir
-}
-if [info exists env(DEBUG)] {
- set bDebug 1
-} else {
- set bDebug 0
-}
-
-# Make sure that the testsuite root directory is our working directory
-# all tests name are relative to this directory
-cd $szRootDir
-
-# set the default tool. All test are relative to this directory.
-#
-set szTool $szRootDir
-catch {unset lTool}
-lappend lTool $szTool
-
-#
-# source basic utilities
-#
-source $szToolsLib/testSessionClasses.itcl
-source $szToolsLib/testSessionFramework.itcl
-#source $szToolsLib/testSessionUtils.itcl
-#
-verbose "Library : >$szToolsLib<"
-verbose "TestSuite: >$szRootDir<"
-verbose "$argv0 $argv" 5
-#
-# from here we should use only defined utilities
-################################################################
-################################################################
-
-set szRootName [file rootname $argv0]
-puts "RootName : >$szRootName<"
-
-::TestSession::Queue Q0
-::TestSession::DejaGnu E0; # will load dejagnu.tcl
-
-while {! [catch {Q0 pop} T]} {
- clone_output "Q0 element: $T"
- runtest E0 $T
-}
-
-delete object Q0
-delete object E0
-
+++ /dev/null
-# `dg' general purpose testcase driver.
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# dje@cygnus.com.
-
-# This file was written by Doug Evans (dje@cygnus.com).
-
-# This file is based on old-dejagnu.exp. It is intended to be more extensible
-# without incurring the overhead that old-dejagnu.exp can. All test framework
-# commands appear in the testcase as "{ dg-xxx args ... }". We pull them out
-# with one grep, and then run the function(s) named by "dg-xxx". When running
-# dg-xxx, the line number that it occurs on is always passed as the first
-# argument. We also support different kinds of tools via callbacks.
-#
-# The currently supported options are:
-#
-# dg-prms-id N
-# set prms_id to N
-#
-# dg-options "options ..." [{ target selector }]
-# specify special options to pass to the tool (eg: compiler)
-#
-# dg-do do-what-keyword [{ target/xfail selector }]
-# `do-what-keyword' is tool specific and is passed unchanged to
-# ${tool}-dg-test. An example is gcc where `keyword' can be any of:
-# preprocess|compile|assemble|link|run
-# and will do one of: produce a .i, produce a .s, produce a .o,
-# produce an a.out, or produce an a.out and run it (the default is
-# compile).
-#
-# dg-error regexp comment [{ target/xfail selector } [{.|0|linenum}]]
-# indicate an error message <regexp> is expected on this line
-# (the test fails if it doesn't occur)
-# Linenum=0 for general tool messages (eg: -V arg missing).
-# "." means the current line.
-#
-# dg-warning regexp comment [{ target/xfail selector } [{.|0|linenum}]]
-# indicate a warning message <regexp> is expected on this line
-# (the test fails if it doesn't occur)
-#
-# dg-bogus regexp comment [{ target/xfail selector } [{.|0|linenum}]]
-# indicate a bogus error message <regexp> use to occur here
-# (the test fails if it does occur)
-#
-# dg-build regexp comment [{ target/xfail selector }]
-# indicate the build use to fail for some reason
-# (errors covered here include bad assembler generated, tool crashes,
-# and link failures)
-# (the test fails if it does occur)
-#
-# dg-excess-errors comment [{ target/xfail selector }]
-# indicate excess errors are expected (any line)
-# (this should only be used sparingly and temporarily)
-#
-# dg-output regexp [{ target selector }]
-# indicate the expected output of the program is <regexp>
-# (there may be multiple occurrences of this, they are concatenated)
-#
-# dg-final { tcl code }
-# add some tcl code to be run at the end
-# (there may be multiple occurrences of this, they are concatenated)
-# (unbalanced braces must be \-escaped)
-#
-# "{ target selector }" is a list of expressions that determine whether the
-# test succeeds or fails for a particular target, or in some cases whether the
-# option applies for a particular target. If the case of `dg-do' it specifies
-# whether the testcase is even attempted on the specified target.
-#
-# The target selector is always optional. The format is one of:
-#
-# { xfail *-*-* ... } - the test is expected to fail for the given targets
-# { target *-*-* ... } - the option only applies to the given targets
-#
-# At least one target must be specified, use *-*-* for "all targets".
-# At present it is not possible to specify both `xfail' and `target'.
-# "native" may be used in place of "*-*-*".
-#
-# Example:
-#
-# [ ... some complicated code ... ]
-# return a; /* { dg-build "fatal" "ran out of spill regs" { xfail i386-*-* } } */
-#
-# In this example, the compiler use to crash on the "return a;" for some
-# target and that it still does crash on i386-*-*. Admittedly, this is a
-# contrived example.
-#
-# ??? It might be possible to add additional optional arguments by having
-# something like: { dg-error ".*syntax.*" "syntax error" { { foo 1 } ... } }
-#
-# Callbacks
-#
-# ${tool}-dg-test testfile do-what-keyword extra-flags
-#
-# Run the test, be it compiler, assembler, or whatever.
-#
-# ${tool}-dg-prune target_triplet text
-#
-# Optional callback to delete output from the tool that can occur
-# even in successful ("pass") situations and interfere with output
-# pattern matching. This also gives the tool an opportunity to review
-# the output and check for any conditions which indicate an "untested"
-# or "unresolved" state. An example is if a testcase is too big and
-# fills all available ram (which can happen for 16 bit cpus). The
-# result is either the pruned text or
-# "::untested|unresolved|unsupported::message"
-# (eg: "::unsupported::memory full").
-#
-# Notes:
-# 1) All runnable testcases must return 0 from main() for success.
-# You can't rely on getting any return code from target boards, and the
-# `exec' command says a program fails if it returns non-zero.
-#
-# Language independence is (theoretically) achieved by:
-#
-# 1) Using global $tool to indicate the language (eg: gcc, g++, gas, etc.).
-# This should only be used to look up other objects. We don't want to
-# have to add code for each new language that is supported. If this is
-# done right, no code needs to be added here for each new language.
-#
-# 2) Passing tool options in as arguments.
-#
-# Earlier versions of ${tool}_start (eg: gcc_start) would only take the name
-# of the file to compile as an argument. Newer versions accept a list of
-# one or two elements, the second being a string of *all* options to pass
-# to the tool. We require this facility.
-#
-# 3) Callbacks.
-#
-# Try not to do anything else that makes life difficult.
-#
-# The normal way to write a testsuite is to have a .exp file containing:
-#
-# load_lib ${tool}-dg.exp
-# dg-init
-# dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/foo*]] ...
-# dg-finish
-\f
-# Global state variables.
-# The defaults are for GCC.
-
-# The default do-what keyword.
-set dg-do-what-default compile
-
-# When dg-interpreter-batch-mode is 1, no execution test or excess error
-# tests are performed.
-set dg-interpreter-batch-mode 0
-
-# Line number format. This is how line numbers appear in program output.
-set dg-linenum-format ":%d:"
-proc dg-format-linenum { linenum } {
- global dg-linenum-format
- return [format ${dg-linenum-format} $linenum]
-}
-
-# Useful subroutines.
-
-# dg-get-options -- pick out the dg-xxx options in a testcase
-#
-# PROG is the file name of the testcase.
-# The result is a list of options found.
-#
-# Example: For the following testcase:
-#
-# /* { dg-prms-id 1234 } */
-# int foo { return 0; } /* { dg-build fatal "some comment" } */
-#
-# we return:
-#
-# { dg-prms-id 1 1234 } { dg-build 2 fatal "some comment" }
-
-proc dg-get-options { prog } {
- set result ""
-
- set tmp [grep $prog "{\[ \t\]\+dg-\[-a-z\]\+\[ \t\]\+.*\[ \t\]\+}" line]
- if ![string match "" $tmp] {
- foreach i $tmp {
- #send_user "Found: $i\n"
- # FIXME: When to use "+" and "\+" isn't clear.
- # Seems to me it took awhile to get this to work.
- regexp "(\[0-9\]\+)\[ \t\]\+{\[ \t\]+(dg-\[-a-z\]+)\[ \t\]\+(.*)\[ \t\]+}\[^\}\]*(\n|$)" $i i line cmd args
- #send_user "Found: $cmd $line $args\n"
- append result " { $cmd $line $args }"
- }
- }
-
- #send_user "Returning: $result\n"
- return $result
-}
-
-#
-# Process optional xfail/target arguments
-#
-# SELECTOR is "xfail target-triplet-1 ..." or "target target-triplet-1 ..."
-# `target-triplet' may be "native".
-# For xfail, the result is "F" (expected to Fail) if the current target is
-# affected, otherwise "P" (expected to Pass).
-# For target, the result is "S" (target is Selected) if the target is selected,
-# otherwise "N" (target is Not selected).
-#
-proc dg-process-target { selector } {
- global target_triplet
-
- set isnative [isnative]
- set triplet_match 0
-
- #send_user "dg-process-target: $selector\n"
-
- set selector [string trim $selector]
- if [regexp "^xfail " $selector] {
- set what xfail
- } elseif [regexp "^target " $selector] {
- set what target
- } else {
- # The use of error here and in other dg-xxx utilities is intentional.
- # dg-test will catch them and do the right thing.
- error "syntax error in target selector \"$selector\""
- }
-
- # ??? This should work but it doesn't. tcl bug?
- #if [regexp "^${what}(( \[^ \]+-\[^ \]+-\[^ \]+)|( native))+$" $selector tmp selector]
- if [regexp "^${what}( \[^ \]+-\[^ \]+-\[^ \]+| native)+$" $selector] {
- regsub "^${what} " $selector "" selector
- #send_user "selector: $selector\n"
- foreach triplet $selector {
- if [string match $triplet $target_triplet] {
- set triplet_match 1
- } elseif { $isnative && $triplet == "native" } {
- set triplet_match 1
- }
- }
- } else {
- error "syntax error in target selector \"$selector\""
- }
-
- if { $triplet_match } {
- return [expr { $what == "xfail" ? "F" : "S" }]
- } else {
- return [expr { $what == "xfail" ? "P" : "N" }]
- }
-}
-
-# Predefined user option handlers.
-# The line number is always the first element.
-# Note that each of these are varargs procs (they have an `args' argument).
-# Tests for optional arguments are coded with ">=" to simplify adding new ones.
-
-proc dg-prms-id { args } {
- global prms_id ;# this is a testing framework variable
-
- if { [llength $args] > 2 } {
- error "[lindex $args 0]: too many arguments"
- return
- }
-
- set prms_id [lindex $args 1]
-}
-
-#
-# Set tool options
-#
-# Different options can be used for different targets by having multiple
-# instances, selecting a different target each time. Since options are
-# processed in order, put the default value first. Subsequent occurrences
-# will override previous ones.
-#
-
-proc dg-options { args } {
- upvar dg-extra-tool-flags extra-tool-flags
-
- if { [llength $args] > 3 } {
- error "[lindex $args 0]: too many arguments"
- return
- }
-
- if { [llength $args] >= 3 } {
- switch [dg-process-target [lindex $args 2]] {
- "S" { set extra-tool-flags [lindex $args 1] }
- "N" { }
- "F" { error "[lindex $args 0]: `xfail' not allowed here" }
- "P" { error "[lindex $args 0]: `xfail' not allowed here" }
- }
- } else {
- set extra-tool-flags [lindex $args 1]
- }
-}
-
-#
-# Record what to do (compile/run/etc.)
-#
-# Multiple instances are supported (since we don't support target and xfail
-# selectors on one line), though it doesn't make much sense to change the
-# compile/assemble/link/run field. Nor does it make any sense to have
-# multiple lines of target selectors (use one line).
-#
-proc dg-do { args } {
- upvar dg-do-what do-what
-
- if { [llength $args] > 3 } {
- error "[lindex $args 0]: too many arguments"
- return
- }
-
- set selected [lindex ${do-what} 1] ;# selected? (""/S/N)
- set expected [lindex ${do-what} 2] ;# expected to pass/fail (P/F)
-
- if { [llength $args] >= 3 } {
- switch [dg-process-target [lindex $args 2]] {
- "S" {
- set selected "S"
- }
- "N" {
- # Don't deselect a target if it's been explicitly selected,
- # but indicate a specific target has been selected (so don't
- # do this testcase if it's not appropriate for this target).
- # The user really shouldn't have multiple lines of target
- # selectors, but try to do the intuitive thing (multiple lines
- # are OR'd together).
- if { $selected != "S" } {
- set selected "N"
- }
- }
- "F" { set expected "F" }
- "P" {
- # There's nothing to do for "P". We don't want to clobber a
- # previous xfail for this target.
- }
- }
- } else {
- # Note: A previous occurrence of `dg-do' with target/xfail selectors
- # is a user mistake. We clobber previous values here.
- set selected S
- set expected P
- }
-
- switch [lindex $args 1] {
- "preprocess" { }
- "compile" { }
- "assemble" { }
- "link" { }
- "run" { }
- default {
- error "[lindex $args 0]: syntax error"
- }
- }
- set do-what [list [lindex $args 1] $selected $expected]
-}
-
-proc dg-error { args } {
- upvar dg-messages messages
-
- if { [llength $args] > 5 } {
- error "[lindex $args 0]: too many arguments"
- return
- }
-
- set xfail ""
- if { [llength $args] >= 4 } {
- switch [dg-process-target [lindex $args 3]] {
- "F" { set xfail "X" }
- "P" { set xfail "" }
- "N" {
- # If we get "N", this error doesn't apply to us so ignore it.
- return
- }
- }
- }
-
- if { [llength $args] >= 5 } {
- switch [lindex $args 4] {
- "." { set line [dg-format-linenum [lindex $args 0]] }
- "0" { set line "" }
- "default" { set line [dg-format-linenum [lindex $args 4]] }
- }
- } else {
- set line [dg-format-linenum [lindex $args 0]]
- }
-
- lappend messages [list $line "${xfail}ERROR" [lindex $args 1] [lindex $args 2]]
-}
-
-proc dg-warning { args } {
- upvar dg-messages messages
-
- if { [llength $args] > 5 } {
- error "[lindex $args 0]: too many arguments"
- return
- }
-
- set xfail ""
- if { [llength $args] >= 4 } {
- switch [dg-process-target [lindex $args 3]] {
- "F" { set xfail "X" }
- "P" { set xfail "" }
- "N" {
- # If we get "N", this warning doesn't apply to us so ignore it.
- return
- }
- }
- }
-
- if { [llength $args] >= 5 } {
- switch [lindex $args 4] {
- "." { set line [dg-format-linenum [lindex $args 0]] }
- "0" { set line "" }
- "default" { set line [dg-format-linenum [lindex $args 4]] }
- }
- } else {
- set line [dg-format-linenum [lindex $args 0]]
- }
-
- lappend messages [list $line "${xfail}WARNING" [lindex $args 1] [lindex $args 2]]
-}
-
-proc dg-bogus { args } {
- upvar dg-messages messages
-
- if { [llength $args] > 5 } {
- error "[lindex $args 0]: too many arguments"
- return
- }
-
- set xfail ""
- if { [llength $args] >= 4 } {
- switch [dg-process-target [lindex $args 3]] {
- "F" { set xfail "X" }
- "P" { set xfail "" }
- "N" {
- # If we get "N", this message doesn't apply to us so ignore it.
- return
- }
- }
- }
-
- if { [llength $args] >= 5 } {
- switch [lindex $args 4] {
- "." { set line [dg-format-linenum [lindex $args 0]] }
- "0" { set line "" }
- "default" { set line [dg-format-linenum [lindex $args 4]] }
- }
- } else {
- set line [dg-format-linenum [lindex $args 0]]
- }
-
- lappend messages [list $line "${xfail}BOGUS" [lindex $args 1] [lindex $args 2]]
-}
-
-proc dg-build { args } {
- upvar dg-messages messages
-
- if { [llength $args] > 4 } {
- error "[lindex $args 0]: too many arguments"
- return
- }
-
- set xfail ""
- if { [ llength $args] >= 4 } {
- switch [dg-process-target [lindex $args 3]] {
- "F" { set xfail "X" }
- "P" { set xfail "" }
- "N" {
- # If we get "N", this lossage doesn't apply to us so ignore it.
- return
- }
- }
- }
-
- lappend messages [list [lindex $args 0] "${xfail}BUILD" [lindex $args 1] [lindex $args 2]]
-}
-
-proc dg-excess-errors { args } {
- upvar dg-excess-errors-flag excess-errors-flag
-
- if { [llength $args] > 3 } {
- error "[lindex $args 0]: too many arguments"
- return
- }
-
- if { [llength $args] >= 3 } {
- switch [dg-process-target [lindex $args 2]] {
- "F" { set excess-errors-flag 1 }
- "S" { set excess-errors-flag 1 }
- }
- } else {
- set excess-errors-flag 1
- }
-}
-
-#
-# Indicate expected program output
-#
-# We support multiple occurrences, but we do not implicitly insert newlines
-# between them.
-#
-# Note that target boards don't all support this kind of thing so it's a good
-# idea to specify the target all the time. If one or more targets are
-# explicitly selected, the test won't be performed if we're not one of them
-# (as long as we were never mentioned).
-#
-# If you have target dependent output and want to set an xfail for one or more
-# of them, use { dg-output "" { xfail a-b-c ... } }. The "" won't contribute
-# to the expected output.
-#
-proc dg-output { args } {
- upvar dg-output-text output-text
-
- if { [llength $args] > 3 } {
- error "[lindex $args 0]: too many arguments"
- return
- }
-
- # Allow target dependent output.
-
- set expected [lindex ${output-text} 0]
- if { [llength $args] >= 3 } {
- switch [dg-process-target [lindex $args 2]] {
- "N" { return }
- "S" { }
- "F" { set expected "F" }
- # Don't override a previous xfail.
- "P" { }
- }
- }
-
- if { [llength ${output-text}] == 1 } {
- # First occurrence.
- set output-text [list $expected [lindex $args 1]]
- } else {
- set output-text [list $expected "[lindex ${output-text} 1][lindex $args 1]"]
- }
-}
-
-proc dg-final { args } {
- upvar dg-final-code final-code
-
- if { [llength $args] > 2 } {
- error "[lindex $args 0]: too many arguments"
- return
- }
-
- #send_user "dg-final: $args\n"
- append final-code "[lindex $args 1]\n"
-}
-\f
-#
-# Set up our environment
-#
-# There currently isn't much to do, but always calling it allows us to add
-# enhancements without having to update our callers.
-# It must be run before calling `dg-test'.
-
-proc dg-init { } {
- # If the tool has an "init" routine, call it.
- global tool
- if ![string match "" [info procs ${tool}_init]] {
- ${tool}_init
- }
-}
-\f
-# dg-runtest -- simple main loop useful to most testsuites
-#
-# FLAGS is a set of options to always pass.
-# DEFAULT_EXTRA_FLAGS is a set of options to pass if the testcase doesn't
-# specify any (with dg-option).
-# ??? We're flipping between "flag" and "option" here.
-
-proc dg-runtest { testcases flags default-extra-flags } {
- global runtests
-
- foreach testcase $testcases {
- # If we're only testing specific files and this isn't one of them, skip it.
- if ![runtest_file_p $runtests $testcase] {
- continue
- }
- verbose "Testing [file tail [file dirname $testcase]]/[file tail $testcase]"
- dg-test $testcase $flags ${default-extra-flags}
- }
-}
-\f
-#
-# Runs a new style DejaGnu test
-#
-# PROG is the full path name of the file to pass to the tool (eg: compiler).
-# TOOL_FLAGS is a set of options to always pass.
-# DEFAULT_EXTRA_TOOL_FLAGS are additional options if the testcase has none.
-
-proc dg-test { prog tool_flags default_extra_tool_flags } {
- global dg-do-what-default dg-interpreter-batch-mode dg-linenum-format
- global errorCode errorInfo
- global comp_output exec_output
- global tool
- global srcdir ;# eg: /calvin/dje/devo/gcc/./testsuite/
- global host_triplet target_triplet
-
- set text "\[- A-Za-z0-9\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]*"
-
- regsub "^$srcdir/?" $prog "" name
- # If we couldn't rip $srcdir out of `prog' then just do the best we can.
- # The point is to reduce the unnecessary noise in the logs. Don't strip
- # out too much because different testcases with the same name can confuse
- # `test-tool'.
- if [string match "/*" $name] {
- set name "[file tail [file dirname $prog]]/[file tail $prog]"
- }
-
- # Process any embedded dg options in the testcase.
-
- # Use "" for the second element of dg-do-what so we can tell if it's been
- # explicitly set to "S".
- set dg-do-what [list ${dg-do-what-default} "" P]
- set dg-excess-errors-flag 0
- set dg-messages ""
- set dg-extra-tool-flags $default_extra_tool_flags
- set dg-final-code ""
-
- # `dg-output-text' is a list of two elements: pass/fail and text.
- # Leave second element off for now (indicates "don't perform test")
- set dg-output-text "P"
-
- # Define our own "special function" `unknown' so we catch spelling errors.
- # But first rename the existing one so we can restore it afterwards.
- catch {rename dg-save-unknown ""}
- rename unknown dg-save-unknown
- proc unknown { args } {
- return -code error "unknown dg option: $args"
- }
-
- set tmp [dg-get-options $prog]
- foreach op $tmp {
- verbose "Processing option: $op" 3
- set status [catch "$op" errmsg]
- if { $status != 0 } {
- if { 0 && [info exists errorInfo] } {
- # This also prints a backtrace which will just confuse
- # testcase writers, so it's disabled.
- perror "$name: $errorInfo\n"
- } else {
- perror "$name: $errmsg for \"$op\"\n"
- }
- # ??? The call to unresolved here is necessary to clear `errcnt'.
- # What we really need is a proc like perror that doesn't set errcnt.
- # It should also set exit_status to 1.
- unresolved "$name: $errmsg for \"$op\""
- return
- }
- }
-
- # Restore normal error handling.
- rename unknown ""
- rename dg-save-unknown unknown
-
- # If we're not supposed to try this test on this target, we're done.
- if { [lindex ${dg-do-what} 1] == "N" } {
- unsupported "$name"
- verbose "$name not supported on this target, skipping it" 3
- return
- }
-
- # Run the tool and analyze the results.
- # The result of ${tool}-dg-test is in a bit of flux.
- # Currently it is the name of the output file (or "" if none).
- # If we need more than this it will grow into a list of things.
- # No intention is made (at this point) to preserve upward compatibility
- # (though at some point we'll have to).
-
- set output_file [${tool}-dg-test $prog [lindex ${dg-do-what} 0] "$tool_flags ${dg-extra-tool-flags}"]
-
- #send_user "\nold_dejagnu.exp: comp_output1 = :$comp_output:\n\n"
- #send_user "\nold_dejagnu.exp: message = :$message:\n\n"
- #send_user "\nold_dejagnu.exp: message length = [llength $message]\n\n"
-
- foreach i ${dg-messages} {
- verbose "Scanning for message: $i" 4
-
- # Remove all error messages for the line [lindex $i 0]
- # in the source file. If we find any, success!
- set line [lindex $i 0]
- set pattern [lindex $i 2]
- set comment [lindex $i 3]
- #send_user "Before:\n$comp_output\n"
- if [regsub -all "(^|\n)(\[^\n\]+$line\[^\n\]*($pattern)\[^\n\]*\n?)+" $comp_output "\n" comp_output] {
- set comp_output [string trimleft $comp_output]
- set ok pass
- set uhoh fail
- } else {
- set ok fail
- set uhoh pass
- }
- #send_user "After:\n$comp_output\n"
-
- # $line will either be a formatted line number or a number all by
- # itself. Delete the formatting.
- scan $line ${dg-linenum-format} line
- switch [lindex $i 1] {
- "ERROR" {
- $ok "$name $comment (test for errors, line $line)"
- }
- "XERROR" {
- x$ok "$name $comment (test for errors, line $line)"
- }
- "WARNING" {
- $ok "$name $comment (test for warnings, line $line)"
- }
- "XWARNING" {
- x$ok "$name $comment (test for warnings, line $line)"
- }
- "BOGUS" {
- $uhoh "$name $comment (test for bogus messages, line $line)"
- }
- "XBOGUS" {
- x$uhoh "$name $comment (test for bogus messages, line $line)"
- }
- "BUILD" {
- $uhoh "$name $comment (test for build failure, line $line)"
- }
- "XBUILD" {
- x$uhoh "$name $comment (test for build failure, line $line)"
- }
- "EXEC" { }
- "XEXEC" { }
- }
- #send_user "\nold_dejagnu.exp: comp_output2= :$comp_output:\n\n"
- }
- #send_user "\nold_dejagnu.exp: comp_output3 = :$comp_output:\n\n"
-
- # Remove messages from the tool that we can ignore.
- #send_user "comp_output: $comp_output\n"
- set comp_output [prune_system_crud $host_triplet $comp_output]
-
- if { [info proc ${tool}-dg-prune] != "" } {
- set comp_output [${tool}-dg-prune $target_triplet $comp_output]
- switch -glob $comp_output {
- "::untested::*" {
- regsub "::untested::" $comp_output "" message
- untested "$name: $message"
- return
- }
- "::unresolved::*" {
- regsub "::unresolved::" $comp_output "" message
- unresolved "$name: $message"
- return
- }
- "::unsupported::*" {
- regsub "::unsupported::" $comp_output "" message
- unsupported "$name: $message"
- return
- }
- }
- }
-
- # See if someone forgot to delete the extra lines.
- regsub -all "\n+" $comp_output "\n" comp_output
- regsub "^\n+" $comp_output "" comp_output
- #send_user "comp_output: $comp_output\n"
-
- # Don't do this if we're testing an interpreter.
- # FIXME: why?
- if { ${dg-interpreter-batch-mode} == 0 } {
- # Catch excess errors (new bugs or incomplete testcases).
- if ${dg-excess-errors-flag} {
- setup_xfail "*-*-*"
- }
- if ![string match "" $comp_output] {
- fail "$name (test for excess errors)"
- send_log "Excess errors:\n$comp_output\n"
- } else {
- pass "$name (test for excess errors)"
- }
- }
-
- # Run the executable image if asked to do so.
- # FIXME: This is the only place where we assume a standard meaning to
- # the `keyword' argument of dg-do. This could be cleaned up.
- if { [lindex ${dg-do-what} 0] == "run" } {
- if ![file exists $output_file] {
- warning "$name compilation failed to produce executable"
- } else {
- set status -1
- set status [${tool}_load $output_file]
- #send_user "After exec, status: $status\n"
- if { [lindex ${dg-do-what} 2] == "F" } {
- setup_xfail "*-*-*"
- }
- if { "$status" == "pass" } {
- pass "$name execution test"
- verbose "Exec succeeded." 3
- if { [llength ${dg-output-text}] > 1 } {
- #send_user "${dg-output-text}\n"
- if { [lindex ${dg-output-text} 0] == "F" } {
- setup_xfail "*-*-*"
- }
- set texttmp [lindex ${dg-output-text} 1]
- if { ![regexp $texttmp ${exec_output}] } {
- fail "$name output pattern test, is ${exec_output}, should match $texttmp"
- verbose "Failed test for output pattern $texttmp" 3
- } else {
- pass "$name output pattern test, $texttmp"
- verbose "Passed test for output pattern $texttmp" 3
- }
- unset texttmp
- }
- } elseif { "$status" == "fail" } {
- # It would be nice to get some info out of errorCode.
- if [info exists errorCode] {
- verbose "Exec failed, errorCode: $errorCode" 3
- } else {
- verbose "Exec failed, errorCode not defined!" 3
- }
- fail "$name execution test"
- } else {
- $status "$name execution test"
- }
- }
- }
-
- # Are there any further tests to perform?
- # Note that if the program has special run-time requirements, running
- # of the program can be delayed until here. Ditto for other situations.
- # It would be a bit cumbersome though.
-
- if ![string match ${dg-final-code} ""] {
- regsub -all "\\\\(\[{}\])" ${dg-final-code} "\\1" dg-final-code
- # Note that the use of `args' here makes this a varargs proc.
- proc dg-final-proc { args } ${dg-final-code}
- verbose "Running dg-final tests." 3
- verbose "dg-final-proc:\n[info body dg-final-proc]" 4
- if [catch "dg-final-proc $prog" errmsg] {
- perror "$name: error executing dg-final: $errmsg"
- # ??? The call to unresolved here is necessary to clear `errcnt'.
- # What we really need is a proc like perror that doesn't set errcnt.
- # It should also set exit_status to 1.
- unresolved "$name: error executing dg-final: $errmsg"
- }
- }
-
- # Do some final clean up.
- # When testing an interpreter, we don't compile something and leave an
- # output file.
- if { ${dg-interpreter-batch-mode} == 0 } {
- catch "exec rm -f $output_file"
- }
-}
-\f
-#
-# Do any necessary cleanups
-#
-# This is called at the end to undo anything dg-init did (that needs undoing).
-#
-proc dg-finish { } {
- # Reset this in case caller wonders whether s/he should.
- global prms_id
- set prms_id 0
-
- # The framework doesn't like to see any error remnants, so remove them.
- global errorInfo
- if [info exists errorInfo] {
- unset errorInfo
- }
-
- # If the tool has a "finish" routine, call it.
- # There may be a bit of duplication (eg: resetting prms_id), leave it.
- # Let's keep these procs robust.
- global tool
- if ![string match "" [info procs ${tool}_finish]] {
- ${tool}_finish
- }
-}
+++ /dev/null
-
-source lib/testSessionClasses.itcl
-source lib/testSessionFramework.itcl
-source lib/testSessionUtils.itcl
-
-
-namespace TestSession {
- Environment E0
-
- #E0 saveEnv
- E0 clearEnv
- puts [join [E0 <<] "\n"]
-
- exit
-
- foreach obj [info objects] {
- puts "$obj - [$obj <<]"
- }
-}
-
-::TestSession::clone_output "ERROR: testing"
+++ /dev/null
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-# These variables are local to this file.
-# This or more warnings and a test fails.
-set warning_threshold 3
-# This or more errors and a test fails.
-set perror_threshold 1
-\f
-proc mail_file { file to subject } {
- if [file readable $file] {
- catch "exec mail -s \"$subject\" $to < $file"
- }
-}
-
-#
-# Open the output logs
-#
-proc open_logs { } {
- global outdir
- global tool
- global sum_file
-
- if { ${tool} == "" } {
- set tool testrun
- }
- catch "exec rm -f $outdir/$tool.sum"
- set sum_file [open "$outdir/$tool.sum" w]
- catch "exec rm -f $outdir/$tool.log"
- log_file -a "$outdir/$tool.log"
- verbose "Opening log files in $outdir"
- if { ${tool} == "testrun" } {
- set tool ""
- }
-}
-
-
-#
-# Close the output logs
-#
-proc close_logs { } {
- global sum_file
-
- catch "close $sum_file"
-}
-
-#
-# Check build host triplet for pattern
-#
-# With no arguments it returns the triplet string.
-#
-proc isbuild { args } {
- global build_triplet
- global host_triplet
-
- if ![info exists build_triplet] {
- set build_triplet ${host_triplet}
- }
- if [string match "" $args] {
- return $build_triplet
- }
- verbose "Checking pattern \"$args\" with $build_triplet" 2
-
- if [string match "$args" $build_triplet] {
- return 1
- } else {
- return 0
- }
-}
-
-#
-# If this is a canadian (3 way) cross. This means the tools are
-# being built with a cross compiler for another host.
-#
-proc is3way {} {
- global host_triplet
- global build_triplet
-
- if ![info exists build_triplet] {
- set build_triplet ${host_triplet}
- }
- verbose "Checking $host_triplet against $build_triplet" 2
- if { "$build_triplet" == "$host_triplet" } {
- return 0
- }
- return 1
-}
-
-#
-# Check host triplet for pattern
-#
-# With no arguments it returns the triplet string.
-#
-proc ishost { args } {
- global host_triplet
-
- if [string match "" $args] {
- return $host_triplet
- }
- verbose "Checking pattern \"$args\" with $host_triplet" 2
-
- if [string match "$args" $host_triplet] {
- return 1
- } else {
- return 0
- }
-}
-
-#
-# Check target triplet for pattern
-#
-# With no arguments it returns the triplet string.
-# Returns 1 if the target looked for, or 0 if not.
-#
-proc istarget { args } {
- global target_triplet
-
- # if no arg, return the config string
- if [string match "" $args] {
- if [info exists target_triplet] {
- return $target_triplet
- } else {
- perror "No target configuration names found."
- }
- }
-
- # now check against the cannonical name
- if [info exists target_triplet] {
- verbose "Checking \"$args\" against \"$target_triplet\"" 2
- if [string match "$args" $target_triplet] {
- return 1
- }
- }
-
- # nope, no match
- return 0
-}
-
-#
-# Check to see if we're running the tests in a native environment
-#
-# Returns 1 if running native, 0 if on a target.
-#
-proc isnative { } {
- global target_triplet
- global build_triplet
-
- if [string match $build_triplet $target_triplet] {
- return 1
- }
- return 0
-}
-
-#
-# unknown -- called by expect if a proc is called that doesn't exist
-#
-proc unknown { args } {
- global errorCode
- global errorInfo
-
- clone_output "ERROR: (DejaGnu) proc \"$args\" does not exist."
- if [info exists errorCode] {
- send_error "The error code is $errorCode\n"
- }
- if [info exists errorInfo] {
- send_error "The info on the error is:\n$errorInfo\n"
- }
-
- log_summary
-}
-
-#
-# Print output to stdout (or stderr) and to log file
-#
-# If the --all flag (-a) option was used then all messages go the the screen.
-# Without this, all messages that start with a keyword are written only to the
-# detail log file. All messages that go to the screen will also appear in the
-# detail log. This should only be used by the framework itself using pass,
-# fail, xpass, xfail, warning, perror, note, untested, unresolved, or
-# unsupported procedures.
-#
-proc clone_output { message } {
- global sum_file
- global all_flag
-
- puts $sum_file "$message"
- case [lindex $message 0] in {
- {"PASS:" "XFAIL:" "UNRESOLVED:" "UNSUPPORTED:" "UNTESTED:"} {
- if $all_flag {
- send_user "$message\n"
- return "$message"
- } else {
- send_log "$message\n"
- }
- }
- {"ERROR:" "WARNING:" "NOTE:"} {
- send_error "$message\n"
- return "$message"
- }
- default {
- send_user "$message\n"
- return "$message"
- }
- }
-}
-
-#
-# Reset all globally used variables
-#
-proc reset_vars {} {
- # test result counters
- global testcnt
- global failcnt
- global passcnt
- global xfailcnt
- global xpasscnt
- global untestedcnt
- global unresolvedcnt
- global unsupportedcnt
-
- # other miscellaneous variables
- global prms_id
- global bug_id
-
- # reset them all
- set prms_id 0
- set bug_id 0
- set testcnt 0
- set failcnt 0
- set passcnt 0
- set xfailcnt 0
- set xpasscnt 0
- set untestedcnt 0
- set unresolvedcnt 0
- set unsupportedcnt 0
-
- # Variables local to this file.
- global warning_threshold perror_threshold
- set warning_threshold 3
- set perror_threshold 1
-}
-
-#
-# Print summary of all pass/fail counts
-#
-# Calling this exits.
-#
-proc log_summary {} {
- global tool
- global sum_file
- global exit_status
- global failcnt
- global passcnt
- global testcnt
- global xfailcnt
- global xpasscnt
- global untestedcnt
- global unresolvedcnt
- global unsupportedcnt
- global mail_logs
- global outdir
- global mailing_list
-
- clone_output "\n\t\t=== $tool Summary ===\n"
-
- # If the tool set `testcnt', it wants us to do a sanity check on the
- # total count, so compare the reported number of testcases with the
- # expected number. Maintaining an accurate count in `testcnt' isn't easy
- # so it's not clear how often this will be used.
- if { $testcnt > 0 } {
- # total all the testcases reported
- set totlcnt [expr $failcnt+$passcnt+$xfailcnt+$xpasscnt]
- set totlcnt [expr $totlcnt+$untestedcnt+$unresolvedcnt+$unsupportedcnt]
-
- if { $testcnt>$totlcnt || $testcnt<$totlcnt } {
- if { $testcnt > $totlcnt } {
- set mismatch "unreported [expr $testcnt-$totlcnt]"
- }
- if { $testcnt < $totlcnt } {
- set mismatch "misreported [expr $totlcnt-$testcnt]"
- }
- } else {
- verbose "# of testcases run $testcnt"
- }
-
- if [info exists mismatch] {
- clone_output "### ERROR: totals do not equal number of testcases run"
- clone_output "### ERROR: # of testcases expected $testcnt"
- clone_output "### ERROR: # of testcases reported $totlcnt"
- clone_output "### ERROR: # of testcases $mismatch\n"
- }
- }
-
- if { $passcnt > 0 } {
- clone_output "# of expected passes $passcnt"
- }
- if { $xfailcnt > 0 } {
- clone_output "# of expected failures $xfailcnt"
- }
- if { $xpasscnt > 0 } {
- clone_output "# of unexpected successes $xpasscnt"
- }
- if { $failcnt > 0 } {
- clone_output "# of unexpected failures $failcnt"
- }
- if { $unresolvedcnt > 0 } {
- clone_output "# of unresolved testcases $unresolvedcnt"
- }
- if { $untestedcnt > 0 } {
- clone_output "# of untested testcases $untestedcnt"
- }
- if { $unsupportedcnt > 0 } {
- clone_output "# of unsupported tests $unsupportedcnt"
- }
- # extract version number
- if {[info procs ${tool}_version] != ""} {
- if {[catch "${tool}_version" output]} {
- warning "${tool}_version failed:\n$output"
- }
- }
- close_logs
- cleanup
- if $mail_logs {
- mail_file $outdir/$tool.sum $mailing_list "Dejagnu Summary Log"
- }
- exit $exit_status
-}
-
-#
-# Close all open files, remove temp file and core files
-#
-proc cleanup {} {
- global sum_file
- global exit_status
- global done_list
- global base_dir
- global subdir
-
- #catch "exec rm -f [glob xgdb core *.x *.o *_soc a.out]"
- #catch "exec rm -f [glob -nocomplain $subdir/*.o $subdir/*.x $subdir/*_soc]"
-}
-\f
-#
-# Setup a flag to control whether a failure is expected or not
-#
-# Multiple target triplet patterns can be specified for targets
-# for which the test fails. A decimal number can be specified,
-# which is the PRMS number.
-#
-proc setup_xfail { args } {
- global xfail_flag
- global xfail_prms
-
- set xfail_prms 0
- set argc [ llength $args ]
- for { set i 0 } { $i < $argc } { incr i } {
- set sub_arg [ lindex $args $i ]
- # is a prms number. we assume this is a number with no characters
- if [regexp "^\[0-9\]+$" $sub_arg] {
- set xfail_prms $sub_arg
- continue
- }
- if [istarget $sub_arg] {
- set xfail_flag 1
- continue
- }
- }
-}
-
-#
-# Clear the xfail flag for a particular target
-#
-proc clear_xfail { args } {
- global xfail_flag
- global xfail_prms
-
- set argc [ llength $args ]
- for { set i 0 } { $i < $argc } { incr i } {
- set sub_arg [ lindex $args $i ]
- case $sub_arg in {
- "*-*-*" { # is a configuration triplet
- if [istarget $sub_arg] {
- set xfail_flag 0
- set xfail_prms 0
- }
- continue
- }
- }
- }
-}
-
-#
-# Record that a test has passed or failed (perhaps unexpectedly)
-#
-# This is an internal procedure, only used in this file.
-#
-proc record_test { type message } {
- global passcnt failcnt xpasscnt xfailcnt
- global untestedcnt unresolvedcnt unsupportedcnt
- global exit_status
- global prms_id bug_id
- global xfail_flag xfail_prms
- global errcnt warncnt
- global warning_threshold perror_threshold
-
- # If we have too many warnings or errors,
- # the output of the test can't be considered correct.
- if { $warning_threshold > 0 && $warncnt >= $warning_threshold
- || $perror_threshold > 0 && $errcnt >= $perror_threshold } {
- # Reset these first to prevent infinite recursion.
- set warncnt 0
- set errcnt 0
- unresolved $message
- return
- }
-
- switch $type {
- PASS {
- incr passcnt
- if $prms_id {
- set message [concat $message "\t(PRMS $prms_id)"]
- }
- }
- FAIL {
- incr failcnt
- set exit_status 1
- if $prms_id {
- set message [concat $message "\t(PRMS $prms_id)"]
- }
- }
- XPASS {
- incr xpasscnt
- set exit_status 1
- if { $xfail_prms != 0 } {
- set message [concat $message "\t(PRMS $xfail_prms)"]
- }
- }
- XFAIL {
- incr xfailcnt
- if { $xfail_prms != 0 } {
- set message [concat $message "\t(PRMS $xfail_prms)"]
- }
- }
- UNTESTED {
- incr untestedcnt
- # The only reason we look at the xfail stuff is to pick up
- # `xfail_prms'.
- if { $xfail_flag && $xfail_prms != 0 } {
- set message [concat $message "\t(PRMS $xfail_prms)"]
- } elseif $prms_id {
- set message [concat $message "\t(PRMS $prms_id)"]
- }
- }
- UNRESOLVED {
- incr unresolvedcnt
- set exit_status 1
- # The only reason we look at the xfail stuff is to pick up
- # `xfail_prms'.
- if { $xfail_flag && $xfail_prms != 0 } {
- set message [concat $message "\t(PRMS $xfail_prms)"]
- } elseif $prms_id {
- set message [concat $message "\t(PRMS $prms_id)"]
- }
- }
- UNSUPPORTED {
- incr unsupportedcnt
- # The only reason we look at the xfail stuff is to pick up
- # `xfail_prms'.
- if { $xfail_flag && $xfail_prms != 0 } {
- set message [concat $message "\t(PRMS $xfail_prms)"]
- } elseif $prms_id {
- set message [concat $message "\t(PRMS $prms_id)"]
- }
- }
- default {
- perror "record_test called with bad type `$type'"
- set errcnt 0
- return
- }
- }
-
- if $bug_id {
- set message [concat $message "\t(BUG $bug_id)"]
- }
-
- global multipass_name
- if { $multipass_name != "" } {
- clone_output "$type: $multipass_name: $message"
- } else {
- clone_output "$type: $message"
- }
-
- # Reset these so they're ready for the next test case. We don't reset
- # prms_id or bug_id here. There may be multiple tests for them. Instead
- # they are reset in the main loop after each test. It is also the
- # testsuite driver's responsibility to reset them after each testcase.
- set warncnt 0
- set errcnt 0
- set xfail_flag 0
- set xfail_prms 0
-}
-
-#
-# Record that a test has passed
-#
-proc pass { message } {
- global xfail_flag
-
- if $xfail_flag {
- record_test XPASS $message
- } else {
- record_test PASS $message
- }
-}
-
-#
-# Record that a test has failed
-#
-proc fail { message } {
- global xfail_flag
-
- if $xfail_flag {
- record_test XFAIL $message
- } else {
- record_test FAIL $message
- }
-}
-
-#
-# Record that a test has passed unexpectedly
-#
-proc xpass { message } {
- record_test XPASS $message
-}
-
-#
-# Record that a test has failed unexpectedly
-#
-proc xfail { message } {
- record_test XFAIL $message
-}
-\f
-#
-# Set warning threshold
-#
-proc set_warning_threshold { threshold } {
- set warning_threshold $threshold
-}
-
-#
-# Get warning threshold
-#
-proc get_warning_threshold { } {
- return $warning_threshold
-}
-
-#
-# Prints warning messages
-# These are warnings from the framework, not from the tools being tested.
-# It takes a string, and an optional number and returns nothing.
-#
-proc warning { args } {
- global warncnt
- global errno
-
- if { [llength $args] > 1 } {
- set warncnt [lindex $args 1]
- } else {
- incr warncnt
- }
- set message [lindex $args 0]
-
- clone_output "WARNING: $message"
- set errno "WARNING: $message"
-
- global errorInfo
- if [info exists errorInfo] {
- unset errorInfo
- }
-}
-
-#
-# Prints error messages
-# These are errors from the framework, not from the tools being tested.
-# It takes a string, and an optional number and returns nothing.
-#
-proc perror { args } {
- global errcnt
- global errno
-
- if { [llength $args] > 1 } {
- set errcnt [lindex $args 1]
- } else {
- incr errcnt
- }
- set message [lindex $args 0]
-
- clone_output "ERROR: $message"
- set errno "ERROR: $message"
-
- global errorInfo
- if [info exists errorInfo] {
- unset errorInfo
- }
-}
-
-#
-# Prints informational messages
-#
-# These are messages from the framework, not from the tools being tested.
-# This means that it is currently illegal to call this proc outside
-# of dejagnu proper.
-#
-proc note { message } {
- clone_output "NOTE: $message"
-
- # ??? It's not clear whether we should do this. Let's not, and only do
- # so if we find a real need for it.
- #global errorInfo
- #if [info exists errorInfo] {
- # unset errorInfo
- #}
-}
-\f
-#
-# untested -- mark the test case as untested
-#
-proc untested { message } {
- record_test UNTESTED $message
-}
-
-#
-# Mark the test case as unresolved
-#
-proc unresolved { message } {
- record_test UNRESOLVED $message
-}
-
-#
-# Mark the test case as unsupported
-#
-# Usually this is used for a test that is missing OS support.
-#
-proc unsupported { message } {
- record_test UNSUPPORTED $message
-}
-
-\f
-#
-# Create an exp_continue proc if it doesn't exist
-#
-# For compatablity with old versions.
-#
-global argv0
-if ![info exists argv0] {
- proc exp_continue { } {
- continue -expect
- }
-}
+++ /dev/null
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-#
-# Find the linker script for the current target. Returns a string
-# suitable to pass to $CC or $CXX to use a liblgoss based linker script,
-# or NULL if there is no support.
-#
-proc libgloss_script { } {
- global srcdir
- global target_cpu
- global LDFLAGS
- global CFLAGS
- global CXXFLAGS
- global target_info
-
- # sanity check
- if ![info exists LDFLAGS] {
- set LDFLAGS ""
- }
- if ![info exists CFLAGS] {
- set CFLAGS ""
- }
-
- if ![info exists CXXFLAGS] {
- set CXXFLAGS ""
- }
-
- # find the linker script. first we look at the config
- # data and hope to find it all ready for us to use. if
- # that fails, then look in the LDFLAGS and CFLAGS variables that
- # get set in the global site.exp file.
- if [info exists target_info(target,name)] {
- set script $target_info(target,name).ld
- } else {
- if [regexp -- "-T.*\.ld" ${LDFLAGS} script] {
- string trimleft ${script} "-T"
- }
- if [regexp -- "-T.*\.ld" ${CFLAGS} script] {
- string trimleft ${script} "-T"
- }
- if [regexp -- "-T.*\.ld" ${CXXFLAGS} script] {
- string trimleft ${script} "-T"
- }
- }
-
- if ![info exists script] {
- warning "Couldn't find the linker script name for target"
- return ""
- }
-
- # if we're on a remote host, we can't search for the file, so use the
- # linker script in the path.
- if [is3way] {
- return "-T${script}"
- }
-
- # search for the general directories
- foreach i ".. ../.. ../../.. ../../../.." {
- verbose "Looking for a ${srcdir}/${i}/libgloss/${target_cpu}/${script}" 2
- if [file exists ${srcdir}/$i/libgloss/${target_cpu}/${script} ] {
- verbose "Found ${srcdir}/${i}/libgloss/${target_cpu}/${script}." 3
- return "-T${srcdir}/${i}/libgloss/${target_cpu}/${script}"
- }
- }
-
- # we didn't find the script, so we have to hope it's installed
- return "-T${script}"
-}
-
-#
-# Find all the pieces of libgloss for testing the GNU development tools
-# needed to use $CC or $CXX. It returns a string suitable to pass to
-# $CC or $CXX to get a fully linked binary for the target.
-#
-proc libgloss_flags { } {
- global target_alias
- global target_cpu
- global srcdir
- global base_dir
-
- # libgloss doesn't work native
- if [isnative] {
- return ""
- }
-
- # if we're on a remote host, we can't search for the file, so we can only
- # use an installed compiler, so we don't add any paths here.
- if [is3way] {
- return "[libgloss_script]"
- }
-
- # search for the general directories
- foreach i ".. ../.. ../../.. ../../../.." {
- if [file exists ${base_dir}/${i}/${target_alias}/libgloss/${target_cpu} ] {
- verbose "Found ${base_dir}/${i}/${target_alias}/libgloss/${target_cpu}." 3
- return "-L${base_dir}/${i}/${target_alias}/libgloss/${target_cpu} [libgloss_script]"
- }
- }
-
- # we didn't find any support at all
- return "[libgloss_script]"
-}
-
-#
-# Find the C libraries
-#
-proc newlib_flags { } {
- global base_dir
- global srcdir
- global target_alias
-
- # if we're on a remote host, we can't search for the file, so use the
- # newlib already installed.
- if [is3way] {
- return ""
- }
-
- # search for the general directories
- foreach i ".. ../.. ../../.. ../../../.." {
- verbose "Looking for a ${base_dir}/${i}/${target_alias}/newlib/targ-include" 2
- if [file exists ${base_dir}/${i}/${target_alias}/newlib/targ-include ] {
- verbose "Found ${base_dir}/${i}/${target_alias}/newlib/targ-include." 3
- set incls1 "-I${base_dir}/${i}/${target_alias}/newlib/targ-include"
- }
- verbose "Looking for a ${srcdir}/${i}/newlib/libc/include" 2
- if [file exists ${srcdir}/${i}/newlib/libc/include ] {
- verbose "Found ${srcdir}/${i}/newlib/libc/include." 3
- set incls2 "-I${srcdir}/${i}/newlib/libc/include"
- }
- }
-
- # search for the general directories
- foreach i ".. ../.. ../../.. ../../../.." {
- verbose "Looking for a ${base_dir}/${i}/newlib" 2
- if [file exists ${base_dir}/${i}/newlib ] {
- verbose "Found ${base_dir}/${i}/newlib." 3
- return "-B${base_dir}/${i}/newlib/ ${incls1} ${incls2}"
- }
- }
- return ""
-}
-
-#
-# Find all the pieces of libgloss for testing the GNU development tools
-# needed to use $LD. This gets fun cause we have to guess the name of the
-# BSP for this target. If returns a string suitable to pass to LD to get
-# a fully linked binary for the target. It also sets two global variables,
-# CRT0 is the path to the startup file, and
-# BSP is the path to the support library.
-#
-proc libgloss_ld {} {
-#proc gloss_ld {} {
- global target_cpu
- global srcdir
- global base_dir
- global CRT0
- global BSP
-
- # libgloss doesn't work native
- if [isnative] {
- return ""
- }
-
-# set ldflags ""
- # search for the general directories
- foreach i ".. ../.. ../../.. ../../../.." {
- if ![info exists gloss_srcdir] {
- if [file exists ${srcdir}/$i/libgloss/${target_cpu} ] {
- verbose "Found ${srcdir}/$i/libgloss/${target_cpu}." 3
- set gloss_srcdir "$i/libgloss/${target_cpu}"
- }
- }
- if ![info exists gloss_objdir] {
- if [file exists ${base_dir}/$i/libgloss/${target_cpu} ] {
- verbose "Found ${base_dir}/$i/libgloss/${target_cpu}." 3
- set gloss_objdir "$i/libgloss/${target_cpu}"
- append ldflags " -L${gloss_objdir} "
- }
- }
- }
-
- # find the crt0
- if [file exists ${gloss_objdir}/crt0.o] {
- verbose "Found ${base_dir}/$i/libgloss/${target_cpu}." 3
- set CRT0 "$i/libgloss/${target_cpu}"
- append ldflags " ${gloss_objdir}/crt0.o "
- } else {
- perror "No crt0.o built for this target"
- }
-
- # find the BSP (currently an object, it may become an archive soon)
- foreach i "[list_targets]" {
- if [info exists target_info($i,name}] {
- if [file exists ${gloss_objdir}/${target_info}($i,name).o ] {
- set BSP "${target_info}($i,name).o"
- append ldflags " -lc -l ${target_info}($i,name).o -lc "
- }
- }
- }
- if [expr ![info exists gloss_srcdir] || ![info exists gloss_srcdir]] {
- warning "No libgloss support in build tree"
- return ""
- } else {
- return "${ldflags}"
- }
-}
+++ /dev/null
-#
-# The following procedures are creted to replace the
-# procedures defined in expect incase expect is not used as the
-# test framework
-#
-
-proc send_user args {
- set newline 1
- set logfile 0
- set i 0
- if { [string index [lindex $args 0] 0] == "-" } {
- for { set i 0 } { $i < [llength $args] } { incr i } {
- if { [lindex $args $i] == "--" } {
- incr i
- break
- } elseif { [lindex $args $i] == "-n" } {
- set newline 0
- } elseif { [lindex $args $i] == "-log" } {
- set logfile 1
- } elseif { [string index [lindex $args $i] 0] == "-" } {
- ::BlueGnu::clone_output "ERROR: verbose:\
- illegal argument: [lindex $args $i]"
- return
- } else {
- break
- }
- }
- if { [llength $args] == $i } {
- ::BlueGnu::clone_output "ERROR: send_user: nothing to print"
- return
- }
- }
- puts -nonewline [lindex $args $i]
-}
-
-proc send_error msg {
- puts -nonewline stderr $msg
-}
-
-proc send_log msg {
- global log_file
-
- if {[info exists log_file]} {
- puts -nonewline $log_file $msg
- } else {
- send_user "####### No log file has been defined\n"
- puts -nonewline stderr $msg
- }
-}
-
-proc log_file {args} {
- global log_file
- if {[info exists log_file]} {
- catch {close $log_file}
- unset log_file
- }
- set eAppend w
- foreach arg $args {
- switch -- $arg {
- -a {
- set eAppend a
- }
- default {
- set log_file $arg
- }
- }
- }
- if {[info exist log_file]} {
- set log_file [open $log_file $eAppend]
- } else {
- set log_file stderr
- }
-}
-
+++ /dev/null
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-# these just need to be initialized
-# FIXME: This is deprecated (we should have no knowledge of global `shell_id').
-# Remove at some point.
-set shell_id 0
-
-#
-# Open a connection to a remote host or target. This requires the target_info
-# array be filled in with the proper info to work. The old variables are also
-# still functional.
-#
-# type is either "host" or "target". The default is target if no type is supplied.
-# It returns the spawn id of the process that is the connection.
-#
-proc remote_open { args } {
- global target_info
- global connectmode
- global targetname
- global serialport
- global netport
- global reboot
- global shell_id
- global spawn_id
-
- if { [llength $args] == 0 } {
- set type "target"
- } else {
- set type $args
- }
-
- # set the current connection
- if [info exists target_info(${type},name)] {
- if { $target_info(${type},name) != "" } {
- if { [info proc push_$type] != "" } {
- push_$type $target_info(${type},name)
- }
- } else {
- warning "Couldn't push target, name was NULL"
- }
- }
-
- if [info exists target_info(${type},connect)] {
- set connect_prog $target_info(${type},connect)
- } else {
- if [info exists connectmode] {
- set connect_prog $connectmode
- } else {
- perror "No connectmode specified"
- set shell_id -1
- return $shell_id
- }
- }
-
- # reboot the machine if we neeed to, typically by using an x10 controller.
- if $reboot {
- if { [info procs "reboot_hook"] != "" } {
- reboot_hook
- }
- }
-
- set shell_id [$connect_prog $type]
-
- if [info exists target_info] {
- set target_info(${type},fileid) $shell_id
- if [info exists target_info(${type},name)] {
- set target_info($target_info(${type},name),fileid) $shell_id
- }
- }
- return $shell_id
-}
-
-#
-# Close the remote connection.
-# shell_id - This is the id number returned by the any of the connection
-# procedures, or an index into one of the arrays.
-#
-proc remote_close { arg } {
- # get the type of connection, host or target
- if [expr [string match "host" $arg] || [string match "target" $arg]] {
- set type $arg
- if [info exists target_info(${type},fileid)] {
- set shell_id $target_info(${type},fileid)
- } else {
- perror "No shell id for to close"
- }
- } else {
- set shell_id $arg
- }
-
- verbose "Closing the remote shell $shell_id" 2
- catch "close -i $shell_id"
- catch "wait -i $shell_id"
-
- return 0
-}
-
-
-# Most of these procedures try to establish the connection 3 times before
-# returning. If $verbose is set to a value of 2 or greater, then error
-# messages will appear for each attempt. If there is an error that
-# can't be recovered from, it returns a -1. If the connection is
-# established, it returns the shell's process number returned by the
-# tcl command spawn.
-# Hostname refers to the entry in /etc/hosts for this target. The
-# procedure's name is the same as its unix counterpart.
-# The final argument is the type of connection to establish, the default
-# is the target. This can also be passed as the second arg or the third.
-\f
-#
-# Connect using telnet. This takes two arguments. The first one is the
-# hostname, and the second is the optional port number. This sets
-# the fileid field in the config array, and returns -1 for error, or the
-# spawn id.
-#
-proc telnet { args } {
- global verbose
- global connectmode
- global shell_prompt
- global spawn_id
- global timeout
- global errno
-
- set hostname [lindex $args 0]
-
- # get the port number
- if { [llength $args] > 1 } {
- set port [lindex $args 1]
- } else {
- set port 23
- }
-
- # get the hostname and port number from the config array
- if [expr [string match "host" $hostname] || [string match "target" $hostname]] {
- set type $hostname
- set hosttmp [split $target_info($type,netport) ":"]
- set hostname [lindex $hosttmp 0]
- if { [llength $hosttmp] > 1 } {
- set port [lindex $hosttmp 1]
- }
- unset hosttmp
- if [info exists target_info($type,prompt)] {
- set shell_prompt $target_info($type,prompt)
- }
- } else {
- set type target
- }
- if ![info exists shell_prompt] { # if no prompt, then set it to something generic
- set shell_prompt ".*> "
- }
-
- set tries 0
- set result -1
- verbose "Starting a telnet connection to $hostname:$port" 2
- spawn telnet $hostname $port
- exp_send "\r\n"
- while { $tries <= 3 } {
- catch expect {
- "ogin:" {
- perror "telnet: need to login"
- break
- }
- "assword:" {
- perror "telnet: need a password"
- break
- }
- -re ".*$shell_prompt.*$" {
- verbose "Got prompt\n"
- set result 0
- }
- "Connected to" {
- exp_continue
- }
- -re "\[\r\n\]*" {
- exp_continue
- }
- "unknown host" {
- exp_send "\003"
- perror "telnet: unknown host"
- break
- }
- "Escape character is" {
- exp_send "\r\n"
- exp_continue
- }
- "has logged on from" {
- exp_continue
- }
- "You have no Kerberos tickets" {
- warning "telnet: no kerberos Tickets, please kinit"
- break
- }
- -re "Connection refused.*$" {
- exp_send "\003"
- warning "telnet: connection refused."
- }
- -re "Sorry, this system is engaged.*" {
- exp_send "\003"
- warning "telnet: already connected."
- }
- "Connection closed by foreign host.*$" {
- warning "telnet: connection closed by foreign host."
- break
- }
- timeout {
- exp_send "\003"
- warning "telnet: timed out trying to connect."
- }
- eof {
- perror "telnet: got unexpected EOF from telnet."
- break
- }
- }
- incr tries
- }
- # we look for this hear again cause it means something went wrong, and
- # it doesn't always show up in the expect in buffer till the server times out.
- if [info exists expect_out(buffer)] {
- if [regexp "assword:|ogin:|" $expect_out(buffer)] {
- perror "telnet: need to supply a login and password."
- }
- }
- if { $result < 0 } {
- catch close
- catch wait
-# perror "telnet: couldn't connect after $tries tries."
- set spawn_id -1
- }
- set target_info(target,fileid) $spawn_id
- if [info exists target_info(target,name)] {
- set target_info($target_info(target,name),fileid) $spawn_id
- }
- return $spawn_id
-}
-\f
-#
-# Connect to hostname using rlogin. The global RLOGIN
-# is the name of the actual rlogin program. This is for systems
-# using rlogin to braindead targets that don't support kerboros.
-# It returns either the spawn_id or a -1.
-# The final argument is the type of connection to establish, the default
-# is the target. This can also be passed as the second arg or the third.
-#
-proc rlogin { arg } {
- global spawn_id
- global target_info
- global RLOGIN
- global errno
-
- set tries 0
- set result -1
-
- # get the hostname and port number from the config array
- if [expr [string match "host" $arg] || [string match "target" $arg]] {
- set type $arg
- set hostname [lindex [split $target_info(${type},netport) ":"] 0]
- if [info exists target_info($type,prompt)] {
- set shell_prompt $target_info($type,prompt)
- }
- } else {
- set hostname $arg
- set type target
- }
- if ![info exists shell_prompt] { # if no prompt, then set it to something generic
- set shell_prompt ".*> "
- }
-
- # get the right version of rlogin
- if ![info exists RLOGIN] {
- set RLOGIN rlogin
- }
-
- # start connection and store the spawn_id
- verbose "Opening a $RLOGIN connection to $hostname" 2
- spawn $RLOGIN $hostname
- if { $spawn_id < 0 } {
- perror "invalid spawn id from rlogin"
- return
- }
- set target_info(${type},fileid) $spawn_id
- if [info exists target_info($type,name)] {
- set target_info($target_info($type,name),fileid) $spawn_id
- }
-
- # try to connect to the target. We give up after 3 attempts. At one point
- # we used to look for the prompt, but we may not know what it looks like.
- while { $tries <= 3 } {
- expect {
- -re ".*$shell_prompt.*$" {
- verbose "Got prompt\n"
- set result 0
- break
- }
- -re "TERM = .*\\)\[ ]*$" {
- send "dumb\r\n"
- expect {
- "Terminal type is*$" {
- verbose "rlogin: set the terminal to dumb" 2
- }
- default {
- warning "rlogin: couldn't set terminmal type"
- }
- }
- set result 10
- break
- }
- "unknown host" {
- perror "rlogin: unknown host"
- break
- }
- "has logged on from" {
- exp_continue
- }
- "Terminal type is" {
- verbose "rlogin: connected, got terminal prompt" 2
- set result 0
- break
- }
- -re "Maximum number of users already logged in.*$" {
- warning "rlogin: maximum number of users already logged in"
- }
- -re "Sorry, shell is locked.*Connection closed.*$" {
- warning "rlogin: lready connected."
- }
- -re "Sorry, this system is engaged.*Connection closed.*$" {
- warning "rlogin: system engaged."
- }
- -re "Kerberos rcmd failed.*$" {
- warning "rlogin: Kerberos rcmd failed, please kinit"
- catch close
- catch wait
- break
- }
- -re "trying normal rlogin.*$" {
- warning "rlogin: trying normal rlogin."
- catch close
- catch wait
- break
- }
- -re "unencrypted connection.*$" {
- warning "rlogin: unencrypted connection, please kinit"
- catch close
- catch wait
- break
- }
- -re "isn't registered for Kerberos.*service.*$" {
- warning "rsh: isn't registered, please kinit"
- catch close
- catch wait
- break
- }
- -re "You have no Kerberos tickets.*$" {
- warning "rlogin: No kerberos Tickets, please kinit"
- catch close
- catch wait
- break
- }
- timeout {
- warning "rlogin: timed out trying to connect."
- }
- eof {
- perror "rlogin: got EOF while trying to connect."
- break
- }
- }
- incr tries
- }
-
- # if the error was fatal, there's nothing to send to
- catch { send "\r\n" } tmp
- if [string match "*invalid spawn id*" $tmp] {
- perror "Couldn't rlogin to $hostname, fatal error."
- catch "close $spawn_id"
- set target_info(${type},fileid) $spawn_id
- if [info exists target_info(${type},name)] {
- set target_info($target_info(${type},name),fileid) $spawn_id
- }
- return $spawn_id
- }
- expect {
- "\r\n*$" {
- exp_continue
- }
- -re "\[- A-Za-z0-9\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]+.*$" {
- # this is kinda gross, but if we get most any legit ascii
- # text we figure we connected. Others tests later will
- # determine if the connection actually works.
- verbose "We got some text" 2
- }
- }
-
- # see if we maxed out on errors
- if { $result < 0 } {
- catch close
- catch wait
-# perror "rlogin: couldn't rlogin to $hostname, Too many errors"
- catch "close $spawn_id"
- set spawn_id -1
- set target_info(${type},fileid) $spawn_id
- if [info exists target_info(${type},name)] {
- set target_info($target_info(${type},name),fileid) $spawn_id
- }
- } else {
- verbose "rlogin: connected to $hostname" 2
- }
-
- return $spawn_id
-}
-
-#
-# Connect to hostname using rsh
-#
-proc rsh { arg } {
- global spawn_id
- global target_info
- global RSH
- global errno
-
- set tries 0
- set result -1
-
- # get the hostname and port number from the config array
- if [expr [string match "host" $arg] || [string match "target" $arg]] {
- set type $arg
- set hostname [lindex [split $target_info(${type},netport) ":"] 0]
- if [info exists target_info(${type},prompt)] {
- set shell_prompt $target_info(${type},prompt)
- }
- } else {
- set hostname $arg
- set type target
- }
- if ![info exists shell_prompt] { # if no prompt, then set it to something generic
- set shell_prompt ".*> "
- }
-
- if ![info exists RSH] {
- set RSH rsh
- }
- spawn $RSH $hostname
- if { $spawn_id < 0 } {
- perror "invalid spawn id from rsh"
- return
- }
- set target_info(${type},fileid) $spawn_id
- if [info exists target_info(${type},name)] {
- set target_info($target_info(${type},name),fileid) $spawn_id
- }
- if [info exists target_info(${type},prompt)] {
- set prompt $target_info(${type},prompt)
- }
- send "\r\n"
- while { $tries <= 3 } {
- expect {
- -re ".*$shell_prompt.*$" {
- verbose "Got prompt\n"
- set result 0
- break
- }
- -re "TERM = .*$" {
- warning "Setting terminal type to vt100"
- set result 0
- send "vt100\n"
- break
- }
- "unknown host" {
- exp_send "\003"
- perror "telnet: unknown host"
- break
- }
- "has logged on from" {
- exp_continue
- }
- -re "isn't registered for Kerberos.*service.*$" {
- warning "rsh: isn't registered for Kerberos, please kinit"
- catch close
- catch wait
- break
- }
- -re "Kerberos rcmd failed.*$" {
- warning "rsh: Kerberos rcmd failed, please kinit"
- catch close
- catch wait
- break
- }
- -re "You have no Kerberos tickets.*$" {
- warning "rsh: No kerberos Tickets, please kinit"
- catch close
- catch wait
- break
- }
- "Terminal type is" {
- verbose "rsh: connected, got terminal prompt" 2
- set result 0
- break
- }
- -re "trying normal rlogin.*$" {
- warning "rsh: trying normal rlogin."
- catch close
- catch wait
- break
- }
- -re "unencrypted connection.*$" {
- warning "rsh: unencrypted connection, please kinit"
- catch close
- catch wait
- break
- }
- -re "Sorry, shell is locked.*Connection closed.*$" {
- warning "rsh: already connected."
- }
- timeout {
- warning "rsh: timed out trying to connect."
- }
- eof {
- perror "rsh: got EOF while trying to connect."
- break
- }
- }
- incr tries
- }
-
- if { $result < 0 } {
-# perror "rsh: couldn't connect after $tries tries."
- set spawn_id -1
- }
- set target_info(${type},fileid) $spawn_id
- if [info exists target_info(${type},name)] {
- set target_info($target_info(${type},name),fileid) $spawn_id
- }
- return $spawn_id
-}
-
-#
-# Download an executable to a network neighbor
-#
-# DEST is assumed to already contain the nodename.
-# Returns the status returned by the rcp command.
-#
-proc rcp_download { src dest } {
- set status [catch "exec rcp $src $dest" output]
- if { $status == 0 } {
- verbose "Copied $src to $dest" 2
- } else {
- verbose "Download to $dest failed, $output."
- }
- return $status
-}
-
-#
-# This proc is deprecated. Please use `execute_anywhere' instead.
-#
-# Execute a program on the remote system using rsh
-#
-# SYSTEM is the host name of the system to run the program on.
-# CMD is the program to run (including path) and any arguments.
-# The result is a list of two elements.
-# First element: 0 for success, 1 for failure, -1 for comms failure.
-# Second element: program output (success/failure) or error message (comms).
-#
-proc rsh_exec { system cmd } {
- verbose "Executing $system:$cmd" 3
- # If CMD sends any output to stderr, exec will think it failed. More often
- # than not that will be true, but it doesn't catch the case where there is
- # no output but the exit code is non-zero. The "2>&1" is done on the
- # remote system and is not a special flag for `exec'.
- set status [catch "exec rsh $system $cmd 2>&1 \\; echo XYZ$?ZYX" output]
- # `status' doesn't mean much here other than rsh worked ok.
- # What we want is whether $cmd ran ok.
- if { $status != 0 } {
- regsub "XYZ(\[0-9\]*)ZYX\n?" $output "" output
- return [list -1 "rsh to $system failed for $cmd, $output"]
- }
- regexp "XYZ(\[0-9\]*)ZYX" $output junk status
- verbose "rsh_exec: status:$status text:$output" 4
- if { $status == "" } {
- return [list -1 "Couldn't parse rsh output, $output."]
- }
- regsub "XYZ(\[0-9\]*)ZYX\n?" $output "" output
- # Delete one trailing \n because that is what `exec' will do and we want
- # to behave identical to it.
- regsub "\n$" $output "" output
- return [list [expr $status != 0] $output]
-}
-\f
-#
-# Connect to using tip
-# port - must be a name from /etc/remote, or "host" or "target".
-# returns -1 if it failed, the spawn_id if it worked
-#
-proc tip { arg } {
- global verbose
- global shell_prompt
- global target_info
- global spawn_id
-
- set tries 0
- set result -1
-
- if [expr [string match "host" $arg] || [string match "target" $arg]] {
- set port $target_info(${type},target)
- if [info exists target_info(${type},prompt)] {
- set shell_prompt $target_info(${type},prompt)
- }
- } else {
- set port $arg
- }
- if ![info exists shell_prompt] { # if no prompt, then set it to something generic
- set shell_prompt ".*> "
- }
-
- spawn tip -v $port
- if { $spawn_id < 0 } {
- perror "invalid spawn id from tip"
- return -1
- }
- set target_info(target,fileid) $spawn_id
- set target_info($target_info(target,name),fileid) $spawn_id
- expect {
- -re ".*connected.*$" {
- send "\r\n"
- expect {
- -re ".*$shell_prompt.*$" {
- verbose "Got prompt\n"
- set result 0
- incr tries
- }
- timeout {
- warning "Never got prompt."
- set result -1
- incr tries
- if $tries<=2 {
- exp_continue
- }
- }
- }
- }
- -re "all ports busy.*$" {
- set result -1
- perror "All ports busy."
- incr tries
- if { $tries <= 2 } {
- exp_continue
- }
- }
- -re "Connection Closed.*$" {
- perror "Never connected."
- set result -1
- incr tries
- if { $tries <= 2 } {
- exp_continue
- }
- }
- -re ".*: Permission denied.*link down.*$" {
- perror "Link down."
- set result -1
- incr tries
- }
- timeout {
- perror "Timed out trying to connect."
- set result -1
- incr tries
- if { $tries <= 2 } {
- exp_continue
- }
- }
- eof {
- perror "Got unexpected EOF from tip."
- set result -1
- incr tries
- }
- }
-
- send "\n~s"
- expect {
- "~\[set\]*" {
- verbose "Setting verbose mode" 1
- send "verbose\n\n\n"
- }
- }
-
- if { $result < 0 } {
- perror "Couldn't connect after $tries tries."
- set target_info(${type},fileid) -1
- set target_info($target_info(${type},name),fileid) -1
- return -1
- } else {
- set target_info(${type},fileid) $spawn_id
- set target_info($target_info(${type},name),fileid) $spawn_id
- return $spawn_id
- }
-}
-
-#
-# Downloads using the ~put command under tip
-# arg - is a full path name to the file to download
-# returns 1 if an error occured, otherwise it returns
-# the spawn_id.
-#
-proc tip_download { shell_id file } {
- global verbose
- global decimal
- global shell_prompt
- global expect_out
-
- set result 1
- if ![file exists $file] {
- perror "$file doesn't exist."
- return 1
- }
-
- send -i $shell_id "\n~p"
- expect {
- -i $shell_id "~\[put\]*" {
- verbose "Downloading $file, please wait" 1
- send -i $shell_id "$file\n"
- set timeout 50
- expect {
- -i $shell_id -re ".*$file.*$" {
- exp_continue
- }
- -i $shell_id -re ".*lines transferred in.*minute.*seconds.*$shell_prompt.*$" {
- verbose "Download $file successfully" 1
- set result 0
- }
- -i $shell_id -re ".*Invalid command.*$shell_prompt$" {
- warning "Got an Invalid command to the monitor"
- }
- -i $shell_id -re ".*$decimal\r" {
- if [info exists expect_out(buffer)] {
- verbose "$expect_out(buffer)"
- exp_continue
- }
- }
- -i $shell_id timeout {
- perror "Timed out trying to download."
- set result 1
- }
- }
- }
- timeout {
- perror "Timed out waiting for response to put command."
- }
- }
- set timeout 10
- return $result
-}
-\f
-#
-# Connect to using kermit
-# args - first is the device name, ie. /dev/ttyb
-# second is the optional baud rate. If this is "host" or "target" the
-# config array is used instead.
-# returns -1 if it failed, otherwise it returns
-# the spawn_id.
-#
-proc kermit { args } {
- global verbose
- global shell_prompt
- global spawn_id
-
- if { [llength $args] == 1 } {
- set baud 9600
- } else {
- set baud [lindex $args 1]
- }
-
- if [expr [string match "host" [lindex $args 0]] || [string match "target" [lindex $arg 0]]] {
- set device $target_info(${type},serial)
- if [info exists target_info(${type},baud)] {
- set baud $target_info(${type},baud)
- }
- } else {
- set device [lindex $args 0]
- }
-
- set tries 0
- set result -1
- spawn kermit -l $device -b $baud
- if { $spawn_id < 0 } {
- perror "invalid spawn id from kermit"
- return -1
- }
- set target_info(${type},fileid) $spawn_id
- set target_info($target_info(${type},name),fileid) $spawn_id
- expect {
- -re ".*ermit.*>.*$" {
- send "c\n"
- expect {
- -re ".*Connecting to $port.*Type the escape character followed by C to.*$" {
- verbose "Got prompt\n"
- set result 0
- incr tries
- }
- timeout {
- warning "Never got prompt."
- set result -1
- incr tries
- if { $tries <= 2 } {
- exp_continue
- }
- }
- }
- }
- -re "Connection Closed.*$" {
- perror "Never connected."
- set result -1
- incr tries
- if { $tries <= 2 } {
- exp_continue
- }
- }
- timeout {
- warning "Timed out trying to connect."
- set result -1
- incr tries
- if { $tries<=2 } {
- exp_continue
- }
- }
- }
-
- if { $result < 0 } {
- perror "Couldn't connect after $tries tries."
- set target_info(${type},fileid) -1
- set target_info($target_info(${type},name),fileid) -1
- return -1
- } else {
- set target_info(${type},fileid) $spawn_id
- set target_info($target_info(${type},name),fileid) $spawn_id
- return $spawn_id
- }
-}
-\f
-#
-# exit the remote shell
-#
-# ??? This proc is deprecated. Please use `remote_close' instead.
-proc exit_remote_shell { shell_id } {
- return [remote_close $shell_id]
-}
-
-#
-# Download a file using stdin. This will download a file
-# regardless of whether rlogin, telnet, tip, or kermit was
-# used to establish the connection.
-#
-proc download { args } {
- global spawn_id
- global verbose
-
- set file [lindex $args 0]
-
- if { [llength $args] > 1 } {
- set shellid [lindex $args 1]
- } else {
- set shellid $spawn_id
- }
-
- set lines 0
- set fd [open $file r]
- while { [gets $fd cur_line] >= 0 } {
- set errmess ""
- catch "send -i $shellid \"$cur_line\"" errmess
- if [string match "write\(spawn_id=\[0-9\]+\):" $errmess] {
- perror "sent \"$command\" got expect error \"$errmess\""
- catch "close $fd"
- return -1
- }
- verbose "." 2
- verbose "Sent $cur_line" 3
- incr lines
- }
- verbose "$lines lines downloaded"
- close $fd
- return 0
-}
+++ /dev/null
-#
-#
-#
-
-proc EvalServer {port {interp {}} {openCmd EvalOpenProc}} {
- puts "in EvalServer"
- socket -server [list EvalAccept $interp $openCmd] $port
-}
-
-proc EvalAccept {interp openCmd newsock addr port} {
- global eval
-
- puts "in EvalAccept"
- set eval(cmdbuf,$newsock) {}
- puts "[fconfigure $newsock]"
- fconfigure $newsock -buffering line
- fileevent $newsock readable [list EvalRead $newsock $interp]
- puts "in EvalAccept: got fileevent"
- if [catch {
- interp eval $interp $openCmd $newsock $addr $port
- }] {
- close $newsock
- }
-}
-
-proc EvalOpenProc {sock addr port} {
- puts "in EvalOpenProc"
- # dummy
-}
-
-proc EvalRead {sock interp} {
- global eval errorInfo errorCode
-
- puts "in EvalRead"
- if [eof $sock] {
- close $sock
- } else {
- gets $sock line
- append eval(cmdbuf,$sock) "$line\n"
- if {[string length $eval(cmdbuf,$sock)] && \
- [info complete $eval(cmdbuf,$sock)]} {
- puts ">$eval(cmdbuf,$sock)<"
- }
- set reply "Done\n"
- puts $sock 1
- puts -nonewline $sock $reply
- flush $sock
- set eval(cmdbuf,$sock) {}
- }
-}
-
+++ /dev/null
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-# a hairy pattern to recognize text
-set text "\[- A-Za-z0-9\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]"
-
-#
-# this is a collection of support procs for the target data
-# structures. We use a named array, since Tcl has no real data
-# structures. Here's the special index words for the array:
-# Required fields are:
-# name - the name of the target. (mostly for error messages) This
-# should also be the string used for this target's array.
-# It should also be the same as the linker script so we
-# can find them dynamically.
-# Optional fields are:
-# ldflags - the flags required to produce a fully linked executable.
-# config - the target canonical for this target. This is a regexp
-# as passed to istarget or isnative.
-# cflags - the flags required to produce an object file from a
-# source file.
-# connect - the connectmode for this target. This is for both IP and
-# serial connections.
-# target - the hostname of the target. This is for TCP/IP based connections,
-# and is also used for version of tip that use /etc/remote.
-# serial - the serial port. This is typically /dev/tty? or com?:.
-# netport - the IP port.
-# baud - the baud rate for a serial port connection.
-# x10 - parameters for the x10 controller (used to reboot)
-# fileid - the fileid or spawn id of of the connection.
-# prompt - a regexp for matching the prompt.
-# abbrev - abbreviation for tool init files.
-# ioport - the port for I/O on dual port systems.
-#
-# there are three main arrays, indexed in with "target", "build", and "host".
-# all other targets are indexed with a name usually based on the linker script
-# like "idp", or "ex93x.ld".
-#
-
-#
-# Set the elements of the target data structure
-# The order of the values is name, ldflags, config, cflags, connect, target, serial,
-# netport, baud, x10, fileid, prompt, abbrev, ioport.
-# FIXME: I'm not entirely sure this proc is a good idea...
-proc set_target_info { args } {
- global target_info
-
- set name [lindex $args 0]
-
- # process the linker arguments
- if { [llength $args] > 0 } {
- set target_info($name,ldflags) [lindex $args 1]
- } else {
- set target_info($name,ldflags) ""
- }
-
- # process the config string
- if { [llength $args] > 1 } {
- set target_info($name,config) [lindex $args 2]
- } else {
- set target_info($name,config) ""
- }
-
- # process the compiler arguments
- if { [llength $args] > 2 } {
- set target_info($name,cflags) [lindex $args 3]
- } else {
- set target_info($name,cflags) ""
- }
-
- # process the connection mode
- if { [llength $args] > 3 } {
- set target_info($name,connect) [lindex $args 3]
- } else {
- set target_info($name,connect) ""
- }
-
- # process the target's hostname
- if { [llength $args] > 4 } {
- set target_info($name,target) [lindex $args 3]
- } else {
- set target_info($name,target) ""
- }
-
- # process the serial port
- if { [llength $args] > 5 } {
- set target_info($name,serial) [lindex $args 3]
- } else {
- set target_info($name,serial) ""
- }
-
- # process the netport
- if { [llength $args] > 6 } {
- set target_info($name,netport) [lindex $args 3]
- } else {
- set target_info($name,netport) ""
- }
-
- # process the baud
- if { [llength $args] > 7 } {
- set target_info($name,baud) [lindex $args 3]
- } else {
- set target_info($name,baud) ""
- }
-
- # process the x10 unit number.
- if { [llength $args] > 8 } {
- set target_info($name,x10) [lindex $args 3]
- } else {
- set target_info($name,x10) ""
- }
-
- # process the fileid
- if { [llength $args] > 9 } {
- set target_info($name,fileid) [lindex $args 3]
- } else {
- set target_info($name,fileid) ""
- }
-
- # process the prompt
- if { [llength $args] > 10 } {
- set target_info($name,prompt) [lindex $args 3]
- } else {
- set target_info($name,prompt) ""
- }
-
- # process the abbrev
- if { [llength $args] > 10 } {
- set target_info($name,connect) [lindex $args 3]
- } else {
- set target_info($name,connect) ""
- }
-
- # process the ioport
- if { [llength $args] > 11 } {
- set target_info($name,ioport) [lindex $args 3]
- } else {
- set target_info($name,ioport) ""
- }
-}
-
-#
-# Set the target connection.
-#
-proc push_target { name } {
- pop_config target
- push_config target $name
-}
-
-#
-# Set the host connnection.
-#
-proc push_host { name } {
- pop_config host
- push_config host $name
-}
-
-#
-# Set the config for the current host or target connection.
-#
-proc push_config { type name } {
- global target_info
-
- if [info exists target_info(${name},name)] {
- set target_info($type,name) $name
- }
- if [info exists target_info(${name},ldflags)] {
- set target_info($type,ldflags) $target_info(${name},ldflags)
- }
- if [info exists target_info(${name},config)] {
- set target_info($type,config) $target_info(${name},config)
- }
- if [info exists target_info(${name},cflags)] {
- set target_info($type,cflags) $target_info(${name},cflags)
- }
- if [info exists target_info(${name},connect)] {
- set target_info($type,connect) $target_info(${name},connect)
- }
- if [info exists target_info(${name},target)] {
- set target_info($type,target) $target_info(${name},target)
- }
- if [info exists target_info(${name},serial)] {
- set target_info($type,serial) $target_info(${name},serial)
- }
- if [info exists target_info(${name},netport)] {
- set target_info($type,netport) $target_info(${name},netport)
- }
- if [info exists target_info(${name},baud)] {
- set target_info($type,baud) $target_info(${name},baud)
- }
- if [info exists target_info(${name},x10)] {
- set target_info($type,x10) $target_info(${name},x10)
- }
- if [info exists target_info(${name},fileid)] {
- set target_info($type,fileid) $target_info(${name},fileid)
- }
- if [info exists target_info(${name},prompt)] {
- set target_info($type,prompt) $target_info(${name},prompt)
- }
- if [info exists target_info(${name},abbrev)] {
- set target_info($type,abbrev) $target_info(${name},abbrev)
- }
- if [info exists target_info(${name},ioport)] {
- set target_info($type,ioport) $target_info(${name},ioport)
- }
-}
-
-#
-# Set the current connection for target or host.
-#
-proc pop_config { type } {
- global target_info
-
- set target_info(${type},name) ""
- set target_info(${type},ldflags) ""
- set target_info(${type},config) ""
- set target_info(${type},cflags) ""
- set target_info(${type},connect) ""
- set target_info(${type},target) ""
- set target_info(${type},serial) ""
- set target_info(${type},netport) ""
- set target_info(${type},baud) ""
- set target_info(${type},x10) ""
- set target_info(${type},fileid) ""
- set target_info(${type},prompt) ""
- set target_info(${type},abbrev) ""
- set target_info(${type},ioport) ""
-}
-
-#
-# Unset the target connection.
-#
-proc pop_target { } {
- pop_config target
-}
-
-
-#
-# Unset the host connection.
-#
-proc pop_host { } {
- pop_config host
-}
-
-#
-# list all the configured targets.
-# returns:
-# "" if there are no targets.
-# else it returns a list of unique names.
-#
-proc list_targets { } {
- global target_info
-
- if ![info exists target_info] {
- return ""
- }
-
- set j ""
- set targs ""
- foreach i "[lsort [array names target_info]]" {
- set i "[lindex [split $i ","] 0]"
- if { $i == $j } {
- continue
- } else {
- lappend targs "[lindex [split $i ","] 0]"
- set j $i
- }
- }
- return $targs
-}
-
-#
-# Remove extraneous warnings we don't care about
-#
-proc prune_warnings { text } {
- # remove the \r part of "\r\n" so we don't break all the patterns
- # we want to match.
- regsub -all -- "\r" $text "" text
-
- # This is from sun4's. Do it for all machines for now.
- # The "\\1" is to try to preserve a "\n" but only if necessary.
- if [ishost "sparc-*-sunos"] {
- regsub -all "(^|\n)(ld.so: warning:\[^\n\]*\n?)+" $text "\\1" text
- }
-
- # See Brendan for the raison d'etre of this one.
- if [ishost "alpha*-*-*"] {
- regsub -all "(^|\n)(/usr/(ucb|bin)/ld.*without exceptions was\[^\n\]+\n?)" $text "\\1" text
- }
-
-
- # Ignore these.
- regsub -all "(^|\n)\[^\n\]*linker input file unused since linking not done" $text "" text
- regsub -all "(^|\n)\[^\n\]*file path prefix \[^\n\]* never used" $text "" text
-
- # It might be tempting to get carried away and delete blank lines, etc.
- # Just delete *exactly* what we're ask to, and that's it.
- return $text
-}
-
-#
-# Invoke the compiler. This gets interesting cause the compiler may
-# not be on the same machine we're running DejaGnu on.
-#
-proc compile { arg } {
- global target_info
- global comp_output
- global CC
-
- if [info exists target_info(target,cflags)] {
- lappend options "$target_info(target,cflags)"
- }
-
- append options " $arg"
-
- verbose "Invoking the compiler as $CC $options"
- set comp_output [prune_warnings [execute_anywhere "$CC $options"]]
- return ${comp_output}
-}
-
-#
-# Invoke the archiver.
-#
-proc archive { arg } {
- global target_info
- global comp_output
- global AR
-
- if [info exists target_info(target,arflags)] {
- lappend options "$target_info(target,arflags)"
- }
- append options "$arg"
-
- verbose "Invoking the archiver as $AR $options"
- set comp_output [prune_warnings [execute_anywhere "$AR $options"]]
- return ${comp_output}
-}
-
-proc ranlib { arg } {
- global target_info
- global comp_output
- global RANLIB
-
- append options "$arg"
-
- verbose "Invoking the archiver as $RANLIB $options"
- set comp_output [prune_warnings [execute_anywhere "$RANLIB $options"]]
- return ${comp_output}
-}
-
-#
-# Link a few objects together. This gets interesting cause the
-# objects may not be on the same machine we're running DejaGnu on.
-#
-proc link_objects { arg } {
- global target_info
- global comp_output
- global LD
-
- set options "$arg"
- if [info exists target_info(target,ldlags)] {
- lappend options "$target_info(target,ldlags)"
- }
-
- set comp_output [execute_anywhere "$LD $args"]
- return [ prune_warnings $comp_output]
-}
-
-#
-# Remotely execute something. This gets fun cause we can't expect an
-# Unix machine on the other end. We'll use expect instead so we can
-# connect using $connectmode. This is really designed for executing
-# the tools to be tested, rather than the test cases.
-#
-proc execute_anywhere { cmdline } {
- global exec_output
- global target_info
-
- if ![info exists target_info(current,prompt)] {
- set prompt ""
- } else {
- set prompt $target_info(current,prompt)
- }
-
- # if we're running stuff that's hosted on the same machine
- if ![is3way] {
- verbose -log "Executing on local host: ${cmdline}" 2
- set status [catch "exec ${cmdline}" exec_output]
- if ![string match "" ${exec_output}] {
- # FIXME: This should be done below, after `else'.
- verbose -log -- "${exec_output}" 2
- }
- return ${exec_output}
- } else {
- verbose -log "Executing on remote host: ${cmdline}" 2
- # open the connection
- verbose "Connecting to remote host" 2
- set shellid [remote_open "host"]
- if { $shellid < 0 } {
- perror "Can't open connection to remote host"
- return REMOTERROR
- }
-# stty -echo
- send -i $shellid "echo START ; $cmdline ; echo END\r\n"
- expect {
- -i $shellid "echo START \; $cmdline \; echo END" {
- }
- default {
- warning "Never got command echo"
- }
- }
- expect {
- -i $shellid "START" {
- exp_continue
- }
- -i $shellid "END" {
- regsub -all "\]" $expect_out(buffer) "" exec_output
- regsub "END" $exec_output "" exec_output
- } default {
- set exec_output $i
- }
- }
- }
-
- if [info exists exec_output] {
- verbose "EXEC_OUTPUT = \"$exec_output\"" 2
- }
-
-
-# stty echo
- # close the connection
- remote_close $shellid
-
- if [info exists exec_output] {
- return $exec_output
- } else {
- return REMOTERROR
- }
-}
-
-#
-# Get something resembling a prompt We can't grab more
-# than the last word cause we have no real idea how long
-# the prompt is. We also get the full prompt, but it's
-# kinda useless as it might contain command numbers or
-# paths that change. If we can't return a prompt, return
-# null. so at least other patterns won't break.
-#
-proc getprompt { shellid } {
- global spawn_id
-
- if { $shellid < 0 } {
- perror "Invalid spawn id"
- return ""
- }
-
- set tries 0
- set text ""
-
- while { $tries <=3 } {
- verbose "Trying to get the remote host's prompt"
- send -i $shellid "ACK\r\n"
- expect {
- -i $shellid -re "Kerberos rcmd failed.*$" {
- perror "Need to kinit"
- return ""
- }
- -i $shellid -re "$text*\[\r\n\]*" {
- return [lindex [split $expect_out(buffer) "\r\n"] 5]
- break
- }
- -i $shellid -re "Terminal type is.*tty.*\>" {
- return [lindex [split $expect_out(buffer) "\r\n"] 5]
- break
- }
- -i $shellid "" {
- warning "No prompt"
- }
- -i $shellid timeout {
- perror "Couldn't sync with the remote system"
- }
- -i $shellid eof {
- perror "Got EOF instead of a prompt"
- }
- }
- incr tries
- }
-
- # see if we maxed out on errors
- if { $tries >= 3 } {
- warning "Couldn't get the prompt"
- return ""
- }
-}
-
-
-#
-#
-#
-proc make { args } {
- perror "Unimplemented"
-}
+++ /dev/null
-# Tcl autoload index file: each line identifies a Tcl
-
-doCmd testSessionFramework.itcl
-
-send_user nonexpect.itcl
-send_error nonexpect.itcl
-send_log nonexpect.itcl
-log_file nonexpect.itcl
-
-::BlueGnu::Application testSessionApplication.itcl
-::BlueGnu::Environment testSessionClasses.itcl
-::BlueGnu::Target testSessionClasses.itcl
-::BlueGnu::Test testSessionClasses.itcl
-::BlueGnu::Queue testSessionClasses.itcl
-::BlueGnu::Error testSessionClasses.itcl
-
-Default Default_target.itcl
-BlueGnu BlueGnu_target.itcl
-
-# Types
-Type Types.itcl
+++ /dev/null
-#
-# This file defines the Application Class
-#
-
-source $env(BLUEGNULIB)/testSessionFramework.itcl
-source $env(BLUEGNULIB)/testSessionClasses.itcl
-
-namespace eval ::BlueGnu {
- class Application {
- protected variable szName "Default"
- protected variable lTargets {}
- protected variable lTests
- protected variable szCurrentTarget
- protected variable objCurrentTarget
- protected variable objEnvironment
- protected variable szOutDir
-
- constructor {args} {
- debug {======= Doing Application construction} 3
- set szOutDir "..."
- foreach varval $args {
- set varval [split $varval "="]
- if {[llength $varval] != 2} {
- error "Missing <variable>=<value> pair"
- }
- set var [lindex $varval 0]
- set val [lindex $varval 1]
- set variables {}
- foreach v [lsort [info variable]] {
- regexp {[^:]+$} $v v
- lappend variables $v
- }
- if {[lsearch -exact $variables $var] >= 0} {
- set $var $val
- } else {
- error "$var does not exists in Class [info class]"
- }
- }
- }
-
- destructor {
- }
-
- public method execute {} {
- debug {======= Starting with Execution of the Application} 3
- debug { list of indexes for lTests is [array names lTests]} 4
- set iTarget 0
- set objEnvironment [uplevel #0 \
- "::BlueGnu::Environment #auto \
- szName=$szName"]
- debug { objEnvironment = >$objEnvironment<} 3
- debug { +++ [infoWhich $objEnvironment] +++} 4
- debug { === [::itcl::find objects] ===} 4
- uplevel #0 set objCurrentEnvironment $objEnvironment
- foreach target $lTargets {
- set szTargetName [lindex [split $target "="] 0]
- open_logs $szTargetName
- incr iTarget
- # set current Test Suite Namespace
- uplevel #0 set nspTestSuite "::TestSuite[format %.5d $iTarget]"
- debug { Processing target: >$target< in Test Suite\
- [uplevel set nspTestSuite]} 3
- namespace eval [uplevel set nspTestSuite] {
- debug { Context is >[namespace current]<} 3
- variable iTestNr 0
- proc autoTest {} {
- variable iTestNr
-
- incr iTestNr
- debug {iTestNr = $iTestNr} 5
- debug {namespace current = >[namespace current]<} 5
- debug {format = >T[format %.5d $iTestNr]<} 5
- return [namespace current]::T[format %.5d $iTestNr]
- }
-
- set target [uplevel set target]
- debug { In namespace eval [namespace current]\
- for target: >$target<} 3
- if {! [catch {
- if {[string length $target] == 0} {
- # Create a default Target Object
- #
- debug { Create a default Target Object} 3
- uplevel #0 set objCurrentTarget \
- [infoWhich \
- [::BlueGnu::Target #auto \
- szID=default \
- szName=default \
- objQueue=[infoWhich [::BlueGnu::Queue #auto]] \
- objEnvironment=[uplevel set objEnvironment]]]
- } else {
- # Call the Target Procedure
- # This procedure should return a Target Object.
- # Arguments are passed to this procedure.
- debug { Create target: >$target<} 3
- set list [split $target "="]
- uplevel #0 set objCurrentTarget \
- [infoWhich \
- [eval [lindex $list 0] \
- [join [lrange $list 1 end] "="] \
- objEnvironment=[uplevel set objEnvironment]]]
- }
- } szErrMsg]} {
- debug { Current Target is\
- >[set target \
- [uplevel #0 set objCurrentTarget]]<} 3
-
- debug { Working with target index\
- [uplevel set iTarget]} 4
- if {[uplevel {info exists lTests($iTarget)}]} {
- foreach test [uplevel {set lTests($iTarget)}] {
- debug { test: $test} 3
- $target queue append $test
- }
- }
- $target start
- $target runTests
- $target exit
-
- # report results of the testing
- #
- debug { #### All Objects: [::itcl::find objects]} 3
- foreach T [lsort [::itcl::find objects T*]] {
- debug { #### Deleting Object $T\
- ([$T info class])} 0
- delete object $T
- }
- # remove constructed objects
- #
- debug { Removing Target Class Object $target} 3
- delete object $target
- } else {
- global errorCode errorInfo
- perror "Couldn't create target >$target<!\
- \n May be no procedure with name\
- >$target< defined!\
- \n errorMsg : >$szErrMsg<\
- \n errorInfo: >$errorInfo<\
- \n errorCode: >$errorCode<"
- debug { error info:\n$errorInfo} 3
- }
- }
- namespace delete [uplevel set nspTestSuite]
- close_logs
- }
- debug { objects: >[::itcl::find objects]<} 4
- debug {####### deleting Object Environment >$objEnvironment<} 4
- delete object $objEnvironment
- }
-
- public method processArguments {arguments} {
- upvar $arguments argv
- global szCurrentTestDirectory
-
- set state NORMAL
- set iTarget 0
- foreach arg $argv {
- switch -regexp -- $arg {
- {^-a(l(l)?)?$} {
- debug { all_flag set to TRUE} 4
- set ::BlueGnu::all_flag 1
- }
- {^-o(u(t(d(i(r)?)?)?)?)?$} {
- debug { Output Directory is next argument} 4
- set state OUTDIR
- }
- {^--o(u(t(d(i(r)?)?)?)?)?=.*} {
- set components [split $arg "="]
- debug { Processing Output Directory >$arg<} 4
- set szOutDir [lindex $components 1]
- set state NORMAL
- }
- {^-[-]?t(a(r(g(e(t)?)?)?)?)?([=].*|$)} {
- set components [split $arg "="]
- if {[llength $components] == 1} {
- debug { Target is next argument} 4
- set state TARGET
- } else {
- debug { Processing Target >$arg<} 4
- setTarget iTarget \
- [join [lrange $components 1 end] "="]
- set state NORMAL
- }
- }
- default {
- debug { Processing argument: >$arg<} 3
- switch $state {
- OUTDIR {
- set szOutDir $arg
- set state NORMAL
- }
- TARGET {
- setTarget iTarget $arg
- set state NORMAL
- }
- NORMAL {
- set components [split $arg "="]
- regexp {([^[]*)(.*)} [lindex $components 0] \
- dummy szFileName szCaseArgs
- append szCaseArgs "=[join \
- [lrange $components 1 end] "="]"
- debug { arg: >$arg<} 3
- debug { components: >$components<} 3
- debug { case+args: >$szCaseArgs<} 3
- debug { Test Script: >$szFileName<} 3
- debug { : >$szCurrentTestDirectory<} 3
- set szDname [file dirname $szFileName]
- set szFname [file tail $szFileName]
-
- if {[file exist [set test [file join \
- $szCurrentTestDirectory \
- $szFileName]]]} {
- # file should be a test
- debug { is a test: >$test<!} 3
- if {! [info exists szCurrentTarget]} {
- setTarget iTarget {}
- }
- lappend lTests($iTarget) \
- [file join \
- $szCurrentTestDirectory \
- $arg]
- debug { Appended test:\
- >[file join \
- $szCurrentTestDirectory \
- $arg]<!} 3
- } elseif {[llength [set tests \
- [locateFile $szFname $szDname]]] > 0} {
- foreach test $tests {
- if {[file exists $test]} {
- # file should be a test
- debug { is a test:\
- >$test<!!} 3
- if {! [info exists\
- szCurrentTarget]} {
- setTarget iTarget {}
- }
- lappend lTests($iTarget) \
- $test$szCaseArgs
- debug { Appended test:\
- >$test$szCaseArgs<!!} 2
- } else {
- warning "Test >$test< can't\
- be found"
- }
- }
- } else {
- perror "$szFileName is not a test!\
- Does not exists!"
- }
- }
- }
- }
- }
- }
- debug { ==== Found tests:} 3
- foreach index [lsort [array names lTests]] {
- debug { lTests($index) = $lTests($index)} 4
- }
- debug { Targets are: $lTargets} 4
- }
- private method setTarget {index target} {
- upvar $index iTarget
-
- incr iTarget
- if {[string length $target] == 0} {
- set szCurrentTarget "Default"
- lappend lTargets $szCurrentTarget
- debug { Default Current Target} 3
- } else {
- set szCurrentTarget $target
- lappend lTargets $szCurrentTarget
- debug { Current target: >$szCurrentTarget<} 3
- }
- debug { Found target >$szCurrentTarget<} 3
- }
-
- private method open_logs {target} {
- global env
-
- set target [string trim $target]
- if {[string compare $szOutDir "..."] == 0} {
- debug { No Output directory defined, creating one} 3
- set szOutDir \
- "logs/$env(USER)_${target}_[exec date +%Y%m%d]_"
- set szI [format "%.4d" [set i 0]]
- while {[file isdirectory $szOutDir$szI]} {
- set szI [format "%.4d" [incr i]]
- }
- set szOutDir $szOutDir$szI
- }
- if {! [file isdirectory $szOutDir]} {
- exec mkdir -p $szOutDir
- }
- if {[string length $target] == 0} {
- set szTool testrun
- } else {
- set szTool $target
- }
- catch "exec rm -f $szOutDir/$szTool.sum"
- namespace eval ::BlueGnu \
- "set ::BlueGnu::sum_file [open "$szOutDir/$szTool.sum" w]"
- puts $::BlueGnu::sum_file "# $szOutDir/$szTool.sum"
- catch "exec rm -f $szOutDir/$szTool.log"
- log_file -a "$szOutDir/$szTool.log"
- send_log "# $szOutDir/$szTool.log\n"
- debug { Opening log and summary files in $szOutDir} 3
- }
- private method close_logs {} {
- }
- public method outDir {} {
- return $szOutDir
- }
- }
-}
+++ /dev/null
-#
-# This [incr Tcl] source file contains the class specifications
-# for the testSession of BlueGnu
-#
-namespace eval ::BlueGnu {
- variable lArgs {}
-
- variable errcnt 0
- variable errno "NONE"
- variable warncnt 0
- variable xfail_flag 0
-
- class Common {
- # arguments passed to the constructor are always in the form:
- # <variable>=<value>
- #
- constructor {args} {
- debug {Constructor for >$this< [info level] [info class]} 9
- foreach varval $args {
- set varval [split $varval "="]
- if {[llength $varval] != 2} {
- error "Missing <variable>=<value> pair"
- }
- set var [lindex $varval 0]
- set val [lindex $varval 1]
- set variables {}
- foreach v [lsort [info variable]] {
- regexp {[^:]+$} $v v
- lappend variables $v
- }
- if {[lsearch -exact $variables $var] >= 0} {
- set $var $val
- } else {
- perror "variable >$var< does not exists in Class\
- [info class]\n \
- (was passed as argument and is ignored!)"
- }
- }
- }
-
- public method << {} {
- set lResult {}
- foreach var [lsort [info variable]] {
- regexp {[^:]+$} $var v
- debug {Found variable: >$v<} 9
- if [array exists $v] {
- debug { is an array} 9
- foreach index [lsort [array names $v]] {
- lappend lResult "${v}($index)=[set ${v}($index)]"
- }
- } else {
- debug { is simple variable} 9
- if {[string compare [set value [info variable $var -value]] \
- "<undefined>"] != 0} {
- switch $v {
- this -
- text {}
- default {
- lappend lResult [list $v $value]
- }
- }
- }
- }
- }
- set lResult
- }
- }
-
- class Test {
- inherit Common
-
- protected variable szID
- protected variable bTestCase
- protected variable szTestCase
- protected variable szTestCaseID
- protected variable szTestCaseArgs
- protected variable szName
- protected variable szTool
- protected variable eType
- protected variable eResult
- protected variable szScriptName
- protected variable lArguments
- protected variable szHostName
- protected variable iPassed
- protected variable iFailed
- protected variable iXPassed
- protected variable iXFailed
- protected variable iCrashed
- protected variable iError
- protected variable iWarning
- protected variable iUnresolved
- protected variable iUntested
- protected variable iUnsupported
- protected variable i
- protected variable benchmarkObject
- protected variable benchmarkClassName
-
- constructor testScript {
- set szTool [uplevel #0 set szCurrentTestDirectory]
- debug {======= Global Default Test Directory is\
- >$szTool<} 5
-
- set lArguments {}
- # remove all multiple spaces/tabs into one space
- # and parse the argument list
- # <testScript> ::= <szScriptName>?[test case ID]?=<argument list>
- # <argument list> ::= <argument> <argument list>
- # <argument> ::= <variable name> | <variable name>=<value>
- debug { testScript(1) is >$testScript<} 5
- regsub -all "(\[ \t\]+)" [string trim $testScript] " " testScript
- debug { testScript(2) is >$testScript<} 5
- #
- # Split testScript into script, test case ID, and arguments
- regexp {^([^[=]+)([[]([^]]+)[]])?(=(.*))?$} $testScript dummy \
- script tc tcID argT argL
- debug { script: >$script<} 5
- debug { tc: >$tc<} 5
- debug { tcID: >$tcID<} 5
- debug { argT: >$argT<} 5
- debug { argL: >$argL<} 5
- if {[set i [string first {=} $testScript]] >= 0} {
- set testScriptArgs [string range $testScript \
- [expr $i + 1] end]
- set testScript [string range $testScript 0 [expr $i - 1]]
- } else {
- set testScriptArgs {}
- }
- set testScript $script
- set szTestCase $tcID
- if {[string length $szTestCase] > 0} {
- set bTestCase 1
- } else {
- set bTestCase 0
- }
- set szTestCaseID [lindex [split $szTestCase "="] 0]
- set szTestCaseArgs [join [lrange [split $szTestCase "="] 1 end] \
- "="]
- debug {szTestCase == >$szTestCase<} 5
- debug {szTestCaseID == >$szTestCaseID<} 5
- debug {szTestCaseArgs == >$szTestCaseArgs<} 5
- set testScriptArgs $argL
- debug {testScript(3) is >$testScript<} 5
- debug {testScriptArgs(1) is >$testScriptArgs<} 5
- set lArguments [eval list $testScriptArgs]
- set i 0
- foreach arg $lArguments {
- debug {arg($i) is >$arg<} 5
- set lArguments [lreplace $lArguments $i $i [split $arg "="]]
- incr i
- }
- debug {Test script >$testScript<, test case >$szTestCase<} 3
- debug { pathtype is [file pathtype $testScript]} 3
- switch [file pathtype $testScript] {
- relative {
- error "Test Script name >$testScript<\
- should not be relative"
- }
- absolute {
- debug {Absolute reference in $this to Test Script\
- >$testScript<} 3
- set szScriptName $testScript
- }
- }
- debug {Default Test Directory is >$szTool<}
- if {[file exists $testScript]} {
- debug {Test script >$testScript< exists!}
- set szName [file tail $testScript]
- set szID [file rootname $szName]
- set szPWD [pwd]
- set szTool [file dirname $testScript]
- cd $szTool
- set szTool [pwd]
- cd $szPWD
- set szScriptName [file join $szTool [file tail $testScript]]
- regsub {.} [string toupper [file extension $szName]] {} eType
- set eResult INITIALIZED
- } else {
- debug {Test script >$testScript< does NOT exists!}
- set szRoot ""
- set szID ""
- set szName ""
- set szTool ""
- uplevel #0 set szCurrentTestDirectory "\"$szTool\""
- set eType "NONE"
- set szScriptName "$testScript"
- set lArguments {}
- set eResult EMPTY
- }
- set szHostName [info host]
- set iPassed 0
- set iFailed 0
- set iXPassed 0
- set iXFailed 0
- set iCrashed 0
- set iError 0
- set iWarning 0
- set iUnresolved 0
- set iUntested 0
- set iUnsupported 0
- debug {Default Test Directory is >$szTool<}
- debug {Global Default Test Directory is\
- >[uplevel #0 set szCurrentTestDirectory]<}
-
- debug {Target: >[[uplevel #0 set objCurrentTarget] <<]<}
-
- while {1} {
- # Create Benchmark Class Object
- #
- # First initialize
- #
- set szTargetID [[uplevel #0 set objCurrentTarget] ID]
- regsub -all {[^a-zA-Z0-9_]} $szTargetID "_" szTargetID
- regsub -all {[^a-zA-Z0-9_]} $szID "_" szTmpID
- regsub -all {[^a-zA-Z0-9_]} $szTestCaseID "_" szTmpTestCaseID
- #
- # First try Benchmark Class in namespace for Target
- # and test case ID if exists otherwise test script ID
- #
- set benchmarkClassName ::$szTargetID
- if {$bTestCase} {
- append benchmarkClassName ::$szTmpTestCaseID
- } else {
- append benchmarkClassName ::$szTmpID
- }
- debug {=== Trying benchmark: $benchmarkClassName} 3
- if [catch {
- set benchmarkObject \
- [eval $benchmarkClassName #auto $szTestCaseArgs]
- if {! [string match ::* $benchmarkObject]} {
- set benchmarkObject \
- [namespace current]::$benchmarkObject
- }
- debug {benchmarkObject: >$benchmarkObject<} 3
- } errMsg] {
- debug {Error Msg: >>>$errMsg<<<} 3
- debug { info: >>>[uplevel #0 set errorInfo]<<<} 4
- } else {
- break
- }
- #
- # Now try Benchmark class for test script name
- # with test case ID or Benchmark
- #
- set benchmarkClassName ::$szTmpID
- if {$bTestCase} {
- append benchmarkClassName ::$szTmpTestCaseID
- } else {
- append benchmarkClassName ::Benchmark
- }
- debug {=== Trying benchmark: $benchmarkClassName} 3
- if [catch {
- set benchmarkObject [infoWhich \
- [eval $benchmarkClassName #auto $szTestCaseArgs]]
- } errMsg] {
- debug {Error Msg: >>>$errMsg<<<} 3
- debug { info: >>>[uplevel #0 set errorInfo]<<<} 4
- } else {
- break
- }
- #
- # Now try target ID and benchmark
- #
- set benchmarkClassName ::${szTargetID}::Benchmark
- debug {=== Trying benchmark: $benchmarkClassName} 3
- debug { namespace: >[namespace current]<} 3
- if [catch {
- set benchmarkObject [infoWhich \
- [eval $benchmarkClassName #auto $szTestCaseArgs] \
- [namespace current]]
- } errMsg] {
- debug {Error Msg: >>>$errMsg<<<} 3
- debug { info: >>>[uplevel #0 set errorInfo]<<<} 4
- } else {
- break
- }
- #
- # Now try the generic BlueGnu benchmark function
- #
- set benchmarkClassName ::BlueGnu::Benchmark
- debug {=== Trying benchmark: $benchmarkClassName} 3
- if [catch {
- set benchmarkObject [infoWhich \
- [eval $benchmarkClassName #auto $szTestCaseArgs]]
- debug {[warning "Default Benchmark Class\
- is being used!"]}
- } errMsg] {
- warning "NO Benchmark Class >$benchmarkClassName<\
- defined"
- debug {[warning "Class: >$benchmarkClassName<\
- has not been defined.\n ### Error Msg:\
- $errMsg"]}
- set benchmarkObject ""
- break
- }
- debug { benchmark: $benchmarkClassName\
- ($benchmarkObject)} 3
- uplevel #0 {
- set errorInfo NONE
- }
- break
- }
- }
-
- destructor {
- setResult
- switch $eResult {
- PASSED {
- printResult
- if {! $bTestCase} {
- ::BlueGnu::clone_output " Statistics :\
- $iPassed (PASS),\
- $iXFailed (XFAIL)"
- }
- }
- FAILED {
- printResult
- if {! $bTestCase} {
- ::BlueGnu::clone_output " Statistics :\
- $iPassed (PASS),\
- $iXFailed (XFAIL)"
- ::BlueGnu::clone_output " :\
- $iFailed (FAIL),\
- $iXPassed (XPASS)"
- }
- }
- UNKNOWN {
- }
- default {
- printResult
- if {! $bTestCase} {
- ::BlueGnu::clone_output " Statistics :\
- $iPassed (PASS),\
- $iXFailed (XFAIL)"
- ::BlueGnu::clone_output " :\
- $iFailed (FAIL),\
- $iXPassed (XPASS)"
- if {$iUntested} {
- ::BlueGnu::clone_output " :\
- $iUntested (UNTESTED)"
- }
- if {$iUnresolved} {
- ::BlueGnu::clone_output " :\
- $iUnresolved (UNRESOLVED)"
- }
- if {$iUnsupported} {
- ::BlueGnu::clone_output " :\
- $iUnsupported (UNSUPPORTED)"
- }
- if {$iCrashed} {
- ::BlueGnu::clone_output " :\
- $iCrashed (CRASHED)"
- }
- if {$iError} {
- ::BlueGnu::clone_output " :\
- $iError (ERROR)"
- }
- if {$iWarning} {
- ::BlueGnu::clone_output " :\
- $iWarning (WARNING)"
- }
- }
- }
- }
- # remove benchmark Class Object
- #
- if {$benchmarkObject != ""} {
- debug {#### Benchmark Object: >$benchmarkObject<\
- ([catch {$benchmarkObject info class}])} 3
- debug {#### Benchmark Class : >$benchmarkClassName<} 3
- catch {delete object $benchmarkObject}
- if {$benchmarkClassName != "::BlueGnu::Benchmark"} {
- catch {delete class $benchmarkClassName}
- }
- }
- ::BlueGnu::clone_output ""
- }
-
- private method printResult {} {
- if {$bTestCase} {
- ::BlueGnu::clone_output "******* Result :\
- [format "%-12s" $eResult] for test case :\
- >$szTestCase<"
- } else {
- ::BlueGnu::clone_output "******* Result :\
- [format "%-12s" $eResult] for test script :\
- >$szID<"
- }
- }
-
- public method ID {} {
- return $szID
- }
-
- public method testCase {} {
- return $szTestCase
- }
-
- public method testCaseID {} {
- return $szTestCaseID
- }
-
- public method testCaseArgs {} {
- return $szTestCaseArgs
- }
-
- public method benchmarkObject {} {
- return $benchmarkObject
- }
-
- public method benchmarkClassName {} {
- return $benchmarkClassName
- }
-
- public method name {args} {
- if {[llength $args] == 1} {
- set szName [lindex $args 0]
- }
- return $szName
- }
-
- public method result {} {
- return $eResult
- }
-
- public method arguments {} {
- return $lArguments
- }
-
- public method pass {szMsg} {
- global objCurrentEnvironment
- if {[namespace eval ::BlueGnu {set xfail_flag}]} {
- incr iXPassed
- $objCurrentEnvironment record_test XPASS $szMsg
- } else {
- incr iPassed
- $objCurrentEnvironment record_test PASS $szMsg
- }
- setResult
- }
- public method fail {szMsg} {
- global objCurrentEnvironment
- if {[namespace eval ::BlueGnu {set xfail_flag}]} {
- incr iXFailed
- $objCurrentEnvironment record_test XFAIL $szMsg
- } else {
- incr iFailed
- $objCurrentEnvironment record_test FAIL $szMsg
- }
- setResult
- }
-
- public method perror {szMsg} {
- global objCurrentEnvironment
- incr iError
- $objCurrentEnvironment record_test ERROR $szMsg
- setResult
- }
-
- public method crashed {szMsg} {
- global objCurrentEnvironment
- incr iCrashed
- $objCurrentEnvironment record_test CRASHED $szMsg
- setResult
- }
-
- public method warning {szMsg} {
- global objCurrentEnvironment
- incr iWarning
- $objCurrentEnvironment record_test WARNING $szMsg
- setResult
- }
-
- public method note {szMsg} {
- global objCurrentEnvironment
- $objCurrentEnvironment record_test NOTE $szMsg
- }
-
- public method unresolved {szMsg} {
- global objCurrentEnvironment
- incr iUnresolved
- $objCurrentEnvironment record_test UNRESOLVED $szMsg
- }
- public method untested {szMsg} {
- global objCurrentEnvironment
- incr iUntested
- $objCurrentEnvironment record_test UNTESTED $szMsg
- }
- public method unsupported {szMsg} {
- global objCurrentEnvironment
- incr iUnsupported
- $objCurrentEnvironment record_test UNSUPPORTED $szMsg
- }
-
- private method setResult {} {
- if {$iUnresolved || \
- $iError || $iCrashed || \
- ($iWarning > [namespace eval ::BlueGnu { \
- set warning_threshold}] && \
- 0 < [namespace eval ::BlueGnu { \
- set warning_threshold}])} {
- set eResult UNRESOLVED
- } elseif {$iUntested} {
- set eResult UNTESTED
- } elseif {$iUnsupported} {
- set eResult UNSUPPORTED
- } elseif {($iPassed > 0 || $iXFailed > 0) && \
- $iFailed == 0 && $iXPassed == 0} {
- set eResult "PASSED"
- } elseif {$iFailed || $iXPassed} {
- set eResult "FAILED"
- } elseif {$iPassed == 0 && $iXPassed && \
- $iFailed == 0 && $iXFailed && $iCrashed == 0 && \
- $iError == 0 && $iWarning == 0} {
- set eResult ACTIVATED
- } else {
- set eResult UNKNOWN
- }
- }
-
- public method getResult {} {
- setResult
- return $eResult
- }
-
- public method tool {} {
- return $szTool
- }
-
- public method scriptName {} {
- return $szScriptName
- }
-
- public method << {} {
- if 0 {
- lappend lResult [list ID $szID]
- lappend lResult [list name $szName]
- lappend lResult [list tool $szTool]
- lappend lResult [list type $eType]
- lappend lResult [list result $eResult]
- lappend lResult [list root $szRoot]
- lappend lResult [list script $szScriptName]
- lappend lResult [list arguments $lArguments]
- lappend lResult [list host $szHostName]
-
- return $lResult
- } else {
- eval [info function Common::<< -body]
- }
- }
-
- public method runtest {} {
- global objCurrentEnvironment
- setResult
-
- if {$bTestCase} {
- ::BlueGnu::clone_output "####### Begin test case :\
- >$szTestCase<"
- debug { [scriptName]\n \
- [name]=[arguments]}
- } else {
- ::BlueGnu::clone_output "####### Begin test script :\
- >$szID<"
- debug { [scriptName]\n \
- [name]=[arguments]}
- }
- verbose { Full Pathname : $szScriptName} 1
- debug {=== Running test in $this: $szScriptName} 3
- debug {[join [<<] "\n"]} 9
- catch {debug {Global Default Test Directory is\
- >[uplevel #0 set szCurrentTestDirectory]<}}
- catch {debug {Default Test Directory is >$szTool<}}
-
- if [catch {
- uplevel #0 set szCurrentTestDirectory "$szTool"
- uplevel #0 lappend lTool {$szCurrentTestDirectory}
- uplevel #0 set objCurrentTest $this
- uplevel #0 lappend lTestName {$objCurrentTest}
- uplevel 1 variable bTestCase $bTestCase
- uplevel 1 variable szTestCase \"$szTestCase\"
- uplevel 1 variable szTestCaseID \"$szTestCaseID\"
- uplevel 1 variable szTestCaseArgs \"$szTestCaseArgs\"
- uplevel 1 variable iArgs [llength $lArguments]
- uplevel 1 variable lArgs [concat {[list} $lArguments {]}]
- uplevel 1 variable szID $szID
- uplevel 1 variable szScriptName $szScriptName
- uplevel 1 variable szName $szName
- uplevel 1 variable szTool $szTool
- } szErrMsg] {
- debug {Error Msg:>>>$szErrmsg<<<} 0
- }
- if {[catch {uplevel 1 source $szScriptName} szErrMsg]} {
- global errorInfo errorCode
- crashed ">$szErrMsg<\
- \n in script: >$szScriptName<\
- \n errorInfo: >$errorInfo<\
- \n errorCode: >$errorCode<"
- }
- setResult
- $objCurrentEnvironment reportTestResult $eResult
-
- uplevel #0 {set lTestName [lreplace $lTestName end end]}
- uplevel #0 {set objCurrentTest [lrange $lTestName end end]}
- uplevel #0 {set lTool [lreplace $lTool end end]}
- uplevel #0 {set szCurrentTestDirectory [lrange $lTool end end]}
-
- catch {debug {Default Test Directory is >$szTool<} 3}
- catch {debug {Global Default Test Directory is\
- >[uplevel #0 set szCurrentTestDirectory]<} 3}
- debug {=== Done with test in $this: $szScriptName ($bTestCase)} 3
- if {$bTestCase} {
- ::BlueGnu::clone_output "####### End test case :\
- >$szTestCase<"
- } else {
- ::BlueGnu::clone_output "####### End test script :\
- >$szID<"
- }
- return $this
- }
- }
-
- class Queue {
- inherit Common
-
- protected variable lTestNames
-
- constructor {} {
- set lTestNames {}
- }
-
- public method append args {
- set testName [join $args]
- debug { queue appending >$testName<} 3
- lappend lTestNames $testName
- debug { DONE} 3
- }
-
- public method prepend args {
- #set testName [join $args]
- debug {Queue::prepend $args} 3
- foreach arg $args {
- debug { append >$arg< to comList} 3
- lappend comList $arg
- }
- debug { queue prepending comList: >$comList<} 3
- debug { [llength $comList] elements in comList} 3
- #set lTestNames [linsert $lTestNames 0 "$testName"]
- debug { [llength $lTestNames] elements in lTestNames} 3
- set lTestNames [concat $comList $lTestNames]
- debug { [llength $lTestNames] elements in lTestNames} 3
- debug { DONE} 3
- }
-
- public method pop {} {
- if {[llength $lTestNames] == 0} {
- return -code error -errorinfo "Empty Queue" {}
- }
- if {[llength $lTestNames] == 1} {
- set testName [lindex $lTestNames 0]
- set lTestNames {}
- return $testName
- #return -code error $testName
- }
- set testName [lindex $lTestNames 0]
- set lTestNames [lrange $lTestNames 1 end]
- return $testName
- }
-
- public method << {} {
- #lappend lResult [list tests $lTestNames]
-
- #return $lResult
- eval [info function Common::<< -body]
- }
- }
-
- class Environment {
- inherit Common
-
- protected variable szName "Default"
-
- protected variable iPassCnt 0
- protected variable iFailCnt 0
- protected variable iXPassCnt 0
- protected variable iXFailCnt 0
- protected variable iUntestedCnt 0
- protected variable iUnresolvedCnt 0
- protected variable iUnsupportedCnt 0
- protected variable iCrashedCnt 0
- protected variable iErrorCnt 0
- protected variable iWarningCnt 0
- protected variable iCnt 0
-
- protected variable iWarningThreshold 0
- protected variable iErrorThreshold 0
-
- protected variable bXFailFlag 0
- protected variable bExitStatus 0
-
- protected variable eResult UNKNOWN
- protected variable iUntested 0
- protected variable iUnsupported 0
- protected variable iUnresolved 0
- protected variable iPassed 0
- protected variable iFailed 0
-
-
- protected variable ENV
- protected variable bSaved 0
- common defaultEnvironment [list PATH FPATH \
- BLUEGNULIB TESTSUITEROOT TESTSETS TMPDIR \
- DISPLAY EDITOR EMACSFONT HOME LANG LOGIN LOGNAME SHELL \
- TERM USER WINDOWID DEBUG LPDEST \
- ORGANIZATION OSTYPE PAGER \
- PARM_SEARCH_PATH \
- ]
-
- constructor {args} {
- debug {Level in Constructor: [info level]} 9
- eval [info function Common::constructor -body]
- setResult
- }
-
- destructor {
- global objCurrentTarget
- debug {******* [info class]::destructor} 3
-
- ::BlueGnu::clone_output "******* Result :\
- [format "%-12s" $eResult]\
- for test session : >$szName<"
- switch $eResult {
- PASSED {
- ::BlueGnu::clone_output " Statistics :\
- $iPassed (PASS)"
- ::BlueGnu::clone_output "******* Cumulative statistics\
- for all test script!"
- ::BlueGnu::clone_output " Statistics Totals :\
- $iPassCnt (PASS),\
- $iXFailCnt (XFAIL)"
- if {$iUntested} {
- ::BlueGnu::clone_output " :\
- $iUntested (UNTESTED)"
- }
- if {$iWarningCnt} {
- ::BlueGnu::clone_output " :\
- $iWarningCnt (WARNING)"
- }
- }
- UNKNOWN -
- default {
- ::BlueGnu::clone_output " Statistics :\
- $iPassed (PASS)"
- ::BlueGnu::clone_output " :\
- $iFailed (FAIL)"
- if {$iUntested} {
- ::BlueGnu::clone_output " :\
- $iUntested (UNTESTED)"
- }
- if {$iUnresolved} {
- ::BlueGnu::clone_output " :\
- $iUnresolved (UNRESOLVED)"
- }
- if {$iUnsupported} {
- ::BlueGnu::clone_output " :\
- $iUnsupported (UNSUPPORTED)"
- }
- ::BlueGnu::clone_output "******* Cumulative statistics\
- for all test script!"
- ::BlueGnu::clone_output " Statistics Totals :\
- $iPassCnt (PASS),\
- $iXFailCnt (XFAIL)"
- ::BlueGnu::clone_output " :\
- $iFailCnt (FAIL),\
- $iXPassCnt (XPASS)"
- if {$iUntestedCnt} {
- ::BlueGnu::clone_output " :\
- $iUntestedCnt (UNTESTED)"
- }
- if {$iUnresolvedCnt} {
- ::BlueGnu::clone_output " :\
- $iUnresolvedCnt (UNRESOLVED)"
- }
- if {$iUnsupportedCnt} {
- ::BlueGnu::clone_output " :\
- $iUnsupportedCnt (UNSUPPORTED)"
- }
- if {$iCrashedCnt} {
- ::BlueGnu::clone_output " :\
- $iCrashedCnt (CRASHED)"
- }
- if {$iErrorCnt} {
- ::BlueGnu::clone_output " :\
- $iErrorCnt (ERROR)"
- }
- if {$iWarningCnt} {
- ::BlueGnu::clone_output " :\
- $iWarningCnt (WARNING)"
- }
- }
- }
- if {$::BlueGnu::errcnt} {
- ::BlueGnu::clone_output "####### Encountered\
- $::BlueGnu::errcnt System Errors!"
- }
- ::BlueGnu::clone_output "###########################\n"
- }
-
- public method name {} {
- return $szName
- }
-
- public method record_test {type message} {
- debug {******* ${this}::record_test \n \
- $type $message} 3
- if {$iWarningThreshold > 0 && \
- $iWarningCnt >= $iWarningThreshold \
- || \
- $iErrorThreshold > 0 && \
- $iErrorCnt >= $iErrorThreshold} {
- # Reset these first to prevent infinite recursion.
- set iWarningCnt 0
- set iErrorCnt 0
- ::unresolved $message
- return
- }
-
- debug { switching on type >$type<}
- switch $type {
- PASS {
- incr iPassCnt
- }
- FAIL {
- incr iFailCnt
- set bExitStatus 1
- }
- XPASS {
- incr iXPassCnt
- }
- XFAIL {
- incr iXFailCnt
- }
- UNTESTED {
- incr iUntestedCnt
- }
- UNRESOLVED {
- incr iUnresolvedCnt
- }
- UNSUPPORTED {
- incr iUnsupportedCnt
- }
- ERROR {
- incr iErrorCnt
- }
- CRASHED {
- incr iCrashedCnt
- }
- NOTE {
- }
- WARNING {
- incr iWarningCnt
- }
- default {
- debug {record_test called with bad type >$type<} -1
- set iErrorCnt 0
- return
- }
- }
-
- ::BlueGnu::clone_output "$type: $message"
-
- # reset variables here
- namespace eval ::BlueGnu {
- set xfail_flag 0
- set xfail_prms {}
- }
- }
-
- private method setResult {} {
- if {$iUnresolved} {
- set eResult UNRESOLVED
- } elseif {$iPassed > 0 && $iFailed == 0} {
- set eResult "PASSED"
- } elseif {$iFailed} {
- set eResult "FAILED"
- } elseif {$iPassed == 0 && $iFailed == 0 && \
- $iUntested && $iUnsupported == 0 && \
- $iUnresolved == 0} {
- set eResult ACTIVATED
- } else {
- set eResult UNKNOWN
- }
- }
-
- public method reportTestResult {eTestResult} {
- switch $eTestResult {
- "PASSED" {
- incr iPassed
- }
- "FAILED" {
- incr iFailed
- }
- "UNSUPPORTED" {
- incr iUnsupported
- }
- "UNTESTED" {
- incr iUntested
- }
- "UNRESOLVED" {
- incr iUnresolved
- }
- }
- setResult
- }
-
- public method saveEnv {} {
- global env
-
- set bSaved 1
- foreach index [lsort [array names env]] {
- debug {ENV($index) := $env($index)} 5
- #set ENV($index) $env($index)
- array set ENV [list $index $env($index)]
- }
- }
-
- public method clearEnv {} {
- global env
-
- set bSaved 1
- #debug {removing ENV} 5
- #catch {unset ENV}
- foreach index [array names env] {
- debug {removing env($index) := $env($index)} 5
- if {0 > [lsearch -exact $defaultEnvironment $index]} {
- debug { removed} 5
- unset env($index)
- } else {
- debug { kept} 5
- if {[string compare $index PATH] == 0} {
- # Do not touch PATH
- #set env(PATH) \
- "/etc:/usr/lib:/usr/ucb:/bin:/usr/bin:/usr/bin/X11:/usr/lpp/X11/Xamples/bin:/usr/local/bin"
- }
- #set ENV($index) $env($index)
- }
- }
- }
-
- public method restoreEnv {} {
- global env
-
- if {$bSaved} {
- catch {unset env}
- foreach index [array names ENV] {
- debug {env($index) := $ENV($index)} 5
- #set ENV($index) $env($index)
- array set env [list $index $ENV($index)]
- }
- } else {
- debug {Environment had not been saved!}
- }
- }
-
- public method runTest args {
- global nspTestSuite
- debug {======= runTest $args} 3
-
- set iRuntest 0
- set elResult [list]
-
- set iRun 0
- foreach arg $args {
- debug {======= runTest $arg} 3
- incr iRun
-
- # Create name for namespace for the test
- # and check if already exist
- #
- set szRuntest runtest$iRuntest
- set namespaceCurrent [namespace current]
- debug { szRuntest: >$szRuntest<} 4
- debug { namespace current : >$namespaceCurrent<} 4
- debug { namespace current children:\
- >[namespace children $namespaceCurrent]<} 4
- while {[string compare \
- [namespace children $namespaceCurrent \
- ${namespaceCurrent}::$szRuntest] ""] != 0} {
- incr iRuntest
- set szRuntest runtest$iRuntest
- }
- # now we have a unique namespace name for the running
- # of the test
- #
- debug { runTest namespace: >$szRuntest<} 4
- set szScript $arg
- # create a Test Class object
- if {! [catch {::BlueGnu::Test [${nspTestSuite}::autoTest] \
- $szScript} testObject]} {
- if [catch {
- uplevel #0 set objCurrentTest \
- [namespace current]::$testObject
- debug {[join [$testObject <<] "\n"]} 9
- namespace eval $szRuntest {
- if [catch {[uplevel set testObject] runtest} \
- szErrMsg] {
- uplevel set szErrMsg "\{$szErrMsg\}"
- uplevel {
- global errorInfo errorCode
- record_test CRASHED ">$szErrMsg<\
- \n in script: >$szScript<\
- \n errorInfo: >$errorInfo<\
- \n errorCode: >$errorCode<"
- }
- }
- }
- debug {[join [$testObject <<] "\n"]} 9
- uplevel "lappend elResult [$testObject getResult]"
- delete object $testObject
- } szErrMsg] {
- global errorInfo errorCode
- record_test CRASHED ">$szErrMsg<\
- \n in script: >$szScript<\
- \n errorInfo: >$errorInfo<\
- \n errorCode: >$errorCode<"
- }
- } else {
- global errorInfo errorCode
- record_test CRASHED ">$testObject<\
- \n in script: >$szScript<\
- \n errorInfo: >$errorInfo<\
- \n errorCode: >$errorCode<"
- }
- namespace delete $szRuntest
- uplevel #0 {debug {argv: [set argv]} 3}
- }
- if {$iRun == 0} {
- warning "No tests have been passed to runTest method!"
- }
- return $elResult
- }
-
- public method << {} {
- debug {in $this method} 5
- eval [info function Common::<< -body]
- #lappend lResult [list ENV [array get ENV]]
- }
- }
-
- # The following is a class definition for the target implementation
- # in DejaGnu (see lib/target.exp for more detail)
- #
- class Target {
- inherit Common
-
- protected variable szID
- protected variable szName
- protected variable szApplication
- protected variable objEnvironment
- protected variable objQueue
-
- protected variable connect
- protected variable target
- protected variable serial
- protected variable netport
- protected variable baud
- protected variable X10
- protected variable ioport
-
- protected variable fileid
- protected variable prompt
- protected variable abbrev
- protected variable config
- protected variable cflags
- protected variable ldflags
-
- protected variable X
-
- # a hairy pattern to recognize text
- common text "\[- A-Za-z0-9\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]"
-
-
- constructor {args} {
- eval [info function Common::constructor -body]
- }
-
- destructor {
- delete object $objQueue
- }
-
- public method name {args} {
- if {[llength $args] == 0} {
- return $szName
- } else {
- set szName [lindex $args 0]
- }
- }
-
- public method ID {args} {
- if {[llength $args] == 0} {
- return $szID
- } else {
- set szID [lindex $args 0]
- }
- }
-
- public method << {} {
- eval [info function Common::<< -body]
- }
-
- public method environment {} {
- return $objEnvironment
- }
-
- public method start {} {
- if {[string length [uplevel #0 info procs ${szID}_start]] != 0} {
- uplevel #0 ${szID}_start
- }
- }
-
- public method load {args} {
- if {[string length [uplevel #0 info procs ${szID}_load]] != 0} {
- eval uplevel #0 ${szID}_load $args
- }
- }
-
- public method exit {} {
- if {[string length [uplevel #0 info procs ${szID}_exit]] != 0} {
- uplevel #0 ${szID}_exit
- }
- }
-
- public method version {} {
- if {[string length [uplevel #0 info procs ${szID}_version]] != 0} {
- uplevel #0 ${szID}_version
- }
- }
-
- public method runTests {} {
- debug {======= ${this}::runTest} 3
- set elResult [list]
- # if an application has been defined we run all the test
- # inside that application
- #
- if {[string compare [info variable szApplication] ""] != 0 && \
- [string compare [info variable szApplication -value] \
- "<undefined>"] != 0} {
- debug {Application specified >[info variable \
- szApplication -value]<}
- # build argument list
- debug {>>[<<]<<}
- } else {
- # We just run all the tests in the currently running
- # [incr Tcl/?Expect?] interpreter.
- #
- # set the current Queue and Environment
- #
- uplevel #0 set objCurrentQueue [infoWhich $objQueue]
- uplevel #0 set objCurrentEnvironment \
- [infoWhich $objEnvironment]
- #
- # Pop a test from the queue and run it in the environment
- ::BlueGnu::clone_output "###########################"
- ::BlueGnu::clone_output "####### Begin test session:\
- [[infoWhich $objEnvironment] name] >$objEnvironment<"
- while {! [catch {$objQueue pop} T]} {
- debug {test: $T} 3
- set elResult [$objEnvironment runTest $T]
- }
- ::BlueGnu::clone_output "####### End test session :\
- [[infoWhich $objEnvironment] name]"
- }
- return $elResult
- }
-
- public method queue {function element} {
- switch $function {
- append {
- $objQueue append $element
- }
- prepend {
- $objQueue prepend $element
- }
- }
- }
- }
-
- class Target2 {
- inherit Target
-
- protected variable XYZ
-
- constructor {args} {
- eval [info function Common::constructor -body]
- }
-
- public method << {} {
- eval [info function Common::<< -body]
- }
- }
-
-
- class DejaGnu {
- inherit Environment
-
- constructor {} {
- debug {Level in Constructor DejaGnu: [info level]} 9
- uplevel #0 {debug {argc = $argc: $argv} 9}
- # source always in global space
- #
- uplevel #0 source {$env(BLUEGNULIBS)/dejagnu.tcl}
- }
-
- destructor {
- #####################################################################
- # This comes from the original runtest
- # all done, cleanup
- #
- uplevel #0 {
- if { [info procs ${tool}_exit] != "" } {
- if {[catch "${tool}_exit" tmp]} {
- # ??? We can get away with calling `warning'
- # here without ensuring
- # `warncnt' isn't changed because we're about to exit.
- warning "${tool}_exit failed:\n$tmp"
- }
- }
- log_summary
- }
- }
-
-
- public method runTest {args} {
- global nspTestSuite
-
- foreach arg $args {
- debug {******* DejaGnu running test: >$arg<}
- debug {set szTestName \[Test \[${nspTestSuite}::autoTest\] $arg\]} 3
- debug {set testName >[${nspTestSuite}::autoTest]<} 3
- uplevel #0 set szTestName [Test [${nspTestSuite}::autoTest] $arg]
- uplevel #0 {
- debug $szTestName 3
- debug [join [$szTestName <<] "\n"] 5
- set test_name {[$szTestName scriptName]}
- catch {unset tmp}; set tmp {}
- foreach arg [$szTestName arguments] {
- lappend tmp [join $arg "="]
- }
- set runtests [list [$szTestName name] $tmp]
- debug {args = >[$szTestName arguments]<} 3
- source [$szTestName scriptName]
- catch {eval unset [info vars __*]}
- }
- }
- }
- }
-
- class DejaGnu2 {
- inherit DejaGnu
-
- protected variable currentTool
-
- constructor {} {
- debug {Level in Constructor DejaGnu2: [info level]} 9
- set currentTool {}
- uplevel #0 {debug {argc = $argc: $argv} 9}
- # source always in global space
- #
- uplevel #0 source {$env(BLUEGNULIBS)/dejagnu2.tcl}
- }
-
- public method tool {args} {
- if {[llength $args] == 1} {
- set currentTool [lindex $args 0]
- }
- return $currentTool
- }
- }
-
- class Benchmark {
- protected variable bResult 0
- protected variable DATA
- protected variable FORMAT
- protected variable ARG
-
- protected constructor {args} {
- debug {======= Constructing class [info class] =======} 3
- debug {======= ::BlueGnu::Benchmark::constructor $args} 4
- set i 0
- foreach arg $args {
- debug { ARG($i): >$arg<} 5
- set ARG($i) [split $arg "="]
- incr i
- }
- }
- protected destructor {
- debug {======= [info class]::destructor} 3
- }
-
- protected method benchmark {benchmarkFunction args} {
- warning "Method >benchmark< has not been implemented for\
- Class >[info class]<"
- return $bResult
- }
-
- protected method warningNoBenchmarkArguments {} {
- warning "NO argument have been supplies for\n the benchmark\
- method in class [info class]"
- }
- protected method warningNoBenchmarkFunction {} {
- warning "NO benchmark function >[uplevel set benchmarkFunction]<\
- defined for\n the benchmark method in class [info class]"
- }
- }
-
- class Error {
- private variable _errorCode
- private variable _errorMsg
- private variable _errorInfo
-
- public constructor {errorCode errorMsg errorInfo} {
- set _errorCode $errorCode
- set _errorMsg $errorMsg
- set _errorInfo $errorInfo
- }
-
- public method errorCode {} {
- return $_errorCode
- }
- public method errorMsg {} {
- return $_errorMsg
- }
- public method errorInfo {} {
- return $_errorInfo
- }
- public method why {} {
- return $_errorMsg
- }
- public method verboseWhy {} {
- return $_errorInfo
- }
- }
-}
+++ /dev/null
-#
-#
-#
-#
-# unknown -- called by expect if a proc is called that doesn't exist
-#
-
-# Set auto_load to take BLUEGNULIB first on search path
-#
-set auto_path "$env(BLUEGNULIB) $auto_path"
-
-# find tclIndex file in the test suite directory structure
-# $env(TESTSUITEROOT) and in the path up to the root
-#
-if {! [info exists env(TESTSUITEROOT)]} {
- set env(TESTSUITEROOT) [exec /bin/sh -c pwd]
-}
-set PWD $env(TESTSUITEROOT)
-
-if {[info exists env(TESTSETS)]} {
- if {[lsearch -exact [split $env(TESTSETS) ":"] $PWD] < 0} {
- set env(TESTSETS) $PWD:$env(TESTSETS)
- }
-} else {
- set env(TESTSETS) $PWD
-}
-cd $PWD
-
-
-# First thing to do is calculate the verbose level and the debug flag
-# as well as the definition of the associated procedures:
-# verbose and debug.
-#
-# Check the Debug level
-if [info exists env(DEBUG)] {
- switch -regexp [string toupper $env(DEBUG)] {
- 1 - ^T(R(U(E)?)?)?$ - ^Y(E(S)?)?$ {
- set bDebug 1
- }
- default {
- set bDebug 0
- }
- }
-} else {
- set bDebug 0
-}
-
-# Calculate verbose level
-# Complete a first path over the argument list
-# Calculate the Verbose Level
-set verbose 0
-foreach __arg $argv {
- switch -regexp -- $__arg {
- {^-[-]?v(e(r(b(o(s(e)?)?)?)?)?)?$} {
- incr verbose
- }
- default {
- lappend __lArgs $__arg
- }
- }
-}
-if {[catch {set argv $__lArgs}]} {
- set argv {}
-}
-
-# Define the procedures: verbose & debug
-#
-# verbose [-n] [-log] [--] message [level]
-#
-# Print MESSAGE if the verbose level is >= LEVEL.
-# The default value of LEVEL is 1.
-# "-n" says to not print a trailing newline.
-# "-log" says to add the text to the log file even if it won't be printed.
-# Note that the apparent behaviour of `send_user' dictates that if the message
-# is printed it is also added to the log file.
-# Use "--" if MESSAGE begins with "-".
-#
-# This is defined here rather than in framework.exp so we can use it
-# while still loading in the support files.
-#
-proc verbose {args} {
- debug {======= verbose $args} 3
- global verbose
-
- set newline 1
- set logfile 0
-
- set i 0
- if {[string index [lindex $args 0] 0] == "-"} {
- for { set i 0 } { $i < [llength $args] } { incr i } {
- if { [lindex $args $i] == "--" } {
- incr i
- break
- } elseif { [lindex $args $i] == "-n" } {
- set newline 0
- } elseif { [lindex $args $i] == "-log" } {
- set logfile 1
- } elseif { [string index [lindex $args $i] 0] == "-" } {
- return [::BlueGnu::clone_output "ERROR: verbose:\
- illegal argument: [lindex $args $i]"]
- } else {
- break
- }
- }
- }
- if {[llength $args] == $i} {
- return [::BlueGnu::clone_output "ERROR: verbose: nothing to print"]
- }
-
-
- set level 1
- if {[llength $args] == $i + 2} {
- if [catch {set level [expr [lindex $args [expr $i+1]]]} szErrMsg] {
- return [::BlueGnu::clone_output "ERROR: verbose: level number\
- >$szErrMsg<"]
- }
- } elseif {[llength $args] > $i + 2} {
- return [::BlueGnu::clone_output "ERROR: verbose: Too many arguments"]
- }
- set message [lindex $args $i]
-
- if {$level <= $verbose} {
- # There is no need for the "--" argument here, but play it safe.
- # We assume send_user also sends the text to the log file (which
- # appears to be the case though the docs aren't clear on this).
- if 0 {
- if {[string compare \
- [namespace eval ::BlueGnu \
- {set ::BlueGnu::sum_file}] stdout] != 0} {
- set szCmd [list uplevel puts [namespace eval ::BlueGnu \
- {set ::BlueGnu::sum_file}]]
- lappend szCmd "\"$message\""
- debug {==## 1 >$szCmd<} 9
- if {[catch {eval $szCmd}]} {
- puts [namespace eval ::BlueGnu \
- {set ::BlueGnu::sum_file}] $message
- }
- }
- }
- if [catch {set message \
- "[uplevel set __szTmp \"$message\"]"} szErrMsg] {
- set message "$message == ERROR: >$szErrMsg<"
- }
- if {$newline} {
- #append message "\n"
- }
- debug {$message} 0
- return [::BlueGnu::clone_output "$message"]
- } elseif {$logfile} {
- if [catch {set message \
- "[uplevel set __szTmp \"$message\"]"} szErrMsg] {
- set message "$message == ERROR: >$szErrMsg<"
- }
- if {$newline} {
- append message "\n"
- }
- debug {$message} 0
- return [send_log $message]
- }
- return ""
-}
-
-if {$bDebug} {
- proc debug {text {level 1}} {
- global verbose
-
- if {$level <= $verbose} {
- set szCmd [list uplevel ::BlueGnu::clone_output]
- set szA $level; set iMax [uplevel info level]
- for {set i 0} {$i < $iMax} \
- {incr i} {append szA ">"}
- lappend szCmd "\"$szA$text\""
- eval $szCmd
- }
- }
-} else {
- proc debug {text {level 1}} {
- }
-}
-
-# This procedure will find a file in the directory structure
-# any where below the current working directory
-# any where on the search path
-# or up the directory tree
-#
-proc locateFile {szFileName {szSubDirectory "."}} {
- debug {======= locateFile $szFileName $szSubDirectory} 3
- global env
- # remove a trailing "/" from sub directory name
- regexp {(.*)/$} $szSubDirectory dummy szSubDirectory
-
- set newList {}
- set searchList {.}
- set tmpDir [pwd]
- while {[string compare [set dir [file dirname $tmpDir]] "/"] != 0} {
- lappend searchList $dir
- set tmpDir $dir
- }
- foreach dir [split $env(TESTSETS) ":"] {
- lappend searchList $dir
- }
- foreach dirList $searchList {
- foreach test [searchForFile $szFileName $dirList $szSubDirectory] {
- # only files that are readable and
- # not a directory, symbolic link or device
- # are added to the list
- if {[file isfile $test] && [file readable $test]} {
- # add only if not already exists in list
- if {[lsearch -exact $newList $test] < 0} {
- lappend newList $test
- }
- }
- }
- }
- debug {======= returning newList: >$newList<} 4
- return $newList
-}
-
-proc locateDir {szFileName {szSubDirectory "."}} {
- debug {======= locateDir $szFileName $szSubDirectory} 3
- global env
- # remove a trailing "/" from sub directory name
- regexp {(.*)/$} $szSubDirectory dummy szSubDirectory
-
- set newList {}
- set searchList {.}
- set tmpDir [pwd]
- while {[string compare [set dir [file dirname $tmpDir]] "/"] != 0} {
- lappend searchList $dir
- set tmpDir $dir
- }
- foreach dir [split $env(TESTSETS) ":"] {
- lappend searchList $dir
- }
- foreach dirList $searchList {
- foreach test [searchForFile $szFileName $dirList $szSubDirectory] {
- # only files that are directories
- # are added to the list
- if {[file isdirectory $test]} {
- # add only if not already exists in list
- if {[lsearch -exact $newList $test] < 0} {
- lappend newList $test
- }
- }
- }
- }
- debug {======= returning newList: >$newList<} 4
- return $newList
-}
-
-proc searchForFile {szFileName dirList szSubDirectory} {
- debug {======= searchForFile $szFileName $dirList $szSubDirectory} 3
- # find sub directory in or below the current working directory
- set szDirSrc ""
- foreach file [file split $szSubDirectory] {
- if {[string compare $file "."] == 0} {
- if {! [info exists newList]} {
- set newList {}
- }
- continue
- } else {
- foreach dir $dirList {
- catch {unset newList}
- foreach newDir [findFile $dir $file] {
- lappend newList $newDir
- }
- }
- }
- if {[catch {set dirList $newList}]} {
- set dirList {}
- }
- }
- debug { dirList = >$dirList<} 4
- set fileList {}
- foreach dir $dirList {
- set newList [findFile $dir $szFileName]
- if {[llength $newList] > 0} {
- set fileList [concat $fileList $newList]
- }
- }
- debug { fileList = >$fileList<} 4
- if {[llength $fileList] != 0} {
- # NO test found, next step in searching
- #return $fileList
- }
-
- set newList {}
- set PWD [pwd]
- foreach dir $fileList {
- debug { dir = >$dir<} 4
- cd [file dirname $dir]
- lappend newList "[pwd]/[file tail $dir]"
- cd $PWD
- }
-
- debug { newList = >$newList<} 4
- return $newList
-}
-
-proc findFile {szDirectory szFileName} {
- global locatedFile env
-
- debug {======= findFile $szDirectory $szFileName} 3
- if {! [info exists locatedFile($szDirectory/$szFileName)]} {
- if {[file readable $szDirectory/$szFileName]} {
- set locatedFile($szDirectory/$szFileName) $szDirectory/$szFileName
- } else {
- if {$szDirectory == "." || \
- [lsearch -exact [split $env(TESTSETS) ":"] \
- $szDirectory] >= 0} {
- set locatedFile($szDirectory/$szFileName) \
- [split [exec find $szDirectory -name $szFileName \
- -print] "\n"]
- } else {
- return {}
- }
- }
- }
- return $locatedFile($szDirectory/$szFileName)
-}
-
-# appendArguments
-#
-# This procedure will append the string pathed in arguments to every
-# element of fileList
-# return a list with the same number of element in which each
-# element has the arguments appended
-#
-proc appendArguments {fileList arguments} {
- set newList {}
- debug {======= appendArguments $fileList $arguments} 3
- debug { length argument list: >[llength $arguments]<} 4
- if {[string length $arguments] > 0} {
- foreach file $fileList {
- regexp {([^[=]+)([[][^]]*[]])?(.*)} $file dummy szT szID szA
- debug {dummy: >$dummy<} 4
- debug {szT : >$szT<} 4
- if {[string length $szID] > 0} {
- #regexp {[[]([^]]+)[]]} $szID dummy szID
- }
- debug {szID : >$szID<} 4
- if {[string length $szA] > 0} {
- regexp {=(.*)} $szA dummy szA
- }
- debug {szA : >$szA<} 4
- #set lFile [split $file "="]
- if {[string length $szA] > 0} {
- set szSep " "
- } else {
- set szSep "="
- }
- lappend newList ${file}${szSep}$arguments
- }
- return $newList
- }
- return $fileList
-}
-
-# appendTestCaseID
-#
-# This procedure will append the string pathed in arguments to every
-# element of fileList
-# return a list with the same number of element in which each
-# element has the arguments appended
-#
-proc appendTestCaseID {fileList {szTestCaseID ""}} {
- set newList {}
- debug {======= appendTestCaseID $fileList >$szTestCaseID<} 3
- set bMultiFiles [expr [llength $fileList] > 1]
- set i 1
- foreach file $fileList {
- regexp {([^[=]+)([[][^]]*[]])?(.*)} $file dummy szT szID szA
- debug {dummy: >$dummy<} 4
- debug {szT : >$szT<} 4
- if {[string length $szID] > 0} {
- regexp {[[]([^]]+)[]]} $szID dummy szID
- }
- debug {szID : >$szID<} 4
- if {[string length $szA] > 0} {
- #regexp {=(.*)} $szA dummy szA
- }
- debug {szA : >$szA<} 4
- if {[string length $szID] > 0} {
- set szID [string trim "${szID}${szTestCaseID}"]
- } else {
- set szID ${szTestCaseID}
- }
- if {[llength [split $szID "="]] > 1} {
- set szSep " "
- } else {
- set szSep "="
- }
- if {[string length $szID] == 0} {
- lappend newList "${szT}$szA"
- continue
- }
- if {$bMultiFiles} {
- set szI [format "${szSep}seqNr=%03d" $i]
- } else {
- set szI ""
- }
- lappend newList "${szT}\[${szID}${szI}\]$szA"
- incr i
- }
- return $newList
-}
-
-# processArgs
-#
-# This procedure expect all optional arguments to be name=value pairs
-# It will set all variable named to the value given within
-# the procedure body
-# It will return an empty list or a list of all remaining not name=value
-# pair in the argument list
-#
-proc processArgs {args} {
- debug {======= processArgs $args} 3
-
- set llArgs $args
- set args {}
-
- # set default errorCode=NONE
- uplevel set errorCode NONE
- # now process all name=value pair arguments
- ####### There may be a better way to do this see pre 8.0 code
- foreach lArgs $llArgs {
- foreach arg $lArgs {
- set NVP [split $arg "="]
- if {[llength $NVP] > 1} {
- debug {uplevel set [lindex $NVP 0] \
- [list [join [lrange $NVP 1 end] "="]]} 3
- uplevel set [lindex $NVP 0] \
- [list [join [lrange $NVP 1 end] "="]]
- } else {
- lappend args $arg
- }
- }
- }
- debug { processArgs returns: $args} 3
- return $args
-}
-
-# processInternalArgs
-#
-# This procedure expect all optional arguments to be {name value} pairs
-# It will set all variable named to the value given within
-# the procedure body
-# It will return an empty list or a list of all remaining not name=value
-# pair in the argument list
-#
-proc processInternalArgs {lArgs} {
- debug {======= processInternalArgs $lArgs} 3
- set arglist {}
-
- # set default errorCode=NONE
- uplevel set errorCode NONE
- # now process all {name value} pair arguments
- foreach arg $lArgs {
- if {[llength $arg] == 2} {
- debug {uplevel set [lindex $arg 0] \
- [list [join [lrange $arg 1 end] "="]]} 3
- uplevel set [lindex $arg 0] \
- [list [join [lrange $arg 1 end] "="]]
- } else {
- lappend arglist $arg
- }
- }
- debug {processInternalArgs returns: $arglist} 3
- return $arglist
-}
-
-# processTestScriptArgs
-#
-# This procedure expect all optional arguments to be {name value} pairs
-# It will set all variable named to the value given within
-# the procedure body
-# It will return an empty list or a list of all remaining not name=value
-# pair in the argument list
-#
-# This is a copy of the procedure "processInternalArgs" without an argument
-# however this procedure may become different
-#
-#
-proc processTestScriptArgs {} {
- upvar lArgs lArgs
- set arglist {}
-
- # set default errorCode=NONE
- uplevel set errorCode NONE
- debug {======= processTestScriptArgs $lArgs} 3
- # now process all {name value} pair arguments
- foreach arg $lArgs {
- if {[llength $arg] == 2} {
- debug {uplevel set [lindex $arg 0] \
- [list [join [lrange $arg 1 end] "="]]} 4
- uplevel set [lindex $arg 0] \
- [list [join [lrange $arg 1 end] "="]]
- } else {
- lappend arglist $arg
- }
- }
- debug { processInternalArgs returns: $arglist} 4
- return $arglist
-}
-
-# Command execution command
-# This command is like the catch command, however it can do some additional
-# testing and in case of an error it will return a error class.
-#
-proc doCmd {szCmd args} {
- global errorInfo errorCode
- if {! [info exists errorInfo]} {
- set errorInfo "<errorInfo has not been defined>"
- }
-
- debug {======= doCmd >$szCmd< >$args<} 3
- foreach arg $args {
- set vv [split $arg "="]
- if {[llength $vv] == 2} {
- debug { ==>> Expected value: [lindex $vv 0]=[eval list \
- [lindex $vv 1]]} 5
- set [lindex $vv 0] [eval list [lindex $vv 1]]
- } elseif {[llength $vv] == 1} {
- if {! [info exists errorObj]} {
- debug { ==>> upvar $vv errorObj} 5
- if "! [uplevel info exists $vv]" {
- debug { ==>> creating: $vv (uplevel)} 5
- uplevel [list set $vv {}]
- }
- upvar $vv errorObj
- }
- }
- }
- if {[catch {uplevel 1 $szCmd} szErrMsg]} {
- debug {======= ErrMsg : \n$szErrMsg\n======= from:\n$szCmd} 5
- set errorObj ""
- if {[string compare $errorCode NONE] == 0} {
- set errorCode UNDEFINED
- }
- set errorInfoSave $errorInfo
- set errorCodeSave $errorCode
- catch {set errorObj [uplevel infoWhich \{$szErrMsg\}]}
- set errorInfo $errorInfoSave
- set errorCode $errorCodeSave
- debug { ==>> errorObj: >$errorObj<} 5
- if {[string compare $errorObj ""] == 0} {
- set errorObj [uplevel \
- ::BlueGnu::Error #auto \{$errorCode\} \
- \{$szErrMsg\} \{$errorInfo\}]
- debug {errorObj: >$errorObj<} 5
- set errorObj [uplevel infoWhich \{$errorObj\}]
- debug {errorObj: >$errorObj<} 5
- debug {Command: [string trim $szCmd]} 5
- debug {ErrMsg : \n$szErrMsg} 5
- debug {====================} 5
- global errorInfo
- debug {ErrInfo: $errorInfo\n====================} 5
- }
- set bReturn 1
- if {[info exists errorCode]} {
- debug { errorCode= $errorCode} 5
- debug { Class= [$errorObj info class]} 5
- catch {debug { isa BC_RTN= [$errorObj isa BC_RTN]} 5}
- catch {debug { isa ERROR= [$errorObj isa Error]} 5}
- catch {
- if [$errorObj isa BC_RTN] {
- if {[set i \
- [lsearch -exact $errorCode \
- [list [$errorObj SEVERITY] \
- [$errorObj FACILITY] [$errorObj CODE]]]] >= 0} {
- setup_xfail
- set bReturn 0
- }
- fail "Expected errorCode=$errorCode, got:\
- [$errorObj getShortMsg]\
- \{[$errorObj SEVERITY] [$errorObj FACILITY]\
- [$errorObj CODE]\} for >$szCmd<"
- #verbose { errorCode: [$errorObj errorCode]}
- #verbose { why: [$errorObj why]}
- #verbose {verboseWhy: [$errorObj verboseWhy]} 2
- }
- }
- catch {
- if [$errorObj isa Error] {
- debug { Error= [$errorObj errorCode]} 5
- if {[set i \
- [lsearch -exact $errorCode \
- [$errorObj errorCode]]] >= 0} {
- setup_xfail
- set bReturn 0
- }
- fail "Expected errorCode=$errorCode, got:\
- [$errorObj errorCode] for >$szCmd<"
- verbose { errorCode: [$errorObj errorCode]}
- verbose { why: [$errorObj why]}
- verbose {verboseWhy: [$errorObj verboseWhy]} 2
- }
- }
- }
- return $bReturn
- } else {
- set bReturn 0
- set NOT ""
- if {[info exists errorCode]} {
- if {[lsearch -exact $errorCode "NONE"] < 0} {
- setup_xfail
- set NOT "not "
- set bReturn 1
- }
- pass "errorCode=NONE ${NOT}found in expected set\
- of errorCodes=\{$errorCode\} for >$szCmd<"
- }
- if {[info exists return]} {
- debug {Return: >$return<} 3
- set bResult 0
- set iFalse 0
- set iFalseFound 0
- set iTrue 0
- set iTrueFound 0
- foreach lResult $return {
- if {[llength $lResult] == 2} {
- set bFlag [string toupper [lindex $lResult 0]]
- set szResult [lindex $lResult 1]
- } else {
- set bFlag ""
- set szResult [lindex $lResult 0]
- }
- debug {Checking >$szErrMsg< against $bFlag >$szResult<} 3
- switch $bFlag {
- 0 - NOT - NO - FALSE {
- # no matches allowed
- incr iFalse
- debug {Should not match >$szErrMsg< != >$szResult<} 4
- if {[string compare $szErrMsg $szResult] != 0} {
- pass "The NOT Expected Result >$szResult<\
- was not found for >$szCmd<"
- incr iFalseFound
- } else {
- fail "The NOT Expected Result >$szResult<\
- was found for >$szCmd<"
- }
- }
- 1 - {} - YES - TRUE {
- # only one match allowed
- incr iTrue
- debug {Should match >$szErrMsg< == >$szResult<} 4
- if {[string compare $szErrMsg $szResult] == 0} {
- pass "Expected Result >$szResult<\
- found for >$szCmd<"
- incr iTrueFound
- }
- }
- default {
- perror "doCmd result flag: 1, 0, <empty>,\
- NOT, YES, NO, TRUE, FALSE"
- }
- }
- }
- set bResult [expr $iFalse == $iFalseFound]
- if {$iTrue > 0} {
- set bResult [expr $bResult && ($iTrueFound == 1)]
- }
- if {! $bResult} {
- fail "Expected Result(s) >$return<\n \
- did not match with: >$szErrMsg< for >$szCmd<"
- set bReturn 1
- }
- }
- if {[info exists errorObj]} {
- set errorObj $szErrMsg
- }
- }
- return $bReturn
-}
-
-
-# deleteObjects
-#
-# This procedure takes multiple arguments each can be a single object
-# or a list of objects
-# it will delete all these object
-# No return value
-#
-proc deleteObjects {args} {
- debug {======= deleteObjects $args} 3
- foreach arg $args {
- foreach object $arg {
- debug " delete object >$object<" 4
- delete object $object
- }
- }
- return {}
-}
-
-# isObject
-# This procedure accepts a fully qualified object name as argument
-# and checks if that object exists
-proc isObject {object} {
- debug {======= isObject $object} 3
- set tmp [namespace tail $object]
- return [expr [lsearch [namespace eval [namespace qualifier $object] {
- ::itcl::find objects
- }
- ] $tmp] >= 0]
-}
-
-# checkObject
-# This procedure takes an object and a class name is argument
-# It checks if the object exists, has a counter part in C++ and
-# is of the correct class
-#
-proc checkObject {object szClassName} {
- debug {======= checkObject $object $szClassName} 3
- if {! [catch {
- set class [uplevel "$object info class"]
- if {[catch {[findObject $object] isa $szClassName} bCl]} {
- if {[string compare [namespace tail $class] \
- [namespace tail $szClassName]] == 0} {
- debug {Class [namespace tail $szClassName]\
- match class of object} 4
- } else {
- error "Miss match"
- }
- } elseif {! $bCl} {
- error 1
- }
- } iRet]} {
- return 1
- }
-
- set obj [findObject $object]
- set class [findClass $szClassName]
- if {[string length $obj] > 0 && [string length $class] > 0} {
- debug { ==>> object and class passed do exists} 4
- if {[catch {set bISA [$obj isa $class]}]} {
- debug {Class $szClassName is not inscope to match $object} 4
- return 0
- }
- if {! $bISA} {
- debug {$object is not of Class $szClassName} 4
- return 0
- }
- } else {
- debug {$object and/or $szClassName have not been found!} 4
- return 0
- }
- return 1
-}
-
-# findObject
-# This procedure take the name of an object, possibly without any qualifier
-# and search all namespaces to find the object.
-# When a qualifier is specified, it will check if it is complete
-# The procedure return the fully qualified name of the object if it exists or
-# an empty string otherwise.
-#
-proc findObject {object {namespace ::}} {
- debug {======= findObject $object $namespace} 3
- set ns [namespace qualifier $object]
- set obj [namespace tail $object]
- set objs [namespace eval $namespace {::itcl::find objects}]
- if {[lsearch $objs $obj] >= 0} {
- regsub "::$" $namespace "" namespace
- return ${namespace}::$obj
- } else {
- set result ""
- foreach cns [namespace children $namespace] {
- set result [findObject $obj $cns]
- if {[string length $result] > 0} break
- }
- }
- return $result
-}
-
-# findClass
-# This procedure take the name of an class, possibly without any qualifier
-# and search all namespaces to find the class.
-# When a qualifier is specified, it will check if it is complete
-# The procedure return the fully qualified name of the Class if it exists or
-# an empty string otherwise.
-#
-proc findClass {class {namespace ::}} {
- debug {======= findClass $class $namespace} 3
- set ns [namespace qualifier $class]
- set obj [namespace tail $class]
- set objs [namespace eval $namespace {::itcl::find classes}]
- if {[lsearch $objs $obj] >= 0} {
- regsub "::$" $namespace "" namespace
- return ${namespace}::$obj
- } else {
- set result ""
- foreach cns [namespace children $namespace] {
- set result [findClass $obj $cns]
- if {[string length $result] > 0} break
- }
- }
- return $result
-}
-
-# The parseTest command will validate the argument as an existing
-# test including testCaseID and arguments.
-# It will return a list of all acceptable test script
-#
-proc parseTest {args} {
- global szCurrentTestDirectory
- debug {======= parseTest $args} 3
-
- foreach arg $args {
- foreach szTest $arg {
- regexp {([^[=]+)([[][^]]*[]])?(.*)} $szTest dummy szT szID szA
- debug {dummy: >$dummy<} 4
- debug {szT : >$szT<} 4
- if {[string length $szID] > 0} {
- #regexp {[[]([^]]+)[]]} $szID dummy szID
- }
- debug {szID : >$szID<} 4
- if {[string length $szA] > 0} {
- #regexp {=(.*)} $szA dummy szA
- }
- debug {szA : >$szA<} 4
- set szFileName $szT
- set szDname [file dirname $szFileName]
- set szFname [file tail $szFileName]
-
- if {[file exist [set test [file join \
- $szCurrentTestDirectory \
- $szFileName]]]} {
- # file should be a test
- debug { is a test: >$test<!} 3
- lappend testList [file join $szCurrentTestDirectory $szTest]
- } elseif {[llength [set tests \
- [locateFile $szFname $szDname]]] > 0} {
- foreach test $tests {
- if {[file exists $test]} {
- # file should be a test
- debug { is a test: >$test<!!} 3
- lappend testList ${test}${szID}${szA}
- } else {
- warning "Test >$test< can't be found"
- }
- }
- } else {
- perror "$szFileName is not a test!\
- Does not exists!"
- }
- }
- }
- if [info exists testList] {
- if [llength $testList] {
- return $testList
- }
- }
- return [list]
-}
-
-# The global available runtest procedure
-# this procedure will find the current environment
-# and execute the runTest procedure in that environment
-
-proc runtest {args} {
- global objCurrentEnvironment szCurrentTestDirectory
- debug {======= runtest $args} 3
- set elResult [list]
-
- if {[llength $args] > 0} {
- set Env [lindex $args 0]
- debug { Checking for environment: >$Env<} 3
- debug { >[infoWhich $Env]<} 5
- debug { Current Test Directory: >$szCurrentTestDirectory<} 5
- if {[string compare [infoWhich $Env] ""] == 0} {
- debug { not an environment} 4
- if {[info exist objCurrentEnvironment] && \
- [string compare \
- [infoWhich $objCurrentEnvironment] ""] != 0} {
- debug { Found Current Environment\
- >$objCurrentEnvironment<} 5
- set Env $objCurrentEnvironment
- } else {
- error "NO default environent"
- }
- } else {
- debug { is an environment} 3
- set args [lrange $args 1 end]
- }
- set T [lindex $args 0]
- set A [lindex $args 1]
- set I [lindex $args 2]
- foreach t [appendTestCaseID [appendArguments [parseTest $T] $A] $I] {
- debug { ==>> $objCurrentEnvironment\
- runTest $t} 3
- lappend elResult \
- [$Env runTest $t]
- }
- } else {
- warning "No tests have been passed to runtest procedure!"
- }
- return $elResult
-}
-
-proc appendQueue {args} {
- global objCurrentQueue szCurrentTestDirectory
- debug {======= appendQueue $args} 3
-
- set iRun 0
- set Queue [lindex $args 0]
- if {[string compare [infoWhich $Queue] ""] == 0} {
- if {[info exist objCurrentQueue]} {
- set Queue $objCurrentQueue
- } else {
- error "NO default queue"
- }
- } else {
- set args [lrange $args 1 end]
- }
- set T [lindex $args 0]
- set A [lindex $args 1]
- set I [lindex $args 2]
- foreach t [appendTestCaseID [appendArguments [parseTest $T] $A] $I] {
- debug { ==>> $Queue append $t} 3
- incr iRun
- $Queue append $t
- }
- if {$iRun == 0} {
- warning "NO argument to appendQueue have been processed"
- }
-}
-
-proc prependQueue {args} {
- global objCurrentQueue szCurrentTestDirectory
- debug {======= prependQueue $args} 3
-
- set iRun 0
- set Queue [lindex $args 0]
- if {[string compare [infoWhich [lindex $args 0]] ""] == 0} {
- if {[info exist objCurrentQueue]} {
- set Queue $objCurrentQueue
- } else {
- error "NO default queue"
- }
- } else {
- set args [lrange $args 1 end]
- }
- set T [lindex $args 0]
- set A [lindex $args 1]
- set I [lindex $args 2]
- foreach t [appendTestCaseID [appendArguments [parseTest $T] $A] $I] {
- incr iRun
- lappend comList $t
- }
- debug { ==>> $Queue prepend $comList} 3
- eval $Queue prepend $comList
-
- if {$iRun == 0} {
- warning "NO argument to appendQueu have been processed"
- }
-}
-
-proc perror {args} {
- global errorInfo
- global objCurrentTest
- global objCurrentEnvironment
-
- # save errorInfo
- set errorInfoSave $errorInfo
-
- if { [llength $args] > 1 } {
- set $::BlueGnu::errcnt [lindex [uplevel set args] 1]
- } else {
- incr ::BlueGnu::errcnt
- }
-
- while 1 {
- set szMsg [lindex $args 0]
-
- if {[catch {$objCurrentTest perror $szMsg} \
- szErrMsg]} {
- if {[info exists objCurrentTest]} {
- debug {No current test: >$szErrMsg<:\
- current test >$objCurrentTest< message:\n \
- $szMsg} 3
- } else {
- debug {PERROR: No current test: >$szErrMsg<:\
- current test >DOES NOT EXIST< message:\n \
- $szMsg} 3
- debug { info: >>>$errorInfo<<<} 4
- }
- } else {
- break
- }
- catch {
- set szCmd [concat \"$objCurrentEnvironment\" record_test \
- ERROR \$szMsg]
- }
- if {[catch {eval $szCmd} szErrMsg]} {
- verbose {No current environment (ERROR): >$szErrMsg<} 3
- } else {
- break
- }
-
- ::BlueGnu::clone_output "ERROR: $szMsg"
- namespace eval ::BlueGnu {
- set errno "ERROR: [uplevel set szMsg]"
- }
- break
- }
-
- # restore errorInfo
- set errorInfo $errorInfoSave
-}
-
-proc warning {args} {
- global errorInfo
- global objCurrentTest
- global objCurrentEnvironment
-
- # save errorInfo
- set errorInfoSave $errorInfo
-
- if { [llength $args] > 1 } {
- namespace eval ::BlueGnu {
- set warncnt [lindex [uplevel set args] 1]
- }
- } else {
- namespace eval ::BlueGnu {
- incr warncnt
- }
- }
-
- while 1 {
- set szMsg [lindex $args 0]
-
- if {[catch {$objCurrentTest warning $szMsg} \
- szErrMsg]} {
- if {[info exists objCurrentTest]} {
- verbose {No current test: >$szErrMsg<:\
- current test >$objCurrentTest< message:\n \
- $szMsg} 3
- } else {
- verbose {WARNING: No current test: >$szErrMsg<:\
- current test >DOES NOT EXIST< message:\n \
- $szMsg} 3
- }
- } else {
- break
- }
- catch {
- set szCmd [concat \"$objCurrentEnvironment\" record_test \
- WARNING \$szMsg]
- }
- if {[catch {eval $szCmd} szErrMsg]} {
- verbose {No current environment (WARNING): >$szErrMsg<} 3
- } else {
- break
- }
-
- set szMsg [lindex $args 0]
- ::BlueGnu::clone_output "WARNING: $szMsg"
- namespace eval ::BlueGnu {
- set errno "WARNING: [uplevel set szMsg]"
- }
- break
- }
- if 0 {
- uplevel #0 {
- verbose {uplevel #0 to remove errorInfo}
- if [info exists errorInfo] {
- unset errorInfo
- }
- }
- }
- # restore errorInfo
- set errorInfo $errorInfoSave
-}
-
-proc note {szMsg} {
- global objCurrentTest
-
- $objCurrentTest note $szMsg
-}
-
-proc pass {szMsg} {
- global objCurrentTest
-
- $objCurrentTest pass $szMsg
-}
-
-proc fail {szMsg} {
- global objCurrentTest
-
- $objCurrentTest fail $szMsg
-}
-
-proc unresolved {szMsg} {
- global objCurrentTest
-
- $objCurrentTest unresolved $szMsg
-}
-
-proc untested {szMsg} {
- global objCurrentTest
-
- $objCurrentTest untested $szMsg
-}
-
-proc unsupported {szMsg} {
- global objCurrentTest
-
- $objCurrentTest unsupported $szMsg
-}
-
-proc get_warning_threshold {} {
- return [namespace eval ::BlueGnu {set warning_threshold}]
-}
-
-proc set_warning_threshold {threshold} {
- namespace eval ::BlueGnu {
- set warning_threshold [uplevel set threshold]
- }
-}
-
-proc setup_xfail {args} {
- namespace eval ::BlueGnu {set xfail_flag 1}
-}
-
-proc clear_xfail {args} {
- namespace eval ::BlueGnu {set xfail_flag 0}
-}
-
-proc benchmark {benchmarkFunction args} {
- debug {======= benchmark $benchmarkFunction $args}
- global objCurrentTest
- global errorInfo
-
- if 0 {
- debug {[foreach var [info vars] {
- verbose {local var: >$var<}}]
- }
- uplevel {
- debug {[foreach var [info vars] {
- verbose {uplevel local var: >$var<}}]
- }
- }
- debug {[foreach var [info globals] {
- verbose {global var: >$var<}}]
- }
- }
-
- set errorInfo ""
- set szID [$objCurrentTest ID]
- set szTestCaseID [$objCurrentTest testCaseID]
- set benchmarkObject [$objCurrentTest benchmarkObject]
- set benchmarkClassName [$objCurrentTest benchmarkClassName]
- debug { ==>> test ID: >$szID<} 3
- debug { test case ID: >$szTestCaseID<} 3
- debug { check test object: >$benchmarkObject<} 3
- if {$benchmarkObject == ""} {
- warning "NO Benchmark Class defines for >$benchmarkClassName<"
- set bResult 0
- } else {
- if [catch {
- set bResult [eval $benchmarkObject benchmark \
- $benchmarkFunction $args]
- } errMsg] {
- warning "NO checking has been done for\
- ${benchmarkClassName}::benchmark $benchmarkFunction $args"
- debug {[perror "BenchmarkFunction: >$benchmarkFunction<\
- has not been defined\
- in class $benchmarkClassName\n### Error Msg: $errMsg"]} 0
- debug {### Error Info: $errorInfo} 0
- set bResult 0
- }
- }
- return $bResult
-}
-
-proc envPATH {szAction szDir} {
- debug {======= envPATH $szAction $szDir} 3
-
- global env
- if [file isdirectory $szDir] {
- # remove directory from Path if it exists
- set envPATH $env(PATH)
- while {[regsub :?$szDir:? $envPATH {:} envPATH]} {
- }
- regsub {^:} $envPATH {} envPATH
- regsub {:$} $envPATH {} envPATH
- set env(PATH) $envPATH
- switch $szAction {
- prefix -
- prepend {
- set env(PATH) "$szDir:$env(PATH)"
- }
- append {
- append env(PATH) ":$szDir"
- }
- default {
- }
- }
- }
-}
-
-# replacement for info which commaond
-#
-proc infoWhich {name {namespace ::}} {
- debug {======= infoWhich $name $namespace} 3
- if [catch {uplevel set infoWhich__name $name} szErrMsg] {
- debug { error: $szErrMsg}
- return ""
- }
- uplevel {
- debug { objects: >[::itcl::find objects]<} 4
- debug { namespace: >[namespace current]<} 4
- infoWhichYYY
- }
- set name [uplevel set infoWhich__name]
- uplevel unset infoWhich__name
- debug {infoWhich return: >$name<} 4
- return $name
-}
-proc infoWhichXXX {} {
- uplevel {
- set i [lsearch -regexp [::itcl::find objects] "[namespace tail \
- $infoWhich__name]"]
- if {$i < 0} {
- set infoWhich__name ""
- } else {
- set infoWhich__name [lindex [::itcl::find objects] $i]
- if {! [string match ::* $infoWhich__name]} {
- set infoWhich__name [namespace current]::$infoWhich__name
- }
- regsub "^::::" $infoWhich__name "::" infoWhich__name
- }
- }
-}
-proc infoWhichYYY {} {
- uplevel {
- if [catch {infoWhichXXX} szErrMsg] {
- verbose "infoWhichYYY error Msg: $szErrMsg"
- set infoWhich__name ""
- }
- }
-}
-
-namespace eval ::BlueGnu {
- variable warning_threshold 0
-
- variable sum_file stdout
- variable all_flag 0
-
- variable xfail_flag 0
- variable xfail_prms {}
- #
- # Print output to stdout (or stderr) and to log file
- #
- # If the --all flag (-a) option was used then all messages
- # go the the screen.
- # Without this, all messages that start with a keyword are
- # written only to the
- # detail log file. All messages that go to the screen will
- # also appear in the
- # detail log. This should only be used by the framework itself using pass,
- # fail, xpass, xfail, warning, perror, note, untested, unresolved, or
- # unsupported procedures.
- #
- proc clone_output {message} {
- variable sum_file
- variable all_flag
-
- #everything goes in the summary file
- #
- puts $sum_file "$message"
-
- # Depending on the type of message, the message is send
- # to other resources
- #
- case [lindex [split $message] 0] in {
- {"FAIL:" "XPASS:" "UNRESOLVED:" "UNSUPPORTED:" "UNTESTED:"} {
- send_user "$message\n"
- send_log "$message\n"
- }
- {"PASS:" "XFAIL:"} {
- if $all_flag {
- send_user "$message\n"
- }
- send_log "$message\n"
- }
- "ERROR:" {
- #send_user "$message\n"
- send_error "$message\n"
- send_log "$message\n"
- }
- {"WARNING:" "NOTE:"} {
- if $all_flag {
- send_error "$message\n"
- }
- send_log "$message\n"
- }
- "*******" {
- send_user "$message\n"
- #send_log "$message\n"
- #send_error "$message\n"
- }
- default {
- send_user "$message\n"
- }
- }
-
- # we always return turn the message unchanged
- #
- return "$message"
- }
-}
-
-proc createTarget {args} {
- verbose {In: createTarget >$args<} 3
- set szCmd "::BlueGnu::Target #auto "
- set bID 0
- set bEnv 0
- set bQueue 0
- foreach item $args {
- if {[string compare \
- [lindex [split $item "="] 0] szID] == 0} {
- set bID 1
- }
- if {[string compare \
- [lindex [split $item "="] 0] objEnvironment] == 0} {
- set bEnv 1
- }
- if {[string compare \
- [lindex [split $item "="] 0] objQueue] == 0} {
- set bQueue 1
- }
- append szCmd "\{$item\} "
- }
- if {! $bID} {
- append szCmd "szID=Default "
- }
- if {! $bEnv} {
- append szCmd "objEnvironment=[infoWhich \
- [::BlueGnu::Environment #auto]] "
- }
- if {! $bQueue} {
- append szCmd "objQueue=[infoWhich [::BlueGnu::Queue #auto]] "
- }
- verbose {Command: >$szCmd<} 3
- set target [uplevel #0 "eval $szCmd"]
- verbose {Created target: >$target<} 3
- verbose { >>>[$target <<]<<<} 4
- verbose { >>>[[infoWhich $target] <<]<<<} 4
- verbose { == [join [$target <<] "\n == "]} 3
- return [infoWhich $target]
-}
-
-# Initialize all global variables not yet initialized
-#
-set szCurrentTestDirectory $env(TESTSUITEROOT)
-
-# Remove all temporary variables from the global space
-catch {eval unset [info globals __*]}
-debug {Global variables available:\
- \n [join [lsort [info globals]] "\n "]} 9
-debug {Global procedures available:\
- \n [join [lsort [info procs]] "\n "]} 9
-
-foreach dir [split $env(TESTSETS) ":"] {
- if {[string compare $dir $PWD] == 0} {
- foreach indexFile [locateFile tclIndex] {
- set indexDir [file dirname $indexFile]
- if {[lsearch -exact [split $auto_path] $indexDir] < 0} {
- set auto_path "$indexDir $auto_path"
- }
- }
- foreach indexFile [locateFile tclIndex lib] {
- set indexDir [file dirname $indexFile]
- if {[lsearch -exact [split $auto_path] $indexDir] < 0} {
- set auto_path "$indexDir $auto_path"
- }
- }
- } else {
- if {[file exists $dir/tclIndex]} {
- set auto_path "$dir $auto_path"
- }
- }
-}
-debug {auto_path has been intialize to:\n [join $auto_path "\n "]} 3
-verbose {TESTSETS: >$env(TESTSETS)<} 3
+++ /dev/null
-#
-# Procedures and other definitions for application:
-#
-# testSession
-#
-
-
-
-proc popQueue {args} {
- global szDefaultQueue
-
- if {[llength $args] == 1} {
- set Queue [lindex $args 0]
- if {[string compare [infoWhich $Queue] ""] == 0} {
- error "NOT a queue >$args<"
- } else {
- eval [concat [infoWhich $Queue] pop]
- }
- } else {
- if {[info exist szDefaultQueue]} {
- eval [concat $szDefaultQueue pop]
- } else {
- error "NO default queue"
- }
- }
-}
+++ /dev/null
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-#
-# set target variables only if needed.
-#
-global targetname
-global connectmode
-global env
-
-if ![info exists targetname] {
- if [info exists env(TARGETNAME)] {
- set targetname $env(TARGETNAME)
- } else {
- puts stderr "ERROR: Need a target name for the udi target."
- puts stderr " Use the --name option\n"
- exit 1
- }
-}
-
-# the default connect program to use
-if ![info exists connectmode] {
- set connectmode "mondfe"
- warning "Using default of $connectmode for target communication."
- if {[which mondfe] == 0} {
- perror "\"mondfe\" does not exist. Check your path."
- exit 1
- }
-}
-
-#
-# Connect to udi using mondfe
-#
-# HOSTNAME can be `iss' to talk to the simulator.
-# The result is the value of `spawn_id' or -1 for failure.
-#
-proc mondfe { hostname } {
- global shell_prompt
- global spawn_id
-
- set retries 0
- set result -1
-
- verbose "Attempting to connect to $hostname via mondfe."
- spawn mondfe -D -TIP $hostname
-
- expect {
- "$shell_prompt" {
- verbose "Got prompt"
- set result 0
- }
- "*server bind*failed: Address already in use*" {
- warning "Socket file already exists."
- incr retries
- if { $retries <= 2 } {
- continue -expect
- }
- }
- -indices -re ".*(UDIERROR\[^\r\n\]*)\[\r\n\]" {
- warning "$expect_out(1,string)"
- continue -expect
- }
- -indices -re ".*(DFEERROR\[^\r\n\]*)\[\r\n\]" {
- warning "$expect_out(1,string)"
- continue -expect
- }
- timeout {
- warning "Timed out trying to connect."
- set result -1
- incr retries
- if { $retries <= 2 } {
- send -i $spawn_id "\n"
- continue -expect
- }
- }
- }
-
- if { $result < 0 } {
- perror "Couldn't connect after $retries retries."
- return -1
- } else {
- return $spawn_id
- }
-}
-
-#
-# Downloads using the y (yank) command in mondfe
-#
-# SHELL_ID is the from the result of `mondfe'.
-# ARG is a full path name to the file to download.
-# Returns 1 if an error occured, 0 otherwise.
-#
-proc mondfe_download { shell_id arg } {
- global decimal ;# ??? What is this?
- global shell_prompt
-
- if ![file exists $arg] {
- perror "$arg doesn't exist."
- return 1
- }
-
- verbose "Downloading $arg." 2
- set result 1
- send -i $shell_id "y $arg\n"
- expect {
- -i $shell_id "y $arg*loading $arg*" {
- continue -expect
- }
- -i $shell_id -re "Loading *TEXT section from\[^\r\]*\r" {
- verbose -n "." 2
- continue -expect
- }
- -i $shell_id -re "Loaded *TEXT section from\[^\n\]*\n" {
- verbose " TEXT section loaded." 2
- continue -expect
- }
- -i $shell_id -re "Loading *LIT section from\[^\r\]*\r" {
- verbose -n "." 2
- continue -expect
- }
- -i $shell_id -re "Loaded *LIT section from\[^\n\]*\n" {
- verbose " LIT section loaded." 2
- continue -expect
- }
- -i $shell_id -re "Loading *DATA section from\[^\r\]*\r" {
- verbose -n "." 2
- continue -expect
- }
- -i $shell_id -re "Loaded *DATA section from\[^\n\]*\n" {
- verbose " DATA section loaded." 2
- continue -expect
- }
- -i $shell_id -re "Clearing *BSS section from\[^\r\]*\r" {
- verbose -n "." 2
- continue -expect
- }
- -i $shell_id -re ".*Cleared *BSS section from.*$shell_prompt$" {
- verbose " BSS section cleared." 2
- verbose "Downloaded $arg successfully." 2
- set result 0
- }
- -i $shell_id -re "DFEWARNING: $decimal : EMMAGIC: Bad COFF file magic number.*Command failed.*$shell_prompt$" {
- warning "Bad COFF file magic number"
- set result 1
- }
- -i $shell_id -re ".*Ignoring COMMENT section \($decimal bytes\).*$shell_prompt$" {
- verbose "Ignoring COMMENT section" 2
- verbose "Downloaded $arg successfully." 2
- set result 0
- }
- -i $shell_id timeout {
- perror "Timed out trying to download $arg."
- set result 1
- }
- }
-
-# FIXME: the following keeps the download from working
-# "Could not read COFF section" {
-# perror "Couldn't read COFF section."
-# set result 1
-# }
-
- if { $result && [info exists expect_out(buffer)] } {
- send_log $expect_out(buffer)
- }
- return $result
-}
-
-#
-# Exit the remote shell
-#
-proc exit_mondfe { shell_id } {
- send -i $shell_id "q\n"
- expect {
- -i $shell_id "Goodbye." {
- verbose "Exited mondfe $shell_id"
- }
- timeout {
- warning "mondfe didn't exit cleanly"
- }
- }
-
- catch "close -i $shell_id"
- return 0
-}
-
-#
-# Exit the remote shell
-#
-proc exit_montip { shell_id } {
- verbose "exiting montip $shell_id"
-
- catch "close -i $shell_id"
- return 0
-}
+++ /dev/null
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-#
-# Run a utility and test the result.
-#
-# Parameters:
-# First one is the command
-# Second one is command arguments
-# Third one is the file name
-# Fourth one is the regexp style pattern to match for a PASS
-#
-# Returns:
-# 1 if the test failed,
-# 0 if the test passes,
-# -1 if there was an internal error.
-#
-
-proc util_test { args } {
- global verbose
- # get the parameters
- set cmd [lindex $args 0]
- verbose "Utility to execute is $cmd" 2
- set cmd_arg [lindex $args 1]
- verbose "Command line arguments are $cmd_arg" 2
- set file [lindex $args 2]
- verbose "The file name to use is $file" 2
- set pattern [lindex $args 3]
- verbose "The pattern to match is \"$pattern\"" 2
-
- if [info exists file] {
- if ![string match "" $file] {
- if ![file exists $file] {
- perror "$file doesn't exist"
- return -1
- }
- }
- }
-
- # Run the utility to be tested and analyze the results.
-
- set comp_output [util_start $cmd $cmd_arg $file]
-
- verbose "Output is \"$comp_output\"" 2
- verbose "Pattern is \"$pattern\"" 2
-
- if [regexp "$pattern" $comp_output] {
- verbose "Pattern matches." 2
- return 0
- }
-
- verbose "Pattern does not match." 2
- return 1
-}
-
-#
-# Run the utility
-#
-# Return NULL or the output.
-#
-
-proc util_start { args } {
- global verbose
- set cmd [lindex $args 0]
- set cmd_arg [lindex $args 1]
- set file [lindex $args 2]
-
- if {[which $cmd] == 0} {
- perror "Can't find $cmd"
- return ""
- }
-
- if { $verbose > 0 } {
- verbose "Spawning \"$cmd $cmd_arg $file\""
- } else {
- send_log "Spawning \"$cmd $cmd_arg $file\"\n"
- }
- catch "exec $cmd $cmd_arg $file" comp_output
- if ![string match "" $comp_output] {
- send_log "$comp_output\n"
- }
- return $comp_output
-}
-
-#
-# add some basic error trapping. These mostly catch programming error's
-# within the tests themselves
-#
-expect_before {
- buffer_full { perror "Internal buffer is full" }
- "can't open 'nmtest'" { perror "Can't open test file" }
-}
+++ /dev/null
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-#
-# Most of the procedures found here mimic their unix counter-part.
-# This file is sourced by runtest.exp, so they are usable by any test case.
-#
-
-#
-# Gets the directories in a directory
-# args: the first is the dir to look in, the next
-# is the pattern to match. It
-# defaults to *. Patterns are csh style
-# globbing rules
-# returns: a list of dirs or NULL
-#
-proc getdirs { args } {
- set path [lindex $args 0]
- if { [llength $args] > 1} {
- set pattern [lindex $args 1]
- } else {
- set pattern "*"
- }
- verbose "Looking in ${path} for directories that match \"${pattern}\"" 3
- catch "glob ${path}/${pattern}" tmp
- if { ${tmp} != "" } {
- foreach i ${tmp} {
- if [file isdirectory $i] {
- switch -- "[file tail $i]" {
- "testsuite" -
- "config" -
- "lib" -
- "CVS" -
- "RCS" -
- "SCCS" {
- verbose "Ignoring directory [file tail $i]" 3
- continue
- }
- default {
- if [file readable $i] {
- verbose "Found directory [file tail $i]" 3
- lappend dirs $i
- }
- }
- }
- }
- }
- } else {
- perror "$tmp"
- return ""
- }
-
- if ![info exists dirs] {
- return ""
- } else {
- return $dirs
- }
-}
-
-#
-# Finds all the files recursively
-# rootdir - this is the directory to start the search
-# from. This is and all subdirectories are search for
-# filenames. Directory names are not included in the
-# list, but the filenames have path information.
-# pattern - this is the pattern to match. Patterns are csh style
-# globbing rules.
-# returns: a list or a NULL.
-#
-proc find { rootdir pattern } {
- # first find all the directories
- set dirs "$rootdir "
- while 1 {
- set tmp $rootdir
- set rootdir ""
- if [string match "" $tmp] {
- break
- }
- foreach i $tmp {
- set j [getdirs $i]
- if ![string match "" $j] {
- append dirs "$j "
- set rootdir $j
- unset j
- } else {
- set rootdir ""
- }
- }
- set tmp ""
- }
-
- # find all the files that match the pattern
- foreach i $dirs {
- verbose "Looking in $i" 3
- set tmp [glob -nocomplain $i/$pattern]
- if { [llength $tmp] != 0 } {
- foreach j $tmp {
- if ![file isdirectory $j] {
- lappend files $j
- verbose "Adding $j to file list" 3
- }
- }
- }
- }
-
- if ![info exists files] {
- lappend files ""
- }
- return $files
-}
-
-#
-# Search the path for a file. This is basically a version
-# of the BSD-unix which utility. This procedure depends on
-# the shell environment variable $PATH. It returns 0 if $PATH
-# does not exist or the binary is not in the path. If the
-# binary is in the path, it returns the full path to the binary.
-#
-proc which { file } {
- global env
-
- # strip off any extraneous arguments (like flags to the compiler)
- set file [lindex $file 0]
-
- # if it exists then the path must be OK
- # ??? What if $file has no path and "." isn't in $PATH?
- if [file exists $file] {
- return $file
- }
- if [info exists env(PATH)] {
- set path [split $env(PATH) ":"]
- } else {
- return 0
- }
-
- foreach i $path {
- verbose "Checking against $i" 3
- if [file exists $i/$file] {
- if [file executable $i/$file] {
- return $i/$file
- } else {
- warning "$i/$file exists but is not an executable"
- }
- }
- }
- # not in path
- return 0
-}
-
-#
-# Looks for a string in a file.
-# return:list of lines that matched or NULL if none match.
-# args: first arg is the filename,
-# second is the pattern,
-# third are any options.
-# Options: line - puts line numbers of match in list
-#
-proc grep { args } {
-
- set file [lindex $args 0]
- set pattern [lindex $args 1]
-
- verbose "Grepping $file for the pattern \"$pattern\"" 3
-
- set argc [llength $args]
- if { $argc > 2 } {
- for { set i 2 } { $i < $argc } { incr i } {
- append options [lindex $args $i]
- append options " "
- }
- } else {
- set options ""
- }
-
- set i 0
- set fd [open $file r]
- while { [gets $fd cur_line]>=0 } {
- incr i
- if [regexp -- "$pattern" $cur_line match] {
- if ![string match "" $options] {
- foreach opt $options {
- case $opt in {
- "line" {
- lappend grep_out [concat $i $match]
- }
- }
- }
- } else {
- lappend grep_out $match
- }
- }
- }
- close $fd
- unset fd
- unset i
- if ![info exists grep_out] {
- set grep_out ""
- }
- return $grep_out
-}
-
-#
-# Remove elements based on patterns. elements are delimited by spaces.
-# pattern is the pattern to look for using glob style matching
-# list is the list to check against
-# returns the new list
-#
-proc prune { list pattern } {
- foreach i $list {
- verbose "Checking pattern \"$pattern\" against $i" 3
- if ![string match $pattern $i] {
- lappend tmp $i
- } else {
- verbose "Removing element $i from list" 3
- }
- }
- return $tmp
-}
-
-#
-# Attempt to kill a process that you started
-#
-proc slay { name } {
- set in [open [concat "|ps"] r]
- while {[gets $in line]>-1} {
- if ![string match "*expect*slay*" $line] {
- if [string match "*$name*" $line] {
- set pid [lindex $line 0]
- catch "exec kill -9 $pid]"
- verbose "Killing $name, pid = $pid\n"
- }
- }
- }
- close $in
-}
-
-#
-# Convert a relative path to an absolute one
-#
-proc absolute { path } {
- if [string match "." $path] {
- return [pwd]
- }
-
- set basedir [pwd]
- cd $path
- set path [pwd]
- cd $basedir
- return $path
-}
-
-#
-# Source a file and trap any real errors. This ignores extraneous
-# output. returns a 1 if there was an error, otherwise it returns 0.
-#
-proc psource { file } {
- global errorInfo
- global errorCode
-
- unset errorInfo
- if [file exists $file] {
- catch "source $file"
- if [info exists errorInfo] {
- send_error "ERROR: errors in $file\n"
- send_error "$errorInfo"
- return 1
- }
- }
- return 0
-}
-
-#
-# Check if a testcase should be run or not
-#
-# RUNTESTS is a copy of global `runtests'.
-#
-# This proc hides the details of global `runtests' from the test scripts, and
-# implements uniform handling of "script arguments" where those arguments are
-# file names (ie: the "foo" in make check RUNTESTFLAGS="bar.exp=foo").
-# "glob" style expressions are supported as well as multiple files (with
-# spaces between them).
-# Eg: RUNTESTFLAGS="bar.exp=foo1.c foo2.c foo3*.c bar*.c"
-#
-proc runtest_file_p { runtests testcase } {
- if [string length [lindex $runtests 1]] {
- set testcase [file tail $testcase]
- foreach ptn [lindex $runtests 1] {
- if [string match $ptn $testcase] {
- return 1
- }
- }
- return 0
- }
- return 1
-}
-
-#
-# Delete various system verbosities from TEXT on SYSTEM
-#
-# An example is:
-# ld.so: warning: /usr/lib/libc.so.1.8.1 has older revision than expected 9
-#
-# SYSTEM is typical $target_triplet or $host_triplet.
-#
-# This is useful when trying to do pattern matches on program output.
-# Sites with particularily verbose os's may wish to override this in site.exp.
-#
-# We get loaded after site.exp so only define this if not already defined.
-#
-
-if { [info procs prune_system_crud] == "" } {
- proc prune_system_crud { system text } {
- # This is from sun4's. Do it for all machines for now.
- # The "\\1" is to try to preserve a "\n" but only if necessary.
- regsub -all "(^|\n)(ld.so: warning:\[^\n\]*\n?)+" $text "\\1" text
-
- # This happens when compiling on Alpha OSF/1 with cc -g -O.
- regsub -all "(^|\n)(\n*uopt: Warning: file not optimized; use -g3 if both optimization and debug wanted\n?)+" $text "\\1" text
-
- # This happens when compiling on Alpha OSF using gas.
- regsub -all "(^|\n)(/usr/ucb/ld:\nWarning: Linking some objects which contain exception information sections\n\tand some which do not. This may cause fatal runtime exception handling\n\tproblems\[^\n\]*\n?)+" $text "\\1" text
-
- # This happens on SunOS with cc -g -O.
- regsub -all "(^|\n)(cc: Warning: -O conflicts with -g. -O turned off.\n?)+" $text "\\1" text
-
- # This happens when using g++ on a DWARF system.
- regsub -all "(^|\n)(cc1plus: warning: -g option not supported for C\\+\\+ on systems using the DWARF debugging format\n?)+" $text "\\1" text
-
- # It might be tempting to get carried away and delete blank lines, etc.
- # Just delete *exactly* what we're ask to, and that's it.
- return $text
- }
-}
-
-#
-# Compares two files line-by-line
-# returns 1 it the files match,
-# returns 0 if there was a file error,
-# returns -1 if they didn't match.
-#
-proc diff { file_1 file_2 } {
- set eof -1
- set differences 0
-
- if [file exists ${file_1}] {
- set file_a [open ${file_1} r]
- } else {
- warning "${file_1} doesn't exist"
- return 0
- }
-
- if [file exists ${file_2}] {
- set file_b [open ${file_2} r]
- } else {
- warning "${file_2} doesn't exist"
- return 0
- }
-
- verbose "# Diff'ing: ${file_1} ${file_2}\n" 1
-
- while { [gets ${file_a} line] != ${eof} } {
- if [regexp "^#.*$" ${line}] {
- continue
- } else {
- lappend list_a ${line}
- }
- }
- close ${file_a}
-
- while { [gets ${file_b} line] != ${eof} } {
- if [regexp "^#.*$" ${line}] {
- continue
- } else {
- lappend list_b ${line}
- }
- }
- close ${file_b}
- for { set i 0 } { $i < [llength $list_a] } { incr i } {
- set line_a [lindex ${list_a} ${i}]
- set line_b [lindex ${list_b} ${i}]
-
-# verbose "\t${file_1}: ${i}: ${line_a}\n" 3
-# verbose "\t${file_2}: ${i}: ${line_b}\n" 3
- if [string compare ${line_a} ${line_b}] {
- verbose "line #${i}\n" 2
- verbose "\< ${line_a}\n" 2
- verbose "\> ${line_b}\n" 2
-
- send_log "line #${i}\n"
- send_log "\< ${line_a}\n"
- send_log "\> ${line_b}\n"
-
- set differences -1
- }
- }
-
- if { [llength ${list_a}] != [llength ${list_b}] } {
- verbose "Files not the same" 2
- set differences -1
- } else {
- verbose "Files are the same" 2
- set differences 1
- }
- return ${differences}
-}
-
-#
-# Set an environment variable
-#
-proc setenv { var val } {
- global env
-
- set env($var) $val
-}
-
-#
-# Unset an environment variable
-#
-proc unsetenv { var } {
- global env
- unset env($var)
-}
-
-#
-# Get a value from an environment variable
-#
-proc getenv { var } {
- global env
-
- if [info exists env($var)] {
- return $env($var)
- } else {
- return ""
- }
-}
-
+++ /dev/null
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-# these just need to be initialized
-# FIXME: The usage of `shell_id' as a global here seems wrong. Most targets
-# have it local to the file of our caller. See for example udi.exp.
-set shell_id 0
-
-#
-# set default values
-#
-
-global env
-if ![info exists env(SPECTRA)] {
- perror "SPECTRA environment variable is not set."
- exit 1
-} else {
- set SPECTRA $env(SPECTRA)
- append CFLAGS " -I $SPECTRA/target/include"
-}
-
-# the hostname of the target board
-
-global targetname
-if ![info exists targetname] {
- puts stderr "ERROR: Need a target name for Spectra."
- puts stderr " Use the --target option\n"
- exit 1
-}
-
-# the default connect program to use
-global connectmode
-if ![info exists connectmode] {
- set connectmode "xsh"
- warning "Using default of $connectmode for target communication."
-}
-
-#
-# Connect to Spectra (VTRX) using xsh
-#
-proc xsh { hostname } {
- global verbose
- global hex
- global connectmode
- global shell_prompt
- global spawn_id
- global shell_id
- global spawn_id
- global env
- global target_triplet
-
- set retries 0
- set result 0
- if {[which xsh] != 0} {
- spawn xsh
- } else {
- warning "Can't find xsh in path"
- return
- }
-
- set shell_id $spawn_id
-
- # start the shell
- expect {
- "*Spectra Cross-Development Shell version*$shell_prompt" {
- verbose "Got prompt"
- set result 0
- }
- timeout {
- warning "Timed out trying to connect."
- set result -1
- incr retries
- if { $retries <= 2 } {
- exp_continue
- }
- }
- }
-
- # connect to the shell
- set retries 0
- send "connect $hostname\n"
- expect {
- "connect $hostname*$hostname connected \(non-os mode\)*\n" {
- set shell_prompt "$hostname> "
- verbose "Connected to $hostname"
- }
- "*connect: not attached*" {
- warning "Couldn't attach target"
- set result -1
- }
- -re ".* reset on target.*$" {
- send_user "Spectra was reset\n"
- exp_continue
- }
- -re "\[0-9A-Fa-f\]+\[ 0x\]+\[0-9A-Fa-f\]+.*$" {
- exp_continue
- }
- "$hostname> " {
- #send "\n"
- }
- timeout {
- warning "Timed out trying to connect after $expect_out(seconds) seconds."
- set result -1
- incr retries
- if { $retries <= 2 } {
- exp_continue
- }
- }
- }
-
- send "\n\n\n"
- expect {
- "*$hostname*$hostname" {
- verbose "Cleared reset messages" 1
- }
- timeout {
- warning "Couldn't clear reset messages"
- set result 1
- }
- }
-
- # load to operating system
- set timeout 20
- set retries 0
- if {[xsh_load $env(SPECTRA)/${target_triplet}-os.o {-e sys_start_crt0}]!=0} {
- perror "Couldn't load Spectra into target"
- return -1
- }
-
- set timeout 10
- # start the OS running
- set retries 0
- send "go\n"
- expect {
- -re ".*Multithreading on target darkstar.*$" {
- verbose "Spectra has been started..." 1
- set result 0
- }
- -re ".*reset on target.*$" {
- verbose "Spectra was reset"
- exp_continue
- }
- -re "\[0-9A-Fa-f\]+\[ 0x\]+\[0-9A-Fa-f\]+.*$" {
- #send "\n"
- exp_continue
- }
- -re "go\n" { exp_continue }
- "$shell_prompt" { exp_continue }
- timeout {
- perror "Spectra wouldn't start"
- set result -1
- incr retries
- if { $retries <= 2 } {
- send "go\r"
- exp_continue
- }
- }
- }
-
- if { $result < 0 } {
- perror "Couldn't connect after $retries retries.\n"
- return -1
- } else {
- return $spawn_id
- }
-}
-
-#
-# Downloads using the load command in Spectra
-# arg - is a full path name to the file to download
-# returns 1 if a spectra error occured,
-# -1 if an internal error occured,
-# 0 otherwise.
-#
-proc xsh_load { args } {
- global verbose
- global shell_id
- global decimal
- global hex
- global shell_prompt
- global expect_out
-
- set result 1
- set retries 0
-
- if { [llength $args] == 1 } {
- set opts ""
- } else {
- set opts [lindex $args 1]
- }
- set file [lindex $args 0]
-
- if ![file exists $file] {
- perror "$file doesn't exist."
- return 1
- }
-
- verbose "Downloading $file..."
-
- send -i $shell_id "load $opts $file\r"
- set force 0
- expect {
- -i $shell_id -re "\[0-9A-Fa-f\]+\[ 0x\]+\[0-9A-Fa-f\]+\r\n" {
- set timeout 1
- send "dout\n"
- while $force<2 {
- expect {
- "dout*undefined kernel symbol*$shell_prompt" {
- verbose "Attempted to flush I/O buffers" 1
- }
- timout {
- incr force
- flush stdout
- }
- }
- }
- set timeout 20
- exp_continue
- }
- -i $shell_id "load $opts $file*\r" {
- verbose "Loading a.out..."
- exp_continue
- }
- -i $shell_id "Warm reset on target*\n" {
- verbose "Spectra did a warm reset"
- exp_continue
- }
- -i $shell_id "Cold reset on target*\n" {
- verbose "Spectra did a cold reset"
- exp_continue
- }
- -i $shell_id "loading a.out*\r" {
- verbose "Loading a.out..."
- exp_continue
- }
- -i $shell_id "reading symbols*\r" {
- verbose "Reading symbols..."
- exp_continue
- }
- -i $shell_id "defining symbols*\r" {
- verbose "defining symbols..."
- exp_continue
- }
- -i $shell_id "*loading image*\r" {
- verbose "Loading image..."
- exp_continue
- }
- -i $shell_id -re ".*bytes loaded:.*$decimal.*$" {
- verbose "$expect_out(buffer)"
- exp_continue
- }
- -i $shell_id "*loading done*\r" {
- verbose "Loading done..."
- exp_continue
- }
- -i $shell_id "*setting PC*\r" {
- verbose "Setting PC..."
- exp_continue
- }
- -i $shell_id "*resolving symbols*\r" {
- verbose "Resolving symbols..."
- exp_continue
- }
- -i $shell_id -re ".*load module id = $decimal.*$" {
- verbose ""
- }
- }
- -i $shell_id -re ".*load: undefined symbols.*$" {
- perror "undefined symbols, make sure os is loaded and running"
- set result -1
- }
- -i $shell_id "$shell_prompt" {
- set result 0
- exp_continue
- }
- -i $shell_id "load: no default target" {
- perror "default target isn't set"
- return -1
- }
- -i $shell_id timeout {
- perror "Timed out trying to download after $expect_out(seconds) seconds."
- incr retries
- set result 1
- if { $retries <= 2 } {
- exp_continue
- }
- }
- }
-
- set timeout 10
- if [info exists expect_out(buffer)] {
- send_log $expect_out(buffer)
- }
- return $result
-}
-
-#
-# Exit the remote shell
-#
-proc xsh_exit { shell_id } {
- global verbose
- global connectmode
- global targetname
- global shell_prompt
- global shell_id
-
- send -i $shell_id "exit\n"
-
- verbose "Exiting shell."
- set shell_id 0
- return 0
-}
-
-
-
-
+++ /dev/null
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-#
-# set target variables only if needed.
-#
-global targetname
-global connectmode
-global env
-global checktask
-
-if ![info exists targetname] {
- if [info exists env(TARGETNAME)] {
- set targetname $env(TARGETNAME)
- } else {
- puts stderr "ERROR: Need a target name for the vxworks board."
- puts stderr " Use the --name option\n"
- exit 1
- }
-}
-
-# The default connect program to use.
-if ![info exists connectmode] {
- set connectmode "telnet"
- warning "Using default of $connectmode for target communication."
-}
-
-if ![info exists checktask] {
- set checktask "fp"
-}
-
-#
-# Compute a path to vxworks' value for it
-#
-# We use a default ftp device called "filesys" to load files from.
-# This way it works without NFS.
-# This proc may be overridden by the user. The typical thing to do is use
-# a different name for the device, but it might also return a different path
-# to PROG.
-#
-# ??? This is experimental. This kind of thing can't be specified on the
-# command line, but neither can specifying the kinds of transformations that
-# one might want to do without actually passing tcl code at which point it
-# makes just as much sense to stick it in a config file.
-#
-if { [info procs vxworks_transform_path] == "" } {
- proc vxworks_transform_path { prog } {
- return "filesys:$prog"
- }
-}
-
-#
-# Load a file into vxworks
-#
-# The result is:
-# 0 - success
-# 1 - failed (eg: link failed so testcase should fail)
-# -1 - unresolved (eg: timeout, bad passwd)
-# -2 - unsupported (not used)
-# -3 - untested (not used)
-#
-proc vxworks_ld { shell_id prog } {
- global shell_prompt
- global expect_out
- global logname
- global passwd
- global decimal hex
-
- set timeout 100 ;# for this call only
- set result -7 ;# -7 is a local value meaning "not done"
- set tries 0
- set maxtries 3
-
- set prog [vxworks_transform_path $prog]
-
- if { $passwd != "" } {
- send -i $shell_id "iam \"$logname\",\"$passwd\"\r"
- } else {
- send -i $shell_id "iam \"$logname\"\r"
- }
- expect {
- -i $shell_id "iam*value = 0 = 0x0*$shell_prompt" {
- verbose "Set default user." 2
- }
- -i $shell_id timeout {
- # ??? This is really an error. It's not clear whether `perror'
- # or `warning' should be used here. There are *lots* of other
- # cases like this.
- perror "Couldn't set default user."
- set result -1
- }
- }
-
- # We always want to exit the program via the code at the end.
- # If the load fails we want `expect_out' stored in the log and this
- # saves duplicating that code.
-
- while { $result == -7 } {
- verbose "Loading $prog into vxworks."
- send -i $shell_id "ld < $prog\r"
- incr tries
- expect {
- -i $shell_id "Login incorrect." {
- if { $tries == $maxtries } {
- perror "Login failed."
- set result -1
- break
- }
- if [string match "" $passwd] {
- stty -echo
- warning "Login failed for default user"
- send_user "Type in password (for $logname) please: "
- expect_user -re "(.*)\n"
- send_user "\n"
- set passwd "$expect_out(1,string)"
- stty echo
- }
- send -i $shell_id "iam \"$logname\",\"$passwd\"\r"
- expect {
- -i $shell_id "iam*value = 0 = 0x0*$shell_prompt " {
- verbose "Set new user and password" 2
- }
- -i $shell_id timeout {
- perror "Couldn't set user and password (timed out)."
- set result -1
- }
- }
- }
- -i $shell_id -re "USER.*command not understood" {
- perror "Need to set the user and password."
- set result -1
- }
- -i $shell_id -re "ld <.*undefined symbol:.*$shell_prompt $" {
- # This is an error in the testcase, don't call perror.
- warning "Undefined symbol, $prog not loaded."
- set result 1
- }
- -i $shell_id -re "ld <.*can't open input.*$shell_prompt $" {
- perror "Can't access $prog."
- set result -1
- }
- -i $shell_id -re "ld <.*value = ${decimal} = ${hex}.*$shell_prompt $" {
- verbose "Loaded $prog into vxworks."
- set result 0
- }
- -i $shell_id -re "ld <\[^\r\]*\r(.*)$shell_prompt $" {
- warning "Load failed: $expect_out(1,string)"
- set result -1
- }
- -i $shell_id timeout {
- warning "Timed out trying load $prog."
- set result -1
- }
- }
- }
-
- if { $result && [info exists expect_out(buffer)] } {
- send_log "$expect_out(buffer)"
- }
- return $result
-}
-
-#
-# Start a thread (process) executing
-#
-# The result is:
-# 0 - success
-# 1 - failed (eg: testcase aborted)
-# -1 - unresolved (eg: timeout)
-# -2 - unsupported (not used)
-# -3 - untested (not used)
-#
-proc vxworks_spawn { shell_id function } {
- global shell_prompt
- global checktask
-
- # There isn't a command to wait for a thread to finish, so we have to keep
- # polling. Bummer.
-
- set timeout 20 ;# for this call only
-
- send -i $shell_id "sp $function\r"
- expect {
- -i $shell_id -re "sp $function.*task spawned:.*name = (\[a-z0-9\]+).*value = (\[0-9\]+).*$shell_prompt $" {
- set name $expect_out(1,string)
- set value $expect_out(2,string)
- verbose "$function running, name $name, value $value"
- set tries 0
- set maxtries 100 ;# Don't hang on testcases with infinite loops.
- set result -7 ;# "not done"
- while { $result == -7 } {
- # Get the task's frame pointer.
- # VxWorks will return -1 if the task isn't running.
- send -i $shell_id "$checktask \"$name\"\r"
- incr tries
- expect {
- -i $shell_id -re "task $value - aborted.*$shell_prompt $" {
- # FIXME: It's not clear we'll ever get here.
- verbose "$function aborted"
- set result 1
- }
- -i $shell_id -re ".*AbOrT.*$shell_prompt $" {
- # This requires support from the environment to
- # redefine abort() to print this.
- verbose "$function aborted"
- set result 1
- }
- # This is here to try to cope with apparently flaky h/w.
- -i $shell_id -re ".*Bus Error.*$" {
- # This is potentially an error in the testcase,
- # don't call perror.
- warning "Bus Error."
- # Delete the task (it's still around).
- send -i $shell_id "td $name\r"
- set result 1
- }
- -i $shell_id -re "value = \[0-9\]+.*$shell_prompt $" {
- # Task is still running.
- if { $tries == $maxtries } {
- warning "$function started, won't stop"
- set result -1
- } else {
- catch "exec sleep 1"
- }
- }
- -i $shell_id -re "value = -1.*$shell_prompt $" {
- # Task is no longer running.
- set result 0
- }
- -i $shell_id timeout {
- warning "$function started, can't determine status (timed out)"
- set result -1
- }
- }
- }
- }
- -i $shell_id timeout {
- warning "Couldn't run $function (timed out)"
- set result -1
- }
- }
-
- if { $result && [info exists expect_out(buffer)] } {
- send_log "$expect_out(buffer)"
- }
- return $result
-}
+++ /dev/null
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Last modified: 1994-03-25
-# Public domain
-
-errstatus=0
-
-for file in ${1+"$@"} ; do
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
- shift
-
- pathcomp=
- for d in ${1+"$@"} ; do
- pathcomp="$pathcomp$d"
- case "$pathcomp" in
- -* ) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp" 1>&2
- mkdir "$pathcomp" || errstatus=$?
- fi
-
- pathcomp="$pathcomp/"
- done
-done
-
-exit $errstatus
-
-# mkinstalldirs ends here
+++ /dev/null
-#!/bin/sh
-#
-# runtest -- basically all this script does is find the proper expect shell
-# and then
-# run BlueGnu. <neurdenburgj@acm.org>
-#
-
-#
-# Get the execution path to this script and the current directory.
-#
-execpath=`echo ${0-.} | sed -e 's@/[^/]*$@@'`
-# rootme=`pwd`
-
-#
-# get the name by which bluegnu was invoked and extract the config triplet
-#
-bluegnu=`echo ${0-.} | sed -e 's@^.*/@@'`
-target=`echo $bluegnu | sed -e 's/-runtest$//'`
-if [ "$target" != runtest ] ; then
- target="--target ${target}"
-else
- target=""
-fi
-
-#
-# Find the right expect binary to use. If a variable EXPECT exists,
-# it takes precedence over all other tests. Otherwise look for a freshly
-# built one, and then use one in the path.
-#
-if [ x"$EXPECT" != x ] ; then
- expectbin=$EXPECT
-else
- if [ -x "$execpath/expect" ] ; then
- expectbin=$execpath/expect
- else
- expectbin=expect
- fi
-fi
-
-# just to be safe...
-if [ -z "$expectbin" ]; then
- echo "ERROR: No expect shell found"
- exit 1
-fi
-
-#
-# Extract a few options from the option list.
-#
-verbose=0
-debug=""
-for a in "$@" ; do
- case $a in
- -v|--v|-verb*|--verb*) verbose=`expr $verbose + 1`;;
- -D0|--D0) debug="-D 0" ;;
- -D1|--D1) debug="-D 1" ;;
- esac
-done
-
-if expr $verbose \> 0 > /dev/null ; then
- echo Expect binary is $expectbin
-fi
-
-#
-# find runtest.exp. First we look in it's installed location, otherwise
-# start if from the source tree.
-#
-for i in $execpath/../lib/bluegnu $execpath ; do
- if expr $verbose \> 1 > /dev/null ; then
- echo Looking for $i/runtest.exp.
- fi
- if [ -f $i/runtest.exp ] ; then
- runpath=$i
- if expr $verbose \> 0 > /dev/null ; then
- echo Using $i/runtest.exp as main test driver
- fi
- fi
-done
-# check for an environment variable
-if [ x"$BLUEGNULIBS" != x ] ; then
- runpath=$BLUEGNULIBS
- if expr $verbose \> 0 > /dev/null ; then
- echo Using $BLUEGNULIBS/runtest.exp as main test driver
- fi
-fi
-if [ x"$runpath" = x ] ; then
- echo "ERROR: runtest.exp does not exist."
- exit 1
-fi
-
-exec $expectbin $debug -- $runpath/runtest.exp $target ${1+"$@"}
+++ /dev/null
-# Test Framework Driver
-# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-# Copyright (C) 1998 jotOmega dsc, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-#
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-# and modified by Jan-Willem Neurdenburg. (neurdenburgj@acm.org)
-
-set frame_version 1.3
-if ![info exists argv0] {
- send_error "Must use a version of Expect greater than 5.0\n"
- exit 1
-}
-
-#
-# trap some signals so we know whats happening. These definitions are only
-# temporary until we read in the library stuff
-#
-trap { send_user "\nterminated\n"; exit 1 } SIGTERM
-trap { send_user "\ninterrupted by user\n"; exit 1 } SIGINT
-trap { send_user "\nsegmentation violation\n"; exit 1 } SIGSEGV
-trap { send_user "\nsigquit\n"; exit 1 } SIGQUIT
-
-#
-# Initialize a few global variables used by all tests.
-# `reset_vars' resets several of these, we define them here to document their
-# existence. In fact, it would be nice if all globals used by some interface
-# of bluegnu proper were documented here.
-#
-# Keep these all lowercase. Interface variables used by the various
-# testsuites (eg: the gcc testsuite) should be in all capitals
-# (eg: TORTURE_OPTIONS).
-#
-set mail_logs 0 ;# flag for mailing of summary and diff logs
-set psum_file "latest" ;# file name of previous summary to diff against
-set testcnt 0 ;# number of testcases that ran
-set passcnt 0 ;# number of testcases that passed
-set failcnt 0 ;# number of testcases that failed
-set xfailcnt 0 ;# number of testcases expected to fail which did
-set xpasscnt 0 ;# number of testcases that passed unexpectedly
-set warncnt 0 ;# number of warnings
-set errcnt 0 ;# number of errors
-set unsupportedcnt 0 ;# number of testcases that can't run
-set unresolvedcnt 0 ;# number of testcases whose result is unknown
-set untestedcnt 0 ;# number of untested testcases
-set exit_status 0 ;# exit code returned by this program
-set xfail_flag 0
-set xfail_prms 0
-set sum_file "" ;# name of the file that contains the summary log
-set base_dir "" ;# the current working directory
-set logname "" ;# the users login name
-set passwd ""
-set prms_id 0 ;# GNATS prms id number
-set bug_id 0 ;# optional bug id number
-set dir "" ;# temp variable for directory names
-set srcdir "." ;# source directory containing the test suite
-set ignoretests "" ;# list of tests to not execute
-set objdir "." ;# directory where test case binaries live
-set makevars "" ;# FIXME: Is this used anywhere?
-set reboot 0
-set configfile site.exp ;# (local to this file)
-set multipass "" ;# list of passes and var settings
-set target_abbrev "unix" ;# environment (unix, sim, vx, etc.).
-set errno ""; ;#
-#
-# set communication parameters here
-#
-set netport ""
-set targetname ""
-set connectmode ""
-set serialport ""
-set baud ""
-#
-# These describe the host and target environments.
-#
-set build_triplet "" ;# type of architecture to run tests on
-set build_os "" ;# type of os the tests are running on
-set build_vendor "" ;# vendor name of the OS or workstation the test are running on
-set build_cpu "" ;# type of the cpu tests are running on
-set host_triplet "" ;# type of architecture to run tests on, sometimes remotely
-set host_os "" ;# type of os the tests are running on
-set host_vendor "" ;# vendor name of the OS or workstation the test are running on
-set host_cpu "" ;# type of the cpu tests are running on
-set target_triplet "" ;# type of architecture to run tests on, final remote
-set target_os "" ;# type of os the tests are running on
-set target_vendor "" ;# vendor name of the OS or workstation the test are running on
-set target_cpu "" ;# type of the cpu tests are running on
-set target_alias "" ;# standard abbreviation of target
-
-#
-# some convenience abbreviations
-#
-if ![info exists hex] {
- set hex "0x\[0-9A-Fa-f\]+"
-}
-if ![info exists decimal] {
- set decimal "\[0-9\]+"
-}
-
-#
-# set the base dir (current working directory)
-#
-set base_dir [pwd]
-
-#
-# These are tested in case they are not initialized in $configfile. They are
-# tested here instead of the init module so they can be overridden by command
-# line options.
-#
-if ![info exists all_flag] {
- set all_flag 0
-}
-if ![info exists binpath] {
- set binpath ""
-}
-if ![info exists debug] {
- set debug 0
-}
-if ![info exists options] {
- set options ""
-}
-if ![info exists outdir] {
- set outdir "."
-}
-if ![info exists reboot] {
- set reboot 1
-}
-if ![info exists all_runtests] {
- # FIXME: Can we create an empty array?
- # we don't have to (JWN 20 March 1998)
- #set all_runtests(empty) ""
-}
-if ![info exists tracelevel] {
- set tracelevel 0
-}
-if ![info exists verbose] {
- set verbose 0
-}
-
-#
-# verbose [-n] [-log] [--] message [level]
-#
-# Print MESSAGE if the verbose level is >= LEVEL.
-# The default value of LEVEL is 1.
-# "-n" says to not print a trailing newline.
-# "-log" says to add the text to the log file even if it won't be printed.
-# Note that the apparent behaviour of `send_user' dictates that if the message
-# is printed it is also added to the log file.
-# Use "--" if MESSAGE begins with "-".
-#
-# This is defined here rather than in framework.exp so we can use it
-# while still loading in the support files.
-#
-proc verbose { args } {
- global verbose
- set newline 1
- set logfile 0
-
- set i 0
- if { [string index [lindex $args 0] 0] == "-" } {
- for { set i 0 } { $i < [llength $args] } { incr i } {
- if { [lindex $args $i] == "--" } {
- incr i
- break
- } elseif { [lindex $args $i] == "-n" } {
- set newline 0
- } elseif { [lindex $args $i] == "-log" } {
- set logfile 1
- } elseif { [string index [lindex $args $i] 0] == "-" } {
- clone_output "ERROR: verbose: illegal argument: [lindex $args $i]"
- return
- } else {
- break
- }
- }
- if { [llength $args] == $i } {
- clone_output "ERROR: verbose: nothing to print"
- return
- }
- }
-
- set level 1
- if { [llength $args] > $i + 1 } {
- set level [lindex $args [expr $i+1]]
- }
- set message [lindex $args $i]
-
- if { $verbose >= $level } {
- # There is no need for the "--" argument here, but play it safe.
- # We assume send_user also sends the text to the log file (which
- # appears to be the case though the docs aren't clear on this).
- if { $newline } {
- send_user -- "$message\n"
- } else {
- send_user -- "$message"
- }
- } elseif { $logfile } {
- if { $newline } {
- send_log "$message\n"
- } else {
- send_log "$message"
- }
- }
-}
-
-#
-# Transform a tool name to get the installed name.
-# target_triplet is the canonical target name. target_alias is the
-# target name used when configure was run.
-#
-proc transform { name } {
- global target_triplet
- global target_alias
- global host_triplet
-
- if [string match $target_triplet $host_triplet] {
- return $name
- }
- if [string match "native" $target_triplet] {
- return $name
- }
- if [string match "" $target_triplet] {
- return $name
- } else {
- set tmp ${target_alias}-${name}
- verbose "Transforming $name to $tmp"
- return $tmp
- }
-}
-
-#
-# findfile arg0 [arg1] [arg2]
-#
-# Find a file and see if it exists. If you only care about the false
-# condition, then you'll need to pass a null "" for arg1.
-# arg0 is the filename to look for. If the only arg,
-# then that's what gets returned. If this is the
-# only arg, then if it exists, arg0 gets returned.
-# if it doesn't exist, return only the prog name.
-# arg1 is optional, and it's what gets returned if
-# the file exists.
-# arg2 is optional, and it's what gets returned if
-# the file doesn't exist.
-#
-proc findfile { args } {
- # look for the file
- verbose "Seeing if [lindex $args 0] exists." 2
- if [file exists [lindex $args 0]] {
- if { [llength $args] > 1 } {
- verbose "Found file, returning [lindex $args 1]"
- return [lindex $args 1]
- } else {
- verbose "Found file, returning [lindex $args 0]"
- return [lindex $args 0]
- }
- } else {
- if { [llength $args] > 2 } {
- verbose "Didn't find file, returning [lindex $args 2]"
- return [lindex $args 2]
- } else {
- verbose "Didn't find file, returning [file tail [lindex $args 0]]"
- return [transform [file tail [lindex $args 0]]]
- }
- }
-}
-
-#
-# load_file [-1] [--] file1 [ file2 ... ]
-#
-# Utility to source a file. All are sourced in order unless the flag "-1"
-# is given in which case we stop after finding the first one.
-# The result is 1 if a file was found, 0 if not.
-# If a tcl error occurs while sourcing a file, we print an error message
-# and exit.
-#
-# ??? Perhaps add an optional argument of some descriptive text to add to
-# verbose and error messages (eg: -t "library file" ?).
-#
-proc load_file { args } {
- set i 0
- set only_one 0
- if { [lindex $args $i] == "-1" } {
- set only_one 1
- incr i
- }
- if { [lindex $args $i] == "--" } {
- incr i
- }
-
- set found 0
- foreach file [lrange $args $i end] {
- verbose "Looking for $file" 2
- if [file exists $file] {
- set found 1
- verbose "Found $file"
- if { [catch "uplevel #0 source $file"] == 1 } {
- send_error "ERROR: tcl error sourcing $file.\n"
- global errorInfo
- if [info exists errorInfo] {
- send_error "$errorInfo\n"
- }
- exit 1
- }
- if $only_one {
- break
- }
- }
- }
- return $found
-}
-
-#
-# Parse the arguments the first time looking for these. We will ultimately
-# parse them twice. Things are complicated because:
-# - we want to parse --verbose early on
-# - we don't want config files to override command line arguments
-# (eg: $base_dir/$configfile vs --host/--target; $BLUEGNU vs --baud,
-# --connectmode, and --name)
-# - we need some command line arguments before we can process some config files
-# (eg: --objdir before $objdir/$configfile, --host/--target before $BLUEGNU)
-# The use of `arg_host_triplet' and `arg_target_triplet' lets us avoid parsing
-# the arguments three times.
-#
-
-set arg_host_triplet ""
-set arg_target_triplet ""
-set arg_build_triplet ""
-set argc [ llength $argv ]
-for { set i 0 } { $i < $argc } { incr i } {
- set option [lindex $argv $i]
-
- # make all options have two hyphens
- switch -glob -- $option {
- "--*" {
- }
- "-*" {
- set option "-$option"
- }
- }
-
- # split out the argument for options that take them
- switch -glob -- $option {
- "--*=*" {
- set optarg [lindex [split $option =] 1]
- }
- "--ba*" -
- "--bu*" -
- "--co*" -
- "--ho*" -
- "--i*" -
- "--m*" -
- "--n*" -
- "--ob*" -
- "--ou*" -
- "--sr*" -
- "--st*" -
- "--ta*" -
- "--to*" {
- incr i
- set optarg [lindex $argv $i]
- }
- }
-
- switch -glob -- $option {
- "--bu*" { # (--build) the build host configuration
- set arg_build_triplet $optarg
- continue
- }
-
- "--ho*" { # (--host) the host configuration
- set arg_host_triplet $optarg
- continue
- }
-
- "--ob*" { # (--objdir) where the test case object code lives
- set objdir $optarg
- continue
- }
-
- "--sr*" { # (--srcdir) where the testsuite source code lives
- set srcdir $optarg
- continue
- }
-
- "--ta*" { # (--target) the target configuration
- set arg_target_triplet $optarg
- continue
- }
-
- "--to*" { # (--tool) specify tool name
- set tool $optarg
- continue
- }
-
- "--v" -
- "--verb*" { # (--verbose) verbose output
- incr verbose
- continue
- }
- }
-}
-verbose "Verbose level is $verbose"
-
-#
-# get the users login name
-#
-if [string match "" $logname] {
- if [info exists env(USER)] {
- set logname $env(USER)
- } else {
- if [info exists env(LOGNAME)] {
- set logname $env(LOGNAME)
- } else {
- # try getting it with whoami
- catch "set logname [exec whoami]" tmp
- if [string match "*couldn't find*to execute*" $tmp] {
- # try getting it with who am i
- unset tmp
- catch "set logname [exec who am i]" tmp
- if [string match "*Command not found*" $tmp] {
- send_user "ERROR: couldn't get the users login name\n"
- set logname "Unknown"
- } else {
- set logname [lindex [split $logname " !"] 1]
- }
- }
- }
- }
-}
-verbose "Login name is $logname"
-
-#
-# Begin sourcing the config files.
-# All are sourced in order.
-#
-# Search order:
-# $HOME/.bluegnurc -> $base_dir/$configfile -> $objdir/$configfile
-# -> installed -> $BLUEGNU
-#
-# ??? It might be nice to do $HOME last as it would allow it to be the
-# ultimate override. Though at present there is still $BLUEGNU.
-#
-# For the normal case, we rely on $base_dir/$configfile to set
-# host_triplet and target_triplet.
-#
-
-load_file ~/.bluegnurc $base_dir/$configfile
-
-#
-# If objdir didn't get set in $base_dir/$configfile, set it to $base_dir.
-# Make sure we source $objdir/$configfile in case $base_dir/$configfile doesn't
-# exist and objdir was given on the command line.
-#
-
-if [expr [string match "." $objdir] || [string match $srcdir $objdir]] {
- set objdir $base_dir
-} else {
- load_file $objdir/$configfile
-}
-verbose "Using test sources in $srcdir"
-verbose "Using test binaries in $objdir"
-
-set execpath [file dirname $argv0]
-set libdir [file dirname $execpath]/bluegnu
-if [info exists env(BLUEGNULIBS)] {
- set libdir $env(BLUEGNULIBS)
-}
-verbose "Using $libdir to find libraries"
-
-#
-# If the host or target was given on the command line, override the above
-# config files. We allow $BLUEGNU to massage them though in case it would
-# ever want to do such a thing.
-#
-if { $arg_host_triplet != "" } {
- set host_triplet $arg_host_triplet
-}
-if { $arg_build_triplet != "" } {
- set build_triplet $arg_build_triplet
-}
-
-# if we only specify --host, then that must be the build machne too, and we're
-# stuck using the old functionality of a simple cross test
-if [expr { $build_triplet == "" && $host_triplet != "" } ] {
- set build_triplet $host_triplet
-}
-# if we only specify --build, then we'll use that as the host too
-if [expr { $build_triplet != "" && $host_triplet == "" } ] {
- set host_triplet $build_triplet
-}
-unset arg_host_triplet arg_build_triplet
-
-#
-# If the build machine type hasn't been specified by now, use config.guess.
-#
-
-if [expr { $build_triplet == "" && $host_triplet == ""} ] {
- # find config.guess
- foreach dir "$libdir $libdir/.. $srcdir/.. $srcdir/../.." {
- verbose "Looking for $dir" 2
- if [file exists $dir/config.guess] {
- set config_guess $dir/config.guess
- verbose "Found $dir/config.guess"
- break
- }
- }
-
- # get the canonical config name
- if ![info exists config_guess] {
- send_error "ERROR: Couldn't guess configuration.\n"
- exit 1
- }
- catch "exec $config_guess" build_triplet
- case $build_triplet in {
- { "No uname command or uname output not recognized" "Unable to guess system type" } {
- verbose "WARNING: Uname output not recognized"
- set build_triplet unknown
- }
- }
- verbose "Assuming build host is $build_triplet"
- if { $host_triplet == "" } {
- set host_triplet $build_triplet
- }
-
-}
-
-#
-# Figure out the target. If the target hasn't been specified, then we have to assume
-# we are native.
-#
-if { $arg_target_triplet != "" } {
- set target_triplet $arg_target_triplet
-} elseif { $target_triplet == "" } {
- set target_triplet $build_triplet
- verbose "Assuming native target is $target_triplet" 2
-}
-unset arg_target_triplet
-#
-# Default target_alias to target_triplet.
-#
-if ![info exists target_alias] {
- set target_alias $target_triplet
-}
-
-#
-# Find and load the global config file if it exists.
-# The global config file is used to set the connect mode and other
-# parameters specific to each particular target.
-# These files assume the host and target have been set.
-#
-
-if { [load_file -- $libdir/$configfile] == 0 } {
- # If $BLUEGNU isn't set either then there isn't any global config file.
- # Warn the user as there really should be one.
- if { ! [info exists env(BLUEGNU)] } {
- send_error "WARNING: Couldn't find the global config file.\n"
- }
-}
-
-if [info exists env(BLUEGNU)] {
- if { [load_file -- $env(BLUEGNU)] == 0 } {
- # It may seem odd to only issue a warning if there isn't a global
- # config file, but issue an error if $BLUEGNU is erroneously defined.
- # Since $BLUEGNU is set there is *supposed* to be a global config file,
- # so the current behaviour seems reasonable.
- send_error "ERROR: global config file $env(BLUEGNU) not found.\n"
- exit 1
- }
-}
-
-#
-# parse out the config parts of the triplet name
-#
-
-# build values
-if { $build_cpu == "" } {
- regsub -- "-.*-.*" ${build_triplet} "" build_cpu
-}
-if { $build_vendor == "" } {
- regsub -- "^\[a-z0-9\]*-" ${build_triplet} "" build_vendor
- regsub -- "-.*" ${build_vendor} "" build_vendor
-}
-if { $build_os == "" } {
- regsub -- ".*-.*-" ${build_triplet} "" build_os
-}
-
-# host values
-if { $host_cpu == "" } {
- regsub -- "-.*-.*" ${host_triplet} "" host_cpu
-}
-if { $host_vendor == "" } {
- regsub -- "^\[a-z0-9\]*-" ${host_triplet} "" host_vendor
- regsub -- "-.*" ${host_vendor} "" host_vendor
-}
-if { $host_os == "" } {
- regsub -- ".*-.*-" ${host_triplet} "" host_os
-}
-
-# target values
-if { $target_cpu == "" } {
- regsub -- "-.*-.*" ${target_triplet} "" target_cpu
-}
-if { $target_vendor == "" } {
- regsub -- "^\[a-z0-9\]*-" ${target_triplet} "" target_vendor
- regsub -- "-.*" ${target_vendor} "" target_vendor
-}
-if { $target_os == "" } {
- regsub -- ".*-.*-" ${target_triplet} "" target_os
-}
-
-#
-# Parse the command line arguments.
-#
-
-set argc [ llength $argv ]
-for { set i 0 } { $i < $argc } { incr i } {
- set option [ lindex $argv $i ]
-
- # make all options have two hyphens
- switch -glob -- $option {
- "--*" {
- }
- "-*" {
- set option "-$option"
- }
- }
-
- # split out the argument for options that take them
- switch -glob -- $option {
- "--*=*" {
- set optarg [lindex [split $option =] 1]
- }
- "--ba*" -
- "--bu*" -
- "--co*" -
- "--ho*" -
- "--i*" -
- "--m*" -
- "--n*" -
- "--ob*" -
- "--ou*" -
- "--sr*" -
- "--st*" -
-
- "--ta*" -
- "--to*" {
- incr i
- set optarg [lindex $argv $i]
- }
- }
-
- switch -glob -- $option {
- "--V*" -
- "--vers*" { # (--version) version numbers
- send_user "Expect version is\t[exp_version]\n"
- send_user "Tcl version is\t\t[ info tclversion ]\n"
- send_user "Framework version is\t$frame_version\n"
- exit
- }
-
- "--v*" { # (--verbose) verbose output
- # Already parsed.
- continue
- }
-
- "--bu*" { # (--build) the build host configuration
- # Already parsed (and don't set again). Let $BLUEGNU rename it.
- continue
- }
-
- "--ho*" { # (--host) the host configuration
- # Already parsed (and don't set again). Let $BLUEGNU rename it.
- continue
- }
-
- "--ta*" { # (--target) the target configuration
- # Already parsed (and don't set again). Let $BLUEGNU rename it.
- continue
- }
-
- "--a*" { # (--all) print all test output to screen
- set all_flag 1
- verbose "Print all test output to screen"
- continue
- }
-
- "--ba*" { # (--baud) the baud to use for a serial line
- set baud $optarg
- verbose "The baud rate is now $baud"
- continue
- }
-
- "--co*" { # (--connect) the connection mode to use
- set connectmode $optarg
- verbose "Comm method is $connectmode"
- continue
- }
-
- "--d*" { # (--debug) expect internal debugging
- if [file exists ./dbg.log] {
- catch "exec rm -f ./dbg.log"
- }
- if { $verbose > 2 } {
- exp_internal -f dbg.log 1
- } else {
- exp_internal -f dbg.log 0
- }
- verbose "Expect Debugging is ON"
- continue
- }
-
- "--D[01]" { # (-Debug) turn on Tcl debugger
- verbose "Tcl debugger is ON"
- continue
- }
-
- "--m*" { # (--mail) mail the output
- set mailing_list $optarg
- set mail_logs 1
- verbose "Mail results to $mailing_list"
- continue
- }
-
- "--r*" { # (--reboot) reboot the target
- set reboot 1
- verbose "Will reboot the target (if supported)"
- continue
- }
-
- "--ob*" { # (--objdir) where the test case object code lives
- # Already parsed, but parse again to make sure command line
- # options override any config file.
- set objdir $optarg
- verbose "Using test binaries in $objdir"
- continue
- }
-
- "--ou*" { # (--outdir) where to put the output files
- set outdir $optarg
- verbose "Test output put in $outdir"
- continue
- }
-
- "*.exp" { # specify test names to run
- set all_runtests($option) ""
- verbose "Running only tests $option"
- continue
- }
-
- "*.exp=*" { # specify test names to run
- set j [string first "=" $option]
- set tmp [list [string range $option 0 [expr $j - 1]] \
- [string range $option [expr $j + 1] end]]
- set all_runtests([lindex $tmp 0]) [lindex $tmp 1]
- verbose "Running only tests $option"
- unset tmp j
- continue
- }
-
- "--i*" { # (--ignore) specify test names to exclude
- set ignoretests $optarg
- verbose "Ignoring test $ignoretests"
- continue
- }
-
- "--sr*" { # (--srcdir) where the testsuite source code lives
- # Already parsed, but parse again to make sure command line
- # options override any config file.
-
- set srcdir $optarg
- continue
- }
-
- "--st*" { # (--strace) expect trace level
- set tracelevel $optarg
- strace $tracelevel
- verbose "Source Trace level is now $tracelevel"
- continue
- }
-
- "--n*" { # (--name) the target's name
- # ??? `targetname' is a confusing word to use here.
- set targetname $optarg
- verbose "Target name is now $targetname"
- continue
- }
-
- "--to*" { # (--tool) specify tool name
- set tool $optarg
- verbose "Testing $tool"
- continue
- }
-
- "[A-Z]*=*" { # process makefile style args like CC=gcc, etc...
- if [regexp "^(\[A-Z_\]+)=(.*)$" $option junk var val] {
- if {0 > [lsearch -exact $makevars $var]} {
- lappend makevars "$var"
- set $var $val
- } else {
- set $var [concat [set $var] $val]
- }
- verbose "$var is now [set $var]"
- #append makevars "set $var $val;" ;# FIXME: Used anywhere?
- unset junk var val
- } else {
- send_error "Illegal variable specification:\n"
- send_error "$option\n"
- }
- continue
- }
-
- "--he*" { # (--help) help text
- send_user "USAGE: bluegnu \[options...\]\n"
- send_user "\t--all (-a)\t\tPrint all test output to screen\n"
- send_user "\t--baud (-ba)\t\tThe baud rate\n"
- send_user "\t--build \[string\]\t\tThe canonical config name of the build machine\n"
- send_user "\t--host \[string\]\t\tThe canonical config name of the host machine\n"
- send_user "\t--target \[string\]\tThe canonical config name of the target board\n"
- send_user "\t--connect (-co)\t\[type\]\tThe type of connection to use\n"
- send_user "\t--debug (-de)\t\tSet expect debugging ON\n"
- send_user "\t--help (-he)\t\tPrint help text\n"
- send_user "\t--ignore \[name(s)\]\tThe names of specific tests to ignore\n"
- send_user "\t--mail \[name(s)\]\tWho to mail the results to\n"
- send_user "\t--name \[name\]\t\tThe hostname of the target board\n"
- send_user "\t--objdir \[name\]\t\tThe test suite binary directory\n"
- send_user "\t--outdir \[name\]\t\tThe directory to put logs in\n"
- send_user "\t--reboot \[name\]\t\tReboot the target (if supported)\n"
- send_user "\t--srcdir \[name\]\t\tThe test suite source code directory\n"
- send_user "\t--strace \[number\]\tSet expect tracing ON\n"
- send_user "\t--tool\[name(s)\]\t\tRun tests on these tools\n"
- send_user "\t--verbose (-v)\t\tEmit verbose output\n"
- send_user "\t--version (-V)\t\tEmit all version numbers\n"
- send_user "\t--D\[0-1\]\t\tTcl debugger\n"
- send_user "\tscript.exp\[=arg(s)\]\tRun these tests only\n"
- send_user "\tMakefile style arguments can also be used, ex. CC=gcc\n\n"
- exit 0
- }
-
- default {
- send_error "\nIllegal Argument \"$option\"\n"
- send_error "try \"bluegnu --help\" for option list\n"
- exit 1
- }
-
- }
-}
-
-#
-# check for a few crucial variables
-#
-if ![info exists tool] {
- send_error "WARNING: No tool specified\n"
- set tool ""
-}
-
-#
-# initialize a few Tcl variables to something other than their default
-#
-if { $verbose > 2 } {
- log_user 1
-} else {
- log_user 0
-}
-
-set timeout 10
-
-#
-# load_lib -- load a library by sourcing it
-#
-# If there a multiple files with the same name, stop after the first one found.
-# The order is first look in the install dir, then in a parallel dir in the
-# source tree, (up one or two levels), then in the current dir.
-#
-proc load_lib { file } {
- global verbose libdir srcdir base_dir execpath tool
-
- # ??? We could use `load_file' here but then we'd lose the "library file"
- # specific text in verbose and error messages. Worth it?
- set found 0
- foreach dir "$libdir $libdir/lib [file dirname [file dirname $srcdir]]/bluegnu/lib $srcdir/lib . [file dirname [file dirname [file dirname $srcdir]]]/bluegnu/lib" {
- verbose "Looking for library file $dir/$file" 2
- if [file exists $dir/$file] {
- set found 1
- verbose "Loading library file $dir/$file"
- if { [catch "uplevel #0 source $dir/$file"] == 1 } {
- send_error "ERROR: tcl error sourcing library file $dir/$file.\n"
- global errorInfo
- if [info exists errorInfo] {
- send_error "$errorInfo\n"
- }
- exit 1
- }
- break
- }
- }
- if { $found == 0 } {
- send_error "ERROR: Couldn't find library file $file.\n"
- exit 1
- }
-}
-
-#
-# load the testing framework libraries
-#
-load_lib utils.exp
-load_lib framework.exp
-load_lib debugger.exp
-load_lib remote.exp
-load_lib target.exp
-
-#
-# open log files
-#
-open_logs
-
-# print the config info
-clone_output "Test Run By $logname on [timestamp -format %c]"
-if [is3way] {
- clone_output "Target is $target_triplet"
- clone_output "Host is $host_triplet"
- clone_output "Build is $build_triplet"
-} else {
- if [isnative] {
- clone_output "Native configuration is $target_triplet"
- } else {
- clone_output "Target is $target_triplet"
- clone_output "Host is $host_triplet"
- }
-}
-
-clone_output "\n\t\t=== $tool tests ===\n"
-
-#
-# Find the tool init file. This is in the config directory of the tool's
-# testsuite directory. These used to all be named $target_abbrev-$tool.exp,
-# but as the $tool variable goes away, it's now just $target_abbrev.exp.
-# First we look for a file named with both the abbrev and the tool names.
-# Then we look for one named with just the abbrev name. Finally, we look for
-# a file called default, which is the default actions, as some tools could
-# be purely host based. Unknown is mostly for error trapping.
-#
-
-set found 0
-if ![info exists target_abbrev] {
- set target_abbrev "unix"
-}
-foreach dir "${srcdir}/config ${srcdir}/../config ${srcdir}/../../config ${srcdir}/../../../config" {
- foreach initfile "${target_abbrev}-${tool}.exp ${target_abbrev}.exp ${target_os}.exp default.exp unknown.exp" {
- verbose "Looking for tool init file ${dir}/${initfile}" 2
- if [file exists ${dir}/${initfile}] {
- set found 1
- verbose "Using ${dir}/${initfile} as tool init file."
- if [catch "uplevel #0 source ${dir}/${initfile}"]==1 {
- send_error "ERROR: tcl error sourcing tool init file ${dir}/${initfile}.\n"
- if [info exists errorInfo] {
- send_error "$errorInfo\n"
- }
- exit 1
- }
- break
- }
- }
- if $found {
- break
- }
-}
-
-if { $found == 0 } {
- send_error "ERROR: Couldn't find tool init file.\n"
- exit 1
-}
-unset found
-
-#
-# Trap some signals so we know what's happening. These replace the previous
-# ones because we've now loaded the library stuff.
-#
-if ![exp_debug] {
- foreach sig "{SIGTERM {terminated}} \
- {SIGINT {interrupted by user}} \
- {SIGQUIT {interrupted by user}} \
- {SIGSEGV {segmentation violation}}" {
- trap { send_error "Got a [trap -name] signal, [lindex $sig 1]\n"; \
- log_summary } [lindex $sig 0]
- verbose "setting trap for [lindex $sig 0] to \"[lindex $sig 1]\"" 1
- }
-}
-
-#
-# main test execution loop
-#
-
-if [info exists errorInfo] {
- unset errorInfo
-}
-reset_vars
-# FIXME: The trailing '/' is deprecated and will go away at some point.
-# Do not assume $srcdir has a trailing '/'.
-append srcdir "/"
-# make sure we have only single path delimiters
-regsub -all "//*" $srcdir "/" srcdir
-
-# If multiple passes requested, set them up. Otherwise prepare just one.
-# The format of `MULTIPASS' is a list of elements containing
-# "{ name var1=value1 ... }" where `name' is a generic name for the pass and
-# currently has no other meaning.
-
-if { [info exists MULTIPASS] } {
- set multipass $MULTIPASS
-}
-if { $multipass == "" } {
- set multipass { "" }
-}
-
-foreach pass $multipass {
- # multipass_name is set for `record_test' to use (see framework.exp).
- if { [lindex $pass 0] != "" } {
- set multipass_name [lindex $pass 0]
- clone_output "Running pass `$multipass_name' ..."
- } else {
- set multipass_name ""
- }
- set restore ""
- foreach varval [lrange $pass 1 end] {
- # FIXME: doesn't handle a=b=c.
- set tmp [split $varval "="]
- set var [lindex $tmp 0]
- # Save previous value.
- if [info exists $var] {
- lappend restore "$var [list [eval concat \$$var]]"
- } else {
- lappend restore "$var"
- }
- # Handle "CFLAGS=$CFLAGS foo".
- # FIXME: Do we need to `catch' this?
- eval set $var \[concat [lindex $tmp 1]\]
- verbose "$var is now [eval concat \$$var]"
- unset tmp var
- }
-
- # look for the top level testsuites. if $tool doesn't
- # exist and there are no subdirectories in $srcdir, then
- # we default to srcdir.
- set test_top_dirs [lsort [getdirs ${srcdir} "$tool*"]]
- if { ${test_top_dirs} == "" } {
- set test_top_dirs ${srcdir}
- }
- verbose "Top level testsuite dirs are ${test_top_dirs}" 2
- foreach dir "${test_top_dirs}" {
- foreach test_name [lsort [find ${dir} *.exp]] {
- if { ${test_name} == "" } {
- continue
- }
- # Ignore this one if asked to.
- if ![string match "" ${ignoretests}] {
- if { 0 <= [lsearch ${ignoretests} [file tail ${test_name}]]} {
- continue
- }
- }
- # Get the path after the $srcdir so we know the subdir we're in.
- set subdir ""
- regsub $srcdir [file dirname $test_name] "" subdir
- if { "$srcdir" == "$subdir/" } {
- set subdir ""
- }
- # Check to see if the range of tests is limited,
- # set `runtests' to a list of two elements: the script name
- # and any arguments ("" if none).
- if { [array size all_runtests] > 0 } {
- if { 0 > [lsearch [array names all_runtests] [file tail $test_name]]} {
- continue
- }
- set runtests [list [file tail $test_name] $all_runtests([file tail $test_name])]
- } else {
- set runtests [list [file tail $test_name] ""]
- }
- clone_output "Running $test_name ..."
- set prms_id 0
- set bug_id 0
- set test_result ""
- if [file exists $test_name] {
- if { [catch "uplevel #0 source $test_name"] == 1 } {
- # We can't call `perror' here, it resets `errorInfo'
- # before we want to look at it. Also remember that perror
- # increments `errcnt'. If we do call perror we'd have to
- # reset errcnt afterwards.
- clone_output "ERROR: tcl error sourcing $test_name."
- if [info exists errorInfo] {
- clone_output "ERROR: $errorInfo"
- unset errorInfo
- }
- }
- } else {
- # This should never happen, but maybe if the file got removed
- # between the `find' above and here.
- perror "$test_name does not exist."
- # ??? This is a hack. We want to send a message to stderr and
- # to the summary file (just like perror does), but we don't
- # want the next testcase to get a spurious "unresolved" because
- # errcnt != 0. Calling `clone_output' is also supposed to be a
- # no-no (see the comments for clone_output).
- set errcnt 0
- }
- }
- }
-
- # Restore the variables set by this pass.
- foreach varval $restore {
- if { [llength $varval] > 1 } {
- verbose "Restoring [lindex $varval 0] to [lindex $varval 1]" 4
- set [lindex $varval 0] [lindex $varval 1]
- } else {
- verbose "Restoring [lindex $varval 0] to `unset'" 4
- unset [lindex $varval 0]
- }
- }
-}
-
-#
-# all done, cleanup
-#
-if { [info procs ${tool}_exit] != "" } {
- if {[catch "${tool}_exit" tmp]} {
- # ??? We can get away with calling `warning' here without ensuring
- # `warncnt' isn't changed because we're about to exit.
- warning "${tool}_exit failed:\n$tmp"
- }
-}
-
-log_summary
+++ /dev/null
-#
-# site.tmpl -- Sample template for a global config file.
-# NOTE: This file contains mostly site specific
-# configuration data that is custom to Cygnus
-# Support. You'll have to change most of the
-# values to work at your site.
-# Written by rob@welcomehome.org
-#
-
-#
-# transform -- transform a tool name to get the installed name. We only define
-# this if there wasn't one. This was the global config file can
-# override how the tool names are calculated.
-#
-
-#
-# uncomment this if you wish to redefine the transform procedure
-#
-
-#if ![string match "transform" [info procs transform]] then {
-# proc transform { name } {
-# global target_triplet
-#
-# if [string match "" $target_triplet] then {
-# return $name
-# } else {
-# return ${target_triplet}-$name
-# }
-# }
-#}
-
-set noargs 0
-set noresults 0
-set nosignals 0
-
-#
-# Set default setting for all know targets
-#
-case "$target_triplet" in {
- { "hppa*-*-proelf*" } {
-
- # By default we'll use the Winbond for testing, use the OKI
- # only if explicitly asked for.
- case "$target_triplet" in {
- { "hppa*-oki-proelf*" } {
- set target_abbrev hppro
- set targetname op50n
- set serialport hellcab:1024
- set netport {}
- set baud 9600
- }
- default {
- set target_abbrev hppro
- set targetname w89k
- set serialport hellcab:1023
- set netport {}
- set baud 9600
- }
- }
-
- # Now stuff that's common to all proelf targets.
- # We can't pass arguments or do IO with the PA boards, nor do we
- # get status results or signals back from the board.
- set noargs 1
- set noresults 1
- set nosignals 1
- set noinferiorio 1
-
- # Disgusting hack because directories in libgloss don't
- # necessarily match the value in target_cpu.
- set target_cpu "pa"
-
- # The proelf targets are absurdly slow downloading, so we limit
- # the number of tests we run on them
- set TORTURE_OPTIONS [list \
- { -O0 -g } { -O2 } \
- { -O2 -fomit-frame-pointer -finline-functions -funroll-all-loops }]
-
- set target_info(target,name) $targetname
- set target_info(target,ldflags) "-T$targetname.ld"
- set target_info(target,config) "hppa1.1-hp-proelf"
- set target_info(target,cflags) "-T$targetname.ld"
- set target_info(target,connect) ""
- set target_info(target,target) ""
- set target_info(target,serial) $serialport
- set target_info(target,netport) $netport
- set target_info(target,baud) $baud
- }
- { "i386-*-aout" } {
- set target_abbrev aout
- set connectmode ""
- set targetname ""
- set netport ""
- set serialport ""
- set baud ""
- }
- { "m68k-mvme135-*" } { # Motorola MVME135 board running Bug monitor
- set target_abbrev bug
- set connectmode "telnet"
- append targetname "s8"
- append serialport "/dev/ttyr8"
- append netport "termserv:90008"
- append baud "9600"
- append CFLAGS "-Tmvme135.ld"
- append CXXFLAGS "-Tmvme135.ld"
- }
- { "m68k-idp-*" "m68k-rom68k-*" } { # Motorola IDP board running rom68k monitor
- append target_abbrev idp
- append connectmode "telnet"
- append targetname "s12"
- append serialport "/dev/tstty12"
- append netport "termserv:900012"
- append baud "9600"
- append CFLAGS "-Tidp.ld"
- append CXXFLAGS "-Tidp.ld"
- }
- { "m68k-*-aout" } {
- append target_abbrev aout
- append connectmode ""
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- }
- { "m68k-est-coff" } {
- append target_abbrev est
- append connectmode telnet
- append targetname est
- append serialport /dev/ttyb
- append netport ""
- append baud 9600
- set noargs 1
- set noresults 1
- set nosignals 1
- append CFLAGS -Tidp.ld
- append CXXFLAGS -Tidp.ld
- }
- { "m68k-cpu32bug-coff" } {
- append target_abbrev cpu32bug
- append connectmode telnet
- append targetname cpu32bug
- append serialport /dev/ttyb
- append netport ""
- append baud 9600
- set noargs 1
- set noresults 1
- set nosignals 1
- append CFLAGS -Tidp.ld
- append CXXFLAGS -Tidp.ld
- }
- { "m68k-*-coff" } {
- set target_abbrev rom68k
- set connectmode telnet
- set targetname rom68k
- set serialport /dev/ttya
- set netport ""
- set baud 9600
- set noargs 1
- set noresults 1
- set nosignals 1
- set CFLAGS -Tidp.ld
- set CXXFLAGS -Tidp.ld
- }
- { "i960-*-nindy" } {
- append target_abbrev nind
- append connectmode ""
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- }
- { "m68*-*-vxworks" "m68*-vxworks" } { # Motorola MVME167 board running VxWorks
- append target_abbrev vx
- append connectmode "telnet"
- append targetname "foobar"
- append serialport "/dev/tstty16"
- append netport "termserv:900016"
- append baud "9600"
- append CFLAGS "-r"
- append CXXFLAGS "-r"
- append LDFLAGS "-r"
- }
- { "m68*-*-spectra" "m68*-spectra-*" } {
- append target_abbrev vrtx
- append connectmode ""
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- }
- { "sparc-*-vxworks" } {
- append target_abbrev vx
- append connectmode ""
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- append CFLAGS "-r"
- append CXXFLAGS "-r"
- append LDFLAGS "-r"
- }
- { "i960-*-vxworks" } {
- append target_abbrev vx
- append connectmode "telnet"
- append targetname "barfoo"
- append netport ""
- append serialport ""
- append baud "9600"
- append CFLAGS "-r"
- append CXXFLAGS "-r"
- append LDFLAGS "-r"
- }
- { "a29k-*-udi" } {
- append target_abbrev udi
- append connectmode "mondfe"
- append targetname "ser"
- append netport ""
- append serialport ""
- append baud ""
- }
- { "a29k-isstip-*" } {
- append target_abbrev itip
- append connectmode "mondfe"
- append targetname "isst"
- append netport ""
- append serialport ""
- append baud ""
- }
- { "mips-idt-ecoff" } {
- append target_abbrev mips
- append connectmode ""
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- }
- { "h8300*-*-*" } {
- append target_abbrev sim
- append connectmode ""
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- }
- { "h8500*-*-*" } {
- append target_abbrev sim
- append connectmode ""
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- }
- { "sh-*-*" } {
- append target_abbrev sh
- append connectmode ""
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- }
- { "sparc-*-aout" } {
- append target_abbrev aout
- append connectmode ""
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- }
- { "sparclite-*-*" } {
- append target_abbrev slite
- append connectmode "aload"
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- append CFLAGS "-Tex930"
- append CXXFLAGS ""
- }
- { "sparclitefrwcompat-*-*" } {
- append target_abbrev frwcom
- append connectmode ""
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- }
- default {
- # For now only run default gdbserver framework for lynx cross
- # targets in the future it should be the default for any cross
- # targets not explicitly handled above.
- if { $host_triplet != $target_triplet } then {
- set target_abbrev gdbserver
- set targetname extended-remote
- append connectmode ""
- append netport ""
- append serialport ""
- append baud ""
- } else {
- append target_abbrev unix
- append connectmode ""
- append targetname ""
- append netport ""
- append serialport ""
- append baud ""
- }
- }
-}
+++ /dev/null
-;; tcl.el --- Tcl code editing commands for Emacs
-
-;; Copyright (C) 1994 Free Software Foundation, Inc.
-
-;; Maintainer: Tom Tromey <tromey@busco.lanl.gov>
-;; Author: Tom Tromey <tromey@busco.lanl.gov>
-;; Chris Lindblad <cjl@lcs.mit.edu>
-;; Keywords: languages tcl modes
-;; Version: 1.49
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 1, or (at your option)
-;; any later version.
-
-;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-;; HOW TO INSTALL:
-;; Put the following forms in your .emacs to enable autoloading of Tcl
-;; mode, and auto-recognition of ".tcl" files.
-;;
-;; (autoload 'tcl-mode "tcl" "Tcl mode." t)
-;; (autoload 'inferior-tcl "tcl" "Run inferior Tcl process." t)
-;; (setq auto-mode-alist (append '(("\\.tcl$" . tcl-mode)) auto-mode-alist))
-;;
-;; If you plan to use the interface to the TclX help files, you must
-;; set the variable tcl-help-directory-list to point to the topmost
-;; directories containing the TclX help files. Eg:
-;;
-;; (setq tcl-help-directory-list '("/usr/local/lib/tclx/help"))
-;;
-;; Also you will want to add the following to your .emacs:
-;;
-;; (autoload 'tcl-help-on-word "tcl" "Help on Tcl commands" t)
-;;
-;; FYI a *very* useful thing to do is nroff all the Tk man pages and
-;; put them in a subdir of the help system.
-;;
-
-;;; Commentary:
-
-;; LCD Archive Entry:
-;; tcl|Tom Tromey|tromey@busco.lanl.gov|
-;; Major mode for editing Tcl|
-;; 1995/12/07 18:27:47|1.49|~/modes/tcl.el.Z|
-
-;; CUSTOMIZATION NOTES:
-;; * tcl-proc-list can be used to customize a list of things that
-;; "define" other things. Eg in my project I put "defvar" in this
-;; list.
-;; * tcl-typeword-list is similar, but uses font-lock-type-face.
-;; * tcl-keyword-list is a list of keywords. I've generally used this
-;; for flow-control words. Eg I add "unwind_protect" to this list.
-;; * tcl-type-alist can be used to minimally customize indentation
-;; according to context.
-
-;; Change log:
-;; tcl.el,v
-;; Revision 1.49 1995/12/07 18:27:47 tromey
-;; (add-log-tcl-defun): Don't use tcl-beginning-of-defun; just go to end
-;; of line before searching.
-;;
-;; Revision 1.48 1995/12/07 18:18:21 tromey
-;; (add-log-tcl-defun): Now uses tcl-beginning-of-defun.
-;;
-;; Revision 1.47 1995/08/22 17:49:45 tromey
-;; (tcl-hilit): New function from "Chris Alfeld" <calfeld@math.utah.edu>
-;; (tcl-mode): Call it
-;;
-;; Revision 1.46 1995/08/07 16:02:01 tromey
-;; (tcl-do-auto-fill): Only fill past fill-column; for 19.29.
-;; (tcl-auto-fill-mode): Use force-mode-line-update.
-;;
-;; Revision 1.45 1995/07/23 23:51:25 tromey
-;; (tcl-word-no-props): New function.
-;; (tcl-figure-type): Use it.
-;; (tcl-current-word): Ditto.
-;;
-;; Revision 1.44 1995/07/23 20:26:47 tromey
-;; Doc fixes.
-;;
-;; Revision 1.43 1995/07/17 19:59:49 tromey
-;; (inferior-tcl-mode): Use modeline-process if it exists.
-;;
-;; Revision 1.42 1995/07/17 19:55:25 tromey
-;; XEmacs currently must use tcl-internal-end-of-defun
-;;
-;; Revision 1.41 1995/07/14 21:54:56 tromey
-;; Changes to make menus work in XEmacs.
-;; From Mike Scheidler <c23mts@kocrsv01.delcoelect.com>
-;;
-;; Revision 1.40 1995/07/11 03:13:15 tromey
-;; (tcl-mode): Customize for new dabbrev.
-;;
-;; Revision 1.39 1995/07/09 21:58:03 tromey
-;; (tcl-do-fill-paragraph): New function.
-;; (tcl-mode): Set up for paragraph filling.
-;;
-;; Revision 1.38 1995/07/09 21:30:32 tromey
-;; (tcl-mode): Fixes to 19.29 paragraph variables.
-;;
-;; Revision 1.37 1995/07/09 18:52:16 tromey
-;; (tcl-do-auto-fill): Set fill-prefix.
-;;
-;; Revision 1.36 1995/07/09 01:07:57 tromey
-;; (tcl-imenu-create-index-function): Work with imenu from Emacs 19.29
-;;
-;; Revision 1.35 1995/06/27 20:12:00 tromey
-;; (tcl-type-alist): More itcl changes.
-;;
-;; Revision 1.34 1995/06/27 20:06:05 tromey
-;; More changes for itcl.
-;; Bug fixes for Emacs 19.29.
-;;
-;; Revision 1.33 1995/06/27 20:01:29 tromey
-;; (tcl-set-proc-regexp): Allow leading spaces.
-;; (tcl-proc-list): Changes for itcl.
-;; (tcl-typeword-list): Ditto.
-;; (tcl-keyword-list): Ditto.
-;;
-;; Revision 1.32 1995/05/11 22:12:49 tromey
-;; (tcl-type-alist): Include entry for "proc".
-;;
-;; Revision 1.31 1995/05/10 23:38:12 tromey
-;; (tcl-add-fsf-menu): Use make-lucid-menu-keymap, not
-;; "make-xemacs-menu-keymap".
-;;
-;; Revision 1.30 1995/05/10 18:22:21 tromey
-;; Bug fix in menu code for XEmacs.
-;;
-;; Revision 1.29 1995/05/09 21:36:53 tromey
-;; Changed "Lucid Emacs" to "XEmacs".
-;; Tcl's popup menu now added to existing one, courtesy
-;; dfarmer@evolving.com (Doug Farmer)
-;;
-;; Revision 1.28 1995/04/08 19:52:50 tromey
-;; (tcl-outline-level): New function
-;; (tcl-mode): Added outline-handling stuff.
-;; From Jesper Pedersen <blackie@imada.ou.dk>
-;;
-;; Revision 1.27 1994/10/11 02:01:27 tromey
-;; (tcl-mode): imenu-create-index-function made buffer local.
-;;
-;; Revision 1.26 1994/09/01 18:06:24 tromey
-;; Added filename completion in inferior tcl mode
-;;
-;; Revision 1.25 1994/08/22 15:56:24 tromey
-;; tcl-load-file default to current buffer.
-;;
-;; Revision 1.24 1994/08/21 20:33:05 tromey
-;; Fixed bug in tcl-guess-application.
-;;
-;; Revision 1.23 1994/08/21 03:54:45 tromey
-;; Keybindings don't overshadown comint bindings.
-;;
-;; Revision 1.22 1994/07/26 00:46:07 tromey
-;; Emacs 18 changes from Carl Witty.
-;;
-;; Revision 1.21 1994/07/14 22:49:21 tromey
-;; Added ";;;###autoload" comments where appropriate.
-;;
-; Revision 1.20 1994/06/05 16:57:22 tromey
-; tcl-current-word does the right thing in inferior-tcl-mode.
-;
-; Revision 1.19 1994/06/03 21:09:19 tromey
-; Another menu fix.
-;
-; Revision 1.18 1994/06/03 20:39:14 tromey
-; Fixed menu bug.
-;
-; Revision 1.17 1994/06/03 00:47:15 tromey
-; Fixed bug in bug-reporting code.
-;
-; Revision 1.16 1994/05/26 05:06:14 tromey
-; Menu items now sensitive as appropriate.
-;
-; Revision 1.15 1994/05/22 20:38:11 tromey
-; Added bug-report keybindings and menu entries.
-;
-; Revision 1.14 1994/05/22 20:18:28 tromey
-; Even more compile stuff.
-;
-; Revision 1.13 1994/05/22 20:17:15 tromey
-; Moved emacs version checking code to very beginning.
-;
-; Revision 1.12 1994/05/22 20:14:59 tromey
-; Compile fixes.
-;
-; Revision 1.11 1994/05/22 20:12:44 tromey
-; Fixed mark-defun for 19.23.
-; More menu fixes.
-;
-; Revision 1.10 1994/05/22 20:02:03 tromey
-; Fixed bug with M-;.
-; Wrote bug-reporting code.
-;
-; Revision 1.9 1994/05/22 05:26:51 tromey
-; Fixes for imenu.
-;
-; Revision 1.8 1994/05/22 03:38:07 tromey
-; Fixed menu support.
-;
-; Revision 1.7 1994/05/03 01:23:42 tromey
-; *** empty log message ***
-;
-; Revision 1.6 1994/04/23 16:23:36 tromey
-; Wrote tcl-indent-for-comment
-;
-;;
-;; 18-Mar-1994 Tom Tromey Fourth beta release.
-;; Added {un,}comment-region to menu. Idea from
-;; Mike Scheidler <c23mts@kocrsv01.delcoelect.com>
-;; 17-Mar-1994 Tom Tromey
-;; Fixed tcl-restart-with-file. Bug fix attempt in
-;; tcl-internal-end-of-defun.
-;; 16-Mar-1994 Tom Tromey Third beta release
-;; Added support code for menu (from Tcl mode written by
-;; schmid@fb3-s7.math.TU-Berlin.DE (Gregor Schmid)).
-;; 12-Mar-1994 Tom Tromey
-;; Better documentation for inferior-tcl-buffer. Wrote
-;; tcl-restart-with-file. Wrote Lucid Emacs menu (but no
-;; code to install it).
-;; 12-Mar-1994 Tom Tromey
-;; Wrote tcl-guess-application. Another stab at making
-;; tcl-omit-ws-regexp work.
-;; 10-Mar-1994 Tom Tromey Second beta release
-;; Last Modified: Thu Mar 10 01:24:25 1994 (Tom Tromey)
-;; Wrote perl-mode style line indentation command.
-;; Wrote more documentation. Added tcl-continued-indent-level.
-;; Integrated help code.
-;; 8-Mar-1994 Tom Tromey
-;; Last Modified: Tue Mar 8 11:58:44 1994 (Tom Tromey)
-;; Bug fixes.
-;; 6-Mar-1994 Tom Tromey
-;; Last Modified: Sun Mar 6 18:55:41 1994 (Tom Tromey)
-;; Updated auto-newline support.
-;; 6-Mar-1994 Tom Tromey Beta release
-;; Last Modified: Sat Mar 5 17:24:32 1994 (Tom Tromey)
-;; Wrote tcl-hashify-buffer. Other minor bug fixes.
-;; 5-Mar-1994 Tom Tromey
-;; Last Modified: Sat Mar 5 16:11:20 1994 (Tom Tromey)
-;; Wrote electric-hash code.
-;; 3-Mar-1994 Tom Tromey
-;; Last Modified: Thu Mar 3 02:53:40 1994 (Tom Tromey)
-;; Added code to handle auto-fill in comments.
-;; Added imenu support code.
-;; Cleaned up code.
-;; Better font-lock support.
-;; 28-Feb-1994 Tom Tromey
-;; Last Modified: Mon Feb 28 14:08:05 1994 (Tom Tromey)
-;; Made tcl-figure-type more easily configurable.
-;; 28-Feb-1994 Tom Tromey
-;; Last Modified: Mon Feb 28 01:02:58 1994 (Tom Tromey)
-;; Wrote inferior-tcl mode.
-;; 16-Feb-1994 Tom Tromey
-;; Last Modified: Wed Feb 16 17:05:19 1994 (Tom Tromey)
-;; Added support for font-lock-mode.
-;; 29-Oct-1993 Tom Tromey
-;; Last Modified: Sun Oct 24 17:39:14 1993 (Tom Tromey)
-;; Patches from Guido Bosch to make things work with Lucid Emacs.
-;; 22-Oct-1993 Tom Tromey
-;; Last Modified: Fri Oct 22 15:26:46 1993 (Tom Tromey)
-;; Made many characters have "_" syntax class; suggested by Guido
-;; Bosch <Guido.Bosch@loria.fr>. Note that this includes the "$"
-;; character, which might be a change you'd notice.
-;; 21-Oct-1993 Tom Tromey
-;; Last Modified: Thu Oct 21 20:28:40 1993 (Tom Tromey)
-;; More fixes for tcl-omit-ws-regexp.
-;; 20-Oct-1993 Tom Tromey
-;; Started keeping history. Fixed tcl-{beginning,end}-of-defun.
-;; Added some code to make things work with Emacs 18.
-
-;; THANKS TO:
-;; Guido Bosch <Guido.Bosch@loria.fr>
-;; pgs1002@esc.cam.ac.uk (Dr P.G. Sjoerdsma)
-;; Mike Scheidler <c23mts@kocrsv01.delcoelect.com>
-;; Matt Newman <men@charney.colorado.edu>
-;; rwhitby@research.canon.oz.au (Rod Whitby)
-;; h9118101@hkuxa.hku.hk (Yip Chi Lap [Beta])
-;; Pertti Tapio Kasanen <ptk@delta.hut.fi>
-;; schmid@fb3-s7.math.TU-Berlin.DE (Gregor Schmid)
-;; warsaw@nlm.nih.gov (Barry A. Warsaw)
-;; Carl Witty <cwitty@ai.mit.edu>
-;; T. V. Raman <raman@crl.dec.com>
-;; Jesper Pedersen <blackie@imada.ou.dk>
-;; dfarmer@evolving.com (Doug Farmer)
-;; "Chris Alfeld" <calfeld@math.utah.edu>
-
-;; KNOWN BUGS:
-;; * indent-region should skip blank lines. (It does in v19, so I'm
-;; not motivated to fix it here).
-;; * In Tcl "#" is not always a comment character. This can confuse
-;; tcl.el in certain circumstances. For now the only workaround is
-;; to enclose offending hash characters in quotes or precede it with
-;; a backslash. Note that using braces won't work -- quotes change
-;; the syntax class of characters between them, while braces do not.
-;; The electric-# mode helps alleviate this problem somewhat.
-;; * indent-tcl-exp is untested.
-;; * Doesn't work under Emacs 18 yet.
-;; * There's been a report that font-lock does strange things under
-;; Lucid Emacs 19.6. For instance in "proc foobar", the space
-;; before "foobar" is highlighted.
-
-;; TODO:
-;; * make add-log-tcl-defun smarter. should notice if we are in the
-;; middle of a defun, or between defuns. should notice if point is
-;; on first line of defun (or maybe even in comments before defun).
-;; * Allow continuation lines to be indented under the first argument
-;; of the preceeding line, like this:
-;; [list something \
-;; something-else]
-;; * There is a request that indentation work like this:
-;; button .fred -label Fred \
-;; -command {puts fred}
-;; * Should have tcl-complete-symbol that queries the inferior process.
-;; * Should have describe-symbol that works by sending the magic
-;; command to a tclX process.
-;; * Need C-x C-e binding (tcl-eval-last-exp).
-;; * Write indent-region function that is faster than indenting each
-;; line individually.
-;; * tcl-figure-type should stop at "beginning of line" (only ws
-;; before point, and no "\" on previous line). (see tcl-real-command-p).
-;; * overrides some comint keybindings; fix.
-;; * Trailing \ will eat blank lines. Should deal with this.
-;; (this would help catch some potential bugs).
-;; * Inferior should display in half the screen, not the whole screen.
-;; * Indentation should deal with "switch".
-;; * Consider writing code to find help files automatically (for
-;; common cases).
-;; * `#' shouldn't insert `\#' when point is in string.
-
-\f
-
-;;; Code:
-
-;; I sure wish Emacs had a package that made it easy to extract this
-;; sort of information.
-(defconst tcl-using-emacs-19 (string-match "19\\." emacs-version)
- "Nil unless using Emacs 19 (XEmacs or FSF).")
-
-;; FIXME this will break on Emacs 19.100.
-(defconst tcl-using-emacs-19-23
- (string-match "19\\.\\(2[3-9]\\|[3-9][0-9]\\)" emacs-version)
- "Nil unless using Emacs 19-23 or later.")
-
-(defconst tcl-using-xemacs-19 (string-match "XEmacs" emacs-version)
- "Nil unless using XEmacs).")
-
-(require 'comint)
-
-;; When compiling under GNU Emacs, load imenu during compilation. If
-;; you have 19.22 or earlier, comment this out, or get imenu.
-(and (fboundp 'eval-when-compile)
- (eval-when-compile
- (if (and (string-match "19\\." emacs-version)
- (not (string-match "XEmacs" emacs-version)))
- (require 'imenu))
- ()))
-
-(defconst tcl-version "1.49")
-(defconst tcl-maintainer "Tom Tromey <tromey@drip.colorado.edu>")
-
-;;
-;; User variables.
-;;
-
-(defvar tcl-indent-level 4
- "*Indentation of Tcl statements with respect to containing block.")
-
-(defvar tcl-continued-indent-level 4
- "*Indentation of continuation line relative to first line of command.")
-
-(defvar tcl-auto-newline nil
- "*Non-nil means automatically newline before and after braces
-inserted in Tcl code.")
-
-(defvar tcl-tab-always-indent t
- "*Control effect of TAB key.
-If t (the default), always indent current line.
-If nil and point is not in the indentation area at the beginning of
-the line, a TAB is inserted.
-Other values cause the first possible action from the following list
-to take place:
-
- 1. Move from beginning of line to correct indentation.
- 2. Delete an empty comment.
- 3. Move forward to start of comment, indenting if necessary.
- 4. Move forward to end of line, indenting if necessary.
- 5. Create an empty comment.
- 6. Move backward to start of comment, indenting if necessary.")
-
-(defvar tcl-use-hairy-comment-detector t
- "*If not `nil', the the more complicated, but slower, comment
-detecting function is used. This variable is only used in GNU Emacs
-19 (the fast function is always used elsewhere).")
-
-(defvar tcl-electric-hash-style 'smart
- "*Style of electric hash insertion to use.
-Possible values are 'backslash, meaning that `\\' quoting should be
-done; 'quote, meaning that `\"' quoting should be done; 'smart,
-meaning that the choice between 'backslash and 'quote should be
-made depending on the number of hashes inserted; or nil, meaning that
-no quoting should be done. Any other value for this variable is
-taken to mean 'smart. The default is 'smart.")
-
-(defvar tcl-help-directory-list nil
- "*List of topmost directories containing TclX help files")
-
-(defvar tcl-use-smart-word-finder t
- "*If not nil, use a better way of finding the current word when
-looking up help on a Tcl command.")
-
-(defvar tcl-application "wish"
- "*Name of Tcl application to run in inferior Tcl mode.")
-
-(defvar tcl-command-switches nil
- "*Switches to supply to `tcl-application'.")
-
-(defvar tcl-prompt-regexp "^\\(% \\|\\)"
- "*If not nil, a regexp that will match the prompt in the inferior process.
-If nil, the prompt is the name of the application with \">\" appended.
-
-The default is \"^\\(% \\|\\)\", which will match the default primary
-and secondary prompts for tclsh and wish.")
-
-(defvar inferior-tcl-source-command "source %s\n"
- "*Format-string for building a Tcl command to load a file.
-This format string should use `%s' to substitute a file name
-and should result in a Tcl expression that will command the
-inferior Tcl to load that file. The filename will be appropriately
-quoted for Tcl.")
-
-;;
-;; Keymaps, abbrevs, syntax tables.
-;;
-
-(defvar tcl-mode-abbrev-table nil
- "Abbrev table in use in Tcl-mode buffers.")
-(if tcl-mode-abbrev-table
- ()
- (define-abbrev-table 'tcl-mode-abbrev-table ()))
-
-(defvar tcl-mode-map ()
- "Keymap used in Tcl mode.")
-
-(defvar tcl-mode-syntax-table nil
- "Syntax table in use in Tcl-mode buffers.")
-(if tcl-mode-syntax-table
- ()
- (setq tcl-mode-syntax-table (make-syntax-table))
- (modify-syntax-entry ?% "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?@ "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?& "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?* "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?+ "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?- "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?. "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?: "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?! "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?$ "_" tcl-mode-syntax-table) ; FIXME use "'"?
- (modify-syntax-entry ?/ "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?~ "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?< "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?= "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?> "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?| "_" tcl-mode-syntax-table)
- (modify-syntax-entry ?\( "()" tcl-mode-syntax-table)
- (modify-syntax-entry ?\) ")(" tcl-mode-syntax-table)
- (modify-syntax-entry ?\; "." tcl-mode-syntax-table)
- (modify-syntax-entry ?\n "> " tcl-mode-syntax-table)
- (modify-syntax-entry ?\f "> " tcl-mode-syntax-table)
- (modify-syntax-entry ?# "< " tcl-mode-syntax-table))
-
-(defvar inferior-tcl-mode-map nil
- "Keymap used in Inferior Tcl mode.")
-
-;; XEmacs menu.
-(defvar tcl-xemacs-menu
- '(["Beginning of function" tcl-beginning-of-defun t]
- ["End of function" tcl-end-of-defun t]
- ["Mark function" tcl-mark-defun t]
- ["Indent region" indent-region (tcl-mark)]
- ["Comment region" comment-region (tcl-mark)]
- ["Uncomment region" tcl-uncomment-region (tcl-mark)]
- "----"
- ["Show Tcl process buffer" inferior-tcl t]
- ["Send function to Tcl process" tcl-eval-defun
- (and inferior-tcl-buffer (get-buffer inferior-tcl-buffer))]
- ["Send region to Tcl process" tcl-eval-region
- (and inferior-tcl-buffer (get-buffer inferior-tcl-buffer))]
- ["Send file to Tcl process" tcl-load-file
- (and inferior-tcl-buffer (get-buffer inferior-tcl-buffer))]
- ["Restart Tcl process with file" tcl-restart-with-file t]
- "----"
- ["Tcl help" tcl-help-on-word tcl-help-directory-list]
- ["Send bug report" tcl-submit-bug-report t])
- "XEmacs menu for Tcl mode.")
-
-;; GNU Emacs does menus via keymaps. Do it in a function in case we
-;; later decide to add it to inferior Tcl mode as well.
-(defun tcl-add-fsf-menu (map)
- (define-key map [menu-bar] (make-sparse-keymap))
- ;; This fails in Emacs 19.22 and earlier.
- (require 'lmenu)
- (let ((menu (make-lucid-menu-keymap "Tcl" tcl-xemacs-menu)))
- (define-key map [menu-bar tcl] (cons "Tcl" menu))
- ;; The following is intended to compute the key sequence
- ;; information for the menu. It doesn't work.
- (x-popup-menu nil menu)))
-
-(defun tcl-fill-mode-map ()
- (define-key tcl-mode-map "{" 'tcl-electric-char)
- (define-key tcl-mode-map "}" 'tcl-electric-brace)
- (define-key tcl-mode-map "[" 'tcl-electric-char)
- (define-key tcl-mode-map "]" 'tcl-electric-char)
- (define-key tcl-mode-map ";" 'tcl-electric-char)
- (define-key tcl-mode-map "#" 'tcl-electric-hash)
- ;; FIXME.
- (define-key tcl-mode-map "\e\C-a" 'tcl-beginning-of-defun)
- ;; FIXME.
- (define-key tcl-mode-map "\e\C-e" 'tcl-end-of-defun)
- ;; FIXME.
- (define-key tcl-mode-map "\e\C-h" 'tcl-mark-defun)
- (define-key tcl-mode-map "\e\C-q" 'indent-tcl-exp)
- (define-key tcl-mode-map "\177" 'backward-delete-char-untabify)
- (define-key tcl-mode-map "\t" 'tcl-indent-command)
- (define-key tcl-mode-map "\M-;" 'tcl-indent-for-comment)
- (define-key tcl-mode-map "\M-\C-x" 'tcl-eval-defun)
- (define-key tcl-mode-map "\C-c\C-b" 'tcl-submit-bug-report)
- (and (fboundp 'comment-region)
- (define-key tcl-mode-map "\C-c\C-c" 'comment-region))
- (define-key tcl-mode-map "\C-c\C-i" 'tcl-help-on-word)
- (define-key tcl-mode-map "\C-c\C-v" 'tcl-eval-defun)
- (define-key tcl-mode-map "\C-c\C-f" 'tcl-load-file)
- (define-key tcl-mode-map "\C-c\C-t" 'inferior-tcl)
- (define-key tcl-mode-map "\C-c\C-x" 'tcl-eval-region)
- (define-key tcl-mode-map "\C-c\C-s" 'switch-to-tcl)
-
- ;; Make menus.
- (if (and tcl-using-emacs-19 (not tcl-using-xemacs-19))
- (progn
- (tcl-add-fsf-menu tcl-mode-map))))
-
-(defun tcl-fill-inferior-map ()
- (define-key inferior-tcl-mode-map "\t" 'comint-dynamic-complete)
- (define-key inferior-tcl-mode-map "\M-?"
- 'comint-dynamic-list-filename-completions)
- (define-key inferior-tcl-mode-map "\e\C-a" 'tcl-beginning-of-defun)
- (define-key inferior-tcl-mode-map "\e\C-e" 'tcl-end-of-defun)
- (define-key inferior-tcl-mode-map "\177" 'backward-delete-char-untabify)
- (define-key inferior-tcl-mode-map "\M-\C-x" 'tcl-eval-defun)
- (define-key inferior-tcl-mode-map "\C-c\C-b" 'tcl-submit-bug-report)
- (define-key inferior-tcl-mode-map "\C-c\C-i" 'tcl-help-on-word)
- (define-key inferior-tcl-mode-map "\C-c\C-v" 'tcl-eval-defun)
- (define-key inferior-tcl-mode-map "\C-c\C-f" 'tcl-load-file)
- (define-key inferior-tcl-mode-map "\C-c\C-t" 'inferior-tcl)
- (define-key inferior-tcl-mode-map "\C-c\C-x" 'tcl-eval-region)
- (define-key inferior-tcl-mode-map "\C-c\C-s" 'switch-to-tcl))
-
-(if tcl-mode-map
- ()
- (setq tcl-mode-map (make-sparse-keymap))
- (tcl-fill-mode-map))
-
-(if inferior-tcl-mode-map
- ()
- ;; FIXME Use keymap inheritance here? FIXME we override comint
- ;; keybindings here. Maybe someone has a better set?
- (setq inferior-tcl-mode-map (copy-keymap comint-mode-map))
- (tcl-fill-inferior-map))
-
-
-(defvar inferior-tcl-buffer nil
- "*The current inferior-tcl process buffer.
-
-MULTIPLE PROCESS SUPPORT
-===========================================================================
-To run multiple Tcl processes, you start the first up with
-\\[inferior-tcl]. It will be in a buffer named `*inferior-tcl*'.
-Rename this buffer with \\[rename-buffer]. You may now start up a new
-process with another \\[inferior-tcl]. It will be in a new buffer,
-named `*inferior-tcl*'. You can switch between the different process
-buffers with \\[switch-to-buffer].
-
-Commands that send text from source buffers to Tcl processes -- like
-`tcl-eval-defun' or `tcl-load-file' -- have to choose a process to
-send to, when you have more than one Tcl process around. This is
-determined by the global variable `inferior-tcl-buffer'. Suppose you
-have three inferior Lisps running:
- Buffer Process
- foo inferior-tcl
- bar inferior-tcl<2>
- *inferior-tcl* inferior-tcl<3>
-If you do a \\[tcl-eval-defun] command on some Lisp source code, what
-process do you send it to?
-
-- If you're in a process buffer (foo, bar, or *inferior-tcl*),
- you send it to that process.
-- If you're in some other buffer (e.g., a source file), you
- send it to the process attached to buffer `inferior-tcl-buffer'.
-This process selection is performed by function `inferior-tcl-proc'.
-
-Whenever \\[inferior-tcl] fires up a new process, it resets
-`inferior-tcl-buffer' to be the new process's buffer. If you only run
-one process, this does the right thing. If you run multiple
-processes, you can change `inferior-tcl-buffer' to another process
-buffer with \\[set-variable].")
-
-;;
-;; Hooks and other customization.
-;;
-
-(defvar tcl-mode-hook nil
- "Hook run on entry to Tcl mode.
-
-Several functions exist which are useful to run from your
-`tcl-mode-hook' (see each function's documentation for more
-information):
-
- tcl-guess-application
- Guesses a default setting for `tcl-application' based on any
- \"#!\" line at the top of the file.
- tcl-hashify-buffer
- Quotes all \"#\" characters that don't correspond to actual
- Tcl comments. (Useful when editing code not originally created
- with this mode).
- tcl-auto-fill-mode
- Auto-filling of Tcl comments.
-
-Emacs 19 users can add functions to the hook with `add-hook':
-
- (add-hook 'tcl-mode-hook 'tcl-guess-application)
-
-Emacs 18 users must use `setq':
-
- (setq tcl-mode-hook (cons 'tcl-guess-application tcl-mode-hook))")
-
-
-(defvar inferior-tcl-mode-hook nil
- "Hook for customizing Inferior Tcl mode.")
-
-(defvar tcl-proc-list
- '("proc" "method" "itcl_class")
- "List of commands whose first argument defines something.
-This exists because some people (eg, me) use \"defvar\" et al.
-Call `tcl-set-proc-regexp' and `tcl-set-font-lock-keywords'
-after changing this list.")
-
-(defvar tcl-proc-regexp nil
- "Regexp to use when matching proc headers.")
-
-(defvar tcl-typeword-list
- '("global" "upvar" "inherit" "public" "protected" "common")
- "List of Tcl keywords denoting \"type\". Used only for highlighting.
-Call `tcl-set-font-lock-keywords' after changing this list.")
-
-;; Generally I've picked control operators to be keywords.
-(defvar tcl-keyword-list
- '("if" "then" "else" "elseif" "for" "foreach" "break" "continue" "while"
- "eval" "case" "in" "switch" "default" "exit" "error" "proc" "return"
- "uplevel" "constructor" "destructor" "itcl_class" "loop" "for_array_keys"
- "for_recursive_glob" "for_file")
- "List of Tcl keywords. Used only for highlighting.
-Default list includes some TclX keywords.
-Call `tcl-set-font-lock-keywords' after changing this list.")
-
-(defvar tcl-font-lock-keywords nil
- "Keywords to highlight for Tcl. See variable `font-lock-keywords'.
-This variable is generally set from `tcl-proc-regexp',
-`tcl-typeword-list', and `tcl-keyword-list' by the function
-`tcl-set-font-lock-keywords'.")
-
-;; FIXME need some way to recognize variables because array refs look
-;; like 2 sexps.
-(defvar tcl-type-alist
- '(
- ("proc" nil tcl-expr tcl-commands)
- ("method" nil tcl-expr tcl-commands)
- ("destructor" tcl-commands)
- ("constructor" tcl-commands)
- ("expr" tcl-expr)
- ("catch" tcl-commands)
- ("if" tcl-expr "then" tcl-commands)
- ("elseif" tcl-expr "then" tcl-commands)
- ("elseif" tcl-expr tcl-commands)
- ("if" tcl-expr tcl-commands)
- ("while" tcl-expr tcl-commands)
- ("for" tcl-commands tcl-expr tcl-commands tcl-commands)
- ("foreach" nil nil tcl-commands)
- ("for_file" nil nil tcl-commands)
- ("for_array_keys" nil nil tcl-commands)
- ("for_recursive_glob" nil nil nil tcl-commands)
- ;; Loop handling is not perfect, because the third argument can be
- ;; either a command or an expr, and there is no real way to look
- ;; forward.
- ("loop" nil tcl-expr tcl-expr tcl-commands)
- ("loop" nil tcl-expr tcl-commands)
- )
- "Alist that controls indentation.
-\(Actually, this really only controls what happens on continuation lines).
-Each entry looks like `(KEYWORD TYPE ...)'.
-Each type entry describes a sexp after the keyword, and can be one of:
-* nil, meaning that this sexp has no particular type.
-* tcl-expr, meaning that this sexp is an arithmetic expression.
-* tcl-commands, meaning that this sexp holds Tcl commands.
-* a string, which must exactly match the string at the corresponding
- position for a match to be made.
-
-For example, the entry for the \"loop\" command is:
-
- (\"loop\" nil tcl-expr tcl-commands)
-
-This means that the \"loop\" command has three arguments. The first
-argument is ignored (for indentation purposes). The second argument
-is a Tcl expression, and the last argument is Tcl commands.")
-
-(defvar tcl-explain-indentation nil
- "If not `nil', debugging message will be printed during indentation.")
-
-\f
-
-;;
-;; Work around differences between various versions of Emacs.
-;;
-
-;; We use this because Lemacs 19.9 has what we need.
-(defconst tcl-pps-has-arg-6
- (or tcl-using-emacs-19
- (and tcl-using-xemacs-19
- (condition-case nil
- (progn
- (parse-partial-sexp (point) (point) nil nil nil t)
- t)
- (error nil))))
- "t if using an emacs which supports sixth (\"commentstop\") argument
-to parse-partial-sexp.")
-
-;; Its pretty bogus to have to do this, but there is no easier way to
-;; say "match not syntax-1 and not syntax-2". Too bad you can't put
-;; \s in [...]. This sickness is used in Emacs 19 to match a defun
-;; starter. (It is used for this in v18 as well).
-;;(defconst tcl-omit-ws-regexp
-;; (concat "^\\(\\s"
-;; (mapconcat 'char-to-string "w_.()\"\\$'/" "\\|\\s")
-;; "\\)\\S(*")
-;; "Regular expression that matches everything except space, comment
-;;starter, and comment ender syntax codes.")
-
-;; FIXME? Instead of using the hairy regexp above, we just use a
-;; simple one.
-;;(defconst tcl-omit-ws-regexp "^[^] \t\n#}]\\S(*"
-;; "Regular expression used in locating function definitions.")
-
-;; Here's another stab. I think this one actually works. Now the
-;; problem seems to be that there is a bug in Emacs 19.22 where
-;; end-of-defun doesn't really use the brace matching the one that
-;; trails defun-prompt-regexp.
-(defconst tcl-omit-ws-regexp "^[^ \t\n#}][^\n}]+}*[ \t]+")
-
-(defun tcl-internal-beginning-of-defun (&optional arg)
- "Move backward to next beginning-of-defun.
-With argument, do this that many times.
-Returns t unless search stops due to end of buffer."
- (interactive "p")
- (if (or (null arg) (= arg 0))
- (setq arg 1))
- (let (success)
- (while (progn
- (setq arg (1- arg))
- (and (>= arg 0)
- (setq success
- (re-search-backward tcl-omit-ws-regexp nil 'move 1))))
- (while (and (looking-at "[]#}]")
- (setq success
- (re-search-backward tcl-omit-ws-regexp nil 'move 1)))))
- (beginning-of-line)
- (not (null success))))
-
-(defun tcl-internal-end-of-defun (&optional arg)
- "Move forward to next end of defun.
-An end of a defun is found by moving forward from the beginning of one."
- (interactive "p")
- (if (or (null arg) (= arg 0)) (setq arg 1))
- (let ((start (point)))
- ;; Was forward-char. I think this works a little better.
- (forward-line)
- (tcl-beginning-of-defun)
- (while (> arg 0)
- (while (and (re-search-forward tcl-omit-ws-regexp nil 'move 1)
- (progn (beginning-of-line) t)
- (looking-at "[]#}]")
- (progn (forward-line) t)))
- (let ((next-line (save-excursion
- (forward-line)
- (point))))
- (while (< (point) next-line)
- (forward-sexp)))
- (forward-line)
- (if (> (point) start) (setq arg (1- arg))))))
-
-;; In Emacs 19, we can use begining-of-defun as long as we set up a
-;; certain regexp. In Emacs 18, we need our own function.
-(fset 'tcl-beginning-of-defun
- (if tcl-using-emacs-19
- 'beginning-of-defun
- 'tcl-internal-beginning-of-defun))
-
-;; Ditto end-of-defun.
-(fset 'tcl-end-of-defun
- (if (and tcl-using-emacs-19 (not tcl-using-xemacs-19))
- 'end-of-defun
- 'tcl-internal-end-of-defun))
-
-;; Internal mark-defun that is used for losing Emacsen.
-(defun tcl-internal-mark-defun ()
- "Put mark at end of Tcl function, point at beginning."
- (interactive)
- (push-mark (point))
- (tcl-end-of-defun)
- (if tcl-using-emacs-19
- (push-mark (point) nil t)
- (push-mark (point)))
- (tcl-beginning-of-defun)
- (backward-paragraph))
-
-;; In GNU Emacs 19-23 and later, mark-defun works as advertised. I
-;; don't know about XEmacs, so for now it and Emacs 18 just lose.
-(fset 'tcl-mark-defun
- (if tcl-using-emacs-19-23
- 'mark-defun
- 'tcl-internal-mark-defun))
-
-;; In GNU Emacs 19, mark takes an additional "force" argument. I
-;; don't know about XEmacs, so I'm just assuming it is the same.
-;; Emacs 18 doesn't have this argument.
-(defun tcl-mark ()
- "Return mark, or nil if none."
- (if tcl-using-emacs-19
- (mark t)
- (mark)))
-
-\f
-
-;;
-;; Some helper functions.
-;;
-
-(defun tcl-set-proc-regexp ()
- "Set `tcl-proc-regexp' from variable `tcl-proc-list'."
- (setq tcl-proc-regexp (concat "^\\s-*\\("
- (mapconcat 'identity tcl-proc-list "\\|")
- "\\)[ \t]+")))
-
-(defun tcl-set-font-lock-keywords ()
- "Set `tcl-font-lock-keywords'.
-Uses variables `tcl-proc-regexp' and `tcl-keyword-list'."
- (setq tcl-font-lock-keywords
- (list
- ;; Names of functions (and other "defining things").
- (list (concat tcl-proc-regexp "\\([^ \t\n]+\\)")
- 2 'font-lock-function-name-face)
-
- ;; Names of type-defining things.
- (list (concat "\\(\\s-\\|^\\)\\("
- ;; FIXME Use 'regexp-quote?
- (mapconcat 'identity tcl-typeword-list "\\|")
- "\\)\\(\\s-\\|$\\)")
- 2 'font-lock-type-face)
-
- ;; Keywords. Only recognized if surrounded by whitespace.
- ;; FIXME consider using "not word or symbol", not
- ;; "whitespace".
- (cons (concat "\\(\\s-\\|^\\)\\("
- ;; FIXME Use regexp-quote?
- (mapconcat 'identity tcl-keyword-list "\\|")
- "\\)\\(\\s-\\|$\\)")
- 2)
- )))
-
-(if tcl-proc-regexp
- ()
- (tcl-set-proc-regexp))
-
-(if tcl-font-lock-keywords
- ()
- (tcl-set-font-lock-keywords))
-
-\f
-
-;;
-;; The mode itself.
-;;
-
-;;;###autoload
-(defun tcl-mode ()
- "Major mode for editing Tcl code.
-Expression and list commands understand all Tcl brackets.
-Tab indents for Tcl code.
-Paragraphs are separated by blank lines only.
-Delete converts tabs to spaces as it moves back.
-
-Variables controlling indentation style:
- tcl-indent-level
- Indentation of Tcl statements within surrounding block.
- tcl-continued-indent-level
- Indentation of continuation line relative to first line of command.
-
-Variables controlling user interaction with mode (see variable
-documentation for details):
- tcl-tab-always-indent
- Controls action of TAB key.
- tcl-auto-newline
- Non-nil means automatically newline before and after braces, brackets,
- and semicolons inserted in Tcl code.
- tcl-electric-hash-style
- Controls action of `#' key.
- tcl-use-hairy-comment-detector
- If t, use more complicated, but slower, comment detector.
- This variable is only used in GNU Emacs 19.
- tcl-use-smart-word-finder
- If not nil, use a smarter, Tcl-specific way to find the current
- word when looking up help on a Tcl command.
-
-Turning on Tcl mode calls the value of the variable `tcl-mode-hook'
-with no args, if that value is non-nil. Read the documentation for
-`tcl-mode-hook' to see what kinds of interesting hook functions
-already exist.
-
-Commands:
-\\{tcl-mode-map}"
- (interactive)
- (kill-all-local-variables)
- (use-local-map tcl-mode-map)
- (setq major-mode 'tcl-mode)
- (setq mode-name "Tcl")
- (setq local-abbrev-table tcl-mode-abbrev-table)
- (set-syntax-table tcl-mode-syntax-table)
-
- (make-local-variable 'paragraph-start)
- (make-local-variable 'paragraph-separate)
- (if (and tcl-using-emacs-19-23
- (>= emacs-minor-version 29))
- (progn
- ;; In Emacs 19.29, you aren't supposed to start these with a
- ;; ^.
- (setq paragraph-start "$\\|\f")
- (setq paragraph-separate paragraph-start))
- (setq paragraph-start (concat "^$\\|" page-delimiter))
- (setq paragraph-separate paragraph-start))
- (make-local-variable 'paragraph-ignore-fill-prefix)
- (setq paragraph-ignore-fill-prefix t)
- (make-local-variable 'fill-paragraph-function)
- (setq fill-paragraph-function 'tcl-do-fill-paragraph)
-
- (make-local-variable 'indent-line-function)
- (setq indent-line-function 'tcl-indent-line)
- ;; Tcl doesn't require a final newline.
- ;; (make-local-variable 'require-final-newline)
- ;; (setq require-final-newline t)
-
- (make-local-variable 'comment-start)
- (setq comment-start "# ")
- (make-local-variable 'comment-start-skip)
- (setq comment-start-skip "#+ *")
- (make-local-variable 'comment-column)
- (setq comment-column 40)
- (make-local-variable 'comment-end)
- (setq comment-end "")
-
- (make-local-variable 'outline-regexp)
- (setq outline-regexp "[^\n\^M]")
- (make-local-variable 'outline-level)
- (setq outline-level 'tcl-outline-level)
-
- (make-local-variable 'font-lock-keywords)
- (setq font-lock-keywords tcl-font-lock-keywords)
-
- ;; The following only really makes sense under GNU Emacs 19.
- (make-local-variable 'imenu-create-index-function)
- (setq imenu-create-index-function 'tcl-imenu-create-index-function)
- (make-local-variable 'parse-sexp-ignore-comments)
-
- ;; Settings for new dabbrev code.
- (make-local-variable 'dabbrev-case-fold-search)
- (setq dabbrev-case-fold-search nil)
- (make-local-variable 'dabbrev-case-replace)
- (setq dabbrev-case-replace nil)
- (make-local-variable 'dabbrev-abbrev-skip-leading-regexp)
- (setq dabbrev-abbrev-skip-leading-regexp "[$!]")
- (make-local-variable 'dabbrev-abbrev-char-regexp)
- (setq dabbrev-abbrev-char-regexp "\\sw\\|\\s_")
-
- (if tcl-using-emacs-19
- (progn
- ;; This can only be set to t in Emacs 19 and XEmacs.
- ;; Emacs 18 and Epoch lose.
- (setq parse-sexp-ignore-comments t)
- ;; XEmacs has defun-prompt-regexp, but I don't believe
- ;; that it works for end-of-defun -- only for
- ;; beginning-of-defun.
- (make-local-variable 'defun-prompt-regexp)
- (setq defun-prompt-regexp tcl-omit-ws-regexp)
- ;; The following doesn't work in Lucid Emacs 19.6, but maybe
- ;; it will appear in later versions.
- (make-local-variable 'add-log-current-defun-function)
- (setq add-log-current-defun-function 'add-log-tcl-defun))
- (setq parse-sexp-ignore-comments nil))
-
- ;; Put Tcl menu into menubar for XEmacs. This happens
- ;; automatically for GNU Emacs.
- (if (and tcl-using-xemacs-19
- current-menubar
- (not (assoc "Tcl" current-menubar)))
- (progn
- (set-buffer-menubar (copy-sequence current-menubar))
- (add-menu nil "Tcl" tcl-xemacs-menu)))
- ;; Append Tcl menu to popup menu for XEmacs.
- (if (and tcl-using-xemacs-19 (boundp 'mode-popup-menu))
- (setq mode-popup-menu
- (cons (concat mode-name " Mode Commands") tcl-xemacs-menu)))
-
- ;; If hilit19 is loaded, add our stuff.
- (if (featurep 'hilit19)
- (tcl-hilit))
-
- (run-hooks 'tcl-mode-hook))
-
-\f
-
-;; This is used for braces, brackets, and semi (except for closing
-;; braces, which are handled specially).
-(defun tcl-electric-char (arg)
- "Insert character and correct line's indentation."
- (interactive "p")
- ;; Indent line first; this looks better if parens blink.
- (tcl-indent-line)
- (self-insert-command arg)
- (if (and tcl-auto-newline (= last-command-char ?\;))
- (progn
- (newline)
- (tcl-indent-line))))
-
-;; This is used for closing braces. If tcl-auto-newline is set, can
-;; insert a newline both before and after the brace, depending on
-;; context. FIXME should this be configurable? Does anyone use this?
-(defun tcl-electric-brace (arg)
- "Insert character and correct line's indentation."
- (interactive "p")
- ;; If auto-newlining and there is stuff on the same line, insert a
- ;; newline first.
- (if tcl-auto-newline
- (progn
- (if (save-excursion
- (skip-chars-backward " \t")
- (bolp))
- ()
- (tcl-indent-line)
- (newline))
- ;; In auto-newline case, must insert a newline after each
- ;; brace. So an explicit loop is needed.
- (while (> arg 0)
- (insert last-command-char)
- (tcl-indent-line)
- (newline)
- (setq arg (1- arg))))
- (self-insert-command arg))
- (tcl-indent-line))
-
-\f
-
-(defun tcl-indent-command (&optional arg)
- "Indent current line as Tcl code, or in some cases insert a tab character.
-If tcl-tab-always-indent is t (the default), always indent current line.
-If tcl-tab-always-indent is nil and point is not in the indentation
-area at the beginning of the line, a TAB is inserted.
-Other values of tcl-tab-always-indent cause the first possible action
-from the following list to take place:
-
- 1. Move from beginning of line to correct indentation.
- 2. Delete an empty comment.
- 3. Move forward to start of comment, indenting if necessary.
- 4. Move forward to end of line, indenting if necessary.
- 5. Create an empty comment.
- 6. Move backward to start of comment, indenting if necessary."
- (interactive "p")
- (cond
- ((not tcl-tab-always-indent)
- ;; Indent if in indentation area, otherwise insert TAB.
- (if (<= (current-column) (current-indentation))
- (tcl-indent-line)
- (self-insert-command arg)))
- ((eq tcl-tab-always-indent t)
- ;; Always indent.
- (tcl-indent-line))
- (t
- ;; "Perl-mode" style TAB command.
- (let* ((ipoint (point))
- (eolpoint (progn
- (end-of-line)
- (point)))
- (comment-p (tcl-in-comment)))
- (cond
- ((= ipoint (save-excursion
- (beginning-of-line)
- (point)))
- (beginning-of-line)
- (tcl-indent-line)
- ;; If indenting didn't leave us in column 0, go to the
- ;; indentation. Otherwise leave point at end of line. This
- ;; is a hack.
- (if (= (point) (save-excursion
- (beginning-of-line)
- (point)))
- (end-of-line)
- (back-to-indentation)))
- ((and comment-p (looking-at "[ \t]*$"))
- ;; Empty comment, so delete it. We also delete any ";"
- ;; characters at the end of the line. I think this is
- ;; friendlier, but I don't know how other people will feel.
- (backward-char)
- (skip-chars-backward " \t;")
- (delete-region (point) eolpoint))
- ((and comment-p (< ipoint (point)))
- ;; Before comment, so skip to it.
- (tcl-indent-line)
- (indent-for-comment))
- ((/= ipoint eolpoint)
- ;; Go to end of line (since we're not there yet).
- (goto-char eolpoint)
- (tcl-indent-line))
- ((not comment-p)
- (tcl-indent-line)
- (tcl-indent-for-comment))
- (t
- ;; Go to start of comment. We don't leave point where it is
- ;; because we want to skip comment-start-skip.
- (tcl-indent-line)
- (indent-for-comment)))))))
-
-(defun tcl-indent-line ()
- "Indent current line as Tcl code.
-Return the amount the indentation changed by."
- (let ((indent (calculate-tcl-indent nil))
- beg shift-amt
- (case-fold-search nil)
- (pos (- (point-max) (point))))
- (beginning-of-line)
- (setq beg (point))
- (cond ((eq indent nil)
- (setq indent (current-indentation)))
- (t
- (skip-chars-forward " \t")
- (if (listp indent) (setq indent (car indent)))
- (cond ((= (following-char) ?})
- (setq indent (- indent tcl-indent-level)))
- ((= (following-char) ?\])
- (setq indent (- indent 1))))))
- (skip-chars-forward " \t")
- (setq shift-amt (- indent (current-column)))
- (if (zerop shift-amt)
- (if (> (- (point-max) pos) (point))
- (goto-char (- (point-max) pos)))
- (delete-region beg (point))
- (indent-to indent)
- ;; If initial point was within line's indentation,
- ;; position after the indentation. Else stay at same point in text.
- (if (> (- (point-max) pos) (point))
- (goto-char (- (point-max) pos))))
- shift-amt))
-
-(defun tcl-figure-type ()
- "Determine type of sexp at point.
-This is either 'tcl-expr, 'tcl-commands, or nil. Puts point at start
-of sexp that indicates types.
-
-See documentation for variable `tcl-type-alist' for more information."
- (let ((count 0)
- result
- word-stack)
- (while (and (< count 5)
- (not result))
- (condition-case nil
- (progn
- ;; FIXME should use "tcl-backward-sexp", which would skip
- ;; over entire variables, etc.
- (backward-sexp)
- (if (looking-at "[a-zA-Z_]+")
- (let ((list tcl-type-alist)
- entry)
- (setq word-stack (cons (tcl-word-no-props) word-stack))
- (while (and list (not result))
- (setq entry (car list))
- (setq list (cdr list))
- (let ((index 0))
- (while (and entry (<= index count))
- ;; Abort loop if string does not match word on
- ;; stack.
- (and (stringp (car entry))
- (not (string= (car entry)
- (nth index word-stack)))
- (setq entry nil))
- (setq entry (cdr entry))
- (setq index (1+ index)))
- (and (> index count)
- (not (stringp (car entry)))
- (setq result (car entry)))
- )))
- (setq word-stack (cons nil word-stack))))
- (error nil))
- (setq count (1+ count)))
- (and tcl-explain-indentation
- (message "Indentation type %s" result))
- result))
-
-(defun calculate-tcl-indent (&optional parse-start)
- "Return appropriate indentation for current line as Tcl code.
-In usual case returns an integer: the column to indent to.
-Returns nil if line starts inside a string, t if in a comment."
- (save-excursion
- (beginning-of-line)
- (let* ((indent-point (point))
- (case-fold-search nil)
- (continued-line
- (save-excursion
- (if (bobp)
- nil
- (backward-char)
- (= ?\\ (preceding-char)))))
- (continued-indent-value (if continued-line
- tcl-continued-indent-level
- 0))
- state
- containing-sexp
- found-next-line)
- (if parse-start
- (goto-char parse-start)
- (tcl-beginning-of-defun))
- (while (< (point) indent-point)
- (setq parse-start (point))
- (setq state (parse-partial-sexp (point) indent-point 0))
- (setq containing-sexp (car (cdr state))))
- (cond ((or (nth 3 state) (nth 4 state))
- ;; Inside comment or string. Return nil or t if should
- ;; not change this line
- (nth 4 state))
- ((null containing-sexp)
- ;; Line is at top level.
- continued-indent-value)
- (t
- ;; Set expr-p if we are looking at the expression part of
- ;; an "if", "expr", etc statement. Set commands-p if we
- ;; are looking at the body part of an if, while, etc
- ;; statement. FIXME Should check for "for" loops here.
- (goto-char containing-sexp)
- (let* ((sexpr-type (tcl-figure-type))
- (expr-p (eq sexpr-type 'tcl-expr))
- (commands-p (eq sexpr-type 'tcl-commands))
- (expr-start (point)))
- ;; Find the first statement in the block and indent
- ;; like it. The first statement in the block might be
- ;; on the same line, so what we do is skip all
- ;; "virtually blank" lines, looking for a non-blank
- ;; one. A line is virtually blank if it only contains
- ;; a comment and whitespace. FIXME continued comments
- ;; aren't supported. They are a wart on Tcl anyway.
- ;; We do it this funky way because we want to know if
- ;; we've found a statement on some line _after_ the
- ;; line holding the sexp opener.
- (goto-char containing-sexp)
- (forward-char)
- (if (and (< (point) indent-point)
- (looking-at "[ \t]*\\(#.*\\)?$"))
- (progn
- (forward-line)
- (while (and (< (point) indent-point)
- (looking-at "[ \t]*\\(#.*\\)?$"))
- (setq found-next-line t)
- (forward-line))))
- (if (or continued-line
- (/= (char-after containing-sexp) ?{)
- expr-p)
- (progn
- ;; Line is continuation line, or the sexp opener
- ;; is not a curly brace, or we are are looking at
- ;; an `expr' expression (which must be split
- ;; specially). So indentation is column of first
- ;; good spot after sexp opener (with some added
- ;; in the continued-line case). If there is no
- ;; nonempty line before the indentation point, we
- ;; use the column of the character after the sexp
- ;; opener.
- (if (>= (point) indent-point)
- (progn
- (goto-char containing-sexp)
- (forward-char))
- (skip-chars-forward " \t"))
- (+ (current-column) continued-indent-value))
- ;; After a curly brace, and not a continuation line.
- ;; So take indentation from first good line after
- ;; start of block, unless that line is on the same
- ;; line as the opening brace. In this case use the
- ;; indentation of the opening brace's line, plus
- ;; another indent step. If we are in the body part
- ;; of an "if" or "while" then the indentation is
- ;; taken from the line holding the start of the
- ;; statement.
- (if (and (< (point) indent-point)
- found-next-line)
- (current-indentation)
- (if commands-p
- (goto-char expr-start)
- (goto-char containing-sexp))
- (+ (current-indentation) tcl-indent-level)))))))))
-
-\f
-
-(defun indent-tcl-exp ()
- "Indent each line of the Tcl grouping following point."
- (interactive)
- (let ((indent-stack (list nil))
- (contain-stack (list (point)))
- (case-fold-search nil)
- outer-loop-done inner-loop-done state ostate
- this-indent last-sexp continued-line
- (next-depth 0)
- last-depth)
- (save-excursion
- (forward-sexp 1))
- (save-excursion
- (setq outer-loop-done nil)
- (while (and (not (eobp)) (not outer-loop-done))
- (setq last-depth next-depth)
- ;; Compute how depth changes over this line
- ;; plus enough other lines to get to one that
- ;; does not end inside a comment or string.
- ;; Meanwhile, do appropriate indentation on comment lines.
- (setq inner-loop-done nil)
- (while (and (not inner-loop-done)
- (not (and (eobp) (setq outer-loop-done t))))
- (setq ostate state)
- (setq state (parse-partial-sexp (point) (progn (end-of-line) (point))
- nil nil state))
- (setq next-depth (car state))
- (if (and (car (cdr (cdr state)))
- (>= (car (cdr (cdr state))) 0))
- (setq last-sexp (car (cdr (cdr state)))))
- (if (or (nth 4 ostate))
- (tcl-indent-line))
- (if (or (nth 3 state))
- (forward-line 1)
- (setq inner-loop-done t)))
- (if (<= next-depth 0)
- (setq outer-loop-done t))
- (if outer-loop-done
- nil
- ;; If this line had ..))) (((.. in it, pop out of the levels
- ;; that ended anywhere in this line, even if the final depth
- ;; doesn't indicate that they ended.
- (while (> last-depth (nth 6 state))
- (setq indent-stack (cdr indent-stack)
- contain-stack (cdr contain-stack)
- last-depth (1- last-depth)))
- (if (/= last-depth next-depth)
- (setq last-sexp nil))
- ;; Add levels for any parens that were started in this line.
- (while (< last-depth next-depth)
- (setq indent-stack (cons nil indent-stack)
- contain-stack (cons nil contain-stack)
- last-depth (1+ last-depth)))
- (if (null (car contain-stack))
- (setcar contain-stack
- (or (car (cdr state))
- (save-excursion
- (forward-sexp -1)
- (point)))))
- (forward-line 1)
- (setq continued-line
- (save-excursion
- (backward-char)
- (= (preceding-char) ?\\)))
- (skip-chars-forward " \t")
- (if (eolp)
- nil
- (if (and (car indent-stack)
- (>= (car indent-stack) 0))
- ;; Line is on an existing nesting level.
- (setq this-indent (car indent-stack))
- ;; Just started a new nesting level.
- ;; Compute the standard indent for this level.
- (let ((val (calculate-tcl-indent
- (if (car indent-stack)
- (- (car indent-stack))))))
- (setcar indent-stack
- (setq this-indent val))
- (setq continued-line nil)))
- (cond ((not (numberp this-indent)))
- ((= (following-char) ?})
- (setq this-indent (- this-indent tcl-indent-level)))
- ((= (following-char) ?\])
- (setq this-indent (- this-indent 1))))
- ;; Put chosen indentation into effect.
- (or (null this-indent)
- (= (current-column)
- (if continued-line
- (+ this-indent tcl-indent-level)
- this-indent))
- (progn
- (delete-region (point) (progn (beginning-of-line) (point)))
- (indent-to
- (if continued-line
- (+ this-indent tcl-indent-level)
- this-indent)))))))))
- )
-
-\f
-
-;;
-;; Interfaces to other packages.
-;;
-
-(defun tcl-imenu-create-index-function ()
- "Generate alist of indices for imenu."
- (let ((re (concat tcl-proc-regexp "\\([^ \t\n{]+\\)"))
- alist prev-pos)
- (goto-char (point-min))
- (imenu-progress-message prev-pos 0)
- (save-match-data
- (while (re-search-forward re nil t)
- (imenu-progress-message prev-pos)
- ;; Position on start of proc name, not beginning of line.
- (setq alist (cons
- (cons (buffer-substring (match-beginning 2) (match-end 2))
- (match-beginning 2))
- alist))))
- (imenu-progress-message prev-pos 100)
- (nreverse alist)))
-
-;; FIXME Definition of function is very ad-hoc. Should use
-;; tcl-beginning-of-defun. Also has incestuous knowledge about the
-;; format of tcl-proc-regexp.
-(defun add-log-tcl-defun ()
- "Return name of Tcl function point is in, or nil."
- (save-excursion
- (end-of-line)
- (if (re-search-backward (concat tcl-proc-regexp "\\([^ \t\n{]+\\)") nil t)
- (buffer-substring (match-beginning 2)
- (match-end 2)))))
-
-(defun tcl-outline-level ()
- (save-excursion
- (skip-chars-forward " \t")
- (current-column)))
-
-\f
-
-;;
-;; Helper functions for inferior Tcl mode.
-;;
-
-;; This exists to let us delete the prompt when commands are sent
-;; directly to the inferior Tcl. See gud.el for an explanation of how
-;; it all works (I took it from there). This stuff doesn't really
-;; work as well as I'd like it to. But I don't believe there is
-;; anything useful that can be done.
-(defvar inferior-tcl-delete-prompt-marker nil)
-
-(defun tcl-filter (proc string)
- (let ((inhibit-quit t))
- (save-excursion
- (set-buffer (process-buffer proc))
- (goto-char (process-mark proc))
- ;; Delete prompt if requested.
- (if (marker-buffer inferior-tcl-delete-prompt-marker)
- (progn
- (delete-region (point) inferior-tcl-delete-prompt-marker)
- (set-marker inferior-tcl-delete-prompt-marker nil)))))
- (if tcl-using-emacs-19
- (comint-output-filter proc string)
- (funcall comint-output-filter string)))
-
-(defun tcl-send-string (proc string)
- (save-excursion
- (set-buffer (process-buffer proc))
- (goto-char (process-mark proc))
- (beginning-of-line)
- (if (looking-at comint-prompt-regexp)
- (set-marker inferior-tcl-delete-prompt-marker (point))))
- (comint-send-string proc string))
-
-(defun tcl-send-region (proc start end)
- (save-excursion
- (set-buffer (process-buffer proc))
- (goto-char (process-mark proc))
- (beginning-of-line)
- (if (looking-at comint-prompt-regexp)
- (set-marker inferior-tcl-delete-prompt-marker (point))))
- (comint-send-region proc start end))
-
-(defun switch-to-tcl (eob-p)
- "Switch to inferior Tcl process buffer.
-With argument, positions cursor at end of buffer."
- (interactive "P")
- (if (get-buffer inferior-tcl-buffer)
- (pop-to-buffer inferior-tcl-buffer)
- (error "No current inferior Tcl buffer"))
- (cond (eob-p
- (push-mark)
- (goto-char (point-max)))))
-
-(defun inferior-tcl-proc ()
- "Return current inferior Tcl process.
-See variable `inferior-tcl-buffer'."
- (let ((proc (get-buffer-process (if (eq major-mode 'inferior-tcl-mode)
- (current-buffer)
- inferior-tcl-buffer))))
- (or proc
- (error "No Tcl process; see variable `inferior-tcl-buffer'"))))
-
-(defun tcl-eval-region (start end &optional and-go)
- "Send the current region to the inferior Tcl process.
-Prefix argument means switch to the Tcl buffer afterwards."
- (interactive "r\nP")
- (let ((proc (inferior-tcl-proc)))
- (tcl-send-region proc start end)
- (tcl-send-string proc "\n")
- (if and-go (switch-to-tcl t))))
-
-(defun tcl-eval-defun (&optional and-go)
- "Send the current defun to the inferior Tcl process.
-Prefix argument means switch to the Tcl buffer afterwards."
- (interactive "P")
- (save-excursion
- (tcl-end-of-defun)
- (let ((end (point)))
- (tcl-beginning-of-defun)
- (tcl-eval-region (point) end)))
- (if and-go (switch-to-tcl t)))
-
-\f
-
-;;
-;; Inferior Tcl mode itself.
-;;
-
-(defun inferior-tcl-mode ()
- "Major mode for interacting with Tcl interpreter.
-
-A Tcl process can be started with M-x inferior-tcl.
-
-Entry to this mode runs the hooks comint-mode-hook and
-inferior-tcl-mode-hook, in that order.
-
-You can send text to the inferior Tcl process from other buffers
-containing Tcl source.
-
-Variables controlling Inferior Tcl mode:
- tcl-application
- Name of program to run.
- tcl-command-switches
- Command line arguments to `tcl-application'.
- tcl-prompt-regexp
- Matches prompt.
- inferior-tcl-source-command
- Command to use to read Tcl file in running application.
- inferior-tcl-buffer
- The current inferior Tcl process buffer. See variable
- documentation for details on multiple-process support.
-
-The following commands are available:
-\\{inferior-tcl-mode-map}"
- (interactive)
- (comint-mode)
- (setq comint-prompt-regexp (or tcl-prompt-regexp
- (concat "^"
- (regexp-quote tcl-application)
- ">")))
- (setq major-mode 'inferior-tcl-mode)
- (setq mode-name "Inferior Tcl")
- (if (boundp 'modeline-process)
- (setq modeline-process '(": %s")) ; For XEmacs.
- (setq mode-line-process '(": %s")))
- (use-local-map inferior-tcl-mode-map)
- (setq local-abbrev-table tcl-mode-abbrev-table)
- (set-syntax-table tcl-mode-syntax-table)
- (if tcl-using-emacs-19
- (progn
- (make-local-variable 'defun-prompt-regexp)
- (setq defun-prompt-regexp tcl-omit-ws-regexp)))
- (make-local-variable 'inferior-tcl-delete-prompt-marker)
- (setq inferior-tcl-delete-prompt-marker (make-marker))
- (set-process-filter (get-buffer-process (current-buffer)) 'tcl-filter)
- (run-hooks 'inferior-tcl-mode-hook))
-
-;;;###autoload
-(defun inferior-tcl (cmd)
- "Run inferior Tcl process.
-Prefix arg means enter program name interactively.
-See documentation for function `inferior-tcl-mode' for more information."
- (interactive
- (list (if current-prefix-arg
- (read-string "Run Tcl: " tcl-application)
- tcl-application)))
- (if (not (comint-check-proc "*inferior-tcl*"))
- (progn
- (set-buffer (apply (function make-comint) "inferior-tcl" cmd nil
- tcl-command-switches))
- (inferior-tcl-mode)))
- (make-local-variable 'tcl-application)
- (setq tcl-application cmd)
- (setq inferior-tcl-buffer "*inferior-tcl*")
- (switch-to-buffer "*inferior-tcl*"))
-
-(and (fboundp 'defalias)
- (defalias 'run-tcl 'inferior-tcl))
-
-\f
-
-;;
-;; Auto-fill support.
-;;
-
-(defun tcl-real-command-p ()
- "Return nil if point is not at the beginning of a command.
-A command is the first word on an otherwise empty line, or the
-first word following a semicolon, opening brace, or opening bracket."
- (save-excursion
- (skip-chars-backward " \t")
- (cond
- ((bobp) t)
- ((bolp)
- (backward-char)
- ;; Note -- continued comments are not supported here. I
- ;; consider those to be a wart on the language.
- (not (eq ?\\ (preceding-char))))
- (t
- (memq (preceding-char) '(?\; ?{ ?\[))))))
-
-;; FIXME doesn't actually return t. See last case.
-(defun tcl-real-comment-p ()
- "Return t if point is just after the `#' beginning a real comment.
-Does not check to see if previous char is actually `#'.
-A real comment is either at the beginning of the buffer,
-preceeded only by whitespace on the line, or has a preceeding
-semicolon, opening brace, or opening bracket on the same line."
- (save-excursion
- (backward-char)
- (tcl-real-command-p)))
-
-(defun tcl-hairy-scan-for-comment (state end always-stop)
- "Determine if point is in a comment.
-Returns a list of the form `(FLAG . STATE)'. STATE can be used
-as input to future invocations. FLAG is nil if not in comment,
-t otherwise. If in comment, leaves point at beginning of comment.
-Only works in Emacs 19. See also `tcl-simple-scan-for-comment', a
-simpler version that is often right, and works in Emacs 18."
- (let ((bol (save-excursion
- (goto-char end)
- (beginning-of-line)
- (point)))
- real-comment
- last-cstart)
- (while (and (not last-cstart) (< (point) end))
- (setq real-comment nil) ;In case we've looped around and it is
- ;set.
- (setq state (parse-partial-sexp (point) end nil nil state t))
- (if (nth 4 state)
- (progn
- ;; If ALWAYS-STOP is set, stop even if we don't have a
- ;; real comment, or if the comment isn't on the same line
- ;; as the end.
- (if always-stop (setq last-cstart (point)))
- ;; If we have a real comment, then set the comment
- ;; starting point if we are on the same line as the ending
- ;; location.
- (setq real-comment (tcl-real-comment-p))
- (if real-comment
- (progn
- (and (> (point) bol) (setq last-cstart (point)))
- ;; NOTE Emacs 19 has a misfeature whereby calling
- ;; parse-partial-sexp with COMMENTSTOP set and with
- ;; an initial list that says point is in a comment
- ;; will cause an immediate return. So we must skip
- ;; over the comment ourselves.
- (beginning-of-line 2)))
- ;; Frob the state to make it look like we aren't in a
- ;; comment.
- (setcar (nthcdr 4 state) nil))))
- (and last-cstart
- (goto-char last-cstart))
- (cons real-comment state)))
-
-(defun tcl-hairy-in-comment ()
- "Return t if point is in a comment, and leave point at beginning
-of comment."
- (let ((save (point)))
- (tcl-beginning-of-defun)
- (car (tcl-hairy-scan-for-comment nil save nil))))
-
-(defun tcl-simple-in-comment ()
- "Return t if point is in comment, and leave point at beginning
-of comment. This is faster that `tcl-hairy-in-comment', but is
-correct less often."
- (let ((save (point))
- comment)
- (beginning-of-line)
- (while (and (< (point) save) (not comment))
- (search-forward "#" save 'move)
- (setq comment (tcl-real-comment-p)))
- comment))
-
-(defun tcl-in-comment ()
- "Return t if point is in comment, and leave point at beginning
-of comment."
- (if (and tcl-pps-has-arg-6
- tcl-use-hairy-comment-detector)
- (tcl-hairy-in-comment)
- (tcl-simple-in-comment)))
-
-(defun tcl-do-fill-paragraph (ignore)
- "fill-paragraph function for Tcl mode. Only fills in a comment."
- (let (in-comment col where)
- (save-excursion
- (end-of-line)
- (setq in-comment (tcl-in-comment))
- (if in-comment
- (progn
- (setq where (1+ (point)))
- (setq col (1- (current-column))))))
- (and in-comment
- (save-excursion
- (back-to-indentation)
- (= col (current-column)))
- ;; In a comment. Set the fill prefix, and find the paragraph
- ;; boundaries by searching for lines that look like
- ;; comment-only lines.
- (let ((fill-prefix (buffer-substring (progn
- (beginning-of-line)
- (point))
- where))
- p-start p-end)
- ;; Search backwards.
- (save-excursion
- (while (looking-at "^[ \t]*#")
- (forward-line -1))
- (forward-line)
- (setq p-start (point)))
-
- ;; Search forwards.
- (save-excursion
- (while (looking-at "^[ \t]*#")
- (forward-line))
- (setq p-end (point)))
-
- ;; Narrow and do the fill.
- (save-restriction
- (narrow-to-region p-start p-end)
- (fill-paragraph ignore)))))
- t)
-
-(defun tcl-do-auto-fill ()
- "Auto-fill function for Tcl mode. Only auto-fills in a comment."
- (if (> (current-column) fill-column)
- (let ((fill-prefix "# ")
- in-comment col)
- (save-excursion
- (setq in-comment (tcl-in-comment))
- (if in-comment
- (setq col (1- (current-column)))))
- (if in-comment
- (progn
- (do-auto-fill)
- (save-excursion
- (back-to-indentation)
- (delete-region (point) (save-excursion
- (beginning-of-line)
- (point)))
- (indent-to-column col)))))))
-
-\f
-
-;;
-;; Help-related code.
-;;
-
-(defvar tcl-help-saved-dirs nil
- "Saved help directories.
-If `tcl-help-directory-list' changes, this allows `tcl-help-on-word'
-to update the alist.")
-
-(defvar tcl-help-alist nil
- "Alist with command names as keys and filenames as values.")
-
-(defun tcl-help-snarf-commands (dirlist)
- "Build alist of commands and filenames."
- (while dirlist
- (let ((files (directory-files (car dirlist) t)))
- (while files
- (if (and (file-directory-p (car files))
- (not
- (let ((fpart (file-name-nondirectory (car files))))
- (or (equal fpart ".")
- (equal fpart "..")))))
- (let ((matches (directory-files (car files) t)))
- (while matches
- (or (file-directory-p (car matches))
- (setq tcl-help-alist
- (cons
- (cons (file-name-nondirectory (car matches))
- (car matches))
- tcl-help-alist)))
- (setq matches (cdr matches)))))
- (setq files (cdr files))))
- (setq dirlist (cdr dirlist))))
-
-(defun tcl-reread-help-files ()
- "Set up to re-read files, and then do it."
- (interactive)
- (message "Building Tcl help file index...")
- (setq tcl-help-saved-dirs tcl-help-directory-list)
- (setq tcl-help-alist nil)
- (tcl-help-snarf-commands tcl-help-directory-list)
- (message "Building Tcl help file index...done"))
-
-(defun tcl-word-no-props ()
- "Like current-word, but strips properties."
- (let ((word (current-word)))
- (and (fboundp 'set-text-properties)
- (set-text-properties 0 (length word) nil word))
- word))
-
-(defun tcl-current-word (flag)
- "Return current command word, or nil.
-If FLAG is nil, just uses `current-word'.
-Otherwise scans backward for most likely Tcl command word."
- (if (and flag
- (memq major-mode '(tcl-mode inferior-tcl-mode)))
- (condition-case nil
- (save-excursion
- ;; Look backward for first word actually in alist.
- (if (bobp)
- ()
- (while (and (not (bobp))
- (not (tcl-real-command-p)))
- (backward-sexp)))
- (if (assoc (tcl-word-no-props) tcl-help-alist)
- (tcl-word-no-props)))
- (error nil))
- (tcl-word-no-props)))
-
-;;;###autoload
-(defun tcl-help-on-word (command &optional arg)
- "Get help on Tcl command. Default is word at point.
-Prefix argument means invert sense of `tcl-use-smart-word-finder'."
- (interactive
- (list
- (progn
- (if (not (equal tcl-help-directory-list tcl-help-saved-dirs))
- (tcl-reread-help-files))
- (let ((word (tcl-current-word
- (if current-prefix-arg
- (not tcl-use-smart-word-finder)
- tcl-use-smart-word-finder))))
- (completing-read
- (if (or (null word) (string= word ""))
- "Help on Tcl command: "
- (format "Help on Tcl command (default %s): " word))
- tcl-help-alist nil t)))
- current-prefix-arg))
- (if (not (equal tcl-help-directory-list tcl-help-saved-dirs))
- (tcl-reread-help-files))
- (if (string= command "")
- (setq command (tcl-current-word
- (if arg
- (not tcl-use-smart-word-finder)
- tcl-use-smart-word-finder))))
- (let* ((help (get-buffer-create "*Tcl help*"))
- (cell (assoc command tcl-help-alist))
- (file (and cell (cdr cell))))
- (set-buffer help)
- (delete-region (point-min) (point-max))
- (if file
- (progn
- (insert "*** " command "\n\n")
- (insert-file-contents file))
- (if (string= command "")
- (insert "Magical Pig!")
- (insert "Tcl command " command " not in help\n")))
- (set-buffer-modified-p nil)
- (goto-char (point-min))
- (display-buffer help)))
-
-\f
-
-;;
-;; Other interactive stuff.
-;;
-
-(defvar tcl-previous-dir/file nil
- "Record last directory and file used in loading.
-This holds a cons cell of the form `(DIRECTORY . FILE)'
-describing the last `tcl-load-file' command.")
-
-(defun tcl-load-file (file &optional and-go)
- "Load a Tcl file into the inferior Tcl process.
-Prefix argument means switch to the Tcl buffer afterwards."
- (interactive
- (list
- ;; car because comint-get-source returns a list holding the
- ;; filename.
- (car (comint-get-source "Load Tcl file: "
- (or (and
- (eq major-mode 'tcl-mode)
- (buffer-file-name))
- tcl-previous-dir/file)
- '(tcl-mode) t))
- current-prefix-arg))
- (comint-check-source file)
- (setq tcl-previous-dir/file (cons (file-name-directory file)
- (file-name-nondirectory file)))
- (tcl-send-string (inferior-tcl-proc)
- (format inferior-tcl-source-command (tcl-quote file)))
- (if and-go (switch-to-tcl t)))
-
-(defun tcl-restart-with-file (file &optional and-go)
- "Restart inferior Tcl with file.
-If an inferior Tcl process exists, it is killed first.
-Prefix argument means switch to the Tcl buffer afterwards."
- (interactive
- (list
- (car (comint-get-source "Restart with Tcl file: "
- (or (and
- (eq major-mode 'tcl-mode)
- (buffer-file-name))
- tcl-previous-dir/file)
- '(tcl-mode) t))
- current-prefix-arg))
- (let* ((buf (if (eq major-mode 'inferior-tcl-mode)
- (current-buffer)
- inferior-tcl-buffer))
- (proc (and buf (get-process buf))))
- (cond
- ((not (and buf (get-buffer buf)))
- ;; I think this will be ok.
- (inferior-tcl tcl-application)
- (tcl-load-file file and-go))
- ((or
- (not (comint-check-proc buf))
- (yes-or-no-p
- "A Tcl process is running, are you sure you want to reset it? "))
- (save-excursion
- (comint-check-source file)
- (setq tcl-previous-dir/file (cons (file-name-directory file)
- (file-name-nondirectory file)))
- (comint-exec (get-buffer-create buf)
- (if proc
- (process-name proc)
- "inferior-tcl")
- tcl-application file tcl-command-switches)
- (if and-go (switch-to-tcl t)))))))
-
-;; FIXME I imagine you can do this under Emacs 18. I just don't know
-;; how.
-(defun tcl-auto-fill-mode (&optional arg)
- "Like `auto-fill-mode', but controls filling of Tcl comments."
- (interactive "P")
- (and (not tcl-using-emacs-19)
- (error "You must use Emacs 19 to get this feature."))
- ;; Following code taken from "auto-fill-mode" (simple.el).
- (prog1
- (setq auto-fill-function
- (if (if (null arg)
- (not auto-fill-function)
- (> (prefix-numeric-value arg) 0))
- 'tcl-do-auto-fill
- nil))
- (force-mode-line-update)))
-
-;; hilit19 support from "Chris Alfeld" <calfeld@math.utah.edu>
-(defun tcl-hilit ()
- (hilit-set-mode-patterns
- '(tcl-mode)
- '(
- ("\\(^ *\\|\; *\\)#.*$" nil comment)
- ("[^\\]\\(\\$[A-Za-z0-9\\-\\_./\\(\\)]+\\)" 1 label)
- ("[^_]\\<\\(append\\|array\\|auto_execok\\|auto_load\\|auto_mkindex\\|auto_reset\\|break\\|case\\|catch\\|cd\\|close\\|concat\\|continue\\|eof\\|error\\|eval\\|exec\\|exit\\|expr\\|file\\|flush\\|for\\|foreach\\|format\\|gets\\|glob\\|global\\|history\\|if\\|incr\\|info\\|join\\|lappend\\|lindex\\|linsert\\|list\\|llength\\|lrange\\|lreplace\\|lsearch\\|lsort\\|open\\|pid\\|proc\\|puts\\|pwd\\|read\\|regexp\\|regsub\\|rename\\|return\\|scan\\|seek\\|set\\|source\\|split\\|string\\|switch\\|tell\\|time\\|trace\\|unknown\\|unset\\|uplevel\\|upvar\\|while\\)\\>[^_]" 1 keyword) ; tcl keywords
- ("[^_]\\<\\(after\\|bell\\|bind\\|bindtags\\|clipboard\\|destroy\\|fileevent\\|focus\\|grab\\|image\\|lower\\|option\\|pack\\|place\\|raise\\|scale\\|selection\\|send\\|subst\\|tk\\|tk_popup\\|tkwait\\|update\\|winfo\\|wm\\)\\>[^_]" 1 define) ; tk keywords
- ("[^_]\\<\\(button\\|canvas\\|checkbutton\\|entry\\|frame\\|label\\|listbox\\|menu\\|menubutton\\|message\\|radiobutton\\|scrollbar\\|text\\|toplevel\\)\\>[^_]" 1 decl) ; tk widgets
- ("[^_]\\<\\(tix\\((ButtonBox\\|Baloon\\|Control\\|DirList\\|ExFileSelectBox\\|ExFileSelectDialog\\|FileEntry\\|HList\\|LabelEntry\\|LabelFrame\\|NoteBook\\|OptionMenu\\|PanedWindow\\|PopupMenu\\|ScrolledHList\\|ScrolledText\\|ScrolledWindow\\|Select\\|StdButtonBox\\)\\)\\>[^_]" 1 defun) ; tix widgets
- ("[{}\\\"\\(\\)]" nil include) ; misc punctuation
- )))
-
-(defun tcl-electric-hash (&optional count)
- "Insert a `#' and quote if it does not start a real comment.
-Prefix arg is number of `#'s to insert.
-See variable `tcl-electric-hash-style' for description of quoting
-styles."
- (interactive "p")
- (or count (setq count 1))
- (if (> count 0)
- (let ((type
- (if (eq tcl-electric-hash-style 'smart)
- (if (> count 3) ; FIXME what is "smart"?
- 'quote
- 'backslash)
- tcl-electric-hash-style))
- comment)
- (if type
- (progn
- (save-excursion
- (insert "#")
- (setq comment (tcl-in-comment)))
- (delete-char 1)
- (and tcl-explain-indentation (message "comment: %s" comment))
- (cond
- ((eq type 'quote)
- (if (not comment)
- (insert "\"")))
- ((eq type 'backslash)
- ;; The following will set count to 0, so the
- ;; insert-char can still be run.
- (if (not comment)
- (while (> count 0)
- (insert "\\#")
- (setq count (1- count)))))
- (t nil))))
- (insert-char ?# count))))
-
-(defun tcl-hashify-buffer ()
- "Quote all `#'s in current buffer that aren't Tcl comments."
- (interactive)
- (save-excursion
- (goto-char (point-min))
- (if (and tcl-pps-has-arg-6 tcl-use-hairy-comment-detector)
- (let (state
- result)
- (while (< (point) (point-max))
- (setq result (tcl-hairy-scan-for-comment state (point-max) t))
- (if (car result)
- (beginning-of-line 2)
- (backward-char)
- (if (eq ?# (following-char))
- (insert "\\"))
- (forward-char))
- (setq state (cdr result))))
- (while (and (< (point) (point-max))
- (search-forward "#" nil 'move))
- (if (tcl-real-comment-p)
- (beginning-of-line 2)
- ;; There's really no good way for the simple converter to
- ;; work. So we just quote # if it isn't already quoted.
- ;; Bogus, but it works.
- (backward-char)
- (if (not (eq ?\\ (preceding-char)))
- (insert "\\"))
- (forward-char))))))
-
-(defun tcl-indent-for-comment ()
- "Indent this line's comment to comment column, or insert an empty comment.
-Is smart about syntax of Tcl comments.
-Parts of this were taken from indent-for-comment (simple.el)."
- (interactive "*")
- (end-of-line)
- (or (tcl-in-comment)
- (progn
- ;; Not in a comment, so we have to insert one. Create an
- ;; empty comment (since there isn't one on this line). If
- ;; line is not blank, make sure we insert a ";" first.
- (skip-chars-backward " \t")
- (let ((eolpoint (point)))
- (beginning-of-line)
- (if (/= (point) eolpoint)
- (progn
- (goto-char eolpoint)
- (insert
- (if (tcl-real-command-p) "" ";")
- "# ")
- (backward-char))))))
- ;; Point is just after the "#" starting a comment. Move it as
- ;; appropriate.
- (let* ((indent (if comment-indent-hook
- (funcall comment-indent-hook)
- (funcall comment-indent-function)))
- (begpos (progn
- (backward-char)
- (point))))
- (if (/= begpos indent)
- (progn
- (skip-chars-backward " \t" (save-excursion
- (beginning-of-line)
- (point)))
- (delete-region (point) begpos)
- (indent-to indent)))
- (looking-at comment-start-skip) ; Always true.
- (goto-char (match-end 0))
- ;; I don't like the effect of the next two.
- ;;(skip-chars-backward " \t" (match-beginning 0))
- ;;(skip-chars-backward "^ \t" (match-beginning 0))
- ))
-
-;; The following was inspired by the Tcl editing mode written by
-;; Gregor Schmid <schmid@fb3-s7.math.TU-Berlin.DE>. His version also
-;; attempts to snarf the command line options from the command line,
-;; but I didn't think that would really be that helpful (doesn't seem
-;; like it owould be right enough. His version also looks for the
-;; "#!/bin/csh ... exec" hack, but that seemed even less useful.
-;; FIXME should make sure that the application mentioned actually
-;; exists.
-(defun tcl-guess-application ()
- "Attempt to guess Tcl application by looking at first line.
-The first line is assumed to look like \"#!.../program ...\"."
- (save-excursion
- (goto-char (point-min))
- (if (looking-at "#![^ \t]*/\\([^ \t\n/]+\\)\\([ \t]\\|$\\)")
- (progn
- (make-local-variable 'tcl-application)
- (setq tcl-application (buffer-substring (match-beginning 1)
- (match-end 1)))))))
-
-;; This only exists to put on the menubar. I couldn't figure out any
-;; other way to do it. FIXME should take "number of #-marks"
-;; argument.
-(defun tcl-uncomment-region (beg end)
- "Uncomment region."
- (interactive "r")
- (comment-region beg end -1))
-
-\f
-
-;;
-;; XEmacs menu support.
-;; Taken from schmid@fb3-s7.math.TU-Berlin.DE (Gregor Schmid),
-;; who wrote a different Tcl mode.
-;; We also have support for menus in FSF. We do this by
-;; loading the XEmacs menu emulation code.
-;;
-
-(defun tcl-popup-menu (e)
- (interactive "@e")
- (and tcl-using-emacs-19
- (not tcl-using-xemacs-19)
- (if tcl-using-emacs-19-23
- (require 'lmenu)
- ;; CAVEATS:
- ;; * lmenu.el provides 'menubar, which is bogus.
- ;; * lmenu.el causes menubars to be turned on everywhere.
- ;; Doubly bogus!
- ;; Both of these problems are fixed in Emacs 19.23. People
- ;; using an Emacs before that just suffer.
- (require 'menubar "lmenu"))) ;; This is annoying
- ;; IMHO popup-menu should be autoloaded in FSF Emacs. Oh well.
- (popup-menu tcl-xemacs-menu))
-
-\f
-
-;;
-;; Quoting and unquoting functions.
-;;
-
-;; This quoting is sufficient to protect eg a filename from any sort
-;; of expansion or splitting. Tcl quoting sure sucks.
-(defun tcl-quote (string)
- "Quote STRING according to Tcl rules."
- (mapconcat (function (lambda (char)
- (if (memq char '(?[ ?] ?{ ?} ?\\ ?\" ?$ ? ?\;))
- (concat "\\" (char-to-string char))
- (char-to-string char))))
- string ""))
-
-\f
-
-;;
-;; Bug reporting.
-;;
-
-(and (fboundp 'eval-when-compile)
- (eval-when-compile
- (require 'reporter)))
-
-(defun tcl-submit-bug-report ()
- "Submit via mail a bug report on Tcl mode."
- (interactive)
- (require 'reporter)
- (and
- (y-or-n-p "Do you really want to submit a bug report on Tcl mode? ")
- (reporter-submit-bug-report
- tcl-maintainer
- (concat "Tcl mode " tcl-version)
- '(tcl-indent-level
- tcl-continued-indent-level
- tcl-auto-newline
- tcl-tab-always-indent
- tcl-use-hairy-comment-detector
- tcl-electric-hash-style
- tcl-help-directory-list
- tcl-use-smart-word-finder
- tcl-application
- tcl-command-switches
- tcl-prompt-regexp
- inferior-tcl-source-command
- tcl-using-emacs-19
- tcl-using-emacs-19-23
- tcl-using-xemacs-19
- tcl-proc-list
- tcl-proc-regexp
- tcl-typeword-list
- tcl-keyword-list
- tcl-font-lock-keywords
- tcl-pps-has-arg-6))))
-
-\f
-
-(provide 'tcl)
-
-;;; tcl.el ends here
+++ /dev/null
-#
-# Test script for appendQueue command
-#
-
-#appendQueue [list namespaceVariables.itcl namespaceVariables.itcl \
- namespaceVariables.itcl] "arg1 arg2 arg3" append
-
-appendQueue [list namespaceVariables.itcl namespaceVariables.itcl \
- namespaceVariables.itcl]
+++ /dev/null
-#
-# This test check the BlueGnu command clone_output
-#
-
-verbose "all_flag: >$::BlueGnu::all_flag<"
-
-BlueGnu_overwrite [namespace current]
-
-set szCurrent [::BlueGnu::clone_output "namespace: >[namespace current]<"]
-
-set szSendUser [::BlueGnu::clone_output "send_user: >[info body ::send_user]<"]
-
-# Checking default messages
-#
-catch {unset sending}
-::BlueGnu::clone_output "Hello there!"
-::BlueGnu::clone_output " [array names sending]"
-if [catch {
- if {$sending(USER) && ([llength [array names sending]] == 1)} {
- pass "Default message"
- } else {
- fail "Default Message: [array names sending]"
- }
-} szErrMsg] {
- ::BlueGnu::clone_output "####### $szErrMsg\n \
- sending([join [array names sending] ")\n sending("])"
- perror "Missing sending array elements"
-}
-
-# Checking the PASS type messages
-#
-foreach szMsg {"PASS: hello there!" "XFAIL: hello there!"} {
- catch {unset sending}
- ::BlueGnu::clone_output $szMsg
- if {$::BlueGnu::all_flag} {
- if [catch {
- if {$sending(USER) && $sending(LOG) && \
- ([llength [array names sending]] == 2)} {
- pass "PASS message"
- } else {
- fail "PASS Message: [array names sending]"
- }
- } szErrMsg] {
- ::BlueGnu::clone_output "####### $szErrMsg\n \
- sending([join [array names sending] ")\n \
- sending("])"
- perror "Missing sending array elements"
- }
- } else {
- if [catch {
- if {$sending(LOG) && ([llength [array names sending]] == 1)} {
- pass "PASS message"
- } else {
- fail "PASS Message: [array names sending]"
- }
- } szErrMsg] {
- ::BlueGnu::clone_output "####### $szErrMsg\n \
- sending([join [array names sending] ")\n \
- sending("])"
- perror "Missing sending array elements"
- }
- }
-}
-
-# Checking the fail type messages
-#
-foreach szMsg {"FAIL: Hallo daar!" "XPASS: Hallo daar!" \
- "UNRESOLVED: Hello unresolved!" "UNSUPPORTED: Hello unsupported!" \
- "UNTESTED: not tested!"} {
- catch {unset sending}
- ::BlueGnu::clone_output $szMsg
- if [catch {
- if {$sending(USER) && $sending(LOG) && \
- ([llength [array names sending]] == 2)} {
- pass "PASS message"
- } else {
- fail "PASS Message: [array names sending]"
- }
- } szErrMsg] {
- ::BlueGnu::clone_output "####### $szErrMsg\n \
- sending([join [array names sending] ")\n sending("])"
- perror "Missing sending array elements"
- }
-}
-
-# Checking ERROR type messages
-#
-catch {unset sending}
-::BlueGnu::clone_output "ERROR: hallo daar!"
-if [catch {
- if {$sending(LOG) && $sending(ERROR) && \
- ([llength [array names sending]] == 2)} {
- pass "PASS message"
- } else {
- fail "PASS Message: [array names sending]"
- }
-} szErrMsg] {
- ::BlueGnu::clone_output "####### $szErrMsg\n \
- sending([join [array names sending] ")\n sending("])"
- perror "Missing sending array elements"
-}
-
-# Checking WARNING type message
-#
-foreach szMsg {"WARNING: Hello there!" "NOTE: Hello there!"} {
- catch {unset sending}
- ::BlueGnu::clone_output $szMsg
- if {$::BlueGnu::all_flag} {
- if [catch {
- if {$sending(ERROR) && $sending(LOG) && \
- ([llength [array names sending]] == 2)} {
- pass "PASS message"
- } else {
- fail "PASS Message: [array names sending]"
- }
- } szErrMsg] {
- ::BlueGnu::clone_output "####### $szErrMsg\n \
- sending([join [array names sending] ")\n \
- sending("])"
- perror "Missing sending array elements"
- }
- } else {
- if [catch {
- if {$sending(LOG) && ([llength [array names sending]] == 1)} {
- pass "PASS message"
- } else {
- fail "PASS Message: [array names sending]"
- }
- } szErrMsg] {
- ::BlueGnu::clone_output "####### $szErrMsg\n \
- sending([join [array names sending] ")\n \
- sending("])"
- perror "Missing sending array elements"
- }
- }
-}
-
-# Checking ******* type messages
-#
-catch {unset sending}
-::BlueGnu::clone_output "******* Ik zie sterretjes!"
-if [catch {
- if {$sending(USER) && ([llength [array names sending]] == 1)} {
- pass "PASS message"
- } else {
- fail "PASS Message: [array names sending]"
- }
-} szErrMsg] {
- ::BlueGnu::clone_output "####### $szErrMsg\n \
- sending([join [array names sending] ")\n sending("])"
- perror "Missing sending array elements"
-}
-
-catch {unset sending}
-
-BlueGnu_restore
\ No newline at end of file
+++ /dev/null
-#
-# Unit test for command: locateFile
-#
-
-note "[locateFile A.itcl]"
-
-
-if {[regexp {verbose.itcl$} [locateFile verbose.itcl]]} {
- pass "Found verbose.itcl as >[locateFile verbose.itcl]<"
-} else {
- fail "Couldn't find verbose.itcl"
-}
-if {[regexp {lib/bug.exp$} [locateFile bug.exp lib]]} {
- pass "Found bug.exp as >[locateFile bug.exp lib]<"
-} else {
- fail "Couldn't find bug.exp"
-}
-if {[regexp {testsuite/T/test_004.exp$} \
- [locateFile test_004.exp testsuite/T]]} {
- pass "Found test_004.exp as >[locateFile test_004.exp testsuite/T]<"
-} else {
- fail "Couldn't find test_004.exp as\
- >\[locateFile test_004.exp testsuite/T\]<"
-}
-if {[regexp {testsuite/T/test_004.exp$} \
- [locateFile test_004.exp testsuite]]} {
- pass "Found test_004.exp as >[locateFile test_004.exp testsuite]<"
-} else {
- fail "Couldn't find test_004.exp as\
- >\[locateFile test_004.exp testsuite\]<"
-}
-if {[regexp {testsuite/T/test_004.exp$} \
- [locateFile test_004.exp T]]} {
- pass "Found test_004.exp as >[locateFile test_004.exp T]<"
-} else {
- fail "Couldn't find test_004.exp as\
- >\[locateFile test_004.exp T\]<"
-}
-if {[regexp {testsuite/T/test_004.exp$} \
- [locateFile test_004.exp]]} {
- pass "Found test_004.exp as >[locateFile test_004.exp]<"
-} else {
- fail "Couldn't find test_004.exp as\
- >\[locateFile test_004.exp testsuite\]<"
-}
-
+++ /dev/null
-#
-# This test script prints the namespace variables
-# pass the the test script when available varibale matches the expected
-# and visa versa
-#
-
-proc checkVars {} {
- set lExpectedVars [list \
- bTestCase \
- iArgs lArgs \
- szID szName \
- szScriptName szTool \
- szTestCase szTestCaseID szTestCaseArgs \
- ]
- set lVars [uplevel info vars]
- note "Available Variable:"
- foreach v [lsort $lVars] {
- if {[lsearch [info globals] $v] < 0} {
- note "[format %15s $v] = >[uplevel set $v]<"
- if {[lsearch $lExpectedVars $v] >= 0} {
- pass "Available variable >$v< in list of expected"
- } else {
- fail "Available variable >$v< NOT in list of expected"
- }
- }
- }
- foreach v $lExpectedVars {
- if {[lsearch $lVars $v] >= 0} {
- pass "Expected variable >$v< in list of available"
- } else {
- fail "Expected variable >$v< NOT in list of available"
- }
- }
-}
-
-checkVars
+++ /dev/null
-#
-# Test script for prependQueue command
-#
-
-prependQueue [list namespaceVariables.itcl namespaceVariables.itcl \
- namespaceVariables.itcl] arg2 prepend
+++ /dev/null
-#
-# This script is testing the runtest command
-#
-
-#runtest [list A.itcl\[1\]=arg A.itcl\[2\]=arg]
-runtest [list namespaceVariables.itcl namespaceVariables.itcl]
-
-#note "test scripts: >>>>\n[join [parseTest A.itcl A.itcl\[2=x=y\]=arg2 \
- [list A.itcl\[1\] A.itcl]] "\n"]<<<<"
-#note "test scripts: >>>>\n[join [appendTestCaseID [appendArguments \
- [parseTest A.itcl A.itcl\[2=x=y\]=arg2 \
- [list A.itcl\[1\] A.itcl]] XYZ=abc] DEF] "\n"]<<<<"
-
-#note "test scripts: >[appendTestCaseID \
- [list A.itcl\[DEF\]=xyz=100 A.itcl\[GHI\]=xyz=200] =SSN=00101001]<"
-
-#note "test scripts: >[appendArguments \
- [list A.itcl A.itcl=SSN=001010001 \
- A.itcl\[1\] A.itcl\[2\]=SSN=001010001] BODS=ABC]<"
\ No newline at end of file
+++ /dev/null
-#
-# This test script test the commands:
-# appendArguments
-# appendTestCaseID
-#
-
-
-note "[appendTestCaseID A ID]"
-note "[appendTestCaseID [list A B C] ID]"
-note "[appendTestCaseID A ID=arg1=100]"
-note "[appendTestCaseID [list A B C] ID=arg2]"
-note "[appendTestCaseID [appendArguments A arg1] ID]"
-note "[appendArguments [appendTestCaseID B ID] arg1]"
-note "[appendTestCaseID [appendArguments [list A B C] arg1] ID]"
-note "[appendArguments [appendTestCaseID [list X Y Z] ID] arg1]"
-note "[appendTestCaseID [appendArguments [list A B C] \
- "arg1=1 arg2 arg3=100"] ID]"
-note "[appendArguments [appendTestCaseID [list X Y Z] ID] \
- "arg1=1 arg2 arg3=100"]"
+++ /dev/null
-note "ts001/A.itcl"
+++ /dev/null
-note "ts002/A.itcl"
+++ /dev/null
-# -*-Tcl-*-
-#
-# Checking Type definition
-#
-
-verbose "auto_path: >[set auto_path]<"
-
-verbose [Type A 100]
-verbose [set A]
-verbose $A
-verbose [A value]
-
-namespace eval TN {
- verbose [Type B 200]
- verbose [set B]
- verbose $B
- verbose [B value]
- verbose [::itcl::find objects]
-}
-
-verbose [::itcl::find objects]
-
-namespace eval TN {
- verbose [::itcl::find objects]
-}
-
-proc Y {} {
- proc YY {} {
- puts "in YY"
- }
- set Tmp 100
- verbose {[Type C 200]}
- verbose {[set C]}
- verbose {$C}
- verbose {[C value]}
- verbose {[set C 400]}
- verbose {[set C]}
- verbose {Locals: >[info locals]<}
- verbose {Globals: >[info globals]<}
- verbose {Vars: >[info vars]<}
- verbose {Commands: >[lsort [split [info commands]]]<}
- verbose {[::itcl::find objects]}
- verbose {A: >[A value]<}
-}
-
-verbose "################################ Doing Y"
-Y
-YY
-rename Y ""
-YY
-
-verbose {[::itcl::find objects]}
-
-verbose [Type Z text]
-delete object Z
+++ /dev/null
-#
-# test for verbose levels
-#
-#
-
-global verbose
-
-verbose "verbose level: >$verbose<" 0
-
-# Modify output procedures to return instead of doing output
-#
-uplevel #0 {
- rename send_user send_user_saved
- rename send_error send_error_saved
- rename send_log send_log_saved
- proc send_user args {
- eval return "\{USER: [join $args]\}"
- }
- proc send_error args {
- eval return "\{ERROR: [join $args]\}"
- }
- proc send_log args {
- eval return "\{LOG: [join $args]\}"
- }
-}
-
-# Checkin verbose with out any swicthes
-#
-foreach level {0 1} {
- set szV [verbose "some text" $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
-
- set szV [verbose {[set l some text]} $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- } else {
- fail "Didn't detect ERROR in commands >$szV<"
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
-
- set szV [verbose {[set l "some text"]} $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
-}
-
-# checking verbose --
-#
-foreach level {0 1} {
- set szV [verbose -- "some text" $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
-
- set szV [verbose -- {[set l some text]} $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- } else {
- fail "Didn't detect ERROR in commands >$szV<"
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
-
- set szV [verbose -- {[set l "some text"]} $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
-}
-
-# Checking verbose -n (Suppress NL)
-#
-foreach level {0 1} {
- set szV [verbose -n "some text" $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- fail "Didn't expected NL at end of >$szV<"
- } else {
- pass "$szV"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
-
- set szV [verbose -n {[set l some text]} $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- fail "Didn't expected NL at end of >$szV<"
- } else {
- pass "$szV"
- }
- } else {
- fail "Didn't detect ERROR in commands >$szV<"
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
-
- set szV [verbose -n {[set l "some text"]} $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- fail "Didn't expected NL at end of >$szV<"
- } else {
- pass "$szV"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
-}
-
-# checking verbose -log
-#
-foreach level {0 1} {
- set szV [verbose -log "some text" $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if {$level > $verbose} {
- if [regexp "^LOG:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
- }
-
- set szV [verbose -log {[set l some text]} $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if {$level > $verbose} {
- if [regexp "^LOG:" $szV] {
- if [regexp "ERROR:" $szV] {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- } else {
- fail "Didn't detect ERROR in commands >$szV<"
- }
- } else {
- fail "Didn't used send_user"
- }
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- } else {
- fail "Didn't detect ERROR in commands >$szV<"
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
- }
-
- set szV [verbose -log {[set l "some text"]} $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if {$level > $verbose} {
- if [regexp "^LOG:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- pass "$szV"
- } else {
- fail "Expected NL at end of >$szV<"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
- }
-}
-
-# checking verbose -n -log
-#
-foreach level {0 1} {
- set szV [verbose -n -log "some text" $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if {$level > $verbose} {
- if [regexp "^LOG:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- fail "Didn't expected NL at end of >$szV<"
- } else {
- pass "$szV"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- fail "Didn't expected NL at end of >$szV<"
- } else {
- pass "$szV"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
- }
-
- set szV [verbose -log -n {[set l some text]} $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if {$level > $verbose} {
- if [regexp "^LOG:" $szV] {
- if [regexp "ERROR:" $szV] {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- fail "Didn't expected NL at end of >$szV<"
- } else {
- pass "$szV"
- }
- } else {
- fail "Didn't detect ERROR in commands >$szV<"
- }
- } else {
- fail "Didn't used send_user"
- }
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- fail "Didn't expected NL at end of >$szV<"
- } else {
- pass "$szV"
- }
- } else {
- fail "Didn't detect ERROR in commands >$szV<"
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
- }
-
- set szV [verbose -n -log -- {[set l "some text"]} $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, output expected"
- } else {
- if {[string length $szV] == 0} {
- pass "No output expected"
- } else {
- if {$level > $verbose} {
- if [regexp "^LOG:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- fail "Didn't expected NL at end of >$szV<"
- } else {
- pass "$szV"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- } else {
- if [regexp "^USER:" $szV] {
- if [regexp "ERROR:" $szV] {
- fail "Did detect ERROR in commands >$szV<"
- } else {
- if {[string compare \
- [string range $szV end end] "\n"] == 0} {
- fail "Didn't expected NL at end of >$szV<"
- } else {
- pass "$szV"
- }
- }
- } else {
- fail "Didn't used send_user"
- }
- }
- }
- }
-}
-
-if {$verbose >= 1} {
- set szV [verbose -n -BB -log -- {[set l "some text"]} $level]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, ERROR output expected"
- } else {
- if [regexp "^ERROR:.*illegal argument:" $szV] {
- setup_xfail
- }
- fail "$szV"
- }
-
- set szV [verbose]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, ERROR output expected"
- } else {
- if [regexp "^ERROR:.*nothing to print$" $szV] {
- setup_xfail
- }
- fail "$szV"
- }
-
- set szV [verbose -n --]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, ERROR output expected"
- } else {
- if [regexp "^ERROR:.*nothing to print$" $szV] {
- setup_xfail
- }
- fail "$szV"
- }
-
- set szV [verbose -n -- ABC def 100]
- if {[string length $szV] == 0 && $level <= $verbose} {
- fail "verbose level $level, ERROR output expected >$szV<"
- } else {
- if [regexp "^ERROR:.*Too many arguments$" $szV] {
- setup_xfail
- }
- fail "$szV"
- }
-} else {
- warning "NO verbose error returns tester, verbose level < 1"
-}
-
-# Restore original procedures
-#
-uplevel #0 {
- rename send_user ""
- rename send_error ""
- rename send_log ""
- rename send_user_saved send_user
- rename send_error_saved send_error
- rename send_log_saved send_log
-}
+++ /dev/null
-#
-#
-
-namespace eval ::tc002 {
- if {[::itcl::find classes Benchmark] != "Benchmark"} {
- class Benchmark {
- inherit ::BlueGnu::Benchmark
-
- public constructor {args} {
- }
-
- public method benchmark {benchmarkFunction args} {
- verbose {******* ${this}::benchmark\
- $benchmarkFunction $args}
- verbose "Length Args is >[llength $args]<" 2
- set bResult 0
- switch -exact $benchmarkFunction {
- English {
- set bResult 1
- }
- Dutch {
- set bResult 1
- }
- }
- if $bResult {
- pass "[info class]::benchmark\
- $benchmarkFunction $args"
- } else {
- fail "[info class]::benchmark\
- $benchmarkFunction $args"
- }
- return $bResult
- }
- }
-
- class English {
- inherit ::tc002::Benchmark
-
- public constructor {args} {
- eval ::BlueGnu::Benchmark::constructor $args
- ::tc002::Benchmark::constructor
- } {
- verbose "******* Initialize Priority Benchmark Values"
- foreach i [lsort [array names ARG]] {
- verbose { ARG($i): >$ARG($i)<} 2
- }
- }
- }
-
- class Dutch {
- inherit ::tc002::Benchmark
-
- public constructor {args} {
- eval ::BlueGnu::Benchmark::constructor $args
- ::tc002::Benchmark::constructor
- } {
- verbose "******* Initialize Priority Benchmark Values"
- foreach i [lsort [array names ARG]] {
- verbose { ARG($i): >$ARG($i)<} 2
- }
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-set MSG "Hello World"
-processTestScriptArgs
-note $MSG
+++ /dev/null
-set MSG "Hello World"
-processTestScriptArgs
-benchmark $szTestCaseID $MSG
+++ /dev/null
-appendQueue examples/tc002\[English=B\]
-appendQueue examples/tc002\[Dutch=B\]={MSG=Hallo Wereld}
+++ /dev/null
-appendQueue [appendTestCaseID \
- [locateFile tc002 examples] English=A]
-appendQueue [appendArguments [appendTestCaseID \
- [locateFile tc002 examples] Dutch=A] "{MSG=Hallo Wereld}"]
+++ /dev/null
-appendQueue tc002 {} English=B
-appendQueue tc002 {MSG=Hallo Wereld} Dutch=B
+++ /dev/null
-if [doCmd {set tcl_version} errorCode=NONE \
- return=[list [list 1 8.0]] V] {
- # code when failure:
- # variable tcl_version does not exists or
- # does not return 8.0
-} else {
- # variable V will contain 8.0
-}
+++ /dev/null
-# Tcl autoload index file: each line identifies a Tcl
-
-::tc002::Benchmark examples/lib/benchmark.itcl
-::tc002::English examples/lib/benchmark.itcl
-::tc002::Dutch examples/lib/benchmark.itcl
+++ /dev/null
-# Copyright (C) 1988, 1990, 1991, 1992, 1994, 1995 Free Software Foundation, Inc.
-# Copyright (C) 1998 jotOmega dsc, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 1, 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-#
-
-# directory specifics
-VPATH = @srcdir@
-srcdir = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-host = @host@
-
-.PHONY: info install-info check installcheck dvi install
-info:
-install:
-dvi:
-install-info:
-check:
-installcheck:
-.NOEXPORT:
-TCLHDIR = @TCLHDIR@
-
-BLUEGNUFLAGS =
-EXPECT = ` \
- if [ -f $${rootme}/../../expect/expect ] ; then \
- echo $${rootme}/../../expect/expect ; \
- else echo expect ; fi`
-
-BLUEGNU = ` \
- if [ -f ${srcdir}/../bluegnu ] ; then \
- echo ${srcdir}/../bluegnu ; \
- else echo bluegnu ; fi`
-
-
-all:
-
-check: site.exp all
- rootme=`pwd`; export rootme; \
- srcdir=${srcdir} ; export srcdir ; \
- EXPECT=${EXPECT} ; export EXPECT ; \
- if [ -f $${rootme}/../../expect/expect ] ; then \
- TCL_LIBRARY=`echo @TCLHDIR@ | sed -e 's/-I//' -e 's/generic/library/'` ; \
- export TCL_LIBRARY ; fi ; \
- ${BLUEGNU} ${BLUEGNUFLAGS} BLUEGNU=${BLUEGNU} --tool bluegnu --srcdir ${srcdir}
-
-site.exp: ./config.status Makefile
- @echo "Making a new config file..."
- -@rm -f ./tmp?
- @touch site.exp
- -@mv site.exp site.bak
- @echo "## these variables are automatically generated by make ##" > ./tmp0
- @echo "# Do not edit here. If you wish to override these values" >> ./tmp0
- @echo "# add them to the last section" >> ./tmp0
- @echo "set tool bluegnu" >> ./tmp0
- @echo "set srcdir ${srcdir}" >> ./tmp0
- @echo "set objdir `pwd`" >> ./tmp0
- @echo "set host_triplet ${host}" >> ./tmp0
- @echo "set tmpdir `pwd`/tmpdir" >> ./tmp0
- @echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0
- @cat ./tmp0 > site.exp
- @cat site.bak | sed \
- -e '1,/^## All variables above are.*##/ d' >> site.exp
- -@rm -f ./tmp?
-
-clean mostlyclean:
- -rm -f \#* *~ core *.o a.out xgdb *.x
- -rm -f [Ee]rrs tags mklog ${OBJS} ${PROG} x.* xXx.*
-
-distclean maintainer-clean realclean: clean
- -rm -f Makefile
- -rm -f config.status config.log config.cache
- -rm -f calc.h calc.log calc.plog calc.psum confdefs.h
- -rm -f calc.sum site.exp
- -rm -rf tmpdir
-
-Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) config.status
- @echo "Rebuilding the Makefile..."
- $(SHELL) ./config.status
-
-configure: $(srcdir)/configure.in $(srcdir)/Makefile.in $(srcdir)/../aclocal.m4
- @echo "Rebuilding configure..."
- @cd ${srcdir} ;\
- autoconf --localdir=${srcdir}/..
-
-config.status:
- @echo "Rebuilding config.status..."
- $(SHELL) ./config.status --recheck
+++ /dev/null
-
-uplevel #0 {
- foreach var [lsort [info globals]] {
- if {[array exists $var]} {
- foreach index [lsort [array names $var]] {
- puts "${var}($index)=[set ${var}($index)]"
- }
- } else {
- puts "$var=[set $var]"
- }
- }
-}
+++ /dev/null
-
-puts "======= Environment (Start) ======="
-
-foreach item [lsort [array names env]] {
- if [catch {puts " env($item)=$env($item)"} szErrMsg] {
- puts "******* >> msg : $szErrMsg"
- puts "******* >> errorInfo: [uplevel #0 set errorInfo]"
- puts "******* >> errorCode: [uplevel #0 set errorCode]"
- }
-}
-
-foreach info [list {info locals} \
- {info globals} {uplevel #0 info globals} \
- {info vars}] {
- puts "=== Command: $info"
- foreach item [lsort [eval $info]] {
- if [catch {puts " $item=>[eval set $item]<"} szErrMsg] {
- if [regexp "variable is array" $szErrMsg] {
- foreach elem [lsort [array names $item]] {
- puts " ${item}($elem)=>[set ${item}($elem)]<"
- }
- } else {
- puts "******* >> msg : $szErrMsg"
- puts "******* >> errorInfo: [uplevel #0 set errorInfo]"
- puts "******* >> errorCode: [uplevel #0 set errorCode]"
- }
- }
- }
-}
-
-foreach info [list {namespace all} \
- {namespace children} {namespace parent} \
- classes commands context level library locals \
- objects patchlevel procs script tclversion] {
- puts "=== info $info"
- foreach item [lsort [eval info $info]] {
- puts " $item"
- }
-}
-
-puts "argv: [set argv]"
-puts "szTestName: [set szTestName]"
-catch {puts "lTestName : $lTestName"}
-$szTestName pass
-puts [$szTestName <<]
-
-#runtest ::E0 env.iexp
-puts "======= Environment (End) ======="
+++ /dev/null
-appendQueue env.iexp
-appendQueue ../tools/env.exp
-appendQueue env.iexp
-appendQueue ../tools/env.exp
-appendQueue ../tools/foo.exp
+++ /dev/null
-
-puts "Test test_002.exp: level [info level]"
-puts "szTestName: [set szTestName]"
-puts "lTestName : $lTestName"
-
-namespace ::Common {
- if [info exists i] {
- if {[expr $i % 2]} {
- puts " Remainder is 1 >$i<"
- incr i
- return
- } else {
- puts " Zero remainder >$i<"
- incr i
- }
- puts " === End: $env(SHELL)"
- } else {
- puts "#### i doesn't exists"
- }
-}
+++ /dev/null
-
-namespace Common {
- private variable iCount 0
-}
-
-verbose "prepeding test_001.exp"
-prependQueue test_001.exp
-pass "test_000.exp"
+++ /dev/null
-
-verbose "Test test_001.exp: level [info level]"
-verbose "Global tools: [uplevel #0 set szCurrentTestDirectory]"
-
-appendQueue test_003.exp=1
-prependQueue test_003.exp=2 test_003.exp=3
-verbose "Context: [info context]"
-runtest test_003.exp=R0
-appendQueue test_003.exp=A0
-prependQueue test_003.exp=A2 test_003.exp=A3
-
-namespace Common {
- incr iCount
- verbose "Counter is $iCount"
- if {$iCount < 5} {
- prependQueue test_001.exp
- }
- pass "test_001.exp: iCount - $iCount"
-}
+++ /dev/null
-
-verbose "Test test_002.exp: level [info level]"
-verbose "szTestName: [set szTestName]"
-verbose "lTestName : $lTestName"
-pass
-namespace ::Common {
- if [info exists i] {
- if {[expr $i % 2]} {
- verbose " Remainder is 1 >$i<"
- incr i
- pass "karel"
- return
- } else {
- verbose " Zero remainder >$i<"
- fail "pieter"
- incr i
- }
- verbose " === End: $env(SHELL)"
- } else {
- verbose "#### i doesn't exists"
- }
-}
+++ /dev/null
-
-verbose "t003.exp == $lArgs"
-pass "t003.exp == $lArgs"
\ No newline at end of file
+++ /dev/null
-
-puts " in test 4"
-pass "test 4"
\ No newline at end of file
+++ /dev/null
-# test clone_output
-
-set srcdir [lindex $argv 0]
-set subdir [lindex $argv 1]
-set objdir [lindex $argv 2]
-
-if [ file exists $objdir/setval.tmp ] {
- source $objdir/setval.tmp
-} else {
- puts "ERROR: $objdir/setval.tmp doesn't exist"
-}
-if [ file exists $srcdir$subdir/default_procs.tcl ] {
- source "$srcdir$subdir/default_procs.tcl"
-} else {
- puts "ERROR: $srcdir$subdir/default_procs.tcl doesn't exist"
-}
-if [ file exists $srcdir/../lib/framework.exp] {
- source $srcdir/../lib/framework.exp
-} else {
- puts "ERROR: $srcdir/../lib/framework.exp doesn't exist"
-}
-
-set all_flag 0
-global all_flag
-set errno ""
-
-# stuff that shouldn't print anything without all_flag set
-set all_flag 0
-set tests {
- { "lib_pat_test" "clone_output" "PASS: Foo" "" "clone_output(pass) without all_flag set" }
- { "lib_pat_test" "clone_output" "UNRESOLVED: Foo" "" "clone_output(unresolved) without all_flag set" }
- { "lib_pat_test" "clone_output" "UNSUPPORTED: Foo" "" "clone_output(unsupported) without all_flag set" }
- { "lib_pat_test" "clone_output" "UNTESTED: Foo" "" "clone_output(untested) without all_flag set" }
- { "lib_pat_test" "clone_output" "ERROR: Bar" "ERROR: Bar" "clone_output(error) without all_flag set" }
- { "lib_pat_test" "clone_output" "WARNING: Bar" "WARNING: Bar" "clone_output(warning) without all_flag set" }
- { "lib_pat_test" "clone_output" "NOTE: Bar" "NOTE: Bar" "clone_output(note) without all_flag set" }
-}
-
-run_tests $tests
-
-# tests for all_flag set to 1
-set all_flag 1
-set tests {
- { "lib_pat_test" "clone_output" "PASS: Foo" "PASS: Foo" "clone_output(pass) with all_flag set" }
- { "lib_pat_test" "clone_output" "XFAIL: Foo" "XFAIL: Foo" "clone_output(xfail) with all_flag set" }
- { "lib_pat_test" "clone_output" "UNRESOLVED: Foo" "UNRESOLVED: Foo" "clone_output(unresolved) with all_flag set" }
- { "lib_pat_test" "clone_output" "UNSUPPORTED: Foo" "UNSUPPORTED: Foo" "clone_output(unsupported) with all_flag set" }
- { "lib_pat_test" "clone_output" "UNTESTED: Foo" "UNTESTED: Foo" "clone_output(untested) with all_flag set" }
- { "lib_pat_test" "clone_output" "ERROR: Foo" "ERROR: Foo" "clone_output(error) with all_flag set" }
- { "lib_pat_test" "clone_output" "WARNING: Foo" "WARNING: Foo" "clone_output(warning) with all_flag set" }
- { "lib_pat_test" "clone_output" "NOTE: Foo" "NOTE: Foo" "clone_output(note) with all_flag set" }
-}
-
-run_tests $tests
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-# test clone_output
-
-set srcdir [lindex $argv 0]
-set subdir [lindex $argv 1]
-set objdir [lindex $argv 2]
-
-if [ file exists $objdir/setval.tmp ] {
- source $objdir/setval.tmp
-} else {
- puts "ERROR: $objdir/setval.tmp doesn't exist"
-}
-if [ file exists $srcdir$subdir/default_procs.tcl ] {
- source "$srcdir$subdir/default_procs.tcl"
-} else {
- puts "ERROR: $srcdir$subdir/default_procs.tcl doesn't exist"
-}
-if [ file exists $srcdir/../lib/framework.exp] {
- source $srcdir/../lib/framework.exp
-} else {
- puts "ERROR: $srcdir/../lib/framework.exp doesn't exist"
-}
-
-set all_flag 1
-
-set host_triplet i586-unknown-linux
-set target_triplet i586-unknown-linux
-set target_cpu i586
-set target_os linux
-set build_triplet i586-unknown-linux
-
-# FIXME: should use run_tests here, but due to Tcl's weird scoping rules, I get
-# problems.
-
-#
-# Tests for a native configuration
-#
-if [isbuild $build_triplet] {
- puts "PASSED: isbuild, native"
-} else {
- puts "FAILED: isbuild, native"
-}
-
-if [isbuild $target_cpu-*-$target_os ] {
- puts "PASSED: isbuild, native regexp"
-} else {
- puts "FAILED: isbuild, native regexp"
-}
-
-if [isbuild hppa-ibm-macos ] {
- puts "FAILED: isbuild, native bogus config string"
-} else {
- puts "PASSED: isbuild, native bogus config string"
-}
-
-# ishost tests
-if [ishost $host_triplet] {
- puts "PASSED: ishost, native"
-} else {
- puts "FAILED: ishost, native"
-}
-
-if [ishost $target_cpu-*-$target_os] {
- puts "PASSED: ishost, native regexp"
-} else {
- puts "FAILED: ishost, native regexp"
-}
-
-if [ishost hppa-ibm-macos] {
- puts "FAILED: ishost, native bogus config string"
-} else {
- puts "PASSED: ishost, native bogus config string"
-}
-
-# istarget tests
-if [istarget $target_triplet] {
- puts "PASSED: istarget, native"
-} else {
- puts "FAILED: istarget, native"
-}
-
-if [istarget $target_cpu-*-$target_os] {
- puts "PASSED: istarget, native regexp"
-} else {
- puts "FAILED: istarget, native regexp"
-}
-
-if [istarget hppa-ibm-macos] {
- puts "FAILED: istarget, native bogus config string"
-} else {
- puts "PASSED: istarget, native bogus config string"
-}
-
-# native tests
-if [isnative] {
- puts "PASSED: isnative, native"
-} else {
- puts "FAILED: isnative, native"
-}
-
-if [is3way] {
- puts "FAILED: is3way, native"
-} else {
- puts "PASSED: is3way, native"
-}
-
-#
-# Tests for a normal cross configuration
-#
-set target_triplet m68k-unknown-elf
-if [isnative] {
- puts "FAILED: isnative, cross"
-} else {
- puts "PASSED: isnative, cross"
-}
-
-if [is3way] {
- puts "FAILED: is3way, cross"
-} else {
- puts "PASSED: is3way, cross"
-}
-
-#
-# Tests for a canadian cross configuration
-#
-set host_triplet i386-unknown-winnt
-if [isnative] {
- puts "FAILED: isnative, canadian cross"
-} else {
- puts "PASSED: isnative, canadian cross"
-}
-
-if [is3way] {
- puts "PASSED: is3way, canadian cross"
-} else {
- puts "FAILED: is3way, canadian cross"
-}
-
-
+++ /dev/null
-set sum_file [open .tmp w]
-set reboot 0
-set errno ""
-
-# this tests a proc for a returned pattern
-proc lib_pat_test { cmd arg pattern } {
- catch "$cmd \"$arg\"" result
- puts "CMD(lib_pat_test) was: $cmd \"$arg\""
- puts "RESULT(lib_pat_test) was: \"${result}\" for pattern \"$pattern\"."
- if [ regexp -- "with too many" $result ] {
- return -1
- }
- if [ string match "$pattern" $result ] {
- return 1
- } else {
- return 0
- }
-}
-
-# this tests a proc for a returned value
-proc lib_ret_test { cmd arg val } {
- catch "$cmd \"$arg\"" result
-# catch "set result [$cmd $arg]" output
-# set result "$cmd [eval $arg]
- puts "CMD(lib_ret_test) was: $cmd $arg"
- puts "RESULT(lib_ret_test) was: $result"
-# puts "OUTPUT(lib_ret_test) was: $output"
-
- if { $result == $val } {
- return 1
- } else {
- return 0
- }
-}
-
-#
-# This runs a standard test for a proc. The list is set up as:
-# |test proc|proc being tested|args|pattern|message|
-# test proc is something like lib_pat_test or lib_ret_test.
-#
-proc run_tests { tests } {
- foreach i "$tests" {
- set result [ [lindex $i 0] "[lindex $i 1]" "[lindex $i 2]" "[lindex $i 3]" ]
- switch -- $result {
- "-1" {
- puts "ERRORED: [lindex $i 4]"
- }
- "1" {
- puts "PASSED: [lindex $i 4]"
- }
- "0" {
- puts "FAILED: [lindex $i 4]"
- }
- default {
- puts "BAD VALUE: [lindex $i 4]"
- }
- }
- }
-}
-
-proc send_log { msg } {
- # this is just a stub for testing
-}
-
-proc pass { msg } {
- puts "PASSED: $msg"
-}
-
-proc fail { msg } {
- puts "FAILED: $msg"
-}
-
-proc perror { msg } {
- global errno
- puts "ERRORED: $msg"
- set errno "$msg"
-}
-
-proc warning { msg } {
- global errno
- puts "WARNED: $msg"
- set errno "$msg"
-}
-
-proc untested { msg } {
- puts "NOTTESTED: $msg"
-}
-
-proc unsupported { msg } {
- puts "NOTSUPPORTED: $msg"
-}
-proc verbose { args } {
- puts "[lindex $args 0]"
-}
+++ /dev/null
-load_lib libsup.exp
-
-proc process_test { test } {
- global srcdir
- global subdir
- global objdir
- global EXPECT
-
- verbose "Executing test case $test"
- set text "\[- A-Za-z0-9\,\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]*"
-
- set timeout 150
-
- if [file exists $test] {
- verbose "Processing test $test" 2
- spawn -open [open "|$EXPECT $test $srcdir $subdir [pwd]" r]
- expect {
- "No such file or directory" {
- perror "$test wouldn't run" 0
- }
- -re "\[\r\n\]*NOTSUPPORTED: $text\[\r\n\]*" {
- unsupported "[lrange $expect_out(0,string) 1 end]"
- exp_continue
- }
- -re "\[\r\n\]*NOTTESTED: $text\[\r\n\]*" {
- untested "[lrange $expect_out(0,string) 1 end]"
- exp_continue
- }
- -re "\[\r\n\]*PASSED: $text\[\r\n\]*" {
- pass "[lrange $expect_out(0,string) 1 end]"
- exp_continue
- }
- -re "\[\r\n\]*FAILED: $text\[\r\n\]*" {
- fail "[lrange $expect_out(0,string) 1 end]"
- exp_continue
- }
- -re "\[\r\n\]*WARNED: $text\[\r\n\]*" {
- verbose "$expect_out(0,string)" 2
- exp_continue
- }
- -re "\[\r\n\]*ERRORED: $text\[\r\n\]*" {
- verbose "$expect_out(0,string)" 2
- exp_continue
- }
- timeout {
- perror "$test timed out" 0
- exp_continue
- }
- eof {
- verbose "All Done" 3
- }
- }
- } else {
- perror "$test doesn't exist" 0
- }
-}
-
-if ![info exists EXPECT] {
- set EXPECT [findfile $base_dir/../../expect/expect "$base_dir/../../expect/expect" expect]
- verbose "EXPECT defaulting to $EXPECT" 2
-}
-
-make_defaults_file [pwd]/setval.tmp
-
-foreach i [glob $srcdir/$subdir/*.test] {
- process_test $i
-}
-
-
-
-
-
-
+++ /dev/null
-# Copyright (C) 1988, 90-92, 1994, 1995 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-load_lib util-defs.exp
-
-# move the site.exp file so we have no default to confuse us.
-#if [file exists $objdir/site.exp] {
-# catch "exec mv -f $objdir/site.exp $objdir/site.ignore"
-#}
-set fd [open site.exp w]
-puts ${fd} "set host_triplet $host_triplet"
-puts ${fd} "set srcdir $srcdir/.."
-puts ${fd} "set objdir $objdir/.."
-puts ${fd} "set tmpdir $objdir/../tmpdir"
-close $fd
-
-#
-# Set up the list.
-# 1st field is the command line option.
-# 2nd field is the pattern to match.
-# NOTE - No variable substitutions can be used.
-# 3rd field is an optional message to print with PASS/FAIL.
-#
-
-
-set tests {
- { "" "WARNING: No tool specified" "No arguments" }
- { "-v --tool xXx" "Found.*site\..*Loading.*utils\.exp" "Loading library files" }
- { "-v --tool xXx" "Expect binary is.*Using.*main test driver" "Loading basic packages" }
- { "--F --tool x" "Illegal Argument \"--F\"" "Bad argument" }
- { "--tool x" "Couldn't find tool init file" "Bad tool name" }
- { "--help" "USAGE:*" "Display help" }
- { "-v -v -v" "Verbose level is 3" "Verbose set correctly" }
- { "-V" "Expect version is.*Tcl version is.*Framework version is*" "--version" }
- { "-v --target m68k-vxworks" "Target is m68k-vxworks" "--target option" }
- { "-v --host sparc-sun-sunos4.1.9" "Native configuration is sparc-sun-sunos4.1.9" "--host option" }
- { "-v -a" "Print all test output to screen" "--all option" }
- { "-v --objdir xXx" "Using test binaries in xXx" "--objdir option" }
- { "-v --baud 666" "The baud rate is now 666" "--baud option" }
- { "-v --tool xXx" "Testing xXx" "--tool option" }
- { "-v --debug" "Expect Debugging is ON" "--debug option" }
- { "-v --D0" "Tcl debugger is ON" "--D0 option" }
- { "-v --strace 1" "Source Trace level is now 1.* 1 if" "--strace option" }
-}
-
-# Old tests not used anymore
-# { "-v --build sparc-sun-sunos4.1.9" "Native configuration is sparc-sun-sunos4.1.9" "--build option" }
-# { "-v --srcdir xXx" "Using test sources in xXx" "--srcdir option" }
-
-foreach i $tests {
- if [util_test "$RUNTEST" "[lindex $i 0]" "" "[lindex $i 1]"] {
- fail "[lindex $i 2]"
- } else {
- pass "[lindex $i 2]"
- }
-}
-
-
-set fd [open site.exp w]
-puts ${fd} "set host_triplet $host_triplet"
-puts ${fd} "set tool runtest"
-puts ${fd} "set srcdir $srcdir"
-puts ${fd} "set objdir $objdir"
-puts ${fd} "set tmpdir $objdir/tmpdir"
-close $fd
-
-# clean up log files left by the child runtest
-if [file exists $objdir/x.sum] {
- exec rm -f $objdir/x.*
-}
-if [file exists $objdir/xXx.sum] {
- exec rm -f $objdir/xXx.*
-}
+++ /dev/null
-set srcdir [lindex $argv 0]
-set subdir [lindex $argv 1]
-set objdir [lindex $argv 2]
-
-if [ file exists $objdir/setval.tmp ] {
- source $objdir/setval.tmp
-} else {
- puts "ERROR: $objdir/setval.tmp doesn't exist"
-}
-if [ file exists $srcdir$subdir/default_procs.tcl ] {
- source "$srcdir$subdir/default_procs.tcl"
-} else {
- puts "ERROR: $srcdir$subdir/default_procs.tcl doesn't exist"
-}
-
-set file $srcdir/../lib/remote.exp
-if [ file exists $file] {
- source $file
-} else {
- puts "ERROR: $file doesn't exist"
-}
-
-global errno ""
-
-#
-# Create a false target config array
-#
-set target_info(idp,name) "idp"
-set target_info(idp,ldflags) "-Tidp.ld"
-set target_info(idp,config) m68k-unknown-aout
-set target_info(idp,cflags) ""
-set target_info(idp,connect) telnet
-set target_info(idp,target) "s12"
-set target_info(idp,serial) "tstty12"
-set target_info(idp,netport) "localhost:23"
-set target_info(idp,baud) "9600"
-# MVME target
-set target_info(mvme,name) "mvme"
-set target_info(mvme,ldflags) "-Tmvme.ld"
-set target_info(mvme,config) m68k-unknown-aout
-set target_info(mvme,cflags) ""
-set target_info(mvme,connect) telnet
-set target_info(mvme,target) "s12"
-set target_info(mvme,serial) "tstty8"
-set target_info(mvme,netport) "localhost:23"
-set target_info(mvme,baud) "9600"
-
-# Test remote open. We try not to use any of the support procs in
-# target.exp to for isolation testing. "target" is the name of the
-# default array setup by the procs in target.exp.
-
-set timeout 100
-set errno ""
-
-#
-# Force connection errors
-#
-
-# force an rlogin error
-if { [rlogin foobar.barfoo.com] < 0 } {
- puts "PASSED: rlogin bogus host"
-} else {
- puts "FAILED: rlogin bogus"
-}
-
-# force an rsh error
-if { [rsh foobar.barfoo.com] < 0 } {
- puts "PASSED: rsh bogus host"
-} else {
- puts "FAILED: rsh bogus"
-}
-
-# force a telnet error
-if { [telnet foobar.barfoo.com] < 0 } {
- puts "PASSED: telnet bogus host"
-} else {
- puts "FAILED: telnet bogus"
-}
-
-#
-# Connect to localhost
-#
-
-# localhost rlogin test
-if { [rlogin localhost] < 0 } {
- if [string match "*unencrypted connection" $errno] {
- NOTTESTED "rlogin localhost"
- } else {
- puts "FAILED: rlogin localhost"
- }
-} else {
- puts "PASSED: rlogin localhost"
-}
-catch "exp_send exit\n"
-catch "close -i $spawn_id"
-catch "wait -i $spawn_id"
-
-# localhost rsh test
-if { [rsh localhost] < 0 } {
- if [string match "*kinit" $errno] {
- puts "NOTTESTED: rsh localhost"
- } else {
- puts "FAILED: rsh localhost"
- }
-} else {
- puts "PASSED: rsh localhost"
-}
-catch "exp_send exit\n"
-catch "close -i $spawn_id"
-catch "wait -i $spawn_id"
-
-# localhost telnet test. In this case it will return
-# an error cause we get prompted for a password or login. For
-# now this is considered an error, as we usually only
-# telnet to a terminal server.
-if { [telnet localhost] < 0 } {
- if [string match "*password." $errno] {
- puts "NOTTESTED: telnet localhost"
- } else {
- puts "FAILED: telnet localhost"
- }
-} else {
- puts "PASSED: telnet localhost"
-}
-catch "exp_send exit\n"
-catch "close -i $spawn_id"
-catch "wait -i $spawn_id"
-
-#
-# Connect to the configured target
-#
-set target_info(target,netport) $target_info(idp,netport)
-set target_info(target,target) localhost
-set target_info(target,connect) rlogin
-if { [rlogin target] < 0 } {
- if [ string match "*kinit" $errno] {
- puts "NOTTESTED: rlogin target"
- } else {
- puts "FAILED: rlogin target"
- }
-} else {
- puts "PASSED: rlogin target"
-}
-catch "exp_send exit\n"
-catch "close -i $spawn_id"
-catch "wait -i $spawn_id"
-
-# test remote_open
-if { [rsh target] < 0 } {
- if [ string match "*kinit" $errno] {
- puts "NOTTESTED: rsh target"
- } else {
- puts "FAILED: rsh target"
- }
-} else {
- puts "PASSED: rsh target"
-}
-catch "exp_send exit\n"
-catch "close -i $spawn_id"
-catch "wait -i $spawn_id"
-
-# telnet to host
-# FIXME: This won't work till we figure out how to telnet and
-# not get a password prompt.
-
-#
-# Connect to the configured host
-#
-set target_info(host,connect) rlogin
-set target_info(host,netport) $target_info(idp,netport)
-set target_info(host,target) localhost
-
-# rlogin to host
-if { [rlogin host] < 0 } {
- if [ string match "*kinit*" $errno] {
- puts "NOTTESTED: rlogin host"
- } else {
- puts "FAILED: rlogin host"
- }
-} else {
- puts "PASSED: rlogin host"
-}
-catch "exp_send exit\n"
-catch "close -i $spawn_id"
-catch "wait -i $spawn_id"
-
-# rsh to host
-if { [rsh host] < 0 } {
- if [ string match "*kinit*" $errno] {
- puts "NOTTESTED: rsh host"
- } else {
- puts "FAILED: rsh host"
- }
-} else {
- puts "PASSED: rsh host"
-}
-catch "exp_send exit\n"
-catch "close -i $spawn_id"
-catch "wait -i $spawn_id"
-
-# telnet to host
-# FIXME: This won't work till we figure out how to telnet and
-# not get a password prompt.
-
-# tip port
-# remote_close args
-# rcp_download src dest
-# tip_download shell_id file
-# kermit args
-# download args
-
-
-
-
-
-
-
+++ /dev/null
-# Subordinate to stats.exp.
-
-# If not called by stats.exp, quit now.
-if { ![info exists STATS_TEST] } {
- return
-}
-
-switch $STATS_TEST {
- pass { pass "pass test" }
- fail { fail "fail test" }
- xpass { xpass "xpass test" }
- xfail { xfail "xfail test" }
- untested { untested "untested test" }
- unresolved { unresolved "unresolved test" }
- unsupported { unsupported "unsupported test" }
-}
\ No newline at end of file
+++ /dev/null
-# Copyright (C) 1995 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file tests pass/fail/etc.
-# The way we do this is to recursively invoke ourselves on a small testsuite
-# and analyze the results.
-
-load_lib util-defs.exp
-
-if ![file isdirectory $tmpdir] {
- catch "exec mkdir $tmpdir"
-}
-
-set tests {
- { pass "expected passes\[ \t\]+1\n" }
- { fail "unexpected failures\[ \t\]+1\n" }
- { xpass "unexpected successes\[ \t\]+1\n" }
- { xfail "expected failures\[ \t\]+1\n" }
- { untested "untested testcases\[ \t\]+1\n" }
- { unresolved "unresolved testcases\[ \t\]+1\n" }
- { unsupported "unsupported tests\[ \t\]+1\n" }
-}
-
-foreach t $tests {
- if [util_test "$RUNTEST" \
- "--outdir $tmpdir STATS_TEST=[lindex $t 0] stats-sub.exp" \
- "" \
- [lindex $t 1]] {
- fail [lindex $t 0]
- } else {
- pass [lindex $t 0]
- }
-}
+++ /dev/null
-set srcdir [lindex $argv 0]
-set subdir [lindex $argv 1]
-set objdir [lindex $argv 2]
-
-if [ file exists $objdir/setval.tmp ] {
- source $objdir/setval.tmp
-} else {
- puts "ERROR: $objdir/setval.tmp doesn't exist"
-}
-if [ file exists $srcdir$subdir/default_procs.tcl ] {
- source "$srcdir$subdir/default_procs.tcl"
-} else {
- puts "ERROR: $srcdir$subdir/default_procs.tcl doesn't exist"
-}
-
-set file $srcdir/../lib/target.exp
-if [ file exists $file] {
- source $file
-} else {
- puts "ERROR: $file doesn't exist"
-}
-# we load framework so we can use stuff like is3way
-set file $srcdir/../lib/framework.exp
-if [ file exists $file] {
- source $file
-} else {
- puts "ERROR: $file doesn't exist"
-}
-# we load the remote stuff so we can test execute_anywhere
-set file $srcdir/../lib/remote.exp
-if [ file exists $file] {
- source $file
-} else {
- puts "ERROR: $file doesn't exist"
-}
-
-#
-# Create a false target config array
-#
-set target_info(idp,name) "idp"
-set target_info(idp,ldflags) "-Tidp.ld"
-set target_info(idp,config) m68k-unknown-aout
-set target_info(idp,cflags) ""
-set target_info(idp,connect) "telnet"
-set target_info(idp,target) "s12"
-set target_info(idp,serial) "tstty12"
-set target_info(idp,netport) "localhost:23"
-set target_info(idp,baud) "9600"
-# MVME target
-set target_info(mvme,name) "mvme"
-set target_info(mvme,ldflags) "-Tmvme.ld"
-set target_info(mvme,config) m68k-unknown-aout
-set target_info(mvme,cflags) ""
-set target_info(mvme,connect) "telnet"
-set target_info(mvme,target) "s12"
-set target_info(mvme,serial) "tstty8"
-set target_info(mvme,netport) "localhost:23"
-set target_info(mvme,baud) "9600"
-
-# Test remote open. We try not to use any of the support procs in
-# target.exp to for isolation testing. "target" is the name of the
-# default array setup by the procs in target.exp.
-
-set timeout 100
-
-# test list_target
-
-if { [list_targets] == "idp mvme" } {
- puts "PASSED: list_targets"
-} else {
- puts "FAILED: list_targets"
-}
-push_config target idp
-set matches 0
-if { $target_info(target,name) == "idp" } {
- incr matches
-}
-if { $target_info(target,ldflags) == "-Tidp.ld" } {
- incr matches
-}
-if { $target_info(target,config) == "m68k-unknown-aout" } {
- incr matches
-}
-if { $target_info(target,cflags) == "" } {
- incr matches
-}
-if { $target_info(target,connect) == "telnet" } {
- incr matches
-}
-if { $target_info(target,target) == "s12" } {
- incr matches
-}
-if { $target_info(target,serial) == "tstty12" } {
- incr matches
-}
-if { $target_info(target,netport) == "localhost:23" } {
- incr matches
-}
-if { $target_info(target,baud) == "9600" } {
- incr matches
-}
-if { $matches == 9 } {
- puts "PASSED: push_config target"
-} else {
- puts "FAILED: push_config target"
-}
-
-# test pop_config target
-pop_config target
-set matches 0
-if { $target_info(target,name) == "" } {
- incr matches
-}
-if { $target_info(target,ldflags) == "" } {
- incr matches
-}
-if { $target_info(target,config) == "" } {
- incr matches
-}
-if { $target_info(target,cflags) == "" } {
- incr matches
-}
-if { $target_info(target,connect) == "" } {
- incr matches
-}
-if { $target_info(target,target) == "" } {
- incr matches
-}
-if { $target_info(target,serial) == "" } {
- incr matches
-}
-if { $target_info(target,netport) == "" } {
- incr matches
-}
-if { $target_info(target,baud) == "" } {
- incr matches
-}
-if { $matches == 9 } {
- puts "PASSED: pop_config target"
-} else {
- puts "FAILED: pop_config target"
-}
-
-push_config host idp
-set matches 0
-if { $target_info(host,name) == "idp" } {
- incr matches
-}
-if { $target_info(host,ldflags) == "-Tidp.ld" } {
- incr matches
-}
-if { $target_info(host,config) == "m68k-unknown-aout" } {
- incr matches
-}
-if { $target_info(host,cflags) == "" } {
- incr matches
-}
-if { $target_info(host,connect) == "telnet" } {
- incr matches
-}
-if { $target_info(host,target) == "s12" } {
- incr matches
-}
-if { $target_info(host,serial) == "tstty12" } {
- incr matches
-}
-if { $target_info(host,netport) == "localhost:23" } {
- incr matches
-}
-if { $target_info(host,baud) == "9600" } {
- incr matches
-}
-if { $matches == 9 } {
- puts "PASSED: push_config target"
-} else {
- puts "FAILED: push_config target"
-}
-
-# test pop_config host
-pop_config host
-set matches 0
-if { $target_info(host,name) == "" } {
- incr matches
-}
-if { $target_info(host,ldflags) == "" } {
- incr matches
-}
-if { $target_info(host,config) == "" } {
- incr matches
-}
-if { $target_info(host,cflags) == "" } {
- incr matches
-}
-if { $target_info(host,connect) == "" } {
- incr matches
-}
-if { $target_info(host,target) == "" } {
- incr matches
-}
-if { $target_info(host,serial) == "" } {
- incr matches
-}
-if { $target_info(host,netport) == "" } {
- incr matches
-}
-if { $target_info(host,baud) == "" } {
- incr matches
-}
-if { $matches == 9 } {
- puts "PASSED: pop_config host"
-} else {
- puts "FAILED: pop_config host"
-}
-
-# test execute_anywhere for a native environment
-set host_triplet i586-unknown-linux
-set target_triplet i586-unknown-linux
-set build_triplet i586-unknown-linux
-if { [string match "*setval.tmp*" [execute_anywhere "ls"]] } {
- puts "PASSED: execute_anywhere, native"
-} else {
- puts "FAILED: execute_anywhere, native"
-}
-
-# test execute_anywhere for a normal cross
-set target_triplet m68k-unknown-coff
-if { [string match "*testsuite" [execute_anywhere "pwd"]] } {
- puts "PASSED: execute_anywhere, normal cross"
-} else {
- puts "FAILED: execute_anywhere, normal cross"
-}
-
-# test execute_anywhere for a canadian cross
-set build_triplet m68k-test-test
-set target_info(host,connect) rlogin
-set target_info(host,netport) $target_info(idp,netport)
-set target_info(host,target) localhost
-if { [string match "*FooBar*" [execute_anywhere "echo FooBar"]] } {
- puts "PASSED: execute_anywhere, canadian cross"
-} else {
- puts "FAILED: execute_anywhere, canadian cross"
-}
-
-# compile arg
-# archive arg
-# ranlib arg
-# link_objects arg
+++ /dev/null
-# just so we don't look empty.
+++ /dev/null
-# just so we don't look empty.
-
+++ /dev/null
-# just so we don't look empty.
-
+++ /dev/null
-# just so we don't look empty.
-
+++ /dev/null
-set srcdir [lindex $argv 0]
-set subdir [lindex $argv 1]
-set objdir [lindex $argv 2]
-
-if [ file exists $objdir/setval.tmp ] {
- source $objdir/setval.tmp
-} else {
- puts "ERROR: $objdir/setval.tmp doesn't exist"
-}
-if [ file exists $srcdir$subdir/default_procs.tcl ] {
- source "$srcdir$subdir/default_procs.tcl"
-} else {
- puts "ERROR: $srcdir$subdir/default_procs.tcl doesn't exist"
-}
-
-set file $srcdir/../lib/utils.exp
-if [ file exists $file] {
- source $file
-} else {
- puts "ERROR: $file doesn't exist"
-}
-
-#
-# getdirs tests
-#
-if [lib_pat_test "getdirs" "${srcdir}/runtest.all" "runtest.all/topdir" ] {
- puts "FAILED: getdirs toplevel, no arguments"
-} else {
- puts "PASSED: getdirs toplevel, no arguments"
-}
-
-if [lib_pat_test "getdirs" "${srcdir}/runtest.all top*" "runtest.all/topdir" ] {
- puts "FAILED: getdirs toplevel, one subdir"
-} else {
- puts "PASSED: getdirs toplevel, one subdir"
-}
-
-if [lib_pat_test "getdirs" "${srcdir}/runtest.all/topdir" "subdir1*subdir2" ] {
- puts "FAILED: getdirs toplevel, two subdirs"
-} else {
- puts "PASSED: getdirs toplevel, two subdirs"
-}
-
-#
-# find tests
-#
-if [string match "*/subdir2/subfile2" "[find ${srcdir}/runtest.all/topdir/subdir2 sub*]"] {
- puts "PASSED: find, only one level deep"
-} else {
- puts "FAILED: find, only one level deep"
-}
-
-#set path ${srcdir}/runtest.all/topdir/subdir1
-#exp_test "find ${path} sub*" "Adding */subdir1/subsubdir1/subsubfile1" "find, two levels deep"
-
-if [string match "*/subdir1/subsubdir1/subsubfile1" "[find ${srcdir}/runtest.all/topdir/subdir1 sub*]"] {
- puts "PASSED: find, two levels deep"
-} else {
- puts "FAILED: find, two levels deep"
-}
-
-#
-# environment varible utility tests
-#
-
-if [info exists env(TESTRUN)] {
- unset env(TESTRUN)
-}
-
-# test setenv
-setenv TESTRUN FooBar
-if [info exists env(TESTRUN)] {
- if { $env(TESTRUN) == "FooBar" } {
- pass "setenv, set an environment variable"
- } else {
- fail "setenv, set an environment variable
- }
-} else {
- fail "setenv, set an environment variable"
-}
-# test getenv
-if [info exists env(TESTRUN)] {
- if { [getenv TESTRUN] == "FooBar" } {
- pass "getenv, get an environment variable"
- } else {
- fail "getenv, get an environment variable"
- }
-} else {
- untested "getenv, get an environment variable"
-}
-
-# test unsetenv
-if [info exists env(TESTRUN)] {
- unsetenv TESTRUN
- if [info exists env(TESTRUN)] {
- fail "unsetenv, unset an environment variable"
- } else {
- pass "unsetenv, unset an environment variable"
- }
-} else {
- untested "unsetenv, unset an environment variable"
-}
-
-# which file
-# grep args
-# prune list pattern
-# slay name
-# absolute path
-# psource file
-# diff file_1 file_2
-
-
-
-
-
-
-
-
+++ /dev/null
- Copyright (C) 1988, 90-93, 1995 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-global RUNTEST
-if ![info exists RUNTEST] then {
- set RUNTEST [transform runtest]
-}
-
-if ![info exists EXPECT] {
- set EXPECT [findfile $base_dir/../../expect/expect "$base_dir/../../expect/expect" expect]
- verbose "EXPECT defaulting to $EXPECT" 2
-}
-
-global RUNTESTFLAGS
-if ![info exists RUNTESTFLAGS] then {
- set RUNTESTFLAGS "-v -v -a"
-}
-
-#
-# runtest_version -- extract and print the version number
-#
-proc runtest_version { } {
- global RUNTEST
-
- catch {exec $RUNTEST -V} tmp
- if [info exists tmp] then {
- clone_output "$tmp\n"
- }
-}
-
-#
-# runtest_load -- loads the program. For runtest, this is just a stub
-#
-proc runtest_load { arg } {
-}
-
-#
-# runtest_exit -- exit the test driver for expect
-#
-proc runtest_exit { } {
- close
-}
-
-#
-# runtest_start -- start everything
-#
-proc runtest_start { } {
- global verbose
- global spawn_id
- global subdir
- global srcdir
- global objdir
- global RUNTEST
- global RUNTESTFLAGS
-
- if {[which $RUNTEST] != 0} then {
- perror "Can't find $RUNTEST"
- }
-
-# return [open [concat "$RUNTEST $RUNTESTFLAGS"] r]
-}
+++ /dev/null
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.7
-# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_help="$ac_help
- --with-tclinclude directory where tcl private headers are"
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir="$ac_optarg" ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [same as prefix]
- --bindir=DIR user executables in DIR [EPREFIX/bin]
- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data in DIR
- [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data in DIR
- [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
- --includedir=DIR C header files in DIR [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
- --infodir=DIR info documentation in DIR [PREFIX/info]
- --mandir=DIR man documentation in DIR [PREFIX/man]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM
- run sed PROGRAM on installed program names
-EOF
- cat << EOF
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-EOF
- if test -n "$ac_help"; then
- echo "--enable and --with options recognized:$ac_help"
- fi
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir="$ac_optarg" ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir="$ac_optarg" ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir="$ac_optarg" ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir="$ac_optarg" ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir="$ac_optarg" ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir="$ac_optarg" ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir="$ac_optarg" ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir="$ac_optarg" ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.7"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=Makefile.in
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='echo $CPP $CPPFLAGS 1>&5;
-$CPP $CPPFLAGS'
-ac_compile='echo ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5;
-${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5'
-ac_link='echo ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5;
-${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5'
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- # This must be in double quotes, not single quotes, because CPP may get
- # substituted into the Makefile and "${CC-cc}" will confuse make.
- CPP="${CC-cc} -E"
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp.
- cat > conftest.$ac_ext <<EOF
-#line 537 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- rm -rf conftest*
- CPP="${CC-cc} -E -traditional-cpp"
- cat > conftest.$ac_ext <<EOF
-#line 551 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- rm -rf conftest*
- CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
- ac_cv_prog_CPP="$CPP"
-fi
- CPP="$ac_cv_prog_CPP"
-else
- ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-# If we cannot run a trivial program, we must be cross compiling.
-echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_c_cross=yes
-else
-cat > conftest.$ac_ext <<EOF
-#line 585 "configure"
-#include "confdefs.h"
-main(){return(0);}
-EOF
-eval $ac_link
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
- ac_cv_c_cross=no
-else
- ac_cv_c_cross=yes
-fi
-fi
-rm -fr conftest*
-fi
-
-echo "$ac_t""$ac_cv_c_cross" 1>&6
-cross_compiling=$ac_cv_c_cross
-
-
-#
-# Ok, lets find the tcl source trees so we can use the headers
-# Warning: transition of version 9 to 10 will break this algorithm
-# because 10 sorts before 9. We also look for just tcl. We have to
-# be careful that we don't match stuff like tclX by accident.
-# the alternative search directory is involked by --with-tclinclude
-#
-no_tcl=true
-echo $ac_n "checking for Tcl private headers""... $ac_c" 1>&6
-# Check whether --with-tclinclude or --without-tclinclude was given.
-if test "${with_tclinclude+set}" = set; then
- withval="$with_tclinclude"
- with_tclinclude=${withval}
-fi
-
-if eval "test \"`echo '$''{'ac_cv_c_tclh'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
-# first check to see if --with-tclinclude was specified
-if test x"${with_tclinclude}" != x ; then
- if test -f ${with_tclinclude}/tclInt.h ; then
- ac_cv_c_tclh=`(cd ${with_tclinclude}; pwd)`
- else
- { echo "configure: error: ${with_tclinclude} directory doesn't contain private headers" 1>&2; exit 1; }
- fi
-fi
-# next check in private source directory
-#
-# since ls returns lowest version numbers first, reverse its output
-if test x"${ac_cv_c_tclh}" = x ; then
- for i in \
- ${srcdir}/../tcl \
- `ls -dr ${srcdir}/../tcl[0-9]* 2>/dev/null` \
- ${srcdir}/../../tcl \
- `ls -dr ${srcdir}/../../tcl[0-9]* 2>/dev/null` \
- ${srcdir}/../../../tcl \
- `ls -dr ${srcdir}/../../../tcl[0-9]* 2>/dev/null ` ; do
- if test -f $i/tclInt.h ; then
- ac_cv_c_tclh=`(cd $i; pwd)`
- break
- fi
- # Tcl 7.5 and greater puts headers in subdirectory.
- if test -f $i/generic/tclInt.h ; then
- ac_cv_c_tclh=`(cd $i; pwd)`/generic
- fi
- done
-fi
-# finally check in a few common install locations
-#
-# since ls returns lowest version numbers first, reverse its output
-if test x"${ac_cv_c_tclh}" = x ; then
- for i in \
- `ls -dr /usr/local/src/tcl[0-9]* 2>/dev/null` \
- `ls -dr /usr/local/lib/tcl[0-9]* 2>/dev/null` \
- /usr/local/src/tcl \
- /usr/local/lib/tcl \
- ${prefix}/include ; do
- if test -f $i/tclInt.h ; then
- ac_cv_c_tclh=`(cd $i; pwd)`
- break
- fi
- done
-fi
-# see if one is installed
-if test x"${ac_cv_c_tclh}" = x ; then
- ac_safe=`echo "tclInt.h" | tr './\055' '___'`
-echo $ac_n "checking for tclInt.h""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 675 "configure"
-#include "confdefs.h"
-#include <tclInt.h>
-EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_cv_c_tclh=installed
-else
- echo "$ac_t""no" 1>&6
-ac_cv_c_tclh=""
-fi
-
-fi
-
-fi
-
-if test x"${ac_cv_c_tclh}" = x ; then
- TCLHDIR="# no Tcl private headers found"
- { echo "configure: error: Can't find Tcl private headers" 1>&2; exit 1; }
-fi
-if test x"${ac_cv_c_tclh}" != x ; then
- no_tcl=""
- if test x"${ac_cv_c_tkh}" = x"installed" ; then
- echo "$ac_t""is installed" 1>&6
- TCLHDIR=""
- else
- echo "$ac_t""found in ${ac_cv_c_tclh}" 1>&6
- # this hack is cause the TCLHDIR won't print if there is a "-I" in it.
- TCLHDIR="-I${ac_cv_c_tclh}"
- fi
-fi
-
-echo $ac_n "checking Tcl version""... $ac_c" 1>&6
-rm -rf tclmajor tclminor
-orig_includes="$CPPFLAGS"
-
-if test x"${TCLHDIR}" != x ; then
- CPPFLAGS="$CPPFLAGS $TCLHDIR"
-fi
-
-if test "$cross_compiling" = yes; then
- { echo "configure: error: can't be cross compiled" 1>&2; exit 1; }
-
-else
-cat > conftest.$ac_ext <<EOF
-#line 732 "configure"
-#include "confdefs.h"
-
-#include <stdio.h>
-#include "tcl.h"
-main() {
- FILE *maj = fopen("tclmajor","w");
- FILE *min = fopen("tclminor","w");
- fprintf(maj,"%d",TCL_MAJOR_VERSION);
- fprintf(min,"%d",TCL_MINOR_VERSION);
- fclose(maj);
- fclose(min);
- return 0;
-}
-EOF
-eval $ac_link
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
- tclmajor=`cat tclmajor`
- tclminor=`cat tclminor`
- tclversion=$tclmajor.$tclminor
- echo "$ac_t""$tclversion" 1>&6
- rm -f tclmajor tclminor
-
-else
- echo "$ac_t""can't happen" 1>&6
-
-fi
-fi
-rm -fr conftest*
-CPPFLAGS="${orig_includes}"
-
-
-
-
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-subdirs="calc"
-
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
- >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%-D\1=\2%g
-s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.7"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-
-trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@CPP@%$CPP%g
-s%@TCLHDIR@%$TCLHDIR%g
-s%@subdirs@%$subdirs%g
-s%@host@%$host%g
-
-CEOF
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust relative srcdir, etc. for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
-fi; done
-rm -f conftest.subs
-
-
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
-if test "$no_recursion" != yes; then
-
- # Remove --cache-file and --srcdir arguments so they do not pile up.
- ac_sub_configure_args=
- ac_prev=
- for ac_arg in $ac_configure_args; do
- if test -n "$ac_prev"; then
- ac_prev=
- continue
- fi
- case "$ac_arg" in
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- ;;
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- ;;
- *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
- esac
- done
-
- for ac_config_dir in calc; do
-
- # Do not complain, so a configure script can configure whichever
- # parts of a large source tree are present.
- if test ! -d $srcdir/$ac_config_dir; then
- continue
- fi
-
- echo configuring in $ac_config_dir
-
- case "$srcdir" in
- .) ;;
- *)
- if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :;
- else
- { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; }
- fi
- ;;
- esac
-
- ac_popdir=`pwd`
- cd $ac_config_dir
-
- case "$srcdir" in
- .) # No --srcdir option. We are building in place.
- ac_sub_srcdir=$srcdir ;;
- /*) # Absolute path.
- ac_sub_srcdir=$srcdir/$ac_config_dir ;;
- *) # Relative path.
- ac_sub_srcdir=../$srcdir/$ac_config_dir ;;
- esac
-
- # Check for guested configure; otherwise get Cygnus style configure.
- if test -f $ac_sub_srcdir/configure; then
- ac_sub_configure=$ac_sub_srcdir/configure
- elif test -f $ac_sub_srcdir/configure.in; then
- ac_sub_configure=$ac_configure
- else
- echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2
- ac_sub_configure=
- fi
-
- # The recursion is here.
- if test -n "$ac_sub_configure"; then
-
- # Make the cache file name correct relative to the subdirectory.
- # A "../" for each directory in /$ac_config_dir.
- ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
- case "$cache_file" in
- /*) ac_sub_cache_file=$cache_file ;;
- *) # Relative path.
- ac_sub_cache_file="$ac_dots$cache_file" ;;
- esac
-
- echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir"
- # The eval makes quoting arguments work.
- if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir
- then :
- else
- { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; }
- fi
- fi
-
- cd $ac_popdir
- done
-fi
-
+++ /dev/null
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(Makefile.in)
-
-CY_AC_PATH_TCLH
-
-AC_CONFIG_SUBDIRS(calc)
-
-AC_SUBST(host)
-AC_OUTPUT(Makefile)
+++ /dev/null
- Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-dejagnu@prep.ai.mit.edu
-
-# This file was written by Rob Savoye. (rob@welcomehome.org)
-
-#
-# Setup an environment so we can execute library procs without DejaGnu
-#
-
-#
-# Create a default environment and start expect.
-#
-proc make_defaults_file { defs } {
- global srcdir
- global objdir
- global subdir
- global build_triplet
- global host_triplet
- global target_triplet
- global target_os
- global target_cpu
-
- # We need to setup default values and a few default procs so we
- # can execute library code without DejaGnu
- set fd [open $defs w]
- puts ${fd} "set tool foobar"
- puts ${fd} "set srcdir ${srcdir}"
- puts ${fd} "set objdir ${objdir}"
- puts ${fd} "set subdir ${subdir}"
- puts ${fd} "set build_triplet ${build_triplet}"
- puts ${fd} "set host_triplet ${host_triplet}"
- puts ${fd} "set target_triplet ${target_triplet}"
- puts ${fd} "set target_os ${target_os}"
- puts ${fd} "set target_cpu ${target_cpu}"
- puts ${fd} "set tool foobar"
- puts ${fd} "set testcnt 0"
- puts ${fd} "set warncnt 0"
- puts ${fd} "set errcnt 0"
- puts ${fd} "set passcnt 0"
- puts ${fd} "set xpasscnt 0"
- puts ${fd} "set failcnt 0"
- puts ${fd} "set xfailcnt 0"
- puts ${fd} "set prms_id 0"
- puts ${fd} "set bug_id 0"
- puts ${fd} "set exit_status 0"
- puts ${fd} "set untestedcnt 0"
- puts ${fd} "set unresolvedcnt 0"
- puts ${fd} "set unsupportedcnt 0"
- puts ${fd} "set xfail_flag 0"
- puts ${fd} "set xfail_prms 0"
- puts ${fd} "set mail_logs 0"
- puts ${fd} "set multipass_name 0"
- catch "close $fd"
-}
-
-proc start_expect { } {
- global spawn_id
- global base_dir
-
- # We need to setup default values and a few default procs so we
- # can execute library code without DejaGnu
- set defaults_file setval.tmp
- make_defaults_file $defaults_file
- set fd [open ${defaults_file} w]
-
- # look for expect
- if ![info exists EXPECT] {
- set EXPECT [findfile $base_dir/../../expect/expect "$base_dir/../../expect/expect" expect]
- verbose "EXPECT defaulting to $EXPECT" 2
- }
-
-# catch close
-# catch wait
-
- # Start expect runing
- spawn "$EXPECT"
- expect {
- -re "expect.*> " {
- verbose "Started the child expect shell" 2
- }
- timeout {
- perror "Timed out starting the child expect shell."
- return -1
- }
- }
-
- # Load the defaults file
- exp_send "source ${defaults_file}\n"
- expect {
- "expect*> " {
- verbose "Loaded testing defaults file." 2
- return 1
- }
- timeout {
- perror "Couldn't load the testing defaults file."
- return -1
- }
- }
-}
-
-#
-# Stop the runing expect process
-#
-proc stop_expect { } {
- global spawn_id
-
- # make expect exit
- exp_send "exit\n"
- catch "close -i $spawn_id"
- catch "wait -i $spawn_id"
-}
-
-#
-# Load the library to test
-#
-proc load_test_lib { lib } {
- global spawn_id
- exp_send "source ${lib}\n"
- expect {
- "expect*> " {
- verbose "Testing ${lib}" 2
- }
- timeout {
- perror "Couldn't load the libraries to test"
- return -1
- }
- }
-}
-
-#
-# test a library proc that emits patterns
-#
-proc exp_test { cmd pattern msg } {
- global spawn_id
-
- exp_send "puts ACK ; $cmd ; puts NAK\r\n"
- expect {
- "puts ACK*puts NAK" {
- verbose "Got command echo" 3
- }
- timeout {
- warning "Never got command echo"
- }
- }
-
- expect {
- "ACK" {
- exp_continue
- }
- -re "\r\n1\r\n" {
- warning "$msg, 1 was returned"
- exp_continue
- }
- -re "\r\n0\r\n" {
- warning "$msg, 0 was returned"
- exp_continue
- }
- "$pattern" {
- pass "$msg"
- }
- timeout {
- fail "$msg"
- }
- }
-}
-
-# test a config proc that only returns a code
-# ex... config_test "isbuild $build_triplet" "pass" "fail" "isbuild, native"
-# args are: command, true condition, false condition, message to print
-proc config_test { cmd true false msg } {
- global spawn_id
-
- set timeout 20
- exp_send "puts ACK ; puts \[$cmd\] ; puts NAK\r\n"
- expect {
- "puts ACK*$cmd*puts NAK" {
- verbose "Got command echo" 3
- }
- timeout {
- warning "Never got command echo"
- }
- }
-
- expect {
- -re "Checking pattern*with*\[\r\n\]" {
- exp_continue
- }
- -re "\r\n1\r\n" {
- $true "$msg"
- }
- -re "\r\n0\r\n" {
- $false "$msg"
- }
- timeout {
- perror "$msg (timed out)"
- }
- }
-}
-
-
-
-
-
-
+++ /dev/null
-
-puts "======= Environment (Start) ======="
-
-foreach __item [lsort [list env]] {
- if {[string compare $__item "__info"] == 0} continue
- if [catch {puts " $__item=>[eval set $__item]<"} szErrMsg] {
- if [regexp "variable is array" $szErrMsg] {
- foreach __elem [lsort [array names $__item]] {
- puts " ${__item}($__elem)=>[set ${__item}($__elem)]<"
- }
- } else {
- puts "******* >> msg : $szErrMsg"
- puts "******* >> errorInfo: [uplevel #0 set errorInfo]"
- puts "******* >> errorCode: [uplevel #0 set errorCode]"
- }
- }
-}
-
-pass env.exp
-puts "======= Environment (End) ======="