summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile.in123
-rw-r--r--doc/hist.texinfo13
-rw-r--r--doc/history.dvibin47376 -> 50348 bytes
-rw-r--r--doc/history.html1062
-rw-r--r--doc/history.info175
-rw-r--r--doc/history.ps3571
-rw-r--r--doc/history_toc.html51
-rw-r--r--doc/hstech.texinfo28
-rw-r--r--doc/hsuser.texinfo196
-rw-r--r--doc/readline.01122
-rw-r--r--doc/readline.3886
-rw-r--r--doc/readline.dvibin148692 -> 182704 bytes
-rw-r--r--doc/readline.html3363
-rw-r--r--doc/readline.info2785
-rw-r--r--doc/readline.ps7558
-rw-r--r--doc/readline_toc.html77
-rw-r--r--doc/rlman.texinfo11
-rw-r--r--doc/rltech.texinfo216
-rw-r--r--doc/rluser.texinfo517
-rwxr-xr-xdoc/texi2dvi275
-rwxr-xr-xdoc/texi2html2021
-rw-r--r--doc/texinfo.tex880
22 files changed, 18153 insertions, 6777 deletions
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 0000000..bbbd5c3
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,123 @@
+# This makefile for Readline library documentation is in -*- text -*- mode.
+# Emacs likes it that way.
+top_srcdir = @top_srcdir@
+srcdir = @srcdir@
+
+prefix = @prefix@
+infodir = @infodir@
+
+mandir = @mandir@
+man3dir = $(mandir)/man3
+
+RM = rm -f
+
+TEXINPUTDIR = $(srcdir)
+
+MAKEINFO = makeinfo
+TEXI2DVI = $(srcdir)/texi2dvi
+TEXI2HTML = $(srcdir)/texi2html
+QUIETPS = #set this to -q to shut up dvips
+DVIPS = dvips -D 300 $(QUIETPS) -o $@ # tricky
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+
+RLSRC = $(srcdir)/rlman.texinfo $(srcdir)/rluser.texinfo \
+ $(srcdir)/rltech.texinfo
+HISTSRC = $(srcdir)/hist.texinfo $(srcdir)/hsuser.texinfo \
+ $(srcdir)/hstech.texinfo
+
+# This should be a program that converts troff to an ascii-readable format
+NROFF = groff -Tascii
+
+# This should be a program that converts troff to postscript
+GROFF = groff
+
+DVIOBJ = readline.dvi history.dvi
+INFOOBJ = readline.info history.info
+PSOBJ = readline.ps history.ps
+HTMLOBJ = readline.html history.html
+TEXTOBJ = readline.0
+
+CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ) $(TEXTOBJ)
+
+.SUFFIXES: .0 .3 .ps .txt .dvi
+
+.3.0:
+ $(RM) $@
+ -${NROFF} -man $< > $@
+
+all: info dvi html ps text
+nodvi: info html text
+
+readline.dvi: $(RLSRC)
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texinfo
+ mv rlman.dvi readline.dvi
+
+readline.info: $(RLSRC)
+ $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texinfo
+
+history.dvi: ${HISTSRC}
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/hist.texinfo
+ mv hist.dvi history.dvi
+
+history.info: ${HISTSRC}
+ $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/hist.texinfo
+
+readline.ps: readline.dvi
+ $(RM) $@
+ $(DVIPS) readline.dvi
+
+history.ps: history.dvi
+ $(RM) $@
+ $(DVIPS) history.dvi
+
+readline.html: ${RLSRC}
+ $(TEXI2HTML) -I $(TEXINPUTDIR) $(srcdir)/rlman.texinfo
+ sed -e 's:rlman.html:readline.html:' -e 's:rlman_toc.html:readline_toc.html:' rlman.html > readline.html
+ sed -e 's:rlman.html:readline.html:' -e 's:rlman_toc.html:readline_toc.html:' rlman_toc.html > readline_toc.html
+ $(RM) rlman.html rlman_toc.html
+
+history.html: ${HISTSRC}
+ $(TEXI2HTML) -I $(TEXINPUTDIR) $(srcdir)/hist.texinfo
+ sed -e 's:hist.html:history.html:' -e 's:hist_toc.html:history_toc.html:' hist.html > history.html
+ sed -e 's:hist.html:history.html:' -e 's:hist_toc.html:history_toc.html:' hist_toc.html > history_toc.html
+ $(RM) hist.html hist_toc.html
+
+info: $(INFOOBJ)
+dvi: $(DVIOBJ)
+ps: $(PSOBJ)
+html: $(HTMLOBJ)
+text: $(TEXTOBJ)
+
+readline.0: $(srcdir)/readline.3
+
+clean:
+ $(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
+ *.fns *.kys *.tps *.vrs *.o core
+
+distclean: clean
+ $(RM) $(CREATED_DOCS)
+
+mostlyclean: clean
+
+maintainer-clean: clean
+ $(RM) $(CREATED_DOCS)
+
+installdirs: $(top_srcdir)/support/mkdirs
+ -$(SHELL) $(top_srcdir)/support/mkdirs $(infodir) $(man3dir)
+
+install: installdirs info
+ ${INSTALL_DATA} readline.info $(infodir)/readline.info
+ ${INSTALL_DATA} history.info $(infodir)/history.info
+ if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
+ install-info --dir-file=$(infodir)/dir $(infodir)/readline.info ; \
+ install-info --dir-file=$(infodir)/dir $(infodir)/history.info ; \
+ else true; fi
+ -${INSTALL_DATA} $(srcdir)/readline.3 $(man3dir)/readline.3
+
+uninstall:
+ $(RM) $(infodir)/readline.info
+ $(RM) $(infodir)/history.info
+ $(RM) $(man3dir)/readline.3
diff --git a/doc/hist.texinfo b/doc/hist.texinfo
index cc80efa..aa04553 100644
--- a/doc/hist.texinfo
+++ b/doc/hist.texinfo
@@ -7,20 +7,20 @@
@setchapternewpage odd
@ignore
-last change: Wed Jul 20 09:57:17 EDT 1994
+last change: Thu Mar 21 16:07:29 EST 1996
@end ignore
-@set EDITION 2.0
-@set VERSION 2.0
-@set UPDATED 20 July 1994
-@set UPDATE-MONTH July 1994
+@set EDITION 2.1
+@set VERSION 2.1
+@set UPDATED 21 March 1996
+@set UPDATE-MONTH March 1996
@ifinfo
This document describes the GNU History library, a programming tool that
provides a consistent user interface for recalling lines of previously
typed input.
-Copyright (C) 1988, 1991 Free Software Foundation, Inc.
+Copyright (C) 1988, 1991, 1993, 1995, 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
@@ -45,7 +45,6 @@ by the Foundation.
@end ifinfo
@titlepage
-@sp 10
@title GNU History Library
@subtitle Edition @value{EDITION}, for @code{History Library} Version @value{VERSION}.
@subtitle @value{UPDATE-MONTH}
diff --git a/doc/history.dvi b/doc/history.dvi
index 60d7376..b73cd3c 100644
--- a/doc/history.dvi
+++ b/doc/history.dvi
Binary files differ
diff --git a/doc/history.html b/doc/history.html
new file mode 100644
index 0000000..276ed82
--- /dev/null
+++ b/doc/history.html
@@ -0,0 +1,1062 @@
+<HTML>
+<HEAD>
+<!-- This HTML file has been created by texi2html 1.51
+ from /usr/homes/chet/src/bash/readline-2.1/doc/hist.texinfo on 3 June 1997 -->
+
+<TITLE>GNU History Library</TITLE>
+</HEAD>
+<BODY>
+<H1>GNU History Library</H1>
+<H2>Edition 2.1, for <CODE>History Library</CODE> Version 2.1.</H2>
+<H2>March 1996</H2>
+<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
+<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
+<P>
+<P><HR><P>
+
+<P>
+This document describes the GNU History library, a programming tool that
+provides a consistent user interface for recalling lines of previously
+typed input.
+
+</P>
+<P>
+Published by the Free Software Foundation <BR>
+675 Massachusetts Avenue, <BR>
+Cambridge, MA 02139 USA
+
+</P>
+<P>
+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.
+
+</P>
+<P>
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+</P>
+<P>
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
+
+</P>
+<P>
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+
+</P>
+
+
+
+<H1><A NAME="SEC1" HREF="history_toc.html#TOC1">Using History Interactively</A></H1>
+
+<P>
+This chapter describes how to use the GNU History Library interactively,
+from a user's standpoint. It should be considered a user's guide. For
+information on using the GNU History Library in your own programs,
+see section <A HREF="history.html#SEC6">Programming with GNU History</A>.
+
+</P>
+
+
+
+<H2><A NAME="SEC2" HREF="history_toc.html#TOC2">Interactive History Expansion</A></H2>
+<P>
+<A NAME="IDX1"></A>
+
+</P>
+<P>
+The History library provides a history expansion feature that is similar
+to the history expansion provided by <CODE>csh</CODE>. This section
+describes the syntax used to manipulate the history information.
+
+</P>
+<P>
+History expansions introduce words from the history list into
+the input stream, making it easy to repeat commands, insert the
+arguments to a previous command into the current input line, or
+fix errors in previous commands quickly.
+
+</P>
+<P>
+History expansion takes place in two parts. The first is to determine
+which line from the previous history should be used during substitution.
+The second is to select portions of that line for inclusion into the
+current one. The line selected from the previous history is called the
+<STRONG>event</STRONG>, and the portions of that line that are acted upon are
+called <STRONG>words</STRONG>. Various <STRONG>modifiers</STRONG> are available to manipulate
+the selected words. The line is broken into words in the same fashion
+that Bash does, so that several English (or Unix) words
+surrounded by quotes are considered as one word.
+History expansions are introduced by the appearance of the
+history expansion character, which is <SAMP>`!'</SAMP> by default.
+
+</P>
+
+
+
+<H3><A NAME="SEC3" HREF="history_toc.html#TOC3">Event Designators</A></H3>
+<P>
+<A NAME="IDX2"></A>
+
+</P>
+<P>
+An event designator is a reference to a command line entry in the
+history list.
+<A NAME="IDX3"></A>
+
+</P>
+<DL COMPACT>
+
+<DT><CODE>!</CODE>
+<DD>
+Start a history substitution, except when followed by a space, tab,
+the end of the line, <KBD>=</KBD> or <KBD>(</KBD>.
+
+<DT><CODE>!<VAR>n</VAR></CODE>
+<DD>
+Refer to command line <VAR>n</VAR>.
+
+<DT><CODE>!-<VAR>n</VAR></CODE>
+<DD>
+Refer to the command <VAR>n</VAR> lines back.
+
+<DT><CODE>!!</CODE>
+<DD>
+Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>.
+
+<DT><CODE>!<VAR>string</VAR></CODE>
+<DD>
+Refer to the most recent command starting with <VAR>string</VAR>.
+
+<DT><CODE>!?<VAR>string</VAR>[?]</CODE>
+<DD>
+Refer to the most recent command containing <VAR>string</VAR>. The trailing
+<SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by
+a newline.
+
+<DT><CODE>^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE>
+<DD>
+Quick Substitution. Repeat the last command, replacing <VAR>string1</VAR>
+with <VAR>string2</VAR>. Equivalent to
+<CODE>!!:s/<VAR>string1</VAR>/<VAR>string2</VAR>/</CODE>.
+
+<DT><CODE>!#</CODE>
+<DD>
+The entire command line typed so far.
+
+</DL>
+
+
+
+<H3><A NAME="SEC4" HREF="history_toc.html#TOC4">Word Designators</A></H3>
+
+<P>
+Word designators are used to select desired words from the event.
+A <SAMP>`:'</SAMP> separates the event specification from the word designator. It
+can be omitted if the word designator begins with a <SAMP>`^'</SAMP>, <SAMP>`$'</SAMP>,
+<SAMP>`*'</SAMP>, <SAMP>`-'</SAMP>, or <SAMP>`%'</SAMP>. Words are numbered from the beginning
+of the line, with the first word being denoted by 0 (zero). Words are
+inserted into the current line separated by single spaces.
+
+</P>
+<DL COMPACT>
+
+<DT><CODE>0 (zero)</CODE>
+<DD>
+The <CODE>0</CODE>th word. For many applications, this is the command word.
+
+<DT><CODE><VAR>n</VAR></CODE>
+<DD>
+The <VAR>n</VAR>th word.
+
+<DT><CODE>^</CODE>
+<DD>
+The first argument; that is, word 1.
+
+<DT><CODE>$</CODE>
+<DD>
+The last argument.
+
+<DT><CODE>%</CODE>
+<DD>
+The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search.
+
+<DT><CODE><VAR>x</VAR>-<VAR>y</VAR></CODE>
+<DD>
+A range of words; <SAMP>`-<VAR>y</VAR>'</SAMP> abbreviates <SAMP>`0-<VAR>y</VAR>'</SAMP>.
+
+<DT><CODE>*</CODE>
+<DD>
+All of the words, except the <CODE>0</CODE>th. This is a synonym for <SAMP>`1-$'</SAMP>.
+It is not an error to use <SAMP>`*'</SAMP> if there is just one word in the event;
+the empty string is returned in that case.
+
+<DT><CODE><VAR>x</VAR>*</CODE>
+<DD>
+Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP>
+
+<DT><CODE><VAR>x</VAR>-</CODE>
+<DD>
+Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word.
+
+</DL>
+
+<P>
+If a word designator is supplied without an event specification, the
+previous command is used as the event.
+
+</P>
+
+
+<H3><A NAME="SEC5" HREF="history_toc.html#TOC5">Modifiers</A></H3>
+
+<P>
+After the optional word designator, you can add a sequence of one or more
+of the following modifiers, each preceded by a <SAMP>`:'</SAMP>.
+
+</P>
+<DL COMPACT>
+
+<DT><CODE>h</CODE>
+<DD>
+Remove a trailing pathname component, leaving only the head.
+
+<DT><CODE>t</CODE>
+<DD>
+Remove all leading pathname components, leaving the tail.
+
+<DT><CODE>r</CODE>
+<DD>
+Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving
+the basename.
+
+<DT><CODE>e</CODE>
+<DD>
+Remove all but the trailing suffix.
+
+<DT><CODE>p</CODE>
+<DD>
+Print the new command but do not execute it.
+
+<DT><CODE>s/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>
+<DD>
+Substitute <VAR>new</VAR> for the first occurrence of <VAR>old</VAR> in the
+event line. Any delimiter may be used in place of <SAMP>`/'</SAMP>.
+The delimiter may be quoted in <VAR>old</VAR> and <VAR>new</VAR>
+with a single backslash. If <SAMP>`&#38;'</SAMP> appears in <VAR>new</VAR>,
+it is replaced by <VAR>old</VAR>. A single backslash will quote
+the <SAMP>`&#38;'</SAMP>. The final delimiter is optional if it is the last
+character on the input line.
+
+<DT><CODE>&#38;</CODE>
+<DD>
+Repeat the previous substitution.
+
+<DT><CODE>g</CODE>
+<DD>
+Cause changes to be applied over the entire event line. Used in
+conjunction with <SAMP>`s'</SAMP>, as in <CODE>gs/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>,
+or with <SAMP>`&#38;'</SAMP>.
+
+</DL>
+
+
+
+<H1><A NAME="SEC6" HREF="history_toc.html#TOC6">Programming with GNU History</A></H1>
+
+<P>
+This chapter describes how to interface programs that you write
+with the GNU History Library.
+It should be considered a technical guide.
+For information on the interactive use of GNU History, see section <A HREF="history.html#SEC1">Using History Interactively</A>.
+
+</P>
+
+
+
+<H2><A NAME="SEC7" HREF="history_toc.html#TOC7">Introduction to History</A></H2>
+
+<P>
+Many programs read input from the user a line at a time. The GNU History
+library is able to keep track of those lines, associate arbitrary data with
+each line, and utilize information from previous lines in composing new
+ones.
+
+</P>
+<P>
+The programmer using the History library has available functions
+for remembering lines on a history list, associating arbitrary data
+with a line, removing lines from the list, searching through the list
+for a line containing an arbitrary text string, and referencing any line
+in the list directly. In addition, a history <STRONG>expansion</STRONG> function
+is available which provides for a consistent user interface across
+different programs.
+
+</P>
+<P>
+The user using programs written with the History library has the
+benefit of a consistent user interface with a set of well-known
+commands for manipulating the text of previous lines and using that text
+in new commands. The basic history manipulation commands are similar to
+the history substitution provided by <CODE>csh</CODE>.
+
+</P>
+<P>
+If the programmer desires, he can use the Readline library, which
+includes some history manipulation by default, and has the added
+advantage of command line editing.
+
+</P>
+
+
+<H2><A NAME="SEC8" HREF="history_toc.html#TOC8">History Storage</A></H2>
+
+<P>
+The history list is an array of history entries. A history entry is
+declared as follows:
+
+</P>
+
+<PRE>
+typedef struct _hist_entry {
+ char *line;
+ char *data;
+} HIST_ENTRY;
+</PRE>
+
+<P>
+The history list itself might therefore be declared as
+
+</P>
+
+<PRE>
+HIST_ENTRY **the_history_list;
+</PRE>
+
+<P>
+The state of the History library is encapsulated into a single structure:
+
+</P>
+
+<PRE>
+/* A structure used to pass the current state of the history stuff around. */
+typedef struct _hist_state {
+ HIST_ENTRY **entries; /* Pointer to the entries themselves. */
+ int offset; /* The location pointer within this array. */
+ int length; /* Number of elements within this array. */
+ int size; /* Number of slots allocated to this array. */
+ int flags;
+} HISTORY_STATE;
+</PRE>
+
+<P>
+If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been
+stifled.
+
+</P>
+
+
+<H2><A NAME="SEC9" HREF="history_toc.html#TOC9">History Functions</A></H2>
+
+<P>
+This section describes the calling sequence for the various functions
+present in GNU History.
+
+</P>
+
+
+
+<H3><A NAME="SEC10" HREF="history_toc.html#TOC10">Initializing History and State Management</A></H3>
+
+<P>
+This section describes functions used to initialize and manage
+the state of the History library when you want to use the history
+functions in your program.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>using_history</B> <I>()</I>
+<DD><A NAME="IDX4"></A>
+Begin a session in which the history functions might be used. This
+initializes the interactive variables.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>()</I>
+<DD><A NAME="IDX5"></A>
+Return a structure describing the current state of the input history.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I>
+<DD><A NAME="IDX6"></A>
+Set the state of the history list according to <VAR>state</VAR>.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC11" HREF="history_toc.html#TOC11">History List Management</A></H3>
+
+<P>
+These functions manage individual entries on the history list, or set
+parameters managing the list itself.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>add_history</B> <I>(char *string)</I>
+<DD><A NAME="IDX7"></A>
+Place <VAR>string</VAR> at the end of the history list. The associated data
+field (if any) is set to <CODE>NULL</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I>
+<DD><A NAME="IDX8"></A>
+Remove history entry at offset <VAR>which</VAR> from the history. The
+removed element is returned so you can free the line, data,
+and containing structure.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, char *line, char *data)</I>
+<DD><A NAME="IDX9"></A>
+Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>.
+This returns the old entry so you can dispose of the data. In the case
+of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>clear_history</B> <I>()</I>
+<DD><A NAME="IDX10"></A>
+Clear the history list by deleting all the entries.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I>
+<DD><A NAME="IDX11"></A>
+Stifle the history list, remembering only the last <VAR>max</VAR> entries.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>unstifle_history</B> <I>()</I>
+<DD><A NAME="IDX12"></A>
+Stop stifling the history. This returns the previous amount the
+history was stifled. The value is positive if the history was
+stifled, negative if it wasn't.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>history_is_stifled</B> <I>()</I>
+<DD><A NAME="IDX13"></A>
+Returns non-zero if the history is stifled, zero if it is not.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC12" HREF="history_toc.html#TOC12">Information About the History List</A></H3>
+
+<P>
+These functions return information about the entire history list or
+individual list entries.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>()</I>
+<DD><A NAME="IDX14"></A>
+Return a <CODE>NULL</CODE> terminated array of <CODE>HIST_ENTRY</CODE> which is the
+current input history. Element 0 of this list is the beginning of time.
+If there is no history, return <CODE>NULL</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>where_history</B> <I>()</I>
+<DD><A NAME="IDX15"></A>
+Returns the offset of the current history element.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>()</I>
+<DD><A NAME="IDX16"></A>
+Return the history entry at the current position, as determined by
+<CODE>where_history ()</CODE>. If there is no entry there, return a <CODE>NULL</CODE>
+pointer.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I>
+<DD><A NAME="IDX17"></A>
+Return the history entry at position <VAR>offset</VAR>, starting from
+<CODE>history_base</CODE>. If there is no entry there, or if <VAR>offset</VAR>
+is greater than the history length, return a <CODE>NULL</CODE> pointer.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>history_total_bytes</B> <I>()</I>
+<DD><A NAME="IDX18"></A>
+Return the number of bytes that the primary history entries are using.
+This function returns the sum of the lengths of all the lines in the
+history.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC13" HREF="history_toc.html#TOC13">Moving Around the History List</A></H3>
+
+<P>
+These functions allow the current index into the history list to be
+set or changed.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I>
+<DD><A NAME="IDX19"></A>
+Set the position in the history list to <VAR>pos</VAR>, an absolute index
+into the list.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>()</I>
+<DD><A NAME="IDX20"></A>
+Back up the current history offset to the previous history entry, and
+return a pointer to that entry. If there is no previous entry, return
+a <CODE>NULL</CODE> pointer.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>()</I>
+<DD><A NAME="IDX21"></A>
+Move the current history offset forward to the next history entry, and
+return the a pointer to that entry. If there is no next entry, return
+a <CODE>NULL</CODE> pointer.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC14" HREF="history_toc.html#TOC14">Searching the History List</A></H3>
+<P>
+<A NAME="IDX22"></A>
+
+</P>
+<P>
+These functions allow searching of the history list for entries containing
+a specific string. Searching may be performed both forward and backward
+from the current history position. The search may be <STRONG>anchored</STRONG>,
+meaning that the string must match at the beginning of the history entry.
+<A NAME="IDX23"></A>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>history_search</B> <I>(char *string, int direction)</I>
+<DD><A NAME="IDX24"></A>
+Search the history for <VAR>string</VAR>, starting at the current history
+offset. If <VAR>direction</VAR> &#60; 0, then the search is through previous entries,
+else through subsequent. If <VAR>string</VAR> is found, then
+the current history index is set to that history entry, and the value
+returned is the offset in the line of the entry where
+<VAR>string</VAR> was found. Otherwise, nothing is changed, and a -1 is
+returned.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>history_search_prefix</B> <I>(char *string, int direction)</I>
+<DD><A NAME="IDX25"></A>
+Search the history for <VAR>string</VAR>, starting at the current history
+offset. The search is anchored: matching lines must begin with
+<VAR>string</VAR>. If <VAR>direction</VAR> &#60; 0, then the search is through previous
+entries, else through subsequent. If <VAR>string</VAR> is found, then the
+current history index is set to that entry, and the return value is 0.
+Otherwise, nothing is changed, and a -1 is returned.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>history_search_pos</B> <I>(char *string, int direction, int pos)</I>
+<DD><A NAME="IDX26"></A>
+Search for <VAR>string</VAR> in the history list, starting at <VAR>pos</VAR>, an
+absolute index into the list. If <VAR>direction</VAR> is negative, the search
+proceeds backward from <VAR>pos</VAR>, otherwise forward. Returns the absolute
+index of the history element where <VAR>string</VAR> was found, or -1 otherwise.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC15" HREF="history_toc.html#TOC15">Managing the History File</A></H3>
+
+<P>
+The History library can read the history from and write it to a file.
+This section documents the functions for managing a history file.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>read_history</B> <I>(char *filename)</I>
+<DD><A NAME="IDX27"></A>
+Add the contents of <VAR>filename</VAR> to the history list, a line at a
+time. If <VAR>filename</VAR> is <CODE>NULL</CODE>, then read from
+<TT>`~/.history'</TT>. Returns 0 if successful, or errno if not.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>read_history_range</B> <I>(char *filename, int from, int to)</I>
+<DD><A NAME="IDX28"></A>
+Read a range of lines from <VAR>filename</VAR>, adding them to the history list.
+Start reading at line <VAR>from</VAR> and end at <VAR>to</VAR>. If
+<VAR>from</VAR> is zero, start at the beginning. If <VAR>to</VAR> is less than
+<VAR>from</VAR>, then read until the end of the file. If <VAR>filename</VAR> is
+<CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>. Returns 0 if successful,
+or <CODE>errno</CODE> if not.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>write_history</B> <I>(char *filename)</I>
+<DD><A NAME="IDX29"></A>
+Write the current history to <VAR>filename</VAR>, overwriting <VAR>filename</VAR>
+if necessary. If <VAR>filename</VAR> is
+<CODE>NULL</CODE>, then write the history list to <TT>`~/.history'</TT>. Values
+returned are as in <CODE>read_history ()</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, char *filename)</I>
+<DD><A NAME="IDX30"></A>
+Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>history_truncate_file</B> <I>(char *filename, int nlines)</I>
+<DD><A NAME="IDX31"></A>
+Truncate the history file <VAR>filename</VAR>, leaving only the last
+<VAR>nlines</VAR> lines.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC16" HREF="history_toc.html#TOC16">History Expansion</A></H3>
+
+<P>
+These functions implement <CODE>csh</CODE>-like history expansion.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I>
+<DD><A NAME="IDX32"></A>
+Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer
+to a string (see section <A HREF="history.html#SEC2">Interactive History Expansion</A>). Returns:
+<DL COMPACT>
+
+<DT><CODE>0</CODE>
+<DD>
+If no expansions took place (or, if the only change in
+the text was the de-slashifying of the history expansion
+character);
+<DT><CODE>1</CODE>
+<DD>
+if expansions did take place;
+<DT><CODE>-1</CODE>
+<DD>
+if there was an error in expansion;
+<DT><CODE>2</CODE>
+<DD>
+if the returned line should only be displayed, but not executed,
+as with the <CODE>:p</CODE> modifier (see section <A HREF="history.html#SEC5">Modifiers</A>).
+</DL>
+
+<P>
+If an error ocurred in expansion, then <VAR>output</VAR> contains a descriptive
+error message.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, char *string)</I>
+<DD><A NAME="IDX33"></A>
+Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR>
+arguments present in <VAR>string</VAR>. Arguments are broken up as in Bash.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> char * <B>get_history_event</B> <I>(char *string, int *cindex, int qchar)</I>
+<DD><A NAME="IDX34"></A>
+Returns the text of the history event beginning at <VAR>string</VAR> +
+<VAR>*cindex</VAR>. <VAR>*cindex</VAR> is modified to point to after the event
+specifier. At function entry, <VAR>cindex</VAR> points to the index into
+<VAR>string</VAR> where the history event specification begins. <VAR>qchar</VAR>
+is a character that is allowed to end the event specification in addition
+to the "normal" terminating characters.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(char *string)</I>
+<DD><A NAME="IDX35"></A>
+Return an array of tokens parsed out of <VAR>string</VAR>, much as the
+shell might. The tokens are split on white space and on the
+characters <CODE>()&#60;&#62;;&#38;|$</CODE>, and shell quoting conventions are
+obeyed.
+</DL>
+
+</P>
+
+
+<H2><A NAME="SEC17" HREF="history_toc.html#TOC17">History Variables</A></H2>
+
+<P>
+This section describes the externally visible variables exported by
+the GNU History Library.
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>history_base</B>
+<DD><A NAME="IDX36"></A>
+The logical offset of the first entry in the history list.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>history_length</B>
+<DD><A NAME="IDX37"></A>
+The number of entries currently stored in the history list.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>max_input_history</B>
+<DD><A NAME="IDX38"></A>
+The maximum number of history entries. This must be changed using
+<CODE>stifle_history ()</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char <B>history_expansion_char</B>
+<DD><A NAME="IDX39"></A>
+The character that starts a history event. The default is <SAMP>`!'</SAMP>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char <B>history_subst_char</B>
+<DD><A NAME="IDX40"></A>
+The character that invokes word substitution if found at the start of
+a line. The default is <SAMP>`^'</SAMP>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char <B>history_comment_char</B>
+<DD><A NAME="IDX41"></A>
+During tokenization, if this character is seen as the first character
+of a word, then it and all subsequent characters up to a newline are
+ignored, suppressing history expansion for the remainder of the line.
+This is disabled by default.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>history_no_expand_chars</B>
+<DD><A NAME="IDX42"></A>
+The list of characters which inhibit history expansion if found immediately
+following <VAR>history_expansion_char</VAR>. The default is whitespace and
+<SAMP>`='</SAMP>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B>
+<DD><A NAME="IDX43"></A>
+The list of additional characters which can delimit a history search
+string, in addition to whitespace, <SAMP>`:'</SAMP> and <SAMP>`?'</SAMP> in the case of
+a substring search. The default is empty.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B>
+<DD><A NAME="IDX44"></A>
+If non-zero, single-quoted words are not scanned for the history expansion
+character. The default value is 0.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> Function * <B>history_inhibit_expansion_function</B>
+<DD><A NAME="IDX45"></A>
+This should be set to the address of a function that takes two arguments:
+a <CODE>char *</CODE> (<VAR>string</VAR>) and an integer index into that string (<VAR>i</VAR>).
+It should return a non-zero value if the history expansion starting at
+<VAR>string[i]</VAR> should not be performed; zero if the expansion should
+be done.
+It is intended for use by applications like Bash that use the history
+expansion character for additional purposes.
+By default, this variable is set to NULL.
+</DL>
+
+</P>
+
+
+<H2><A NAME="SEC18" HREF="history_toc.html#TOC18">History Programming Example</A></H2>
+
+<P>
+The following program demonstrates simple use of the GNU History Library.
+
+</P>
+
+<PRE>
+main ()
+{
+ char line[1024], *t;
+ int len, done = 0;
+
+ line[0] = 0;
+
+ using_history ();
+ while (!done)
+ {
+ printf ("history$ ");
+ fflush (stdout);
+ t = fgets (line, sizeof (line) - 1, stdin);
+ if (t &#38;&#38; *t)
+ {
+ len = strlen (t);
+ if (t[len - 1] == '\n')
+ t[len - 1] = '\0';
+ }
+
+ if (!t)
+ strcpy (line, "quit");
+
+ if (line[0])
+ {
+ char *expansion;
+ int result;
+
+ result = history_expand (line, &#38;expansion);
+ if (result)
+ fprintf (stderr, "%s\n", expansion);
+
+ if (result &#60; 0 || result == 2)
+ {
+ free (expansion);
+ continue;
+ }
+
+ add_history (expansion);
+ strncpy (line, expansion, sizeof (line) - 1);
+ free (expansion);
+ }
+
+ if (strcmp (line, "quit") == 0)
+ done = 1;
+ else if (strcmp (line, "save") == 0)
+ write_history ("history_file");
+ else if (strcmp (line, "read") == 0)
+ read_history ("history_file");
+ else if (strcmp (line, "list") == 0)
+ {
+ register HIST_ENTRY **the_list;
+ register int i;
+
+ the_list = history_list ();
+ if (the_list)
+ for (i = 0; the_list[i]; i++)
+ printf ("%d: %s\n", i + history_base, the_list[i]-&#62;line);
+ }
+ else if (strncmp (line, "delete", 6) == 0)
+ {
+ int which;
+ if ((sscanf (line + 6, "%d", &#38;which)) == 1)
+ {
+ HIST_ENTRY *entry = remove_history (which);
+ if (!entry)
+ fprintf (stderr, "No such entry %d\n", which);
+ else
+ {
+ free (entry-&#62;line);
+ free (entry);
+ }
+ }
+ else
+ {
+ fprintf (stderr, "non-numeric arg given to `delete'\n");
+ }
+ }
+ }
+}
+</PRE>
+
+
+
+<H1><A NAME="SEC19" HREF="history_toc.html#TOC19">Concept Index</A></H1>
+<P>
+<H2>a</H2>
+<DIR>
+<LI><A HREF="history.html#IDX23">anchored search</A>
+</DIR>
+<H2>e</H2>
+<DIR>
+<LI><A HREF="history.html#IDX2">event designators</A>
+</DIR>
+<H2>h</H2>
+<DIR>
+<LI><A HREF="history.html#IDX3">history events</A>
+<LI><A HREF="history.html#IDX1">history expansion</A>
+<LI><A HREF="history.html#IDX22">History Searching</A>
+</DIR>
+
+</P>
+
+
+<H1><A NAME="SEC20" HREF="history_toc.html#TOC20">Function and Variable Index</A></H1>
+<P>
+<H2>a</H2>
+<DIR>
+<LI><A HREF="history.html#IDX7">add_history</A>
+<LI><A HREF="history.html#IDX30">append_history</A>
+</DIR>
+<H2>c</H2>
+<DIR>
+<LI><A HREF="history.html#IDX10">clear_history</A>
+<LI><A HREF="history.html#IDX16">current_history</A>
+</DIR>
+<H2>g</H2>
+<DIR>
+<LI><A HREF="history.html#IDX34">get_history_event</A>
+</DIR>
+<H2>h</H2>
+<DIR>
+<LI><A HREF="history.html#IDX33">history_arg_extract</A>
+<LI><A HREF="history.html#IDX36">history_base</A>
+<LI><A HREF="history.html#IDX41">history_comment_char</A>
+<LI><A HREF="history.html#IDX32">history_expand</A>
+<LI><A HREF="history.html#IDX39">history_expansion_char</A>
+<LI><A HREF="history.html#IDX17">history_get</A>
+<LI><A HREF="history.html#IDX5">history_get_history_state</A>
+<LI><A HREF="history.html#IDX45">history_inhibit_expansion_function</A>
+<LI><A HREF="history.html#IDX13">history_is_stifled</A>
+<LI><A HREF="history.html#IDX37">history_length</A>
+<LI><A HREF="history.html#IDX14">history_list</A>
+<LI><A HREF="history.html#IDX42">history_no_expand_chars</A>
+<LI><A HREF="history.html#IDX44">history_quotes_inhibit_expansion</A>
+<LI><A HREF="history.html#IDX24">history_search</A>
+<LI><A HREF="history.html#IDX43">history_search_delimiter_chars</A>
+<LI><A HREF="history.html#IDX26">history_search_pos</A>
+<LI><A HREF="history.html#IDX25">history_search_prefix</A>
+<LI><A HREF="history.html#IDX6">history_set_history_state</A>
+<LI><A HREF="history.html#IDX19">history_set_pos</A>
+<LI><A HREF="history.html#IDX40">history_subst_char</A>
+<LI><A HREF="history.html#IDX35">history_tokenize</A>
+<LI><A HREF="history.html#IDX18">history_total_bytes</A>
+<LI><A HREF="history.html#IDX31">history_truncate_file</A>
+</DIR>
+<H2>m</H2>
+<DIR>
+<LI><A HREF="history.html#IDX38">max_input_history</A>
+</DIR>
+<H2>n</H2>
+<DIR>
+<LI><A HREF="history.html#IDX21">next_history</A>
+</DIR>
+<H2>p</H2>
+<DIR>
+<LI><A HREF="history.html#IDX20">previous_history</A>
+</DIR>
+<H2>r</H2>
+<DIR>
+<LI><A HREF="history.html#IDX27">read_history</A>
+<LI><A HREF="history.html#IDX28">read_history_range</A>
+<LI><A HREF="history.html#IDX8">remove_history</A>
+<LI><A HREF="history.html#IDX9">replace_history_entry</A>
+</DIR>
+<H2>s</H2>
+<DIR>
+<LI><A HREF="history.html#IDX11">stifle_history</A>
+</DIR>
+<H2>u</H2>
+<DIR>
+<LI><A HREF="history.html#IDX12">unstifle_history</A>
+<LI><A HREF="history.html#IDX4">using_history</A>
+</DIR>
+<H2>w</H2>
+<DIR>
+<LI><A HREF="history.html#IDX15">where_history</A>
+<LI><A HREF="history.html#IDX29">write_history</A>
+</DIR>
+
+</P>
+<P><HR><P>
+This document was generated on 3 June 1997 using the
+<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
+translator version 1.51.</P>
+</BODY>
+</HTML>
diff --git a/doc/history.info b/doc/history.info
index 6df0bd9..9266a5d 100644
--- a/doc/history.info
+++ b/doc/history.info
@@ -1,11 +1,12 @@
This is Info file history.info, produced by Makeinfo-1.55 from the
-input file hist.texinfo.
+input file /usr/homes/chet/src/bash/readline-2.1/doc/hist.texinfo.
This document describes the GNU History library, a programming tool
that provides a consistent user interface for recalling lines of
previously typed input.
- Copyright (C) 1988, 1991 Free Software Foundation, Inc.
+ Copyright (C) 1988, 1991, 1993, 1995, 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 pare
@@ -57,21 +58,29 @@ own programs, *note Programming with GNU History::..

File: history.info, Node: History Interaction, Up: Using History Interactively
-History Interaction
-===================
+Interactive History Expansion
+=============================
The History library provides a history expansion feature that is
-similar to the history expansion provided by `csh'. The following text
+similar to the history expansion provided by `csh'. This section
describes the syntax used to manipulate the history information.
+ History expansions introduce words from the history list into the
+input stream, making it easy to repeat commands, insert the arguments
+to a previous command into the current input line, or fix errors in
+previous commands quickly.
+
History expansion takes place in two parts. The first is to
determine which line from the previous history should be used during
substitution. The second is to select portions of that line for
inclusion into the current one. The line selected from the previous
history is called the "event", and the portions of that line that are
-acted upon are called "words". The line is broken into words in the
+acted upon are called "words". Various "modifiers" are available to
+manipulate the selected words. The line is broken into words in the
same fashion that Bash does, so that several English (or Unix) words
-surrounded by quotes are considered as one word.
+surrounded by quotes are considered as one word. History expansions
+are introduced by the appearance of the history expansion character,
+which is `!' by default.
* Menu:
@@ -92,67 +101,74 @@ history list.
Start a history substitution, except when followed by a space, tab,
the end of the line, = or (.
-`!!'
- Refer to the previous command. This is a synonym for `!-1'.
-
-`!n'
+`!N'
Refer to command line N.
-`!-n'
+`!-N'
Refer to the command N lines back.
-`!string'
+`!!'
+ Refer to the previous command. This is a synonym for `!-1'.
+
+`!STRING'
Refer to the most recent command starting with STRING.
-`!?string'[`?']
- Refer to the most recent command containing STRING.
+`!?STRING[?]'
+ Refer to the most recent command containing STRING. The trailing
+ `?' may be omitted if the STRING is followed immediately by a
+ newline.
+
+`^STRING1^STRING2^'
+ Quick Substitution. Repeat the last command, replacing STRING1
+ with STRING2. Equivalent to `!!:s/STRING1/STRING2/'.
`!#'
The entire command line typed so far.
-`^string1^string2^'
- Quick Substitution. Repeat the last command, replacing STRING1
- with STRING2. Equivalent to `!!:s/string1/string2/'.
-

File: history.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction
Word Designators
----------------
- A : separates the event specification from the word designator. It
-can be omitted if the word designator begins with a ^, $, * or %.
-Words are numbered from the beginning of the line, with the first word
-being denoted by a 0 (zero).
+ Word designators are used to select desired words from the event. A
+`:' separates the event specification from the word designator. It can
+be omitted if the word designator begins with a `^', `$', `*', `-', or
+`%'. Words are numbered from the beginning of the line, with the first
+word being denoted by 0 (zero). Words are inserted into the current
+line separated by single spaces.
`0 (zero)'
The `0'th word. For many applications, this is the command word.
-`n'
+`N'
The Nth word.
`^'
- The first argument; that is, word 1.
+ The first argument; that is, word 1.
`$'
The last argument.
`%'
- The word matched by the most recent `?string?' search.
+ The word matched by the most recent `?STRING?' search.
-`x-y'
+`X-Y'
A range of words; `-Y' abbreviates `0-Y'.
`*'
All of the words, except the `0'th. This is a synonym for `1-$'.
- It is not an error to use * if there is just one word in the event;
- the empty string is returned in that case.
+ It is not an error to use `*' if there is just one word in the
+ event; the empty string is returned in that case.
-`x*'
- Abbreviates `x-$'
+`X*'
+ Abbreviates `X-$'
-`x-'
- Abbreviates `x-$' like `x*', but omits the last word.
+`X-'
+ Abbreviates `X-$' like `X*', but omits the last word.
+
+ If a word designator is supplied without an event specification, the
+previous command is used as the event.

File: history.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction
@@ -161,38 +177,38 @@ Modifiers
---------
After the optional word designator, you can add a sequence of one or
-more of the following modifiers, each preceded by a :.
+more of the following modifiers, each preceded by a `:'.
`h'
Remove a trailing pathname component, leaving only the head.
+`t'
+ Remove all leading pathname components, leaving the tail.
+
`r'
- Remove a trailing suffix of the form `.'SUFFIX, leaving the
+ Remove a trailing suffix of the form `.SUFFIX', leaving the
basename.
`e'
Remove all but the trailing suffix.
-`t'
- Remove all leading pathname components, leaving the tail.
-
`p'
Print the new command but do not execute it.
-`s/old/new/'
+`s/OLD/NEW/'
Substitute NEW for the first occurrence of OLD in the event line.
- Any delimiter may be used in place of /. The delimiter may be
- quoted in OLD and NEW with a single backslash. If & appears in
- NEW, it is replaced by OLD. A single backslash will quote the &.
- The final delimiter is optional if it is the last character on the
- input line.
+ Any delimiter may be used in place of `/'. The delimiter may be
+ quoted in OLD and NEW with a single backslash. If `&' appears in
+ NEW, it is replaced by OLD. A single backslash will quote the
+ `&'. The final delimiter is optional if it is the last character
+ on the input line.
`&'
Repeat the previous substitution.
`g'
Cause changes to be applied over the entire event line. Used in
- conjunction with `s', as in `gs/old/new/', or with `&'.
+ conjunction with `s', as in `gs/OLD/NEW/', or with `&'.

File: history.info, Node: Programming with GNU History, Next: Concept Index, Prev: Using History Interactively, Up: Top
@@ -347,6 +363,9 @@ parameters managing the list itself.
returns the old entry so you can dispose of the data. In the case
of an invalid WHICH, a `NULL' pointer is returned.
+ - Function: void clear_history ()
+ Clear the history list by deleting all the entries.
+
- Function: void stifle_history (int max)
Stifle the history list, remembering only the last MAX entries.
@@ -567,6 +586,24 @@ the GNU History Library.
immediately following HISTORY_EXPANSION_CHAR. The default is
whitespace and `='.
+ - Variable: char * history_search_delimiter_chars
+ The list of additional characters which can delimit a history
+ search string, in addition to whitespace, `:' and `?' in the case
+ of a substring search. The default is empty.
+
+ - Variable: int history_quotes_inhibit_expansion
+ If non-zero, single-quoted words are not scanned for the history
+ expansion character. The default value is 0.
+
+ - Variable: Function * history_inhibit_expansion_function
+ This should be set to the address of a function that takes two
+ arguments: a `char *' (STRING) and an integer index into that
+ string (I). It should return a non-zero value if the history
+ expansion starting at STRING[I] should not be performed; zero if
+ the expansion should be done. It is intended for use by
+ applications like Bash that use the history expansion character
+ for additional purposes. By default, this variable is set to NULL.
+

File: history.info, Node: History Programming Example, Prev: History Variables, Up: Programming with GNU History
@@ -667,8 +704,8 @@ Concept Index
* anchored search: Searching the History List.
* event designators: Event Designators.
-* expansion: History Interaction.
* history events: Event Designators.
+* history expansion: History Interaction.
* History Searching: Searching the History List.

@@ -681,6 +718,7 @@ Function and Variable Index
* add_history: History List Management.
* append_history: Managing the History File.
+* clear_history: History List Management.
* current_history: Information About the History List.
* get_history_event: History Expansion.
* history_arg_extract: History Expansion.
@@ -690,11 +728,14 @@ Function and Variable Index
* history_expansion_char: History Variables.
* history_get: Information About the History List.
* history_get_history_state: Initializing History and State Management.
+* history_inhibit_expansion_function: History Variables.
* history_is_stifled: History List Management.
* history_length: History Variables.
* history_list: Information About the History List.
* history_no_expand_chars: History Variables.
+* history_quotes_inhibit_expansion: History Variables.
* history_search: Searching the History List.
+* history_search_delimiter_chars: History Variables.
* history_search_pos: Searching the History List.
* history_search_prefix: Searching the History List.
* history_set_history_state: Initializing History and State Management.
@@ -719,26 +760,26 @@ Function and Variable Index

Tag Table:
-Node: Top975
-Node: Using History Interactively1569
-Node: History Interaction2077
-Node: Event Designators3122
-Node: Word Designators3952
-Node: Modifiers4936
-Node: Programming with GNU History6065
-Node: Introduction to History6791
-Node: History Storage8112
-Node: History Functions9205
-Node: Initializing History and State Management10176
-Node: History List Management10968
-Node: Information About the History List12396
-Node: Moving Around the History List13702
-Node: Searching the History List14587
-Node: Managing the History File16419
-Node: History Expansion17925
-Node: History Variables19769
-Node: History Programming Example21138
-Node: Concept Index23742
-Node: Function and Variable Index24223
+Node: Top1035
+Node: Using History Interactively1629
+Node: History Interaction2137
+Node: Event Designators3614
+Node: Word Designators4537
+Node: Modifiers5786
+Node: Programming with GNU History6924
+Node: Introduction to History7650
+Node: History Storage8971
+Node: History Functions10064
+Node: Initializing History and State Management11035
+Node: History List Management11827
+Node: Information About the History List13348
+Node: Moving Around the History List14654
+Node: Searching the History List15539
+Node: Managing the History File17371
+Node: History Expansion18877
+Node: History Variables20721
+Node: History Programming Example23039
+Node: Concept Index25643
+Node: Function and Variable Index26124

End Tag Table
diff --git a/doc/history.ps b/doc/history.ps
index 839598f..1866d92 100644
--- a/doc/history.ps
+++ b/doc/history.ps
@@ -1,2037 +1,1558 @@
-%!PS-Adobe-2.0
-%%Creator: dvipsk 5.490s Copyright 1986, 1992 Radical Eye Software
-%%Title: history.dvi
-%%Pages: 22 1
-%%BoundingBox: 0 0 612 792
-%%EndComments
+%!PS (but not EPSF; comments have been disabled)
%DVIPSCommandLine: dvips -D 300 -o history.ps history.dvi
-%%BeginProcSet: tex.pro
-%!
-/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
-B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
-concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
--72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
-currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
-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
-/IE 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 IE N end dup{/foo setfont}2 array copy cvx N load 0 nn
-put /ctr 0 N[}B /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 dup definefont setfont}B /ch-width{ch-data
-dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128
-ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127
-sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup 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 /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get
-S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height
-sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0
--1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup
-type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1
-ne{dup dup length 1 sub dup 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 dup 1 get dup mul exch 0 get dup mul add
-.99 lt{/FV}{/RV}ifelse load def pop}N /eop{SI restore showpage userdict
-/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}
-if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE
-S 1 string dup 0 3 index put cvn put}for 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 /rulex 0 N /ruley
-0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop
-product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval
-(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
-rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
-ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /FV{gsave
-transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
-rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup
-/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 40258431 52099146 1000 300 300 @start /Fa 1 59
-df<70F8F8F87005057C840D>58 D E /Fb 1 59 df<78FCFCFCFC7806067B8510>58
-D E /Fc 24 123 df<1FC0007FF000707800201800001C00001C0007FC001FFC003C1C00701C00
-E01C00E01C00E01C00707C003FFF800F8F8011107E8F14>97 D<FC0000FC00001C00001C00001C
-00001C00001C00001CF8001DFE001F07001E03001C03801C01C01C01C01C01C01C01C01C01C01C
-01C01C03801E03001F0E001DFC000CF8001217809614>I<03F80FFC1C1C380870006000E000E0
-00E000E00060007000380E1C1E0FFC03F00F107E8F14>I<007E00007E00000E00000E00000E00
-000E00000E0007CE000FFE001C3E00301E00700E00E00E00E00E00E00E00E00E00E00E00E00E00
-700E00301E00383E001FEFC007CFC012177F9614>I<07E00FF01C38301C700CE00EE00EFFFEFF
-FEE00060007000380E1C1E0FFC03F00F107E8F14>I<007C00FE01CE03840380038003807FFEFF
-FE0380038003800380038003800380038003800380038003807FFC7FFC0F177F9614>I<07CF00
-1FFF80383B80301800701C00701C00701C003018003838003FF00037C0007000007000003FF800
-1FFC003FFE00700F00E00380E00380E00380E003807007003C1E001FFC0007F00011197F8F14>
-I<FC0000FC00001C00001C00001C00001C00001C00001C78001DFE001F86001E07001C07001C07
-001C07001C07001C07001C07001C07001C07001C07001C0700FF8FE0FF8FE01317809614>I<03
-0007800780030000000000000000007F807F800380038003800380038003800380038003800380
-03800380FFFCFFFC0E187D9714>I<FC0000FC00001C00001C00001C00001C00001C00001DFF80
-1DFF801C3C001C78001CF0001DE0001FC0001FC0001FE0001EF0001C70001C38001C38001C1C00
-FE3F80FE3F8011177F9614>107 D<FF80FF800380038003800380038003800380038003800380
-038003800380038003800380038003800380FFFEFFFE0F177E9614>I<FB8E00FFDF003CF3803C
-F38038E38038E38038E38038E38038E38038E38038E38038E38038E38038E380FEFBE0FE79E013
-10808F14>I<FC7800FDFE001F86001E07001C07001C07001C07001C07001C07001C07001C0700
-1C07001C07001C0700FF8FE0FF8FE01310808F14>I<07C01FF03C78701C701CE00EE00EE00EE0
-0EE00EE00E701C783C3C781FF007C00F107E8F14>I<FCF800FDFE001F07001E03001C03801C01
-C01C01C01C01C01C01C01C01C01C01C01C03801E03001F0E001DFC001CF8001C00001C00001C00
-001C00001C00001C0000FF8000FF80001218808F14>I<FE1F00FE7F800EE3800F81000F00000F
-00000E00000E00000E00000E00000E00000E00000E00000E0000FFF000FFF00011107F8F14>
-114 D<0FD83FF86038C038C038F0007F803FF007F8001C6006E006F006F81CFFF8CFE00F107E8F
-14>I<030007000700070007007FFCFFFC07000700070007000700070007000700070E070E070E
-070C03FC00F00F157F9414>I<FC3F00FC3F001C07001C07001C07001C07001C07001C07001C07
-001C07001C07001C07001C07001C1F000FFFE003E7E01310808F14>I<FE3F80FE3F801C1C001C
-1C001C1C001C1C000E38000E38000E380006300007700007700007700003E00003E00003E00011
-107F8F14>I<FF7F80FF7F80380E00380E00380E00380E0039CE0039CE0019CC001B6C001B6C00
-1A6C001A6C001E7C000E78000E780011107F8F14>I<7E3F007E3F001E38000E780007700007E0
-0003E00001C00003C00003E0000770000E78000E38001C1C00FE3F80FE3F8011107F8F14>I<FE
-3F80FE3F801C1C001C1C001C1C000E1C000E38000E380007380007300007300003700003700001
-E00001E00001E00001C00001C00001C0000380007380007700007E00003C000011187F8F14>I<
-3FFF7FFF700E701C7038007000E001C0038007000E001C0738077007FFFFFFFF10107F8F14>I
-E /Fd 1 59 df<60F0F06004047D830B>58 D E /Fe 25 122 df<078018603030303060186018
-E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C6018601870383030186007800E187E
-9713>48 D<03000700FF0007000700070007000700070007000700070007000700070007000700
-070007000700070007000700FFF00C187D9713>I<0F80106020304038803CC01CE01C401C003C
-003800380070006000C001800100020004040804100430083FF87FF8FFF80E187E9713>I<01E0
-06100C1818383038300070006000E000E7C0E860F030F018E018E01CE01CE01C601C601C701830
-183030186007C00E187E9713>54 D<40007FFE7FFC7FFC40088010801080200040004000800180
-01800100030003000300030007000700070007000700070002000F197E9813>I<078018603030
-201860186018601870103C303E600F8007C019F030F86038401CC00CC00CC00CC00C6008201018
-600FC00E187E9713>I<07801860303070306018E018E018E01CE01CE01C601C603C303C185C0F
-9C001C00180018003870307060604021801F000E187E9713>I<FFE7FF0E00700E00700E00700E
-00700E00700E00700E00700E00700E00700E00700E00700FFFF00E00700E00700E00700E00700E
-00700E00700E00700E00700E00700E00700E00700E0070FFE7FF181A7E991D>72
-D<0FC21836200E6006C006C002C002C002E00070007E003FE01FF807FC003E000E000700038003
-80038003C002C006E004D81887E0101A7E9915>83 D<3F8070C070E020700070007007F01C7030
-707070E070E071E071E0F171FB1E3C10107E8F13>97 D<07F80C1C381C30087000E000E000E000
-E000E000E0007000300438080C1807E00E107F8F11>99 D<007E00000E00000E00000E00000E00
-000E00000E00000E00000E00000E0003CE000C3E00380E00300E00700E00E00E00E00E00E00E00
-E00E00E00E00E00E00600E00700E00381E001C2E0007CFC0121A7F9915>I<07C01C3030187018
-600CE00CFFFCE000E000E000E0006000300438080C1807E00E107F8F11>I<0FCE187330307038
-703870387038303018602FC02000600070003FF03FFC1FFE600FC003C003C003C0036006381C07
-E010187F8F13>103 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00
-001CF8001D0C001E0E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E
-001C0E001C0E00FF9FC0121A7F9915>I<18003C003C001800000000000000000000000000FC00
-1C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091A80990A>I<FCF8
-001D0C001E0E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E
-001C0E00FF9FC012107F8F15>110 D<07E01C38300C700E6006E007E007E007E007E007E00760
-06700E381C1C3807E010107F8F13>I<FCF8001F0E001E07001C03801C03801C01C01C01C01C01
-C01C01C01C01C01C01C01C03801C03001E07001F0C001CF0001C00001C00001C00001C00001C00
-001C0000FF800012177F8F15>I<FCE01D701E701E201C001C001C001C001C001C001C001C001C
-001C001C00FFC00C107F8F0F>114 D<1F2060E04020C020C020F0007F003FC01FE000F0807080
-30C030C020F0408F800C107F8F0F>I<0400040004000C000C001C003C00FFC01C001C001C001C
-001C001C001C001C001C201C201C201C201C200E4003800B177F960F>I<FF1F803C06001C0400
-1C04001E0C000E08000E080007100007100007900003A00003A00001C00001C00001C000008000
-11107F8F14>118 D<FF3F803C1C001C18000E100007200007600003C00001C00001E00003E000
-027000043800083800181C00381E00FC3FC012107F8F14>120 D<FF1F803C06001C04001C0400
-1E0C000E08000E080007100007100007900003A00003A00001C00001C00001C000008000008000
-010000010000E10000E20000E4000078000011177F8F14>I E /Ff 2 42
-df<007000E001C00380078007000E001E001E003C003C003C0078007800780078007000F000F0
-00F000F000F000F000F000F000F000F000F000F000700078007800780078003C003C003C001E00
-1E000E0007000780038001C000E000700C2E7EA112>40 D<E000700038001C001E000E00070007
-80078003C003C003C001E001E001E001E000E000F000F000F000F000F000F000F000F000F000F0
-00F000F000E001E001E001E001E003C003C003C00780078007000E001E001C0038007000E0000C
-2E7DA112>I E /Fg 25 123 df<0007F800007FFC0001FC0E0003F01F0007E03F000FC03F000F
-C03F000FC03F000FC01E000FC00C000FC000000FC000000FC0FF80FFFFFF80FFFFFF800FC01F80
-0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F
-800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F807FF8FFF07FF8FFF01C23
-7FA220>12 D<000FFF80007FFF8001FC1F8003F03F8007E03F800FC03F800FC01F800FC01F800F
-C01F800FC01F800FC01F800FC01F800FC01F80FFFFFF80FFFFFF800FC01F800FC01F800FC01F80
-0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F
-800FC01F800FC01F800FC01F800FC01F800FC01F807FF8FFF07FF8FFF01C237FA220>I<07FE00
-001FFF80003F07E0003F03F0003F01F0003F01F8001E01F8000001F8000001F800003FF80003FD
-F8001F81F8003E01F8007C01F800F801F800F801F800F801F800F801F8007C02F8007E0CF8001F
-F87F8007E03F8019167E951C>97 D<FF800000FF8000001F8000001F8000001F8000001F800000
-1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F87F0001FBFFC001FF03E
-001FC01F001F800F801F800FC01F8007C01F8007E01F8007E01F8007E01F8007E01F8007E01F80
-07E01F8007E01F8007C01F8007C01F800FC01F800F801FC01F001E707E001C3FFC00180FE0001B
-237EA220>I<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000
-FC0000FC0000FC00007C00007E00007E00003F00301F00600FC0E007FF8000FE0014167E9519>
-I<0001FF000001FF0000003F0000003F0000003F0000003F0000003F0000003F0000003F000000
-3F0000003F0000003F0000003F0000FE3F0007FFBF000FC1FF001F007F003E003F007E003F007C
-003F007C003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F007C003F00
-7E003F003E003F001F007F000F81FF0007FF3FE001FC3FE01B237EA220>I<00FE0007FF800F83
-C01F01E03E00F07E00F07C00F87C0078FC0078FFFFF8FFFFF8FC0000FC0000FC00007C00007C00
-003E00183E00181F00300F80E003FFC000FF0015167E951A>I<00FE0F8003FF9FC00F83E3C01F
-01F3C01E00F0003E00F8003E00F8003E00F8003E00F8003E00F8001E00F0001F01F0000F83E000
-0BFF800008FE000018000000180000001C0000001FFFE0001FFFFC000FFFFF0007FFFF001FFFFF
-807C001FC078000FC0F80007C0F80007C0F80007C07C000F803E001F001F807E000FFFFC0001FF
-E0001A217F951D>103 D<FF800000FF8000001F8000001F8000001F8000001F8000001F800000
-1F8000001F8000001F8000001F8000001F8000001F8000001F83F0001F8FFC001F987E001FA03E
-001FC03F001FC03F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F80
-3F001F803F001F803F001F803F001F803F001F803F001F803F00FFF1FFE0FFF1FFE01B237DA220
->I<1E003F007F807F807F807F803F001E00000000000000000000000000FF80FF801F801F801F
-801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF00C247EA3
-0F>I<FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000
-1F8000001F8000001F8000001F8000001F80FF801F80FF801F803C001F8030001F80E0001F81C0
-001F8300001F8600001F9E00001FBE00001FFF00001FDF80001F8FC0001F07C0001F07E0001F03
-F0001F01F8001F00F8001F00FC001F007E00FFE1FFC0FFE1FFC01A237EA21E>107
-D<FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
-1F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF00C237EA20F>I<
-FF03F803F800FF0FFE0FFE001F183F183F001F201F201F001F401FC01F801F401FC01F801F801F
-801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
-1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
-801F80FFF0FFF0FFF0FFF0FFF0FFF02C167D9531>I<FF03F000FF0FFC001F187E001F203E001F
-403F001F403F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00
-1F803F001F803F001F803F001F803F001F803F001F803F00FFF1FFE0FFF1FFE01B167D9520>I<
-00FF0007FFE00F81F01F00F83E007C7C003E7C003E7C003EFC003FFC003FFC003FFC003FFC003F
-FC003FFC003F7C003E7E007E3E007C1F00F80F81F007FFE000FF0018167E951D>I<FF87F000FF
-BFFC001FF07E001FC01F001F800F801F800FC01F800FC01F8007E01F8007E01F8007E01F8007E0
-1F8007E01F8007E01F8007E01F8007C01F800FC01F800FC01F801F801FC01F001FF07E001FBFFC
-001F8FE0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000FFF0
-0000FFF000001B207E9520>I<FF0F80FF1FE01F33F01F63F01F43F01F43F01FC1E01F80001F80
-001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8000FFF800FFF8
-0014167E9518>114 D<07F9801FFF80380780700380F00180F00180F80000FF0000FFF8007FFE
-003FFF001FFF8007FF80003FC0C007C0C003C0E003C0E003C0F00380FC0F00EFFE00C3F8001216
-7E9517>I<00C00000C00000C00000C00001C00001C00003C00007C0000FC0001FC000FFFF00FF
-FF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC1800F
-C1800FC1800FC1800FC18007C18007E30003FE0000FC0011207F9F16>I<FF81FF00FF81FF001F
-803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00
-1F803F001F803F001F803F001F803F001F803F001F807F001F80FF000FC1BF0007FF3FE001FC3F
-E01B167D9520>I<FFF01FE0FFF01FE00FC007000FC006000FE00E0007E00C0007F01C0003F018
-0003F8180001F8300001F8300000FC600000FC6000007EC000007EC000007FC000003F8000003F
-8000001F0000001F0000000E0000000E00001B167F951E>I<FFF3FF87FCFFF3FF87FC1F807C00
-E00FC07C00C00FC07E00C00FE03E01C007E03F018007E07F018003F07F030003F0CF830001F8CF
-860001F8CFC60001FD87C60000FD87CC0000FF03EC00007F03F800007F03F800007E01F800003E
-01F000003C00F000001C00E000001800600026167F9529>I<FFF0FFC0FFF0FFC00FC01C0007E0
-380007F0700003F0E00001F8C00000FD8000007F0000007F0000003F0000001F8000003FC00000
-37E0000067F00000C3F00001C1F8000380FC000700FE000E007E00FFC1FFE0FFC1FFE01B167F95
-1E>I<FFF01FE0FFF01FE00FC007000FC006000FE00E0007E00C0007F01C0003F0180003F81800
-01F8300001F8300000FC600000FC6000007EC000007EC000007FC000003F8000003F8000001F00
-00001F0000000E0000000E0000000C0000000C00000018000078180000FC380000FC300000FC60
-000069E000007F8000001F0000001B207F951E>I<7FFFE07FFFE0780FC0701FC0601F80E03F00
-C07F00C07E00C0FC0001FC0001F80003F00007F03007E0300FC0301FC0701F80703F00607F00E0
-7E03E0FFFFE0FFFFE014167E9519>I E /Fh 22 119 df<00E00000E00000E00000E00040E040
-F0E1E0F8E3E07EEFC01FFF0007FC0003F80007FC001FFF007EEFC0F8E3E0F0E1E040E04000E000
-00E00000E00000E00013157D991A>42 D<003800007C00007C00006C0000EE0000EE0000EE0000
-EE0000C60001C70001C70001C70001C7000383800383800383800383800783C00701C007FFC007
-FFC007FFC00E00E00E00E00E00E00E00E01C00707F83FCFF83FE7F83FC171E7F9D1A>65
-D<7FFFFCFFFFFC7FFFFC0E001C0E001C0E001C0E001C0E001C0E00000E00000E07000E07000E07
-000FFF000FFF000FFF000E07000E07000E07000E00000E00000E00000E000E0E000E0E000E0E00
-0E0E000E7FFFFEFFFFFE7FFFFE171E7F9D1A>69 D<FF8FF8FF8FF8FF8FF81C01C01C01C01C01C0
-1C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C0
-1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0FF8FF8FF8FF8FF8FF8151E7E9D1A>
-72 D<FFFF80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C00001C00001C000
-01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
-01C00001C000FFFF80FFFF80FFFF80111E7C9D1A>I<FE0FF8FF0FF8FF0FF81D81C01D81C01D81
-C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01C61C01C61C01C71C01C71C01C31C01C31C01C39
-C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC01C0DC0FF87C0FF87C0FF83C0151E7E9D1A
->78 D<0FFE003FFF807FFFC07C07C07001C0F001E0E000E0E000E0E000E0E000E0E000E0E000E0
-E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E0F001E0
-7001C07C07C07FFFC03FFF800FFE00131E7D9D1A>I<FFF000FFFC00FFFF001C0F801C07801C03
-C01C01C01C01C01C01C01C01C01C03C01C07801C0F801FFF001FFC001FFE001C0F001C07001C03
-801C03801C03801C03801C03801C03841C038E1C038E1C038EFF81FCFF81FCFF8070171E7E9D1A
->82 D<03F1C00FFDC03FFFC07C0FC07003C0E003C0E001C0E001C0E001C0E00000700000780000
-3F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E000E0E000E0E001C0
-F001C0FC0780FFFF80EFFE00E3F800131E7D9D1A>I<7FFFFEFFFFFEFFFFFEE0380EE0380EE038
-0EE0380EE0380E0038000038000038000038000038000038000038000038000038000038000038
-0000380000380000380000380000380000380000380000380003FF8007FFC003FF80171E7F9D1A
->I<FF01FEFF83FEFF01FE1E00F00E00E00E00E00701C00701C003838003838003C78001C70001
-C70000EE0000EE00007C00007C0000380000380000380000380000380000380000380000380000
-380000380001FF0001FF0001FF00171E7F9D1A>89 D<7FFFC0FFFFE0FFFFE07FFFC013047D7E1A
->95 D<1FF0003FFC007FFE00780F00300700000380000380007F8007FF801FFF803F8380780380
-700380E00380E00380E00380700780780F803FFFFC1FFDFC07F0FC16157D941A>97
-D<00FF8003FFC00FFFE01F01E03C00C0780000700000700000E00000E00000E00000E00000E000
-007000007000007800703C00701F01F00FFFE003FFC000FE0014157D941A>99
-D<001FC0001FC0001FC00001C00001C00001C00001C00001C00001C001F1C007FDC00FFFC01E0F
-C03C07C07803C07001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C07003C07003C03807
-C03E0FC01FFFFC07FDFC01F1FC161E7E9D1A>I<FE0000FE0000FE00000E00000E00000E00000E
-00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E
-00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE3FEFFE3FE171E7F9D1A>
-104 D<01C00003E00003E00003E00001C0000000000000000000000000000000007FE000FFE000
-7FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
-00E00000E00000E000FFFFC0FFFFC0FFFFC0121F7C9E1A>I<FE3E00FEFF80FFFFC00FC1C00F80
-E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
-E0FFE3FEFFE3FEFFE3FE17157F941A>110 D<01F00007FC001FFF003E0F803C07807803C07001
-C0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF0007FC
-0001F00013157D941A>I<FF83F0FF8FF8FFBFFC03FC3C03F01803E00003C00003C00003800003
-8000038000038000038000038000038000038000038000038000FFFF00FFFF80FFFF0016157E94
-1A>114 D<00C00001C00001C00001C00001C00001C00001C0007FFFE0FFFFE0FFFFE001C00001
-C00001C00001C00001C00001C00001C00001C00001C00001C00001C07001C07001C07001C07000
-E0E000FFE0007FC0001F00141C7F9B1A>116 D<7FC7FCFFC7FE7FC7FC0E00E00E00E00F01E007
-01C00701C00783C003838003838003838001C70001C70001C70000EE0000EE0000EE00007C0000
-7C0000380017157F941A>118 D E /Fi 41 123 df<0003FC00003FFE00007E070001F80F8003
-F01F8003E01F8007E01F8007E01F8007E01F8007E0060007E0000007E0000007E0000007E0FFC0
-FFFFFFC0FFFFFFC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00F
-C007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E0
-0FC007E00FC007E00FC07FFC7FFC7FFC7FFC1E267FA522>12 D<3C7EFFFFFFFF7E3C08087C8711
->46 D<001C00003C0000FC00FFFC00FFFC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00
-00FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00
-00FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC007FFFFC7FFFFC16237CA21F>49
-D<01FF0007FFC01E07F03803F86001FC7C00FEFE00FEFE00FFFE007FFE007F7C007F3800FF0000
-FF0000FE0000FE0001FC0001F80003F00007E0000780000F00001E00003C0000700000E00301C0
-030380070700060600060FFFFE1FFFFE3FFFFE7FFFFCFFFFFCFFFFFC18237DA21F>I<01FF0007
-FFE01E03F03801F83C01FC7E00FE7E00FE7E00FE3E00FE1C01FE0001FC0001FC0003F80007F000
-0FC001FF0001FF000007E00001F00001F80000FC0000FE0000FF0000FF1000FF7C00FFFE00FFFE
-00FFFE00FEFE00FE7C01FC7001F83E07F00FFFC001FF0018237DA21F>I<000038000000780000
-0078000000F8000001F8000003F8000007F8000006F800000CF800001CF8000038F8000030F800
-0060F80000E0F80001C0F8000180F8000300F8000700F8000E00F8001C00F8001800F8003000F8
-007000F800E000F800FFFFFFC0FFFFFFC00001F8000001F8000001F8000001F8000001F8000001
-F8000001F800007FFFC0007FFFC01A237EA21F>I<18000C1F007C1FFFF81FFFF01FFFE01FFFC0
-1FFF801FFE0018000018000018000018000018000018FF001BFFE01F01F01C00F80800FC00007E
-00007E00007E00007F00007F78007FFC007FFC007FFC007FFC007EF8007E6000FC7000FC3801F8
-1E07E007FFC001FE0018237DA21F>I<001FC0007FF001F83803E00C07803E0F807E1F007E3F00
-7E3F007E7E003C7E00007E00007E0000FE3FC0FE7FF0FE80F8FF80FCFF007CFF007EFE007EFE00
-7FFE007FFE007FFE007F7E007F7E007F7E007F7E007F3E007E3F007E1F007C0F80F807C1F003FF
-C0007F0018237DA21F>I<300000003C0000003FFFFFC03FFFFFC03FFFFF807FFFFF007FFFFE00
-7FFFFC006000180060001800E0003000C0006000C000C000000180000001800000030000000700
-0000060000000E0000001E0000001E0000001E0000003C0000003C0000007C0000007C0000007C
-0000007C000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000078000000
-3000001A257DA41F>I<00001C00000000001C00000000003E00000000003E00000000003E0000
-0000007F00000000007F0000000000FF8000000000FF8000000000FF80000000019FC000000001
-9FC0000000031FE0000000030FE0000000030FE00000000607F00000000607F00000000C07F800
-00000C03F80000001C03FC0000001801FC0000001801FC0000003001FE0000003000FE0000007F
-FFFF0000007FFFFF00000060007F000000C0007F800000C0003F800001C0003FC0000180001FC0
-000180001FC0000300000FE0000300000FE0000780000FF000FFF801FFFF80FFF801FFFF802925
-7EA42E>65 D<FFFFFFE00000FFFFFFFC000003F800FF000003F8001FC00003F80007E00003F800
-03F00003F80001F80003F80001FC0003F80000FC0003F80000FE0003F80000FE0003F800007F00
-03F800007F0003F800007F0003F800007F8003F800007F8003F800007F8003F800007F8003F800
-007F8003F800007F8003F800007F8003F800007F8003F800007F8003F800007F8003F800007F00
-03F800007F0003F800007F0003F80000FE0003F80000FE0003F80001FC0003F80001F80003F800
-03F00003F80007E00003F8001FC00003F800FF8000FFFFFFFE0000FFFFFFE0000029257EA42F>
-68 D<FFFFFFFF00FFFFFFFF0003F8007F0003F8000F8003F800078003F800038003F800038003
-F800018003F800018003F800018003F80000C003F80600C003F80600C003F806000003F8060000
-03F80E000003F81E000003FFFE000003FFFE000003F81E000003F80E000003F806000003F80600
-0003F806006003F806006003F800006003F80000C003F80000C003F80000C003F80000C003F800
-01C003F80003C003F80003C003F8000F8003F8003F80FFFFFFFF80FFFFFFFF8023257EA428>I<
-FFFFFFFE00FFFFFFFE0003F800FE0003F8001F0003F8000F0003F800070003F800070003F80003
-0003F800030003F800030003F800018003F806018003F806018003F806000003F806000003F80E
-000003F81E000003FFFE000003FFFE000003F81E000003F80E000003F806000003F806000003F8
-06000003F806000003F800000003F800000003F800000003F800000003F800000003F800000003
-F800000003F800000003F800000003F8000000FFFFF00000FFFFF0000021257EA427>I<FFFFE0
-FFFFE0FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
-03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
-03F80003F80003F80003F80003F80003F80003F80003FFFFFFF80003FFFFFFF80003F80003F800
-03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
-03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
-03F80003F80003F80003F800FFFFE0FFFFE0FFFFE0FFFFE02B257EA430>72
-D<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F800FFFFE0FFFFE013257EA417
->I<FFFFF000FFFFF00003F8000003F8000003F8000003F8000003F8000003F8000003F8000003
-F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F80000
-03F8000003F8000003F8000003F8000003F8000603F8000603F8000603F8000C03F8000C03F800
-0C03F8001C03F8001C03F8003C03F8007C03F800F803F803F8FFFFFFF8FFFFFFF81F257EA425>
-76 D<FFF8000000FFF8FFFC000001FFF803FC000001FE00037E0000037E00037E0000037E0003
-7E0000037E00033F0000067E00033F0000067E00031F80000C7E00031F80000C7E00030FC00018
-7E00030FC000187E000307E000307E000307E000307E000307E000307E000303F000607E000303
-F000607E000301F800C07E000301F800C07E000300FC01807E000300FC01807E0003007E03007E
-0003007E03007E0003007E03007E0003003F06007E0003003F06007E0003001F8C007E0003001F
-8C007E0003000FD8007E0003000FD8007E00030007F0007E00030007F0007E00030007F0007E00
-030003E0007E00078003E0007E00FFFC01C01FFFF8FFFC01C01FFFF835257EA43A>I<00FF0080
-07FFE3800F80F7801E001F803C000F807800078078000380F8000380F8000180F8000180FC0001
-80FC000000FF0000007FE000007FFF00003FFFE0003FFFF8001FFFFE0007FFFF0003FFFF80007F
-FF800003FFC000003FC000000FE0000007E0000007E0C00003E0C00003E0C00003E0C00003C0E0
-0003C0F00007C0F8000780FC000F00FFC03E00E3FFF800803FE0001B257DA422>83
-D<FFFF83FFFE01FFF0FFFF83FFFE01FFF007F0001FC0000F0007F0001FC000060003F8000FE000
-0C0003F8000FE0000C0003FC000FF0001C0001FC0007F000180001FC0007F000180000FE000FF8
-00300000FE000FF800300000FE000FFC003000007F0019FC006000007F0019FC006000007F8039
-FE00E000003F8030FE00C000003F8030FE00C000001FC0607F018000001FC0607F018000001FE0
-607F818000000FE0C03F830000000FE0C03F830000000FF1C03FC700000007F1801FC600000007
-F1801FC600000003FB000FEC00000003FB000FEC00000003FF000FFC00000001FE0007F8000000
-01FE0007F800000001FE0007F800000000FC0003F000000000FC0003F000000000780001E00000
-0000780001E000000000780001E000000000300000C000003C257FA43F>87
-D<07FF00001FFFC0003E03E0003F01F0003F01F8003F00FC001E00FC000000FC000000FC000000
-FC00003FFC0003FCFC000FC0FC003F00FC007E00FC007E00FC00FC00FC00FC00FC00FC00FC00FC
-017C007E017C003F067C001FFC3FE007F01FE01B187E971E>97 D<FFC00000FFC000000FC00000
-0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000
-000FC000000FC3F8000FCFFE000FF81F800FE00FC00FC007E00FC007E00FC003F00FC003F00FC0
-03F80FC003F80FC003F80FC003F80FC003F80FC003F80FC003F80FC003F80FC003F00FC003F00F
-C007E00FC007C00FE00FC00F383F000E1FFE000C07F0001D267EA522>I<007FE003FFF807C07C
-1F80FC1F00FC3F00FC7E00787E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
-7E00007F00003F000C1F800C1FC01807E07003FFE0007F0016187E971B>I<0001FF800001FF80
-00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
-8000001F8000001F80007F1F8003FFDF8007E0FF801F803F803F001F803F001F807E001F807E00
-1F80FE001F80FE001F80FE001F80FE001F80FE001F80FE001F80FE001F80FE001F807E001F807E
-001F803F001F803F003F801F807F800FC0FF8003FF9FF800FE1FF81D267EA522>I<007F0003FF
-C007C1F00F80F81F00F83F007C7E007C7E007EFE007EFE007EFFFFFEFFFFFEFE0000FE0000FE00
-007E00007E00007E00063F00061F000C0F801807E07003FFE0007F8017187E971C>I<000FC000
-7FF000F8F001F1F803F1F803E1F807E0F007E00007E00007E00007E00007E00007E00007E000FF
-FF00FFFF0007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007
-E00007E00007E00007E00007E00007E00007E00007E00007E0007FFF007FFF0015267EA513>I<
-01FF07C007FFDFE00F83F1E01F01F1E03E00F8007E00FC007E00FC007E00FC007E00FC007E00FC
-007E00FC003E00F8001F01F0000F83E0000FFFC00011FF00003000000030000000380000003C00
-00003FFFE0001FFFFC001FFFFE000FFFFF001FFFFF803C003F8078000FC0F80007C0F80007C0F8
-0007C0F80007C07C000F803E001F001F807E0007FFF80000FFC0001B247E971F>I<FFC00000FF
-C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
-0FC000000FC000000FC000000FC1F8000FC7FE000FCC3F000FD01F000FF01F800FE01F800FE01F
-800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC0
-1F800FC01F800FC01F800FC01F800FC01F800FC01F80FFFCFFF8FFFCFFF81D267DA522>I<0F00
-1F803FC03FC03FC03FC01F800F000000000000000000000000000000FFC0FFC00FC00FC00FC00F
-C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFF8FFF80D27
-7EA611>I<FFC0FFC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
-0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FF
-FCFFFC0E267EA511>108 D<FF81FC01FC00FF87FF07FF000F8C1F8C1F800F980F980F800FB00F
-F00FC00FA00FE00FC00FA00FE00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
-0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
-C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFFCFFFCFFFCFFFCFFFCFFFC
-2E187D9733>I<FF81F800FF87FE000F8C3F000F901F000FB01F800FA01F800FA01F800FC01F80
-0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F
-800FC01F800FC01F800FC01F800FC01F80FFFCFFF8FFFCFFF81D187D9722>I<007F800003FFF0
-0007C0F8001F807E003F003F003F003F007E001F807E001F80FE001FC0FE001FC0FE001FC0FE00
-1FC0FE001FC0FE001FC0FE001FC0FE001FC07E001F807E001F803F003F003F003F001F807E000F
-C0FC0003FFF000007F80001A187E971F>I<FFC3F800FFCFFE000FF83F800FE00FC00FC00FE00F
-C007E00FC007F00FC003F00FC003F80FC003F80FC003F80FC003F80FC003F80FC003F80FC003F8
-0FC003F80FC007F00FC007F00FC007E00FC00FC00FE01FC00FF83F000FDFFE000FC7F0000FC000
-000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC0000FFFC
-00001D237E9722>I<FF87C0FF8FF00F98F80FB1F80FA1F80FA1F80FE0F00FC0000FC0000FC000
-0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000FFFE00
-FFFE0015187E9719>114 D<07F9801FFF803C0F80700380F00180F00180F00180FC0000FF8000
-7FFC007FFE003FFF800FFFC003FFC0001FE00003E0C001E0C001E0E001E0E001C0F003C0FC0780
-EFFF00C3FC0013187E9718>I<00600000600000600000600000E00000E00001E00001E00003E0
-0007E0001FE000FFFFC0FFFFC007E00007E00007E00007E00007E00007E00007E00007E00007E0
-0007E00007E00007E00007E06007E06007E06007E06007E06007E06003E0C003F0C001FF80007E
-0013237FA218>I<FFC1FF80FFC1FF800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F
-800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC0
-1F800FC03F800FC03F8007C07F8007E0DF8003FF9FF800FE1FF81D187D9722>I<FFF80FF8FFF8
-0FF80FC003C00FE0018007E0030007E0030003F0060003F0060003F80E0001F80C0001FC1C0000
-FC180000FE1800007E3000007E3000003F6000003F6000001FC000001FC000001FC000000F8000
-000F800000070000000700001D187F9720>I<FFF83FF0FFF83FF00FC00F0007E00C0003F01C00
-03F8380001FC700000FCE000007EC000003F8000003F8000001F8000000FC000001FE000001FF0
-000033F8000071F80000E0FC0001C07E0003807F0003003F000F001F80FFC07FF8FFC07FF81D18
-7F9720>120 D<FFF80FF8FFF80FF80FC003C00FE0018007E0030007E0030003F0060003F00600
-03F80E0001F80C0001FC1C0000FC180000FE1800007E3000007E3000003F6000003F6000001FC0
-00001FC000001FC000000F8000000F800000070000000700000006000000060000000C0000300C
-0000781C0000FC180000FC380000FC70000078E000007FC000001F0000001D237F9720>I<3FFF
-F83FFFF83E03F03807F0300FE0700FC0701F80603F80603F00607E0000FE0000FC0001F80003F8
-1803F01807E0180FE0180FC0381F80303F80707F00707E01F0FFFFF0FFFFF015187E971B>I
-E /Fj 29 122 df<0003F07C001E0DC600380F0F00701E0F00E01E0E00E00C0001C01C0001C01C
-0001C01C0001C01C0001C01C00038038007FFFFFC0038038000380380003803800038038000700
-700007007000070070000700700007007000070070000E00E0000E00E0000E00E0000E00E0000E
-00E0000E00E0001C01C0001E01E000FF8FFE0020207E9F1B>11 D<0003E0001C1800381800703C
-00E03C00E03801C00001C00001C00001C00001C0000380007FFFF0038070038070038070038070
-0700E00700E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C0380
-1E03C0FF0FF816207E9F19>I<0003F03F00001E09E08000380F80C000701F01E000E03E01E000
-E01E01C001C01C000001C01C000001C01C000001C01C000001C01C000003803800007FFFFFFF80
-038038038003803803800380380380038038038007007007000700700700070070070007007007
-00070070070007007007000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E0
-0E001C01C01C001E01E01E00FF8FF8FFC023207E9F26>14 D<0020000060000060000060000060
-007061C03843800E4E0007580001E00001E00006B8001C9C00708700E083800180000180000180
-0001800001000012147AA117>42 D<FFC0FFC00A027D8A0F>45 D<000C001C00FC0F3800380038
-00380038003800700070007000700070007000E000E000E000E000E000E001C001C001C001C001
-C001C0038003C0FFFE0F1E7C9D17>49 D<003F8000C1E00100F00200780400780400780F007C0F
-807C0F807C0F00780600780000F80000F00001E00001C0000380000700000E00001C0000380000
-600000C0000180000300200600200800401000403FFFC07FFF80FFFF80161E7E9D17>I<07F800
-0C0C001E06001E07001C070000070000070000070000FF0007C7001E07003C0E00780E00F00E10
-F00E10F00E10F01E10F02E20784F401F878014147D9317>97 D<01FC07060E0F1C0F380E780070
-00F000F000F000F000E000E000E000E000F0027004300818300FC010147C9314>99
-D<0000700003F00000F00000700000700000E00000E00000E00000E00000E00000E00001C000F9
-C00305C00E03C01C03C03801C0780380700380F00380F00380F00380F00380E00700E00700E007
-00E00700E00700700F00301E00186F000F8FE014207C9F19>I<00F800070E000E07001C070038
-0380780380700380F00380F00380FFFF80F00000E00000E00000E00000E00000F0010070020030
-04001C180007E00011147D9314>I<0007800018C00031E00061E000E1C000C00001C00001C000
-01C00001C00001C0000380007FF800038000038000038000038000070000070000070000070000
-0700000700000E00000E00000E00000E00000E00000E00001C00001E0000FFE00013207E9F0E>
-I<00000E003E1100E1A301C1C20381E00780E00701E00F01E00F01E00F01E00703C00703800787
-0004FC000800000800001800001C00000FFF000FFFC007FFE01800F0300030600030C00030C000
-30C000306000603000C01C070007FC00181F809417>I<00E00007E00001E00000E00000E00001
-C00001C00001C00001C00001C00001C000038000038F800390E003A0E003C0600380600780E007
-00E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF
-CFF815207E9F19>I<01C003E003E003C0018000000000000000000000000003801F8007800380
-03800700070007000700070007000E000E000E000E000E000E001C001E00FF800B1F7F9E0C>I<
-00E007E001E000E000E001C001C001C001C001C001C00380038003800380038003800700070007
-000700070007000E000E000E000E000E000E001C001E00FFC00B207F9F0C>108
-D<0387C07C001F9861860007A072070003C0340300038038030007807807000700700700070070
-07000700700700070070070007007007000E00E00E000E00E00E000E00E00E000E00E00E000E00
-E00E000E00E00E001C01C01C001E01E01E00FFCFFCFFC022147E9326>I<038F801F90E007A0E0
-03C0600380600780E00700E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C0
-0E01C01C03801E03C0FFCFF815147E9319>I<00FC000387000E01801C00C03800E03800E07000
-F0F000F0F000F0F000F0F000F0E001E0E001E0E001C0E003C0F00380700700380E001C1C0007E0
-0014147D9317>I<00E3E007EC3800F01C00E01E00E00E01C00E01C00F01C00F01C00F01C00F01
-C00F03801E03801E03801C03803C0380380380700740E00721C0071F000700000700000700000E
-00000E00000E00000E00001E0000FFC000181D809319>I<00F040038CC00E04C01C03C03C03C0
-780380780380F00380F00380F00380F00380E00700E00700E00700F00700F00F00700F00301E00
-186E000F8E00000E00000E00000E00001C00001C00001C00001C00003C0001FF80121D7C9318>
-I<038E001FB38007C78003C7800383000780000700000700000700000700000700000E00000E00
-000E00000E00000E00000E00001C00001E0000FFE00011147E9312>I<01F2060E080618061802
-380438001E001FE00FF003F8003C401C400C400C600C6018E010D0608FC00F147E9312>I<0080
-010001000100030007000F001E00FFF80E000E000E000E001C001C001C001C001C001C00380038
-203820382038203840384018800F000D1C7C9B12>I<1C0380FC1F803C07801C03801C03803807
-00380700380700380700380700380700700E00700E00700E00700E00701E00701E00703C00305E
-001F9FC012147B9319>I<FF83F81E00E01C00C01C00800E00800E01000E02000E02000F040007
-040007080007080007100003900003A00003E00003C00003800001800001000015147C9318>I<
-FF9FE1FC3E0780701C0300601C0300401C0380401C0380800E0780800E0581000E0981000E09C2
-000E11C2000731C4000721C4000760C8000740C8000780F0000780F0000300E000030060000200
-40001E147C9321>I<1FF0FF03C07801C06001C04000E08000E180007300007600003C00003C00
-001C00002E00004E000087000107000203800603800C01C03E03E0FF07FC18147F9318>I<0FF8
-3F8001E00E0001C00C0001C0080000E0180000E0100000E0200000E0200000F040000070400000
-708000007080000071000000390000003A0000003E0000003C0000003800000018000000100000
-0010000000200000002000000040000070C00000F0800000F1000000E20000007C000000191D80
-9318>I E /Fk 36 122 df<0001C0000003C000000FC000007FC0001FFFC000FFFFC000FFBFC0
-00E03FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
-C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
-3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000
-003FC000003FC000003FC000003FC000003FC000003FC000003FC0007FFFFFE07FFFFFE07FFFFF
-E01B2E7AAD28>49 D<003FE00001FFFE0007FFFF800F80FFC01E003FE038001FF07C000FF87E00
-07FCFF0007FCFF8007FEFF8007FEFF8003FEFF8003FE7F0003FE3E0007FE000007FE000007FC00
-0007FC00000FF800000FF800000FF000001FE000001FC000003F8000007F0000007E000000F800
-0001F0000003E0000007C000000F0000001E000E003C000E0038000E0070001E00E0001C01C000
-1C0300003C07FFFFFC0FFFFFFC1FFFFFFC3FFFFFFC7FFFFFF8FFFFFFF8FFFFFFF8FFFFFFF81F2E
-7CAD28>I<0000007800000000000078000000000000FC000000000000FC000000000000FC0000
-00000001FE000000000001FE000000000003FF000000000003FF000000000007FF800000000007
-FF800000000007FF80000000000FFFC0000000000E7FC0000000001E7FE0000000001C3FE00000
-00001C3FE000000000383FF000000000381FF000000000781FF800000000700FF800000000700F
-F800000000E00FFC00000000E007FC00000001E007FE00000001C003FE00000001C003FE000000
-038003FF000000038001FF000000078001FF800000070000FF800000070000FF8000000FFFFFFF
-C000000FFFFFFFC000001FFFFFFFE000001C00003FE000003C00003FF000003800001FF0000038
-00001FF000007000001FF800007000000FF80000F000000FFC0000E0000007FC0000E0000007FC
-0001C0000007FE0003E0000003FE00FFFF8001FFFFFCFFFF8001FFFFFCFFFF8001FFFFFC36317D
-B03D>65 D<FFFFFFFFE00000FFFFFFFFFE0000FFFFFFFFFF800000FF0000FFC00000FF00003FF0
-0000FF00001FF80000FF00000FF80000FF000007FC0000FF000007FC0000FF000007FE0000FF00
-0003FE0000FF000003FE0000FF000003FE0000FF000003FE0000FF000007FE0000FF000007FE00
-00FF000007FC0000FF000007FC0000FF00000FF80000FF00001FF00000FF00003FE00000FF0000
-FF800000FF000FFF000000FFFFFFFE000000FFFFFFFFC00000FF00001FF00000FF000007F80000
-FF000003FE0000FF000003FE0000FF000001FF0000FF000001FF8000FF000000FF8000FF000000
-FFC000FF000000FFC000FF000000FFC000FF000000FFC000FF000000FFC000FF000000FFC000FF
-000000FFC000FF000000FF8000FF000001FF8000FF000001FF0000FF000003FF0000FF000007FE
-0000FF00000FFC0000FF00007FF800FFFFFFFFFFE000FFFFFFFFFF8000FFFFFFFFFC000032317E
-B039>I<000003FF80018000003FFFF003800001FFFFFC07800007FF003F0F80001FF800079F80
-003FC00001FF8000FF800000FF8001FE0000007F8003FC0000003F8007FC0000001F8007F80000
-000F800FF00000000F801FF000000007801FF000000007803FE000000007803FE000000003807F
-E000000003807FE000000003807FC000000000007FC00000000000FFC00000000000FFC0000000
-0000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0
-0000000000FFC000000000007FC000000000007FC000000000007FE000000000007FE000000003
-803FE000000003803FE000000003801FF000000003801FF000000007800FF0000000070007F800
-0000070007FC0000000E0003FC0000001E0001FE0000001C0000FF8000007800003FC00000F000
-001FF80003E0000007FF003F80000001FFFFFE000000003FFFF80000000003FF80000031317CB0
-3A>I<FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE000FF80007FE000FF80000FF000FF800003F0
-00FF800001F000FF800001F000FF800000F000FF800000F000FF8000007000FF8000007000FF80
-00007000FF8000003800FF8000003800FF8007003800FF8007003800FF8007000000FF80070000
-00FF8007000000FF800F000000FF801F000000FF803F000000FFFFFF000000FFFFFF000000FFFF
-FF000000FF803F000000FF801F000000FF800F000000FF8007000000FF8007000000FF80070000
-00FF8007000000FF8007000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
-00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
-00FF80000000FFFFFFE00000FFFFFFE00000FFFFFFE000002D317EB033>70
-D<000003FF00030000007FFFF007000001FFFFFC0F000007FF007E1F00001FF0000FBF00007FC0
-0003FF0000FF800001FF0001FE0000007F0003FC0000007F0007FC0000003F000FF80000001F00
-0FF00000001F001FF00000000F001FF00000000F003FE000000007003FE000000007007FE00000
-0007007FE000000007007FC00000000000FFC00000000000FFC00000000000FFC00000000000FF
-C00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000000
-0000FFC00000000000FFC00007FFFFFC7FC00007FFFFFC7FE00007FFFFFC7FE0000001FF003FE0
-000001FF003FE0000001FF001FF0000001FF001FF0000001FF000FF0000001FF000FF8000001FF
-0007FC000001FF0003FC000001FF0001FE000001FF0000FF800001FF00007FC00003FF00001FF8
-00077F000007FF003E3F000001FFFFFC1F0000007FFFF00F00000003FF80030036317CB03F>I<
-FFFFFF807FFFFFC0FFFFFF807FFFFFC0FFFFFF807FFFFFC000FF8000007FC00000FF8000007FC0
-0000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007F
-C00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF800000
-7FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000
-007FC00000FF8000007FC00000FF8000007FC00000FFFFFFFFFFC00000FFFFFFFFFFC00000FFFF
-FFFFFFC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF
-8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000
-FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC000
-00FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC0
-0000FF8000007FC00000FF8000007FC000FFFFFF807FFFFFC0FFFFFF807FFFFFC0FFFFFF807FFF
-FFC03A317EB03F>I<FFFFFF80FFFFFF80FFFFFF8000FF800000FF800000FF800000FF800000FF
-800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000
-FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000
-00FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF80
-0000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000FFFF
-FF80FFFFFF80FFFFFF8019317EB01E>I<FFFF800001FFFFC0FFFFC00001FFFFC0FFFFE00001FF
-FFC000FFF0000003E00000FFF8000001C00000EFFC000001C00000E7FC000001C00000E7FE0000
-01C00000E3FF000001C00000E1FF800001C00000E0FFC00001C00000E07FE00001C00000E03FE0
-0001C00000E03FF00001C00000E01FF80001C00000E00FFC0001C00000E007FE0001C00000E003
-FE0001C00000E001FF0001C00000E001FF8001C00000E000FFC001C00000E0007FE001C00000E0
-003FF001C00000E0001FF001C00000E0001FF801C00000E0000FFC01C00000E00007FE01C00000
-E00003FF01C00000E00001FF81C00000E00000FF81C00000E00000FFC1C00000E000007FE1C000
-00E000003FF1C00000E000001FF9C00000E000000FFDC00000E0000007FDC00000E0000007FFC0
-0000E0000003FFC00000E0000001FFC00000E0000000FFC00000E00000007FC00000E00000003F
-C00000E00000003FC00000E00000001FC00000E00000000FC00001F000000007C000FFFFE00000
-03C000FFFFE0000001C000FFFFE0000001C0003A317EB03F>78 D<FFFFFFFFE000FFFFFFFFFE00
-FFFFFFFFFF8000FF8000FFE000FF80003FF000FF80000FF800FF800007FC00FF800007FC00FF80
-0003FE00FF800003FE00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF800003FF
-00FF800003FF00FF800003FF00FF800003FE00FF800003FE00FF800007FC00FF800007F800FF80
-000FF800FF80003FE000FF8000FFC000FFFFFFFF0000FFFFFFF80000FF8000000000FF80000000
-00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
-00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
-00FF8000000000FF8000000000FF8000000000FF8000000000FF80000000FFFFFF800000FFFFFF
-800000FFFFFF80000030317EB037>80 D<7FFFFFFFFFFF007FFFFFFFFFFF007FFFFFFFFFFF007F
-C00FF801FF007E000FF8003F007C000FF8001F0078000FF8000F0078000FF8000F0070000FF800
-0700F0000FF8000780F0000FF8000780F0000FF8000780E0000FF8000380E0000FF8000380E000
-0FF8000380E0000FF8000380E0000FF800038000000FF800000000000FF800000000000FF80000
-0000000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000F
-F800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000
-00000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF8
-00000000000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000
-000FF800000000000FF800000000000FF8000000007FFFFFFF0000007FFFFFFF0000007FFFFFFF
-000031307DAF38>84 D<FFFFFF8003FFFF80FFFFFF8003FFFF80FFFFFF8003FFFF8000FF800000
-07C00000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF8000
-0003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80
-000003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF
-80000003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000
-FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF800000038000
-00FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF8000000380
-0000FF80000003800000FF80000003800000FF800000038000007F800000038000007F80000007
-0000007FC00000070000003FC000000E0000003FC000000E0000001FE000001C0000000FF00000
-3800000007F800007000000003FC0001E000000000FF801FC0000000003FFFFF80000000000FFF
-FE000000000000FFE000000039317EB03E>I<FFFFFC0000FFFFFFFFFC0000FFFFFFFFFC0000FF
-FF03FF00000003C001FF000000038001FF800000078000FF800000070000FFC000000700007FC0
-00000E00007FC000000E00007FE000001E00003FE000001C00003FF000003C00001FF000003800
-001FF800003800000FF800007000000FFC000070000007FC0000E0000007FC0000E0000007FE00
-01E0000003FE0001C0000003FF0003C0000001FF000380000001FF800380000000FF8007000000
-00FFC00700000000FFC00F000000007FC00E000000007FE01E000000003FE01C000000003FF03C
-000000001FF038000000001FF838000000000FF870000000000FF870000000000FFCF000000000
-07FCE00000000007FFE00000000003FFC00000000003FFC00000000001FF800000000001FF8000
-00000000FF000000000000FF000000000000FF0000000000007E0000000000007E000000000000
-3C0000000000003C00000038317EB03D>I<00FFF0000003FFFE00000F803F80000FC00FE0001F
-E007F0001FE007F0001FE003F8000FC003FC00078003FC00000003FC00000003FC00000003FC00
-000003FC000000FFFC00001FFFFC0000FFE3FC0003FC03FC000FF003FC001FC003FC003FC003FC
-007F8003FC007F8003FC00FF0003FC00FF0003FC00FF0003FC00FF0007FC00FF0007FC007F800D
-FC003FC019FE001FE070FFF007FFE07FF000FF803FF024207E9F27>97 D<01F8000000FFF80000
-00FFF8000000FFF80000000FF800000007F800000007F800000007F800000007F800000007F800
-000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
-00000007F83FE00007F8FFFC0007FBE07F0007FF001F8007FE000FC007FC000FE007F80007F007
-F80007F807F80007F807F80003FC07F80003FC07F80003FC07F80003FE07F80003FE07F80003FE
-07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FC07F80003FC07F80003
-FC07F80007F807F80007F807F80007F007FC000FE007FE000FC007E7003F8007C3C0FE000780FF
-F80007003FC00027327EB12D>I<000FFF00007FFFC001FC01F003F003F007E007F80FE007F81F
-C007F83FC003F03FC001E07F8000007F8000007F800000FF800000FF800000FF800000FF800000
-FF800000FF800000FF800000FF8000007F8000007F8000007F8000003FC0001C3FC0001C1FC000
-380FE0003807E0007003F001E001FC07C0007FFF00000FF8001E207D9F24>I<0000000FC00000
-07FFC0000007FFC0000007FFC00000007FC00000003FC00000003FC00000003FC00000003FC000
-00003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0
-0000003FC00007F83FC0003FFF3FC000FE07BFC003F801FFC007E0007FC00FE0007FC01FC0003F
-C03FC0003FC03FC0003FC07F80003FC07F80003FC07F80003FC0FF80003FC0FF80003FC0FF8000
-3FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC07F80003FC07F80003FC07F80
-003FC03FC0003FC03FC0003FC01FC0003FC00FE0007FC007E000FFC003F003FFE001FC0F3FFE00
-7FFE3FFE000FF03FFE27327DB12D>I<000FFC00007FFF8001FC0FC003F003E007E001F00FE001
-F81FC000FC3FC000FE3FC000FE7F80007E7F80007F7F80007FFF80007FFF80007FFFFFFFFFFFFF
-FFFFFF800000FF800000FF800000FF8000007F8000007F8000007F8000003FC000071FC000071F
-C0000E0FE0000E07F0001C03F8007800FE03E0003FFFC00007FE0020207E9F25>I<0001FE0000
-0FFF80001FC3C0007F07E000FE0FF001FE0FF001FC0FF003FC0FF003FC07E003FC018003FC0000
-03FC000003FC000003FC000003FC000003FC000003FC000003FC0000FFFFFC00FFFFFC00FFFFFC
-0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC
-000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003
-FC000003FC000003FC000003FC000003FC000003FC000003FC00007FFFF0007FFFF0007FFFF000
-1C327EB119>I<001FF007C000FFFE3FE001F83F79F007E00FC3F00FE00FE1F00FC007E0E01FC0
-07F0001FC007F0003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8001FC007F0001F
-C007F0000FC007E0000FE00FE00007E00FC00003F83F000006FFFE00000E1FF000000E00000000
-1E000000001E000000001F000000001F800000001FFFFF80000FFFFFF0000FFFFFFC0007FFFFFE
-0003FFFFFF0003FFFFFF800FFFFFFFC01F00007FC07E00001FE07C00000FE0FC000007E0FC0000
-07E0FC000007E0FC000007E07E00000FC03E00000F803F00001F800FC0007E0007F803FC0001FF
-FFF000001FFF0000242F7E9F28>I<01F8000000FFF8000000FFF8000000FFF80000000FF80000
-0007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F800
-000007F800000007F800000007F800000007F800000007F800000007F807F80007F83FFE0007F8
-783F0007F8C03F8007F9801FC007FB001FC007FE001FE007FC001FE007FC001FE007FC001FE007
-F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
-07F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001F
-E007F8001FE007F8001FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28327DB12D>I<03
-C00007E0000FF0001FF8001FF8001FF8001FF8000FF00007E00003C00000000000000000000000
-000000000000000000000000000000000001F800FFF800FFF800FFF8000FF80007F80007F80007
-F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
-F80007F80007F80007F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF8011337DB2
-17>I<01F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327D
-B117>108 D<03F007F8001FE000FFF03FFE00FFF800FFF0783F01E0FC00FFF0C03F8300FE000F
-F1801FC6007F0007F3001FCC007F0007F6001FF8007F8007FC001FF0007F8007FC001FF0007F80
-07FC001FF0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F
-8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE000
-7F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0
-007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001F
-E0007F80FFFFC3FFFF0FFFFCFFFFC3FFFF0FFFFCFFFFC3FFFF0FFFFC3E207D9F43>I<03F007F8
-00FFF03FFE00FFF0783F00FFF0C03F800FF1801FC007F3001FC007F6001FE007FC001FE007FC00
-1FE007FC001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8
-001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007
-F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF
-28207D9F2D>I<0007FC0000007FFFC00001FC07F00003F001F80007E000FC000FC0007E001FC0
-007F003FC0007F803F80003F807F80003FC07F80003FC07F80003FC0FF80003FE0FF80003FE0FF
-80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE07F80003FC07F80003FC0
-7F80003FC03FC0007F803FC0007F801FC0007F000FE000FE0007E000FC0003F803F80001FE0FF0
-00007FFFC0000007FC000023207E9F28>I<01F83FE000FFF8FFFC00FFFBE07F00FFFF003F8007
-FE001FC007FC000FE007F8000FF007F80007F807F80007F807F80007FC07F80003FC07F80003FC
-07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003
-FE07F80003FC07F80007FC07F80007FC07F80007F807F80007F807F8000FF007FC000FE007FE00
-1FC007FF003F8007FBC0FE0007F8FFF80007F83FC00007F800000007F800000007F800000007F8
-00000007F800000007F800000007F800000007F800000007F800000007F800000007F8000000FF
-FFC00000FFFFC00000FFFFC00000272E7E9F2D>I<03F03F00FFF07FC0FFF1C3E0FFF187E00FF3
-0FF007F60FF007F60FF007FC07E007FC03C007FC000007FC000007F8000007F8000007F8000007
-F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80000
-07F8000007F8000007F8000007F8000007F80000FFFFE000FFFFE000FFFFE0001C207E9F21>
-114 D<01FF860007FFFE001F00FE003C003E0078001E0078000E00F8000E00F8000E00F8000E00
-FC000000FF800000FFFC00007FFFC0007FFFF0003FFFF8001FFFFC0007FFFE0001FFFF00003FFF
-000000FF8000003F8060001F80E0000F80E0000F80F0000F80F0000F00F8000F00FC001E00FE00
-1C00FF807800F3FFF000C07F800019207D9F20>I<001C0000001C0000001C0000001C0000001C
-0000003C0000003C0000003C0000007C0000007C000000FC000001FC000003FC000007FC00001F
-FFFE00FFFFFE00FFFFFE0003FC000003FC000003FC000003FC000003FC000003FC000003FC0000
-03FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC03
-8003FC038003FC038003FC038003FC038003FC038003FC038001FC038001FC070000FE0700007F
-0E00003FFC000007F000192E7FAD1F>I<01F80007E0FFF803FFE0FFF803FFE0FFF803FFE00FF8
-003FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007
-F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
-07F8001FE007F8001FE007F8001FE007F8001FE007F8003FE007F8003FE003F8007FE003F8007F
-E001FC00DFF000FE039FFF007FFF1FFF000FFC1FFF28207D9F2D>I<FFFF801FFCFFFF801FFCFF
-FF801FFC0FF80003C007F800038007FC00078003FC00070003FE000F0001FE000E0001FF000E00
-00FF001C0000FF001C00007F803800007F803800007FC07800003FC07000003FE0F000001FE0E0
-00001FF1E000000FF1C000000FF9C0000007FB80000007FB80000003FF00000003FF00000003FF
-00000001FE00000001FE00000000FC00000000FC00000000780000000078000026207E9F2B>I<
-FFFF1FFFE07FF8FFFF1FFFE07FF8FFFF1FFFE07FF80FF000FE0007800FF800FE00078007F800FE
-00070007F8007F00070003FC007F000E0003FC00FF800E0003FE00FF801E0001FE00FF801C0001
-FE01DFC01C0001FF01DFC03C0000FF03DFE0380000FF838FE07800007F838FE07000007F8707F0
-7000007FC707F0F000003FCF07F8E000003FCE03F8E000001FEE03F9C000001FFC01FDC000001F
-FC01FFC000000FFC01FF8000000FF800FF80000007F800FF00000007F0007F00000007F0007F00
-000003F0007E00000003E0003E00000001E0003C00000001C0001C000035207E9F3A>I<7FFF80
-7FFC7FFF807FFC7FFF807FFC03FE000F0001FE001E0000FF003C0000FF807800007FC07800003F
-E0F000001FE1E000000FF3C000000FFF80000007FF00000003FE00000001FE00000000FF000000
-00FF80000000FFC0000001FFC0000003DFE00000078FF00000078FF800000F07FC00001E03FC00
-003C01FE00007800FF0000F000FF8000E0007FC001E0003FC0FFFC01FFFFFFFC01FFFFFFFC01FF
-FF28207F9F2B>I<FFFF801FFCFFFF801FFCFFFF801FFC0FF80003C007F800038007FC00078003
-FC00070003FE000F0001FE000E0001FF000E0000FF001C0000FF001C00007F803800007F803800
-007FC07800003FC07000003FE0F000001FE0E000001FF1E000000FF1C000000FF9C0000007FB80
-000007FB80000003FF00000003FF00000003FF00000001FE00000001FE00000000FC00000000FC
-000000007800000000780000000070000000007000000000F000000000E000000001E000007C01
-C00000FE03C00000FE03800000FE07800000FE0F000000FC1E000000787C0000003FF00000000F
-C0000000262E7E9F2B>I E /Fl 1 14 df<0001FE00000007FF8000001E01E000007800780000
-E0001C000180000600030000030006000001800C000000C00C000000C018000000603000000030
-30000000303000000030600000001860000000186000000018C00000000CC00000000CC0000000
-0CC00000000CC00000000CC00000000CC00000000CC00000000CC00000000C6000000018600000
-0018600000001830000000303000000030300000003018000000600C000000C00C000000C00600
-0001800300000300018000060000E0001C000078007800001E01E0000007FF80000001FE000026
-2B7DA02D>13 D E /Fm 46 122 df<3C007F00FF80FF80FFC0FFC0FFC07FC03EC000C000C00180
-018001800300030006000E001C00380030000A157B8813>44 D<1C007F007F00FF80FF80FF807F
-007F001C0009097B8813>46 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE
-0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
-0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
-0000FE007FFFFE7FFFFE7FFFFE17277BA622>49 D<00FF800007FFF0000FFFFC001E03FE003800
-FF807C003F80FE003FC0FF001FC0FF001FE0FF000FE0FF000FE07E000FE03C001FE000001FE000
-001FC000001FC000003F8000003F0000007E000000FC000000F8000001F0000003E00000078000
-000F0000001E0000003C00E0007000E000E000E001C001C0038001C0060001C00FFFFFC01FFFFF
-C03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC
-000F80FE001F007F003F807F003F803F803F803F803F803F801F803F801F003F8000007F000000
-7F0000007E000000FC000001F8000007F00000FFC00000FFC0000001F80000007E0000003F0000
-003F8000001FC000001FC000001FE000001FE03C001FE07E001FE0FF001FE0FF001FE0FF001FC0
-FF003FC0FE003F807C007F003F00FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E00
-00001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E00000E7E00000E7E
-00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E0007007E000E007E000E00
-7E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE0000
-00FE000000FE000000FE000000FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA6
-22>I<180003001F801F001FFFFE001FFFFC001FFFF8001FFFF0001FFFC0001FFF00001C000000
-1C0000001C0000001C0000001C0000001C0000001C0000001C7FC0001DFFF8001F80FC001E003F
-0008003F0000001F8000001FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE00
-1FE0FE001FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFFFC0003FFF00000
-FF80001B277DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07F
-FFFF807FFFFF0070000E0070000E0070001C00E0003800E0007000E000E0000001E0000001C000
-000380000007800000070000000F0000001F0000001E0000003E0000003E0000007E0000007C00
-00007C000000FC000000FC000000FC000000FC000001FC000001FC000001FC000001FC000001FC
-000001FC000001FC000000F80000007000001C297CA822>55 D<00000780000000000780000000
-000FC0000000000FC0000000000FC0000000001FE0000000001FE0000000003FF0000000003FF0
-000000003FF00000000077F80000000077F800000000F7FC00000000E3FC00000000E3FC000000
-01C1FE00000001C1FE00000003C1FF0000000380FF0000000380FF00000007007F80000007007F
-8000000F007FC000000E003FC000000E003FC000001C001FE000001C001FE000003FFFFFF00000
-3FFFFFF000003FFFFFF00000700007F80000700007F80000F00007FC0000E00003FC0000E00003
-FC0001C00001FE0001C00001FE0003C00001FF00FFFE003FFFFCFFFE003FFFFCFFFE003FFFFC2E
-297EA833>65 D<FFFFFFF800FFFFFFFF00FFFFFFFFC003F8001FE003F8000FF003F80007F803F8
-0003F803F80003FC03F80003FC03F80001FC03F80001FC03F80001FC03F80003FC03F80003F803
-F80003F803F80007F003F8000FF003F8001FC003F800FF8003FFFFFE0003FFFFFFC003F8000FF0
-03F80003F803F80001FC03F80001FE03F80000FE03F80000FE03F80000FF03F80000FF03F80000
-FF03F80000FF03F80000FF03F80000FF03F80000FE03F80001FE03F80003FC03F80007FC03F800
-1FF8FFFFFFFFE0FFFFFFFFC0FFFFFFFE0028297DA830>I<00007FE0030007FFFC07001FFFFF0F
-007FF00F9F00FF0001FF01FC0000FF03F800007F07F000003F0FE000001F1FC000001F1FC00000
-0F3F8000000F3F800000077F800000077F800000077F00000000FF00000000FF00000000FF0000
-0000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F000000007F80
-0000007F800000073F800000073F800000071FC00000071FC000000E0FE000000E07F000001C03
-F800003C01FC00007800FF0001F0007FF007C0001FFFFF800007FFFE0000007FF00028297CA831
->I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001F003FC
-0000F003FC00007003FC00007003FC00007003FC01C07803FC01C03803FC01C03803FC01C03803
-FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C000
-03FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC0000
-1C03FC00003C03FC00003803FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FFFFFF
-FFF0FFFFFFFFF0FFFFFFFFF027297EA82C>69 D<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003F
-C003FC000FE003FC0003E003FC0001E003FC0001E003FC0000E003FC0000E003FC0000E003FC00
-00F003FC01C07003FC01C07003FC01C07003FC01C00003FC03C00003FC03C00003FC0FC00003FF
-FFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C00003FC01C00003
-FC01C00003FC01C00003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
-03FC00000003FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC000024297EA82A>I<0000
-7FE003000007FFFC0700001FFFFF0F00007FF00F9F0000FF0001FF0001FC0000FF0003F800007F
-0007F000003F000FE000001F001FC000001F001FC000000F003F8000000F003F80000007007F80
-000007007F80000007007F0000000000FF0000000000FF0000000000FF0000000000FF00000000
-00FF0000000000FF0000000000FF0000000000FF0000000000FF0000FFFFF87F0000FFFFF87F80
-00FFFFF87F800000FF003F800000FF003F800000FF001FC00000FF001FC00000FF000FE00000FF
-0007F00000FF0003F80000FF0001FC0000FF0000FF0001FF00007FF007FF00001FFFFF9F000007
-FFFE0F0000007FF003002D297CA835>I<FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF03FC0000
-3FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003
-FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC0000
-3FC003FC00003FC003FFFFFFFFC003FFFFFFFFC003FFFFFFFFC003FC00003FC003FC00003FC003
-FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC0000
-3FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003
-FC00003FC003FC00003FC0FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF30297EA835>I<FFFFFC
-FFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
-01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
-01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFC
-FFFFFC16297FA819>I<FFFE0000003FFF80FFFE0000003FFF80FFFF0000007FFF8003FF000000
-7FE00003FF0000007FE00003BF800000EFE00003BF800000EFE000039FC00001CFE000039FC000
-01CFE000038FE000038FE000038FE000038FE000038FE000038FE0000387F000070FE0000387F0
-00070FE0000383F8000E0FE0000383F8000E0FE0000381FC001C0FE0000381FC001C0FE0000381
-FC001C0FE0000380FE00380FE0000380FE00380FE00003807F00700FE00003807F00700FE00003
-803F80E00FE00003803F80E00FE00003803F80E00FE00003801FC1C00FE00003801FC1C00FE000
-03800FE3800FE00003800FE3800FE000038007F7000FE000038007F7000FE000038007F7000FE0
-00038003FE000FE000038003FE000FE000038001FC000FE000038001FC000FE000038000F8000F
-E000FFFE00F803FFFF80FFFE00F803FFFF80FFFE007003FFFF8039297DA840>77
-D<FFFC00007FFFFFFE00007FFFFFFF00007FFF03FF800001C003FFC00001C003BFE00001C0039F
-E00001C0039FF00001C0038FF80001C00387FC0001C00383FE0001C00381FF0001C00380FF8001
-C003807F8001C003807FC001C003803FE001C003801FF001C003800FF801C0038007FC01C00380
-03FC01C0038003FE01C0038001FF01C0038000FF81C00380007FC1C00380003FE1C00380001FF1
-C00380000FF1C00380000FF9C003800007FDC003800003FFC003800001FFC003800000FFC00380
-00007FC0038000007FC0038000003FC0038000001FC0038000000FC00380000007C0FFFE000003
-C0FFFE000001C0FFFE000001C030297EA835>I<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003F
-E003FC0007F003FC0003F803FC0003FC03FC0001FC03FC0001FE03FC0001FE03FC0001FE03FC00
-01FE03FC0001FE03FC0001FE03FC0001FE03FC0001FC03FC0003FC03FC0003F803FC0007F003FC
-003FE003FFFFFF8003FFFFFE0003FC00000003FC00000003FC00000003FC00000003FC00000003
-FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
-03FC00000003FC00000003FC000000FFFFF00000FFFFF00000FFFFF0000027297EA82E>80
-D<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC003FE00003FC000FF00003FC0007F80003FC
-0003FC0003FC0001FC0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FE
-0003FC0001FE0003FC0001FC0003FC0003F80003FC0007F80003FC000FE00003FC003FC00003FF
-FFFE000003FFFFFE000003FC00FF800003FC003FC00003FC001FE00003FC000FF00003FC0007F8
-0003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC
-0007F80003FC0007F80003FC0007F80E03FC0007F80E03FC0003F80E03FC0001FC1CFFFFF000FE
-1CFFFFF0007FF8FFFFF0000FE02F297EA832>82 D<00FF00C003FFE1C00FFFF9C01F80FFC03F00
-3FC03E000FC07C0007C07C0007C0FC0003C0FC0003C0FC0001C0FE0001C0FE0001C0FF000000FF
-C000007FFC00007FFFE0003FFFF8001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFFE0
-00007FE000001FF000000FF0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F00003
-E0F80007E0FC0007C0FF000F80FFE01F80E3FFFF00E1FFFC00C01FF0001C297CA825>I<FFFFF0
-00FFFEFFFFF000FFFEFFFFF000FFFE03FC0000038003FC0000038003FC0000038003FC00000380
-03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00
-00038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00000380
-03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00
-00038003FC0000038003FC0000038003FC0000038003FC0000038001FC0000070001FE00000700
-00FE00000E00007F00000E00003F00003C00001FC0007800000FF003F0000007FFFFE0000000FF
-FF800000001FFC00002F297EA834>85 D<FFFFF0007FFFFFFFF0007FFFFFFFF0007FFF03FE0000
-01C001FE0000038001FE0000038000FF0000070000FF0000070000FF80000F00007F80000E0000
-7FC0000E00003FC0001C00003FE0001C00001FE0003800001FE0003800001FF0007800000FF000
-7000000FF800F0000007F800E0000007FC00E0000003FC01C0000003FC01C0000003FE03C00000
-01FE0380000001FF0780000000FF0700000000FF87000000007F8E000000007F8E000000007FDE
-000000003FDC000000003FFC000000001FF8000000001FF8000000000FF0000000000FF0000000
-000FF00000000007E00000000007E00000000003C00000000003C0000030297FA833>I<FFFFE0
-FFFFE01FFFC0FFFFE0FFFFE01FFFC0FFFFE0FFFFE01FFFC003FC0003FC0000700003FC0003FC00
-00700003FE0003FE0000F00001FE0001FE0000E00001FE0001FE0000E00001FF0001FF0001E000
-00FF0001FF0001C00000FF0001FF0001C000007F8003FF80038000007F8003FF80038000007FC0
-07FFC0078000003FC0073FC0070000003FC0073FC0070000003FE00F3FE00F0000001FE00E1FE0
-0E0000001FE00E1FE00E0000000FF01C0FF01C0000000FF01C0FF01C0000000FF01C0FF81C0000
-0007F83807F83800000007F83807F83800000007FC7807FC7800000003FC7003FC7000000003FC
-7003FC7000000003FEF003FEF000000001FEE001FEE000000001FEE001FEE000000000FFC000FF
-C000000000FFC000FFC000000000FFC000FFC0000000007F80007F80000000007F80007F800000
-00007F80007F80000000003F00003F00000000003F00003F00000000003F00003F00000000001E
-00001E00000000001E00001E00000042297FA845>I<03FF80000FFFF0001F01FC003F80FE003F
-807F003F803F003F803F801F003F8000003F8000003F8000003F8000003F80003FFF8001FC3F80
-0FE03F801F803F803F003F807E003F80FC003F80FC003F80FC003F80FC003F80FC005F807E00DF
-803F839FFC1FFE0FFC03F803FC1E1B7E9A21>97 D<FFE00000FFE00000FFE000000FE000000FE0
-00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000F
-E000000FE1FE000FE7FF800FFE07E00FF803F00FF001F80FE000FC0FE000FC0FE0007E0FE0007E
-0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007E0FE000
-7E0FE0007E0FE000FC0FE000FC0FF001F80FF803F00F9C0FE00F0FFF800E01FC00202A7EA925>
-I<003FF00001FFFC0003F03E000FC07F001F807F003F007F003F007F007F003E007E0000007E00
-0000FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000007E0000007F
-0000003F0003803F8003801F8007000FE00E0003F83C0001FFF800003FC000191B7E9A1E>I<00
-007FF000007FF000007FF0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
-000007F0000007F0000007F0000007F0000007F0003F87F001FFF7F007F03FF00FC00FF01F8007
-F03F0007F03F0007F07E0007F07E0007F07E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE00
-07F0FE0007F0FE0007F0FE0007F07E0007F07E0007F03F0007F03F0007F01F800FF00FC01FF007
-E07FFF01FFE7FF007F87FF202A7EA925>I<003FC00001FFF00003E07C000F803E001F801F001F
-001F003F000F807E000F807E000FC07E000FC0FE0007C0FE0007C0FFFFFFC0FFFFFFC0FE000000
-FE000000FE0000007E0000007E0000007F0000003F0001C01F0001C00F80038007C0070003F01E
-0000FFFC00003FE0001A1B7E9A1F>I<0007F8003FFC007E3E01FC7F03F87F03F07F07F07F07F0
-3E07F00007F00007F00007F00007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F0
-0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
-0007F00007F00007F00007F00007F0007FFF807FFF807FFF80182A7EA915>I<007F80F001FFE3
-F807C0FE1C0F807C7C1F003E7C1F003E103F003F003F003F003F003F003F003F003F003F003F00
-3F001F003E001F003E000F807C0007C0F80005FFE0000C7F8000180000001C0000001C0000001E
-0000001FFFF8001FFFFF000FFFFFC007FFFFE003FFFFF00FFFFFF03E0007F07C0001F8F80000F8
-F80000F8F80000F8F80000F87C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E
-9A22>I<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE000
-000FE000000FE000000FE000000FE000000FE000000FE000000FE07E000FE1FF800FE30FC00FE4
-0FE00FE807E00FF807F00FF007F00FF007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0
-0FE007F0FFFE3FFFFFFE3FFFFFFE3FFF202A7DA925>I<07000F801FC03FE03FE03FE01FC00F80
-07000000000000000000000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00F
-E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7EAA12>I<FF
-E0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
-0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FF
-FEFFFEFFFE0F2A7EA912>108 D<FFC07F001FC000FFC1FFC07FF000FFC307E0C1F8000FC407F1
-01FC000FC803F200FC000FD803FE00FE000FD003FC00FE000FD003FC00FE000FE003F800FE000F
-E003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800
-FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE0
-03F800FE000FE003F800FE000FE003F800FE000FE003F800FE00FFFE3FFF8FFFE0FFFE3FFF8FFF
-E0FFFE3FFF8FFFE0331B7D9A38>I<FFC07E00FFC1FF80FFC30FC00FC40FE00FC807E00FD807F0
-0FD007F00FD007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007
-F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE
-3FFFFFFE3FFF201B7D9A25>I<003FE00001FFFC0003F07E000FC01F801F800FC03F0007E03F00
-07E07E0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE
-0003F8FE0003F87E0003F07E0003F03F0007E03F0007E01F800FC00FC01F8007F07F0001FFFC00
-003FE0001D1B7E9A22>I<FFE1FE00FFE7FF80FFFE0FE00FF803F00FF001F80FE001FC0FE000FC
-0FE000FE0FE000FE0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE000
-7F0FE0007E0FE000FE0FE000FE0FE000FC0FE001FC0FF001F80FF803F00FFC0FE00FEFFF800FE1
-FC000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000FF
-FE0000FFFE0000FFFE000020277E9A25>I<FFC3E0FFC7F8FFCC7C0FD8FE0FD0FE0FD0FE0FF0FE
-0FE07C0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
-0FE0000FE0000FE0000FE000FFFF00FFFF00FFFF00171B7E9A1B>114 D<03FE300FFFF03E03F0
-7800F07000F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF8
-0007FC0000FCE0007CE0003CF0003CF00038F80038FC0070FF01E0E7FFC0C1FF00161B7E9A1B>
-I<00700000700000700000700000F00000F00000F00001F00003F00003F00007F0001FFFE0FFFF
-E0FFFFE007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
-0007F00007F07007F07007F07007F07007F07007F07007F07003F0E001F8C000FFC0003F001426
-7FA51A>I<FFE07FF0FFE07FF0FFE07FF00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
-07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE00FF00FE00FF007E017F003F067FF01FFC7FF007F87FF201B7D9A
-25>I<FFFE07FFFFFE07FFFFFE07FF07F000E007F000E007F801E003F801C003F801C001FC0380
-01FC038001FE078000FE070000FF0F00007F0E00007F0E00003F9C00003F9C00003FFC00001FF8
-00001FF800000FF000000FF000000FF0000007E0000007E0000003C0000003C000201B7F9A23>
-I<FFFC7FFC1FFCFFFC7FFC1FFCFFFC7FFC1FFC0FE00FE001C007F007E0038007F007E0038007F8
-07F0078003F807F0070003F807F8070001FC0FF80E0001FC0FF80E0001FE1FFC1E0000FE1CFC1C
-0000FE1CFE1C0000FF387E3C00007F387E3800007F787F3800003FF03F7000003FF03F7000003F
-E01FF000001FE01FE000001FE01FE000000FC00FC000000FC00FC000000FC00FC0000007800780
-000007800780002E1B7F9A31>I<FFFC1FFEFFFC1FFEFFFC1FFE07F0078003F8070001FC0F0001
-FE1E0000FE3C00007F7800003FF800003FF000001FE000000FE0000007F0000007F800000FF800
-001FFC00003DFE000038FF0000787F0000F03F8001E03FC003C01FE003800FE0FFF03FFFFFF03F
-FFFFF03FFF201B7F9A23>I<FFFE07FFFFFE07FFFFFE07FF07F000E007F000E007F801E003F801
-C003F801C001FC038001FC038001FE078000FE070000FF0F00007F0E00007F0E00003F9C00003F
-9C00003FFC00001FF800001FF800000FF000000FF0000007F0000007E0000007E0000003C00000
-03C000000380000003800000078000380700007C070000FE0E0000FE0E0000FE1C0000FE380000
-7C7000003FE000000F80000020277F9A23>I E /Fn 75 127 df<70F8F8F8F8F8F8F8F8F8F8F8
-F8F8F8F8F870000000000070F8F8F870051C779B18>33 D<4010E038F078E038E038E038E038E0
-38E038E038E038E038E03860300D0E7B9C18>I<030600078F00078F00078F00078F00078F0007
-8F007FFFC0FFFFE0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FF
-FFE07FFFC01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>I<00C00001C000
-01C00001C00003F0000FFC003FFE007DCF0071C700E1C380E1C780E1C780E1C780F1C00079C000
-3DC0001FE0000FF80003FC0001DE0001CF0001C70061C380F1C380F1C380E1C380E1C70071C700
-79DE003FFE001FF80007E00001C00001C00001C00000C00011247D9F18>I<3803007C07807C07
-80EE0F80EE0F00EE0F00EE1F00EE1E00EE1E00EE3E007C3C007C3C00387C0000780000780000F8
-0000F00001F00001E00001E00003E00003C00003C00007C0000783800787C00F87C00F0EE00F0E
-E01F0EE01E0EE01E0EE03E0EE03C07C03C07C018038013247E9F18>I<01C00007E0000FF0000E
-70001C38001C38001C38001C38001C73F01C73F01CE3F00FE3800FC7000F87000F07001F0E003F
-0E007B8E0073DC00E1DC00E0F800E0F800E07070E0787070FC707FFFE03FCFE00F03C0141C7F9B
-18>I<387C7C7E3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E003C007800F001E001C00
-380038007000700070007000E000E000E000E000E000E000E000E0007000700070007000380038
-001C001E000F00078003C001F000F000700C24799F18>I<6000F00078003C001E000F00078003
-8001C001C000E000E000E000E00070007000700070007000700070007000E000E000E000E001C0
-01C0038007800F001E003C007800F00060000C247C9F18>I<01C00001C00001C00001C000C1C1
-80F1C780F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C0
-0001C00001C00011147D9718>I<00600000F00000F00000F00000F00000F00000F00000F0007F
-FFC0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F00000F00000F00000600013147E97
-18>I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>
-I<3078FCFC78300606778518>I<000300000780000780000F80000F00001F00001E00001E0000
-3E00003C00007C0000780000780000F80000F00001F00001E00003E00003C00003C00007C00007
-80000F80000F00000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F0
-000060000011247D9F18>I<01F00007FC000FFE001F1F001C07003803807803C07001C07001C0
-E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C0
-3803801C07001F1F000FFE0007FC0001F000131C7E9B18>I<01800380038007800F803F80FF80
-FB80438003800380038003800380038003800380038003800380038003800380038003807FFCFF
-FE7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000
-E00000E00001C00001C00003C0000780000F00001E00003C0000780000F00001E00007C0000F80
-001E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<001F00003F0000770000770000E70001
-E70001C7000387000787000707000E07001E07003C0700380700780700F00700FFFFF8FFFFF8FF
-FFF8000700000700000700000700000700000700007FF000FFF8007FF0151C7F9B18>52
-D<007E0001FF0007FF800F83C01E03C01C03C0380180380000700000700000E1F800E7FE00FFFF
-00FE0780F803C0F001C0F000E0E000E0F000E07000E07000E07000E03801C03C03C01E07800FFF
-0007FE0001F800131C7E9B18>54 D<3078FCFC783000000000000000003078FCFC783006147793
-18>58 D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>I<0003
-00000780001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000FC00007E00
-003F00001FC00007E00003F00001FC00007E00003F00001F8000078000030011187D9918>I<7F
-FFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E93
-18>I<600000F00000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F80
-001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000F0000060000011187D
-9918>I<0FF0003FFC007FFF00700F00F00380F00380600780000F00003E00007C0001F00001E0
-0003C00003C00003C00003C00003C00003800000000000000000000000000000000003800007C0
-0007C00007C000038000111C7D9B18>I<00700000F80000F80000D80000D80001DC0001DC0001
-DC00018C00038E00038E00038E00038E000306000707000707000707000707000FFF800FFF800F
-FF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65
-D<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00E01C00F01C00701C00701C00
-701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F807FFF
-00FFFE007FF800141C7F9B18>68 D<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C0000
-1C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E001C0E001C00001C00001C0038
-1C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE01C00
-E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C001FFC001FFC001FFC001C1C001C1C
-001C1C001C00001C00001C00001C00001C00001C00001C0000FFC000FFC000FFC000131C7E9B18
->I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01F
-FFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F
-07F0FF8FF87F07F0151C7F9B18>72 D<7FFF00FFFF807FFF0001C00001C00001C00001C00001C0
-0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
-0001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18>I<7FE000FFE0007FE0000E
-00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
-00000E00000E00000E00000E00700E00700E00700E00700E00707FFFF0FFFFF07FFFF0141C7F9B
-18>76 D<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1
-C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0D
-C07F07C0FF87C07F03C0151C7F9B18>78 D<0FF8003FFE007FFF00780F00700700F00780E00380
-E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380
-E00380E00380F00780700700780F007FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFF
-C01C03C01C01E01C00E01C00701C00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF
-801FFE001C00001C00001C00001C00001C00001C00001C00001C0000FF8000FF8000FF8000141C
-7F9B18>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C
-0F801FFF001FFE001FFE001C0F001C07001C03801C03801C03801C03801C03801C039C1C039C1C
-039C7F01F8FF81F87F00F0161C7F9B18>82 D<03F3801FFF803FFF807C0F80700780E00380E003
-80E00380E000007000007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000
-E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FF
-FFF8E07038E07038E07038E0703800700000700000700000700000700000700000700000700000
-700000700000700000700000700000700000700000700000700000700007FF0007FF0007FF0015
-1C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C00701C00701C00701C0070
-1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00700E00E00F01E0
-0783C003FF8001FF00007C00171C809B18>I<FF07F8FF07F8FF07F81C01C01E03C00E03800F07
-80070700070700038E00038E0001DC0001DC0001DC0000F80000F8000070000070000070000070
-0000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>89
-D<FFF8FFF8FFF8E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
-E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FFF80D24779F18
->91 D<600000F00000F00000F800007800007C00003C00003C00003E00001E00001F00000F0000
-0F00000F800007800007C00003C00003C00003E00001E00001F00000F00000F800007800007800
-007C00003C00003E00001E00001E00001F00000F00000F8000078000078000030011247D9F18>
-I<FFF8FFF8FFF80038003800380038003800380038003800380038003800380038003800380038
-00380038003800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F9F18
->I<018007C01FF07EFCF83EE00E0F067C9B18>I<7FFF00FFFF80FFFF807FFF0011047D7F18>I<
-061E3E387070E0E0E0F8FC7C7C38070E789E18>I<1FE0003FF8007FFC00781E00300E00000700
-00070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F003FFFF01FFBF0
-07E1F014147D9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF
-800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F00700F00
-700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E078038030070
-0000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C01FFF8007
-FF0001FC0012147D9318>I<001F80003F80001F8000038000038000038000038000038003E380
-0FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380E00380E00380700780
-700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F003807
-80700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF
-8007FF0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007F
-FFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
-C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFFF81E1E30
-1C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0003800001C0000
-1FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800F07E03F01FFFC00FFF80
-01FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF
-800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
-E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C00003800000
-00000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001
-C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<
-7FE000FFE0007FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
-00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0007FFFC0
-FFFFE07FFFC0131C7E9B18>108 D<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C00
-1C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C
-001C1C1C007F1F1F00FFBFBF807F1F1F001914819318>I<7E3E00FEFF807FFFC00FC1C00F80E0
-0F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FC
-FFE7FE7FC3FC1714809318>I<01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000
-E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318
->I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E
-00380F00700F00700F80E00FC1E00FFFC00EFF800E3E000E00000E00000E00000E00000E00000E
-00000E00007FC000FFE0007FC000151E809318>I<01E38007FB801FFF803E1F80380F80700780
-700780E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF800FFB80
-03E380000380000380000380000380000380000380000380003FF8003FF8003FF8151E7E9318>
-I<7F87E0FF9FF07FBFF803F87803F03003E00003C00003C0000380000380000380000380000380
-000380000380000380000380007FFE00FFFF007FFE0015147F9318>I<07F7003FFF007FFF0078
-0F00E00700E00700E007007C00007FE0001FFC0003FE00001F00600780E00380E00380F00380F8
-0F00FFFF00FFFC00E7F00011147D9318>I<0180000380000380000380000380007FFFC0FFFFC0
-FFFFC00380000380000380000380000380000380000380000380000380000380400380E00380E0
-0380E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00
-E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03FF
-FE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03800E03800E038007070007070007
-0700038E00038E00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318>I<
-FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C0
-0DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<7F8FF07F9FF07F8FF00707
-00078E00039E0001DC0001F80000F80000700000F00000F80001DC00039E00038E000707000F07
-807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E038007038007
-0700070700038700038600038E0001CE0001CE0000CC0000CC0000DC0000780000780000780000
-700000700000700000F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF0
-7FFFF07FFFF07001E07003C0700780000F00001E00003C0000F80001F00003C0000780000F0070
-1E00703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE000780000E0
-0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00001E0007FC000FF80
-00FF80007FC00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
-0000E000007800007FE0001FE00007E013247E9F18>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
-F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600424769F18>I<7C0000FF0000FFC00003C000
-00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000F000007FC0
-003FE0003FE0007FC000F00000E00000E00000E00000E00000E00000E00000E00000E00000E000
-00E00000E00003C000FFC000FF00007C000013247E9F18>I<060C1F1E3FBEFBF8F1F060C00F06
-7C9B18>I E /Fo 75 123 df<001F83E000F06E3001C078780380F8780300F030070070000700
-70000700700007007000070070000700700007007000FFFFFF8007007000070070000700700007
-007000070070000700700007007000070070000700700007007000070070000700700007007000
-07007000070070000700700007007000070070007FE3FF001D20809F1B>11
-D<003F0000E0C001C0C00381E00701E00701E0070000070000070000070000070000070000FFFF
-E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
-E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000E0E001C1E00381E007
-00E00700E00700E00700E00700E00700E00700E00700E0FFFFE00700E00700E00700E00700E007
-00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
-00E07FE7FE1720809F19>I<001F81F80000F04F040001C07C06000380F80F000300F00F000700
-F00F00070070000007007000000700700000070070000007007000000700700000FFFFFFFF0007
-007007000700700700070070070007007007000700700700070070070007007007000700700700
-070070070007007007000700700700070070070007007007000700700700070070070007007007
-00070070070007007007007FE3FE3FF02420809F26>I<7038F87CFC7EFC7E743A040204020402
-0804080410081008201040200F0E7E9F17>34 D<70F8FCFC74040404080810102040060E7C9F0D
->39 D<0020004000800100020006000C000C00180018003000300030007000600060006000E000
-E000E000E000E000E000E000E000E000E000E000E0006000600060007000300030003000180018
-000C000C000600020001000080004000200B2E7DA112>I<800040002000100008000C00060006
-000300030001800180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E0
-00E000E000C000C000C001C001800180018003000300060006000C00080010002000400080000B
-2E7DA112>I<70F8FCFC74040404080810102040060E7C840D>44 D<FFC0FFC00A027F8A0F>I<70
-F8F8F87005057C840D>I<03F0000E1C001C0E00180600380700700380700380700380700380F0
-03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C070
-03807003807003807807803807001806001C0E000E1C0003F000121F7E9D17>48
-D<018003800F80F380038003800380038003800380038003800380038003800380038003800380
-03800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E0020
-0700400780800780F007C0F803C0F803C0F803C02007C00007C0000780000780000F00000E0000
-1C0000380000700000600000C0000180000300000600400C00401800401000803FFF807FFF80FF
-FF80121E7E9D17>I<03F0000C1C00100E00200F00780F80780780780780380F80000F80000F00
-000F00000E00001C0000380003F000003C00000E00000F000007800007800007C02007C0F807C0
-F807C0F807C0F00780400780400F00200E001C3C0003F000121F7E9D17>I<000600000600000E
-00000E00001E00002E00002E00004E00008E00008E00010E00020E00020E00040E00080E00080E
-00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E
-0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE00010000010000010000010000010
-000010000011F000161C00180E001007001007800003800003800003C00003C00003C07003C0F0
-03C0F003C0E00380400380400700200600100E000C380003E000121F7E9D17>I<007C00018200
-0701000E03800C07801C0780380300380000780000700000700000F1F000F21C00F40600F80700
-F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C0700380380380380700180700
-0C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF804001008002008002008004
-0000080000080000100000200000200000400000400000C00000C00001C0000180000380000380
-00038000038000078000078000078000078000078000078000078000030000121F7D9D17>I<03
-F0000C0C001006003003002001806001806001806001807001807803003E03003F06001FC8000F
-F00003F80007FC000C7E00103F00300F806003804001C0C001C0C000C0C000C0C000C0C0008060
-01802001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C00380600380700700700
-700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13C0
-03E3C0000380000380000380000700300700780600780E00700C002018001070000FC000121F7E
-9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F87000000000
-00000000000070F0F8F878080808101010202040051D7C930D>I<000100000003800000038000
-000380000007C0000007C0000007C0000009E0000009E0000009E0000010F0000010F0000010F0
-0000207800002078000020780000403C0000403C0000403C0000801E0000801E0000FFFE000100
-0F0001000F0001000F00020007800200078002000780040003C00E0003C01F0007E0FFC03FFE1F
-207F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F0007800F8007800F8007800F80
-07800F8007800F8007800F0007801F0007801E0007803C0007FFF00007803C0007801E0007800F
-0007800F8007800780078007C0078007C0078007C0078007C0078007C00780078007800F800780
-0F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC040007030C001C009C0038005C00700
-03C00E0001C01E0000C01C0000C03C0000C07C0000407C00004078000040F8000000F8000000F8
-000000F8000000F8000000F8000000F8000000F8000000F8000000780000007C0000407C000040
-3C0000401C0000401E0000800E000080070001000380020001C0040000703800000FC0001A217D
-9F21>I<FFFFE0000F803C0007801E000780070007800380078003C0078001E0078001E0078001
-F0078000F0078000F0078000F8078000F8078000F8078000F8078000F8078000F8078000F80780
-00F8078000F8078000F0078000F0078000F0078001E0078001E0078003C0078003800780070007
-800E000F803C00FFFFE0001D1F7E9E23>I<FFFFFF000F800F0007800300078003000780010007
-800180078000800780008007800080078080800780800007808000078080000781800007FF8000
-078180000780800007808000078080000780800007800020078000200780002007800040078000
-4007800040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E1F>I<FFFFFF000F800F
-000780030007800300078001000780018007800080078000800780008007800080078080000780
-800007808000078080000781800007FF8000078180000780800007808000078080000780800007
-800000078000000780000007800000078000000780000007800000078000000FC00000FFFE0000
-191F7E9E1E>I<000FE0200078186000E004E0038002E0070001E00F0000E01E0000601E000060
-3C0000603C0000207C00002078000020F8000000F8000000F8000000F8000000F8000000F80000
-00F8000000F8007FFCF80003E0780001E07C0001E03C0001E03C0001E01E0001E01E0001E00F00
-01E0070001E0038002E000E0046000781820000FE0001E217D9F24>I<FFF8FFF80F800F800780
-0F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007
-800F0007800F0007FFFF0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
-07800F0007800F0007800F0007800F0007800F0007800F0007800F000F800F80FFF8FFF81D1F7E
-9E22>I<FFFC0FC007800780078007800780078007800780078007800780078007800780078007
-80078007800780078007800780078007800780078007800FC0FFFC0E1F7F9E10>I<0FFFC0007C
-00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
-00003C00003C00003C00003C00003C00003C00003C00003C00203C00F83C00F83C00F83C00F038
-0040780040700030E0000F800012207E9E17>I<FFFE000FC00007800007800007800007800007
-800007800007800007800007800007800007800007800007800007800007800007800007800007
-800007800207800207800207800207800607800407800407800C07801C0F807CFFFFFC171F7E9E
-1C>76 D<FF80001FF80F80001F800780001F0005C0002F0005C0002F0005C0002F0004E0004F00
-04E0004F000470008F000470008F000470008F000438010F000438010F000438010F00041C020F
-00041C020F00041C020F00040E040F00040E040F00040E040F000407080F000407080F00040708
-0F000403900F000403900F000401E00F000401E00F000401E00F000E00C00F001F00C01F80FFE0
-C1FFF8251F7E9E2A>I<FF803FF807C007C007C0038005E0010005E0010004F001000478010004
-780100043C0100043C0100041E0100040F0100040F010004078100040781000403C1000401E100
-0401E1000400F1000400F1000400790004003D0004003D0004001F0004001F0004000F00040007
-00040007000E0003001F000300FFE001001D1F7E9E22>I<001F800000F0F00001C0380007801E
-000F000F000E0007001E0007803C0003C03C0003C07C0003E0780001E0780001E0F80001F0F800
-01F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C
-0003E03C0003C03C0003C01E0007800E0007000F000F0007801E0001C0380000F0F000001F8000
-1C217D9F23>I<FFFFE0000F80780007801C0007801E0007800F0007800F8007800F8007800F80
-07800F8007800F8007800F8007800F0007801E0007801C000780780007FFE00007800000078000
-000780000007800000078000000780000007800000078000000780000007800000078000000780
-0000078000000FC00000FFFC0000191F7E9E1F>I<001F800000F0F00001C0380007801E000F00
-0F000E0007001E0007803C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F8
-0001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E0780001E07C0003E0
-3C0003C03C0F03C01E1087800E2047000F204F0007A03E0001E0380000F0F010001FB010000030
-10000038300000387000003FF000001FE000001FE000000FC0000007801C297D9F23>I<FFFF80
-000F80F0000780780007803C0007801E0007801E0007801F0007801F0007801F0007801F000780
-1E0007801E0007803C00078078000780F00007FF80000781C0000780E0000780F0000780700007
-807800078078000780780007807C0007807C0007807C0007807C0407807E0407803E040FC01E08
-FFFC0F10000003E01E207E9E21>I<07E0800C1980100780300380600180600180E00180E00080
-E00080E00080F00000F000007800007F00003FF0001FFC000FFE0003FF00001F800007800003C0
-0003C00001C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F80012217D
-9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F0010800F00
-10800F0010000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
-0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
-0F0000001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C007800380078001000780010007
-800100078001000780010007800100078001000780010007800100078001000780010007800100
-078001000780010007800100078001000780010007800100078001000780010007800100038002
-000380020001C0020001C0040000E008000070180000382000000FC0001D207E9E22>I<FFF003
-FE1F8000F80F0000600F800060078000400780004003C0008003C0008003C0008001E0010001E0
-010001F0010000F0020000F0020000F806000078040000780400003C0800003C0800003C080000
-1E1000001E1000001F3000000F2000000F20000007C0000007C0000007C0000003800000038000
-00038000000100001F207F9E22>I<FFF07FF81FF01F800FC007C00F00078003800F0007800100
-0F0007C00100078007C00200078007C00200078007C0020003C009E0040003C009E0040003C009
-E0040003E010F00C0001E010F0080001E010F0080001F02078080000F02078100000F020781000
-00F0403C10000078403C20000078403C20000078C03E2000003C801E4000003C801E4000003C80
-1E4000001F000F8000001F000F8000001F000F8000001E00078000000E00070000000E00070000
-000C000300000004000200002C207F9E2F>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
-C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>91
-D<080410082010201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>I<FEFE06
-060606060606060606060606060606060606060606060606060606060606060606060606060606
-06FEFE072D7FA10D>I<081020204040808080B8FCFC7C38060E7D9F0D>96
-D<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E00780E
-00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>I<0E0000FE00000E00000E
-00000E00000E00000E00000E00000E00000E00000E00000E00000E3E000EC3800F01C00F00E00E
-00E00E00700E00700E00780E00780E00780E00780E00780E00780E00700E00700E00E00F00E00D
-01C00CC300083E0015207F9F19>I<03F80E0C1C1E381E380C70007000F000F000F000F000F000
-F00070007000380138011C020E0C03F010147E9314>I<000380003F8000038000038000038000
-038000038000038000038000038000038000038003E380061B801C078038038038038070038070
-0380F00380F00380F00380F00380F00380F003807003807003803803803807801C07800E1B8003
-E3F815207E9F19>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80
-F00000F00000F000007000007000003800801800800C010007060001F80011147F9314>I<007C
-00C6018F038F07060700070007000700070007000700FFF0070007000700070007000700070007
-0007000700070007000700070007000700070007007FF01020809F0E>I<0000E003E3300E3C30
-1C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E380033E000200000200000
-3000003000003FFE001FFF800FFFC03001E0600070C00030C00030C00030C000306000603000C0
-1C038003FC00141F7F9417>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00
-000E00000E00000E00000E3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01
-C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C
-003E003E003E001C000000000000000000000000000E007E000E000E000E000E000E000E000E00
-0E000E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E0
-000000000000000000000000007007F000F0007000700070007000700070007000700070007000
-7000700070007000700070007000700070007000706070F060F0C061803F000C28829E0E>I<0E
-0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF00E
-03C00E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E000E0E000E
-07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E000E000E000E
-000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
-0E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E81C81C000F00F00E000F00
-F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E
-00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00FFE7FE7FE0
-23147F9326>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01
-C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F80007
-0E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E070
-00E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E0
-0E00F00E00700E00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C0
-0EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319>
-I<03E0800619801C05803C0780380380780380700380F00380F00380F00380F00380F00380F003
-807003807803803803803807801C0B800E138003E3800003800003800003800003800003800003
-80000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E000E000E000E000E00
-0E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030704030C010C010C010E000
-78007F803FE00FF00070803880188018C018C018E030D0608F800D147E9312>I<020002000200
-060006000E000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E080E080E
-080E080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C0
-0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC
-16147F9319>I<FF83F81E01E01C00C00E00800E00800E00800701000701000382000382000382
-0001C40001C40001EC0000E80000E80000700000700000700000200015147F9318>I<FF9FE1FC
-3C0780701C0300601C0380200E0380400E0380400E03C0400707C0800704C0800704E080038861
-000388710003C8730001D0320001D03A0000F03C0000E01C0000E01C0000601800004008001E14
-7F9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800003C0000
-7C00004E000087000107000303800201C00601E01E01E0FF07FE1714809318>I<FF83F81E01E0
-1C00C00E00800E00800E008007010007010003820003820003820001C40001C40001EC0000E800
-00E800007000007000007000002000002000004000004000004000F08000F08000F10000620000
-3C0000151D7F9318>I<3FFF380E200E201C40384078407000E001E001C00380078007010E011E
-011C0338027006700EFFFE10147F9314>I E /Fp 13 122 df<0000001FFC0000C000000003FF
-FFC001C00000001FFFFFF003C00000007FFFFFFC07C0000001FFFC00FE0FC0000007FFC0001F9F
-C000000FFE000007FFC000003FF8000003FFC000007FF0000000FFC00000FFE00000007FC00001
-FFC00000007FC00001FF800000003FC00003FF000000001FC00007FE000000001FC0000FFE0000
-00000FC0000FFC000000000FC0001FFC0000000007C0001FFC0000000007C0003FF80000000007
-C0003FF80000000003C0003FF80000000003C0007FF80000000003C0007FF80000000003C0007F
-F0000000000000007FF000000000000000FFF000000000000000FFF000000000000000FFF00000
-0000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF00000000000
-0000FFF000000000000000FFF000000000000000FFF000000000000000FFF000001FFFFFFF807F
-F000001FFFFFFF807FF000001FFFFFFF807FF800001FFFFFFF807FF800000001FFC0003FF80000
-0001FFC0003FF800000001FFC0003FF800000001FFC0001FFC00000001FFC0001FFC00000001FF
-C0000FFE00000001FFC0000FFE00000001FFC00007FF00000001FFC00003FF00000001FFC00001
-FF80000001FFC00001FFC0000001FFC00000FFE0000001FFC000007FF0000003FFC000003FFC00
-0003FFC000000FFF000007FFC0000007FFC0001FBFC0000001FFFC00FF1FC00000007FFFFFFE0F
-C00000001FFFFFF803C000000003FFFFE000C0000000001FFE00000000413D7BBB4C>71
-D<FFFFFFF803FFFFFFE0FFFFFFF803FFFFFFE0FFFFFFF803FFFFFFE0FFFFFFF803FFFFFFE0007F
-F0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF00000
-01FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC0
-00007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007F
-F0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF00000
-01FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC0
-00007FFFFFFFFFFFC000007FFFFFFFFFFFC000007FFFFFFFFFFFC000007FFFFFFFFFFFC000007F
-F0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF00000
-01FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC0
-00007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007F
-F0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF00000
-01FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC0
-00007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000FFFFFFF803FFFFFFE0FFFF
-FFF803FFFFFFE0FFFFFFF803FFFFFFE0FFFFFFF803FFFFFFE0433B7CBA4C>I<FFFFFFFE000000
-FFFFFFFE000000FFFFFFFE000000FFFFFFFE000000007FF000000000007FF000000000007FF000
-000000007FF000000000007FF000000000007FF000000000007FF000000000007FF00000000000
-7FF000000000007FF000000000007FF000000000007FF000000000007FF000000000007FF00000
-0000007FF000000000007FF000000000007FF000000000007FF000000000007FF000000000007F
-F000000000007FF000000000007FF000000000007FF000000000007FF000000000007FF0000000
-00007FF000000000007FF000000000007FF000000000007FF000000000007FF000000000007FF0
-00000000007FF000000780007FF000000780007FF000000780007FF000000780007FF000000780
-007FF000000F80007FF000000F00007FF000000F00007FF000000F00007FF000001F00007FF000
-001F00007FF000001F00007FF000003F00007FF000003F00007FF000007F00007FF00000FF0000
-7FF00001FF00007FF00003FF00007FF0000FFE00007FF0007FFE00FFFFFFFFFFFE00FFFFFFFFFF
-FE00FFFFFFFFFFFE00FFFFFFFFFFFE00313B7CBA3A>76 D<FFFFF0000007FFFFE0FFFFF8000007
-FFFFE0FFFFFC000007FFFFE0FFFFFE000007FFFFE0007FFE00000007E000007FFF00000003C000
-007FFF80000003C000007BFFC0000003C000007BFFE0000003C0000079FFE0000003C0000078FF
-F0000003C00000787FF8000003C00000783FFC000003C00000783FFE000003C00000781FFE0000
-03C00000780FFF000003C000007807FF800003C000007803FFC00003C000007803FFE00003C000
-007801FFE00003C000007800FFF00003C0000078007FF80003C0000078003FFC0003C000007800
-3FFE0003C0000078001FFF0003C0000078000FFF0003C00000780007FF8003C00000780003FFC0
-03C00000780003FFE003C00000780001FFF003C00000780000FFF003C000007800007FF803C000
-007800003FFC03C000007800003FFE03C000007800001FFF03C000007800000FFF03C000007800
-0007FF83C0000078000003FFC3C0000078000003FFE3C0000078000001FFF3C0000078000000FF
-F3C00000780000007FFBC00000780000003FFFC00000780000003FFFC00000780000001FFFC000
-00780000000FFFC000007800000007FFC000007800000003FFC000007800000003FFC000007800
-000001FFC000007800000000FFC0000078000000007FC0000078000000003FC000007800000000
-3FC00000FC000000001FC000FFFFFC0000000FC000FFFFFC00000007C000FFFFFC00000003C000
-FFFFFC00000003C000433B7CBA4C>78 D<FFFFFFF8001FFFFF80FFFFFFF8001FFFFF80FFFFFFF8
-001FFFFF80FFFFFFF8001FFFFF80007FF00000001F8000007FF00000000F0000007FF00000000F
-0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F000000
-7FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF000
-00000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F
-0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F000000
-7FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF000
-00000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F
-0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F000000
-7FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF000
-00000F0000007FF00000000F0000007FF00000000F0000003FF00000001E0000003FF00000001E
-0000003FF80000001E0000001FF80000003C0000001FF80000003C0000000FFC00000078000000
-07FC000000F800000007FE000001F000000003FF000003F000000001FF800007E000000000FFE0
-001FC0000000003FFC01FF80000000001FFFFFFE000000000007FFFFF8000000000000FFFFE000
-00000000000FFE00000000413C7CBA4A>85 D<003FFE00000001FFFFE0000007FFFFF800000FE0
-07FC00000FF001FE00001FF800FF00001FF8007F80001FF8007FC0001FF8003FC0000FF0003FE0
-0007E0003FE00003C0003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000
-FFFFE000001FFFFFE000007FF83FE00003FF803FE00007FC003FE0000FF0003FE0001FE0003FE0
-003FE0003FE0007FC0003FE0007FC0003FE000FF80003FE000FF80003FE000FF80003FE000FF80
-003FE000FF80007FE0007FC0007FE0007FC000DFE0003FE0039FF0001FF80F0FFFE007FFFE0FFF
-E001FFF807FFE0003FE000FFE02B267DA52F>97 D<00FE00000000FFFE00000000FFFE00000000
-FFFE00000000FFFE0000000007FE0000000003FE0000000003FE0000000003FE0000000003FE00
-00000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE00000000
-03FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE01
-FF000003FE1FFFF00003FE7FFFFC0003FEFC03FE0003FFF000FF0003FFC0003F8003FF00001FC0
-03FE00001FE003FE00000FF003FE00000FF803FE00000FF803FE000007FC03FE000007FC03FE00
-0007FC03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE
-03FE000007FE03FE000007FE03FE000007FE03FE000007FC03FE000007FC03FE000007FC03FE00
-000FFC03FE00000FF803FE00000FF003FE00001FF003FF00001FE003FF80003FC003FFC0007F80
-03F9E000FF0003F0FC07FE0003F07FFFF80003E01FFFE00003C003FE00002F3C7DBB36>I<01E0
-0007F8000FFC000FFC001FFE001FFE001FFE001FFE000FFC000FFC0007F80001E0000000000000
-0000000000000000000000000000000000000000000000000000000000FE00FFFE00FFFE00FFFE
-00FFFE0007FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE00FFFFF0FFFFF0FFFFF0FFFFF0143D7DBC1A>105
-D<0001FFC00000000FFFF80000007FFFFF000000FF80FF800003FE003FE00007F8000FF0000FF0
-0007F8000FF00007F8001FE00003FC003FE00003FE003FE00003FE007FC00001FF007FC00001FF
-007FC00001FF007FC00001FF00FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC0
-0001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF807FC00001FF007FC00001FF
-007FC00001FF003FE00003FE003FE00003FE001FE00003FC001FF00007FC000FF00007F80007F8
-000FF00003FE003FE00000FF80FF8000007FFFFF0000000FFFF800000001FFC0000029267DA530
->111 D<01FC03F000FFFC0FFC00FFFC1FFF00FFFC3C3F80FFFC707F8007FCE0FFC003FCC0FFC0
-03FD80FFC003FD80FFC003FF807F8003FF003F0003FF001E0003FF00000003FE00000003FE0000
-0003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00
-000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE
-00000003FE00000003FE00000003FE000000FFFFFC0000FFFFFC0000FFFFFC0000FFFFFC000022
-267DA528>114 D<003FF07003FFFEF007FFFFF01FC01FF03F0003F03E0001F07C0001F07C0000
-F0FC0000F0FC0000F0FE0000F0FF000000FFC00000FFFC00007FFFF0003FFFFE003FFFFF801FFF
-FFC00FFFFFE003FFFFF000FFFFF8001FFFFC00007FFC000007FE700001FEF00000FEF000007EF8
-00007EF800007EFC00007EFC00007CFE0000FCFF0000F8FF8001F0FFF00FE0F9FFFFC0F07FFF00
-C01FF8001F267DA526>I<000F0000000F0000000F0000000F0000000F0000001F0000001F0000
-001F0000001F0000003F0000003F0000007F0000007F000000FF000001FF000003FF000007FF00
-001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF000001FF000001FF000001FF000001FF000001FF
-000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001
-FF000001FF000001FF000001FF000001FF003C01FF003C01FF003C01FF003C01FF003C01FF003C
-01FF003C01FF003C00FF007800FF8078007F80F0003FC1E0001FFFC0000FFF800001FE001E377E
-B626>I<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFCFFFFF001FFFC03FE00001F8003FF00001F
-0001FF00001E0001FF80003E0000FF80003C0000FF80003C00007FC0007800007FC0007800007F
-E000F800003FE000F000003FF001F000001FF001E000001FF803E000000FF803C000000FFC03C0
-000007FC0780000007FC0780000007FE0F80000003FE0F00000003FF1F00000001FF1E00000001
-FFBE00000000FFBC00000000FFFC000000007FF8000000007FF8000000007FF8000000003FF000
-0000003FF0000000001FE0000000001FE0000000000FC0000000000FC000000000078000000000
-0780000000000F80000000000F00000000001F00000000001E00000008003E0000007F003C0000
-007F007C000000FF8078000000FF80F8000000FF80F0000000FF81E00000007F07C00000007C1F
-800000003FFF000000001FFE0000000007F0000000002E377EA533>121
-D E end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
+%DVIPSParameters: dpi=300, compressed, comments removed
+%DVIPSSource: TeX output 1997.06.03:1139
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
+/X{S N}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{dup dup 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 /IE 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 IE N
+end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /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 dup definefont setfont}B /ch-width{ch-data dup
+length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
+128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
+get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
+dup 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 /sf 0 N /CharBuilder{save 3 1 roll S dup
+/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
+0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
+setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
+.1 sub]/id ch-image N /rw ch-width 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 dup 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 dup gp add
+/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
+dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
+adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 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}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
+}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
+length 1 sub dup 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 dup 1 get dup mul exch 0 get dup 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
+/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
+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 /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
+{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
+getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
+ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
+RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
+false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
+round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
+rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
+{dup /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
+TeXDict begin 40258431 52099146 1000 300 300 (history.dvi)
+@start /Fa 1 47 df<127012F8A212F012E005057B840E>46 D
+E /Fb 1 47 df<1238127C12FCA212F8127006067A8512>46 D E
+/Fc 25 123 df<EA1FC0EA7FF0EA7078EA2018EA001CA2EA07FC121FEA3C1C127012E0A3
+EA707C383FFF80EA0F8F11107E8F14>97 D<12FCA2121CA513F8EA1DFEEA1F07EA1E0300
+1C1380EB01C0A6EB0380001E1300EA1F0EEA1DFCEA0CF81217809614>I<EA03F8EA0FFE
+EA1C0EEA3804EA7000126012E0A412601270EA380EEA1C1EEA0FFCEA03F00F107E8F14>
+I<137EA2130EA5EA07CEEA0FFEEA1C3EEA301EEA700E12E0A61270EA301EEA383E381FEF
+C0EA07CF12177F9614>I<EA07E0EA0FF0EA1C38EA301CEA700CEAE00EA2EAFFFEA2EAE0
+0012601270EA380EEA1C1EEA0FFCEA03F00F107E8F14>I<13FCEA01FEEA038EEA070413
+00A3EA7FFE12FFEA0700ACEAFFF8A20F177F9614>I<EA07CF381FFF80EA383B38301800
+EA701CA3EA3018EA3838EA3FF0EA37C00070C7FCA2EA3FF86C7E487EEA700F38E00380A4
+38700700EA3C1EEA1FFCEA07F011197F8F14>I<12FCA2121CA51378EA1DFEEA1F86EA1E
+07121CAA38FF8FE0A21317809614>I<1206120FA21206C7FCA4B4FCA21207ACEAFFF8A2
+0D187C9714>I<12FCA2121CA5EBFF80A2EB1C005B5B5BEA1DC0EA1FE0A2EA1E70EA1C38
+133C131C7F38FF1F80A21117809614>107 D<EAFF80A21203B3EAFFFEA20F177E9614>I<
+EAFB8EEAFFDF383CF380A2EA38E3AA38FEFBE013791310808F14>I<EAFC78EAFDFEEA1F
+86EA1E07121CAA38FF8FE0A21310808F14>I<EA07C0EA1FF0EA3C78EA701CA2EAE00EA6
+EA701CEA783CEA3C78EA1FF0EA07C00F107E8F14>I<EAFCF8EAFDFEEA1F07EA1E03001C
+1380EB01C0A6EB0380001E1300EA1F0EEA1DFCEA1CF890C7FCA6B47EA21218808F14>I<
+EA03E7EA0FF7EA1C1FEA300F1270487EA6EA700F1230EA1C3FEA0FF7EA07C7EA0007A6EB
+3FE0A213187F8F14>I<EAFE1FEB7F80EA0EE3380F810090C7FCA2120EA8EAFFF0A21110
+7F8F14>I<EA0FD8EA3FF8EA603812C0A2EAF000EA7F80EA3FF0EA07F8EA001CEA600612
+E012F0EAF81CEAFFF8EACFE00F107E8F14>I<1206120EA4EA7FFC12FFEA0E00A8130EA3
+131CEA07F8EA01F00F157F9414>I<EAFC3FA2EA1C07AB131F380FFFE0EA03E71310808F
+14>I<38FE3F80A2383C1E00EA1C1CA36C5AA3EA0630EA0770A36C5AA311107F8F14>I<38
+FE3F80A238700700EA380EA3EA39CEA3EA1B6C121AA3EA1E7CA2EA0E3811107F8F14>I<
+EA7E3FA2EA1E3CEA0E78EA07705B12036C5A12037FEA0770EA0E781338487E38FE3F80A2
+11107F8F14>I<38FE3F80A2381C0E005BA2120E5BA212071330A2EA0370A25B1201A25B
+A3485A12730077C7FC127E123C11187F8F14>I<EA3FFF5AEA700E131C1338EA007013E0
+EA01C0EA0380EA0700120EEA1C0712381270B5FCA210107F8F14>I
+E /Fd 1 47 df<1270A212F0126004047D830B>46 D E /Fe 25
+122 df<EA07E0EA1C38EA381CEA300CEA700EEA6006A2EAE007AAEA6006A2EA700EEA30
+0CEA381CEA1C38EA07E010187F9713>48 D<12035AB4FC1207B3A2EA7FF80D187D9713>
+I<EA0F80EA1060EA2030EA4038EA803CEAC01C12E01240EA003C1338A21370136013C0EA
+018013001202EA040412081210EA3008EA3FF8127F12FF0E187E9713>I<EA01F8EA0704
+EA0C06EA180E123013001270126012E0EAE3E0EAE418EAE80CEAF00EEAE0061307A31260
+A2EA7006EA300EEA180CEA0C38EA07E010187F9713>54 D<1240EA7FFF13FEA2EA4004EA
+80081310A2EA00201340A21380120113005AA25A1206A2120EA5120410197E9813>I<EA
+07E0EA1818EA300CEA20061260A21270EA780CEA3E18EA1F30EA07C0EA03E0EA0CF8EA30
+7CEA601E130FEAC0071303A3EA6002EA2004EA1818EA07E010187F9713>I<EA07E0EA1C
+30EA3018EA700CEA600EEAE006A21307A31260EA700FEA3017EA1827EA07C7EA00071306
+130E130C12701318EA6030EA3060EA0F8010187F9713>I<39FFE1FFC0390E001C00AB38
+0FFFFC380E001CAC39FFE1FFC01A1A7F991D>72 D<EA0FC2EA1836EA200EEA600612C013
+02A3EAE0001270127EEA3FE0EA1FF8EA03FCEA007E130E130713031280A3EAC0021306EA
+E004EAD818EA87E0101A7E9915>83 D<EA1FC0EA38707FEA101C1200A2EA03FCEA1E1C12
+38127012E01480A2133CEA705F381F8F0011107F8F13>97 D<EA07F8EA1C1C1238EA7008
+13005AA612701304EA3808EA1C18EA07E00E107F8F11>99 D<133F1307A9EA03E7EA0C17
+EA180F487E127012E0A6126012706C5AEA1C373807C7E0131A7F9915>I<EA07C0EA1C30
+EA30181270EA600C12E0EAFFFCEAE000A41260EA7004EA3808EA1C18EA07E00E107F8F11
+>I<EA0FCF3818718038303000EA7038A4EA30306C5AEA2FC00060C7FCA21270EA3FF013
+FC6C7EEA600FEAC003A4EA6006EA381CEA07E011187F8F13>103
+D<12FC121CA9137CEA1D87381E0380A2121CAB38FF9FF0141A809915>I<1218123CA212
+181200A612FC121CAE12FF081A80990A>I<EAFC7CEA1D87381E0380A2121CAB38FF9FF0
+1410808F15>110 D<EA07E0EA1C38EA300CEA700EEA6006EAE007A6EA6006EA700EEA38
+1CEA1C38EA07E010107F8F13>I<EAFCFCEA1D07381E0380381C01C0A2EB00E0A6EB01C0
+1480381E0300EA1D06EA1CF890C7FCA6B47E1317808F15>I<EAFC78EA1D9CEA1E1C1308
+EA1C00ABEAFF800E10808F0F>114 D<EA1F20EA60E0EA402012C0A2EAF000127FEA3FC0
+EA1FE0EA00F0EA8070133012C01320EAF040EA8F800C107F8F0F>I<1208A41218A21238
+EAFFC0EA3800A81320A41218EA1C40EA07800B177F960F>I<38FF0F80383C0700EA1C06
+1304A26C5AA26C5AA3EA03A0A2EA01C0A36C5A11107F8F14>118
+D<38FE3F80383C1E00EA1C086C5AEA0F306C5A6C5A12017F1203EA0270487E1208EA181C
+EA381E38FC3FC012107F8F14>120 D<38FF0F80383C0700EA1C061304A26C5AA26C5AA3
+EA03A0A2EA01C0A36C5AA248C7FCA212E112E212E4127811177F8F14>I
+E /Ff 2 42 df<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012
+F0AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40
+D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012
+07A213005AA2121E121C123C12385A5A0B2E7EA112>I E /Fg 27
+123 df<EB07F8EB7FFC3801FC0E3803F01F48485AEA0FC0A3141E140C91C7FCA2ECFF80
+B6FCA2380FC01FB2397FF8FFF0A21C237FA220>12 D<90380FFF80137F3801FC1F3803F0
+3FEA07E0EA0FC0141FA7B6FCA2380FC01FB2397FF8FFF0A21C237FA220>I<EA07FE381F
+FF80383F07E06D7E130180121E1200A2133FEA03FDEA1F81EA3E01127C12F8A4EA7C02EA
+7E0C391FF87F803807E03F19167E951C>97 D<B47EA2121FABEB87F0EBBFFCEBF03EEBC0
+1F9038800F8015C0140715E0A715C0A2140F15809038C01F00381E707E381C3FFC38180F
+E01B237EA220>I<EBFF80000713E0380F83F0EA1F03123E127E387C01E090C7FC12FCA6
+127C127EA2003E13186C1330380FC0603807FFC0C6130015167E9519>I<49B4FCA2EB00
+3FAB13FE3807FFBF380FC1FF48C67E003E7F127E127CA212FCA7127C127E123E6C5B380F
+81FF3907FF3FE0EA01FC1B237EA220>I<13FE3807FF80380F83C0381E01E0383E00F012
+7E007C13F8147812FCB512F8A200FCC7FCA3127CA26C1318A26C1330380F80E03803FFC0
+C6130015167E951A>I<EB1F80EBFFE03801F1F0EA03E31207EA0FC3EBC1E0EBC000A6EA
+FFFEA2EA0FC0B2EA7FFCA214237EA212>I<9038FE0F803903FF9FC0380F83E3381F01F3
+391E00F000003E7FA5001E5BEA1F01380F83E0380BFF80D808FEC7FC0018C8FCA2121C38
+1FFFE014FC6C13FF7E001F1480397C001FC00078130F00F81307A3007CEB0F806CEB1F00
+381F807E6CB45A000113E01A217F951D>I<B47EA2121FABEB83F0EB8FFCEB987EEBA03E
+EBC03FA21380AE39FFF1FFE0A21B237DA220>I<121E123FEA7F80A4EA3F00121EC7FCA6
+EAFF80A2121FB2EAFFF0A20C247EA30F>I<B47EA2121FABECFF80A2EC3C00143014E0EB
+81C00183C7FC1386139E13BE13FFEBDF80EB8FC01307806D7E6D7E130080147E39FFE1FF
+C0A21A237EA21E>107 D<EAFF80A2121FB3ADEAFFF0A20C237EA20F>I<3AFF03F803F890
+390FFE0FFE3A1F183F183F9039201F201F014001C01380A201801380AE3BFFF0FFF0FFF0
+A22C167D9531>I<38FF03F0EB0FFC381F187EEB203EEB403FA21380AE39FFF1FFE0A21B
+167D9520>I<13FF000713E0380F81F0381F00F8003E137C48133EA300FC133FA7007C13
+3E007E137E003E137C6C13F8380F81F03807FFE0C6130018167E951D>I<38FF87F0EBBF
+FC381FF07EEBC01F9038800F8015C0A2EC07E0A715C0140FA2EC1F8001C01300EBF07EEB
+BFFCEB8FE00180C7FCA8EAFFF0A21B207E9520>I<EBFE033807FF07380FC1CF381F00DF
+48137F007E7FA2127C12FCA7127EA2003E5B6C5BEA0FC13807FF3FEA00FC1300A8903801
+FFE0A21B207E951E>I<38FF0F80EB1FE0381F33F013631343A2EBC1E0EB8000ADEAFFF8
+A214167E9518>I<3807F980EA1FFFEA3807EA7003EAF001A26CC7FCB4FC13F8EA7FFE6C
+7E6C1380120738003FC0EAC007130312E0A200F0138038FC0F00EAEFFEEAC3F812167E95
+17>I<487EA41203A21207A2120F123FB5FCA2EA1F80ABEB8180A5380F830013C3EA07FE
+EA01F811207F9F16>I<38FF81FFA2381F803FAF5C5C380FC1BF3907FF3FE0EA01FC1B16
+7D9520>I<39FFF01FE0A2391FC00700000F1306EBE00E0007130C13F000035BA26C6C5A
+A26C6C5AA2EBFEE0EB7EC0137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFF3FF83FC
+A23A1F807C00E0D80FC014C08001E013010007017F1380A2D803F0EB0300ECCF8301F813
+87D801F913C61487D800FD13ECEBFF0315FC017F5BEB7E01013E5BEB3C00A20118136026
+167F9529>I<39FFF07FC0A2390FC01C006C6C5A6D5A00035B6C6C5A3800FD80137F91C7
+FC7F6D7E497EEB37E0EB67F013C33801C1F8380380FC48487E000E137F39FF81FFE0A21B
+167F951E>I<39FFF01FE0A2391FC00700000F1306EBE00E0007130C13F000035BA26C6C
+5AA26C6C5AA2EBFEE0EB7EC0137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC3813305B
+EA69C0EA7F80001FC8FC1B207F951E>I<387FFFF0A2387C07E038700FC0EA601F00E013
+8038C03F005B137EC65A1201485AEBF030EA07E0120FEBC070EA1F80003F1360EB00E0EA
+7E03B5FCA214167E9519>I E /Fh 24 119 df<13E0A538F0E1E0EAFCE7387EEFC0381F
+FF00EA07FCEA01F0EA07FCEA1FFF387EEFC038FCE7E0EAF0E13800E000A513157D991A>
+42 D<1338137CA2136C13EEA313C6A2EA01C7A438038380A4380701C0A213FFA24813E0
+EA0E00A4481370387F01FC38FF83FE387F01FC171E7F9D1A>65 D<B512F8A3381C0038A5
+1400A2130EA3EA1FFEA3EA1C0EA390C7FCA3141CA5B512FCA3161E7E9D1A>69
+D<387FFFFCB5FC7E380E001CA51400A2EB0380A3EA0FFFA3EA0E03A390C7FCA8EA7FE012
+FF127F161E7F9D1A>I<38FF83FEA3381C0070AA381FFFF0A3381C0070AB38FF83FEA317
+1E7F9D1A>72 D<B51280A33801C000B3A6B51280A3111E7C9D1A>I<38FE03FE12FFA238
+1D8070A213C0121CA213E0A213601370A213301338A21318131CA2130C130EA21306A213
+071303A238FF81F0A21380171E7F9D1A>78 D<EA0FFE383FFF804813C0EA7C07EA700100
+F013E0EAE000B1EAF001A2007013C0EA7C07EA7FFF6C1380380FFE00131E7D9D1A>I<EA
+FFFC13FF1480381C07C0EB01E0EB00F01470A414F0EB01E0EB07C0381FFF801400148038
+1C07C01301EB00E0A514E214E7A338FF807EA21438181E7F9D1A>82
+D<3803F1C0EA0FFDEA3FFFEA7C0FEA700312E01301A390C7FC12701278123FEA1FF0EA07
+FE3800FF80EB0FC0EB01E013001470A2126012E0A214E0EAF00138FC03C0B5128000EF13
+00EAE3FC141E7D9D1A>I<387FFFFEB5FCA238E0380EA500001300B33803FF80A3171E7F
+9D1A>I<38FF01FEA3381C00706C13E0A2380701C0A213830003138013C700011300A2EA
+00EEA2137CA21338AA48B4FCA3171E7F9D1A>89 D<387FFFC0B512E0A26C13C013047D7E
+1A>95 D<EA1FF0EA3FFC487EEA780FEA300738000380A2137FEA07FF121FEA3F83EA7803
+127012E0A3EA7007EA780F383FFFFCEA1FFDEA07F016157D941A>97
+D<EBFF80000313C0000F13E0EA1F01383C00C04813001270A25AA51270A2007813707E38
+1F01F0380FFFE0000313C03800FE0014157D941A>99 D<EB1FC0A31301A6EA01F1EA07FD
+EA0FFFEA1E0FEA3C07EA7803EA700112E0A7EA7003A2EA3807EA3E0F381FFFFCEA07FDEA
+01F1161E7E9D1A>I<12FEA3120EA6133EEBFF80000F13C013C1EB80E01300120EAC38FF
+E3FE13E713E3171E7F9D1A>104 D<EA01C0487EA36C5AC8FCA5EA7FE0A31200AF387FFF
+80B512C06C1380121F7C9E1A>I<EAFE3EEBFF80B512C0EA0FC1EB80E01300120EAC38FF
+E3FE13E713E317157F941A>110 D<EA01F0EA07FCEA1FFF383E0F80EA3C07387803C0EA
+700138E000E0A6EAF001007013C0EA7803383C0780EA3E0F381FFF00EA07FCEA01F01315
+7D941A>I<387F81F838FF8FFC387F9FFE3803FE1EEBF80CEBE000A25B5BAAEA7FFFB5FC
+7E17157F941A>114 D<487E1203A6387FFFE0B5FCA238038000AA1470A43801C1E013FF
+6C1380EB3F00141C7F9B1A>116 D<38FE0FE0A3EA0E00AD1301EA0F033807FFFE7EEA00
+FC17157F941A>I<387FC7FC00FF13FE007F13FC380E00E0A3380701C0A338038380A338
+01C700A3EA00EEA3137CA2133817157F941A>I E /Fi 41 123 df<EB07FCEB3FFF9038
+FE0780D803F013C03807E00FA2EA0FC0A3EC030091C7FCA3EC7FE0B6FCA2380FC007B3A2
+39FFFC7FFEA21F267FA522>12 D<123C127E12FFA4127E123C08087C8711>46
+D<131C133C13FC12FFA21200B3AA387FFFFCA216237CA21F>49 D<48B4FC000713C0381E
+07F0383803F8386001FC387C00FE12FE14FF147FA2127C003813FFC7FC14FEA2EB01FC14
+F8EB03F0EB07E01480EB0F00131E5B1370EBE003EA01C038038007380700061206380FFF
+FE5A5A4813FCB5FCA218237DA21F>I<48B4FC000713E0381E03F0383801F8003C13FC38
+7E00FEA3123EEA1C01000013FCA2EB03F8EB07F0EB0FC03801FF00A2380007E0EB01F014
+F8EB00FC14FE14FFA21210127C12FEA214FEA2387C01FC007013F8383E07F0380FFFC000
+01130018237DA21F>I<14381478A214F81301130313071306130C131C13381330136013
+E0EA01C01380EA03005A120E5A12185A12705AB612C0A2390001F800A790387FFFC0A21A
+237EA21F>I<0018130C001F137CEBFFF814F014E014C01480EBFC000018C7FCA513FF00
+1B13E0381F03F0381C00F8000813FCC7127EA3147FA2127812FCA3147E5A006013FC1270
+383801F8381E07E03807FFC03801FE0018237DA21F>I<EB1FC0EB7FF03801F0383803E0
+0C3807803E000F137EEA1F005AA2007E133C1400A338FE3FC0EB7FF0EB80F800FF13FCEB
+007C147E5A147FA4127EA4003E137E123F6C137C380F80F83807C1F03803FFC038007F00
+18237DA21F>I<1230123C003FB512C0A215804814005C5C38600018A200E05B485B5CC6
+485AA249C7FC1306130EA25BA2133CA25BA213F8A41201A66C5A13601A257DA41F>I<14
+1CA2143EA3147FA24A7EA39038019FC0A29038031FE0140F01077FEB0607A2010C7F1403
+011C7FEB1801A2496C7EA2017FB5FCA29039E0007F8049133FA2484880151F00038190C7
+120FA2486E7ED8FFF090B51280A229257EA42E>65 D<B612E015FC3903F800FFED1FC0ED
+07E06F7E6F7E82150082A2167FA31780AA1700A316FEA24B5A5E4B5A4B5AED1FC0EDFF80
+B648C7FC15E029257EA42F>68 D<B7FCA23903F8007FED0F8015071503A21501A3ED00C0
+1406A21600A2140E141EEBFFFEA2EBF81E140E1406A21660A291C7FC16C0A415011503A2
+ED0F80153FB7FCA223257EA428>I<B612FEA23803F800151F8181A281A3ED01801403A2
+92C7FCA25C5C90B5FCA2EBF80F8080A491C8FCAAB512F0A221257EA427>I<B500E0B512
+E0A23B03F80003F800AF90B6FCA29038F80003B0B500E0B512E0A22B257EA430>72
+D<B512E0A23803F800B3AFB512E0A213257EA417>I<B512F0A2D803F8C7FCB3A31503A3
+1506A3150EA2151E153E157CEC03FCB6FCA220257EA425>76 D<D8FFF8EDFFF86D5C0003
+EEFE00017EEC037EA36D1406A26D6C130CA26D6C1318A26D6C1330A36D6C1360A26D6C13
+C0A2903900FC0180A291387E0300A3EC3F06A2EC1F8CA2EC0FD8A2EC07F0A36E5AEA0780
+3CFFFC01C01FFFF8A235257EA43A>I<01FF1380000713E3380F80F7381E001F48130F48
+1307140312F81401A27E91C7FCB4FCEA7FE013FE383FFFE014F86C13FE00077F6C1480C6
+7E010313C0EB003FEC0FE01407A200C01303A315C07E6C13076C14806CEB0F0038FFC03E
+38E3FFF838803FE01B257DA422>83 D<B53B81FFFE01FFF0A23D07F0001FC0000F007013
+066C6C010F5CA26F7E6C6C5EA26D496C1338000017304B7E017F01195CA291388030FE01
+3F5E829139C0607F01011F5E03E0138190280FE0C03F83C7FCA29139F1801FC3010715C6
+17E69139FB000FEE010315EC02FF14FC6D486D5AA24A130301005DA24A130102785CA202
+306D5A3C257FA43F>87 D<EA07FF001F13E0383E03F0383F00F880147E121EC7FCA3EB1F
+FE3803FE7EEA0FC0EA1F00123E127E5AA314BEEA7E01383F073E391FFE1FE03807F00F1B
+187E971E>97 D<EAFFC0A2120FACEBC1FCEBCFFF9038FC0FC09038F007E09038C003F0A2
+EC01F8A215FCA815F8A2EC03F013E09038F007E090381C1F80390E0FFF00380C03F81E26
+7FA522>I<EB7FE03803FFF83807C07C381F80FC13005A007E1378140012FEA8127E127F
+6C130CEA1F80EBC0183807E0703803FFE038007F0016187E971B>I<ECFFC0A2140FAC13
+7F3803FFCF380FE0FF381F803F383F000FA2127EA212FEA8127EA27E141F381F803F380F
+C0EF3903FFCFFC3800FE0F1E267EA522>I<137F3803FFC03807C1F0380F80F8EA1F0048
+137C127E147E12FEA2B512FEA248C7FCA3127EA214067E6C130C380F80183807E0703803
+FFE038007F8017187E971C>I<EB1FC0EB7FF0EA01F83803E1F8120713C1380FC0F01400
+A7B5FCA2EA0FC0B3A2EAFFFEA215267EA513>I<3901FF07C00007EBDFE0380F83F1EA1F
+01393E00F800007E7FA6003E5B6C485A380F83E0EBFFC0001190C7FC0030C8FCA2123812
+3C383FFFE06C13FC806C7F481480383C003F48EB0FC000F81307A4007CEB0F806CEB1F00
+381F807E3807FFF8C613C01B247E971F>I<EAFFC0A2120FAC14FE9038C3FF809038CE0F
+C013D89038D007E013E0A213C0AF39FFFC7FFEA21F267EA522>I<120FEA1F80EA3FC0A4
+EA1F80EA0F00C7FCA7EA7FC0A2120FB3A2EAFFF8A20D277EA611>I<EAFFC0A2120FB3B0
+EAFFFCA20E267EA511>108 D<26FF80FE137F903A83FF81FFC03B0F8E0FC707E0019813
+CC903A9007E803F001A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E9733>I<38FF80
+FE903883FF80390F8E0FC0139890389007E013A0A213C0AF39FFFC7FFEA21F187E9722>
+I<EB7F803803FFF03807C0F8381F807E48487EA2007EEB1F80A200FE14C0A8007E1480A2
+6CEB3F00A2381F807E6C6C5A3803FFF038007F801A187E971F>I<38FFC1FCEBCFFF390F
+FC1FC09038F007E001C013F0140315F8140115FCA8EC03F8A215F0EBE0079038F00FE090
+38DC1F809038CFFF00EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38FF83E0EB8FF838
+0F8C7CEB90FC13B013A01478EBE0005BAEEAFFFEA216187F9719>114
+D<3807F8C0EA1FFFEA3C07EA7001EAF000A300FC1300B47EEA7FFC7F383FFF80000F13C0
+120338001FE01303EAC001A212E014C0EAF00338FC078038EFFF00EAC3FC13187E9718>
+I<13C0A41201A312031207120F121FB512C0A2380FC000AC1460A63807E0C013E13801FF
+8038007E0013237FA218>I<39FFC07FE0A2000F1307B0140FA200071317EBE0673903FF
+C7FE38007F071F187E9722>I<39FFF80FF8A2390FC001C015803907E00300A26D5A0003
+1306EBF80E0001130C13FC00005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D
+187F9720>I<39FFF83FF0A2390FC00F003807E00E6C6C5A6D5A6C6C5A00001360EB7EC0
+6D5AA2131F6D7E497E80EB33F81361EBE0FC3801C07E3803807F3907003F8048131F39FF
+C07FF8A21D187F9720>120 D<39FFF80FF8A2390FC001C015803907E00300A26D5A0003
+1306EBF80E0001130C13FC00005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA213
+06A25B1230EA781CEAFC185B1370EA68E0EA7FC0001FC8FC1D237F9720>I<387FFFF8A2
+387C03F0EA700738600FE000E013C0EB1F80EAC03F1400137EEA00FE5B485A0003130C13
+F0EA07E0120FEBC01C381F8018003F1338387F0078387E01F8B5FCA216187E971B>I
+E /Fj 31 122 df<903803F07C90381E0DC69038380F0FEB701E01E0130EEC0C003801C0
+1CA548485A007FB512C03903803800A448485AA6000E5BA648485A001E7F38FF8FFC2020
+7E9F1B>11 D<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF038038070
+A4380700E0A6380E01C0A6381C0380001E13C038FF0FF016207E9F19>I<903803F03F90
+391E09E0809039380F80C09039701F01E0EBE03E021E13C02601C01CC7FCA548485A007F
+B612803903803803A43A0700700700A6000EEBE00EA64848485A001EEBE01E3AFF8FF8FF
+C023207E9F26>14 D<13201360A4383061C0383C4380380E4E00EA0778EA01E0A2EA07B8
+EA1C9CEA708FEAE083EA0180A490C7FC12147AA117>42 D<EAFFF0A20C027E8A0F>45
+D<13181338EA01F8EA0E701200A513E0A6EA01C0A6EA0380A6EA07001380EAFFFC0E1E7B
+9D17>49 D<EB3F80EBC1E038010070000213785AA2000F137C1380A2EB00781206C712F8
+14F0EB01E014C0EB0380EB0700130E5B5B13605B485A380300201206000813405A383FFF
+C0481380B5FC161E7E9D17>I<13FFEA01FE1380A5EA0300A61206A65AA65AA65AA65AA6
+B4FCA2102D7EA10D>91 D<13FFEA01FEEA0006A5130CA61318A61330A61360A613C0A6EA
+0180A6EAFF00A2102D82A10D>93 D<EA07F8EA0C0CEA1E061307121C1200A313FFEA07C7
+EA1E07EA3C0E127800F01310A3131EEB2E2038784F40381F878014147D9317>97
+D<13FEEA0383380E0780121C0038130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA
+07E011147D9314>99 D<1438EB01F8EB00781438A21470A614E013FCEA0382EA0601121C
+EA3C00383801C0127812F0A438E00380A412F0EA700738380F00381C37803807C7E01520
+7D9F19>I<13F8EA070EEA0E07121C383803801278127012F0A2B5FC00F0C7FC5AA46C5A
+EA7002EA3004EA1C18EA07E011147D9314>I<EB07C0EB1C60EB30F01360EBE0E0EBC000
+1201A5485AEA3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB3E
+11EBE1A33801C1C2380381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FCA2
+1218121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0381C0700EA07FC18
+1F809417>I<13E0120712011200A2485AA6485AEB8F80EB90E013A0EBC0601380000713
+E01300A5380E01C0A6381C0380001E13C038FF8FF014207E9F19>I<EA01C0EA03E0A213
+C0EA0180C7FCA6EA0380121F12071203A2EA0700A6120EA65A121EEAFF800B1F7F9E0C>
+I<13E0120712011200A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B207F9F0C
+>108 D<390387C07C391F9861863907A072073903C03403EB80380007EB7807EB0070A5
+000EEBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80381F90E0
+EA07A03803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014147E
+9319>I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A214C01303
+00F0138038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807EC383800F01C497E
+140F48487E1580A53903800F00A2140E141E141C5C38074070EB61C0011FC7FC90C8FCA3
+120EA4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E01E0123C003813C012
+7812F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA0007A3130EA4131EEB
+FFC0131D7D9318>I<EA038E381FB380EA07C71203EB8300EA078090C7FCA5120EA65A12
+1EEAFFC011147E9312>I<EA01F9EA0607EA080312181301EA3802EA3C00121F13F0EA07
+FCEA01FEEA001FEA40071303A212601306EAF004EAC818EA87E010147F9312>I<1380EA
+0100A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C9B12>
+I<381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E381F9F8011
+147B9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12075BA25BEA
+039013A013E05B5B120190C7FC15147C9318>I<39FF9FE1FC393C078070391C03006014
+8015401580EA0E0790380D81001309EB19C21311380F21C4EA0720EB40C814E8EB80F0A2
+6C485A1460000213401E147C9321>I<381FF0FF3803C0780001137014403800E0C0EBE1
+80EB73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03E038FE
+07FC18147F9318>I<390FF83F803901E00E00EBC00C140813E000005B143014205C1370
+5CA20171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000F1C8FC12E6
+1278191D809318>I E /Fk 36 122 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F
+1200B3B1007FB512F0A31C2E7AAD28>49 D<EB3FE03801FFFE0007EBFF80D80F8013C039
+1E003FE00038EB1FF0007CEB0FF8007EEB07FCB4FC018013FEA21403A2EA7F00003E1307
+C7FC15FCA2EC0FF8A215F0EC1FE015C0EC3F80EC7F00147E14F8495A495A495A49C7FC01
+1E130E5B133849131E49131C485A48C7123C48B512FC5A5A5A4814F8B6FCA31F2E7CAD28
+>I<1578A215FCA34A7EA24A7EA24A7FA34A7FEC0E7F021E7FEC1C3FA202387F151F0278
+7FEC700FA202E07F1507010180ECC003A249486C7EA201078191C7FC498191B6FCA24981
+011CC7123F013C810138141FA24981160F01F081491407A2484881486C1403B549B512FC
+A336317DB03D>65 D<B712C016FC16FFD801FEC77FEE7FE0707E161F707EA2831607A416
+0FA25FA24C5A4C5A4C5A4B485ADB1FFEC7FC90B65AEEFF8049C7EA3FE0EE0FF0EE07FCA2
+707E83821880A718005E5F16074C5A4C5AEEFFF0B812C094C7FC16F831317DB039>I<91
+3A03FF800180023FEBF00349B5EAFC0701079038003F0FD91FF8EB079FD93FC0EB01FFD9
+FF807F4848C8127F4848153F0007161F49150F485A001F1607A2485A1703127FA24992C7
+FCA212FFA9127FA27FEF0380123FA26C7E1707000F17006C7E6D150E0003161E6C6C151C
+6C6C6C1478D93FC05CD91FF8EB03E0D907FFEB3F800101D9FFFEC7FCD9003F13F8020313
+8031317CB03A>I<B812E0A3C6903880007FEE0FF016031601A21600A21770A31738A215
+07A21700A35D5D5D91B5FCA3EC803F818181A592C8FCACB612C0A32D317EB033>70
+D<DA03FF1303027FEBF00749B5EAFC0F01079038007E1FD91FF0EB0FBFD97FC0EB03FF49
+487F4848C87E485A0007824848815B001F82A2484881A2127FA24992C7FC12FFAA0307B5
+12F8127F7FDB00011300123FA26C7EA2120F7F6C7E12036C7E6C6C7E6D6C5BD91FF8497E
+D907FFEB3E3F01019038FFFC1F6D6CEBF00F0203EB800335317CB03F>I<B6D8807FB512
+C0A3C60180C7387FC000B391B7FCA30280C7127FB3A3B6D8807FB512C0A33A317EB03F>
+I<B61280A3C6EB8000B3B3A7B61280A319317EB01E>I<B56C49B512C08080C66D903900
+03E0006E6E5AEBEFFC13E780EBE3FF01E17F01E07F6E7E143F816E7E6E7E6E7E14036E7E
+16806E13C0ED7FE0ED3FF0151F16F8ED0FFCED07FEED03FF6F13818117C1EE7FE1EE3FF1
+EE1FF9EE0FFD160717FF828282177F173FA2171F170F486C1507B500E014031701A23A31
+7EB03F>78 D<B712E016FEEEFF80C6D9800013E0EE3FF0EE0FF8EE07FCA2EE03FEA217FF
+A717FEA2EE07FC17F8160FEE3FE0EEFFC091B6120016F80280C8FCB3A2B67EA330317EB0
+37>80 D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780A3
+481603A5C792C7FCB3AA017FB6FCA331307DAF38>84 D<B6D88003B51280A3C60180C738
+07C000715AB3AE137F4DC7FC80013F150EA26D6C5C6D6C5C6D6C5C6D6C495A903A00FF80
+1FC0023FB55A020F49C8FC020013E039317EB03E>I<B500FC91B5FCA3000390C8EA03C0
+6C17806E14076C170080017F150EA26E141E013F151C6E143C011F153880010F5D800107
+5DA26E130101035D6E13036D5D15806D4AC7FCA26F5A027F130EEDE01E023F131CEDF03C
+021F133815F8020F5BA2EDFCF002075B15FF6E5BA26E5BA26E90C8FCA3157EA2153CA238
+317EB03D>I<EBFFF0000313FF390F803F809038C00FE0486C6C7EA26E7ED80FC07FEA07
+80C7FCA414FF131FEBFFE33803FC03EA0FF0EA1FC0123FEA7F80A2EAFF00A31407A2387F
+800D393FC01DFE3A1FE078FFF03907FFE07FC6EB803F24207E9F27>97
+D<EA01F812FFA3120F1207ADEC3FE0ECFFFC9038FBE07F9039FF001F8049EB0FC04914E0
+49EB07F016F8A2ED03FCA316FEA816FCA3ED07F8A216F06DEB0FE06D14C001E7EB3F8090
+39C3C0FE00903880FFF89038003FC027327EB12D>I<EB0FFF017F13C03901FC01F03803
+F0033907E007F8120FEA1FC0003FEB03F0EC01E04848C7FCA312FFA8127FA36C6C131CA2
+001F14386C7E000714703903F001E03901FC07C039007FFF00EB0FF81E207D9F24>I<ED
+0FC0EC07FFA3EC007F153FADEB07F8EB3FFF9038FE07BF3903F801FF3907E0007F120F48
+48133F123FA2485AA312FFA8127FA36C7EA2121F6C6C137F000714FF2603F00313E03A01
+FC0F3FFE38007FFEEB0FF027327DB12D>I<EB0FFC90387FFF803901FC0FC03903F003E0
+3907E001F0000F14F8391FC000FC003F14FEA24848137E157FA212FFA290B6FCA20180C7
+FCA4127FA36C6C1307121F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0903807
+FE0020207E9F25>I<EB01FE90380FFF8090381FC3C090387F07E09038FE0FF0120113FC
+1203EC07E0EC018091C7FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C327EB119>I<90
+391FF007C09039FFFE3FE03A01F83F79F03907E00FC3000F14E19039C007E0E0001FECF0
+00A2003F80A5001F5CA2000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9FC
+121EA2121F7F90B57E6C14F015FC6C806C801680000F15C0003FC7127F007EEC1FE0007C
+140F00FC1407A4007EEC0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0
+D8001F90C7FC242F7E9F28>I<EA01F812FFA3120F1207ADEC07F8EC3FFEEC783F02C013
+809039F9801FC0EBFB0001FE14E05BA35BB3B500C3B5FCA328327DB12D>I<EA03C0487E
+487E487EA46C5A6C5A6C5AC8FCA9EA01F8127FA31207B3A7B51280A311337DB217>I<EA
+01F812FFA3120F1207B3B3A6B512C0A312327DB117>108 D<2703F007F8EB1FE000FFD9
+3FFEEBFFF8913A783F01E0FC02C090388300FE280FF1801FC6137F2607F30013CC01F602
+F8148001FC5CA3495CB3B500C3B5380FFFFCA33E207D9F43>I<3903F007F800FFEB3FFE
+EC783F02C013803A0FF1801FC03807F30001F614E013FCA35BB3B500C3B5FCA328207D9F
+2D>I<EB07FC90387FFFC03901FC07F03903F001F848486C7E4848137E001F147F003F15
+8049133F007F15C0A300FF15E0A8007F15C0A36C6CEB7F80A2001F15006C6C13FE00075C
+3903F803F83901FE0FF039007FFFC0D907FCC7FC23207E9F28>I<3901F83FE000FFEBFF
+FC9038FBE07F9039FF003F80D807FEEB1FC049EB0FE04914F0ED07F8A216FC1503A216FE
+A816FC1507A216F8A2ED0FF06D14E06DEB1FC06DEB3F809039FBC0FE009038F8FFF8EC3F
+C091C8FCABB512C0A3272E7E9F2D>I<3803F03F00FFEB7FC09038F1C3E01487390FF30F
+F0EA07F6A29038FC07E0EC03C091C7FCA25BB2B512E0A31C207E9F21>114
+D<3801FF86000713FEEA1F00003C133E48131E140E12F8A36C90C7FCB47E13FC387FFFC0
+6C13F0806C7F00077F00017FEA003F01001380143F0060131F00E0130FA27E15007E6C13
+1E6C131C38FF807838F3FFF038C07F8019207D9F20>I<131CA5133CA3137CA213FC1201
+12031207381FFFFEB5FCA2D803FCC7FCB0EC0380A71201EC0700EA00FEEB7F0EEB3FFCEB
+07F0192E7FAD1F>I<D801F8EB07E000FFEB03FFA3000FEB003F0007141FB3153FA20003
+147FA26C6CEBDFF03A00FE039FFF90387FFF1FEB0FFC28207D9F2D>I<B5EB1FFCA3D80F
+F8EB03C0000715806D1307000315007F0001140E7F6C5CA2EC803C017F1338ECC078013F
+1370ECE0F0011F5B14F1010F5B14F9903807FB80A214FF6D90C7FCA26D5AA26D5AA21478
+A226207E9F2B>I<B53A1FFFE03FF8A33C0FF000FE0007806D150300076EEB0700816D5D
+00039138FF800EA26C6C486D5A15DF01FF153C6C9039038FE038A2D97F876D5A150702C7
+14F0D93FCF6D5AECCE03D91FFEEBF9C09138FC01FD16FF010F5D4A7EA26D486DC7FCA201
+03147E4A133EA26D48131C35207E9F3A>I<3A7FFF807FFCA33A03FC000F006C6C131E6C
+6C5BEC803890387FC078013F5B90381FE1E090380FF3C0ECFF806D90C7FC6D5A13016D7E
+81815B903803DFE09038078FF08190380F07FC90381E03FEEB3C01496C7E4914804848EB
+7FC00003EC3FE026FFFC01B5FCA328207F9F2B>I<B5EB1FFCA3D80FF8EB03C000071580
+6D1307000315007F0001140E7F6C5CA2EC803C017F1338ECC078013F1370ECE0F0011F5B
+14F1010F5B14F9903807FB80A214FF6D90C7FCA26D5AA26D5AA21478A21470A214F05C13
+01007C5BEAFE035C49C8FC5BEAFC1EEA787CEA3FF0EA0FC0262E7E9F2B>I
+E /Fl 1 14 df<14FF010713E090381F00F80178131E01E01307D80180EB018048C812C0
+00061560481530A248151848150CA2481506A4481503A900601506A46C150CA26C15186C
+1530A26C15606C15C06C6CEB0180D800E0EB07000178131E011F13F8903807FFE0010090
+C7FC282B7EA02D>13 D E /Fm 46 122 df<123C127FEAFF80A213C0A3127F123E1200A2
+EA0180A3EA0300A21206120E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00
+A2121C09097B8813>46 D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277B
+A622>49 D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15
+E0140FA2127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049C7FC131E
+4913E013705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA622>I<EB
+7F803803FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00A2147E5C
+495AEB07F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA215C0143F
+481480007CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA25C5C5C5C
+5BA2EB03BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12
+F0B612F8A3C7EA7F00A890381FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C
+5C14C091C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215
+E0A21218127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C61380
+1B277DA622>I<1238123E003FB512F0A34814E015C0158015003870000EA25C485B5C5C
+C6485AA2495A130791C7FC5B5B131E133EA2137E137CA213FCA41201A76C5A13701C297C
+A822>55 D<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA20103
+7F1480A249486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F08049
+1303000181491301A2000381D8FFFE013F13FCA32E297EA833>65
+D<B612F815FF16C03A03F8001FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0
+150FED1FC0EDFF8090B5EAFE00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA6
+16FE1501ED03FC1507ED1FF8B712E016C0EDFE0028297DA830>I<91387FE003903907FF
+FC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F4848147F4848143F4848141F48
+5A160F485A1607127FA290C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C
+6C6C14786CB4EB01F090397FF007C0011FB512800107EBFE009038007FF028297CA831>
+I<B712E0A33903FC001FED07F01501A215001670A3913801C0781638A302031300A2140F
+90B5FCA3EBFC0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB7
+12F0A327297EA82C>69 D<B712C0A33903FC003FED0FE015031501A21500A316F0913801
+C070A316001403A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A
+>I<91387FE003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F4848
+80484880484880485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7E
+A26C7E6C7E6C7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297C
+A835>I<B5D8F00FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA3
+30297EA835>I<B512F0A33803FC00B3B1B512F0A314297EA819>I<D8FFFE92383FFF80A2
+6D5D0003EFE000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D9
+83F8130EA2D981FC131CA3D980FE1338A2027F1370A291383F80E0A391381FC1C0A29138
+0FE380A2913807F700A3EC03FEA26E5AA26E5AD8FFFE0203B51280A2157039297DA840>
+77 D<D8FFFCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB87FCEB83FEEB81FF
+01801380147F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E1381ED7FC1ED3FE1
+ED1FF1150F16F9ED07FDED03FF8181167FA2163F161F160F1607D8FFFE14031601A23029
+7EA835>I<B612F815FF16C03A03FC003FE0ED07F0ED03F816FC150116FEA716FC150316
+F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B512F0A327297EA82E>80
+D<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A65E4B5A1507ED0FE0ED3FC0
+90B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170EA21503923801FC1CB538F0
+00FEEE7FF8EE0FE02F297EA832>82 D<9038FF80600003EBF0E0000F13F8381F80FD383F
+001F003E1307481303A200FC1301A214007EA26C140013C0EA7FFCEBFFE06C13F86C13FE
+80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E01303A46C14E0A26C1307
+6C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA825>I<B500F0EBFFFEA3
+D803FCC7EA0380B3AA0001ED07007F0000150E137F6D143CD91FC05B90390FF003F06DB5
+5A01001480DA1FFCC7FC2F297EA834>85 D<B500F0EB7FFFA3D803FEC7EA01C00001ED03
+80A26D14076C16006E5B017F140E80013F5CA26E133C011F14386E1378010F1470800107
+5CA26D6C485AA2ECFE0301015CECFF076D91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA2
+6E5AA36E5AA26E5AA230297FA833>I<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000
+A26D6D7E000160A26D6E13016C604B138002801503017F5F4B13C0D93FC0013F49C7FCA2
+913AE00E1FE00F011F160E17F09126F01C0F131E010F161C033C13F8902707F838075BA2
+037813FC902703FC70035BA2913AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA3
+6EC76CC8FCA2023E80021E141EA242297FA845>I<3803FF80000F13F0381F01FC383F80
+FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA0FE0EA1F80EA3F00127E5AA4145F007E
+13DF393F839FFC381FFE0F3803FC031E1B7E9A21>97 D<EAFFE0A3120FACEBE1FE9038EF
+FF809038FE07E09038F803F09038F001F89038E000FCA2157EA2157FA8157EA315FCA290
+38F001F89038F803F090389C0FE090380FFF80390E01FC00202A7EA925>I<EB3FF03801
+FFFC3803F03E380FC07FEA1F80EA3F00A248133E007E90C7FCA212FEA7127EA2127F6CEB
+03801380001FEB0700380FE00E3803F83C3801FFF838003FC0191B7E9A1E>I<EC7FF0A3
+1407ACEB3F873801FFF73807F03F380FC00F381F8007EA3F00A2127EA312FEA8127EA27E
+A2381F800F380FC01F3907E07FFF3801FFE738007F87202A7EA925>I<EB3FC03801FFF0
+3803E07C380F803E001F7F130048EB0F80127E15C0A200FE1307A2B6FCA248C8FCA3127E
+A2127F6CEB01C07E390F8003803907C007003803F01E3800FFFCEB3FE01A1B7E9A1F>I<
+EB07F8EB3FFCEB7E3E3801FC7FEA03F813F01207143E1400A7B512C0A33807F000B3A338
+7FFF80A3182A7EA915>I<9038FF80F00003EBE3F8390FC1FE1C391F007C7C48137E003E
+EB3E10007EEB3F00A6003E133E003F137E6C137C380FC1F8380BFFE00018138090C8FC12
+38A2123C383FFFF814FF6C14C06C14E06C14F0121F383C0007007CEB01F8481300A4007C
+EB01F0A2003FEB07E0390FC01F806CB5120038007FF01E287E9A22>I<EAFFE0A3120FAC
+147E9038E1FF809038E30FC001E413E0EBE80701F813F013F0A213E0B039FFFE3FFFA320
+2A7DA925>I<1207EA0F80EA1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120F
+B3A3EAFFFEA30F2B7EAA12>I<EAFFE0A3120FB3B2EAFFFEA30F2A7EA912>108
+D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D80FC49038F101FC9039C803F200
+01D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A3331B7D9A38>I<38FFC07E9038C1
+FF809038C30FC0D80FC413E0EBC80701D813F013D0A213E0B039FFFE3FFFA3201B7D9A25
+>I<EB3FE03801FFFC3803F07E390FC01F80391F800FC0393F0007E0A2007EEB03F0A300
+FE14F8A8007E14F0A26CEB07E0A2391F800FC0390FC01F803907F07F003801FFFC38003F
+E01D1B7E9A22>I<38FFE1FE9038EFFF809038FE0FE0390FF803F09038F001F801E013FC
+140015FEA2157FA8157E15FEA215FC140101F013F89038F807F09038FC0FE09038EFFF80
+9038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FFC1F0EBC7FCEBC63E380FCC7F13
+D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114 D<3803FE30380FFFF0EA3E03EA78
+00127000F01370A27E00FE1300EAFFE06CB4FC14C06C13E06C13F0000713F8C6FCEB07FC
+130000E0137C143C7E14387E6C137038FF01E038E7FFC000C11300161B7E9A1B>I<13E0
+A41201A31203A21207120F381FFFE0B5FCA2380FE000AD1470A73807F0E0000313C03801
+FF8038007F0014267FA51A>I<39FFE07FF0A3000F1307B2140FA2000713173903F067FF
+3801FFC738007F87201B7D9A25>I<39FFFC03FFA3390FF000F0000714E07F0003EB01C0
+A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB3F9C14FC6D5AA26D5AA36D5A
+A26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B0FE00FE001C02607F007EB0380A201F8
+EBF00700031600EC0FF801FC5C0001150EEC1FFC2600FE1C5B15FE9039FF387E3C017F14
+38EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2EC800701075CA22E1B7F9A31>I<
+39FFFC1FFEA33907F003803803F8079038FC0F003801FE1E00005BEB7F3814F86D5A6D5A
+130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F803901E01FC0D803C013E0EB800F
+39FFF03FFFA3201B7F9A23>I<39FFFC03FFA3390FF000F0000714E07F0003EB01C0A2EB
+FC0300011480EBFE070000140013FFEB7F0EA2149EEB3F9C14FC6D5AA26D5AA36D5AA26D
+5AA25CA21307003890C7FCEA7C0FEAFE0E131E131C5BEA74F0EA3FE0EA0F8020277F9A23
+>I E /Fn 75 127 df<127012F8B012701200A5127012F8A31270051C779B18>33
+D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5
+12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18>
+I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C38013C7A338F1C0001279123F
+6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EBC7001271EA79DEEA3FFEEA1F
+F8EA07E0EA01C0A3120011247D9F18>I<EA3803387C0780A2EAEE0F1400A25B131EA213
+3EEA7C3CA2EA387CEA0078A213F85B12015BA212035BA21207EB8380EB87C0120FEB0EE0
+A2121F121EA2123E383C07C0A23818038013247E9F18>I<EA01C0EA07E0487EEA0E7048
+7EA4EB73F813F313E3380FC1C0EBC38013831303381F0700EA3F87EA7B8EEA71CEEAE1FC
+12E0137CEB7870A2EA70FE387FFFE0EA3FC7380F03C0151C7F9B18>I<1238127CA2127E
+123E120EA3121CA2123812F812F012C0070E789B18>I<137013F0EA01E0EA03C0EA0780
+EA0F00121E121C5AA25AA45AA81270A47EA27E121E7EEA0780EA03C0EA01F0120013700C
+24799F18>I<126012F012787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA01
+C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18>I<EA01C0A4EA41C138F1C780EA
+FDDF387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C100EA01C0A41114
+7D9718>I<136013F0A7387FFFC0B512E0A26C13C03800F000A7136013147E9718>I<121C
+123E127E127F123F121F1207120E121E127C12F81260080C788518>I<387FFFC0B512E0
+A26C13C013047E8F18>I<1230127812FCA2127812300606778518>I<1303EB0780A2130F
+14005B131EA2133E133C137C1378A213F85B12015B12035BA212075B120F90C7FCA25A12
+1E123E123CA2127C127812F85AA2126011247D9F18>I<EA01F0EA07FC487EEA1F1FEA1C
+0738380380007813C0EA7001A238E000E0A9EAF001007013C0A2EA780300381380381C07
+00EA1F1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203A21207120F123F12FF12FB12
+431203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA03F0EA0FFEEA3FFF387C0F80387003
+C0EAE00138F000E0A21260C7FCA2EB01C0A21303EB0780EB0F00131E5B5B5B485AEA07C0
+485A381E00E05AEA7FFFB5FC7E131C7E9B18>I<131F5B1377A213E7120113C7EA038712
+071307120E121E123C1238127812F0B512F8A338000700A6EB7FF0A3151C7F9B18>52
+D<137E48B4FC00071380380F83C0EA1E03121C3838018090C7FC5AA2EAE1F8EAE7FEB5FC
+38FE078038F803C0EAF001EB00E05A7E1270A3383801C0EA3C03381E0780380FFF006C5A
+EA01F8131C7E9B18>54 D<1230127812FCA2127812301200A81230127812FCA212781230
+0614779318>58 D<1218123C127EA2123C12181200A81218123C127EA2123E121E120E12
+1C123C127812F01260071A789318>I<14C0EB03E01307EB1FC0EB3F80EBFE00485AEA07
+F0485AEA3F8048C7FC12FCA2127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E013
+03EB00C013187E9918>I<387FFFC0B512E0A3C8FCA4B512E0A36C13C0130C7E9318>I<12
+6012F87E127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E0A2EB1FC0EB3F80EBFE
+00485AEA07F0485AEA3F8048C7FC12FC5A126013187E9918>I<EA0FF0EA3FFC48B4FCEA
+700F38F00380A2EA600738000F00133E5BEA01F05B485AA55BC8FCA5EA0380487EA36C5A
+111C7D9B18>I<137013F8A213D8A2EA01DCA3138CEA038EA4EA0707A5380FFF80A3EA0E
+03381C01C0A3387F07F000FF13F8007F13F0151C7F9B18>65 D<EA7FF8EAFFFE6C7E381C
+0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114C01303EB0F80387FFF0048
+5AEA7FF8141C7F9B18>68 D<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390
+C7FCA21438A5B512F8A3151C7F9B18>I<B512F8A3381C0038A41400A21307A3EA1FFFA3
+EA1C07A390C7FCA7EAFFC0A3151C7F9B18>I<387F07F038FF8FF8387F07F0381C01C0A9
+EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F0151C7F9B18>72
+D<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<EAFFC0A300
+1CC7FCB114E0A5B5FCA3131C7E9B18>76 D<387E07F038FF0FF8387F07F0381D81C0A313
+C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C
+7F9B18>78 D<EA0FFE383FFF804813C0EA7803EA700100F013E0EAE000B0EAF001007013
+C0EA7C07EA7FFF6C1380380FFE00131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01E013
+001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA7F
+F8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF005BA2EA1C0F7FEB0380
+A5149CA3387F01F8EAFF81387F00F0161C7F9B18>82 D<3803F1C0EA1FFF5AEA7C0FEA70
+03EAE001A390C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A21260
+12E0130100F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA238E0
+7038A400001300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F0138
+0783C03803FF806C1300EA007C171C809B18>I<38FE03F8EAFF07EAFE03381C01C0EA1E
+03000E1380EA0F0700071300A2EA038EA2EA01DCA3EA00F8A21370A9EA01FC487E6C5A15
+1C7F9B18>89 D<EAFFF8A3EAE000B3ACEAFFF8A30D24779F18>91
+D<126012F0A27E1278127C123CA2123E121E121F7EA27F12077F1203A27F12017F12007F
+1378A2137C133C133E131EA2131F7F14801307A2EB030011247D9F18>I<EAFFF8A3EA00
+38B3ACEAFFF8A30D247F9F18>I<EA0180EA07C0EA1FF0EA7EFCEAF83EEAE00E0F067C9B
+18>I<387FFFC0B512E0A26C13C013047E7F18>I<1206121E123E12381270A212E0A312F8
+12FC127CA21238070E789E18>I<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF12
+07121FEA7F03127812E0A3EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>I<127E
+12FE127E120EA5133EEBFF80000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80
+E013C1EBFFC0000E138038063E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838
+030048C7FCA25AA61270EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I<
+EB1F80133F131F1303A5EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007
+A2EA380FEA3C1F381FFFF0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA
+3E0F38380780EA7003A238E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF80
+00071300EA01F812147D9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0
+B5FCA23801C000AEEA7FFFA3131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00
+487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F03870
+0070481338A4007813F0EA7E03381FFFC06C13803801FC00151F7F9318>I<127E12FE12
+7E120EA5133EEBFF80000F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC17
+1C809B18>I<EA0380EA07C0A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C
+18>I<EAFFC0A31201B3A4B51280A3111C7D9B18>108 D<38F9C1C038FFF7F013FF383E3E
+38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB3E3E1714809318>I<EA7E3E38FEFF80007F13
+C0EA0FC1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC1714809318>I<EA01F0EA0F
+FE487E383E0F80EA3803387001C0A238E000E0A5EAF001007013C0EA7803383C0780EA3E
+0F381FFF006C5AEA01F013147E9318>I<EA7E3E38FEFF80007F13C0380FC1E01380EB00
+70120E1438A6000F1370A2EB80E013C1EBFFC0000E1380EB3E0090C7FCA7EA7FC0487E6C
+5A151E809318>I<3801F380EA07FBEA1FFFEA3E1FEA380FEA7007A2EAE003A6EA7007A2
+EA380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB1FF0EB3FF8EB1FF0151E7E9318>I<38
+FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0005BA290C7FCA9EAFFFC7F5B14147E9318>I<
+EA07F7EA3FFF5AEA780FEAE007A3007CC7FCEA7FE0EA1FFCEA03FEEA001F38600780EAE0
+03A212F038F80F00B5FC13FCEAE7F011147D9318>I<487E1203A4387FFFC0B5FCA23803
+8000A9144014E0A33801C1C013FF6C1380EB3E0013197F9818>I<387E07E0EAFE0FEA7E
+07EA0E00AC1301EA0F033807FFFC6C13FE3801FCFC1714809318>I<387F8FF000FF13F8
+007F13F0381C01C0380E0380A338070700A3138FEA038EA3EA01DCA3EA00F8A213701514
+7F9318>I<38FF07F8138F1307383800E0A4381C01C0137113F9A213D9EA1DDD000D1380
+A3138DEA0F8FA23807070015147F9318>I<387F8FF0139F138F380F0700EA078EEA039E
+EA01DC13F81200137013F07FEA01DCEA039E138EEA0707000E1380387F8FF000FF13F800
+7F13F015147F9318>I<387F8FF000FF13F8007F13F0380E01C0EB0380A21207EB0700A2
+EA0387A2138EEA01CEA213CC120013DC1378A31370A313F05B1279EA7BC0EA7F806CC7FC
+121E151E7F9318>I<383FFFF05AA2387001E0EB03C0EB078038000F00131E5B13F8485A
+EA03C0485A380F0070121E5A5AB512F0A314147F9318>I<EB07E0131F137FEB780013E0
+AB1201EA7FC0485AA26C7EEA01E01200AB1378EB7FE0131F130713247E9F18>I<126012
+F0B3B012600424769F18>I<127CB4FC13C01203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0
+005BABEA03C012FF90C7FC127C13247E9F18>I<EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA
+60C00F067C9B18>I E /Fo 74 123 df<90381F83E09038F06E303901C07878380380F8
+903800F03048EB7000A7B612803907007000B2383FE3FF1D20809F1B>11
+D<133FEBE0C0EA01C0380381E0EA0701A290C7FCA6B512E0EA0700B2383FC3FC1620809F
+19>I<EB3FE013E0EA01C1EA0381EA0700A8B5FCEA0700B2383FE7FC1620809F19>I<9038
+1F81F89038F04F043901C07C06390380F80FEB00F05A0270C7FCA6B7FC3907007007B23A
+3FE3FE3FE02320809F26>I<EA7038EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008
+A2EA2010EA40200F0E7F9F17>34 D<127012F812FCA212741204A31208A21210A2122012
+40060E7C9F0D>39 D<13401380EA01005A12061204120C5AA212381230A212701260A412
+E0AC1260A412701230A212381218A27E120412067E7EEA008013400A2E7BA112>I<7E12
+407E12307E1208120C7EA212077EA213801201A413C0AC1380A412031300A25A1206A25A
+120812185A12205A5A0A2E7EA112>I<127012F012F8A212781208A31210A31220A21240
+050E7C840D>44 D<EAFFF0A20C02808A0F>I<127012F8A3127005057C840D>I<EA03F0EA
+0E1C487EEA1806EA380738700380A400F013C0AD00701380A3EA780700381300EA1806EA
+1C0E6C5AEA03F0121F7E9D17>48 D<13801203120F12F31203B3A6EA07C0EAFFFE0F1E7C
+9D17>I<EA03F0EA0C1CEA100E487E00401380128000F013C0EAF803A3EA200712001480
+A2EB0F00130E5B5B5B13605B485A48C7FC000613405A5A00101380EA3FFF5AB5FC121E7E
+9D17>I<EA03F0EA0C1CEA100EEA200F007813801307A2EA380F12001400A2131E131C13
+70EA07F0EA003C130E130FEB0780A214C0122012F8A300F013801240EB0F00EA200EEA18
+3CEA07F0121F7E9D17>I<1306A2130EA2131E132EA2134E138EA2EA010E1202A2120412
+08A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17>I<EA1803EA1FFE5B
+5B13E00010C7FCA6EA11F0EA161CEA180EEA10071480EA0003A214C0A3127012F0A200E0
+13801240EB0700EA20066C5AEA0838EA07E0121F7E9D17>I<137CEA0182EA0701380E03
+80EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEAF406EAF807EB0380A200F0
+13C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D17>I<1240387FFFE0
+14C0A23840008038800100A21302485AA25B5BA25BA21360A213E05B1201A41203A76C5A
+131F7E9D17>I<EA03F0EA0C0CEA1006EA3003382001801260A3127038780300123EEA3F
+06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F38300F80EA6007EB01C012C01300A31480EA
+600100201300EA1002EA0C0CEA03F0121F7E9D17>I<EA03F0EA0E18487E487E13071270
+EB038012F0A214C0A5EA7007A21238EA180BEA0E13EA03E338000380A3EB07001230EA78
+06130EEA700CEA2018EA1070EA0FC0121F7E9D17>I<127012F8A312701200AA127012F8
+A3127005147C930D>I<127012F8A312701200AA127012F012F8A212781208A31210A312
+20A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA2EBC03E
+EB801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E14E039FF801FFE1F207F
+9F22>65 D<B512E0380F0078141EA2801580A515005C141E147CEBFFF0EB007C141FEC0F
+80EC07C0140315E0A515C014071580EC0F00143EB512F01B1F7E9E20>I<90380FE01090
+38381C309038E002703803C00139078000F048C71270121E15305A1510127C127800F814
+00A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E00300EB380CEB0FF01C
+217E9F21>I<B512F83807801EEC0780EC03C0EC01E0EC00F015701578A2153CA3153EA8
+153CA2157C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F7F9E23>I<B6128038
+0F000F14031401140015C01540A314401500A214C0130113FF130113001440A3EC0020A3
+1540A315C01401EC0380140FB6FC1B1F7E9E1F>I<B61280380780071401A2140015C015
+40A4EC2000A3146014E013FF138014601420A391C7FCA87FEAFFFE1A1F7F9E1E>I<9038
+0FE0109038381C309038E002703803C00139078000F048C71270121E15305A1510127C12
+7800F81400A7EC3FFEEC01F000781300127C123CA27EA27E6C7E3903C001703900E00230
+9038380C1090380FF0001F217E9F24>I<39FFF07FF8390F000780AD90B5FCEB0007AF39
+FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<EAFFF8EA0F8090C7
+FCB21402A414061404A2140C141C147CB512FC171F7E9E1C>76 D<B46CEB07FE000715C0
+A2D805C0130BA2D804E01313A301701323A26D1343A36D1383A290380E0103A3EB0702A3
+EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>I<B4EB0FF8390F80
+03E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03C0EB01E0A2EB00F0
+1478A2143C141EA2140F1407A214031401123E38FF80001D1F7E9E22>I<EB1FE0EB7038
+3801C00E48487E39070003804814C0001EEB01E048EB00F0A2007C14F8A20078147800F8
+147CA900781478007C14F8A2003C14F0003E1301001E14E06CEB03C06C14803903800700
+3801E01E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80EC0780A215C0A415
+80A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<EB1FE0EB70383801C00E
+48487E39070003804814C0001EEB01E0003E14F0003C1300007C14F8A20078147800F814
+7CA900781478007C14F8A2003C14F0383E0781391E0841E0390F1023C000071480390390
+17003801D01E3900783804EB1FF8EB001CEC0C0CEC0E1CEC0FF8A2140715F0EC01E01E29
+7E9F23>I<B57E380F00F0143C8080A21580A41500A2141E5C14F0EBFF80EB01C0EB0070
+A280143CA3143EA31504143F141FEC0F0839FFF00788C7EA01F01E207E9E21>I<3803F0
+40380C0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF86CB4FC00
+071380C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F8018038C60300
+EA81FC14217E9F19>I<007FB512E038780F010060EB006000401420A200C01430008014
+10A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC0080B3A46C
+EB01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003FE391F80
+00F86CC7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213F8EB7804
+A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF07FF81FF0
+3B1F000FC007C06C903907800180170015C001805C00071502EC09E013C000035DEC19F0
+1410D801E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C144090383D
+000F133F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<12FFA212C0
+B3B3A512FFA2082D7CA10D>91 D<EA0804EA1008EA2010A2EA4020A2EA8040A3EAB85CEA
+FC7EA2EA7C3EEA381C0F0E7A9F17>I<12FFA21203B3B3A512FFA2082D80A10D>I<120812
+101220A21240A21280A312B812FCA2127C1238060E7D9F0D>96 D<EA1FE0EA3030EA7818
+131CEA300E1200A313FEEA078EEA1E0E1238127800F01310A3131E127838386720380F83
+C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00C0001C13E01470A21478
+A6147014F014E0001E13C0381A018038198700EA107C15207E9F19>I<EA01FCEA0706EA
+1C0F123813060078C7FC127012F0A61270127800381380A2381C0100EA0706EA01F81114
+7F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112381278127012F0A61270
+A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA0E1C487E487EA21270EB
+038012F0A2B5FC00F0C7FCA31270A26C1380A2381C0100EA0706EA01F811147F9314>I<
+137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE01020809F0E>I<14E038
+03E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230A2
+EA3FFE381FFF8014C0383001E038600070481330A4006013606C13C0381C03803803FC00
+141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A2121CAE38FF8FF014207E
+9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F9E0C>I<13E0EA01F0A3
+EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA6180EA3F000C28829E0E>
+I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0EA1DF0EA1E70EA1C3813
+3C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12FC121CB3ABEAFF8009207F
+9F0C>I<391C3E03E039FCC30C30391D039038391E01E01CA2001C13C0AE3AFF8FF8FF80
+21147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF8FF014147E9319>I<EA01
+F8EA070E381C0380383801C0A2387000E0A200F013F0A6007013E0A2383801C0A2381C03
+8038070E00EA01F814147F9317>I<EA1C7CEAFD87381E018014C0381C00E014F0147014
+78A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7FCA8B47E151D7E9319>I<38
+01F04038070CC0EA0E02EA1C03EA38011278127012F0A6127012781238EA1C03EA0C05EA
+0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18EA1E3CA21318EA1C00AEEA
+FFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE000127CEA3FE0EA1FF0EA07F8
+EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F147F9312>I<1202A31206A212
+0EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F9B12>I<381C0380EAFC1F
+EA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83F8383E00E0001C13C06C13
+80A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3132015147F9318>I<39
+FF9FE1FC393C078070391C030060EC8020000E1440A214C0D80704138014E0A239038861
+001471A23801D032143A143E3800E01CA2EB6018EB40081E147F9321>I<38FF87F8381E
+03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F01370137813F8139CEA010E1202
+EA060738040380000C13C0003C13E038FE07FC16147F9318>I<38FF83F8383E00E0001C
+13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A31320A25BA3EA
+F080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E1260EA401C133813781370EA
+00E0120113C0EA038012071301120E121EEA1C03EA3802EA7006130EEAFFFE10147F9314
+>I E /Fp 13 122 df<DB1FFC14C00203B5EAC001021FECF003027FECFC07903B01FFFC
+00FE0F010701C0EB1F9F4948C7EA07FFD93FF880494814004948157F485B4A153F4890C9
+121F485A000F170F5B001F1707A2485A1803A2127FA24993C8FCA212FFAA041FB6128012
+7FA27FDC0001EBC000123FA36C7EA26C7EA26C7E7E6C7F806C7F6D6C5CEB3FFCD90FFF5C
+6D01C0EB1FBF010101FCEBFF1F6D6CB5EAFE0F021FECF8030203ECE0009126001FFEC9FC
+413D7BBB4C>71 D<B6D8F803B612E0A426007FF0C70001EBC000B3A491B8FCA402F0C712
+01B3A7B6D8F803B612E0A4433B7CBA4C>I<B612FEA426007FF0C9FCB3ADEF03C0A51707
+1880A3170FA3171FA2173F177F17FF5E04071300163FB9FCA4323B7DBA3A>76
+D<B500F00207B512E0808080D8007F92390007E0006E6F5A81017B7F81137901787F6E7E
+6E7E81141F6E7E6E7F6E7F82806E7F6F7E6F7E826F7E816F13806F13C017E06F13F081EE
+7FF8EE3FFC17FEEE1FFF827013837013C318E37013F382EF7FFBEF3FFFA283838383A283
+83187F183FA201FC161FB500FC150F18071803A2433B7CBA4C>78
+D<B600F80107B512E0A426007FF0C83807E000725AB3B3A3013F4C5AA280011F4CC7FCA2
+6D6C151E0107163E6E5D6D6C5D6D6D13019026007FE0EB0FE0DA3FFCEB7FC0020FB65A02
+034AC8FCDA007F13F003071380433C7DBA4A>85 D<EB3FFE48B512E0000714F8390FE007
+FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F38
+03FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F
+0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4
+FC021F13F0027F13FC9138FC03FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF0
+17F8A2EE07FCA317FEA917FCA3160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EB
+FF009039F0FC07FE91387FFFF8D9E01F13E09026C003FEC7FC2F3C7DBB36>I<EA01E0EA
+07F8487EA2487EA46C5AA26C5AEA01E0C8FCAB13FE127FA412071203B3AAB512F0A4143D
+7DBC1A>105 D<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE0D807F8EB0FF0
+48486D7EA248486D7E003F81A248486D7EA400FF1680A9007F1600A36C6C495AA2001F5D
+6D1307000F5D6C6C495AD803FEEB3FE03A00FF80FF806DB5C7FC010F13F8010113C02926
+7DA530>111 D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F00079038E0FFC000
+035BEBFD80A201FFEB7F809138003F00151E92C7FC5BB3A3B512FCA422267DA528>114
+D<90383FF0383903FFFE7848EBFFF8381FC00F383F0003003E13005A157812FCA27E6C14
+0013C013FC387FFFF06C13FEECFF806C14C06C14E0000314F0C614F8011F13FCEB007FEC
+07FE0070130100F01300157E7EA27E157C6C14FC6C14F890388001F09038F00FE000F9B5
+12C0D8F07F130038C01FF81F267DA526>I<130FA55BA45BA25BA25B5A5A5A001FEBFFF0
+B6FCA3000190C7FCB3153CA86C14781480017F13F090383FC1E090381FFFC06D13809038
+01FE001E377EB626>I<B500F0EBFFFCA4D803FEC7EA1F806D15006C151E806C5DA26E13
+7C017F14786E13F8013F5CECF001011F5CECF803010F5CA2ECFC0701075CECFE0F010391
+C7FC6E5A6D131E15BE6D13BC15FC6E5AA36E5AA26E5AA26E5AA26E5AA2140F92C8FC5C14
+1E0008133E007F133C147C38FF807814F8EB81F0EB83E06C485A387C1F80D83FFFC9FCEA
+1FFCEA07F02E377EA533>121 D E end
TeXDict begin
-%%EndSetup
-%%Page: 1 1
-0 bop 0 1152 a Fp(GNU)33 b(History)f(Library)p 0 1201 1950
-17 v 1035 1250 a Fo(Edition)16 b(2.0,)e(for)h Fn(History)f(Library)g
-Fo(V)l(ersion)i(2.0.)1759 1304 y(July)g(1994)0 2443 y Fm(Brian)23
-b(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
-b(oundation)0 2509 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6
-b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)p 0 2545 1950 9
-v eop
-%%Page: 2 2
-1 bop 0 295 a Fo(This)16 b(do)q(cumen)o(t)g(describ)q(es)h(the)f(GNU)f
-(History)g(library)l(,)h(a)g(programming)e(to)q(ol)i(that)f(pro)o(vides)h(a)f
-(consisten)o(t)0 358 y(user)g(in)o(terface)h(for)e(recalling)j(lines)g(of)e
-(previously)h(t)o(yp)q(ed)g(input.)0 495 y(Published)h(b)o(y)f(the)f(F)l(ree)
-g(Soft)o(w)o(are)f(F)l(oundation)0 557 y(675)g(Massac)o(h)o(usetts)g(Av)o(en)
-o(ue,)0 619 y(Cam)o(bridge,)h(MA)g(02139)f(USA)0 756 y(P)o(ermission)f(is)g
-(gran)o(ted)f(to)f(mak)o(e)h(and)h(distribute)h(v)o(erbatim)e(copies)h(of)f
-(this)h(man)o(ual)g(pro)o(vided)g(the)f(cop)o(yrigh)o(t)0 818
-y(notice)k(and)f(this)h(p)q(ermission)h(notice)e(are)g(preserv)o(ed)h(on)f
-(all)h(copies.)0 955 y(P)o(ermission)f(is)f(gran)o(ted)f(to)h(cop)o(y)g(and)g
-(distribute)h(mo)q(di\014ed)h(v)o(ersions)e(of)f(this)i(man)o(ual)f(under)h
-(the)f(conditions)0 1018 y(for)e(v)o(erbatim)g(cop)o(ying,)h(pro)o(vided)h
-(that)d(the)i(en)o(tire)g(resulting)h(deriv)o(ed)f(w)o(ork)f(is)h
-(distributed)h(under)f(the)g(terms)0 1080 y(of)i(a)g(p)q(ermission)h(notice)g
-(iden)o(tical)h(to)e(this)g(one.)0 1217 y(P)o(ermission)20
-b(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f(distribute)i(translations)f(of)f
-(this)h(man)o(ual)f(in)o(to)h(another)f(language,)0 1279 y(under)c(the)f(ab)q
-(o)o(v)o(e)g(conditions)h(for)e(mo)q(di\014ed)j(v)o(ersions,)e(except)g(that)
-g(this)g(p)q(ermission)i(notice)e(ma)o(y)g(b)q(e)h(stated)0
-1341 y(in)h(a)f(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l(oundation.)0
-2636 y(Cop)o(yrigh)o(t)226 2635 y(c)214 2636 y Fl(\015)g Fo(1989,)f(1991)g(F)
-l(ree)h(Soft)o(w)o(are)f(F)l(oundation,)h(Inc.)p eop
-%%Page: 1 3
-2 bop 0 -83 a Fo(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o(ely)1157
-b(1)0 158 y Fk(1)41 b(Using)14 b(History)h(In)n(teractiv)n(ely)62
-330 y Fo(This)i(c)o(hapter)e(describ)q(es)j(ho)o(w)d(to)h(use)g(the)g(GNU)g
-(History)f(Library)i(in)o(teractiv)o(ely)l(,)g(from)e(a)g(user's)h(stand-)0
-392 y(p)q(oin)o(t.)23 b(It)16 b(should)h(b)q(e)f(considered)i(a)d(user's)h
-(guide.)23 b(F)l(or)15 b(information)h(on)g(using)h(the)f(GNU)g(History)f
-(Library)0 454 y(in)h(y)o(our)f(o)o(wn)f(programs,)g(see)i(Chapter)e(2)h
-([Programming)f(with)i(GNU)f(History],)f(page)h(5.)0 663 y
-Fm(1.1)33 b(History)15 b(In)n(teraction)62 800 y Fo(The)j(History)g(library)g
-(pro)o(vides)h(a)e(history)h(expansion)h(feature)e(that)g(is)i(similar)g(to)e
-(the)h(history)f(expan-)0 862 y(sion)k(pro)o(vided)h(b)o(y)f
-Fn(csh)p Fo(.)36 b(The)22 b(follo)o(wing)f(text)g(describ)q(es)h(the)f(syn)o
-(tax)f(used)i(to)e(manipulate)i(the)f(history)0 924 y(information.)62
-1061 y(History)11 b(expansion)i(tak)o(es)d(place)i(in)h(t)o(w)o(o)d(parts.)18
-b(The)11 b(\014rst)g(is)h(to)f(determine)h(whic)o(h)g(line)h(from)e(the)g
-(previous)0 1124 y(history)h(should)h(b)q(e)f(used)h(during)f(substitution.)
-20 b(The)12 b(second)g(is)h(to)e(select)h(p)q(ortions)g(of)g(that)f(line)i
-(for)f(inclusion)0 1186 y(in)o(to)f(the)h(curren)o(t)f(one.)18
-b(The)12 b(line)h(selected)f(from)f(the)g(previous)h(history)g(is)f(called)i
-(the)e Fj(ev)o(en)o(t)p Fo(,)h(and)f(the)h(p)q(ortions)0 1248
-y(of)h(that)g(line)i(that)e(are)g(acted)g(up)q(on)h(are)g(called)h
-Fj(w)o(ords)p Fo(.)j(The)c(line)h(is)f(brok)o(en)f(in)o(to)h(w)o(ords)f(in)h
-(the)f(same)h(fashion)0 1310 y(that)j(Bash)h(do)q(es,)h(so)e(that)g(sev)o
-(eral)h(English)i(\(or)d(Unix\))h(w)o(ords)f(surrounded)i(b)o(y)f(quotes)f
-(are)h(considered)h(as)0 1373 y(one)c(w)o(ord.)0 1565 y Fi(1.1.1)30
-b(Ev)n(en)n(t)16 b(Designators)62 1702 y Fo(An)g(ev)o(en)o(t)f(designator)g
-(is)g(a)g(reference)h(to)f(a)g(command)g(line)i(en)o(try)d(in)i(the)g
-(history)f(list.)0 1847 y Fn(!)216 b Fo(Start)14 b(a)g(history)h
-(substitution,)g(except)h(when)f(follo)o(w)o(ed)g(b)o(y)g(a)f(space,)h(tab,)f
-(the)h(end)g(of)g(the)g(line,)240 1909 y Fn(=)g Fo(or)g Fn(\()p
-Fo(.)0 1989 y Fn(!!)192 b Fo(Refer)16 b(to)e(the)i(previous)f(command.)20
-b(This)c(is)g(a)f(synon)o(ym)g(for)f Fn(!-1)p Fo(.)0 2068 y
-Fn(!n)192 b Fo(Refer)16 b(to)e(command)h(line)i Fj(n)p Fo(.)0
-2148 y Fn(!-n)168 b Fo(Refer)16 b(to)e(the)i(command)f Fj(n)g
-Fo(lines)i(bac)o(k.)0 2227 y Fn(!string)72 b Fo(Refer)16 b(to)e(the)i(most)e
-(recen)o(t)h(command)g(starting)g(with)g Fj(string)p Fo(.)0
-2298 y Fn(!?string)p Fo([)p Fn(?)p Fo(])240 2360 y(Refer)h(to)e(the)i(most)e
-(recen)o(t)h(command)g(con)o(taining)h Fj(string)p Fo(.)0 2440
-y Fn(!#)192 b Fo(The)15 b(en)o(tire)h(command)f(line)i(t)o(yp)q(ed)f(so)e
-(far.)0 2510 y Fn(^string1^string2^)240 2573 y Fo(Quic)o(k)j(Substitution.)22
-b(Rep)q(eat)16 b(the)g(last)f(command,)h(replacing)h Fj(string1)h
-Fo(with)e Fj(string2)p Fo(.)21 b(Equiv-)240 2635 y(alen)o(t)15
-b(to)g Fn(!!:s/string1/string2/)p Fo(.)p eop
-%%Page: 2 4
-3 bop 0 -83 a Fo(2)1497 b(GNU)15 b(History)g(Library)0 158
-y Fi(1.1.2)30 b(W)-5 b(ord)15 b(Designators)62 295 y Fo(A)i
-Fn(:)g Fo(separates)f(the)h(ev)o(en)o(t)f(sp)q(eci\014cation)j(from)d(the)g
-(w)o(ord)g(designator.)25 b(It)17 b(can)g(b)q(e)g(omitted)g(if)g(the)g(w)o
-(ord)0 358 y(designator)d(b)q(egins)h(with)f(a)f Fn(^)p Fo(,)h
-Fn($)p Fo(,)f Fn(*)h Fo(or)f Fn(\045)p Fo(.)20 b(W)l(ords)13
-b(are)h(n)o(um)o(b)q(ered)g(from)f(the)h(b)q(eginning)i(of)d(the)h(line,)i
-(with)e(the)0 420 y(\014rst)h(w)o(ord)f(b)q(eing)j(denoted)f(b)o(y)f(a)g(0)f
-(\(zero\).)0 569 y Fn(0)h(\(zero\))57 b Fo(The)15 b Fn(0)p
-Fo(th)g(w)o(ord.)20 b(F)l(or)14 b(man)o(y)h(applications,)h(this)g(is)g(the)f
-(command)g(w)o(ord.)0 656 y Fn(n)216 b Fo(The)15 b Fj(n)p Fo(th)h(w)o(ord.)0
-744 y Fn(^)216 b Fo(The)15 b(\014rst)g(argumen)o(t;)f(that)h(is,)g(w)o(ord)g
-(1.)0 831 y Fn($)216 b Fo(The)15 b(last)h(argumen)o(t.)0 918
+1 0 bop 0 693 a Fp(GNU)33 b(History)f(Library)p 0 743
+1950 17 v 1035 791 a Fo(Edition)16 b(2.1,)e(for)h Fn(History)f(Library)
+g Fo(V)l(ersion)i(2.1.)1718 845 y(Marc)o(h)e(1996)0 2467
+y Fm(Brian)23 b(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)
+-6 b(oundation)0 2534 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6
+b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)p 0 2570
+1950 9 v eop
+2 1 bop 0 320 a Fo(This)16 b(do)q(cumen)o(t)g(describ)q(es)h(the)f(GNU)
+f(History)g(library)l(,)h(a)g(programming)e(to)q(ol)i(that)f(pro)o
+(vides)h(a)f(consisten)o(t)0 382 y(user)g(in)o(terface)h(for)e
+(recalling)j(lines)g(of)e(previously)h(t)o(yp)q(ed)g(input.)0
+519 y(Published)h(b)o(y)f(the)f(F)l(ree)g(Soft)o(w)o(are)f(F)l
+(oundation)0 582 y(675)g(Massac)o(h)o(usetts)g(Av)o(en)o(ue,)0
+644 y(Cam)o(bridge,)h(MA)g(02139)f(USA)0 781 y(P)o(ermission)f(is)g
+(gran)o(ted)f(to)f(mak)o(e)h(and)h(distribute)h(v)o(erbatim)e(copies)h
+(of)f(this)h(man)o(ual)g(pro)o(vided)g(the)f(cop)o(yrigh)o(t)0
+843 y(notice)k(and)f(this)h(p)q(ermission)h(notice)e(are)g(preserv)o
+(ed)h(on)f(all)h(copies.)0 980 y(P)o(ermission)f(is)f(gran)o(ted)f(to)h
+(cop)o(y)g(and)g(distribute)h(mo)q(di\014ed)h(v)o(ersions)e(of)f(this)i
+(man)o(ual)f(under)h(the)f(conditions)0 1043 y(for)e(v)o(erbatim)g(cop)
+o(ying,)h(pro)o(vided)h(that)d(the)i(en)o(tire)g(resulting)h(deriv)o
+(ed)f(w)o(ork)f(is)h(distributed)h(under)f(the)g(terms)0
+1105 y(of)i(a)g(p)q(ermission)h(notice)g(iden)o(tical)h(to)e(this)g
+(one.)0 1242 y(P)o(ermission)20 b(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)
+f(distribute)i(translations)f(of)f(this)h(man)o(ual)f(in)o(to)h
+(another)f(language,)0 1304 y(under)c(the)f(ab)q(o)o(v)o(e)g
+(conditions)h(for)e(mo)q(di\014ed)j(v)o(ersions,)e(except)g(that)g
+(this)g(p)q(ermission)i(notice)e(ma)o(y)g(b)q(e)h(stated)0
+1366 y(in)h(a)f(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l
+(oundation.)0 2661 y(Cop)o(yrigh)o(t)226 2660 y(c)214
+2661 y Fl(\015)g Fo(1989,)f(1991)g(F)l(ree)h(Soft)o(w)o(are)f(F)l
+(oundation,)h(Inc.)p eop
+1 2 bop 0 -58 a Fo(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o
+(ely)1157 b(1)0 183 y Fk(1)41 b(Using)14 b(History)h(In)n(teractiv)n
+(ely)62 380 y Fo(This)i(c)o(hapter)e(describ)q(es)j(ho)o(w)d(to)h(use)g
+(the)g(GNU)g(History)f(Library)i(in)o(teractiv)o(ely)l(,)g(from)e(a)g
+(user's)h(stand-)0 442 y(p)q(oin)o(t.)23 b(It)16 b(should)h(b)q(e)f
+(considered)i(a)d(user's)h(guide.)23 b(F)l(or)15 b(information)h(on)g
+(using)h(the)f(GNU)g(History)f(Library)0 505 y(in)h(y)o(our)f(o)o(wn)f
+(programs,)g(see)i(Chapter)e(2)h([Programming)f(with)i(GNU)f(History],)
+f(page)h(5.)0 747 y Fm(1.1)33 b(In)n(teractiv)n(e)16
+b(History)g(Expansion)62 886 y Fo(The)e(History)f(library)h(pro)o
+(vides)g(a)f(history)g(expansion)h(feature)f(that)g(is)g(similar)i(to)d
+(the)i(history)f(expansion)0 948 y(pro)o(vided)j(b)o(y)f
+Fn(csh)p Fo(.)20 b(This)15 b(section)h(describ)q(es)h(the)e(syn)o(tax)g
+(used)g(to)g(manipulate)h(the)g(history)f(information.)62
+1087 y(History)h(expansions)g(in)o(tro)q(duce)g(w)o(ords)f(from)g(the)h
+(history)f(list)i(in)o(to)e(the)h(input)g(stream,)f(making)g(it)h(easy)
+0 1150 y(to)g(rep)q(eat)g(commands,)h(insert)g(the)f(argumen)o(ts)g(to)
+g(a)g(previous)h(command)f(in)o(to)h(the)f(curren)o(t)h(input)g(line,)h
+(or)0 1212 y(\014x)d(errors)g(in)h(previous)g(commands)f(quic)o(kly)l
+(.)62 1351 y(History)c(expansion)i(tak)o(es)d(place)i(in)h(t)o(w)o(o)d
+(parts.)18 b(The)11 b(\014rst)g(is)h(to)f(determine)h(whic)o(h)g(line)h
+(from)e(the)g(previous)0 1413 y(history)h(should)h(b)q(e)f(used)h
+(during)f(substitution.)20 b(The)12 b(second)g(is)h(to)e(select)h(p)q
+(ortions)g(of)g(that)f(line)i(for)f(inclusion)0 1475
+y(in)o(to)f(the)h(curren)o(t)f(one.)18 b(The)12 b(line)h(selected)f
+(from)f(the)g(previous)h(history)g(is)f(called)i(the)e
+Fj(ev)o(en)o(t)p Fo(,)h(and)f(the)h(p)q(ortions)0 1538
+y(of)h(that)f(line)j(that)e(are)f(acted)i(up)q(on)g(are)e(called)j
+Fj(w)o(ords)p Fo(.)k(V)l(arious)13 b Fj(mo)q(di\014ers)j
+Fo(are)d(a)o(v)m(ailable)i(to)d(manipulate)j(the)0 1600
+y(selected)i(w)o(ords.)23 b(The)16 b(line)i(is)f(brok)o(en)f(in)o(to)g
+(w)o(ords)f(in)i(the)g(same)f(fashion)g(that)g(Bash)g(do)q(es,)g(so)g
+(that)g(sev)o(eral)0 1662 y(English)g(\(or)e(Unix\))h(w)o(ords)e
+(surrounded)j(b)o(y)e(quotes)h(are)f(considered)i(as)e(one)h(w)o(ord.)k
+(History)14 b(expansions)h(are)0 1725 y(in)o(tro)q(duced)h(b)o(y)g(the)
+f(app)q(earance)h(of)e(the)i(history)f(expansion)h(c)o(haracter,)e
+(whic)o(h)i(is)g(`)p Fn(!)p Fo(')e(b)o(y)h(default.)0
+1950 y Fi(1.1.1)30 b(Ev)n(en)n(t)16 b(Designators)62
+2089 y Fo(An)g(ev)o(en)o(t)f(designator)g(is)g(a)g(reference)h(to)f(a)g
+(command)g(line)i(en)o(try)d(in)i(the)g(history)f(list.)0
+2243 y Fn(!)216 b Fo(Start)14 b(a)g(history)h(substitution,)g(except)h
+(when)f(follo)o(w)o(ed)g(b)o(y)g(a)f(space,)h(tab,)f(the)h(end)g(of)g
+(the)g(line,)240 2305 y Fn(=)g Fo(or)g Fn(\()p Fo(.)0
+2396 y Fn(!)p Fj(n)191 b Fo(Refer)16 b(to)e(command)h(line)i
+Fj(n)p Fo(.)0 2488 y Fn(!-)p Fj(n)167 b Fo(Refer)16 b(to)e(the)i
+(command)f Fj(n)g Fo(lines)i(bac)o(k.)0 2579 y Fn(!!)192
+b Fo(Refer)16 b(to)e(the)i(previous)f(command.)20 b(This)c(is)g(a)f
+(synon)o(ym)g(for)f(`)p Fn(!-1)p Fo('.)0 2670 y Fn(!)p
+Fj(string)102 b Fo(Refer)16 b(to)e(the)i(most)e(recen)o(t)h(command)g
+(starting)g(with)g Fj(string)p Fo(.)p eop
+2 3 bop 0 -58 a Fo(2)1497 b(GNU)15 b(History)g(Library)0
+183 y Fn(!?)p Fj(string)t Fn([?])240 246 y Fo(Refer)h(to)f(the)g(most)g
+(recen)o(t)g(command)g(con)o(taining)h Fj(string)p Fo(.)21
+b(The)15 b(trailing)i(`)p Fn(?)p Fo(')d(ma)o(y)h(b)q(e)h(omitted)240
+308 y(if)g(the)f Fj(string)k Fo(is)d(follo)o(w)o(ed)f(immediately)i(b)o
+(y)e(a)g(newline.)0 395 y Fn(^)p Fj(string1)t Fn(^)p
+Fj(string2)t Fn(^)240 457 y Fo(Quic)o(k)i(Substitution.)22
+b(Rep)q(eat)16 b(the)g(last)f(command,)h(replacing)h
+Fj(string1)h Fo(with)e Fj(string2)p Fo(.)21 b(Equiv-)240
+520 y(alen)o(t)15 b(to)g Fn(!!:s/)p Fj(string1)t Fn(/)p
+Fj(string2)t Fn(/)p Fo(.)0 607 y Fn(!#)192 b Fo(The)15
+b(en)o(tire)h(command)f(line)i(t)o(yp)q(ed)f(so)e(far.)0
+816 y Fi(1.1.2)30 b(W)-5 b(ord)15 b(Designators)62 953
+y Fo(W)l(ord)k(designators)g(are)f(used)i(to)e(select)i(desired)g(w)o
+(ords)e(from)h(the)g(ev)o(en)o(t.)31 b(A)19 b(`)p Fn(:)p
+Fo(')f(separates)g(the)h(ev)o(en)o(t)0 1015 y(sp)q(eci\014cation)e
+(from)d(the)h(w)o(ord)f(designator.)20 b(It)15 b(can)g(b)q(e)g(omitted)
+g(if)g(the)g(w)o(ord)g(designator)f(b)q(egins)i(with)g(a)e(`)p
+Fn(^)p Fo(',)0 1077 y(`)p Fn($)p Fo(',)i(`)p Fn(*)p Fo(',)g(`)p
+Fn(-)p Fo(',)g(or)g(`)p Fn(\045)p Fo('.)24 b(W)l(ords)17
+b(are)f(n)o(um)o(b)q(ered)i(from)e(the)h(b)q(eginning)i(of)d(the)h
+(line,)i(with)e(the)g(\014rst)g(w)o(ord)f(b)q(eing)0
+1139 y(denoted)g(b)o(y)f(0)g(\(zero\).)k(W)l(ords)c(are)g(inserted)h
+(in)o(to)f(the)g(curren)o(t)g(line)i(separated)e(b)o(y)g(single)i
+(spaces.)0 1289 y Fn(0)e(\(zero\))57 b Fo(The)15 b Fn(0)p
+Fo(th)g(w)o(ord.)20 b(F)l(or)14 b(man)o(y)h(applications,)h(this)g(is)g
+(the)f(command)g(w)o(ord.)0 1376 y Fj(n)215 b Fo(The)15
+b Fj(n)p Fo(th)h(w)o(ord.)0 1464 y Fn(^)216 b Fo(The)15
+b(\014rst)g(argumen)o(t;)f(that)h(is,)g(w)o(ord)g(1.)0
+1551 y Fn($)216 b Fo(The)15 b(last)h(argumen)o(t.)0 1639
y Fn(\045)216 b Fo(The)15 b(w)o(ord)g(matc)o(hed)g(b)o(y)g(the)g(most)g
-(recen)o(t)g Fn(?string?)f Fo(searc)o(h.)0 1005 y Fn(x-y)168
-b Fo(A)15 b(range)g(of)g(w)o(ords;)f Fn(-)p Fj(y)19 b Fo(abbreviates)c
-Fn(0-)p Fj(y)t Fo(.)0 1092 y Fn(*)216 b Fo(All)17 b(of)f(the)g(w)o(ords,)f
-(except)i(the)f Fn(0)p Fo(th.)22 b(This)17 b(is)f(a)g(synon)o(ym)g(for)f
-Fn(1-$)p Fo(.)22 b(It)17 b(is)f(not)g(an)g(error)f(to)h(use)240
-1155 y Fn(*)f Fo(if)h(there)f(is)h(just)f(one)g(w)o(ord)f(in)i(the)g(ev)o(en)
-o(t;)e(the)i(empt)o(y)e(string)i(is)f(returned)h(in)g(that)e(case.)0
-1242 y Fn(x*)192 b Fo(Abbreviates)16 b Fn(x-$)0 1329 y(x-)192
-b Fo(Abbreviates)16 b Fn(x-$)f Fo(lik)o(e)h Fn(x*)p Fo(,)e(but)i(omits)f(the)
-g(last)g(w)o(ord.)0 1537 y Fi(1.1.3)30 b(Mo)r(di\014ers)62
-1674 y Fo(After)20 b(the)f(optional)i(w)o(ord)e(designator,)h(y)o(ou)f(can)h
-(add)g(a)g(sequence)h(of)e(one)h(or)f(more)g(of)g(the)h(follo)o(wing)0
-1736 y(mo)q(di\014ers,)c(eac)o(h)f(preceded)i(b)o(y)e(a)g Fn(:)p
-Fo(.)0 1885 y Fn(h)216 b Fo(Remo)o(v)o(e)15 b(a)g(trailing)h(pathname)f(comp)
-q(onen)o(t,)g(lea)o(ving)h(only)g(the)f(head.)0 1973 y Fn(r)216
+(recen)o(t)g(`)p Fn(?)p Fj(string)t Fn(?)p Fo(')f(searc)o(h.)0
+1726 y Fj(x)p Fn(-)p Fj(y)168 b Fo(A)15 b(range)g(of)g(w)o(ords;)f(`)p
+Fn(-)p Fj(y)t Fo(')g(abbreviates)i(`)p Fn(0-)p Fj(y)t
+Fo('.)0 1813 y Fn(*)216 b Fo(All)16 b(of)f(the)g(w)o(ords,)f(except)h
+(the)g Fn(0)p Fo(th.)k(This)d(is)f(a)g(synon)o(ym)g(for)f(`)p
+Fn(1-$)p Fo('.)k(It)d(is)h(not)e(an)h(error)f(to)h(use)240
+1876 y(`)p Fn(*)p Fo(')f(if)i(there)f(is)h(just)f(one)g(w)o(ord)g(in)h
+(the)f(ev)o(en)o(t;)g(the)g(empt)o(y)g(string)g(is)h(returned)f(in)h
+(that)f(case.)0 1963 y Fj(x)s Fn(*)189 b Fo(Abbreviates)16
+b(`)p Fj(x)p Fn(-$)p Fo(')0 2050 y Fj(x)p Fn(-)192 b
+Fo(Abbreviates)16 b(`)p Fj(x)p Fn(-$)p Fo(')e(lik)o(e)i(`)p
+Fj(x)s Fn(*)p Fo(',)e(but)i(omits)f(the)g(last)g(w)o(ord.)62
+2200 y(If)i(a)g(w)o(ord)f(designator)g(is)i(supplied)h(without)d(an)h
+(ev)o(en)o(t)g(sp)q(eci\014cation,)h(the)f(previous)h(command)e(is)h
+(used)0 2262 y(as)e(the)g(ev)o(en)o(t.)0 2471 y Fi(1.1.3)30
+b(Mo)r(di\014ers)62 2608 y Fo(After)20 b(the)f(optional)i(w)o(ord)e
+(designator,)h(y)o(ou)f(can)h(add)g(a)g(sequence)h(of)e(one)h(or)f
+(more)g(of)g(the)h(follo)o(wing)0 2670 y(mo)q(di\014ers,)c(eac)o(h)f
+(preceded)i(b)o(y)e(a)g(`)p Fn(:)p Fo('.)p eop
+3 4 bop 0 -58 a Fo(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o
+(ely)1157 b(3)0 183 y Fn(h)216 b Fo(Remo)o(v)o(e)15 b(a)g(trailing)h
+(pathname)f(comp)q(onen)o(t,)g(lea)o(ving)h(only)g(the)f(head.)0
+270 y Fn(t)216 b Fo(Remo)o(v)o(e)15 b(all)h(leading)h(pathname)e(comp)q
+(onen)o(ts,)g(lea)o(ving)h(the)f(tail.)0 358 y Fn(r)216
b Fo(Remo)o(v)o(e)15 b(a)g(trailing)h(su\016x)f(of)g(the)g(form)g(`)p
-Fn(.)p Fo(')p Fj(su\016x)p Fo(,)f(lea)o(ving)i(the)f(basename.)0
-2060 y Fn(e)216 b Fo(Remo)o(v)o(e)15 b(all)h(but)g(the)f(trailing)h(su\016x.)
-0 2147 y Fn(t)216 b Fo(Remo)o(v)o(e)15 b(all)h(leading)h(pathname)e(comp)q
-(onen)o(ts,)g(lea)o(ving)h(the)f(tail.)0 2234 y Fn(p)216 b
-Fo(Prin)o(t)15 b(the)g(new)h(command)f(but)g(do)g(not)g(execute)h(it.)0
-2309 y Fn(s/old/new/)240 2371 y Fo(Substitute)g Fj(new)k Fo(for)15
-b(the)h(\014rst)f(o)q(ccurrence)h(of)g Fj(old)h Fo(in)g(the)e(ev)o(en)o(t)h
-(line.)22 b(An)o(y)16 b(delimiter)h(ma)o(y)e(b)q(e)240 2433
-y(used)e(in)f(place)h(of)f Fn(/)p Fo(.)19 b(The)12 b(delimiter)i(ma)o(y)d(b)q
-(e)i(quoted)f(in)h Fj(old)h Fo(and)e Fj(new)17 b Fo(with)12
-b(a)g(single)h(bac)o(kslash.)240 2496 y(If)g Fn(&)h Fo(app)q(ears)f(in)h
-Fj(new)p Fo(,)f(it)h(is)g(replaced)g(b)o(y)f Fj(old)p Fo(.)20
-b(A)13 b(single)i(bac)o(kslash)e(will)i(quote)e(the)h Fn(&)p
-Fo(.)19 b(The)13 b(\014nal)240 2558 y(delimiter)k(is)f(optional)g(if)f(it)h
-(is)f(the)h(last)f(c)o(haracter)f(on)h(the)h(input)g(line.)0
-2645 y Fn(&)216 b Fo(Rep)q(eat)16 b(the)f(previous)h(substitution.)p
+Fn(.)p Fj(su\016x)s Fo(',)f(lea)o(ving)i(the)f(basename.)0
+445 y Fn(e)216 b Fo(Remo)o(v)o(e)15 b(all)h(but)g(the)f(trailing)h
+(su\016x.)0 532 y Fn(p)216 b Fo(Prin)o(t)15 b(the)g(new)h(command)f
+(but)g(do)g(not)g(execute)h(it.)0 619 y Fn(s/)p Fj(old)r
+Fn(/)p Fj(new)t Fn(/)240 681 y Fo(Substitute)k Fj(new)k
+Fo(for)19 b(the)g(\014rst)g(o)q(ccurrence)i(of)e Fj(old)j
+Fo(in)e(the)f(ev)o(en)o(t)h(line.)34 b(An)o(y)19 b(delimiter)j(ma)o(y)
+240 744 y(b)q(e)e(used)g(in)g(place)g(of)f(`)p Fn(/)p
+Fo('.)31 b(The)19 b(delimiter)i(ma)o(y)e(b)q(e)h(quoted)f(in)h
+Fj(old)h Fo(and)f Fj(new)j Fo(with)d(a)f(single)240 806
+y(bac)o(kslash.)28 b(If)18 b(`)p Fn(&)p Fo(')f(app)q(ears)h(in)h
+Fj(new)p Fo(,)f(it)h(is)f(replaced)h(b)o(y)f Fj(old)p
+Fo(.)28 b(A)18 b(single)h(bac)o(kslash)g(will)g(quote)240
+868 y(the)c(`)p Fn(&)p Fo('.)k(The)d(\014nal)g(delimiter)h(is)e
+(optional)h(if)g(it)f(is)h(the)f(last)g(c)o(haracter)g(on)g(the)g
+(input)i(line.)0 955 y Fn(&)216 b Fo(Rep)q(eat)16 b(the)f(previous)h
+(substitution.)0 1043 y Fn(g)216 b Fo(Cause)17 b(c)o(hanges)g(to)f(b)q
+(e)i(applied)g(o)o(v)o(er)e(the)h(en)o(tire)h(ev)o(en)o(t)e(line.)27
+b(Used)17 b(in)h(conjunction)g(with)f(`)p Fn(s)p Fo(',)240
+1105 y(as)e(in)h Fn(gs/)p Fj(old)r Fn(/)p Fj(new)t Fn(/)p
+Fo(,)f(or)f(with)i(`)p Fn(&)p Fo('.)p eop
+4 5 bop 0 -58 a Fo(4)1497 b(GNU)15 b(History)g(Library)p
eop
-%%Page: 3 5
-4 bop 0 -83 a Fo(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o(ely)1157
-b(3)0 158 y Fn(g)216 b Fo(Cause)15 b(c)o(hanges)g(to)f(b)q(e)i(applied)h(o)o
-(v)o(er)d(the)h(en)o(tire)g(ev)o(en)o(t)g(line.)21 b(Used)16
-b(in)g(conjunction)g(with)f Fn(s)p Fo(,)f(as)240 221 y(in)i
-Fn(gs/old/new/)p Fo(,)d(or)i(with)h Fn(&)p Fo(.)p eop
-%%Page: 4 6
-5 bop 0 -83 a Fo(4)1497 b(GNU)15 b(History)g(Library)p eop
-%%Page: 5 7
-6 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(History)1039
-b(5)0 158 y Fk(2)41 b(Programming)16 b(with)f(GNU)h(History)62
-347 y Fo(This)e(c)o(hapter)f(describ)q(es)i(ho)o(w)d(to)h(in)o(terface)g
-(programs)f(that)h(y)o(ou)g(write)g(with)g(the)h(GNU)f(History)g(Library)l(.)
-0 409 y(It)j(should)g(b)q(e)g(considered)h(a)f(tec)o(hnical)h(guide.)22
-b(F)l(or)15 b(information)h(on)f(the)h(in)o(teractiv)o(e)g(use)g(of)f(GNU)g
-(History)l(,)0 471 y(see)g(Chapter)g(1)g([Using)h(History)f(In)o(teractiv)o
-(ely],)g(page)g(1.)0 698 y Fm(2.1)33 b(In)n(tro)r(duction)17
-b(to)e(History)62 835 y Fo(Man)o(y)j(programs)g(read)h(input)h(from)e(the)g
-(user)h(a)g(line)h(at)f(a)f(time.)31 b(The)19 b(GNU)g(History)f(library)i(is)
-f(able)0 897 y(to)e(k)o(eep)g(trac)o(k)f(of)h(those)g(lines,)i(asso)q(ciate)e
-(arbitrary)g(data)g(with)g(eac)o(h)g(line,)j(and)d(utilize)i(information)f
-(from)0 960 y(previous)e(lines)h(in)f(comp)q(osing)f(new)h(ones.)62
-1097 y(The)i(programmer)f(using)h(the)g(History)g(library)g(has)g(a)o(v)m
-(ailable)h(functions)g(for)e(remem)o(b)q(ering)h(lines)i(on)d(a)0
-1159 y(history)f(list,)g(asso)q(ciating)g(arbitrary)g(data)f(with)h(a)f
-(line,)j(remo)o(ving)d(lines)j(from)d(the)h(list,)g(searc)o(hing)g(through)0
-1221 y(the)h(list)h(for)e(a)h(line)h(con)o(taining)g(an)f(arbitrary)f(text)h
-(string,)g(and)g(referencing)h(an)o(y)f(line)h(in)g(the)f(list)h(directly)l
-(.)0 1284 y(In)d(addition,)h(a)e(history)h Fj(expansion)h Fo(function)g(is)f
-(a)o(v)m(ailable)h(whic)o(h)g(pro)o(vides)f(for)f(a)h(consisten)o(t)g(user)g
-(in)o(terface)0 1346 y(across)f(di\013eren)o(t)i(programs.)62
-1483 y(The)i(user)g(using)g(programs)f(written)g(with)h(the)g(History)f
-(library)i(has)e(the)h(b)q(ene\014t)h(of)e(a)g(consisten)o(t)h(user)0
-1545 y(in)o(terface)d(with)g(a)f(set)h(of)f(w)o(ell-kno)o(wn)h(commands)g
-(for)f(manipulating)i(the)f(text)f(of)g(previous)h(lines)h(and)f(using)0
-1608 y(that)g(text)g(in)i(new)e(commands.)22 b(The)15 b(basic)i(history)e
-(manipulation)j(commands)d(are)g(similar)i(to)e(the)h(history)0
-1670 y(substitution)g(pro)o(vided)g(b)o(y)f Fn(csh)p Fo(.)62
-1807 y(If)g(the)g(programmer)e(desires,)i(he)g(can)g(use)g(the)f(Readline)j
-(library)l(,)e(whic)o(h)h(includes)g(some)f(history)f(manip-)0
-1870 y(ulation)i(b)o(y)f(default,)h(and)f(has)g(the)g(added)h(adv)m(an)o
-(tage)f(of)g(command)g(line)h(editing.)0 2096 y Fm(2.2)33 b(History)15
-b(Storage)62 2234 y Fo(The)h(history)f(list)h(is)g(an)f(arra)o(y)f(of)g
-(history)i(en)o(tries.)k(A)15 b(history)g(en)o(try)g(is)h(declared)g(as)f
-(follo)o(ws:)120 2358 y Fn(typedef)23 b(struct)g(_hist_entry)f({)168
-2408 y(char)h(*line;)168 2458 y(char)g(*data;)120 2508 y(})h(HIST_ENTRY;)62
-2645 y Fo(The)16 b(history)f(list)h(itself)g(migh)o(t)f(therefore)g(b)q(e)h
-(declared)g(as)p eop
-%%Page: 6 8
-7 bop 0 -83 a Fo(6)1497 b(GNU)15 b(History)g(Library)120 158
-y Fn(HIST_ENTRY)22 b(**the_history_list;)62 302 y Fo(The)16
-b(state)e(of)h(the)g(History)g(library)h(is)g(encapsulated)g(in)o(to)f(a)g
-(single)i(structure:)120 434 y Fn(/*)24 b(A)f(structure)g(used)g(to)h(pass)f
-(the)h(current)f(state)g(of)g(the)h(history)f(stuff)g(around.)g(*/)120
-484 y(typedef)g(struct)g(_hist_state)f({)168 534 y(HIST_ENTRY)g(**entries;)
-214 b(/*)23 b(Pointer)g(to)h(the)f(entries)g(themselves.)f(*/)168
-584 y(int)h(offset;)453 b(/*)23 b(The)h(location)e(pointer)h(within)g(this)h
-(array.)f(*/)168 633 y(int)g(length;)453 b(/*)23 b(Number)g(of)h(elements)f
-(within)g(this)g(array.)g(*/)168 683 y(int)g(size;)501 b(/*)23
-b(Number)g(of)h(slots)f(allocated)g(to)g(this)h(array.)f(*/)168
-733 y(int)g(flags;)120 783 y(})h(HISTORY_STATE;)62 927 y Fo(If)16
-b(the)f(\015ags)g(mem)o(b)q(er)g(includes)j Fn(HS_STIFLED)p
-Fo(,)13 b(the)i(history)h(has)f(b)q(een)h(sti\015ed.)0 1215
-y Fm(2.3)33 b(History)15 b(F)-6 b(unctions)62 1359 y Fo(This)16
-b(section)g(describ)q(es)h(the)e(calling)i(sequence)f(for)f(the)g(v)m(arious)
-h(functions)g(presen)o(t)f(in)h(GNU)f(History)l(.)0 1631 y
-Fi(2.3.1)30 b(Initializing)15 b(History)g(and)g(State)g(Managemen)n(t)62
-1775 y Fo(This)j(section)g(describ)q(es)h(functions)f(used)g(to)e(initialize)
-21 b(and)c(manage)g(the)g(state)g(of)g(the)g(History)g(library)0
-1837 y(when)f(y)o(ou)f(w)o(an)o(t)f(to)g(use)i(the)f(history)g(functions)h
-(in)g(y)o(our)f(program.)1725 2021 y(F)l(unction)-1899 b Fh(void)20
-b Fg(using)p 258 2021 18 3 v 20 w(history)j Ff(\(\))120 2083
-y Fo(Begin)g(a)f(session)g(in)h(whic)o(h)g(the)f(history)g(functions)g(migh)o
-(t)g(b)q(e)h(used.)40 b(This)23 b(initializes)i(the)120 2145
-y(in)o(teractiv)o(e)16 b(v)m(ariables.)1725 2328 y(F)l(unction)-1899
-b Fh(HISTORY_STATE)21 b(*)e Fg(history)p 582 2328 V 21 w(get)p
-680 2328 V 21 w(history)p 876 2328 V 21 w(state)j Ff(\(\))120
-2391 y Fo(Return)16 b(a)f(structure)g(describing)i(the)e(curren)o(t)g(state)f
-(of)h(the)g(input)i(history)l(.)1725 2574 y(F)l(unction)-1899
-b Fh(void)20 b Fg(history)p 302 2574 V 20 w(set)p 393 2574
-V 21 w(history)p 589 2574 V 21 w(state)j Ff(\()p Fn(HISTORY_STATE)13
-b(*state)p Ff(\))120 2636 y Fo(Set)i(the)h(state)e(of)h(the)g(history)g(list)
-h(according)g(to)e Fj(state)p Fo(.)p eop
-%%Page: 7 9
-8 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(History)1039
-b(7)0 158 y Fi(2.3.2)30 b(History)15 b(List)g(Managemen)n(t)62
-295 y Fo(These)i(functions)h(manage)e(individual)k(en)o(tries)d(on)f(the)h
-(history)g(list,)g(or)f(set)h(parameters)e(managing)i(the)0
-358 y(list)f(itself.)1725 520 y(F)l(unction)-1899 b Fh(void)20
-b Fg(add)p 219 520 18 3 v 20 w(history)j Ff(\()p Fn(char)14
-b(*string)p Ff(\))120 582 y Fo(Place)j Fj(string)k Fo(at)16
-b(the)g(end)i(of)e(the)g(history)h(list.)25 b(The)17 b(asso)q(ciated)g(data)f
-(\014eld)h(\(if)g(an)o(y\))f(is)h(set)g(to)120 644 y Fn(NULL)p
-Fo(.)1725 806 y(F)l(unction)-1899 b Fh(HIST_ENTRY)21 b(*)e
-Fg(remo)n(v)n(e)p 509 806 V 20 w(history)k Ff(\()p Fn(int)14
-b(which)p Ff(\))120 868 y Fo(Remo)o(v)o(e)d(history)g(en)o(try)g(at)g
-(o\013set)f Fj(whic)o(h)i Fo(from)f(the)g(history)l(.)19 b(The)11
-b(remo)o(v)o(ed)g(elemen)o(t)h(is)g(returned)120 930 y(so)j(y)o(ou)g(can)g
-(free)g(the)h(line,)g(data,)e(and)i(con)o(taining)g(structure.)1725
-1092 y(F)l(unction)-1899 b Fh(HIST_ENTRY)21 b(*)e Fg(replace)p
-505 1092 V 22 w(history)p 702 1092 V 20 w(en)n(try)24 b Ff(\()p
-Fn(int)14 b(which,)g(char)h(*line,)f(char)208 1155 y(*data)p
-Ff(\))120 1217 y Fo(Mak)o(e)d(the)i(history)f(en)o(try)g(at)f(o\013set)h
-Fj(whic)o(h)h Fo(ha)o(v)o(e)e Fj(line)17 b Fo(and)12 b Fj(data)p
-Fo(.)19 b(This)12 b(returns)g(the)h(old)g(en)o(try)e(so)120
-1279 y(y)o(ou)i(can)g(disp)q(ose)h(of)e(the)h(data.)19 b(In)13
-b(the)g(case)g(of)f(an)h(in)o(v)m(alid)i Fj(whic)o(h)p Fo(,)f(a)f
-Fn(NULL)f Fo(p)q(oin)o(ter)i(is)f(returned.)1725 1441 y(F)l(unction)-1899
-b Fh(void)20 b Fg(sti\015e)p 245 1441 V 21 w(history)j Ff(\()p
-Fn(int)14 b(max)p Ff(\))120 1503 y Fo(Sti\015e)i(the)f(history)h(list,)f
-(remem)o(b)q(ering)h(only)g(the)f(last)g Fj(max)j Fo(en)o(tries.)1725
-1665 y(F)l(unction)-1899 b Fh(int)20 b Fg(unsti\015e)p 283
-1665 V 21 w(history)i Ff(\(\))120 1728 y Fo(Stop)13 b(sti\015ing)h(the)f
-(history)l(.)19 b(This)14 b(returns)f(the)g(previous)h(amoun)o(t)e(the)h
-(history)g(w)o(as)g(sti\015ed.)20 b(The)120 1790 y(v)m(alue)c(is)g(p)q
-(ositiv)o(e)g(if)g(the)f(history)g(w)o(as)g(sti\015ed,)h(negativ)o(e)f(if)g
-(it)h(w)o(asn't.)1725 1952 y(F)l(unction)-1899 b Fh(int)20
-b Fg(history)p 276 1952 V 20 w(is)p 334 1952 V 21 w(sti\015ed)k
-Ff(\(\))120 2014 y Fo(Returns)16 b(non-zero)f(if)h(the)f(history)g(is)h
-(sti\015ed,)g(zero)f(if)g(it)h(is)g(not.)0 2222 y Fi(2.3.3)30
-b(Information)14 b(Ab)r(out)h(the)g(History)g(List)62 2359
-y Fo(These)h(functions)g(return)f(information)g(ab)q(out)g(the)h(en)o(tire)f
-(history)g(list)h(or)f(individual)j(list)f(en)o(tries.)1725
-2521 y(F)l(unction)-1899 b Fh(HIST_ENTRY)21 b(**)e Fg(history)p
-530 2521 V 21 w(list)24 b Ff(\(\))120 2583 y Fo(Return)e(a)e
-Fn(NULL)h Fo(terminated)g(arra)o(y)f(of)g Fn(HIST_ENTRY)g Fo(whic)o(h)i(is)f
-(the)g(curren)o(t)g(input)h(history)l(.)120 2645 y(Elemen)o(t)16
-b(0)f(of)f(this)i(list)g(is)g(the)f(b)q(eginning)i(of)e(time.)20
-b(If)c(there)f(is)h(no)f(history)l(,)g(return)g Fn(NULL)p Fo(.)p
-eop
-%%Page: 8 10
-9 bop 0 -83 a Fo(8)1497 b(GNU)15 b(History)g(Library)1725 158
-y(F)l(unction)-1899 b Fh(int)20 b Fg(where)p 250 158 18 3 v
-20 w(history)j Ff(\(\))120 221 y Fo(Returns)16 b(the)f(o\013set)f(of)h(the)g
-(curren)o(t)g(history)g(elemen)o(t.)1725 378 y(F)l(unction)-1899
-b Fh(HIST_ENTRY)21 b(*)e Fg(curren)n(t)p 512 378 V 21 w(history)k
-Ff(\(\))120 440 y Fo(Return)14 b(the)g(history)g(en)o(try)f(at)h(the)g
-(curren)o(t)f(p)q(osition,)i(as)e(determined)j(b)o(y)d Fn(where_history)h
-(\(\))p Fo(.)120 502 y(If)h(there)h(is)f(no)h(en)o(try)e(there,)h(return)g(a)
-g Fn(NULL)g Fo(p)q(oin)o(ter.)1725 660 y(F)l(unction)-1899
-b Fh(HIST_ENTRY)21 b(*)e Fg(history)p 504 660 V 21 w(get)j
-Ff(\()p Fn(int)15 b(offset)p Ff(\))120 722 y Fo(Return)g(the)g(history)f(en)o
-(try)g(at)g(p)q(osition)i Fj(o\013set)p Fo(,)d(starting)h(from)g
-Fn(history_base)p Fo(.)k(If)c(there)h(is)g(no)120 784 y(en)o(try)g(there,)g
-(or)f(if)i Fj(o\013set)f Fo(is)h(greater)e(than)h(the)h(history)f(length,)g
-(return)g(a)g Fn(NULL)g Fo(p)q(oin)o(ter.)1725 942 y(F)l(unction)-1899
-b Fh(int)20 b Fg(history)p 276 942 V 20 w(total)p 412 942 V
-22 w(b)n(ytes)j Ff(\(\))120 1004 y Fo(Return)17 b(the)f(n)o(um)o(b)q(er)g(of)
-g(b)o(ytes)g(that)f(the)h(primary)g(history)g(en)o(tries)h(are)e(using.)23
-b(This)17 b(function)120 1066 y(returns)e(the)g(sum)h(of)e(the)i(lengths)f
-(of)g(all)h(the)g(lines)g(in)g(the)g(history)l(.)0 1265 y Fi(2.3.4)30
-b(Mo)n(ving)15 b(Around)h(the)f(History)g(List)62 1402 y Fo(These)h
-(functions)g(allo)o(w)f(the)g(curren)o(t)h(index)g(in)o(to)f(the)h(history)f
-(list)h(to)e(b)q(e)i(set)f(or)g(c)o(hanged.)1725 1559 y(F)l(unction)-1899
-b Fh(int)20 b Fg(history)p 276 1559 V 20 w(set)p 367 1559 V
-21 w(p)r(os)h Ff(\()p Fn(int)15 b(pos)p Ff(\))120 1621 y Fo(Set)g(the)h(p)q
-(osition)g(in)g(the)f(history)g(list)h(to)f Fj(p)q(os)p Fo(,)g(an)g(absolute)
-g(index)i(in)o(to)e(the)g(list.)1725 1779 y(F)l(unction)-1899
-b Fh(HIST_ENTRY)21 b(*)e Fg(previous)p 540 1779 V 20 w(history)k
-Ff(\(\))120 1841 y Fo(Bac)o(k)16 b(up)h(the)g(curren)o(t)f(history)h
-(o\013set)e(to)h(the)h(previous)g(history)g(en)o(try)l(,)f(and)h(return)f(a)g
-(p)q(oin)o(ter)120 1903 y(to)f(that)f(en)o(try)l(.)20 b(If)15
+5 6 bop 0 -58 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(History)1039 b(5)0 183 y Fk(2)41 b(Programming)16 b(with)f(GNU)h
+(History)62 370 y Fo(This)e(c)o(hapter)f(describ)q(es)i(ho)o(w)d(to)h
+(in)o(terface)g(programs)f(that)h(y)o(ou)g(write)g(with)g(the)h(GNU)f
+(History)g(Library)l(.)0 432 y(It)j(should)g(b)q(e)g(considered)h(a)f
+(tec)o(hnical)h(guide.)22 b(F)l(or)15 b(information)h(on)f(the)h(in)o
+(teractiv)o(e)g(use)g(of)f(GNU)g(History)l(,)0 495 y(see)g(Chapter)g(1)
+g([Using)h(History)f(In)o(teractiv)o(ely],)g(page)g(1.)0
+719 y Fm(2.1)33 b(In)n(tro)r(duction)17 b(to)e(History)62
+856 y Fo(Man)o(y)j(programs)g(read)h(input)h(from)e(the)g(user)h(a)g
+(line)h(at)f(a)f(time.)31 b(The)19 b(GNU)g(History)f(library)i(is)f
+(able)0 918 y(to)e(k)o(eep)g(trac)o(k)f(of)h(those)g(lines,)i(asso)q
+(ciate)e(arbitrary)g(data)g(with)g(eac)o(h)g(line,)j(and)d(utilize)i
+(information)f(from)0 980 y(previous)e(lines)h(in)f(comp)q(osing)f(new)
+h(ones.)62 1117 y(The)i(programmer)f(using)h(the)g(History)g(library)g
+(has)g(a)o(v)m(ailable)h(functions)g(for)e(remem)o(b)q(ering)h(lines)i
+(on)d(a)0 1180 y(history)f(list,)g(asso)q(ciating)g(arbitrary)g(data)f
+(with)h(a)f(line,)j(remo)o(ving)d(lines)j(from)d(the)h(list,)g(searc)o
+(hing)g(through)0 1242 y(the)h(list)h(for)e(a)h(line)h(con)o(taining)g
+(an)f(arbitrary)f(text)h(string,)g(and)g(referencing)h(an)o(y)f(line)h
+(in)g(the)f(list)h(directly)l(.)0 1304 y(In)d(addition,)h(a)e(history)h
+Fj(expansion)h Fo(function)g(is)f(a)o(v)m(ailable)h(whic)o(h)g(pro)o
+(vides)f(for)f(a)h(consisten)o(t)g(user)g(in)o(terface)0
+1366 y(across)f(di\013eren)o(t)i(programs.)62 1503 y(The)i(user)g
+(using)g(programs)f(written)g(with)h(the)g(History)f(library)i(has)e
+(the)h(b)q(ene\014t)h(of)e(a)g(consisten)o(t)h(user)0
+1566 y(in)o(terface)d(with)g(a)f(set)h(of)f(w)o(ell-kno)o(wn)h
+(commands)g(for)f(manipulating)i(the)f(text)f(of)g(previous)h(lines)h
+(and)f(using)0 1628 y(that)g(text)g(in)i(new)e(commands.)22
+b(The)15 b(basic)i(history)e(manipulation)j(commands)d(are)g(similar)i
+(to)e(the)h(history)0 1690 y(substitution)g(pro)o(vided)g(b)o(y)f
+Fn(csh)p Fo(.)62 1827 y(If)g(the)g(programmer)e(desires,)i(he)g(can)g
+(use)g(the)f(Readline)j(library)l(,)e(whic)o(h)h(includes)g(some)f
+(history)f(manip-)0 1889 y(ulation)i(b)o(y)f(default,)h(and)f(has)g
+(the)g(added)h(adv)m(an)o(tage)f(of)g(command)g(line)h(editing.)0
+2114 y Fm(2.2)33 b(History)15 b(Storage)62 2251 y Fo(The)h(history)f
+(list)h(is)g(an)f(arra)o(y)f(of)g(history)i(en)o(tries.)k(A)15
+b(history)g(en)o(try)g(is)h(declared)g(as)f(follo)o(ws:)120
+2377 y Fn(typedef)23 b(struct)g(_hist_entry)f({)168 2429
+y(char)h(*line;)168 2481 y(char)g(*data;)120 2533 y(})h(HIST_ENTRY;)62
+2670 y Fo(The)16 b(history)f(list)h(itself)g(migh)o(t)f(therefore)g(b)q
+(e)h(declared)g(as)p eop
+6 7 bop 0 -58 a Fo(6)1497 b(GNU)15 b(History)g(Library)120
+183 y Fn(HIST_ENTRY)22 b(**the_history_list;)62 327 y
+Fo(The)16 b(state)e(of)h(the)g(History)g(library)h(is)g(encapsulated)g
+(in)o(to)f(a)g(single)i(structure:)120 460 y Fn(/*)24
+b(A)f(structure)g(used)g(to)h(pass)f(the)h(current)f(state)g(of)g(the)h
+(history)f(stuff)g(around.)g(*/)120 512 y(typedef)g(struct)g
+(_hist_state)f({)168 564 y(HIST_ENTRY)g(**entries;)214
+b(/*)23 b(Pointer)g(to)h(the)f(entries)g(themselves.)f(*/)168
+616 y(int)h(offset;)453 b(/*)23 b(The)h(location)e(pointer)h(within)g
+(this)h(array.)f(*/)168 668 y(int)g(length;)453 b(/*)23
+b(Number)g(of)h(elements)f(within)g(this)g(array.)g(*/)168
+719 y(int)g(size;)501 b(/*)23 b(Number)g(of)h(slots)f(allocated)g(to)g
+(this)h(array.)f(*/)168 771 y(int)g(flags;)120 823 y(})h
+(HISTORY_STATE;)62 967 y Fo(If)16 b(the)f(\015ags)g(mem)o(b)q(er)g
+(includes)j Fn(HS_STIFLED)p Fo(,)13 b(the)i(history)h(has)f(b)q(een)h
+(sti\015ed.)0 1250 y Fm(2.3)33 b(History)15 b(F)-6 b(unctions)62
+1394 y Fo(This)16 b(section)g(describ)q(es)h(the)e(calling)i(sequence)f
+(for)f(the)g(v)m(arious)h(functions)g(presen)o(t)f(in)h(GNU)f(History)l
+(.)0 1661 y Fi(2.3.1)30 b(Initializing)15 b(History)g(and)g(State)g
+(Managemen)n(t)62 1805 y Fo(This)j(section)g(describ)q(es)h(functions)f
+(used)g(to)e(initialize)21 b(and)c(manage)g(the)g(state)g(of)g(the)g
+(History)g(library)0 1867 y(when)f(y)o(ou)f(w)o(an)o(t)f(to)g(use)i
+(the)f(history)g(functions)h(in)g(y)o(our)f(program.)1725
+2049 y(F)l(unction)-1899 b Fh(void)20 b Fg(using)p 258
+2049 18 3 v 20 w(history)j Ff(\(\))120 2111 y Fo(Begin)g(a)f(session)g
+(in)h(whic)o(h)g(the)f(history)g(functions)g(migh)o(t)g(b)q(e)h(used.)
+40 b(This)23 b(initializes)i(the)120 2173 y(in)o(teractiv)o(e)16
+b(v)m(ariables.)1725 2355 y(F)l(unction)-1899 b Fh(HISTORY_STATE)21
+b(*)e Fg(history)p 582 2355 V 21 w(get)p 680 2355 V 21
+w(history)p 876 2355 V 21 w(state)j Ff(\(\))120 2417
+y Fo(Return)16 b(a)f(structure)g(describing)i(the)e(curren)o(t)g(state)
+f(of)h(the)g(input)i(history)l(.)1725 2599 y(F)l(unction)-1899
+b Fh(void)20 b Fg(history)p 302 2599 V 20 w(set)p 393
+2599 V 21 w(history)p 589 2599 V 21 w(state)j Ff(\()p
+Fn(HISTORY_STATE)13 b(*state)p Ff(\))120 2661 y Fo(Set)i(the)h(state)e
+(of)h(the)g(history)g(list)h(according)g(to)e Fj(state)p
+Fo(.)p eop
+7 8 bop 0 -58 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(History)1039 b(7)0 183 y Fi(2.3.2)30 b(History)15 b(List)g(Managemen)n
+(t)62 322 y Fo(These)i(functions)h(manage)e(individual)k(en)o(tries)d
+(on)f(the)h(history)g(list,)g(or)f(set)h(parameters)e(managing)i(the)0
+384 y(list)f(itself.)1725 552 y(F)l(unction)-1899 b Fh(void)20
+b Fg(add)p 219 552 18 3 v 20 w(history)j Ff(\()p Fn(char)14
+b(*string)p Ff(\))120 614 y Fo(Place)j Fj(string)k Fo(at)16
+b(the)g(end)i(of)e(the)g(history)h(list.)25 b(The)17
+b(asso)q(ciated)g(data)f(\014eld)h(\(if)g(an)o(y\))f(is)h(set)g(to)120
+677 y Fn(NULL)p Fo(.)1725 844 y(F)l(unction)-1899 b Fh(HIST_ENTRY)21
+b(*)e Fg(remo)n(v)n(e)p 509 844 V 20 w(history)k Ff(\()p
+Fn(int)14 b(which)p Ff(\))120 907 y Fo(Remo)o(v)o(e)d(history)g(en)o
+(try)g(at)g(o\013set)f Fj(whic)o(h)i Fo(from)f(the)g(history)l(.)19
+b(The)11 b(remo)o(v)o(ed)g(elemen)o(t)h(is)g(returned)120
+969 y(so)j(y)o(ou)g(can)g(free)g(the)h(line,)g(data,)e(and)i(con)o
+(taining)g(structure.)1725 1137 y(F)l(unction)-1899 b
+Fh(HIST_ENTRY)21 b(*)e Fg(replace)p 505 1137 V 22 w(history)p
+702 1137 V 20 w(en)n(try)24 b Ff(\()p Fn(int)14 b(which,)g(char)h
+(*line,)f(char)208 1199 y(*data)p Ff(\))120 1261 y Fo(Mak)o(e)d(the)i
+(history)f(en)o(try)g(at)f(o\013set)h Fj(whic)o(h)h Fo(ha)o(v)o(e)e
+Fj(line)17 b Fo(and)12 b Fj(data)p Fo(.)19 b(This)12
+b(returns)g(the)h(old)g(en)o(try)e(so)120 1324 y(y)o(ou)i(can)g(disp)q
+(ose)h(of)e(the)h(data.)19 b(In)13 b(the)g(case)g(of)f(an)h(in)o(v)m
+(alid)i Fj(whic)o(h)p Fo(,)f(a)f Fn(NULL)f Fo(p)q(oin)o(ter)i(is)f
+(returned.)1725 1491 y(F)l(unction)-1899 b Fh(void)20
+b Fg(clear)p 245 1491 V 21 w(history)j Ff(\(\))120 1554
+y Fo(Clear)15 b(the)h(history)f(list)h(b)o(y)f(deleting)i(all)f(the)f
+(en)o(tries.)1725 1721 y(F)l(unction)-1899 b Fh(void)20
+b Fg(sti\015e)p 245 1721 V 21 w(history)j Ff(\()p Fn(int)14
+b(max)p Ff(\))120 1784 y Fo(Sti\015e)i(the)f(history)h(list,)f(remem)o
+(b)q(ering)h(only)g(the)f(last)g Fj(max)j Fo(en)o(tries.)1725
+1951 y(F)l(unction)-1899 b Fh(int)20 b Fg(unsti\015e)p
+283 1951 V 21 w(history)i Ff(\(\))120 2014 y Fo(Stop)13
+b(sti\015ing)h(the)f(history)l(.)19 b(This)14 b(returns)f(the)g
+(previous)h(amoun)o(t)e(the)h(history)g(w)o(as)g(sti\015ed.)20
+b(The)120 2076 y(v)m(alue)c(is)g(p)q(ositiv)o(e)g(if)g(the)f(history)g
+(w)o(as)g(sti\015ed,)h(negativ)o(e)f(if)g(it)h(w)o(asn't.)1725
+2244 y(F)l(unction)-1899 b Fh(int)20 b Fg(history)p 276
+2244 V 20 w(is)p 334 2244 V 21 w(sti\015ed)k Ff(\(\))120
+2306 y Fo(Returns)16 b(non-zero)f(if)h(the)f(history)g(is)h(sti\015ed,)
+g(zero)f(if)g(it)h(is)g(not.)0 2531 y Fi(2.3.3)30 b(Information)14
+b(Ab)r(out)h(the)g(History)g(List)62 2670 y Fo(These)h(functions)g
+(return)f(information)g(ab)q(out)g(the)h(en)o(tire)f(history)g(list)h
+(or)f(individual)j(list)f(en)o(tries.)p eop
+8 9 bop 0 -58 a Fo(8)1497 b(GNU)15 b(History)g(Library)1725
+183 y(F)l(unction)-1899 b Fh(HIST_ENTRY)21 b(**)e Fg(history)p
+530 183 18 3 v 21 w(list)24 b Ff(\(\))120 246 y Fo(Return)e(a)e
+Fn(NULL)h Fo(terminated)g(arra)o(y)f(of)g Fn(HIST_ENTRY)g
+Fo(whic)o(h)i(is)f(the)g(curren)o(t)g(input)h(history)l(.)120
+308 y(Elemen)o(t)16 b(0)f(of)f(this)i(list)g(is)g(the)f(b)q(eginning)i
+(of)e(time.)20 b(If)c(there)f(is)h(no)f(history)l(,)g(return)g
+Fn(NULL)p Fo(.)1725 482 y(F)l(unction)-1899 b Fh(int)20
+b Fg(where)p 250 482 V 20 w(history)j Ff(\(\))120 544
+y Fo(Returns)16 b(the)f(o\013set)f(of)h(the)g(curren)o(t)g(history)g
+(elemen)o(t.)1725 719 y(F)l(unction)-1899 b Fh(HIST_ENTRY)21
+b(*)e Fg(curren)n(t)p 512 719 V 21 w(history)k Ff(\(\))120
+781 y Fo(Return)14 b(the)g(history)g(en)o(try)f(at)h(the)g(curren)o(t)f
+(p)q(osition,)i(as)e(determined)j(b)o(y)d Fn(where_history)h(\(\))p
+Fo(.)120 843 y(If)h(there)h(is)f(no)h(en)o(try)e(there,)h(return)g(a)g
+Fn(NULL)g Fo(p)q(oin)o(ter.)1725 1018 y(F)l(unction)-1899
+b Fh(HIST_ENTRY)21 b(*)e Fg(history)p 504 1018 V 21 w(get)j
+Ff(\()p Fn(int)15 b(offset)p Ff(\))120 1080 y Fo(Return)g(the)g
+(history)f(en)o(try)g(at)g(p)q(osition)i Fj(o\013set)p
+Fo(,)d(starting)h(from)g Fn(history_base)p Fo(.)k(If)c(there)h(is)g(no)
+120 1142 y(en)o(try)g(there,)g(or)f(if)i Fj(o\013set)f
+Fo(is)h(greater)e(than)h(the)h(history)f(length,)g(return)g(a)g
+Fn(NULL)g Fo(p)q(oin)o(ter.)1725 1316 y(F)l(unction)-1899
+b Fh(int)20 b Fg(history)p 276 1316 V 20 w(total)p 412
+1316 V 22 w(b)n(ytes)j Ff(\(\))120 1379 y Fo(Return)17
+b(the)f(n)o(um)o(b)q(er)g(of)g(b)o(ytes)g(that)f(the)h(primary)g
+(history)g(en)o(tries)h(are)e(using.)23 b(This)17 b(function)120
+1441 y(returns)e(the)g(sum)h(of)e(the)i(lengths)f(of)g(all)h(the)g
+(lines)g(in)g(the)g(history)l(.)0 1686 y Fi(2.3.4)30
+b(Mo)n(ving)15 b(Around)h(the)f(History)g(List)62 1827
+y Fo(These)h(functions)g(allo)o(w)f(the)g(curren)o(t)h(index)g(in)o(to)
+f(the)h(history)f(list)h(to)e(b)q(e)i(set)f(or)g(c)o(hanged.)1725
+2001 y(F)l(unction)-1899 b Fh(int)20 b Fg(history)p 276
+2001 V 20 w(set)p 367 2001 V 21 w(p)r(os)h Ff(\()p Fn(int)15
+b(pos)p Ff(\))120 2063 y Fo(Set)g(the)h(p)q(osition)g(in)g(the)f
+(history)g(list)h(to)f Fj(p)q(os)p Fo(,)g(an)g(absolute)g(index)i(in)o
+(to)e(the)g(list.)1725 2238 y(F)l(unction)-1899 b Fh(HIST_ENTRY)21
+b(*)e Fg(previous)p 540 2238 V 20 w(history)k Ff(\(\))120
+2300 y Fo(Bac)o(k)16 b(up)h(the)g(curren)o(t)f(history)h(o\013set)e(to)
+h(the)h(previous)g(history)g(en)o(try)l(,)f(and)h(return)f(a)g(p)q(oin)
+o(ter)120 2362 y(to)f(that)f(en)o(try)l(.)20 b(If)15
b(there)g(is)h(no)f(previous)h(en)o(try)l(,)f(return)g(a)g
-Fn(NULL)g Fo(p)q(oin)o(ter.)1725 2061 y(F)l(unction)-1899 b
-Fh(HIST_ENTRY)21 b(*)e Fg(next)p 439 2061 V 21 w(history)k
-Ff(\(\))120 2123 y Fo(Mo)o(v)o(e)c(the)h(curren)o(t)g(history)f(o\013set)g
-(forw)o(ard)g(to)g(the)h(next)g(history)g(en)o(try)l(,)g(and)g(return)g(the)g
-(a)120 2185 y(p)q(oin)o(ter)c(to)e(that)h(en)o(try)l(.)k(If)d(there)f(is)h
-(no)f(next)g(en)o(try)l(,)g(return)g(a)g Fn(NULL)g Fo(p)q(oin)o(ter.)0
-2384 y Fi(2.3.5)30 b(Searc)n(hing)15 b(the)h(History)f(List)62
-2521 y Fo(These)e(functions)g(allo)o(w)f(searc)o(hing)h(of)f(the)g(history)g
-(list)h(for)f(en)o(tries)h(con)o(taining)g(a)f(sp)q(eci\014c)i(string.)19
-b(Searc)o(h-)0 2583 y(ing)e(ma)o(y)g(b)q(e)g(p)q(erformed)g(b)q(oth)g(forw)o
-(ard)f(and)h(bac)o(kw)o(ard)f(from)g(the)h(curren)o(t)f(history)h(p)q
-(osition.)26 b(The)17 b(searc)o(h)0 2645 y(ma)o(y)d(b)q(e)i
-Fj(anc)o(hored)p Fo(,)f(meaning)h(that)f(the)g(string)g(m)o(ust)g(matc)o(h)f
-(at)h(the)g(b)q(eginning)i(of)e(the)h(history)f(en)o(try)l(.)p
-eop
-%%Page: 9 11
-10 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(History)1039
-b(9)1725 158 y(F)l(unction)-1899 b Fh(int)20 b Fg(history)p
-276 158 18 3 v 20 w(searc)n(h)j Ff(\()p Fn(char)14 b(*string,)g(int)h
-(direction)p Ff(\))120 221 y Fo(Searc)o(h)k(the)g(history)g(for)f
-Fj(string)p Fo(,)i(starting)e(at)g(the)h(curren)o(t)g(history)g(o\013set.)30
-b(If)19 b Fj(direction)h Fn(<)f Fo(0,)120 283 y(then)14 b(the)f(searc)o(h)g
-(is)h(through)e(previous)i(en)o(tries,)g(else)g(through)f(subsequen)o(t.)20
-b(If)13 b Fj(string)k Fo(is)d(found,)120 345 y(then)f(the)g(curren)o(t)g
-(history)g(index)i(is)e(set)g(to)f(that)h(history)g(en)o(try)l(,)f(and)i(the)
-f(v)m(alue)h(returned)f(is)h(the)120 407 y(o\013set)h(in)i(the)f(line)i(of)d
-(the)h(en)o(try)g(where)g Fj(string)k Fo(w)o(as)c(found.)22
-b(Otherwise,)17 b(nothing)f(is)h(c)o(hanged,)120 470 y(and)e(a)g(-1)g(is)h
-(returned.)1725 659 y(F)l(unction)-1899 b Fh(int)20 b Fg(history)p
-276 659 V 20 w(searc)n(h)p 452 659 V 21 w(pre\014x)i Ff(\()p
-Fn(char)15 b(*string,)f(int)g(direction)p Ff(\))120 721 y Fo(Searc)o(h)22
-b(the)h(history)f(for)f Fj(string)p Fo(,)j(starting)e(at)f(the)i(curren)o(t)f
-(history)g(o\013set.)40 b(The)22 b(searc)o(h)g(is)120 783 y(anc)o(hored:)i
-(matc)o(hing)18 b(lines)h(m)o(ust)d(b)q(egin)j(with)f Fj(string)p
-Fo(.)26 b(If)17 b Fj(direction)i Fn(<)e Fo(0,)g(then)h(the)f(searc)o(h)g(is)
-120 845 y(through)e(previous)h(en)o(tries,)f(else)i(through)d(subsequen)o(t.)
-21 b(If)16 b Fj(string)j Fo(is)d(found,)f(then)h(the)f(curren)o(t)120
-908 y(history)20 b(index)i(is)e(set)g(to)g(that)f(en)o(try)l(,)i(and)f(the)g
-(return)h(v)m(alue)g(is)g(0.)34 b(Otherwise,)22 b(nothing)e(is)120
-970 y(c)o(hanged,)15 b(and)h(a)e(-1)h(is)h(returned.)1725 1159
-y(F)l(unction)-1899 b Fh(int)20 b Fg(history)p 276 1159 V 20
-w(searc)n(h)p 452 1159 V 21 w(p)r(os)h Ff(\()p Fn(char)15 b(*string,)f(int)g
-(direction,)g(int)h(pos)p Ff(\))120 1221 y Fo(Searc)o(h)d(for)f
+Fn(NULL)g Fo(p)q(oin)o(ter.)1725 2537 y(F)l(unction)-1899
+b Fh(HIST_ENTRY)21 b(*)e Fg(next)p 439 2537 V 21 w(history)k
+Ff(\(\))120 2599 y Fo(Mo)o(v)o(e)c(the)h(curren)o(t)g(history)f
+(o\013set)g(forw)o(ard)g(to)g(the)h(next)g(history)g(en)o(try)l(,)g
+(and)g(return)g(the)g(a)120 2661 y(p)q(oin)o(ter)c(to)e(that)h(en)o
+(try)l(.)k(If)d(there)f(is)h(no)f(next)g(en)o(try)l(,)g(return)g(a)g
+Fn(NULL)g Fo(p)q(oin)o(ter.)p eop
+9 10 bop 0 -58 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(History)1039 b(9)0 183 y Fi(2.3.5)30 b(Searc)n(hing)15
+b(the)h(History)f(List)62 320 y Fo(These)e(functions)g(allo)o(w)f
+(searc)o(hing)h(of)f(the)g(history)g(list)h(for)f(en)o(tries)h(con)o
+(taining)g(a)f(sp)q(eci\014c)i(string.)19 b(Searc)o(h-)0
+382 y(ing)e(ma)o(y)g(b)q(e)g(p)q(erformed)g(b)q(oth)g(forw)o(ard)f(and)
+h(bac)o(kw)o(ard)f(from)g(the)h(curren)o(t)f(history)h(p)q(osition.)26
+b(The)17 b(searc)o(h)0 445 y(ma)o(y)d(b)q(e)i Fj(anc)o(hored)p
+Fo(,)f(meaning)h(that)f(the)g(string)g(m)o(ust)g(matc)o(h)f(at)h(the)g
+(b)q(eginning)i(of)e(the)h(history)f(en)o(try)l(.)1725
+600 y(F)l(unction)-1899 b Fh(int)20 b Fg(history)p 276
+600 18 3 v 20 w(searc)n(h)j Ff(\()p Fn(char)14 b(*string,)g(int)h
+(direction)p Ff(\))120 662 y Fo(Searc)o(h)k(the)g(history)g(for)f
+Fj(string)p Fo(,)i(starting)e(at)g(the)h(curren)o(t)g(history)g
+(o\013set.)30 b(If)19 b Fj(direction)h Fn(<)f Fo(0,)120
+724 y(then)14 b(the)f(searc)o(h)g(is)h(through)e(previous)i(en)o
+(tries,)g(else)g(through)f(subsequen)o(t.)20 b(If)13
+b Fj(string)k Fo(is)d(found,)120 786 y(then)f(the)g(curren)o(t)g
+(history)g(index)i(is)e(set)g(to)f(that)h(history)g(en)o(try)l(,)f(and)
+i(the)f(v)m(alue)h(returned)f(is)h(the)120 849 y(o\013set)h(in)i(the)f
+(line)i(of)d(the)h(en)o(try)g(where)g Fj(string)k Fo(w)o(as)c(found.)22
+b(Otherwise,)17 b(nothing)f(is)h(c)o(hanged,)120 911
+y(and)e(a)g(-1)g(is)h(returned.)1725 1066 y(F)l(unction)-1899
+b Fh(int)20 b Fg(history)p 276 1066 V 20 w(searc)n(h)p
+452 1066 V 21 w(pre\014x)i Ff(\()p Fn(char)15 b(*string,)f(int)g
+(direction)p Ff(\))120 1128 y Fo(Searc)o(h)22 b(the)h(history)f(for)f
+Fj(string)p Fo(,)j(starting)e(at)f(the)i(curren)o(t)f(history)g
+(o\013set.)40 b(The)22 b(searc)o(h)g(is)120 1190 y(anc)o(hored:)i(matc)
+o(hing)18 b(lines)h(m)o(ust)d(b)q(egin)j(with)f Fj(string)p
+Fo(.)26 b(If)17 b Fj(direction)i Fn(<)e Fo(0,)g(then)h(the)f(searc)o(h)
+g(is)120 1253 y(through)e(previous)h(en)o(tries,)f(else)i(through)d
+(subsequen)o(t.)21 b(If)16 b Fj(string)j Fo(is)d(found,)f(then)h(the)f
+(curren)o(t)120 1315 y(history)20 b(index)i(is)e(set)g(to)g(that)f(en)o
+(try)l(,)i(and)f(the)g(return)h(v)m(alue)g(is)g(0.)34
+b(Otherwise,)22 b(nothing)e(is)120 1377 y(c)o(hanged,)15
+b(and)h(a)e(-1)h(is)h(returned.)1725 1532 y(F)l(unction)-1899
+b Fh(int)20 b Fg(history)p 276 1532 V 20 w(searc)n(h)p
+452 1532 V 21 w(p)r(os)h Ff(\()p Fn(char)15 b(*string,)f(int)g
+(direction,)g(int)h(pos)p Ff(\))120 1594 y Fo(Searc)o(h)d(for)f
Fj(string)k Fo(in)d(the)g(history)f(list,)i(starting)e(at)g
Fj(p)q(os)p Fo(,)h(an)f(absolute)h(index)h(in)o(to)e(the)h(list.)19
-b(If)12 b Fj(di-)120 1283 y(rection)g Fo(is)h(negativ)o(e,)f(the)g(searc)o(h)
-g(pro)q(ceeds)h(bac)o(kw)o(ard)e(from)g Fj(p)q(os)p Fo(,)i(otherwise)f(forw)o
-(ard.)17 b(Returns)120 1345 y(the)e(absolute)h(index)g(of)f(the)g(history)h
-(elemen)o(t)f(where)h Fj(string)j Fo(w)o(as)14 b(found,)h(or)g(-1)g
-(otherwise.)0 1634 y Fi(2.3.6)30 b(Managing)14 b(the)i(History)f(File)62
-1780 y Fo(The)f(History)g(library)h(can)f(read)g(the)g(history)g(from)f(and)i
-(write)f(it)g(to)f(a)h(\014le.)20 b(This)15 b(section)g(do)q(cumen)o(ts)f
-(the)0 1842 y(functions)i(for)f(managing)g(a)f(history)i(\014le.)1725
-2031 y(F)l(unction)-1899 b Fh(int)20 b Fg(read)p 211 2031 V
-20 w(history)i Ff(\()p Fn(char)15 b(*filename)p Ff(\))120 2093
-y Fo(Add)i(the)f(con)o(ten)o(ts)g(of)g Fj(\014lename)k Fo(to)c(the)h(history)
-f(list,)h(a)f(line)i(at)e(a)g(time.)24 b(If)17 b Fj(\014lename)j
-Fo(is)d Fn(NULL)p Fo(,)120 2155 y(then)f(read)f(from)f(`)p
-Fn(~/.history)p Fo('.)k(Returns)e(0)e(if)i(successful,)g(or)f(errno)g(if)h
-(not.)1725 2344 y(F)l(unction)-1899 b Fh(int)20 b Fg(read)p
-211 2344 V 20 w(history)p 406 2344 V 20 w(range)i Ff(\()p Fn(char)15
-b(*filename,)e(int)i(from,)g(int)f(to)p Ff(\))120 2407 y Fo(Read)j(a)e(range)
-h(of)f(lines)j(from)d Fj(\014lename)p Fo(,)i(adding)f(them)g(to)f(the)h
-(history)g(list.)23 b(Start)15 b(reading)i(at)120 2469 y(line)f
-Fj(from)f Fo(and)g(end)g(at)f Fj(to)p Fo(.)19 b(If)d Fj(from)e
+b(If)12 b Fj(di-)120 1656 y(rection)g Fo(is)h(negativ)o(e,)f(the)g
+(searc)o(h)g(pro)q(ceeds)h(bac)o(kw)o(ard)e(from)g Fj(p)q(os)p
+Fo(,)i(otherwise)f(forw)o(ard.)17 b(Returns)120 1719
+y(the)e(absolute)h(index)g(of)f(the)g(history)h(elemen)o(t)f(where)h
+Fj(string)j Fo(w)o(as)14 b(found,)h(or)g(-1)g(otherwise.)0
+1912 y Fi(2.3.6)30 b(Managing)14 b(the)i(History)f(File)62
+2049 y Fo(The)f(History)g(library)h(can)f(read)g(the)g(history)g(from)f
+(and)i(write)f(it)g(to)f(a)h(\014le.)20 b(This)15 b(section)g(do)q
+(cumen)o(ts)f(the)0 2111 y(functions)i(for)f(managing)g(a)f(history)i
+(\014le.)1725 2266 y(F)l(unction)-1899 b Fh(int)20 b
+Fg(read)p 211 2266 V 20 w(history)i Ff(\()p Fn(char)15
+b(*filename)p Ff(\))120 2328 y Fo(Add)i(the)f(con)o(ten)o(ts)g(of)g
+Fj(\014lename)k Fo(to)c(the)h(history)f(list,)h(a)f(line)i(at)e(a)g
+(time.)24 b(If)17 b Fj(\014lename)j Fo(is)d Fn(NULL)p
+Fo(,)120 2391 y(then)f(read)f(from)f(`)p Fn(~/.history)p
+Fo('.)k(Returns)e(0)e(if)i(successful,)g(or)f(errno)g(if)h(not.)1725
+2545 y(F)l(unction)-1899 b Fh(int)20 b Fg(read)p 211
+2545 V 20 w(history)p 406 2545 V 20 w(range)i Ff(\()p
+Fn(char)15 b(*filename,)e(int)i(from,)g(int)f(to)p Ff(\))120
+2608 y Fo(Read)j(a)e(range)h(of)f(lines)j(from)d Fj(\014lename)p
+Fo(,)i(adding)f(them)g(to)f(the)h(history)g(list.)23
+b(Start)15 b(reading)i(at)120 2670 y(line)f Fj(from)f
+Fo(and)g(end)g(at)f Fj(to)p Fo(.)19 b(If)d Fj(from)e
Fo(is)h(zero,)f(start)g(at)g(the)h(b)q(eginning.)22 b(If)15
-b Fj(to)i Fo(is)e(less)g(than)g Fj(from)p Fo(,)120 2531 y(then)i(read)g(un)o
-(til)h(the)f(end)g(of)g(the)g(\014le.)25 b(If)17 b Fj(\014lename)k
-Fo(is)c Fn(NULL)p Fo(,)f(then)i(read)e(from)g(`)p Fn(~/.history)p
-Fo('.)120 2593 y(Returns)g(0)f(if)g(successful,)h(or)f Fn(errno)g
-Fo(if)g(not.)p eop
-%%Page: 10 12
-11 bop 0 -83 a Fo(10)1474 b(GNU)15 b(History)g(Library)1725
-158 y(F)l(unction)-1899 b Fh(int)20 b Fg(write)p 229 158 18
-3 v 22 w(history)i Ff(\()p Fn(char)15 b(*filename)p Ff(\))120
-221 y Fo(W)l(rite)20 b(the)g(curren)o(t)f(history)h(to)f Fj(\014lename)p
-Fo(,)i(o)o(v)o(erwriting)f Fj(\014lename)j Fo(if)d(necessary)l(.)34
-b(If)20 b Fj(\014lename)120 283 y Fo(is)d Fn(NULL)p Fo(,)g(then)g(write)g
-(the)g(history)g(list)h(to)e(`)p Fn(~/.history)p Fo('.)23 b(V)l(alues)18
-b(returned)g(are)e(as)h(in)h Fn(read_)120 345 y(history)c(\(\))p
-Fo(.)1725 504 y(F)l(unction)-1899 b Fh(int)20 b Fg(app)r(end)p
-285 504 V 19 w(history)j Ff(\()p Fn(int)14 b(nelements,)g(char)h(*filename)p
-Ff(\))120 566 y Fo(App)q(end)i(the)e(last)g Fj(nelemen)o(ts)j
-Fo(of)d(the)g(history)g(list)h(to)f Fj(\014lename)p Fo(.)1725
-724 y(F)l(unction)-1899 b Fh(int)20 b Fg(history)p 276 724
-V 20 w(truncate)p 507 724 V 21 w(\014le)k Ff(\()p Fn(char)14
-b(*filename,)g(int)h(nlines)p Ff(\))120 787 y Fo(T)l(runcate)g(the)h(history)
-f(\014le)h Fj(\014lename)p Fo(,)g(lea)o(ving)g(only)g(the)f(last)g
-Fj(nlines)k Fo(lines.)0 988 y Fi(2.3.7)30 b(History)15 b(Expansion)62
-1125 y Fo(These)h(functions)g(implemen)o(t)g Fn(csh)p Fo(-lik)o(e)g(history)g
-(expansion.)1725 1283 y(F)l(unction)-1899 b Fh(int)20 b Fg(history)p
-276 1283 V 20 w(expand)j Ff(\()p Fn(char)14 b(*string,)g(char)h(**output)p
-Ff(\))120 1345 y Fo(Expand)20 b Fj(string)p Fo(,)f(placing)i(the)e(result)h
-(in)o(to)f Fj(output)p Fo(,)h(a)f(p)q(oin)o(ter)h(to)e(a)h(string)h(\(see)f
-(Section)h(1.1)120 1408 y([History)15 b(In)o(teraction],)f(page)h(1\).)20
-b(Returns:)120 1555 y Fn(0)216 b Fo(If)21 b(no)g(expansions)h(to)q(ok)e
-(place)h(\(or,)g(if)h(the)f(only)g(c)o(hange)g(in)h(the)f(text)f(w)o(as)g
-(the)360 1618 y(de-slashifying)d(of)e(the)g(history)h(expansion)g(c)o
-(haracter\);)120 1701 y Fn(1)216 b Fo(if)16 b(expansions)g(did)g(tak)o(e)e
-(place;)120 1785 y Fn(-1)192 b Fo(if)16 b(there)f(w)o(as)f(an)h(error)g(in)h
-(expansion;)120 1869 y Fn(2)216 b Fo(if)14 b(the)f(returned)h(line)h(should)f
-(only)g(b)q(e)f(displa)o(y)o(ed,)i(but)e(not)g(executed,)h(as)f(with)h(the)
-360 1931 y Fn(:p)h Fo(mo)q(di\014er)h(\(see)f(Section)h(1.1.3)e([Mo)q
-(di\014ers],)h(page)g(2\).)120 2079 y(If)g(an)h(error)e(o)q(curred)i(in)g
-(expansion,)f(then)h Fj(output)g Fo(con)o(tains)f(a)g(descriptiv)o(e)i(error)
-d(message.)1725 2238 y(F)l(unction)-1899 b Fh(char)20 b(*)f
-Fg(history)p 347 2238 V 21 w(arg)p 449 2238 V 19 w(extract)24
-b Ff(\()p Fn(int)14 b(first,)h(int)g(last,)f(char)h(*string)p
-Ff(\))120 2300 y Fo(Extract)10 b(a)h(string)g(segmen)o(t)g(consisting)h(of)f
-(the)g Fj(\014rst)h Fo(through)f Fj(last)h Fo(argumen)o(ts)e(presen)o(t)h(in)
-h Fj(string)p Fo(.)120 2362 y(Argumen)o(ts)j(are)g(brok)o(en)g(up)g(as)g(in)h
-(Bash.)1725 2521 y(F)l(unction)-1899 b Fh(char)20 b(*)f Fg(get)p
-249 2521 V 21 w(history)p 445 2521 V 20 w(ev)n(en)n(t)25 b
-Ff(\()p Fn(char)14 b(*string,)g(int)h(*cindex,)f(int)h(qchar)p
-Ff(\))120 2583 y Fo(Returns)e(the)f(text)f(of)h(the)g(history)g(ev)o(en)o(t)f
-(b)q(eginning)k(at)c Fj(string)16 b Fn(+)c Fj(*cindex)p Fo(.)20
-b Fj(*cindex)c Fo(is)d(mo)q(di\014ed)120 2645 y(to)h(p)q(oin)o(t)h(to)f
-(after)h(the)f(ev)o(en)o(t)h(sp)q(eci\014er.)21 b(A)o(t)15
-b(function)g(en)o(try)l(,)f Fj(cindex)20 b Fo(p)q(oin)o(ts)15
-b(to)f(the)h(index)h(in)o(to)p eop
-%%Page: 11 13
-12 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(History)1017
-b(11)120 158 y Fj(string)17 b Fo(where)d(the)f(history)h(ev)o(en)o(t)f(sp)q
-(eci\014cation)i(b)q(egins.)20 b Fj(qc)o(har)d Fo(is)c(a)g(c)o(haracter)g
-(that)g(is)h(allo)o(w)o(ed)120 221 y(to)h(end)g(the)h(ev)o(en)o(t)f(sp)q
-(eci\014cation)i(in)f(addition)g(to)f(the)g(\\normal")g(terminating)g(c)o
-(haracters.)1725 394 y(F)l(unction)-1899 b Fh(char)20 b(**)f
-Fg(history)p 373 394 18 3 v 21 w(tok)n(enize)25 b Ff(\()p Fn(char)14
-b(*string)p Ff(\))120 456 y Fo(Return)k(an)f(arra)o(y)f(of)h(tok)o(ens)f
-(parsed)i(out)e(of)h Fj(string)p Fo(,)g(m)o(uc)o(h)h(as)e(the)i(shell)g(migh)
-o(t.)26 b(The)17 b(tok)o(ens)120 519 y(are)c(split)h(on)f(white)g(space)h
-(and)f(on)g(the)g(c)o(haracters)f Fn(\(\)<>;&|$)p Fo(,)g(and)h(shell)i
-(quoting)e(con)o(v)o(en)o(tions)120 581 y(are)i(ob)q(ey)o(ed.)0
-840 y Fm(2.4)33 b(History)15 b(V)-6 b(ariables)62 981 y Fo(This)16
-b(section)g(describ)q(es)h(the)e(externally)h(visible)i(v)m(ariables)e(exp)q
-(orted)g(b)o(y)f(the)g(GNU)g(History)g(Library)l(.)1736 1155
-y(V)l(ariable)-1899 b Fh(int)20 b Fg(history)p 276 1155 V 20
-w(base)120 1217 y Fo(The)15 b(logical)i(o\013set)d(of)h(the)g(\014rst)g(en)o
-(try)g(in)h(the)f(history)g(list.)1736 1390 y(V)l(ariable)-1899
-b Fh(int)20 b Fg(history)p 276 1390 V 20 w(length)120 1453
-y Fo(The)15 b(n)o(um)o(b)q(er)h(of)f(en)o(tries)g(curren)o(tly)h(stored)f(in)
-h(the)f(history)g(list.)1736 1626 y(V)l(ariable)-1899 b Fh(int)20
-b Fg(max)p 208 1626 V 19 w(input)p 360 1626 V 21 w(history)120
-1689 y Fo(The)12 b(maxim)o(um)g(n)o(um)o(b)q(er)g(of)f(history)h(en)o(tries.)
-19 b(This)12 b(m)o(ust)f(b)q(e)h(c)o(hanged)g(using)h Fn(stifle_history)120
-1751 y(\(\))p Fo(.)1736 1924 y(V)l(ariable)-1899 b Fh(char)20
-b Fg(history)p 302 1924 V 20 w(expansion)p 569 1924 V 21 w(c)n(har)120
-1987 y Fo(The)15 b(c)o(haracter)g(that)f(starts)g(a)h(history)g(ev)o(en)o(t.)
-20 b(The)15 b(default)h(is)g(`)p Fn(!)p Fo('.)1736 2160 y(V)l(ariable)-1899
-b Fh(char)20 b Fg(history)p 302 2160 V 20 w(subst)p 454 2160
-V 20 w(c)n(har)120 2222 y Fo(The)13 b(c)o(haracter)e(that)h(in)o(v)o(ok)o(es)
-g(w)o(ord)g(substitution)h(if)g(found)g(at)e(the)i(start)e(of)h(a)g(line.)21
-b(The)12 b(default)120 2285 y(is)k(`)p Fn(^)p Fo('.)1736 2458
-y(V)l(ariable)-1899 b Fh(char)20 b Fg(history)p 302 2458 V
-20 w(commen)n(t)p 552 2458 V 19 w(c)n(har)120 2521 y Fo(During)12
-b(tok)o(enization,)h(if)f(this)h(c)o(haracter)e(is)i(seen)f(as)g(the)g
-(\014rst)f(c)o(haracter)g(of)h(a)g(w)o(ord,)f(then)i(it)f(and)120
-2583 y(all)19 b(subsequen)o(t)g(c)o(haracters)e(up)h(to)g(a)f(newline)j(are)e
-(ignored,)h(suppressing)g(history)f(expansion)120 2645 y(for)d(the)g
-(remainder)h(of)f(the)g(line.)21 b(This)16 b(is)g(disabled)h(b)o(y)e
-(default.)p eop
-%%Page: 12 14
-13 bop 0 -83 a Fo(12)1474 b(GNU)15 b(History)g(Library)1736
-158 y(V)l(ariable)-1899 b Fh(char)20 b(*)f Fg(history)p 347
-158 18 3 v 21 w(no)p 429 158 V 20 w(expand)p 629 158 V 20 w(c)n(hars)120
-221 y Fo(The)f(list)g(of)g(c)o(haracters)e(whic)o(h)j(inhibit)h(history)d
-(expansion)i(if)f(found)g(immediately)h(follo)o(wing)120 283
-y Fj(history)p 261 283 14 2 v 16 w(expansion)p 472 283 V 18
-w(c)o(har)p Fo(.)g(The)d(default)f(is)h(whitespace)g(and)g(`)p
-Fn(=)p Fo('.)0 575 y Fm(2.5)33 b(History)15 b(Programming)h(Example)62
-720 y Fo(The)g(follo)o(wing)g(program)e(demonstrates)g(simple)j(use)e(of)g
-(the)g(GNU)g(History)g(Library)l(.)120 852 y Fn(main)23 b(\(\))120
-902 y({)168 951 y(char)g(line[1024],)f(*t;)168 1001 y(int)h(len,)g(done)h(=)g
-(0;)168 1101 y(line[0])f(=)g(0;)168 1201 y(using_history)f(\(\);)168
-1250 y(while)h(\(!done\))215 1300 y({)263 1350 y(printf)g(\("history$)g("\);)
-263 1400 y(fflush)g(\(stdout\);)263 1450 y(t)h(=)g(fgets)f(\(line,)g(sizeof)g
-(\(line\))g(-)h(1,)f(stdin\);)263 1499 y(if)h(\(t)f(&&)h(*t\))311
-1549 y({)359 1599 y(len)f(=)h(strlen)f(\(t\);)359 1649 y(if)g(\(t[len)g(-)h
-(1])g(==)f('\\n'\))406 1699 y(t[len)h(-)f(1])h(=)g('\\0';)311
-1748 y(})263 1848 y(if)g(\(!t\))311 1898 y(strcpy)f(\(line,)g("quit"\);)263
-1998 y(if)h(\(line[0]\))311 2047 y({)359 2097 y(char)f(*expansion;)359
-2147 y(int)g(result;)359 2247 y(result)g(=)g(history_expand)f(\(line,)h
-(&expansion\);)359 2296 y(if)g(\(result\))406 2346 y(fprintf)g(\(stderr,)g
-("\045s\\n",)g(expansion\);)359 2446 y(if)g(\(result)g(<)h(0)g(||)f(result)g
-(==)h(2\))406 2496 y({)454 2545 y(free)f(\(expansion\);)454
-2595 y(continue;)406 2645 y(})p eop
-%%Page: 13 15
-14 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(History)1017
-b(13)359 208 y Fn(add_history)22 b(\(expansion\);)359 258 y(strncpy)h
-(\(line,)g(expansion,)f(sizeof)h(\(line\))g(-)h(1\);)359 308
-y(free)f(\(expansion\);)311 358 y(})263 457 y(if)h(\(strcmp)f(\(line,)g
-("quit"\))g(==)g(0\))311 507 y(done)g(=)h(1;)263 557 y(else)f(if)h(\(strcmp)f
-(\(line,)g("save"\))g(==)h(0\))311 607 y(write_history)e(\("history_file"\);)
-263 656 y(else)h(if)h(\(strcmp)f(\(line,)g("read"\))g(==)h(0\))311
-706 y(read_history)e(\("history_file"\);)263 756 y(else)h(if)h(\(strcmp)f
-(\(line,)g("list"\))g(==)h(0\))311 806 y({)359 856 y(register)e(HIST_ENTRY)h
-(**the_list;)359 906 y(register)f(int)i(i;)359 1005 y(the_list)e(=)i
-(history_list)e(\(\);)359 1055 y(if)h(\(the_list\))406 1105
-y(for)h(\(i)f(=)h(0;)g(the_list[i];)e(i++\))454 1155 y(printf)h(\("\045d:)g
-(\045s\\n",)g(i)h(+)g(history_base,)e(the_list[i]->line\);)311
-1204 y(})263 1254 y(else)h(if)h(\(strncmp)f(\(line,)g("delete",)g(6\))g(==)h
-(0\))311 1304 y({)359 1354 y(int)f(which;)359 1404 y(if)g(\(\(sscanf)g
-(\(line)g(+)h(6,)f("\045d",)h(&which\)\))e(==)i(1\))406 1453
-y({)454 1503 y(HIST_ENTRY)f(*entry)g(=)g(remove_history)f(\(which\);)454
-1553 y(if)i(\(!entry\))502 1603 y(fprintf)f(\(stderr,)f("No)i(such)f(entry)g
-(\045d\\n",)g(which\);)454 1653 y(else)502 1703 y({)550 1752
-y(free)g(\(entry->line\);)550 1802 y(free)g(\(entry\);)502
-1852 y(})406 1902 y(})359 1952 y(else)406 2001 y({)454 2051
-y(fprintf)g(\(stderr,)g("non-numeric)f(arg)h(given)h(to)f(`delete'\\n"\);)406
-2101 y(})311 2151 y(})215 2201 y(})120 2250 y(})p eop
-%%Page: 14 16
-15 bop 0 -83 a Fo(14)1474 b(GNU)15 b(History)g(Library)p eop
-%%Page: 15 17
-16 bop 0 -83 a Fo(App)q(endix)17 b(A:)e(Concept)g(Index)1346
-b(15)0 158 y Fk(App)r(endix)13 b(A)41 b(Concept)15 b(Index)0
-405 y Fm(A)0 471 y Fe(anc)o(hored)f(searc)o(h)5 b Fd(:)i(:)f(:)g(:)g(:)g(:)g
-(:)h(:)f(:)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(:)18 b Fe(8)0
-579 y Fm(E)0 646 y Fe(ev)o(en)o(t)13 b(designators)g Fd(:)6
-b(:)h(:)f(:)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(:)h(:)f(:)g(:)23
-b Fe(1)1015 405 y(expansion)5 b Fd(:)k(:)d(:)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(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fe(1)1015
-521 y Fm(H)1015 587 y Fe(history)d(ev)o(en)o(ts)5 b Fd(:)i(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
-Fe(1)1015 646 y(History)c(Searc)o(hing)7 b Fd(:)h(:)e(:)g(:)g(:)g(:)g(:)h(:)f
-(:)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(:)20 b Fe(8)p eop
-%%Page: 16 18
-17 bop 0 -83 a Fo(16)1474 b(GNU)15 b(History)g(Library)p eop
-%%Page: 17 19
-18 bop 0 -83 a Fo(App)q(endix)17 b(B:)e(F)l(unction)h(and)g(V)l(ariable)g
-(Index)1069 b(17)0 158 y Fk(App)r(endix)13 b(B)41 b(F)-7 b(unction)15
-b(and)g(V)-7 b(ariable)14 b(Index)0 405 y Fm(A)0 471 y Fc(add)p
-62 471 12 2 v 13 w(history)8 b Fd(:)s(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)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(:)h(:)f(:)20 b Fe(7)0 529 y Fc(append)p
-122 529 V 12 w(history)9 b Fd(:)d(:)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(:)h(:)f
-(:)g(:)g(:)g(:)24 b Fe(10)0 654 y Fm(C)0 720 y Fc(current)p
-142 720 V 11 w(history)9 b Fd(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)24 b Fe(8)0 845 y Fm(G)0 911 y Fc(get)p 62 911
-V 13 w(history)p 215 911 V 11 w(event)9 b Fd(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)23 b Fe(10)0 1036 y Fm(H)0 1102 y Fc(history)p
-142 1102 V 11 w(arg)p 213 1102 V 13 w(extract)8 b Fd(:)t(:)e(:)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(:)21 b Fe(10)0 1160 y Fc(history)p 142 1160
-V 11 w(base)e Fd(:)6 b(:)g(:)g(:)h(:)f(:)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(:)h
-(:)f(:)g(:)20 b Fe(11)0 1218 y Fc(history)p 142 1218 V 11 w(comment)p
-293 1218 V 12 w(char)g Fd(:)6 b(:)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(:)h(:)21
-b Fe(11)0 1276 y Fc(history)p 142 1276 V 11 w(expand)10 b Fd(:)c(:)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(:)h(:)f(:)g(:)g(:)g(:)24 b Fe(10)0
-1335 y Fc(history)p 142 1335 V 11 w(expansion)p 333 1335 V
-11 w(char)17 b Fd(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Fe(11)0
-1393 y Fc(history)p 142 1393 V 11 w(get)8 b Fd(:)d(:)h(:)g(:)g(:)g(:)g(:)h(:)
-f(:)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(:)h(:)f(:)20 b Fe(8)0
-1451 y Fc(history)p 142 1451 V 11 w(get)p 213 1451 V 13 w(history)p
-366 1451 V 12 w(state)t Fd(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fe(6)0
-1509 y Fc(history)p 142 1509 V 11 w(is)p 193 1509 V 14 w(stifled)7
-b Fd(:)f(:)g(:)g(:)g(:)h(:)f(:)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(:)23 b
-Fe(7)0 1567 y Fc(history)p 142 1567 V 11 w(length)16 b Fd(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
-b Fe(11)0 1625 y Fc(history)p 142 1625 V 11 w(list)7 b Fd(:)t(:)g(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)19
-b Fe(7)0 1683 y Fc(history)p 142 1683 V 11 w(no)p 193 1683
-V 14 w(expand)p 327 1683 V 12 w(chars)f Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20
-b Fe(12)0 1741 y Fc(history)p 142 1741 V 11 w(search)t Fd(:)t(:)6
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)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(:)17
-b Fe(9)0 1800 y Fc(history)p 142 1800 V 11 w(search)p 273 1800
-V 12 w(pos)9 b Fd(:)d(:)g(:)g(:)g(:)h(:)f(:)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(:)23
-b Fe(9)0 1858 y Fc(history)p 142 1858 V 11 w(search)p 273 1858
-V 12 w(prefix)6 b Fd(:)t(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
-b Fe(9)0 1916 y Fc(history)p 142 1916 V 11 w(set)p 213 1916
-V 13 w(history)p 366 1916 V 12 w(state)t Fd(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fe(6)0 1974 y Fc(history)p 142 1974 V 11 w(set)p 213 1974
-V 13 w(pos)5 b Fd(:)h(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)18 b Fe(8)0 2032 y Fc(history)p 142 2032 V 11 w(subst)p
-253 2032 V 13 w(char)k Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)24
-b Fe(11)1015 405 y Fc(history)p 1157 405 V 12 w(tokenize)9
-b Fd(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22
-b Fe(11)1015 463 y Fc(history)p 1157 463 V 12 w(total)p 1269
-463 V 12 w(bytes)9 b Fd(:)t(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
-b Fe(8)1015 521 y Fc(history)p 1157 521 V 12 w(truncate)p 1329
-521 V 11 w(file)5 b Fd(:)g(:)h(:)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(:)19
-b Fe(10)1015 629 y Fm(M)1015 695 y Fc(max)p 1077 695 V 13 w(input)p
-1190 695 V 13 w(history)14 b Fd(:)6 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(:)h(:)f(:)g
-(:)g(:)17 b Fe(11)1015 803 y Fm(N)1015 870 y Fc(next)p 1097
-870 V 13 w(history)7 b Fd(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)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(:)20 b Fe(8)1015 978 y Fm(P)1015 1044
-y Fc(previous)p 1177 1044 V 12 w(history)7 b Fd(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fe(8)1015 1152 y Fm(R)1015
-1218 y Fc(read)p 1097 1218 V 13 w(history)7 b Fd(:)s(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)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(:)20 b Fe(9)1015
-1276 y Fc(read)p 1097 1276 V 13 w(history)p 1250 1276 V 11
-w(range)9 b Fd(:)d(:)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(:)h(:)f(:)g(:)g(:)g(:)23
-b Fe(9)1015 1335 y Fc(remove)p 1137 1335 V 12 w(history)t Fd(:)t(:)6
-b(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)17
-b Fe(7)1015 1393 y Fc(replace)p 1157 1393 V 12 w(history)p
-1309 1393 V 11 w(entry)6 b Fd(:)f(:)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(:)h(:)f(:)19
-b Fe(7)1015 1501 y Fm(S)1015 1567 y Fc(stifle)p 1137 1567 V
-12 w(history)t Fd(:)t(:)6 b(:)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(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)17 b Fe(7)1015 1675 y Fm(U)1015 1741 y Fc(unstifle)p
-1177 1741 V 12 w(history)7 b Fd(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)23 b Fe(7)1015 1800 y Fc(using)p 1117 1800 V
-13 w(history)5 b Fd(:)s(:)h(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)18 b Fe(6)1015 1907 y Fm(W)1015 1974 y Fc(where)p
-1117 1974 V 13 w(history)5 b Fd(:)s(:)h(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)18 b Fe(8)1015 2032 y Fc(write)p
-1117 2032 V 13 w(history)5 b Fd(:)s(:)h(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)18 b Fe(9)p eop
-%%Page: 18 20
-19 bop 0 -83 a Fo(18)1474 b(GNU)15 b(History)g(Library)p eop
-%%Page: -1 21
-20 bop 1937 -83 a Fo(i)0 158 y Fk(T)-7 b(able)15 b(of)g(Con)n(ten)n(ts)0
-333 y Fm(1)67 b(Using)22 b(History)h(In)n(teractiv)n(ely)9
-b Fb(:)k(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)31 b Fm(1)149 411 y Fo(1.1)45
-b(History)15 b(In)o(teraction)9 b Fa(:)f(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)23
-b Fo(1)299 473 y(1.1.1)44 b(Ev)o(en)o(t)14 b(Designators)6
-b Fa(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)20 b Fo(1)299 535 y(1.1.2)44 b(W)l(ord)15 b(Designators)9
-b Fa(:)d(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)23 b Fo(2)299 597 y(1.1.3)44 b(Mo)q(di\014ers)14
-b Fa(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fo(2)0 722
-y Fm(2)67 b(Programming)23 b(with)g(GNU)f(History)13 b Fb(:)e(:)f(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b
-Fm(5)149 800 y Fo(2.1)45 b(In)o(tro)q(duction)16 b(to)f(History)6
-b Fa(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)20 b Fo(5)149 862 y(2.2)45 b(History)15
-b(Storage)d Fa(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)27
-b Fo(5)149 924 y(2.3)45 b(History)15 b(F)l(unctions)c Fa(:)d(:)f(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)25 b Fo(6)299 986 y(2.3.1)44 b(Initializing)18
-b(History)d(and)h(State)e(Managemen)o(t)f Fa(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)27 b Fo(6)299 1049 y(2.3.2)44 b(History)15
-b(List)h(Managemen)o(t)c Fa(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)28 b Fo(7)299 1111 y(2.3.3)44 b(Information)15 b(Ab)q(out)g(the)h(History)
-f(List)5 b Fa(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)19 b Fo(7)299 1173 y(2.3.4)44 b(Mo)o(ving)15
-b(Around)g(the)g(History)g(List)6 b Fa(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)20
-b Fo(8)299 1236 y(2.3.5)44 b(Searc)o(hing)16 b(the)f(History)g(List)7
-b Fa(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)21 b
-Fo(8)299 1298 y(2.3.6)44 b(Managing)15 b(the)g(History)g(File)5
-b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b
-Fo(9)299 1360 y(2.3.7)44 b(History)15 b(Expansion)d Fa(:)7
-b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)26
-b Fo(10)149 1422 y(2.4)45 b(History)15 b(V)l(ariables)5 b Fa(:)k(:)e(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)20 b Fo(11)149 1485 y(2.5)45 b(History)15
-b(Programming)f(Example)8 b Fa(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)23 b Fo(12)0 1609 y Fm(App)r(endix)h(A)67 b(Concept)22
-b(Index)15 b Fb(:)c(:)f(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)37 b Fm(15)0 1749
-y(App)r(endix)24 b(B)67 b(F)-6 b(unction)25 b(and)e(V)-6 b(ariable)24
-b(Index)8 b Fb(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)31
+b Fj(to)i Fo(is)e(less)g(than)g Fj(from)p Fo(,)p eop
+10 11 bop 0 -58 a Fo(10)1474 b(GNU)15 b(History)g(Library)120
+183 y(then)i(read)g(un)o(til)h(the)f(end)g(of)g(the)g(\014le.)25
+b(If)17 b Fj(\014lename)k Fo(is)c Fn(NULL)p Fo(,)f(then)i(read)e(from)g
+(`)p Fn(~/.history)p Fo('.)120 246 y(Returns)g(0)f(if)g(successful,)h
+(or)f Fn(errno)g Fo(if)g(not.)1725 410 y(F)l(unction)-1899
+b Fh(int)20 b Fg(write)p 229 410 18 3 v 22 w(history)i
+Ff(\()p Fn(char)15 b(*filename)p Ff(\))120 472 y Fo(W)l(rite)20
+b(the)g(curren)o(t)f(history)h(to)f Fj(\014lename)p Fo(,)i(o)o(v)o
+(erwriting)f Fj(\014lename)j Fo(if)d(necessary)l(.)34
+b(If)20 b Fj(\014lename)120 534 y Fo(is)d Fn(NULL)p Fo(,)g(then)g
+(write)g(the)g(history)g(list)h(to)e(`)p Fn(~/.history)p
+Fo('.)23 b(V)l(alues)18 b(returned)g(are)e(as)h(in)h
+Fn(read_)120 596 y(history)c(\(\))p Fo(.)1725 760 y(F)l(unction)-1899
+b Fh(int)20 b Fg(app)r(end)p 285 760 V 19 w(history)j
+Ff(\()p Fn(int)14 b(nelements,)g(char)h(*filename)p Ff(\))120
+823 y Fo(App)q(end)i(the)e(last)g Fj(nelemen)o(ts)j Fo(of)d(the)g
+(history)g(list)h(to)f Fj(\014lename)p Fo(.)1725 987
+y(F)l(unction)-1899 b Fh(int)20 b Fg(history)p 276 987
+V 20 w(truncate)p 507 987 V 21 w(\014le)k Ff(\()p Fn(char)14
+b(*filename,)g(int)h(nlines)p Ff(\))120 1049 y Fo(T)l(runcate)g(the)h
+(history)f(\014le)h Fj(\014lename)p Fo(,)g(lea)o(ving)g(only)g(the)f
+(last)g Fj(nlines)k Fo(lines.)0 1263 y Fi(2.3.7)30 b(History)15
+b(Expansion)62 1401 y Fo(These)h(functions)g(implemen)o(t)g
+Fn(csh)p Fo(-lik)o(e)g(history)g(expansion.)1725 1565
+y(F)l(unction)-1899 b Fh(int)20 b Fg(history)p 276 1565
+V 20 w(expand)j Ff(\()p Fn(char)14 b(*string,)g(char)h(**output)p
+Ff(\))120 1627 y Fo(Expand)20 b Fj(string)p Fo(,)f(placing)i(the)e
+(result)h(in)o(to)f Fj(output)p Fo(,)h(a)f(p)q(oin)o(ter)h(to)e(a)h
+(string)h(\(see)f(Section)h(1.1)120 1689 y([History)15
+b(In)o(teraction],)f(page)h(1\).)20 b(Returns:)120 1840
+y Fn(0)216 b Fo(If)21 b(no)g(expansions)h(to)q(ok)e(place)h(\(or,)g(if)
+h(the)f(only)g(c)o(hange)g(in)h(the)f(text)f(w)o(as)g(the)360
+1902 y(de-slashifying)d(of)e(the)g(history)h(expansion)g(c)o
+(haracter\);)120 1991 y Fn(1)216 b Fo(if)16 b(expansions)g(did)g(tak)o
+(e)e(place;)120 2080 y Fn(-1)192 b Fo(if)16 b(there)f(w)o(as)f(an)h
+(error)g(in)h(expansion;)120 2168 y Fn(2)216 b Fo(if)14
+b(the)f(returned)h(line)h(should)f(only)g(b)q(e)f(displa)o(y)o(ed,)i
+(but)e(not)g(executed,)h(as)f(with)h(the)360 2231 y Fn(:p)h
+Fo(mo)q(di\014er)h(\(see)f(Section)h(1.1.3)e([Mo)q(di\014ers],)h(page)g
+(2\).)120 2381 y(If)g(an)h(error)e(o)q(curred)i(in)g(expansion,)f(then)
+h Fj(output)g Fo(con)o(tains)f(a)g(descriptiv)o(e)i(error)d(message.)
+1725 2545 y(F)l(unction)-1899 b Fh(char)20 b(*)f Fg(history)p
+347 2545 V 21 w(arg)p 449 2545 V 19 w(extract)24 b Ff(\()p
+Fn(int)14 b(first,)h(int)g(last,)f(char)h(*string)p Ff(\))120
+2608 y Fo(Extract)10 b(a)h(string)g(segmen)o(t)g(consisting)h(of)f(the)
+g Fj(\014rst)h Fo(through)f Fj(last)h Fo(argumen)o(ts)e(presen)o(t)h
+(in)h Fj(string)p Fo(.)120 2670 y(Argumen)o(ts)j(are)g(brok)o(en)g(up)g
+(as)g(in)h(Bash.)p eop
+11 12 bop 0 -58 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(History)1017 b(11)1725 183 y(F)l(unction)-1899 b Fh(char)20
+b(*)f Fg(get)p 249 183 18 3 v 21 w(history)p 445 183
+V 20 w(ev)n(en)n(t)25 b Ff(\()p Fn(char)14 b(*string,)g(int)h(*cindex,)
+f(int)h(qchar)p Ff(\))120 246 y Fo(Returns)e(the)f(text)f(of)h(the)g
+(history)g(ev)o(en)o(t)f(b)q(eginning)k(at)c Fj(string)16
+b Fn(+)c Fj(*cindex)p Fo(.)20 b Fj(*cindex)c Fo(is)d(mo)q(di\014ed)120
+308 y(to)h(p)q(oin)o(t)h(to)f(after)h(the)f(ev)o(en)o(t)h(sp)q
+(eci\014er.)21 b(A)o(t)15 b(function)g(en)o(try)l(,)f
+Fj(cindex)20 b Fo(p)q(oin)o(ts)15 b(to)f(the)h(index)h(in)o(to)120
+370 y Fj(string)h Fo(where)d(the)f(history)h(ev)o(en)o(t)f(sp)q
+(eci\014cation)i(b)q(egins.)20 b Fj(qc)o(har)d Fo(is)c(a)g(c)o
+(haracter)g(that)g(is)h(allo)o(w)o(ed)120 432 y(to)h(end)g(the)h(ev)o
+(en)o(t)f(sp)q(eci\014cation)i(in)f(addition)g(to)f(the)g(\\normal")g
+(terminating)g(c)o(haracters.)1725 587 y(F)l(unction)-1899
+b Fh(char)20 b(**)f Fg(history)p 373 587 V 21 w(tok)n(enize)25
+b Ff(\()p Fn(char)14 b(*string)p Ff(\))120 649 y Fo(Return)k(an)f(arra)
+o(y)f(of)h(tok)o(ens)f(parsed)i(out)e(of)h Fj(string)p
+Fo(,)g(m)o(uc)o(h)h(as)e(the)i(shell)g(migh)o(t.)26 b(The)17
+b(tok)o(ens)120 711 y(are)c(split)h(on)f(white)g(space)h(and)f(on)g
+(the)g(c)o(haracters)f Fn(\(\)<>;&|$)p Fo(,)g(and)h(shell)i(quoting)e
+(con)o(v)o(en)o(tions)120 774 y(are)i(ob)q(ey)o(ed.)0
+983 y Fm(2.4)33 b(History)15 b(V)-6 b(ariables)62 1120
+y Fo(This)16 b(section)g(describ)q(es)h(the)e(externally)h(visible)i(v)
+m(ariables)e(exp)q(orted)g(b)o(y)f(the)g(GNU)g(History)g(Library)l(.)
+1736 1275 y(V)l(ariable)-1899 b Fh(int)20 b Fg(history)p
+276 1275 V 20 w(base)120 1337 y Fo(The)15 b(logical)i(o\013set)d(of)h
+(the)g(\014rst)g(en)o(try)g(in)h(the)f(history)g(list.)1736
+1491 y(V)l(ariable)-1899 b Fh(int)20 b Fg(history)p 276
+1491 V 20 w(length)120 1554 y Fo(The)15 b(n)o(um)o(b)q(er)h(of)f(en)o
+(tries)g(curren)o(tly)h(stored)f(in)h(the)f(history)g(list.)1736
+1708 y(V)l(ariable)-1899 b Fh(int)20 b Fg(max)p 208 1708
+V 19 w(input)p 360 1708 V 21 w(history)120 1771 y Fo(The)12
+b(maxim)o(um)g(n)o(um)o(b)q(er)g(of)f(history)h(en)o(tries.)19
+b(This)12 b(m)o(ust)f(b)q(e)h(c)o(hanged)g(using)h Fn(stifle_history)
+120 1833 y(\(\))p Fo(.)1736 1987 y(V)l(ariable)-1899
+b Fh(char)20 b Fg(history)p 302 1987 V 20 w(expansion)p
+569 1987 V 21 w(c)n(har)120 2050 y Fo(The)15 b(c)o(haracter)g(that)f
+(starts)g(a)h(history)g(ev)o(en)o(t.)20 b(The)15 b(default)h(is)g(`)p
+Fn(!)p Fo('.)1736 2204 y(V)l(ariable)-1899 b Fh(char)20
+b Fg(history)p 302 2204 V 20 w(subst)p 454 2204 V 20
+w(c)n(har)120 2266 y Fo(The)13 b(c)o(haracter)e(that)h(in)o(v)o(ok)o
+(es)g(w)o(ord)g(substitution)h(if)g(found)g(at)e(the)i(start)e(of)h(a)g
+(line.)21 b(The)12 b(default)120 2329 y(is)k(`)p Fn(^)p
+Fo('.)1736 2483 y(V)l(ariable)-1899 b Fh(char)20 b Fg(history)p
+302 2483 V 20 w(commen)n(t)p 552 2483 V 19 w(c)n(har)120
+2545 y Fo(During)12 b(tok)o(enization,)h(if)f(this)h(c)o(haracter)e(is)
+i(seen)f(as)g(the)g(\014rst)f(c)o(haracter)g(of)h(a)g(w)o(ord,)f(then)i
+(it)f(and)120 2608 y(all)19 b(subsequen)o(t)g(c)o(haracters)e(up)h(to)g
+(a)f(newline)j(are)e(ignored,)h(suppressing)g(history)f(expansion)120
+2670 y(for)d(the)g(remainder)h(of)f(the)g(line.)21 b(This)16
+b(is)g(disabled)h(b)o(y)e(default.)p eop
+12 13 bop 0 -58 a Fo(12)1474 b(GNU)15 b(History)g(Library)1736
+183 y(V)l(ariable)-1899 b Fh(char)20 b(*)f Fg(history)p
+347 183 18 3 v 21 w(no)p 429 183 V 20 w(expand)p 629
+183 V 20 w(c)n(hars)120 246 y Fo(The)f(list)g(of)g(c)o(haracters)e
+(whic)o(h)j(inhibit)h(history)d(expansion)i(if)f(found)g(immediately)h
+(follo)o(wing)120 308 y Fj(history)p 261 308 14 2 v 16
+w(expansion)p 472 308 V 18 w(c)o(har)p Fo(.)g(The)d(default)f(is)h
+(whitespace)g(and)g(`)p Fn(=)p Fo('.)1736 469 y(V)l(ariable)-1899
+b Fh(char)20 b(*)f Fg(history)p 347 469 18 3 v 21 w(searc)n(h)p
+524 469 V 20 w(delimiter)p 768 469 V 23 w(c)n(hars)120
+532 y Fo(The)d(list)g(of)f(additional)i(c)o(haracters)d(whic)o(h)i(can)
+g(delimit)h(a)e(history)g(searc)o(h)h(string,)f(in)h(addition)120
+594 y(to)f(whitespace,)g(`)p Fn(:)p Fo(')f(and)i(`)p
+Fn(?)p Fo(')e(in)i(the)f(case)h(of)e(a)h(substring)h(searc)o(h.)k(The)
+15 b(default)h(is)g(empt)o(y)l(.)1736 755 y(V)l(ariable)-1899
+b Fh(int)20 b Fg(history)p 276 755 V 20 w(quotes)p 458
+755 V 21 w(inhibit)p 642 755 V 23 w(expansion)120 818
+y Fo(If)e(non-zero,)f(single-quoted)i(w)o(ords)e(are)g(not)g(scanned)h
+(for)e(the)i(history)f(expansion)h(c)o(haracter.)120
+880 y(The)d(default)h(v)m(alue)h(is)e(0.)1736 1041 y(V)l(ariable)-1899
+b Fh(Function)20 b(*)g Fg(history)p 452 1041 V 20 w(inhibit)p
+635 1041 V 23 w(expansion)p 905 1041 V 21 w(function)120
+1104 y Fo(This)f(should)h(b)q(e)f(set)f(to)g(the)h(address)f(of)g(a)h
+(function)g(that)f(tak)o(es)f(t)o(w)o(o)h(argumen)o(ts:)25
+b(a)19 b Fn(char)14 b(*)120 1166 y Fo(\()p Fj(string)t
+Fo(\))c(and)i(an)f(in)o(teger)g(index)h(in)o(to)f(that)g(string)g(\()p
+Fj(i)r Fo(\).)19 b(It)11 b(should)h(return)f(a)g(non-zero)g(v)m(alue)h
+(if)g(the)120 1228 y(history)17 b(expansion)h(starting)e(at)h
+Fj(string[i])h Fo(should)g(not)f(b)q(e)h(p)q(erformed;)f(zero)g(if)h
+(the)f(expansion)120 1290 y(should)i(b)q(e)f(done.)28
+b(It)18 b(is)g(in)o(tended)h(for)e(use)h(b)o(y)g(applications)h(lik)o
+(e)g(Bash)f(that)f(use)h(the)g(history)120 1353 y(expansion)e(c)o
+(haracter)f(for)f(additional)j(purp)q(oses.)j(By)c(default,)f(this)h(v)
+m(ariable)g(is)g(set)f(to)f(NULL.)0 1576 y Fm(2.5)33
+b(History)15 b(Programming)h(Example)62 1713 y Fo(The)g(follo)o(wing)g
+(program)e(demonstrates)g(simple)j(use)e(of)g(the)g(GNU)g(History)g
+(Library)l(.)120 1840 y Fn(main)23 b(\(\))120 1892 y({)168
+1944 y(char)g(line[1024],)f(*t;)168 1995 y(int)h(len,)g(done)h(=)g(0;)
+168 2099 y(line[0])f(=)g(0;)168 2203 y(using_history)f(\(\);)168
+2255 y(while)h(\(!done\))215 2307 y({)263 2359 y(printf)g(\("history$)g
+("\);)263 2411 y(fflush)g(\(stdout\);)263 2462 y(t)h(=)g(fgets)f
+(\(line,)g(sizeof)g(\(line\))g(-)h(1,)f(stdin\);)263
+2514 y(if)h(\(t)f(&&)h(*t\))311 2566 y({)359 2618 y(len)f(=)h(strlen)f
+(\(t\);)359 2670 y(if)g(\(t[len)g(-)h(1])g(==)f('\\n'\))p
+eop
+13 14 bop 0 -58 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(History)1017 b(13)406 183 y Fn(t[len)24 b(-)f(1])h(=)g('\\0';)311
+235 y(})263 339 y(if)g(\(!t\))311 391 y(strcpy)f(\(line,)g("quit"\);)
+263 495 y(if)h(\(line[0]\))311 546 y({)359 598 y(char)f(*expansion;)359
+650 y(int)g(result;)359 754 y(result)g(=)g(history_expand)f(\(line,)h
+(&expansion\);)359 806 y(if)g(\(result\))406 858 y(fprintf)g(\(stderr,)
+g("\045s\\n",)g(expansion\);)359 962 y(if)g(\(result)g(<)h(0)g(||)f
+(result)g(==)h(2\))406 1013 y({)454 1065 y(free)f(\(expansion\);)454
+1117 y(continue;)406 1169 y(})359 1273 y(add_history)f(\(expansion\);)
+359 1325 y(strncpy)h(\(line,)g(expansion,)f(sizeof)h(\(line\))g(-)h
+(1\);)359 1377 y(free)f(\(expansion\);)311 1429 y(})263
+1532 y(if)h(\(strcmp)f(\(line,)g("quit"\))g(==)g(0\))311
+1584 y(done)g(=)h(1;)263 1636 y(else)f(if)h(\(strcmp)f(\(line,)g
+("save"\))g(==)h(0\))311 1688 y(write_history)e(\("history_file"\);)263
+1740 y(else)h(if)h(\(strcmp)f(\(line,)g("read"\))g(==)h(0\))311
+1792 y(read_history)e(\("history_file"\);)263 1844 y(else)h(if)h
+(\(strcmp)f(\(line,)g("list"\))g(==)h(0\))311 1896 y({)359
+1947 y(register)e(HIST_ENTRY)h(**the_list;)359 1999 y(register)f(int)i
+(i;)359 2103 y(the_list)e(=)i(history_list)e(\(\);)359
+2155 y(if)h(\(the_list\))406 2207 y(for)h(\(i)f(=)h(0;)g(the_list[i];)e
+(i++\))454 2259 y(printf)h(\("\045d:)g(\045s\\n",)g(i)h(+)g
+(history_base,)e(the_list[i]->line\);)311 2311 y(})263
+2363 y(else)h(if)h(\(strncmp)f(\(line,)g("delete",)g(6\))g(==)h(0\))311
+2414 y({)359 2466 y(int)f(which;)359 2518 y(if)g(\(\(sscanf)g(\(line)g
+(+)h(6,)f("\045d",)h(&which\)\))e(==)i(1\))406 2570 y({)454
+2622 y(HIST_ENTRY)f(*entry)g(=)g(remove_history)f(\(which\);)p
+eop
+14 15 bop 0 -58 a Fo(14)1474 b(GNU)15 b(History)g(Library)454
+183 y Fn(if)24 b(\(!entry\))502 235 y(fprintf)f(\(stderr,)f("No)i(such)
+f(entry)g(\045d\\n",)g(which\);)454 287 y(else)502 339
+y({)550 391 y(free)g(\(entry->line\);)550 443 y(free)g(\(entry\);)502
+495 y(})406 546 y(})359 598 y(else)406 650 y({)454 702
+y(fprintf)g(\(stderr,)g("non-numeric)f(arg)h(given)h(to)f
+(`delete'\\n"\);)406 754 y(})311 806 y(})215 858 y(})120
+910 y(})p eop
+15 16 bop 0 -58 a Fo(App)q(endix)17 b(A:)e(Concept)g(Index)1346
+b(15)0 183 y Fk(App)r(endix)13 b(A)41 b(Concept)15 b(Index)0
+430 y Fm(A)0 496 y Fe(anc)o(hored)f(searc)o(h)5 b Fd(.)i(.)f(.)g(.)g(.)
+g(.)g(.)h(.)f(.)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(.)18
+b Fe(9)0 604 y Fm(E)0 670 y Fe(ev)o(en)o(t)13 b(designators)g
+Fd(.)6 b(.)h(.)f(.)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(.)h(.)f(.)g
+(.)23 b Fe(1)1015 430 y Fm(H)1015 496 y Fe(history)15
+b(ev)o(en)o(ts)5 b Fd(.)i(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)18 b Fe(1)1015 554
+y(history)d(expansion)8 b Fd(.)h(.)d(.)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(.)h(.)f(.)g(.)g(.)g(.)21 b Fe(1)1015 612 y(History)14
+b(Searc)o(hing)7 b Fd(.)h(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)20 b Fe(9)p eop
+16 17 bop 0 -58 a Fo(16)1474 b(GNU)15 b(History)g(Library)p
+eop
+17 18 bop 0 -58 a Fo(App)q(endix)17 b(B:)e(F)l(unction)h(and)g(V)l
+(ariable)g(Index)1069 b(17)0 183 y Fk(App)r(endix)13
+b(B)41 b(F)-7 b(unction)15 b(and)g(V)-7 b(ariable)14
+b(Index)0 430 y Fm(A)0 496 y Fc(add)p 62 496 12 2 v 13
+w(history)8 b Fd(.)s(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)20 b Fe(7)0 554 y
+Fc(append)p 122 554 V 12 w(history)9 b Fd(.)d(.)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(.)h(.)f(.)g(.)g(.)g(.)24 b Fe(10)0
+679 y Fm(C)0 745 y Fc(clear)p 102 745 V 12 w(history)5
+b Fd(.)t(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)18 b Fe(7)0 803 y Fc(current)p 142 803
+V 11 w(history)9 b Fd(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)24 b Fe(8)0 928 y Fm(G)0 994 y Fc(get)p
+62 994 V 13 w(history)p 215 994 V 11 w(event)9 b Fd(.)d(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Fe(11)0 1119
+y Fm(H)0 1185 y Fc(history)p 142 1185 V 11 w(arg)p 213
+1185 V 13 w(extract)8 b Fd(.)t(.)e(.)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(.)21 b Fe(10)0 1243 y Fc(history)p 142 1243 V 11 w(base)e
+Fd(.)6 b(.)g(.)g(.)h(.)f(.)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(.)h
+(.)f(.)g(.)20 b Fe(11)0 1301 y Fc(history)p 142 1301
+V 11 w(comment)p 293 1301 V 12 w(char)g Fd(.)6 b(.)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(.)h(.)21 b Fe(11)0 1359 y Fc(history)p 142 1359
+V 11 w(expand)10 b Fd(.)c(.)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(.)
+h(.)f(.)g(.)g(.)g(.)24 b Fe(10)0 1418 y Fc(history)p
+142 1418 V 11 w(expansion)p 333 1418 V 11 w(char)17 b
+Fd(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(11)0 1476
+y Fc(history)p 142 1476 V 11 w(get)8 b Fd(.)d(.)h(.)g(.)g(.)g(.)g(.)h
+(.)f(.)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(.)h(.)f(.)20
+b Fe(8)0 1534 y Fc(history)p 142 1534 V 11 w(get)p 213
+1534 V 13 w(history)p 366 1534 V 12 w(state)t Fd(.)t(.)6
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)17 b Fe(6)0 1592 y Fc(history)p
+142 1592 V 11 w(inhibit)p 293 1592 V 12 w(expansion)p
+484 1592 V 10 w(function)k Fd(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)23 b Fe(12)0 1650 y Fc(history)p 142 1650 V 11
+w(is)p 193 1650 V 14 w(stifled)7 b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)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(.)23 b Fe(7)0 1708 y Fc(history)p
+142 1708 V 11 w(length)16 b Fd(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18 b Fe(11)0 1766 y Fc(history)p
+142 1766 V 11 w(list)7 b Fd(.)t(.)g(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(8)0 1824
+y Fc(history)p 142 1824 V 11 w(no)p 193 1824 V 14 w(expand)p
+327 1824 V 12 w(chars)f Fd(.)6 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)20
+b Fe(12)0 1883 y Fc(history)p 142 1883 V 11 w(quotes)p
+273 1883 V 12 w(inhibit)p 425 1883 V 12 w(expansion)14
+b Fd(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)17
+b Fe(12)0 1941 y Fc(history)p 142 1941 V 11 w(search)t
+Fd(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)17 b Fe(9)0 1999 y Fc(history)p 142 1999 V
+11 w(search)p 273 1999 V 12 w(delimiter)p 465 1999 V
+11 w(chars)h Fd(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)20 b Fe(12)0 2057 y Fc(history)p 142 2057
+V 11 w(search)p 273 2057 V 12 w(pos)9 b Fd(.)d(.)g(.)g(.)g(.)h(.)f(.)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(.)23 b Fe(9)0 2115 y Fc(history)p
+142 2115 V 11 w(search)p 273 2115 V 12 w(prefix)6 b Fd(.)t(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(9)0 2173 y Fc(history)p
+142 2173 V 11 w(set)p 213 2173 V 13 w(history)p 366 2173
+V 12 w(state)t Fd(.)t(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Fe(6)1015
+430 y Fc(history)p 1157 430 V 12 w(set)p 1229 430 V 13
+w(pos)5 b Fd(.)g(.)h(.)g(.)g(.)h(.)f(.)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(.)19 b Fe(8)1015 488 y Fc(history)p 1157
+488 V 12 w(subst)p 1269 488 V 12 w(char)k Fd(.)6 b(.)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(.)25 b Fe(11)1015 546 y Fc(history)p
+1157 546 V 12 w(tokenize)9 b Fd(.)s(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)22 b Fe(11)1015 604 y Fc(history)p
+1157 604 V 12 w(total)p 1269 604 V 12 w(bytes)9 b Fd(.)t(.)d(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)22 b Fe(8)1015 662
+y Fc(history)p 1157 662 V 12 w(truncate)p 1329 662 V
+11 w(file)5 b Fd(.)g(.)h(.)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(.)19
+b Fe(10)1015 770 y Fm(M)1015 836 y Fc(max)p 1077 836
+V 13 w(input)p 1190 836 V 13 w(history)14 b Fd(.)6 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(.)h(.)f(.)g(.)g(.)17 b Fe(11)1015 944
+y Fm(N)1015 1011 y Fc(next)p 1097 1011 V 13 w(history)7
+b Fd(.)s(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)20 b Fe(8)1015 1119 y Fm(P)1015 1185
+y Fc(previous)p 1177 1185 V 12 w(history)7 b Fd(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)23 b Fe(8)1015
+1293 y Fm(R)1015 1359 y Fc(read)p 1097 1359 V 13 w(history)7
+b Fd(.)s(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)20 b Fe(9)1015 1418 y Fc(read)p 1097
+1418 V 13 w(history)p 1250 1418 V 11 w(range)9 b Fd(.)d(.)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(.)h(.)f(.)g(.)g(.)g(.)23 b Fe(9)1015 1476
+y Fc(remove)p 1137 1476 V 12 w(history)t Fd(.)t(.)6 b(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)17
+b Fe(7)1015 1534 y Fc(replace)p 1157 1534 V 12 w(history)p
+1309 1534 V 11 w(entry)6 b Fd(.)f(.)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(.)h(.)
+f(.)19 b Fe(7)1015 1642 y Fm(S)1015 1708 y Fc(stifle)p
+1137 1708 V 12 w(history)t Fd(.)t(.)6 b(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)17 b Fe(7)1015 1816
+y Fm(U)1015 1883 y Fc(unstifle)p 1177 1883 V 12 w(history)7
+b Fd(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)23
+b Fe(7)1015 1941 y Fc(using)p 1117 1941 V 13 w(history)5
+b Fd(.)s(.)h(.)g(.)h(.)f(.)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
+(.)h(.)f(.)g(.)18 b Fe(6)1015 2049 y Fm(W)1015 2115 y
+Fc(where)p 1117 2115 V 13 w(history)5 b Fd(.)s(.)h(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)18
+b Fe(8)1015 2173 y Fc(write)p 1117 2173 V 13 w(history)t
+Fd(.)s(.)6 b(.)g(.)g(.)h(.)f(.)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(.)h(.)17 b Fe(10)p eop
+18 19 bop 0 -58 a Fo(18)1474 b(GNU)15 b(History)g(Library)p
+eop
+-1 20 bop 1937 -58 a Fo(i)0 183 y Fk(T)-7 b(able)15 b(of)g(Con)n(ten)n
+(ts)0 358 y Fm(1)67 b(Using)22 b(History)h(In)n(teractiv)n(ely)15
+b Fb(.)e(.)c(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)h(.)g(.)37 b Fm(1)149 435 y Fo(1.1)45
+b(In)o(teractiv)o(e)15 b(History)g(Expansion)9 b Fa(.)g(.)e(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)23 b
+Fo(1)299 498 y(1.1.1)44 b(Ev)o(en)o(t)14 b(Designators)d
+Fa(.)d(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)26 b Fo(1)299 560 y(1.1.2)44 b(W)l(ord)15 b(Designators)t
+Fa(.)7 b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)19 b Fo(2)299 622 y(1.1.3)44 b(Mo)q(di\014ers)15
+b Fa(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)29 b Fo(2)0
+747 y Fm(2)67 b(Programming)23 b(with)g(GNU)f(History)11
+b Fb(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)
+g(.)33 b Fm(5)149 825 y Fo(2.1)45 b(In)o(tro)q(duction)16
+b(to)f(History)9 b Fa(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)24 b Fo(5)149
+887 y(2.2)45 b(History)15 b(Storage)c Fa(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)26 b Fo(5)149 949 y(2.3)45 b(History)15
+b(F)l(unctions)c Fa(.)e(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)26
+b Fo(6)299 1011 y(2.3.1)44 b(Initializing)18 b(History)d(and)h(State)e
+(Managemen)o(t)g Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)29 b Fo(6)299 1074 y(2.3.2)44 b(History)15 b(List)h(Managemen)o
+(t)d Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)28
+b Fo(7)299 1136 y(2.3.3)44 b(Information)15 b(Ab)q(out)g(the)h(History)
+f(List)c Fa(.)d(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)g(.)f(.)h(.)f(.)h(.)25 b Fo(7)299 1198 y(2.3.4)44
+b(Mo)o(ving)15 b(Around)g(the)g(History)g(List)10 b Fa(.)f(.)e(.)h(.)f
+(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)25 b Fo(8)299 1260 y(2.3.5)44 b(Searc)o(hing)16
+b(the)f(History)g(List)7 b Fa(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
+f(.)h(.)21 b Fo(9)299 1323 y(2.3.6)44 b(Managing)15 b(the)g(History)g
+(File)5 b Fa(.)k(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)20
+b Fo(9)299 1385 y(2.3.7)44 b(History)15 b(Expansion)8
+b Fa(.)g(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)23 b Fo(10)149 1447 y(2.4)45 b(History)15 b(V)l(ariables)5
+b Fa(.)k(.)e(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)20 b Fo(11)149
+1510 y(2.5)45 b(History)15 b(Programming)f(Example)6
+b Fa(.)j(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)21
+b Fo(12)0 1634 y Fm(App)r(endix)j(A)67 b(Concept)22 b(Index)7
+b Fb(.)k(.)f(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)
+h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)29 b Fm(15)0 1774 y(App)r(endix)24
+b(B)67 b(F)-6 b(unction)25 b(and)e(V)-6 b(ariable)24
+b(Index)13 b Fb(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)35
b Fm(17)p eop
-%%Page: -2 22
-21 bop 0 -83 a Fo(ii)1496 b(GNU)15 b(History)g(Library)p eop
-%%Trailer
-end
+-2 21 bop 0 -58 a Fo(ii)1496 b(GNU)15 b(History)g(Library)p
+eop end
userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/doc/history_toc.html b/doc/history_toc.html
new file mode 100644
index 0000000..645dedf
--- /dev/null
+++ b/doc/history_toc.html
@@ -0,0 +1,51 @@
+<HTML>
+<HEAD>
+<!-- This HTML file has been created by texi2html 1.51
+ from /usr/homes/chet/src/bash/readline-2.1/doc/hist.texinfo on 3 June 1997 -->
+
+<TITLE>GNU History Library - Table of Contents</TITLE>
+</HEAD>
+<BODY>
+<H1>GNU History Library</H1>
+<H2>Edition 2.1, for <CODE>History Library</CODE> Version 2.1.</H2>
+<H2>March 1996</H2>
+<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
+<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
+<P>
+<P><HR><P>
+<UL>
+<LI><A NAME="TOC1" HREF="history.html#SEC1">Using History Interactively</A>
+<UL>
+<LI><A NAME="TOC2" HREF="history.html#SEC2">Interactive History Expansion</A>
+<UL>
+<LI><A NAME="TOC3" HREF="history.html#SEC3">Event Designators</A>
+<LI><A NAME="TOC4" HREF="history.html#SEC4">Word Designators</A>
+<LI><A NAME="TOC5" HREF="history.html#SEC5">Modifiers</A>
+</UL>
+</UL>
+<LI><A NAME="TOC6" HREF="history.html#SEC6">Programming with GNU History</A>
+<UL>
+<LI><A NAME="TOC7" HREF="history.html#SEC7">Introduction to History</A>
+<LI><A NAME="TOC8" HREF="history.html#SEC8">History Storage</A>
+<LI><A NAME="TOC9" HREF="history.html#SEC9">History Functions</A>
+<UL>
+<LI><A NAME="TOC10" HREF="history.html#SEC10">Initializing History and State Management</A>
+<LI><A NAME="TOC11" HREF="history.html#SEC11">History List Management</A>
+<LI><A NAME="TOC12" HREF="history.html#SEC12">Information About the History List</A>
+<LI><A NAME="TOC13" HREF="history.html#SEC13">Moving Around the History List</A>
+<LI><A NAME="TOC14" HREF="history.html#SEC14">Searching the History List</A>
+<LI><A NAME="TOC15" HREF="history.html#SEC15">Managing the History File</A>
+<LI><A NAME="TOC16" HREF="history.html#SEC16">History Expansion</A>
+</UL>
+<LI><A NAME="TOC17" HREF="history.html#SEC17">History Variables</A>
+<LI><A NAME="TOC18" HREF="history.html#SEC18">History Programming Example</A>
+</UL>
+<LI><A NAME="TOC19" HREF="history.html#SEC19">Concept Index</A>
+<LI><A NAME="TOC20" HREF="history.html#SEC20">Function and Variable Index</A>
+</UL>
+<P><HR><P>
+This document was generated on 3 June 1997 using the
+<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
+translator version 1.51.</P>
+</BODY>
+</HTML>
diff --git a/doc/hstech.texinfo b/doc/hstech.texinfo
index 5f0f600..5410090 100644
--- a/doc/hstech.texinfo
+++ b/doc/hstech.texinfo
@@ -1,7 +1,7 @@
@ignore
This file documents the user interface to the GNU History library.
-Copyright (C) 1988, 1991 Free Software Foundation, Inc.
+Copyright (C) 1988, 1991, 1994, 1996 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
Permission is granted to make and distribute verbatim copies of this manual
@@ -168,6 +168,10 @@ This returns the old entry so you can dispose of the data. In the case
of an invalid @var{which}, a @code{NULL} pointer is returned.
@end deftypefun
+@deftypefun void clear_history ()
+Clear the history list by deleting all the entries.
+@end deftypefun
+
@deftypefun void stifle_history (int max)
Stifle the history list, remembering only the last @var{max} entries.
@end deftypefun
@@ -400,6 +404,28 @@ following @var{history_expansion_char}. The default is whitespace and
@samp{=}.
@end deftypevar
+@deftypevar {char *} history_search_delimiter_chars
+The list of additional characters which can delimit a history search
+string, in addition to whitespace, @samp{:} and @samp{?} in the case of
+a substring search. The default is empty.
+@end deftypevar
+
+@deftypevar int history_quotes_inhibit_expansion
+If non-zero, single-quoted words are not scanned for the history expansion
+character. The default value is 0.
+@end deftypevar
+
+@deftypevar {Function *} history_inhibit_expansion_function
+This should be set to the address of a function that takes two arguments:
+a @code{char *} (@var{string}) and an integer index into that string (@var{i}).
+It should return a non-zero value if the history expansion starting at
+@var{string[i]} should not be performed; zero if the expansion should
+be done.
+It is intended for use by applications like Bash that use the history
+expansion character for additional purposes.
+By default, this variable is set to NULL.
+@end deftypevar
+
@node History Programming Example
@section History Programming Example
diff --git a/doc/hsuser.texinfo b/doc/hsuser.texinfo
index 51327a3..6e95649 100644
--- a/doc/hsuser.texinfo
+++ b/doc/hsuser.texinfo
@@ -1,7 +1,7 @@
@ignore
This file documents the user interface to the GNU History library.
-Copyright (C) 1988, 1991 Free Software Foundation, Inc.
+Copyright (C) 1988, 1991, 1996 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
Permission is granted to make and distribute verbatim copies of this manual
@@ -39,26 +39,124 @@ information on using the GNU History Library in your own programs,
@pxref{Programming with GNU History}.
@end ifclear
+@ifset BashFeatures
@menu
+* Bash History Facilities:: How Bash lets you manipulate your command
+ history.
* History Interaction:: What it feels like using History as a user.
@end menu
+@end ifset
+@ifclear BashFeatures
+@menu
+* History Interaction:: What it feels like using History as a user.
+@end menu
+@end ifclear
+
+@ifset BashFeatures
+@node Bash History Facilities
+@section Bash History Facilities
+@cindex command history
+@cindex history list
+
+When the @samp{-o history} option to the @code{set} builtin
+is enabled (@pxref{The Set Builtin}),
+the shell provides access to the @var{command history},
+the list of commands previously typed. The text of the last
+@code{HISTSIZE}
+commands (default 500) is saved in a history list. The shell
+stores each command in the history list prior to parameter and
+variable expansion
+but after history expansion is performed, subject to the
+values of the shell variables
+@code{HISTIGNORE} and @code{HISTCONTROL}.
+When the shell starts up, the history is initialized from the
+file named by the @code{HISTFILE} variable (default @file{~/.bash_history}).
+@code{HISTFILE} is truncated, if necessary, to contain no more than
+the number of lines specified by the value of the @code{HISTFILESIZE}
+variable. When an interactive shell exits, the last
+@code{HISTSIZE} lines are copied from the history list to @code{HISTFILE}.
+If the @code{histappend} shell option is set (@pxref{Bash Builtins}),
+the lines are appended to the history file,
+otherwise the history file is overwritten.
+If @code{HISTFILE}
+is unset, or if the history file is unwritable, the history is
+not saved. After saving the history, the history file is truncated
+to contain no more than @code{$HISTFILESIZE}
+lines. If @code{HISTFILESIZE} is not set, no truncation is performed.
+
+The builtin command @code{fc} (@pxref{Korn Shell Builtins})
+may be used to list or edit and re-execute a portion of
+the history list. The @code{history} builtin (@pxref{C Shell Builtins})
+can be used to display or modify the history list and
+manipulate the history file.
+When using the command-line editing, search commands
+are available in each editing mode that provide access to the
+history list.
+
+The shell allows control over which commands are saved on the history
+list. The @code{HISTCONTROL} and @code{HISTIGNORE}
+variables may be set to cause the shell to save only a subset of the
+commands entered.
+The @code{cmdhist}
+shell option, if enabled, causes the shell to attempt to save each
+line of a multi-line command in the same history entry, adding
+semicolons where necessary to preserve syntactic correctness.
+The @code{lithist}
+shell option causes the shell to save the command with embedded newlines
+instead of semicolons.
+@xref{Bash Builtins} for a description of @code{shopt}.
+@end ifset
@node History Interaction
-@section History Interaction
-@cindex expansion
+@section Interactive History Expansion
+@cindex history expansion
The History library provides a history expansion feature that is similar
-to the history expansion provided by @code{csh}. The following text
+to the history expansion provided by @code{csh}. This section
describes the syntax used to manipulate the history information.
+History expansions introduce words from the history list into
+the input stream, making it easy to repeat commands, insert the
+arguments to a previous command into the current input line, or
+fix errors in previous commands quickly.
+
History expansion takes place in two parts. The first is to determine
which line from the previous history should be used during substitution.
The second is to select portions of that line for inclusion into the
current one. The line selected from the previous history is called the
@dfn{event}, and the portions of that line that are acted upon are
-called @dfn{words}. The line is broken into words in the same fashion
+called @dfn{words}. Various @dfn{modifiers} are available to manipulate
+the selected words. The line is broken into words in the same fashion
that Bash does, so that several English (or Unix) words
surrounded by quotes are considered as one word.
+History expansions are introduced by the appearance of the
+history expansion character, which is @samp{!} by default.
+@ifset BashFeatures
+Only @samp{\} and @samp{'} may be used to escape the history expansion
+character.
+@end ifset
+
+@ifset BashFeatures
+Several shell options settable with the @code{shopt}
+builtin (@pxref{Bash Builtins}) may be used to tailor
+the behavior of history expansion. If the
+@code{histverify} shell option is enabled, and Readline
+is being used, history substitutions are not immediately passed to
+the shell parser.
+Instead, the expanded line is reloaded into the Readline
+editing buffer for further modification.
+If Readline is being used, and the @code{histreedit}
+shell option is enabled, a failed history expansion will be
+reloaded into the Readline editing buffer for correction.
+The @samp{-p} option to the @code{history} builtin command
+may be used to see what a history expansion will do before using it.
+The @samp{-s} option to the @code{history} builtin may be used to
+add commands to the end of the history list without actually executing
+them, so that they are available for subsequent recall.
+
+The shell allows control of the various characters used by the
+history expansion mechanism with the @code{histchars} variable.
+@end ifset
@menu
* Event Designators:: How to specify which history line to use.
@@ -80,92 +178,100 @@ history list.
Start a history substitution, except when followed by a space, tab,
the end of the line, @key{=} or @key{(}.
-@item @code{!!}
-Refer to the previous command. This is a synonym for @code{!-1}.
-
-@item @code{!n}
+@item @code{!@var{n}}
Refer to command line @var{n}.
-@item @code{!-n}
+@item @code{!-@var{n}}
Refer to the command @var{n} lines back.
-@item @code{!string}
+@item @code{!!}
+Refer to the previous command. This is a synonym for @samp{!-1}.
+
+@item @code{!@var{string}}
Refer to the most recent command starting with @var{string}.
-@item @code{!?string}[@code{?}]
-Refer to the most recent command containing @var{string}.
+@item @code{!?@var{string}[?]}
+Refer to the most recent command containing @var{string}. The trailing
+@samp{?} may be omitted if the @var{string} is followed immediately by
+a newline.
-@item @code{!#}
-The entire command line typed so far.
-
-@item @code{^string1^string2^}
+@item @code{^@var{string1}^@var{string2}^}
Quick Substitution. Repeat the last command, replacing @var{string1}
with @var{string2}. Equivalent to
-@code{!!:s/string1/string2/}.
+@code{!!:s/@var{string1}/@var{string2}/}.
+
+@item @code{!#}
+The entire command line typed so far.
@end table
@node Word Designators
@subsection Word Designators
-A @key{:} separates the event specification from the word designator. It
-can be omitted if the word designator begins with a @key{^}, @key{$},
-@key{*} or @key{%}. Words are numbered from the beginning of the line,
-with the first word being denoted by a 0 (zero).
+Word designators are used to select desired words from the event.
+A @samp{:} separates the event specification from the word designator. It
+can be omitted if the word designator begins with a @samp{^}, @samp{$},
+@samp{*}, @samp{-}, or @samp{%}. Words are numbered from the beginning
+of the line, with the first word being denoted by 0 (zero). Words are
+inserted into the current line separated by single spaces.
@table @code
@item 0 (zero)
The @code{0}th word. For many applications, this is the command word.
-@item n
+@item @var{n}
The @var{n}th word.
@item ^
-The first argument; that is, word 1.
+The first argument; that is, word 1.
@item $
The last argument.
@item %
-The word matched by the most recent @code{?string?} search.
+The word matched by the most recent @samp{?@var{string}?} search.
-@item x-y
-A range of words; @code{-@var{y}} abbreviates @code{0-@var{y}}.
+@item @var{x}-@var{y}
+A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}.
@item *
-All of the words, except the @code{0}th. This is a synonym for @code{1-$}.
-It is not an error to use @key{*} if there is just one word in the event;
+All of the words, except the @code{0}th. This is a synonym for @samp{1-$}.
+It is not an error to use @samp{*} if there is just one word in the event;
the empty string is returned in that case.
-@item x*
-Abbreviates @code{x-$}
+@item @var{x}*
+Abbreviates @samp{@var{x}-$}
-@item x-
-Abbreviates @code{x-$} like @code{x*}, but omits the last word.
+@item @var{x}-
+Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word.
@end table
+If a word designator is supplied without an event specification, the
+previous command is used as the event.
+
@node Modifiers
@subsection Modifiers
After the optional word designator, you can add a sequence of one or more
-of the following modifiers, each preceded by a @key{:}.
+of the following modifiers, each preceded by a @samp{:}.
@table @code
@item h
Remove a trailing pathname component, leaving only the head.
+@item t
+Remove all leading pathname components, leaving the tail.
+
@item r
-Remove a trailing suffix of the form @samp{.}@var{suffix}, leaving the basename.
+Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving
+the basename.
@item e
Remove all but the trailing suffix.
-@item t
-Remove all leading pathname components, leaving the tail.
-
@item p
Print the new command but do not execute it.
@@ -174,17 +280,17 @@ Print the new command but do not execute it.
Quote the substituted words, escaping further substitutions.
@item x
-Quote the substituted words as with @code{q},
+Quote the substituted words as with @samp{q},
but break into words at spaces, tabs, and newlines.
@end ifset
-@item s/old/new/
+@item s/@var{old}/@var{new}/
Substitute @var{new} for the first occurrence of @var{old} in the
-event line. Any delimiter may be used in place of @key{/}.
+event line. Any delimiter may be used in place of @samp{/}.
The delimiter may be quoted in @var{old} and @var{new}
-with a single backslash. If @key{&} appears in @var{new},
+with a single backslash. If @samp{&} appears in @var{new},
it is replaced by @var{old}. A single backslash will quote
-the @key{&}. The final delimiter is optional if it is the last
+the @samp{&}. The final delimiter is optional if it is the last
character on the input line.
@item &
@@ -192,7 +298,7 @@ Repeat the previous substitution.
@item g
Cause changes to be applied over the entire event line. Used in
-conjunction with @code{s}, as in @code{gs/old/new/}, or with
-@code{&}.
+conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/},
+or with @samp{&}.
@end table
diff --git a/doc/readline.0 b/doc/readline.0
new file mode 100644
index 0000000..e81db5a
--- /dev/null
+++ b/doc/readline.0
@@ -0,0 +1,1122 @@
+
+
+
+READLINE(3) READLINE(3)
+
+
+NNAAMMEE
+ readline - get a line from a user with editing
+
+SSYYNNOOPPSSIISS
+ ##iinncclluuddee <<rreeaaddlliinnee..hh>>
+ ##iinncclluuddee <<hhiissttoorryy..hh>>
+
+ cchhaarr **rreeaaddlliinnee ((pprroommpptt))
+ cchhaarr **pprroommpptt;;
+
+CCOOPPYYRRIIGGHHTT
+ Readline is Copyright (C) 1989, 1991, 1993, 1995, 1996 by
+ the Free Software Foundation, Inc.
+
+DDEESSCCRRIIPPTTIIOONN
+ rreeaaddlliinnee will read a line from the terminal and return it,
+ using pprroommpptt as a prompt. If pprroommpptt is null, no prompt is
+ issued. The line returned is allocated with _m_a_l_l_o_c(3), so
+ the caller must free it when finished. The line returned
+ has the final newline removed, so only the text of the
+ line remains.
+
+ rreeaaddlliinnee offers editing capabilities while the user is
+ entering the line. By default, the line editing commands
+ are similar to those of emacs. A vi-style line editing
+ interface is also available.
+
+RREETTUURRNN VVAALLUUEE
+ rreeaaddlliinnee returns the text of the line read. A blank line
+ returns the empty string. If EEOOFF is encountered while
+ reading a line, and the line is empty, NNUULLLL is returned.
+ If an EEOOFF is read with a non-empty line, it is treated as
+ a newline.
+
+NNOOTTAATTIIOONN
+ An emacs-style notation is used to denote keystrokes.
+ Control keys are denoted by C-_k_e_y, e.g., C-n means Con-
+ trol-N. Similarly, _m_e_t_a keys are denoted by M-_k_e_y, so M-x
+ means Meta-X. (On keyboards without a _m_e_t_a key, M-_x means
+ ESC _x, i.e., press the Escape key then the _x key. This
+ makes ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x means
+ ESC-Control-_x, or press the Escape key then hold the Con-
+ trol key while pressing the _x key.)
+
+ Readline commands may be given numeric _a_r_g_u_m_e_n_t_s, which
+ normally act as a repeat count. Sometimes, however, it is
+ the sign of the argument that is significant. Passing a
+ negative argument to a command that acts in the forward
+ direction (e.g., kkiillll--lliinnee) causes that command to act in
+ a backward direction. Commands whose behavior with argu-
+ ments deviates from this are noted.
+
+ When a command is described as _k_i_l_l_i_n_g text, the text
+ deleted is saved for possible future retrieval (_y_a_n_k_i_n_g).
+
+
+
+GNU 1997 Feb 5 1
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ The killed text is saved in a _k_i_l_l _r_i_n_g. Consecutive
+ kills cause the text to be accumulated into one unit,
+ which can be yanked all at once. Commands which do not
+ kill text separate the chunks of text on the kill ring.
+
+IINNIITTIIAALLIIZZAATTIIOONN FFIILLEE
+ Readline is customized by putting commands in an initial-
+ ization file (the _i_n_p_u_t_r_c file). The name of this file is
+ taken from the value of the IINNPPUUTTRRCC environment variable.
+ If that variable is unset, the default is _~_/_._i_n_p_u_t_r_c.
+ When a program which uses the readline library starts up,
+ the init file is read, and the key bindings and variables
+ are set. There are only a few basic constructs allowed in
+ the readline init file. Blank lines are ignored. Lines
+ beginning with a ## are comments. Lines beginning with a $$
+ indicate conditional constructs. Other lines denote key
+ bindings and variable settings. Each program using this
+ library may add its own commands and bindings.
+
+ For example, placing
+
+ M-Control-u: universal-argument
+ or
+ C-Meta-u: universal-argument
+ into the _i_n_p_u_t_r_c would make M-C-u execute the readline
+ command _u_n_i_v_e_r_s_a_l_-_a_r_g_u_m_e_n_t.
+
+ The following symbolic character names are recognized
+ while processing key bindings: _R_U_B_O_U_T, _D_E_L, _E_S_C, _L_F_D, _N_E_W_-
+ _L_I_N_E, _R_E_T, _R_E_T_U_R_N, _S_P_C, _S_P_A_C_E, and _T_A_B. In addition to
+ command names, readline allows keys to be bound to a
+ string that is inserted when the key is pressed (a _m_a_c_r_o).
+
+
+ KKeeyy BBiinnddiinnggss
+ The syntax for controlling key bindings in the _i_n_p_u_t_r_c
+ file is simple. All that is required is the name of the
+ command or the text of a macro and a key sequence to which
+ it should be bound. The name may be specified in one of
+ two ways: as a symbolic key name, possibly with _M_e_t_a_- or
+ _C_o_n_t_r_o_l_- prefixes, or as a key sequence. When using the
+ form kkeeyynnaammee:_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, _k_e_y_n_a_m_e is the name
+ of a key spelled out in English. For example:
+
+ Control-u: universal-argument
+ Meta-Rubout: backward-kill-word
+ Control-o: ">&output"
+
+ In the above example, _C_-_u is bound to the function uunniivveerr--
+ ssaall--aarrgguummeenntt, _M_-_D_E_L is bound to the function bbaacckk--
+ wwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to run the macro
+ expressed on the right hand side (that is, to insert the
+ text _>_&_o_u_t_p_u_t into the line).
+
+
+
+
+GNU 1997 Feb 5 2
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyy--
+ sseeqq differs from kkeeyynnaammee above in that strings denoting an
+ entire key sequence may be specified by placing the
+ sequence within double quotes. Some GNU Emacs style key
+ escapes can be used, as in the following example.
+
+ "\C-u": universal-argument
+ "\C-x\C-r": re-read-init-file
+ "\e[11~": "Function Key 1"
+
+ In this example, _C_-_u is again bound to the function uunnii--
+ vveerrssaall--aarrgguummeenntt. _C_-_x _C_-_r is bound to the function
+ rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is bound to insert the
+ text FFuunnccttiioonn KKeeyy 11. The full set of escape sequences is
+
+ \\CC-- control prefix
+
+ \\MM-- meta prefix
+
+ \\ee an escape character
+
+ \\\\ backslash
+
+ \\"" literal "
+
+ \\'' literal '
+
+ When entering the text of a macro, single or double quotes
+ should be used to indicate a macro definition. Unquoted
+ text is assumed to be a function name. Backslash will
+ quote any character in the macro text, including " and '.
+
+ BBaasshh allows the current readline key bindings to be dis-
+ played or modified with the bbiinndd builtin command. The
+ editing mode may be switched during interactive use by
+ using the --oo option to the sseett builtin command. Other
+ programs using this library provide similar mechanisms.
+ The _i_n_p_u_t_r_c file may be edited and re-read if a program
+ does not provide any other means to incorporate new bind-
+ ings.
+
+ VVaarriiaabblleess
+ Readline has variables that can be used to further cus-
+ tomize its behavior. A variable may be set in the _i_n_p_u_t_r_c
+ file with a statement of the form
+
+ sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e
+
+ Except where noted, readline variables can take the values
+ OOnn or OOffff. The variables and their default values are:
+
+ bbeellll--ssttyyllee ((aauuddiibbllee))
+ Controls what happens when readline wants to ring
+ the terminal bell. If set to nnoonnee, readline never
+
+
+
+GNU 1997 Feb 5 3
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ rings the bell. If set to vviissiibbllee, readline uses a
+ visible bell if one is available. If set to aauuddii--
+ bbllee, readline attempts to ring the terminal's bell.
+ ccoommmmeenntt--bbeeggiinn ((````##''''))
+ The string that is inserted in vvii mode when the
+ iinnsseerrtt--ccoommmmeenntt command is executed. This command
+ is bound to MM--## in emacs mode and to ## in vi com-
+ mand mode.
+ ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000))
+ This determines when the user is queried about
+ viewing the number of possible completions gener-
+ ated by the ppoossssiibbllee--ccoommpplleettiioonnss command. It may
+ be set to any integer value greater than or equal
+ to zero. If the number of possible completions is
+ greater than or equal to the value of this vari-
+ able, the user is asked whether or not he wishes to
+ view them; otherwise they are simply listed on the
+ terminal.
+ ccoonnvveerrtt--mmeettaa ((OOnn))
+ If set to OOnn, readline will convert characters with
+ the eighth bit set to an ASCII key sequence by
+ stripping the eighth bit and prepending an escape
+ character (in effect, using escape as the _m_e_t_a _p_r_e_-
+ _f_i_x).
+ ddiissaabbllee--ccoommpplleettiioonn ((OOffff))
+ If set to OOnn, readline will inhibit word comple-
+ tion. Completion characters will be inserted into
+ the line as if they had been mapped to sseellff--iinnsseerrtt.
+ eeddiittiinngg--mmooddee ((eemmaaccss))
+ Controls whether readline begins with a set of key
+ bindings similar to _e_m_a_c_s or _v_i. eeddiittiinngg--mmooddee can
+ be set to either eemmaaccss or vvii.
+ eennaabbllee--kkeeyyppaadd ((OOffff))
+ When set to OOnn, readline will try to enable the
+ application keypad when it is called. Some systems
+ need this to enable the arrow keys.
+ eexxppaanndd--ttiillddee ((OOffff))
+ If set to oonn, tilde expansion is performed when
+ readline attempts word completion.
+ hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff))
+ When set to OOnn, makes readline use a single line
+ for display, scrolling the input horizontally on a
+ single screen line when it becomes longer than the
+ screen width rather than wrapping to a new line.
+ kkeeyymmaapp ((eemmaaccss))
+ Set the current readline keymap. The set of legal
+ keymap names is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_,
+ _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, and _v_i_-_i_n_s_e_r_t.
+ _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is equivalent
+ to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the
+ value of eeddiittiinngg--mmooddee also affects the default
+ keymap.
+ mmaarrkk--ddiirreeccttoorriieess ((OOnn))
+ If set to OOnn, completed directory names have a
+
+
+
+GNU 1997 Feb 5 4
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ slash appended.
+ mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff))
+ If set to OOnn, history lines that have been modified
+ are displayed with a preceding asterisk (**).
+ mmeettaa--ffllaagg ((OOffff))
+ If set to OOnn, readline will enable eight-bit input
+ (that is, it will not strip the high bit from the
+ characters it reads), regardless of what the termi-
+ nal claims it can support.
+ oouuttppuutt--mmeettaa ((OOffff))
+ If set to OOnn, readline will display characters with
+ the eighth bit set directly rather than as a meta-
+ prefixed escape sequence.
+ sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff))
+ This alters the default behavior of the completion
+ functions. If set to oonn, words which have more
+ than one possible completion cause the matches to
+ be listed immediately instead of ringing the bell.
+ vviissiibbllee--ssttaattss ((OOffff))
+ If set to OOnn, a character denoting a file's type as
+ reported by ssttaatt(2) is appended to the filename
+ when listing possible completions.
+
+ CCoonnddiittiioonnaall CCoonnssttrruuccttss
+ Readline implements a facility similar in spirit to the
+ conditional compilation features of the C preprocessor
+ which allows key bindings and variable settings to be per-
+ formed as the result of tests. There are three parser
+ directives used.
+
+ $$iiff The $$iiff construct allows bindings to be made based
+ on the editing mode, the terminal being used, or
+ the application using readline. The text of the
+ test extends to the end of the line; no characters
+ are required to isolate it.
+
+ mmooddee The mmooddee== form of the $$iiff directive is used
+ to test whether readline is in emacs or vi
+ mode. This may be used in conjunction with
+ the sseett kkeeyymmaapp command, for instance, to set
+ bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and _e_m_a_c_s_-
+ _c_t_l_x keymaps only if readline is starting
+ out in emacs mode.
+
+ tteerrmm The tteerrmm== form may be used to include termi-
+ nal-specific key bindings, perhaps to bind
+ the key sequences output by the terminal's
+ function keys. The word on the right side
+ of the == is tested against the full name of
+ the terminal and the portion of the terminal
+ name before the first --. This allows _s_u_n to
+ match both _s_u_n and _s_u_n_-_c_m_d, for instance.
+
+
+
+
+
+GNU 1997 Feb 5 5
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ aapppplliiccaattiioonn
+ The aapppplliiccaattiioonn construct is used to include
+ application-specific settings. Each program
+ using the readline library sets the _a_p_p_l_i_c_a_-
+ _t_i_o_n _n_a_m_e, and an initialization file can
+ test for a particular value. This could be
+ used to bind key sequences to functions use-
+ ful for a specific program. For instance,
+ the following command adds a key sequence
+ that quotes the current or previous word in
+ Bash:
+ $$iiff bash
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ $$eennddiiff
+
+ $$eennddiiff This command, as you saw in the previous example,
+ terminates an $$iiff command.
+
+ $$eellssee Commands in this branch of the $$iiff directive are
+ executed if the test fails.
+
+SSEEAARRCCHHIINNGG
+ Readline provides commands for searching through the com-
+ mand history for lines containing a specified string.
+ There are two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_-
+ _t_a_l.
+
+ Incremental searches begin before the user has finished
+ typing the search string. As each character of the search
+ string is typed, readline displays the next entry from the
+ history matching the string typed so far. An incremental
+ search requires only as many characters as needed to find
+ the desired history entry. The Escape character is used
+ to terminate an incremental search. Control-J will also
+ terminate the search. Control-G will abort an incremental
+ search and restore the original line. When the search is
+ terminated, the history entry containing the search string
+ becomes the current line. To find other matching entries
+ in the history list, type Control-S or Control-R as appro-
+ priate. This will search backward or forward in the his-
+ tory for the next line matching the search string typed so
+ far. Any other key sequence bound to a readline command
+ will terminate the search and execute that command. For
+ instance, a _n_e_w_l_i_n_e will terminate the search and accept
+ the line, thereby executing the command from the history
+ list.
+
+ Non-incremental searches read the entire search string
+ before starting to search for matching history lines. The
+ search string may be typed by the user or part of the con-
+ tents of the current line.
+
+
+
+
+
+GNU 1997 Feb 5 6
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+EEDDIITTIINNGG CCOOMMMMAANNDDSS
+ The following is a list of the names of the commands and
+ the default key sequences to which they are bound. Com-
+ mand names without an accompanying key sequence are
+ unbound by default.
+
+ CCoommmmaannddss ffoorr MMoovviinngg
+ bbeeggiinnnniinngg--ooff--lliinnee ((CC--aa))
+ Move to the start of the current line.
+ eenndd--ooff--lliinnee ((CC--ee))
+ Move to the end of the line.
+ ffoorrwwaarrdd--cchhaarr ((CC--ff))
+ Move forward a character.
+ bbaacckkwwaarrdd--cchhaarr ((CC--bb))
+ Move back a character.
+ ffoorrwwaarrdd--wwoorrdd ((MM--ff))
+ Move forward to the end of the next word. Words
+ are composed of alphanumeric characters (letters
+ and digits).
+ bbaacckkwwaarrdd--wwoorrdd ((MM--bb))
+ Move back to the start of this, or the previous,
+ word. Words are composed of alphanumeric charac-
+ ters (letters and digits).
+ cclleeaarr--ssccrreeeenn ((CC--ll))
+ Clear the screen leaving the current line at the
+ top of the screen. With an argument, refresh the
+ current line without clearing the screen.
+ rreeddrraaww--ccuurrrreenntt--lliinnee
+ Refresh the current line.
+
+ CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy
+ aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn))
+ Accept the line regardless of where the cursor is.
+ If this line is non-empty, add it to the history
+ list. If the line is a modified history line, then
+ restore the history line to its original state.
+ pprreevviioouuss--hhiissttoorryy ((CC--pp))
+ Fetch the previous command from the history list,
+ moving back in the list.
+ nneexxtt--hhiissttoorryy ((CC--nn))
+ Fetch the next command from the history list, mov-
+ ing forward in the list.
+ bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<))
+ Move to the first line in the history.
+ eenndd--ooff--hhiissttoorryy ((MM-->>))
+ Move to the end of the input history, i.e., the
+ line currently being entered.
+ rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr))
+ Search backward starting at the current line and
+ moving `up' through the history as necessary. This
+ is an incremental search.
+ ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss))
+ Search forward starting at the current line and
+ moving `down' through the history as necessary.
+
+
+
+GNU 1997 Feb 5 7
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ This is an incremental search.
+ nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp))
+ Search backward through the history starting at the
+ current line using a non-incremental search for a
+ string supplied by the user.
+ nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn))
+ Search forward through the history using a non-
+ incremental search for a string supplied by the
+ user.
+ hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd
+ Search forward through the history for the string
+ of characters between the start of the current line
+ and the current cursor position (the _p_o_i_n_t). This
+ is a non-incremental search.
+ hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd
+ Search backward through the history for the string
+ of characters between the start of the current line
+ and the point. This is a non-incremental search.
+ yyaannkk--nntthh--aarrgg ((MM--CC--yy))
+ Insert the first argument to the previous command
+ (usually the second word on the previous line) at
+ point (the current cursor position). With an argu-
+ ment _n, insert the _nth word from the previous com-
+ mand (the words in the previous command begin with
+ word 0). A negative argument inserts the _nth word
+ from the end of the previous command.
+ yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__))
+ Insert the last argument to the previous command
+ (the last word of the previous history entry).
+ With an argument, behave exactly like yyaannkk--nntthh--aarrgg.
+
+ CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt
+ ddeelleettee--cchhaarr ((CC--dd))
+ Delete the character under the cursor. If point is
+ at the beginning of the line, there are no charac-
+ ters in the line, and the last character typed was
+ not CC--dd, then return EEOOFF.
+ bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt))
+ Delete the character behind the cursor. When given
+ a numeric argument, save the deleted text on the
+ kill ring.
+ qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv))
+ Add the next character that you type to the line
+ verbatim. This is how to insert characters like
+ CC--qq, for example.
+ ttaabb--iinnsseerrtt ((MM--TTAABB))
+ Insert a tab character.
+ sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ......))
+ Insert the character typed.
+ ttrraannssppoossee--cchhaarrss ((CC--tt))
+ Drag the character before point forward over the
+ character at point. Point moves forward as well.
+ If point is at the end of the line, then transpose
+ the two characters before point. Negative
+
+
+
+GNU 1997 Feb 5 8
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ arguments don't work.
+ ttrraannssppoossee--wwoorrddss ((MM--tt))
+ Drag the word behind the cursor past the word in
+ front of the cursor moving the cursor over that
+ word as well.
+ uuppccaassee--wwoorrdd ((MM--uu))
+ Uppercase the current (or following) word. With a
+ negative argument, do the previous word, but do not
+ move point.
+ ddoowwnnccaassee--wwoorrdd ((MM--ll))
+ Lowercase the current (or following) word. With a
+ negative argument, do the previous word, but do not
+ move point.
+ ccaappiittaalliizzee--wwoorrdd ((MM--cc))
+ Capitalize the current (or following) word. With a
+ negative argument, do the previous word, but do not
+ move point.
+
+ KKiilllliinngg aanndd YYaannkkiinngg
+ kkiillll--lliinnee ((CC--kk))
+ Kill the text from the current cursor position to
+ the end of the line.
+ bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt))
+ Kill backward to the beginning of the line.
+ uunniixx--lliinnee--ddiissccaarrdd ((CC--uu))
+ Kill backward from point to the beginning of the
+ line.
+ kkiillll--wwhhoollee--lliinnee
+ Kill all characters on the current line, no matter
+ where the cursor is.
+ kkiillll--wwoorrdd ((MM--dd))
+ Kill from the cursor to the end of the current
+ word, or if between words, to the end of the next
+ word. Word boundaries are the same as those used
+ by ffoorrwwaarrdd--wwoorrdd.
+ bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt))
+ Kill the word behind the cursor. Word boundaries
+ are the same as those used by bbaacckkwwaarrdd--wwoorrdd.
+ uunniixx--wwoorrdd--rruubboouutt ((CC--ww))
+ Kill the word behind the cursor, using white space
+ as a word boundary. The word boundaries are dif-
+ ferent from bbaacckkwwaarrdd--kkiillll--wwoorrdd.
+ ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\))
+ Delete all spaces and tabs around point.
+ kkiillll--rreeggiioonn
+ Kill the text between the point and _m_a_r_k (saved
+ cursor position). This text is referred to as the
+ _r_e_g_i_o_n.
+ ccooppyy--rreeggiioonn--aass--kkiillll
+ Copy the text in the region to the kill buffer.
+ ccooppyy--bbaacckkwwaarrdd--wwoorrdd
+ Copy the word before point to the kill buffer.
+ ccooppyy--ffoorrwwaarrdd--wwoorrdd
+ Copy the word following point to the kill buffer.
+
+
+
+GNU 1997 Feb 5 9
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ yyaannkk ((CC--yy))
+ Yank the top of the kill ring into the buffer at
+ the cursor.
+ yyaannkk--ppoopp ((MM--yy))
+ Rotate the kill ring, and yank the new top. Only
+ works following yyaannkk or yyaannkk--ppoopp.
+
+ NNuummeerriicc AArrgguummeennttss
+ ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----))
+ Add this digit to the argument already accumulat-
+ ing, or start a new argument. M-- starts a nega-
+ tive argument.
+ uunniivveerrssaall--aarrgguummeenntt
+ This is another way to specify an argument. If
+ this command is followed by one or more digits,
+ optionally with a leading minus sign, those digits
+ define the argument. If the command is followed by
+ digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the
+ numeric argument, but is otherwise ignored. As a
+ special case, if this command is immediately fol-
+ lowed by a character that is neither a digit or
+ minus sign, the argument count for the next command
+ is multiplied by four. The argument count is ini-
+ tially one, so executing this function the first
+ time makes the argument count four, a second time
+ makes the argument count sixteen, and so on.
+
+ CCoommpplleettiinngg
+ ccoommpplleettee ((TTAABB))
+ Attempt to perform completion on the text before
+ point. The actual completion performed is applica-
+ tion-specific. BBaasshh, for instance, attempts com-
+ pletion treating the text as a variable (if the
+ text begins with $$), username (if the text begins
+ with ~~), hostname (if the text begins with @@), or
+ command (including aliases and functions) in turn.
+ If none of these produces a match, filename comple-
+ tion is attempted. GGddbb, on the other hand, allows
+ completion of program functions and variables, and
+ only attempts filename completion under certain
+ circumstances.
+ ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??))
+ List the possible completions of the text before
+ point.
+ iinnsseerrtt--ccoommpplleettiioonnss ((MM--**))
+ Insert all completions of the text before point
+ that would have been generated by ppoossssiibbllee--ccoommppllee--
+ ttiioonnss.
+
+ KKeeyybbooaarrdd MMaaccrrooss
+ ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (())
+ Begin saving the characters typed into the current
+ keyboard macro.
+
+
+
+
+GNU 1997 Feb 5 10
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ eenndd--kkbbdd--mmaaccrroo ((CC--xx ))))
+ Stop saving the characters typed into the current
+ keyboard macro and store the definition.
+ ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee))
+ Re-execute the last keyboard macro defined, by mak-
+ ing the characters in the macro appear as if typed
+ at the keyboard.
+
+ MMiisscceellllaanneeoouuss
+ rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr))
+ Read in the contents of the _i_n_p_u_t_r_c file, and
+ incorporate any bindings or variable assignments
+ found there.
+ aabboorrtt ((CC--gg))
+ Abort the current editing command and ring the ter-
+ minal's bell (subject to the setting of
+ bbeellll--ssttyyllee).
+ ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......))
+ If the metafied character _x is lowercase, run the
+ command that is bound to the corresponding upper-
+ case character.
+ pprreeffiixx--mmeettaa ((EESSCC))
+ Metafy the next character typed. EESSCC ff is equiva-
+ lent to MMeettaa--ff.
+ uunnddoo ((CC--__,, CC--xx CC--uu))
+ Incremental undo, separately remembered for each
+ line.
+ rreevveerrtt--lliinnee ((MM--rr))
+ Undo all changes made to this line. This is like
+ typing the uunnddoo command enough times to return the
+ line to its initial state.
+ ttiillddee--eexxppaanndd ((MM--~~))
+ Perform tilde expansion on the current word.
+ sseett--mmaarrkk ((CC--@@,, MM--<<ssppaaccee>>))
+ Set the mark to the current point. If a numeric
+ argument is supplied, the mark is set to that posi-
+ tion.
+ eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx))
+ Swap the point with the mark. The current cursor
+ position is set to the saved position, and the old
+ cursor position is saved as the mark.
+ cchhaarraacctteerr--sseeaarrcchh ((CC--]]))
+ A character is read and point is moved to the next
+ occurrence of that character. A negative count
+ searches for previous occurrences.
+ cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]]))
+ A character is read and point is moved to the pre-
+ vious occurrence of that character. A negative
+ count searches for subsequent occurrences.
+ iinnsseerrtt--ccoommmmeenntt ((MM--##))
+ The value of the readline ccoommmmeenntt--bbeeggiinn variable is
+ inserted at the beginning of the current line, and
+ the line is accepted as if a newline had been
+ typed. This makes the current line a shell
+
+
+
+GNU 1997 Feb 5 11
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ comment.
+ gglloobb--eexxppaanndd--wwoorrdd ((CC--xx **))
+ The word before point is treated as a pattern for
+ pathname expansion, and the list of matching file
+ names is inserted, replacing the word.
+ gglloobb--lliisstt--eexxppaannssiioonnss ((CC--xx gg))
+ The list of expansions that would have been gener-
+ ated by gglloobb--eexxppaanndd--wwoorrdd is inserted into the line,
+ replacing the word before point.
+ dduummpp--ffuunnccttiioonnss
+ Print all of the functions and their key bindings
+ to the readline output stream. If a numeric argu-
+ ment is supplied, the output is formatted in such a
+ way that it can be made part of an _i_n_p_u_t_r_c file.
+ dduummpp--vvaarriiaabblleess
+ Print all of the settable variables and their val-
+ ues to the readline output stream. If a numeric
+ argument is supplied, the output is formatted in
+ such a way that it can be made part of an _i_n_p_u_t_r_c
+ file.
+ dduummpp--mmaaccrrooss
+ Print all of the readline key sequences bound to
+ macros and the strings they ouput. If a numeric
+ argument is supplied, the output is formatted in
+ such a way that it can be made part of an _i_n_p_u_t_r_c
+ file.
+ eemmaaccss--eeddiittiinngg--mmooddee ((CC--ee))
+ When in vvii editing mode, this causes a switch to
+ eemmaaccss editing mode.
+ vvii--eeddiittiinngg--mmooddee ((MM--CC--jj))
+ When in eemmaaccss editing mode, this causes a switch to
+ vvii editing mode.
+
+DDEEFFAAUULLTT KKEEYY BBIINNDDIINNGGSS
+ The following is a list of the default emacs and vi bind-
+ ings. Characters with the 8th bit set are written as
+ M-<character>, and are referred to as _m_e_t_a_f_i_e_d characters.
+ The printable ASCII characters not mentioned in the list
+ of emacs standard bindings are bound to the _s_e_l_f_-_i_n_s_e_r_t
+ function, which just inserts the given character into the
+ input line. In vi insertion mode, all characters not
+ specifically mentioned are bound to _s_e_l_f_-_i_n_s_e_r_t. Charac-
+ ters assigned to signal generation by _s_t_t_y(1) or the ter-
+ minal driver, such as C-Z or C-C, retain that function.
+ Upper and lower case _m_e_t_a_f_i_e_d characters are bound to the
+ same function in the emacs mode meta keymap. The remain-
+ ing characters are unbound, which causes readline to ring
+ the bell (subject to the setting of the bbeellll--ssttyyllee vari-
+ able).
+
+ EEmmaaccss MMooddee
+ Emacs Standard bindings
+
+ "C-@" set-mark
+
+
+
+GNU 1997 Feb 5 12
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ "C-A" beginning-of-line
+ "C-B" backward-char
+ "C-D" delete-char
+ "C-E" end-of-line
+ "C-F" forward-char
+ "C-G" abort
+ "C-H" backward-delete-char
+ "C-I" complete
+ "C-J" accept-line
+ "C-K" kill-line
+ "C-L" clear-screen
+ "C-M" accept-line
+ "C-N" next-history
+ "C-P" previous-history
+ "C-Q" quoted-insert
+ "C-R" reverse-search-history
+ "C-S" forward-search-history
+ "C-T" transpose-chars
+ "C-U" unix-line-discard
+ "C-V" quoted-insert
+ "C-W" unix-word-rubout
+ "C-Y" yank
+ "C-]" character-search
+ "C-_" undo
+ " " to "/" self-insert
+ "0" to "9" self-insert
+ ":" to "~" self-insert
+ "C-?" backward-delete-char
+
+ Emacs Meta bindings
+
+ "M-C-G" abort
+ "M-C-H" backward-kill-word
+ "M-C-I" tab-insert
+ "M-C-J" vi-editing-mode
+ "M-C-M" vi-editing-mode
+ "M-C-R" revert-line
+ "M-C-Y" yank-nth-arg
+ "M-C-[" complete
+ "M-C-]" character-search-backward
+ "M-space" set-mark
+ "M-#" insert-comment
+ "M-&" tilde-expand
+ "M-*" insert-completions
+ "M--" digit-argument
+ "M-." yank-last-arg
+ "M-0" digit-argument
+ "M-1" digit-argument
+ "M-2" digit-argument
+ "M-3" digit-argument
+ "M-4" digit-argument
+ "M-5" digit-argument
+ "M-6" digit-argument
+ "M-7" digit-argument
+
+
+
+GNU 1997 Feb 5 13
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ "M-8" digit-argument
+ "M-9" digit-argument
+ "M-<" beginning-of-history
+ "M-=" possible-completions
+ "M->" end-of-history
+ "M-?" possible-completions
+ "M-B" backward-word
+ "M-C" capitalize-word
+ "M-D" kill-word
+ "M-F" forward-word
+ "M-L" downcase-word
+ "M-N" non-incremental-forward-search-history
+ "M-P" non-incremental-reverse-search-history
+ "M-R" revert-line
+ "M-T" transpose-words
+ "M-U" upcase-word
+ "M-Y" yank-pop
+ "M-\" delete-horizontal-space
+ "M-~" tilde-expand
+ "M-C-?" backward-delete-word
+ "M-_" yank-last-arg
+
+ Emacs Control-X bindings
+
+ "C-XC-G" abort
+ "C-XC-R" re-read-init-file
+ "C-XC-U" undo
+ "C-XC-X" exchange-point-and-mark
+ "C-X(" start-kbd-macro
+ "C-X)" end-kbd-macro
+ "C-XE" call-last-kbd-macro
+ "C-XC-?" backward-kill-line
+
+
+ VVII MMooddee bbiinnddiinnggss
+ VI Insert Mode functions
+
+ "C-D" vi-eof-maybe
+ "C-H" backward-delete-char
+ "C-I" complete
+ "C-J" accept-line
+ "C-M" accept-line
+ "C-R" reverse-search-history
+ "C-S" forward-search-history
+ "C-T" transpose-chars
+ "C-U" unix-line-discard
+ "C-V" quoted-insert
+ "C-W" unix-word-rubout
+ "C-Y" yank
+ "C-[" vi-movement-mode
+ "C-_" undo
+ " " to "~" self-insert
+ "C-?" backward-delete-char
+
+
+
+
+GNU 1997 Feb 5 14
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ VI Command Mode functions
+
+ "C-D" vi-eof-maybe
+ "C-E" emacs-editing-mode
+ "C-G" abort
+ "C-H" backward-char
+ "C-J" accept-line
+ "C-K" kill-line
+ "C-L" clear-screen
+ "C-M" accept-line
+ "C-N" next-history
+ "C-P" previous-history
+ "C-Q" quoted-insert
+ "C-R" reverse-search-history
+ "C-S" forward-search-history
+ "C-T" transpose-chars
+ "C-U" unix-line-discard
+ "C-V" quoted-insert
+ "C-W" unix-word-rubout
+ "C-Y" yank
+ " " forward-char
+ "#" insert-comment
+ "$" end-of-line
+ "%" vi-match
+ "&" vi-tilde-expand
+ "*" vi-complete
+ "+" next-history
+ "," vi-char-search
+ "-" previous-history
+ "." vi-redo
+ "/" vi-search
+ "0" beginning-of-line
+ "1" to "9" vi-arg-digit
+ ";" vi-char-search
+ "=" vi-complete
+ "?" vi-search
+ "A" vi-append-eol
+ "B" vi-prev-word
+ "C" vi-change-to
+ "D" vi-delete-to
+ "E" vi-end-word
+ "F" vi-char-search
+ "G" vi-fetch-history
+ "I" vi-insert-beg
+ "N" vi-search-again
+ "P" vi-put
+ "R" vi-replace
+ "S" vi-subst
+ "T" vi-char-search
+ "U" revert-line
+ "W" vi-next-word
+ "X" backward-delete-char
+ "Y" vi-yank-to
+ "\" vi-complete
+
+
+
+GNU 1997 Feb 5 15
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ "^" vi-first-print
+ "_" vi-yank-arg
+ "`" vi-goto-mark
+ "a" vi-append-mode
+ "b" vi-prev-word
+ "c" vi-change-to
+ "d" vi-delete-to
+ "e" vi-end-word
+ "f" vi-char-search
+ "h" backward-char
+ "i" vi-insertion-mode
+ "j" next-history
+ "k" prev-history
+ "l" forward-char
+ "m" vi-set-mark
+ "n" vi-search-again
+ "p" vi-put
+ "r" vi-change-char
+ "s" vi-subst
+ "t" vi-char-search
+ "u" undo
+ "w" vi-next-word
+ "x" vi-delete
+ "y" vi-yank-to
+ "|" vi-column
+ "~" vi-change-case
+
+SSEEEE AALLSSOO
+ _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
+ _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
+ _b_a_s_h(1)
+
+FFIILLEESS
+ _~_/_._i_n_p_u_t_r_c
+ Individual rreeaaddlliinnee initialization file
+
+AAUUTTHHOORRSS
+ Brian Fox, Free Software Foundation (primary author)
+ bfox@ai.MIT.Edu
+
+ Chet Ramey, Case Western Reserve University
+ chet@ins.CWRU.Edu
+
+BBUUGG RREEPPOORRTTSS
+ If you find a bug in rreeaaddlliinnee,, you should report it. But
+ first, you should make sure that it really is a bug, and
+ that it appears in the latest version of the rreeaaddlliinnee
+ library that you have.
+
+ Once you have determined that a bug actually exists, mail
+ a bug report to _b_u_g_-_r_e_a_d_l_i_n_e@_p_r_e_p_._a_i_._M_I_T_._E_d_u. If you have
+ a fix, you are welcome to mail that as well! Suggestions
+ and `philosophical' bug reports may be mailed to _b_u_g_-_r_e_a_d_-
+ _l_i_n_e@_p_r_e_p_._a_i_._M_I_T_._E_d_u or posted to the Usenet newsgroup
+
+
+
+GNU 1997 Feb 5 16
+
+
+
+
+
+READLINE(3) READLINE(3)
+
+
+ ggnnuu..bbaasshh..bbuugg.
+
+ Comments and bug reports concerning this manual page
+ should be directed to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u.
+
+BBUUGGSS
+ It's too big and too slow.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+GNU 1997 Feb 5 17
+
+
diff --git a/doc/readline.3 b/doc/readline.3
index e3da7cc..3d16168 100644
--- a/doc/readline.3
+++ b/doc/readline.3
@@ -6,9 +6,9 @@
.\" Case Western Reserve University
.\" chet@ins.CWRU.Edu
.\"
-.\" Last Change: Mon Jun 13 20:06:14 EDT 1994
+.\" Last Change: Wed Feb 5 14:13:22 EST 1997
.\"
-.TH READLINE 3 "1994 June 13" GNU
+.TH READLINE 3 "1997 Feb 5" GNU
.\"
.\" File Name macro. This used to be `.PN', for Path Name,
.\" but Sun doesn't seem to like that very much.
@@ -29,132 +29,13 @@ readline \- get a line from a user with editing
.LP
.nf
.ft B
-typedef int Function ();
-.LP
-.nf
-.ft B
char *readline (prompt)
char *prompt;
.ft
.fi
-.LP
-.nf
-.ft B
-int rl_add_defun (name, function, key)
-char *name;
-Function *function;
-int key;
-.ft
-.fi
-.LP
-.nf
-.ft B
-int rl_bind_key (key, function)
-int key;
-Function *function;
-.ft
-.fi
-.LP
-.nf
-.ft B
-int rl_unbind_key (key)
-int key;
-.ft
-.fi
-.LP
-.nf
-.ft B
-int rl_bind_key_in_map (key, function, keymap)
-int key;
-Function *function;
-Keymap keymap;
-.ft
-.fi
-.LP
-.nf
-.ft B
-int rl_unbind_key_in_map (key, keymap)
-int key;
-Keymap keymap;
-.ft
-.fi
-.ft B
-int rl_macro_bind (keyseq, macro, keymap)
-char *keyseq, *macro;
-Keymap keymap;
-.ft
-.fi
-.LP
-.nf
-.ft B
-int rl_variable_bind (variable, value)
-char *variable, *value;
-.ft
-.fi
-.LP
-.nf
-.LP
-.nf
-.ft B
-int rl_parse_and_bind (line)
-char *line;
-.ft
-.fi
-.LP
-.nf
-.ft B
-int rl_translate_keyseq (keyseq, array, len)
-char *keyseq, *array;
-int *len;
-.ft
-.fi
-.LP
-.nf
-.ft B
-Function *rl_named_function (command)
-char *command;
-.ft
-.fi
-.LP
-.nf
-.ft B
-Function *rl_function_of_keyseq (keyseq, keymap, type)
-char *keyseq;
-Keymap keymap;
-int *type;
-.ft
-.fi
-.LP
-.nf
-.ft B
-char **rl_invoking_keyseqs (function)
-Function *function;
-.ft
-.fi
-.LP
-.nf
-.ft B
-char **rl_invoking_keyseqs_in_map (function, keymap)
-Function *function;
-Keymap keymap;
-.ft
-.fi
-.LP
-.nf
-.ft B
-void rl_function_dumper (readable)
-int readable;
-.ft
-.fi
-.LP
-.nf
-.ft B
-char **rl_funmap_names ()
-.ft
-.fi
.SH COPYRIGHT
-.if n Readline is Copyright (C) 1989, 1991 by the Free Software Foundation, Inc.
-.if t Readline is Copyright \(co 1989, 1991 by the Free Software Foundation, Inc.
+.if n Readline is Copyright (C) 1989, 1991, 1993, 1995, 1996 by the Free Software Foundation, Inc.
+.if t Readline is Copyright \(co 1989, 1991, 1993, 1995, 1996 by the Free Software Foundation, Inc.
.SH DESCRIPTION
.LP
.B readline
@@ -175,119 +56,6 @@ line.
By default, the line editing commands
are similar to those of emacs.
A vi\-style line editing interface is also available.
-.LP
-In the following descriptions,
-.B keymap
-can be one of \fIemacs_keymap, emacs_meta_keymap, emacs_ctlx_keymap,
-vi_insertion_keymap, or vi_movement_keymap\fP.
-.LP
-.B rl_add_defun
-makes
-.B name
-appear as a bindable readline command, and makes
-.B function
-be the function called when that command is invoked. If
-.B key
-is not \-1, it is bound to
-.B function
-in the current keymap.
-.LP
-.B rl_bind_key
-causes
-.B key
-to invoke
-.BR function .
-The binding is made in the current keymap.
-.LP
-.B rl_unbind_key
-removes the binding for
-.B key
-in the current keymap.
-.LP
-.B rl_bind_key_in_map
-makes the
-.B key
-entry in
-.B keymap
-invoke
-.BR function .
-.LP
-.B rl_unbind_key_in_map
-removes the binding for
-.B key
-in keymap
-.BR keymap .
-.LP
-.B rl_macro_bind
-makes
-.B keyseq
-insert the string
-.BR macro .
-The binding is performed in
-.BR keymap .
-.LP
-.B rl_variable_bind
-sets the value of the readline variable
-.B variable
-to
-.BR value .
-.LP
-.B rl_parse_and_bind
-takes as an argument a line of the same form as the readline startup
-file (see
-.SM
-.B INITIALIZATION FILE
-below) and executes the commands therein.
-.LP
-.B rl_translate_keyseq
-converts
-.B keyseq
-into a new string, storing the result in
-.BR array .
-This translates control and meta prefixes and the readline
-character escape sequences (see
-.SM
-.B Key Bindings
-below). The length of the translated sequence is returned in
-.BR *len .
-.LP
-.B rl_named_function
-returns the function that is executed when the readline
-command
-.B command
-is invoked.
-.LP
-.B rl_function_of_keyseq
-returns the function that is executed when
-.B keyseq
-is read and
-.B keymap
-is the current keymap.
-.B type
-is set to indicate whether the return value corresponds to a
-function, macro, or auxiliary keymap.
-.LP
-.B rl_invoking_keyseqs
-returns all of the key sequences in the current keymap that
-invoke
-.BR function .
-.LP
-.B rl_invoking_keyseqs_in_map
-returns all of the key sequences in
-.B keymap
-that invoke
-.BR function .
-.LP
-.B rl_function_dumper
-prints all of the readline functions and their bindings to the
-readline output stream. If
-.B readable
-is non\-zero, the output is formattted so that it can be read
-back in to restore the bindings.
-.LP
-.B rl_funmap_names
-returns an array of all known readline bindable function names.
-The array is sorted.
.SH RETURN VALUE
.LP
.B readline
@@ -300,12 +68,9 @@ is returned. If an
.B EOF
is read with a non\-empty line, it is
treated as a newline.
-.LP
-Unless otherwise stated,
-the other functions return 0 on success and non\-zero on failure.
.SH NOTATION
.LP
-An emacs\-style notation is used to denote
+An emacs-style notation is used to denote
keystrokes. Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
means Control\-N. Similarly,
.I meta
@@ -333,25 +98,25 @@ behavior with arguments deviates from this are noted.
When a command is described as \fIkilling\fP text, the text
deleted is saved for possible future retrieval
(\fIyanking\fP). The killed text is saved in a
-\fIkill\-ring\fP. Consecutive kills cause the text to be
+\fIkill ring\fP. Consecutive kills cause the text to be
accumulated into one unit, which can be yanked all at once.
Commands which do not kill text separate the chunks of text
-on the kill\-ring.
+on the kill ring.
.SH INITIALIZATION FILE
.LP
Readline is customized by putting commands in an initialization
-file. The name of this file is taken from the value of the
+file (the \fIinputrc\fP file).
+The name of this file is taken from the value of the
.B INPUTRC
-variable. If that variable is unset, the default is
+environment variable. If that variable is unset, the default is
.IR ~/.inputrc .
When a program which uses the readline library starts up, the
init file is read, and the key bindings and variables are set.
There are only a few basic constructs allowed in the
readline init file. Blank lines are ignored.
Lines beginning with a \fB#\fP are comments.
-Lines beginning with a \fB$\fP indicate conditional
-constructs. Other lines
-denote key bindings and variable settings.
+Lines beginning with a \fB$\fP indicate conditional constructs.
+Other lines denote key bindings and variable settings.
Each program using this library may add its own commands
and bindings.
.PP
@@ -365,7 +130,7 @@ or
C\-Meta\-u: universal\-argument
.RE
into the
-.FN ~/.inputrc
+.I inputrc
would make M\-C\-u execute the readline command
.IR universal\-argument .
.PP
@@ -388,7 +153,7 @@ to a string that is inserted when the key is pressed (a \fImacro\fP).
.SS Key Bindings
.PP
The syntax for controlling key bindings in the
-.I ~/.inputrc
+.I inputrc
file is simple. All that is required is the name of the
command or the text of a macro and a key sequence to which
it should be bound. The name may be specified in one of two ways:
@@ -451,10 +216,10 @@ is bound to insert the text
The full set of escape sequences is
.RS
.TP
-.B \eC-
+.B \eC\-
control prefix
.TP
-.B \eM-
+.B \eM\-
meta prefix
.TP
.B \ee
@@ -487,7 +252,7 @@ option to the
builtin command. Other programs using this library provide
similar mechanisms. The
.I inputrc
-file may be edited and re\-read if a program does not provide
+file may be edited and re-read if a program does not provide
any other means to incorporate new bindings.
.SS Variables
.PP
@@ -508,24 +273,6 @@ The variables and their default values are:
.PP
.PD 0
.TP
-.B horizontal\-scroll\-mode (Off)
-When set to \fBOn\fP, makes readline use a single line for display,
-scrolling the input horizontally on a single screen line when it
-becomes longer than the screen width rather than wrapping to a new line.
-.TP
-.B editing\-mode (emacs)
-Controls whether readline begins with a set of key bindings similar
-to \fIemacs\fP or \fIvi\fP.
-.B editing\-mode
-can be set to either
-.B emacs
-or
-.BR vi .
-.TP
-.B mark\-modified\-lines (Off)
-If set to \fBOn\fP, history lines that have been modified are displayed
-with a preceding asterisk (\fB*\fP).
-.TP
.B bell\-style (audible)
Controls what happens when readline wants to ring the terminal bell.
If set to \fBnone\fP, readline never rings the bell. If set to
@@ -534,24 +281,13 @@ If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
.TP
.B comment\-begin (``#'')
The string that is inserted in \fBvi\fP mode when the
-.B vi\-comment
+.B insert\-comment
command is executed.
-.TP
-.B meta\-flag (Off)
-If set to \fBOn\fP, readline will enable eight-bit input (that is,
-it will not strip the high bit from the characters it reads),
-regardless of what the terminal claims it can support.
-.TP
-.B convert\-meta (On)
-If set to \fBOn\fP, readline will convert characters with the
-eighth bit set to an ASCII key sequence
-by stripping the eighth bit and prepending an
-escape character (in effect, using escape as the \fImeta prefix\fP).
-.TP
-.B output\-meta (Off)
-If set to \fBOn\fP, readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence.
+This command is bound to
+.B M\-#
+in emacs mode and to
+.B #
+in vi command mode.
.TP
.B completion\-query\-items (100)
This determines when the user is queried about viewing
@@ -563,6 +299,40 @@ or equal to the value of this variable, the user is asked whether
or not he wishes to view them; otherwise they are simply listed
on the terminal.
.TP
+.B convert\-meta (On)
+If set to \fBOn\fP, readline will convert characters with the
+eighth bit set to an ASCII key sequence
+by stripping the eighth bit and prepending an
+escape character (in effect, using escape as the \fImeta prefix\fP).
+.TP
+.B disable\-completion (Off)
+If set to \fBOn\fP, readline will inhibit word completion. Completion
+characters will be inserted into the line as if they had been
+mapped to \fBself-insert\fP.
+.TP
+.B editing\-mode (emacs)
+Controls whether readline begins with a set of key bindings similar
+to \fIemacs\fP or \fIvi\fP.
+.B editing\-mode
+can be set to either
+.B emacs
+or
+.BR vi .
+.TP
+.B enable\-keypad (Off)
+When set to \fBOn\fP, readline will try to enable the application
+keypad when it is called. Some systems need this to enable the
+arrow keys.
+.TP
+.B expand\-tilde (Off)
+If set to \fBon\fP, tilde expansion is performed when readline
+attempts word completion.
+.TP
+.B horizontal\-scroll\-mode (Off)
+When set to \fBOn\fP, makes readline use a single line for display,
+scrolling the input horizontally on a single screen line when it
+becomes longer than the screen width rather than wrapping to a new line.
+.TP
.B keymap (emacs)
Set the current readline keymap. The set of legal keymap names is
\fIemacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,
@@ -575,6 +345,24 @@ the value of
.B editing\-mode
also affects the default keymap.
.TP
+.B mark\-directories (On)
+If set to \fBOn\fP, completed directory names have a slash
+appended.
+.TP
+.B mark\-modified\-lines (Off)
+If set to \fBOn\fP, history lines that have been modified are displayed
+with a preceding asterisk (\fB*\fP).
+.TP
+.B meta\-flag (Off)
+If set to \fBOn\fP, readline will enable eight-bit input (that is,
+it will not strip the high bit from the characters it reads),
+regardless of what the terminal claims it can support.
+.TP
+.B output\-meta (Off)
+If set to \fBOn\fP, readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence.
+.TP
.B show\-all\-if\-ambiguous (Off)
This alters the default behavior of the completion functions. If
set to
@@ -582,9 +370,10 @@ set to
words which have more than one possible completion cause the
matches to be listed immediately instead of ringing the bell.
.TP
-.B expand\-tilde (Off)
-If set to \fBon\fP, tilde expansion is performed when readline
-attempts word completion.
+.B visible\-stats (Off)
+If set to \fBOn\fP, a character denoting a file's type as reported
+by \fBstat\fP(2) is appended to the filename when listing possible
+completions.
.PD
.SS Conditional Constructs
.PP
@@ -622,7 +411,7 @@ and
for instance.
.IP \fBapplication\fP
The \fBapplication\fP construct is used to include
-application\-specific settings. Each program using the readline
+application-specific settings. Each program using the readline
library sets the \fIapplication name\fP, and an initialization
file can test for a particular value.
This could be used to bind key sequences to functions useful for
@@ -643,10 +432,44 @@ This command, as you saw in the previous example, terminates an
.IP \fB$else\fP
Commands in this branch of the \fB$if\fP directive are executed if
the test fails.
+.SH SEARCHING
+.PP
+Readline provides commands for searching through the command history
+for lines containing a specified string.
+There are two search modes:
+.I incremental
+and
+.IR non-incremental .
+.PP
+Incremental searches begin before the user has finished typing the
+search string.
+As each character of the search string is typed, readline displays
+the next entry from the history matching the string typed so far.
+An incremental search requires only as many characters as needed to
+find the desired history entry.
+The Escape character is used to terminate an incremental search.
+Control-J will also terminate the search.
+Control-G will abort an incremental search and restore the original
+line.
+When the search is terminated, the history entry containing the
+search string becomes the current line.
+To find other matching entries in the history list, type Control-S or
+Control-R as appropriate.
+This will search backward or forward in the history for the next
+line matching the search string typed so far.
+Any other key sequence bound to a readline command will terminate
+the search and execute that command.
+For instance, a \fInewline\fP will terminate the search and accept
+the line, thereby executing the command from the history list.
+.PP
+Non-incremental searches read the entire search string before starting
+to search for matching history lines. The search string may be
+typed by the user or part of the contents of the current line.
.SH EDITING COMMANDS
.PP
The following is a list of the names of the commands and the default
key sequences to which they are bound.
+Command names without an accompanying key sequence are unbound by default.
.SS Commands for Moving
.PP
.PD 0
@@ -677,7 +500,7 @@ With an argument, refresh the current line without clearing the
screen.
.TP
.B redraw\-current\-line
-Refresh the current line. By default, this is unbound.
+Refresh the current line.
.PD
.SS Commands for Manipulating the History
.PP
@@ -685,7 +508,7 @@ Refresh the current line. By default, this is unbound.
.TP
.B accept\-line (Newline, Return)
Accept the line regardless of where the cursor is. If this line is
-non\-empty, add it to the history list. If the line is a modified
+non-empty, add it to the history list. If the line is a modified
history line, then restore the history line to its original state.
.TP
.B previous\-history (C\-p)
@@ -713,21 +536,22 @@ the history as necessary. This is an incremental search.
.TP
.B non\-incremental\-reverse\-search\-history (M\-p)
Search backward through the history starting at the current line
-using a non\-incremental search for a string supplied by the user.
+using a non-incremental search for a string supplied by the user.
.TP
.B non\-incremental\-forward\-search\-history (M\-n)
-Search forward through the history using a non\-incremental search
+Search forward through the history using a non-incremental search
for a string supplied by the user.
.TP
.B history\-search\-forward
Search forward through the history for the string of characters
-between the start of the current line and the current point. This
-is a non-incremental search. By default, this command is unbound.
+between the start of the current line and the current cursor
+position (the \fIpoint\fP).
+This is a non-incremental search.
.TP
.B history\-search\-backward
Search backward through the history for the string of characters
-between the start of the current line and the current point. This
-is a non-incremental search. By default, this command is unbound.
+between the start of the current line and the point.
+This is a non-incremental search.
.TP
.B yank\-nth\-arg (M\-C\-y)
Insert the first argument to the previous command (usually
@@ -737,6 +561,12 @@ cursor position). With an argument
insert the \fIn\fPth word from the previous command (the words
in the previous command begin with word 0). A negative argument
inserts the \fIn\fPth word from the end of the previous command.
+.TP
+.B
+yank\-last\-arg (M\-.\^, M\-_\^)
+Insert the last argument to the previous command (the last word of
+the previous history entry). With an argument,
+behave exactly like \fByank\-nth\-arg\fP.
.PD
.SS Commands for Changing Text
.PP
@@ -753,7 +583,7 @@ then return
.TP
.B backward\-delete\-char (Rubout)
Delete the character behind the cursor. When given a numeric argument,
-save the deleted text on the kill\-ring.
+save the deleted text on the kill ring.
.TP
.B quoted\-insert (C\-q, C\-v)
Add the next character that you type to the line verbatim. This is
@@ -802,7 +632,7 @@ Kill backward from point to the beginning of the line.
.TP
.B kill\-whole\-line
Kill all characters on the current line, no matter where the
-cursor is. By default, this is unbound.
+cursor is.
.TP
.B kill\-word (M\-d)
Kill from the cursor to the end of the current word, or if between
@@ -818,14 +648,27 @@ Kill the word behind the cursor, using white space as a word boundary.
The word boundaries are different from
.BR backward\-kill\-word .
.TP
-.B delete\-horizontal\-space
-Delete all spaces and tabs around point. By default, this is unbound.
+.B delete\-horizontal\-space (M\-\e)
+Delete all spaces and tabs around point.
+.TP
+.B kill\-region
+Kill the text between the point and \fImark\fP (saved cursor position).
+This text is referred to as the \fIregion\fP.
+.TP
+.B copy\-region\-as\-kill
+Copy the text in the region to the kill buffer.
+.TP
+.B copy\-backward\-word
+Copy the word before point to the kill buffer.
+.TP
+.B copy\-forward\-word
+Copy the word following point to the kill buffer.
.TP
.B yank (C\-y)
Yank the top of the kill ring into the buffer at the cursor.
.TP
.B yank\-pop (M\-y)
-Rotate the kill\-ring, and yank the new top. Only works following
+Rotate the kill ring, and yank the new top. Only works following
.B yank
or
.BR yank\-pop .
@@ -839,10 +682,18 @@ Add this digit to the argument already accumulating, or start a new
argument. M\-\- starts a negative argument.
.TP
.B universal\-argument
-Each time this is executed, the argument count is multiplied by four.
+This is another way to specify an argument.
+If this command is followed by one or more digits, optionally with a
+leading minus sign, those digits define the argument.
+If the command is followed by digits, executing
+.B universal\-argument
+again ends the numeric argument, but is otherwise ignored.
+As a special case, if this command is immediately followed by a
+character that is neither a digit or minus sign, the argument count
+for the next command is multiplied by four.
The argument count is initially one, so executing this function the
-first time makes the argument count four. By default, this is not
-bound to a key.
+first time makes the argument count four, a second time makes the
+argument count sixteen, and so on.
.PD
.SS Completing
.PP
@@ -862,27 +713,26 @@ on the other hand,
allows completion of program functions and variables, and
only attempts filename completion under certain circumstances.
.TP
-.B possible\-completions (M-?)
+.B possible\-completions (M\-?)
List the possible completions of the text before point.
.TP
-.B insert\-completions
+.B insert\-completions (M\-*)
Insert all completions of the text before point
that would have been generated by
-\fBpossible\-completions\fP. By default, this
-is not bound to a key.
+\fBpossible\-completions\fP.
.PD
.SS Keyboard Macros
.PP
.PD 0
.TP
-.B start\-kbd\-macro (C-x (\^)
+.B start\-kbd\-macro (C\-x (\^)
Begin saving the characters typed into the current keyboard macro.
.TP
-.B end\-kbd\-macro (C-x )\^)
+.B end\-kbd\-macro (C\-x )\^)
Stop saving the characters typed into the current keyboard macro
-and save the definition.
+and store the definition.
.TP
-.B call\-last\-kbd\-macro (C-x e)
+.B call\-last\-kbd\-macro (C\-x e)
Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
.PD
@@ -890,8 +740,8 @@ in the macro appear as if typed at the keyboard.
.PP
.PD 0
.TP
-.B re-read-init-file (C\-x C\-r)
-Read in the contents of your init file, and incorporate
+.B re\-read\-init\-file (C\-x C\-r)
+Read in the contents of the \fIinputrc\fP file, and incorporate
any bindings or variable assignments found there.
.TP
.B abort (C\-g)
@@ -899,9 +749,9 @@ Abort the current editing command and
ring the terminal's bell (subject to the setting of
.BR bell\-style ).
.TP
-.B do\-uppercase\-version (M\-a, M\-b, ...)
-Run the command that is bound to the corresponding uppercase
-character.
+.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...)
+If the metafied character \fIx\fP is lowercase, run the command
+that is bound to the corresponding uppercase character.
.TP
.B prefix\-meta (ESC)
Metafy the next character typed.
@@ -922,12 +772,56 @@ command enough times to return the line to its initial state.
.B tilde\-expand (M\-~)
Perform tilde expansion on the current word.
.TP
+.B set\-mark (C\-@, M-<space>)
+Set the mark to the current point. If a
+numeric argument is supplied, the mark is set to that position.
+.TP
+.B exchange\-point\-and\-mark (C\-x C\-x)
+Swap the point with the mark. The current cursor position is set to
+the saved position, and the old cursor position is saved as the mark.
+.TP
+.B character\-search (C\-])
+A character is read and point is moved to the next occurrence of that
+character. A negative count searches for previous occurrences.
+.TP
+.B character\-search\-backward (M\-C\-])
+A character is read and point is moved to the previous occurrence of that
+character. A negative count searches for subsequent occurrences.
+.TP
+.B insert\-comment (M\-#)
+The value of the readline
+.B comment\-begin
+variable is inserted at the beginning of the current line, and the line
+is accepted as if a newline had been typed. This makes the current line
+a shell comment.
+.TP
+.B glob\-expand\-word (C\-x *)
+The word before point is treated as a pattern for pathname expansion,
+and the list of matching file names is inserted, replacing the word.
+.TP
+.B glob\-list\-expansions (C\-x g)
+The list of expansions that would have been generated by
+.B glob\-expand\-word
+is inserted into the line, replacing the word before point.
+.TP
.B dump\-functions
Print all of the functions and their key bindings to the
readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an \fIinputrc\fP file.
.TP
+.B dump\-variables
+Print all of the settable variables and their values to the
+readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B dump\-macros
+Print all of the readline key sequences bound to macros and the
+strings they ouput. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
.B emacs\-editing\-mode (C\-e)
When in
.B vi
@@ -945,7 +839,7 @@ editing mode.
.SH DEFAULT KEY BINDINGS
.LP
The following is a list of the default emacs and vi bindings.
-Characters with the 8th bit set are written as M-<character>, and
+Characters with the 8th bit set are written as M\-<character>, and
are referred to as
.I metafied
characters.
@@ -975,82 +869,93 @@ variable).
.sp
Emacs Standard bindings
.sp
-"C-A" -> beginning-of-line
-"C-B" -> backward-char
-"C-D" -> delete-char
-"C-E" -> end-of-line
-"C-F" -> forward-char
-"C-G" -> abort
-"C-H" -> backward-delete-char
-"C-I" -> complete
-"C-J" -> accept-line
-"C-K" -> kill-line
-"C-L" -> clear-screen
-"C-M" -> accept-line
-"C-N" -> next-history
-"C-P" -> previous-history
-"C-Q" -> quoted-insert
-"C-R" -> reverse-search-history
-"C-S" -> forward-search-history
-"C-T" -> transpose-chars
-"C-U" -> unix-line-discard
-"C-V" -> quoted-insert
-"C-W" -> unix-word-rubout
-"C-Y" -> yank
-"C-_" -> undo
-"\^ " to "/" -> self-insert
-"0" to "9" -> self-insert
-":" to "~" -> self-insert
-"C-?" -> backward-delete-char
+"C-@" set-mark
+"C-A" beginning-of-line
+"C-B" backward-char
+"C-D" delete-char
+"C-E" end-of-line
+"C-F" forward-char
+"C-G" abort
+"C-H" backward-delete-char
+"C-I" complete
+"C-J" accept-line
+"C-K" kill-line
+"C-L" clear-screen
+"C-M" accept-line
+"C-N" next-history
+"C-P" previous-history
+"C-Q" quoted-insert
+"C-R" reverse-search-history
+"C-S" forward-search-history
+"C-T" transpose-chars
+"C-U" unix-line-discard
+"C-V" quoted-insert
+"C-W" unix-word-rubout
+"C-Y" yank
+"C-]" character-search
+"C-_" undo
+"\^ " to "/" self-insert
+"0" to "9" self-insert
+":" to "~" self-insert
+"C-?" backward-delete-char
.PP
Emacs Meta bindings
.sp
-"M-C-H" -> backward-kill-word
-"M-C-I" -> tab-insert
-"M-C-J" -> vi-editing-mode
-"M-C-M" -> vi-editing-mode
-"M-C-R" -> revert-line
-"M-C-Y" -> yank-nth-arg
-"M-C-[" -> complete
-"M-&" -> tilde-expand
-"M--" -> digit-argument
-"M-0" -> digit-argument
-"M-1" -> digit-argument
-"M-2" -> digit-argument
-"M-3" -> digit-argument
-"M-4" -> digit-argument
-"M-5" -> digit-argument
-"M-6" -> digit-argument
-"M-7" -> digit-argument
-"M-8" -> digit-argument
-"M-9" -> digit-argument
-"M-<" -> beginning-of-history
-"M->" -> end-of-history
-"M-?" -> possible-completions
-"M-B" -> backward-word
-"M-C" -> capitalize-word
-"M-D" -> kill-word
-"M-F" -> forward-word
-"M-L" -> downcase-word
-"M-N" -> non-incremental-forward-search-history
-"M-O" -> arrow-key-prefix
-"M-P" -> non-incremental-reverse-search-history
-"M-R" -> revert-line
-"M-T" -> transpose-words
-"M-U" -> upcase-word
-"M-Y" -> yank-pop
-"M-C-Y" -> yank-nth-arg
-"M-C-?" -> backward-delete-word
+"M-C-G" abort
+"M-C-H" backward-kill-word
+"M-C-I" tab-insert
+"M-C-J" vi-editing-mode
+"M-C-M" vi-editing-mode
+"M-C-R" revert-line
+"M-C-Y" yank-nth-arg
+"M-C-[" complete
+"M-C-]" character-search-backward
+"M-space" set-mark
+"M-#" insert-comment
+"M-&" tilde-expand
+"M-*" insert-completions
+"M--" digit-argument
+"M-." yank-last-arg
+"M-0" digit-argument
+"M-1" digit-argument
+"M-2" digit-argument
+"M-3" digit-argument
+"M-4" digit-argument
+"M-5" digit-argument
+"M-6" digit-argument
+"M-7" digit-argument
+"M-8" digit-argument
+"M-9" digit-argument
+"M-<" beginning-of-history
+"M-=" possible-completions
+"M->" end-of-history
+"M-?" possible-completions
+"M-B" backward-word
+"M-C" capitalize-word
+"M-D" kill-word
+"M-F" forward-word
+"M-L" downcase-word
+"M-N" non-incremental-forward-search-history
+"M-P" non-incremental-reverse-search-history
+"M-R" revert-line
+"M-T" transpose-words
+"M-U" upcase-word
+"M-Y" yank-pop
+"M-\e" delete-horizontal-space
+"M-~" tilde-expand
+"M-C-?" backward-delete-word
+"M-_" yank-last-arg
.PP
Emacs Control-X bindings
.sp
-"C-XC-G" -> abort
-"C-XC-R" -> re-read-init-file
-"C-XC-U" -> undo
-"C-X(" -> start-kbd-macro
-"C-X)" -> end-kbd-macro
-"C-Xe" -> call-last-kbd-macro
-"C-XC-?" -> backward-kill-line
+"C-XC-G" abort
+"C-XC-R" re-read-init-file
+"C-XC-U" undo
+"C-XC-X" exchange-point-and-mark
+"C-X(" start-kbd-macro
+"C-X)" end-kbd-macro
+"C-XE" call-last-kbd-macro
+"C-XC-?" backward-kill-line
.sp
.RE
.SS VI Mode bindings
@@ -1061,112 +966,110 @@ Emacs Control-X bindings
.PP
VI Insert Mode functions
.sp
-"C-D" -> vi-eof-maybe
-"C-H" -> backward-delete-char
-"C-I" -> complete
-"C-J" -> accept-line
-"C-K" -> kill-line
-"C-L" -> clear-screen
-"C-M" -> accept-line
-"C-N" -> next-history
-"C-P" -> previous-history
-"C-Q" -> quoted-insert
-"C-R" -> reverse-search-history
-"C-S" -> forward-search-history
-"C-T" -> transpose-chars
-"C-U" -> unix-line-discard
-"C-V" -> quoted-insert
-"C-W" -> unix-word-rubout
-"C-Y" -> yank
-"C-[" -> vi-movement-mode
-"\^ " to "~" -> self-insert
-"C-?" -> backward-delete-char
+"C-D" vi-eof-maybe
+"C-H" backward-delete-char
+"C-I" complete
+"C-J" accept-line
+"C-M" accept-line
+"C-R" reverse-search-history
+"C-S" forward-search-history
+"C-T" transpose-chars
+"C-U" unix-line-discard
+"C-V" quoted-insert
+"C-W" unix-word-rubout
+"C-Y" yank
+"C-[" vi-movement-mode
+"C-_" undo
+"\^ " to "~" self-insert
+"C-?" backward-delete-char
.PP
VI Command Mode functions
.sp
-"C-D" -> vi-eof-maybe
-"C-E" -> emacs-editing-mode
-"C-G" -> abort
-"C-H" -> backward-char
-"C-J" -> accept-line
-"C-K" -> kill-line
-"C-L" -> clear-screen
-"C-M" -> accept-line
-"C-N" -> next-history
-"C-P" -> previous-history
-"C-Q" -> quoted-insert
-"C-R" -> reverse-search-history
-"C-S" -> forward-search-history
-"C-T" -> transpose-chars
-"C-U" -> unix-line-discard
-"C-V" -> quoted-insert
-"C-W" -> unix-word-rubout
-"C-Y" -> yank
-"C-[" -> abort
-"\^ " -> forward-char
-"#" -> vi-comment
-"$" -> end-of-line
-"%" -> vi-match
-"&" -> vi-tilde-expand
-"*" -> vi-complete
-"+" -> down-history
-"," -> vi-char-search
-"-" -> previous-history
-"." -> vi-redo
-"/" -> vi-search
-"0" -> beginning-of-line
-"1" to "9" -> vi-arg-digit
-";" -> vi-char-search
-"=" -> vi-complete
-"?" -> vi-search
-"@" -> is undefined
-"A" -> vi-append-eol
-"B" -> vi-prev-word
-"C" -> vi-change-to
-"D" -> vi-delete-to
-"E" -> vi-end-word
-"F" -> vi-char-search
-"I" -> vi-insert-beg
-"N" -> vi-search-again
-"P" -> vi-put
-"R" -> vi-replace
-"S" -> vi-subst
-"T" -> vi-char-search
-"U" -> revert-line
-"W" -> vi-next-word
-"X" -> backward-delete-char
-"Y" -> vi-yank-to
-"\e" -> vi-complete
-"^" -> vi-first-print
-"_" -> vi-yank-arg
-"a" -> vi-append-mode
-"b" -> vi-prev-word
-"c" -> vi-change-to
-"d" -> vi-delete-to
-"e" -> vi-end-word
-"f" -> vi-char-search
-"h" -> backward-char
-"i" -> vi-insertion-mode
-"j" -> next-history
-"k" -> prev-history
-"l" -> forward-char
-"n" -> vi-search-again
-"r" -> vi-change-char
-"s" -> vi-subst
-"t" -> vi-char-search
-"u" -> undo
-"w" -> vi-next-word
-"x" -> vi-delete
-"y" -> vi-yank-to
-"|" -> vi-column
-"~" -> vi-change-case
+"C-D" vi-eof-maybe
+"C-E" emacs-editing-mode
+"C-G" abort
+"C-H" backward-char
+"C-J" accept-line
+"C-K" kill-line
+"C-L" clear-screen
+"C-M" accept-line
+"C-N" next-history
+"C-P" previous-history
+"C-Q" quoted-insert
+"C-R" reverse-search-history
+"C-S" forward-search-history
+"C-T" transpose-chars
+"C-U" unix-line-discard
+"C-V" quoted-insert
+"C-W" unix-word-rubout
+"C-Y" yank
+"\^ " forward-char
+"#" insert-comment
+"$" end-of-line
+"%" vi-match
+"&" vi-tilde-expand
+"*" vi-complete
+"+" next-history
+"," vi-char-search
+"-" previous-history
+"." vi-redo
+"/" vi-search
+"0" beginning-of-line
+"1" to "9" vi-arg-digit
+";" vi-char-search
+"=" vi-complete
+"?" vi-search
+"A" vi-append-eol
+"B" vi-prev-word
+"C" vi-change-to
+"D" vi-delete-to
+"E" vi-end-word
+"F" vi-char-search
+"G" vi-fetch-history
+"I" vi-insert-beg
+"N" vi-search-again
+"P" vi-put
+"R" vi-replace
+"S" vi-subst
+"T" vi-char-search
+"U" revert-line
+"W" vi-next-word
+"X" backward-delete-char
+"Y" vi-yank-to
+"\e" vi-complete
+"^" vi-first-print
+"_" vi-yank-arg
+"`" vi-goto-mark
+"a" vi-append-mode
+"b" vi-prev-word
+"c" vi-change-to
+"d" vi-delete-to
+"e" vi-end-word
+"f" vi-char-search
+"h" backward-char
+"i" vi-insertion-mode
+"j" next-history
+"k" prev-history
+"l" forward-char
+"m" vi-set-mark
+"n" vi-search-again
+"p" vi-put
+"r" vi-change-char
+"s" vi-subst
+"t" vi-char-search
+"u" undo
+"w" vi-next-word
+"x" vi-delete
+"y" vi-yank-to
+"|" vi-column
+"~" vi-change-case
.RE
.SH "SEE ALSO"
.PD 0
.TP
-\fIThe Gnu Readline Library\fP, Brian Fox
+\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
.TP
-\fIThe Gnu History Library\fP, Brian Fox
+\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
.TP
\fIbash\fP(1)
.PD
@@ -1177,7 +1080,6 @@ VI Command Mode functions
Individual \fBreadline\fP initialization file
.PD
.SH AUTHORS
-.RS
Brian Fox, Free Software Foundation (primary author)
.br
bfox@ai.MIT.Edu
@@ -1195,10 +1097,10 @@ version of the
library that you have.
.PP
Once you have determined that a bug actually exists, mail a
-bug report to \fIbash\-maintainers\fP@\fIprep.ai.MIT.Edu\fP.
+bug report to \fIbug\-readline\fP@\fIprep.ai.MIT.Edu\fP.
If you have a fix, you are welcome to mail that
as well! Suggestions and `philosophical' bug reports may be mailed
-to \fPbug-bash\fP@\fIprep.ai.MIT.Edu\fP or posted to the Usenet
+to \fPbug-readline\fP@\fIprep.ai.MIT.Edu\fP or posted to the Usenet
newsgroup
.BR gnu.bash.bug .
.PP
diff --git a/doc/readline.dvi b/doc/readline.dvi
index a967128..b09a22b 100644
--- a/doc/readline.dvi
+++ b/doc/readline.dvi
Binary files differ
diff --git a/doc/readline.html b/doc/readline.html
new file mode 100644
index 0000000..2a665f8
--- /dev/null
+++ b/doc/readline.html
@@ -0,0 +1,3363 @@
+<HTML>
+<HEAD>
+<!-- This HTML file has been created by texi2html 1.51
+ from /usr/homes/chet/src/bash/readline-2.1/doc/rlman.texinfo on 3 June 1997 -->
+
+<TITLE>GNU Readline Library</TITLE>
+</HEAD>
+<BODY>
+<H1>GNU Readline Library</H1>
+<H2>Edition 2.1, for <CODE>Readline Library</CODE> Version 2.1.</H2>
+<H2>March 1996</H2>
+<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
+<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
+<P>
+<P><HR><P>
+
+<P>
+This document describes the GNU Readline Library, a utility which aids
+in the consistency of user interface across discrete programs that need
+to provide a command line interface.
+
+</P>
+<P>
+Published by the Free Software Foundation <BR>
+675 Massachusetts Avenue, <BR>
+Cambridge, MA 02139 USA
+
+</P>
+<P>
+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.
+
+</P>
+<P>
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+</P>
+<P>
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
+
+</P>
+<P>
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+
+</P>
+
+
+
+<H1><A NAME="SEC1" HREF="readline_toc.html#TOC1">Command Line Editing</A></H1>
+
+<P>
+This chapter describes the basic features of the GNU
+command line editing interface.
+
+</P>
+
+
+
+<H2><A NAME="SEC2" HREF="readline_toc.html#TOC2">Introduction to Line Editing</A></H2>
+
+<P>
+The following paragraphs describe the notation used to represent
+keystrokes.
+
+</P>
+<P>
+The text <KBD>C-k</KBD> is read as `Control-K' and describes the character
+produced when the <KBD>k</KBD> key is pressed while the Control key
+is depressed.
+
+</P>
+<P>
+The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
+produced when the meta key (if you have one) is depressed, and the <KBD>k</KBD>
+key is pressed. If you do not have a meta key, the identical keystroke
+can be generated by typing <KBD>ESC</KBD> <I>first</I>, and then typing <KBD>k</KBD>.
+Either process is known as <STRONG>metafying</STRONG> the <KBD>k</KBD> key.
+
+</P>
+<P>
+The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
+character produced by <STRONG>metafying</STRONG> <KBD>C-k</KBD>.
+
+</P>
+<P>
+In addition, several keys have their own names. Specifically,
+<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
+stand for themselves when seen in this text, or in an init file
+(@xref{Readline Init File}).
+
+</P>
+
+
+<H2><A NAME="SEC3" HREF="readline_toc.html#TOC3">Readline Interaction</A></H2>
+<P>
+<A NAME="IDX1"></A>
+
+</P>
+<P>
+Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press <KBD>RETURN</KBD>. You do not have to be at the
+end of the line to press <KBD>RETURN</KBD>; the entire line is accepted
+regardless of the location of the cursor within the line.
+
+</P>
+
+
+
+<H3><A NAME="SEC4" HREF="readline_toc.html#TOC4">Readline Init File Syntax</A></H3>
+
+<P>
+There are only a few basic constructs allowed in the
+Readline init file. Blank lines are ignored.
+Lines beginning with a <SAMP>`#'</SAMP> are comments.
+Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
+constructs (see section <A HREF="readline.html#SEC5">Conditional Init Constructs</A>). Other lines
+denote variable settings and key bindings.
+
+</P>
+<DL COMPACT>
+
+<DT>Variable Settings
+<DD>
+You can change the state of a few variables in Readline by
+using the <CODE>set</CODE> command within the init file. Here is how you
+would specify that you wish to use <CODE>vi</CODE> line editing commands:
+
+
+<PRE>
+set editing-mode vi
+</PRE>
+
+Right now, there are only a few variables which can be set;
+so few, in fact, that we just list them here:
+
+<DL COMPACT>
+
+<DT><CODE>bell-style</CODE>
+<DD>
+<A NAME="IDX2"></A>
+Controls what happens when Readline wants to ring the terminal bell.
+If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to
+<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
+If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
+the terminal's bell.
+
+<DT><CODE>comment-begin</CODE>
+<DD>
+<A NAME="IDX3"></A>
+The string to insert at the beginning of the line when the
+<CODE>insert-comment</CODE> command is executed. The default value
+is <CODE>"#"</CODE>.
+
+<DT><CODE>completion-query-items</CODE>
+<DD>
+<A NAME="IDX4"></A>
+The number of possible completions that determines when the user is
+asked whether he wants to see the list of possibilities. If the
+number of possible completions is greater than this value,
+Readline will ask the user whether or not he wishes to view
+them; otherwise, they are simply listed. The default limit is
+<CODE>100</CODE>.
+
+<DT><CODE>convert-meta</CODE>
+<DD>
+<A NAME="IDX5"></A>
+If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
+eigth bit set to an ASCII key sequence by stripping the eigth
+bit and prepending an <KBD>ESC</KBD> character, converting them to a
+meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>.
+
+<DT><CODE>disable-completion</CODE>
+<DD>
+<A NAME="IDX6"></A>
+If set to <SAMP>`On'</SAMP>, readline will inhibit word completion.
+Completion characters will be inserted into the line as if they had
+been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>.
+
+<DT><CODE>editing-mode</CODE>
+<DD>
+<A NAME="IDX7"></A>
+The <CODE>editing-mode</CODE> variable controls which editing mode you are
+using. By default, Readline starts up in Emacs editing mode, where
+the keystrokes are most similar to Emacs. This variable can be
+set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
+
+<DT><CODE>enable-keypad</CODE>
+<DD>
+<A NAME="IDX8"></A>
+When set to <SAMP>`on'</SAMP>, readline will try to enable the application
+keypad when it is called. Some systems need this to enable the
+arrow keys. The default is <SAMP>`off'</SAMP>.
+
+<DT><CODE>expand-tilde</CODE>
+<DD>
+<A NAME="IDX9"></A>
+If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
+attempts word completion. The default is <SAMP>`off'</SAMP>.
+
+<DT><CODE>horizontal-scroll-mode</CODE>
+<DD>
+<A NAME="IDX10"></A>
+This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it
+to <SAMP>`on'</SAMP> means that the text of the lines that you edit will scroll
+horizontally on a single screen line when they are longer than the width
+of the screen, instead of wrapping onto a new screen line. By default,
+this variable is set to <SAMP>`off'</SAMP>.
+
+<DT><CODE>keymap</CODE>
+<DD>
+<A NAME="IDX11"></A>
+Sets Readline's idea of the current keymap for key binding commands.
+Acceptable <CODE>keymap</CODE> names are
+<CODE>emacs</CODE>,
+<CODE>emacs-standard</CODE>,
+<CODE>emacs-meta</CODE>,
+<CODE>emacs-ctlx</CODE>,
+<CODE>vi</CODE>,
+<CODE>vi-command</CODE>, and
+<CODE>vi-insert</CODE>.
+<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is
+equivalent to <CODE>emacs-standard</CODE>. The default value is <CODE>emacs</CODE>.
+The value of the <CODE>editing-mode</CODE> variable also affects the
+default keymap.
+
+<DT><CODE>mark-directories</CODE>
+<DD>
+If set to <SAMP>`on'</SAMP>, completed directory names have a slash
+appended. The default is <SAMP>`on'</SAMP>.
+
+<DT><CODE>mark-modified-lines</CODE>
+<DD>
+<A NAME="IDX12"></A>
+This variable, when set to <SAMP>`on'</SAMP>, says to display an asterisk
+(<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
+This variable is <SAMP>`off'</SAMP> by default.
+
+<DT><CODE>input-meta</CODE>
+<DD>
+<A NAME="IDX13"></A>
+<A NAME="IDX14"></A>
+If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
+will not strip the eighth bit from the characters it reads),
+regardless of what the terminal claims it can support. The
+default value is <SAMP>`off'</SAMP>. The name <CODE>meta-flag</CODE> is a
+synonym for this variable.
+
+<DT><CODE>output-meta</CODE>
+<DD>
+<A NAME="IDX15"></A>
+If set to <SAMP>`on'</SAMP>, Readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence. The default is <SAMP>`off'</SAMP>.
+
+<DT><CODE>show-all-if-ambiguous</CODE>
+<DD>
+<A NAME="IDX16"></A>
+This alters the default behavior of the completion functions. If
+set to <SAMP>`on'</SAMP>,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+The default value is <SAMP>`off'</SAMP>.
+
+<DT><CODE>visible-stats</CODE>
+<DD>
+<A NAME="IDX17"></A>
+If set to <SAMP>`on'</SAMP>, a character denoting a file's type
+is appended to the filename when listing possible
+completions. The default is <SAMP>`off'</SAMP>.
+
+</DL>
+
+<DT>Key Bindings
+<DD>
+The syntax for controlling key bindings in the init file is
+simple. First you have to know the name of the command that you
+want to change. The following pages contain tables of the command name,
+the default keybinding, and a short description of what the command
+does.
+
+Once you know the name of the command, simply place the name of the key
+you wish to bind the command to, a colon, and then the name of the
+command on a line in the init file. The name of the key
+can be expressed in different ways, depending on which is most
+comfortable for you.
+
+<DL COMPACT>
+
+<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
+<DD>
+<VAR>keyname</VAR> is the name of a key spelled out in English. For example:
+
+<PRE>
+Control-u: universal-argument
+Meta-Rubout: backward-kill-word
+Control-o: "&#62; output"
+</PRE>
+
+In the above example, <SAMP>`C-u'</SAMP> is bound to the function
+<CODE>universal-argument</CODE>, and <SAMP>`C-o'</SAMP> is bound to run the macro
+expressed on the right hand side (that is, to insert the text
+<SAMP>`&#62; output'</SAMP> into the line).
+
+<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
+<DD>
+<VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
+denoting an entire key sequence can be specified, by placing
+the key sequence in double quotes. Some GNU Emacs style key
+escapes can be used, as in the following example, but the
+special character names are not recognized.
+
+
+<PRE>
+"\C-u": universal-argument
+"\C-x\C-r": re-read-init-file
+"\e[11~": "Function Key 1"
+</PRE>
+
+In the above example, <SAMP>`C-u'</SAMP> is bound to the function
+<CODE>universal-argument</CODE> (just as it was in the first example),
+<SAMP>`C-x C-r'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>, and
+<SAMP>`ESC [ 1 1 ~'</SAMP> is bound to insert the text <SAMP>`Function Key 1'</SAMP>.
+The following escape sequences are available when specifying key
+sequences:
+
+<DL COMPACT>
+
+<DT><CODE><KBD>\C-</KBD></CODE>
+<DD>
+control prefix
+<DT><CODE><KBD>\M-</KBD></CODE>
+<DD>
+meta prefix
+<DT><CODE><KBD>\e</KBD></CODE>
+<DD>
+an escape character
+<DT><CODE><KBD>\\</KBD></CODE>
+<DD>
+backslash
+<DT><CODE><KBD>\"</KBD></CODE>
+<DD>
+<KBD>"</KBD>
+<DT><CODE><KBD>\'</KBD></CODE>
+<DD>
+<KBD>'</KBD>
+</DL>
+
+When entering the text of a macro, single or double quotes should
+be used to indicate a macro definition. Unquoted text
+is assumed to be a function name. Backslash
+will quote any character in the macro text, including <SAMP>`"'</SAMP>
+and <SAMP>`''</SAMP>.
+For example, the following binding will make <SAMP>`C-x \'</SAMP>
+insert a single <SAMP>`\'</SAMP> into the line:
+
+<PRE>
+"\C-x\\": "\\"
+</PRE>
+
+</DL>
+</DL>
+
+
+
+<H3><A NAME="SEC5" HREF="readline_toc.html#TOC5">Conditional Init Constructs</A></H3>
+
+<P>
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key
+bindings and variable settings to be performed as the result
+of tests. There are three parser directives used.
+
+</P>
+<DL COMPACT>
+
+<DT><CODE>$if</CODE>
+<DD>
+The <CODE>$if</CODE> construct allows bindings to be made based on the
+editing mode, the terminal being used, or the application using
+Readline. The text of the test extends to the end of the line;
+no characters are required to isolate it.
+
+<DL COMPACT>
+
+<DT><CODE>mode</CODE>
+<DD>
+The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test
+whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode.
+This may be used in conjunction
+with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in
+the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if
+Readline is starting out in <CODE>emacs</CODE> mode.
+
+<DT><CODE>term</CODE>
+<DD>
+The <CODE>term=</CODE> form may be used to include terminal-specific
+key bindings, perhaps to bind the key sequences output by the
+terminal's function keys. The word on the right side of the
+<SAMP>`='</SAMP> is tested against the full name of the terminal and the
+portion of the terminal name before the first <SAMP>`-'</SAMP>. This
+allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
+for instance.
+
+<DT><CODE>application</CODE>
+<DD>
+The <VAR>application</VAR> construct is used to include
+application-specific settings. Each program using the Readline
+library sets the <VAR>application name</VAR>, and you can test for it.
+This could be used to bind key sequences to functions useful for
+a specific program. For instance, the following command adds a
+key sequence that quotes the current or previous word in Bash:
+
+<PRE>
+$if Bash
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+$endif
+</PRE>
+
+</DL>
+
+<DT><CODE>$endif</CODE>
+<DD>
+This command, as you saw in the previous example, terminates an
+<CODE>$if</CODE> command.
+
+<DT><CODE>$else</CODE>
+<DD>
+Commands in this branch of the <CODE>$if</CODE> directive are executed if
+the test fails.
+</DL>
+
+
+
+<H3><A NAME="SEC6" HREF="readline_toc.html#TOC6">Sample Init File</A></H3>
+
+<P>
+Here is an example of an inputrc file. This illustrates key
+binding, variable assignment, and conditional syntax.
+
+</P>
+
+<PRE>
+# This file controls the behaviour of line input editing for
+# programs that use the Gnu Readline library. Existing programs
+# include FTP, Bash, and Gdb.
+#
+# You can re-read the inputrc file with C-x C-r.
+# Lines beginning with '#' are comments.
+#
+# Set various bindings for emacs mode.
+
+set editing-mode emacs
+
+$if mode=emacs
+
+Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+#
+# Arrow keys in keypad mode
+#
+#"\M-OD": backward-char
+#"\M-OC": forward-char
+#"\M-OA": previous-history
+#"\M-OB": next-history
+#
+# Arrow keys in ANSI mode
+#
+"\M-[D": backward-char
+"\M-[C": forward-char
+"\M-[A": previous-history
+"\M-[B": next-history
+#
+# Arrow keys in 8 bit keypad mode
+#
+#"\M-\C-OD": backward-char
+#"\M-\C-OC": forward-char
+#"\M-\C-OA": previous-history
+#"\M-\C-OB": next-history
+#
+# Arrow keys in 8 bit ANSI mode
+#
+#"\M-\C-[D": backward-char
+#"\M-\C-[C": forward-char
+#"\M-\C-[A": previous-history
+#"\M-\C-[B": next-history
+
+C-q: quoted-insert
+
+$endif
+
+# An old-style binding. This happens to be the default.
+TAB: complete
+
+# Macros that are convenient for shell interaction
+$if Bash
+# edit the path
+"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+# prepare to type a quoted word -- insert open and close double quotes
+# and move to just after the open quote
+"\C-x\"": "\"\"\C-b"
+# insert a backslash (testing backslash escapes in sequences and macros)
+"\C-x\\": "\\"
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+# Add a binding to refresh the line, which is unbound
+"\C-xr": redraw-current-line
+# Edit variable on current line.
+"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+$endif
+
+# use a visible bell if one is available
+set bell-style visible
+
+# don't strip characters to 7 bits when reading
+set input-meta on
+
+# allow iso-latin1 characters to be inserted rather than converted to
+# prefix-meta sequences
+set convert-meta off
+
+# display characters with the eighth bit set directly rather than
+# as meta-prefixed characters
+set output-meta on
+
+# if there are more than 150 possible completions for a word, ask the
+# user if he wants to see all of them
+set completion-query-items 150
+
+# For FTP
+$if Ftp
+"\C-xg": "get \M-?"
+"\C-xt": "put \M-?"
+"\M-.": yank-last-arg
+$endif
+</PRE>
+
+
+
+<H2><A NAME="SEC7" HREF="readline_toc.html#TOC7">Bindable Readline Commands</A></H2>
+
+<P>
+This section describes Readline commands that may be bound to key
+sequences.
+
+</P>
+
+
+<H3><A NAME="SEC8" HREF="readline_toc.html#TOC8">Commands For Moving</A></H3>
+<DL COMPACT>
+
+<DT><CODE>beginning-of-line (C-a)</CODE>
+<DD>
+<A NAME="IDX18"></A>
+Move to the start of the current line.
+
+<DT><CODE>end-of-line (C-e)</CODE>
+<DD>
+<A NAME="IDX19"></A>
+Move to the end of the line.
+
+<DT><CODE>forward-char (C-f)</CODE>
+<DD>
+<A NAME="IDX20"></A>
+Move forward a character.
+
+<DT><CODE>backward-char (C-b)</CODE>
+<DD>
+<A NAME="IDX21"></A>
+Move back a character.
+
+<DT><CODE>forward-word (M-f)</CODE>
+<DD>
+<A NAME="IDX22"></A>
+Move forward to the end of the next word. Words are composed of
+letters and digits.
+
+<DT><CODE>backward-word (M-b)</CODE>
+<DD>
+<A NAME="IDX23"></A>
+Move back to the start of this, or the previous, word. Words are
+composed of letters and digits.
+
+<DT><CODE>clear-screen (C-l)</CODE>
+<DD>
+<A NAME="IDX24"></A>
+Clear the screen and redraw the current line,
+leaving the current line at the top of the screen.
+
+<DT><CODE>redraw-current-line ()</CODE>
+<DD>
+<A NAME="IDX25"></A>
+Refresh the current line. By default, this is unbound.
+
+</DL>
+
+
+
+<H3><A NAME="SEC9" HREF="readline_toc.html#TOC9">Commands For Manipulating The History</A></H3>
+
+<DL COMPACT>
+
+<DT><CODE>accept-line (Newline, Return)</CODE>
+<DD>
+<A NAME="IDX26"></A>
+Accept the line regardless of where the cursor is. If this line is
+non-empty, add it to the history list. If this line was a history
+line, then restore the history line to its original state.
+
+<DT><CODE>previous-history (C-p)</CODE>
+<DD>
+<A NAME="IDX27"></A>
+Move `up' through the history list.
+
+<DT><CODE>next-history (C-n)</CODE>
+<DD>
+<A NAME="IDX28"></A>
+Move `down' through the history list.
+
+<DT><CODE>beginning-of-history (M-&#60;)</CODE>
+<DD>
+<A NAME="IDX29"></A>
+Move to the first line in the history.
+
+<DT><CODE>end-of-history (M-&#62;)</CODE>
+<DD>
+<A NAME="IDX30"></A>
+Move to the end of the input history, i.e., the line you are entering.
+
+<DT><CODE>reverse-search-history (C-r)</CODE>
+<DD>
+<A NAME="IDX31"></A>
+Search backward starting at the current line and moving `up' through
+the history as necessary. This is an incremental search.
+
+<DT><CODE>forward-search-history (C-s)</CODE>
+<DD>
+<A NAME="IDX32"></A>
+Search forward starting at the current line and moving `down' through
+the the history as necessary. This is an incremental search.
+
+<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
+<DD>
+<A NAME="IDX33"></A>
+Search backward starting at the current line and moving `up'
+through the history as necessary using a non-incremental search
+for a string supplied by the user.
+
+<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
+<DD>
+<A NAME="IDX34"></A>
+Search forward starting at the current line and moving `down'
+through the the history as necessary using a non-incremental search
+for a string supplied by the user.
+
+<DT><CODE>history-search-forward ()</CODE>
+<DD>
+<A NAME="IDX35"></A>
+Search forward through the history for the string of characters
+between the start of the current line and the current cursor
+position (the `point'). This is a non-incremental search. By
+default, this command is unbound.
+
+<DT><CODE>history-search-backward ()</CODE>
+<DD>
+<A NAME="IDX36"></A>
+Search backward through the history for the string of characters
+between the start of the current line and the point. This
+is a non-incremental search. By default, this command is unbound.
+
+<DT><CODE>yank-nth-arg (M-C-y)</CODE>
+<DD>
+<A NAME="IDX37"></A>
+Insert the first argument to the previous command (usually
+the second word on the previous line). With an argument <VAR>n</VAR>,
+insert the <VAR>n</VAR>th word from the previous command (the words
+in the previous command begin with word 0). A negative argument
+inserts the <VAR>n</VAR>th word from the end of the previous command.
+
+<DT><CODE>yank-last-arg (M-., M-_)</CODE>
+<DD>
+<A NAME="IDX38"></A>
+Insert last argument to the previous command (the last word of the
+previous history entry). With an
+argument, behave exactly like <CODE>yank-nth-arg</CODE>.
+
+</DL>
+
+
+
+<H3><A NAME="SEC10" HREF="readline_toc.html#TOC10">Commands For Changing Text</A></H3>
+
+<DL COMPACT>
+
+<DT><CODE>delete-char (C-d)</CODE>
+<DD>
+<A NAME="IDX39"></A>
+Delete the character under the cursor. If the cursor is at the
+beginning of the line, there are no characters in the line, and
+the last character typed was not <KBD>C-d</KBD>, then return <CODE>EOF</CODE>.
+
+<DT><CODE>backward-delete-char (Rubout)</CODE>
+<DD>
+<A NAME="IDX40"></A>
+Delete the character behind the cursor. A numeric arg says to kill
+the characters instead of deleting them.
+
+<DT><CODE>quoted-insert (C-q, C-v)</CODE>
+<DD>
+<A NAME="IDX41"></A>
+Add the next character that you type to the line verbatim. This is
+how to insert key sequences like <KBD>C-q</KBD>, for example.
+
+<DT><CODE>tab-insert (M-TAB)</CODE>
+<DD>
+<A NAME="IDX42"></A>
+Insert a tab character.
+
+<DT><CODE>self-insert (a, b, A, 1, !, ...)</CODE>
+<DD>
+<A NAME="IDX43"></A>
+Insert yourself.
+
+<DT><CODE>transpose-chars (C-t)</CODE>
+<DD>
+<A NAME="IDX44"></A>
+Drag the character before the cursor forward over
+the character at the cursor, moving the
+cursor forward as well. If the insertion point
+is at the end of the line, then this
+transposes the last two characters of the line.
+Negative argumentss don't work.
+
+<DT><CODE>transpose-words (M-t)</CODE>
+<DD>
+<A NAME="IDX45"></A>
+Drag the word behind the cursor past the word in front of the cursor
+moving the cursor over that word as well.
+
+<DT><CODE>upcase-word (M-u)</CODE>
+<DD>
+<A NAME="IDX46"></A>
+Uppercase the current (or following) word. With a negative argument,
+do the previous word, but do not move the cursor.
+
+<DT><CODE>downcase-word (M-l)</CODE>
+<DD>
+<A NAME="IDX47"></A>
+Lowercase the current (or following) word. With a negative argument,
+do the previous word, but do not move the cursor.
+
+<DT><CODE>capitalize-word (M-c)</CODE>
+<DD>
+<A NAME="IDX48"></A>
+Capitalize the current (or following) word. With a negative argument,
+do the previous word, but do not move the cursor.
+
+</DL>
+
+
+
+<H3><A NAME="SEC11" HREF="readline_toc.html#TOC11">Killing And Yanking</A></H3>
+
+<DL COMPACT>
+
+<DT><CODE>kill-line (C-k)</CODE>
+<DD>
+<A NAME="IDX49"></A>
+Kill the text from the current cursor position to the end of the line.
+
+<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
+<DD>
+<A NAME="IDX50"></A>
+Kill backward to the beginning of the line.
+
+<DT><CODE>unix-line-discard (C-u)</CODE>
+<DD>
+<A NAME="IDX51"></A>
+Kill backward from the cursor to the beginning of the current line.
+Save the killed text on the kill-ring.
+
+<DT><CODE>kill-whole-line ()</CODE>
+<DD>
+<A NAME="IDX52"></A>
+Kill all characters on the current line, no matter where the
+cursor is. By default, this is unbound.
+
+<DT><CODE>kill-word (M-d)</CODE>
+<DD>
+<A NAME="IDX53"></A>
+Kill from the cursor to the end of the current word, or if between
+words, to the end of the next word. Word boundaries are the same
+as <CODE>forward-word</CODE>.
+
+<DT><CODE>backward-kill-word (M-DEL)</CODE>
+<DD>
+<A NAME="IDX54"></A>
+Kill the word behind the cursor. Word boundaries are the same
+as <CODE>backward-word</CODE>.
+
+<DT><CODE>unix-word-rubout (C-w)</CODE>
+<DD>
+<A NAME="IDX55"></A>
+Kill the word behind the cursor, using white space as a word
+boundary. The killed text is saved on the kill-ring.
+
+<DT><CODE>delete-horizontal-space ()</CODE>
+<DD>
+<A NAME="IDX56"></A>
+Delete all spaces and tabs around point. By default, this is unbound.
+
+<DT><CODE>kill-region ()</CODE>
+<DD>
+<A NAME="IDX57"></A>
+Kill the text between the point and the <EM>mark</EM> (saved
+cursor position. This text is referred to as the <VAR>region</VAR>.
+By default, this command is unbound.
+
+<DT><CODE>copy-region-as-kill ()</CODE>
+<DD>
+<A NAME="IDX58"></A>
+Copy the text in the region to the kill buffer, so you can yank it
+right away. By default, this command is unbound.
+
+<DT><CODE>copy-backward-word ()</CODE>
+<DD>
+<A NAME="IDX59"></A>
+Copy the word before point to the kill buffer.
+By default, this command is unbound.
+
+<DT><CODE>copy-forward-word ()</CODE>
+<DD>
+<A NAME="IDX60"></A>
+Copy the word following point to the kill buffer.
+By default, this command is unbound.
+
+<DT><CODE>yank (C-y)</CODE>
+<DD>
+<A NAME="IDX61"></A>
+Yank the top of the kill ring into the buffer at the current
+cursor position.
+
+<DT><CODE>yank-pop (M-y)</CODE>
+<DD>
+<A NAME="IDX62"></A>
+Rotate the kill-ring, and yank the new top. You can only do this if
+the prior command is yank or yank-pop.
+</DL>
+
+
+
+<H3><A NAME="SEC12" HREF="readline_toc.html#TOC12">Specifying Numeric Arguments</A></H3>
+<DL COMPACT>
+
+<DT><CODE>digit-argument (M-0, M-1, ... M--)</CODE>
+<DD>
+<A NAME="IDX63"></A>
+Add this digit to the argument already accumulating, or start a new
+argument. <KBD>M--</KBD> starts a negative argument.
+
+<DT><CODE>universal-argument ()</CODE>
+<DD>
+<A NAME="IDX64"></A>
+This is another way to specify an argument.
+If this command is followed by one or more digits, optionally with a
+leading minus sign, those digits define the argument.
+If the command is followed by digits, executing <CODE>universal-argument</CODE>
+again ends the numeric argument, but is otherwise ignored.
+As a special case, if this command is immediately followed by a
+character that is neither a digit or minus sign, the argument count
+for the next command is multiplied by four.
+The argument count is initially one, so executing this function the
+first time makes the argument count four, a second time makes the
+argument count sixteen, and so on.
+By default, this is not bound to a key.
+</DL>
+
+
+
+<H3><A NAME="SEC13" HREF="readline_toc.html#TOC13">Letting Readline Type For You</A></H3>
+
+<DL COMPACT>
+
+<DT><CODE>complete (TAB)</CODE>
+<DD>
+<A NAME="IDX65"></A>
+Attempt to do completion on the text before the cursor. This is
+application-specific. Generally, if you are typing a filename
+argument, you can do filename completion; if you are typing a command,
+you can do command completion, if you are typing in a symbol to GDB, you
+can do symbol name completion, if you are typing in a variable to Bash,
+you can do variable name completion, and so on.
+
+<DT><CODE>possible-completions (M-?)</CODE>
+<DD>
+<A NAME="IDX66"></A>
+List the possible completions of the text before the cursor.
+
+<DT><CODE>insert-completions (M-*)</CODE>
+<DD>
+<A NAME="IDX67"></A>
+Insert all completions of the text before point that would have
+been generated by <CODE>possible-completions</CODE>.
+
+</DL>
+
+
+
+<H3><A NAME="SEC14" HREF="readline_toc.html#TOC14">Keyboard Macros</A></H3>
+<DL COMPACT>
+
+<DT><CODE>start-kbd-macro (C-x ()</CODE>
+<DD>
+<A NAME="IDX68"></A>
+Begin saving the characters typed into the current keyboard macro.
+
+<DT><CODE>end-kbd-macro (C-x ))</CODE>
+<DD>
+<A NAME="IDX69"></A>
+Stop saving the characters typed into the current keyboard macro
+and save the definition.
+
+<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
+<DD>
+<A NAME="IDX70"></A>
+Re-execute the last keyboard macro defined, by making the characters
+in the macro appear as if typed at the keyboard.
+
+</DL>
+
+
+
+<H3><A NAME="SEC15" HREF="readline_toc.html#TOC15">Some Miscellaneous Commands</A></H3>
+<DL COMPACT>
+
+<DT><CODE>re-read-init-file (C-x C-r)</CODE>
+<DD>
+<A NAME="IDX71"></A>
+Read in the contents of the inputrc file, and incorporate
+any bindings or variable assignments found there.
+
+<DT><CODE>abort (C-g)</CODE>
+<DD>
+<A NAME="IDX72"></A>
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+<CODE>bell-style</CODE>).
+
+<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, ...)</CODE>
+<DD>
+<A NAME="IDX73"></A>
+If the metafied character <VAR>x</VAR> is lowercase, run the command
+that is bound to the corresponding uppercase character.
+
+<DT><CODE>prefix-meta (ESC)</CODE>
+<DD>
+<A NAME="IDX74"></A>
+Make the next character that you type be metafied. This is for people
+without a meta key. Typing <SAMP>`ESC f'</SAMP> is equivalent to typing
+<SAMP>`M-f'</SAMP>.
+
+<DT><CODE>undo (C-_, C-x C-u)</CODE>
+<DD>
+<A NAME="IDX75"></A>
+Incremental undo, separately remembered for each line.
+
+<DT><CODE>revert-line (M-r)</CODE>
+<DD>
+<A NAME="IDX76"></A>
+Undo all changes made to this line. This is like typing the <CODE>undo</CODE>
+command enough times to get back to the beginning.
+
+<DT><CODE>tilde-expand (M-~)</CODE>
+<DD>
+<A NAME="IDX77"></A>
+Perform tilde expansion on the current word.
+
+<DT><CODE>set-mark (C-@)</CODE>
+<DD>
+<A NAME="IDX78"></A>
+Set the mark to the current point. If a
+numeric argument is supplied, the mark is set to that position.
+
+<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
+<DD>
+<A NAME="IDX79"></A>
+Swap the point with the mark. The current cursor position is set to
+the saved position, and the old cursor position is saved as the mark.
+
+<DT><CODE>character-search (C-])</CODE>
+<DD>
+<A NAME="IDX80"></A>
+A character is read and point is moved to the next occurrence of that
+character. A negative count searches for previous occurrences.
+
+<DT><CODE>character-search-backward (M-C-])</CODE>
+<DD>
+<A NAME="IDX81"></A>
+A character is read and point is moved to the previous occurrence
+of that character. A negative count searches for subsequent
+occurrences.
+
+<DT><CODE>insert-comment (M-#)</CODE>
+<DD>
+<A NAME="IDX82"></A>
+The value of the <CODE>comment-begin</CODE>
+variable is inserted at the beginning of the current line,
+and the line is accepted as if a newline had been typed.
+
+<DT><CODE>dump-functions ()</CODE>
+<DD>
+<A NAME="IDX83"></A>
+Print all of the functions and their key bindings to the
+readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+
+<DT><CODE>dump-variables ()</CODE>
+<DD>
+<A NAME="IDX84"></A>
+Print all of the settable variables and their values to the
+readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+
+<DT><CODE>dump-macros ()</CODE>
+<DD>
+<A NAME="IDX85"></A>
+Print all of the readline key sequences bound to macros and the
+strings they ouput. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+
+</DL>
+
+
+
+<H2><A NAME="SEC16" HREF="readline_toc.html#TOC16">Readline vi Mode</A></H2>
+
+<P>
+While the Readline library does not have a full set of <CODE>vi</CODE>
+editing functions, it does contain enough to allow simple editing
+of the line. The Readline <CODE>vi</CODE> mode behaves as specified in
+the POSIX 1003.2 standard.
+
+</P>
+<P>
+In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
+editing modes, use the command M-C-j (toggle-editing-mode).
+The Readline default is <CODE>emacs</CODE> mode.
+
+</P>
+<P>
+When you enter a line in <CODE>vi</CODE> mode, you are already placed in
+`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>. Pressing <KBD>ESC</KBD>
+switches you into `command' mode, where you can edit the text of the
+line with the standard <CODE>vi</CODE> movement keys, move to previous
+history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and
+so forth.
+
+</P>
+
+
+
+<H1><A NAME="SEC17" HREF="readline_toc.html#TOC17">Programming with GNU Readline</A></H1>
+
+<P>
+This chapter describes the interface between the GNU Readline Library and
+other programs. If you are a programmer, and you wish to include the
+features found in GNU Readline
+such as completion, line editing, and interactive history manipulation
+in your own programs, this section is for you.
+
+</P>
+
+
+
+<H2><A NAME="SEC18" HREF="readline_toc.html#TOC18">Basic Behavior</A></H2>
+
+<P>
+Many programs provide a command line interface, such as <CODE>mail</CODE>,
+<CODE>ftp</CODE>, and <CODE>sh</CODE>. For such programs, the default behaviour of
+Readline is sufficient. This section describes how to use Readline in
+the simplest way possible, perhaps to replace calls in your code to
+<CODE>gets()</CODE> or <CODE>fgets ()</CODE>.
+
+</P>
+<P>
+<A NAME="IDX86"></A>
+<A NAME="IDX87"></A>
+The function <CODE>readline ()</CODE> prints a prompt and then reads and returns
+a single line of text from the user. The line <CODE>readline</CODE>
+returns is allocated with <CODE>malloc ()</CODE>; you should <CODE>free ()</CODE>
+the line when you are done with it. The declaration for <CODE>readline</CODE>
+in ANSI C is
+
+</P>
+
+<PRE>
+<CODE>char *readline (char *<VAR>prompt</VAR>);</CODE>
+</PRE>
+
+<P>
+So, one might say
+
+<PRE>
+<CODE>char *line = readline ("Enter a line: ");</CODE>
+</PRE>
+
+<P>
+in order to read a line of text from the user.
+The line returned has the final newline removed, so only the
+text remains.
+
+</P>
+<P>
+If <CODE>readline</CODE> encounters an <CODE>EOF</CODE> while reading the line, and the
+line is empty at that point, then <CODE>(char *)NULL</CODE> is returned.
+Otherwise, the line is ended just as if a newline had been typed.
+
+</P>
+<P>
+If you want the user to be able to get at the line later, (with
+<KBD>C-p</KBD> for example), you must call <CODE>add_history ()</CODE> to save the
+line away in a <STRONG>history</STRONG> list of such lines.
+
+</P>
+
+<PRE>
+<CODE>add_history (line)</CODE>;
+</PRE>
+
+<P>
+For full details on the GNU History Library, see the associated manual.
+
+</P>
+<P>
+It is preferable to avoid saving empty lines on the history list, since
+users rarely have a burning need to reuse a blank line. Here is
+a function which usefully replaces the standard <CODE>gets ()</CODE> library
+function, and has the advantage of no static buffer to overflow:
+
+</P>
+
+<PRE>
+/* A static variable for holding the line. */
+static char *line_read = (char *)NULL;
+
+/* Read a string, and return a pointer to it. Returns NULL on EOF. */
+char *
+rl_gets ()
+{
+ /* If the buffer has already been allocated, return the memory
+ to the free pool. */
+ if (line_read)
+ {
+ free (line_read);
+ line_read = (char *)NULL;
+ }
+
+ /* Get a line from the user. */
+ line_read = readline ("");
+
+ /* If the line has any text in it, save it on the history. */
+ if (line_read &#38;&#38; *line_read)
+ add_history (line_read);
+
+ return (line_read);
+}
+</PRE>
+
+<P>
+This function gives the user the default behaviour of <KBD>TAB</KBD>
+completion: completion on file names. If you do not want Readline to
+complete on filenames, you can change the binding of the <KBD>TAB</KBD> key
+with <CODE>rl_bind_key ()</CODE>.
+
+</P>
+
+<PRE>
+<CODE>int rl_bind_key (int <VAR>key</VAR>, int (*<VAR>function</VAR>)());</CODE>
+</PRE>
+
+<P>
+<CODE>rl_bind_key ()</CODE> takes two arguments: <VAR>key</VAR> is the character that
+you want to bind, and <VAR>function</VAR> is the address of the function to
+call when <VAR>key</VAR> is pressed. Binding <KBD>TAB</KBD> to <CODE>rl_insert ()</CODE>
+makes <KBD>TAB</KBD> insert itself.
+<CODE>rl_bind_key ()</CODE> returns non-zero if <VAR>key</VAR> is not a valid
+ASCII character code (between 0 and 255).
+
+</P>
+<P>
+Thus, to disable the default <KBD>TAB</KBD> behavior, the following suffices:
+
+<PRE>
+<CODE>rl_bind_key ('\t', rl_insert);</CODE>
+</PRE>
+
+<P>
+This code should be executed once at the start of your program; you
+might write a function called <CODE>initialize_readline ()</CODE> which
+performs this and other desired initializations, such as installing
+custom completers (see section <A HREF="readline.html#SEC34">Custom Completers</A>).
+
+</P>
+
+
+<H2><A NAME="SEC19" HREF="readline_toc.html#TOC19">Custom Functions</A></H2>
+
+<P>
+Readline provides many functions for manipulating the text of
+the line, but it isn't possible to anticipate the needs of all
+programs. This section describes the various functions and variables
+defined within the Readline library which allow a user program to add
+customized functionality to Readline.
+
+</P>
+
+
+
+<H3><A NAME="SEC20" HREF="readline_toc.html#TOC20">The Function Type</A></H3>
+
+<P>
+For readabilty, we declare a new type of object, called
+<STRONG>Function</STRONG>. A <CODE>Function</CODE> is a C function which
+returns an <CODE>int</CODE>. The type declaration for <CODE>Function</CODE> is:
+
+</P>
+<P>
+<CODE>typedef int Function ();</CODE>
+
+</P>
+<P>
+The reason for declaring this new type is to make it easier to write
+code describing pointers to C functions. Let us say we had a variable
+called <VAR>func</VAR> which was a pointer to a function. Instead of the
+classic C declaration
+
+</P>
+<P>
+<CODE>int (*)()func;</CODE>
+
+</P>
+<P>
+we may write
+
+</P>
+<P>
+<CODE>Function *func;</CODE>
+
+</P>
+<P>
+Similarly, there are
+
+</P>
+
+<PRE>
+typedef void VFunction ();
+typedef char *CPFunction (); and
+typedef char **CPPFunction ();
+</PRE>
+
+<P>
+for functions returning no value, <CODE>pointer to char</CODE>, and
+<CODE>pointer to pointer to char</CODE>, respectively.
+
+</P>
+
+
+<H3><A NAME="SEC21" HREF="readline_toc.html#TOC21">Writing a New Function</A></H3>
+
+<P>
+In order to write new functions for Readline, you need to know the
+calling conventions for keyboard-invoked functions, and the names of the
+variables that describe the current state of the line read so far.
+
+</P>
+<P>
+The calling sequence for a command <CODE>foo</CODE> looks like
+
+</P>
+
+<PRE>
+<CODE>foo (int count, int key)</CODE>
+</PRE>
+
+<P>
+where <VAR>count</VAR> is the numeric argument (or 1 if defaulted) and
+<VAR>key</VAR> is the key that invoked this function.
+
+</P>
+<P>
+It is completely up to the function as to what should be done with the
+numeric argument. Some functions use it as a repeat count, some
+as a flag, and others to choose alternate behavior (refreshing the current
+line as opposed to refreshing the screen, for example). Some choose to
+ignore it. In general, if a
+function uses the numeric argument as a repeat count, it should be able
+to do something useful with both negative and positive arguments.
+At the very least, it should be aware that it can be passed a
+negative argument.
+
+</P>
+
+
+<H2><A NAME="SEC22" HREF="readline_toc.html#TOC22">Readline Variables</A></H2>
+
+<P>
+These variables are available to function writers.
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_line_buffer</B>
+<DD><A NAME="IDX88"></A>
+This is the line gathered so far. You are welcome to modify the
+contents of the line, but see section <A HREF="readline.html#SEC28">Allowing Undoing</A>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>rl_point</B>
+<DD><A NAME="IDX89"></A>
+The offset of the current cursor position in <CODE>rl_line_buffer</CODE>
+(the <EM>point</EM>).
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>rl_end</B>
+<DD><A NAME="IDX90"></A>
+The number of characters present in <CODE>rl_line_buffer</CODE>. When
+<CODE>rl_point</CODE> is at the end of the line, <CODE>rl_point</CODE> and
+<CODE>rl_end</CODE> are equal.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>rl_mark</B>
+<DD><A NAME="IDX91"></A>
+The mark (saved position) in the current line. If set, the mark
+and point define a <EM>region</EM>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>rl_done</B>
+<DD><A NAME="IDX92"></A>
+Setting this to a non-zero value causes Readline to return the current
+line immediately.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>rl_pending_input</B>
+<DD><A NAME="IDX93"></A>
+Setting this to a value makes it the next keystroke read. This is a
+way to stuff a single character into the input stream.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_prompt</B>
+<DD><A NAME="IDX94"></A>
+The prompt Readline uses. This is set from the argument to
+<CODE>readline ()</CODE>, and should not be assigned to directly.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_library_version</B>
+<DD><A NAME="IDX95"></A>
+The version number of this revision of the library.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_terminal_name</B>
+<DD><A NAME="IDX96"></A>
+The terminal type, used for initialization.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_readline_name</B>
+<DD><A NAME="IDX97"></A>
+This variable is set to a unique name by each application using Readline.
+The value allows conditional parsing of the inputrc file
+(see section <A HREF="readline.html#SEC5">Conditional Init Constructs</A>).
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> FILE * <B>rl_instream</B>
+<DD><A NAME="IDX98"></A>
+The stdio stream from which Readline reads input.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> FILE * <B>rl_outstream</B>
+<DD><A NAME="IDX99"></A>
+The stdio stream to which Readline performs output.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> Function * <B>rl_startup_hook</B>
+<DD><A NAME="IDX100"></A>
+If non-zero, this is the address of a function to call just
+before <CODE>readline</CODE> prints the first prompt.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> Function * <B>rl_event_hook</B>
+<DD><A NAME="IDX101"></A>
+If non-zero, this is the address of a function to call periodically
+when readline is waiting for terminal input.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> Function * <B>rl_getc_function</B>
+<DD><A NAME="IDX102"></A>
+If non-zero, <CODE>readline</CODE> will call indirectly through this pointer
+to get a character from the input stream. By default, it is set to
+<CODE>rl_getc</CODE>, the default <CODE>readline</CODE> character input function
+(see section <A HREF="readline.html#SEC31">Utility Functions</A>).
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> VFunction * <B>rl_redisplay_function</B>
+<DD><A NAME="IDX103"></A>
+If non-zero, <CODE>readline</CODE> will call indirectly through this pointer
+to update the display with the current contents of the editing buffer.
+By default, it is set to <CODE>rl_redisplay</CODE>, the default <CODE>readline</CODE>
+redisplay function (see section <A HREF="readline.html#SEC29">Redisplay</A>).
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B>
+<DD><A NAME="IDX104"></A>
+This variable is set to the keymap (see section <A HREF="readline.html#SEC25">Selecting a Keymap</A>) in which the
+currently executing readline function was found.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B>
+<DD><A NAME="IDX105"></A>
+This variable is set to the keymap (see section <A HREF="readline.html#SEC25">Selecting a Keymap</A>) in which the
+last key binding occurred.
+</DL>
+
+</P>
+
+
+<H2><A NAME="SEC23" HREF="readline_toc.html#TOC23">Readline Convenience Functions</A></H2>
+
+
+
+<H3><A NAME="SEC24" HREF="readline_toc.html#TOC24">Naming a Function</A></H3>
+
+<P>
+The user can dynamically change the bindings of keys while using
+Readline. This is done by representing the function with a descriptive
+name. The user is able to type the descriptive name when referring to
+the function. Thus, in an init file, one might find
+
+</P>
+
+<PRE>
+Meta-Rubout: backward-kill-word
+</PRE>
+
+<P>
+This binds the keystroke <KBD>Meta-Rubout</KBD> to the function
+<EM>descriptively</EM> named <CODE>backward-kill-word</CODE>. You, as the
+programmer, should bind the functions you write to descriptive names as
+well. Readline provides a function for doing that:
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_add_defun</B> <I>(char *name, Function *function, int key)</I>
+<DD><A NAME="IDX106"></A>
+Add <VAR>name</VAR> to the list of named functions. Make <VAR>function</VAR> be
+the function that gets called. If <VAR>key</VAR> is not -1, then bind it to
+<VAR>function</VAR> using <CODE>rl_bind_key ()</CODE>.
+</DL>
+
+</P>
+<P>
+Using this function alone is sufficient for most applications. It is
+the recommended way to add a few functions to the default functions that
+Readline has built in. If you need to do something other
+than adding a function to Readline, you may need to use the
+underlying functions described below.
+
+</P>
+
+
+<H3><A NAME="SEC25" HREF="readline_toc.html#TOC25">Selecting a Keymap</A></H3>
+
+<P>
+Key bindings take place on a <STRONG>keymap</STRONG>. The keymap is the
+association between the keys that the user types and the functions that
+get run. You can make your own keymaps, copy existing keymaps, and tell
+Readline which keymap to use.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>()</I>
+<DD><A NAME="IDX107"></A>
+Returns a new, empty keymap. The space for the keymap is allocated with
+<CODE>malloc ()</CODE>; you should <CODE>free ()</CODE> it when you are done.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I>
+<DD><A NAME="IDX108"></A>
+Return a new keymap which is a copy of <VAR>map</VAR>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>()</I>
+<DD><A NAME="IDX109"></A>
+Return a new keymap with the printing characters bound to rl_insert,
+the lowercase Meta characters bound to run their equivalents, and
+the Meta digits bound to produce numeric arguments.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I>
+<DD><A NAME="IDX110"></A>
+Free the storage associated with <VAR>keymap</VAR>.
+</DL>
+
+</P>
+<P>
+Readline has several internal keymaps. These functions allow you to
+change which keymap is active.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>()</I>
+<DD><A NAME="IDX111"></A>
+Returns the currently active keymap.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I>
+<DD><A NAME="IDX112"></A>
+Makes <VAR>keymap</VAR> the currently active keymap.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(char *name)</I>
+<DD><A NAME="IDX113"></A>
+Return the keymap matching <VAR>name</VAR>. <VAR>name</VAR> is one which would
+be supplied in a <CODE>set keymap</CODE> inputrc line (@xref{Readline Init File}).
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I>
+<DD><A NAME="IDX114"></A>
+Return the name matching <VAR>keymap</VAR>. <VAR>name</VAR> is one which would
+be supplied in a <CODE>set keymap</CODE> inputrc line (@xref{Readline Init File}).
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC26" HREF="readline_toc.html#TOC26">Binding Keys</A></H3>
+
+<P>
+You associate keys with functions through the keymap. Readline has
+several internal keymaps: <CODE>emacs_standard_keymap</CODE>,
+<CODE>emacs_meta_keymap</CODE>, <CODE>emacs_ctlx_keymap</CODE>,
+<CODE>vi_movement_keymap</CODE>, and <CODE>vi_insertion_keymap</CODE>.
+<CODE>emacs_standard_keymap</CODE> is the default, and the examples in
+this manual assume that.
+
+</P>
+<P>
+These functions manage key bindings.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, Function *function)</I>
+<DD><A NAME="IDX115"></A>
+Binds <VAR>key</VAR> to <VAR>function</VAR> in the currently active keymap.
+Returns non-zero in the case of an invalid <VAR>key</VAR>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_key_in_map</B> <I>(int key, Function *function, Keymap map)</I>
+<DD><A NAME="IDX116"></A>
+Bind <VAR>key</VAR> to <VAR>function</VAR> in <VAR>map</VAR>. Returns non-zero in the case
+of an invalid <VAR>key</VAR>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I>
+<DD><A NAME="IDX117"></A>
+Bind <VAR>key</VAR> to the null function in the currently active keymap.
+Returns non-zero in case of error.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I>
+<DD><A NAME="IDX118"></A>
+Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>.
+Returns non-zero in case of error.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, char *keyseq, char *data, Keymap map)</I>
+<DD><A NAME="IDX119"></A>
+Bind the key sequence represented by the string <VAR>keyseq</VAR> to the arbitrary
+pointer <VAR>data</VAR>. <VAR>type</VAR> says what kind of data is pointed to by
+<VAR>data</VAR>; this can be a function (<CODE>ISFUNC</CODE>), a macro
+(<CODE>ISMACR</CODE>), or a keymap (<CODE>ISKMAP</CODE>). This makes new keymaps as
+necessary. The initial keymap in which to do bindings is <VAR>map</VAR>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I>
+<DD><A NAME="IDX120"></A>
+Parse <VAR>line</VAR> as if it had been read from the <CODE>inputrc</CODE> file and
+perform any key bindings and variable assignments found
+(@xref{Readline Init File}).
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(char *filename)</I>
+<DD><A NAME="IDX121"></A>
+Read keybindings and variable assignments from <VAR>filename</VAR>
+(@xref{Readline Init File}).
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC27" HREF="readline_toc.html#TOC27">Associating Function Names and Bindings</A></H3>
+
+<P>
+These functions allow you to find out what keys invoke named functions
+and the functions invoked by a particular key sequence.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> Function * <B>rl_named_function</B> <I>(char *name)</I>
+<DD><A NAME="IDX122"></A>
+Return the function with name <VAR>name</VAR>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> Function * <B>rl_function_of_keyseq</B> <I>(char *keyseq, Keymap map, int *type)</I>
+<DD><A NAME="IDX123"></A>
+Return the function invoked by <VAR>keyseq</VAR> in keymap <VAR>map</VAR>.
+If <VAR>map</VAR> is NULL, the current keymap is used. If <VAR>type</VAR> is
+not NULL, the type of the object is returned in it (one of <CODE>ISFUNC</CODE>,
+<CODE>ISKMAP</CODE>, or <CODE>ISMACR</CODE>).
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(Function *function)</I>
+<DD><A NAME="IDX124"></A>
+Return an array of strings representing the key sequences used to
+invoke <VAR>function</VAR> in the current keymap.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(Function *function, Keymap map)</I>
+<DD><A NAME="IDX125"></A>
+Return an array of strings representing the key sequences used to
+invoke <VAR>function</VAR> in the keymap <VAR>map</VAR>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I>
+<DD><A NAME="IDX126"></A>
+Print the readline function names and the key sequences currently
+bound to them to <CODE>rl_outstream</CODE>. If <VAR>readable</VAR> is non-zero,
+the list is formatted in such a way that it can be made part of an
+<CODE>inputrc</CODE> file and re-read.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>()</I>
+<DD><A NAME="IDX127"></A>
+Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC28" HREF="readline_toc.html#TOC28">Allowing Undoing</A></H3>
+
+<P>
+Supporting the undo command is a painless thing, and makes your
+functions much more useful. It is certainly easy to try
+something if you know you can undo it. I could use an undo function for
+the stock market.
+
+</P>
+<P>
+If your function simply inserts text once, or deletes text once, and
+uses <CODE>rl_insert_text ()</CODE> or <CODE>rl_delete_text ()</CODE> to do it, then
+undoing is already done for you automatically.
+
+</P>
+<P>
+If you do multiple insertions or multiple deletions, or any combination
+of these operations, you should group them together into one operation.
+This is done with <CODE>rl_begin_undo_group ()</CODE> and
+<CODE>rl_end_undo_group ()</CODE>.
+
+</P>
+<P>
+The types of events that can be undone are:
+
+</P>
+
+<PRE>
+enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
+</PRE>
+
+<P>
+Notice that <CODE>UNDO_DELETE</CODE> means to insert some text, and
+<CODE>UNDO_INSERT</CODE> means to delete some text. That is, the undo code
+tells undo what to undo, not how to undo it. <CODE>UNDO_BEGIN</CODE> and
+<CODE>UNDO_END</CODE> are tags added by <CODE>rl_begin_undo_group ()</CODE> and
+<CODE>rl_end_undo_group ()</CODE>.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>()</I>
+<DD><A NAME="IDX128"></A>
+Begins saving undo information in a group construct. The undo
+information usually comes from calls to <CODE>rl_insert_text ()</CODE> and
+<CODE>rl_delete_text ()</CODE>, but could be the result of calls to
+<CODE>rl_add_undo ()</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>()</I>
+<DD><A NAME="IDX129"></A>
+Closes the current undo group started with <CODE>rl_begin_undo_group
+()</CODE>. There should be one call to <CODE>rl_end_undo_group ()</CODE>
+for each call to <CODE>rl_begin_undo_group ()</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>rl_add_undo</B> <I>(enum undo_code what, int start, int end, char *text)</I>
+<DD><A NAME="IDX130"></A>
+Remember how to undo an event (according to <VAR>what</VAR>). The affected
+text runs from <VAR>start</VAR> to <VAR>end</VAR>, and encompasses <VAR>text</VAR>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>free_undo_list</B> <I>()</I>
+<DD><A NAME="IDX131"></A>
+Free the existing undo list.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_do_undo</B> <I>()</I>
+<DD><A NAME="IDX132"></A>
+Undo the first thing on the undo list. Returns <CODE>0</CODE> if there was
+nothing to undo, non-zero if something was undone.
+</DL>
+
+</P>
+<P>
+Finally, if you neither insert nor delete text, but directly modify the
+existing text (e.g., change its case), call <CODE>rl_modifying ()</CODE>
+once, just before you modify the text. You must supply the indices of
+the text range that you are going to modify.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I>
+<DD><A NAME="IDX133"></A>
+Tell Readline to save the text between <VAR>start</VAR> and <VAR>end</VAR> as a
+single undo unit. It is assumed that you will subsequently modify
+that text.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC29" HREF="readline_toc.html#TOC29">Redisplay</A></H3>
+
+<P>
+<DL>
+<DT><U>Function:</U> void <B>rl_redisplay</B> <I>()</I>
+<DD><A NAME="IDX134"></A>
+Change what's displayed on the screen to reflect the current contents
+of <CODE>rl_line_buffer</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>()</I>
+<DD><A NAME="IDX135"></A>
+Force the line to be updated and redisplayed, whether or not
+Readline thinks the screen display is correct.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_on_new_line</B> <I>()</I>
+<DD><A NAME="IDX136"></A>
+Tell the update routines that we have moved onto a new (empty) line,
+usually after ouputting a newline.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>()</I>
+<DD><A NAME="IDX137"></A>
+Reset the display state to a clean state and redisplay the current line
+starting on a new line.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_message</B> <I>(va_alist)</I>
+<DD><A NAME="IDX138"></A>
+The arguments are a string as would be supplied to <CODE>printf</CODE>. The
+resulting string is displayed in the <STRONG>echo area</STRONG>. The echo area
+is also used to display numeric arguments and search strings.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_clear_message</B> <I>()</I>
+<DD><A NAME="IDX139"></A>
+Clear the message in the echo area.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC30" HREF="readline_toc.html#TOC30">Modifying Text</A></H3>
+
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_insert_text</B> <I>(char *text)</I>
+<DD><A NAME="IDX140"></A>
+Insert <VAR>text</VAR> into the line at the current cursor position.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I>
+<DD><A NAME="IDX141"></A>
+Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I>
+<DD><A NAME="IDX142"></A>
+Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in
+the current line.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I>
+<DD><A NAME="IDX143"></A>
+Copy the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line
+to the kill ring, appending or prepending to the last kill if the
+last command was a kill command. The text is deleted.
+If <VAR>start</VAR> is less than <VAR>end</VAR>,
+the text is appended, otherwise prepended. If the last command was
+not a kill, a new kill ring slot is used.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC31" HREF="readline_toc.html#TOC31">Utility Functions</A></H3>
+
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_read_key</B> <I>()</I>
+<DD><A NAME="IDX144"></A>
+Return the next character available. This handles input inserted into
+the input stream via <VAR>pending input</VAR> (see section <A HREF="readline.html#SEC22">Readline Variables</A>)
+and <CODE>rl_stuff_char ()</CODE>, macros, and characters read from the keyboard.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *)</I>
+<DD><A NAME="IDX145"></A>
+Return the next character available from the keyboard.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I>
+<DD><A NAME="IDX146"></A>
+Insert <VAR>c</VAR> into the Readline input stream. It will be "read"
+before Readline attempts to read characters from the terminal with
+<CODE>rl_read_key ()</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> rl_extend_line_buffer <B>(int</B> <I>len)</I>
+<DD><A NAME="IDX147"></A>
+Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR>
+characters, possibly reallocating it if necessary.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_initialize</B> <I>()</I>
+<DD><A NAME="IDX148"></A>
+Initialize or re-initialize Readline's internal state.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(char *terminal_name)</I>
+<DD><A NAME="IDX149"></A>
+Reinitialize Readline's idea of the terminal settings using
+<VAR>terminal_name</VAR> as the terminal type (e.g., <CODE>vt100</CODE>).
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>alphabetic</B> <I>(int c)</I>
+<DD><A NAME="IDX150"></A>
+Return 1 if <VAR>c</VAR> is an alphabetic character.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>numeric</B> <I>(int c)</I>
+<DD><A NAME="IDX151"></A>
+Return 1 if <VAR>c</VAR> is a numeric character.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>ding</B> <I>()</I>
+<DD><A NAME="IDX152"></A>
+Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>.
+</DL>
+
+</P>
+<P>
+The following are implemented as macros, defined in <CODE>chartypes.h</CODE>.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>uppercase_p</B> <I>(int c)</I>
+<DD><A NAME="IDX153"></A>
+Return 1 if <VAR>c</VAR> is an uppercase alphabetic character.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>lowercase_p</B> <I>(int c)</I>
+<DD><A NAME="IDX154"></A>
+Return 1 if <VAR>c</VAR> is a lowercase alphabetic character.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>digit_p</B> <I>(int c)</I>
+<DD><A NAME="IDX155"></A>
+Return 1 if <VAR>c</VAR> is a numeric character.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>to_upper</B> <I>(int c)</I>
+<DD><A NAME="IDX156"></A>
+If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding
+uppercase character.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>to_lower</B> <I>(int c)</I>
+<DD><A NAME="IDX157"></A>
+If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding
+lowercase character.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>digit_value</B> <I>(int c)</I>
+<DD><A NAME="IDX158"></A>
+If <VAR>c</VAR> is a number, return the value it represents.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC32" HREF="readline_toc.html#TOC32">Alternate Interface</A></H3>
+
+<P>
+An alternate interface is available to plain <CODE>readline()</CODE>. Some
+applications need to interleave keyboard I/O with file, device, or
+window system I/O, typically by using a main loop to <CODE>select()</CODE>
+on various file descriptors. To accomodate this need, readline can
+also be invoked as a `callback' function from an event loop. There
+are functions available to make this easy.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(char *prompt, Vfunction *lhandler)</I>
+<DD><A NAME="IDX159"></A>
+Set up the terminal for readline I/O and display the initial
+expanded value of <VAR>prompt</VAR>. Save the value of <VAR>lhandler</VAR> to
+use as a callback when a complete line of input has been entered.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>()</I>
+<DD><A NAME="IDX160"></A>
+Whenever an application determines that keyboard input is available, it
+should call <CODE>rl_callback_read_char()</CODE>, which will read the next
+character from the current input source. If that character completes the
+line, <CODE>rl_callback_read_char</CODE> will invoke the <VAR>lhandler</VAR>
+function saved by <CODE>rl_callback_handler_install</CODE> to process the
+line. <CODE>EOF</CODE> is indicated by calling <VAR>lhandler</VAR> with a
+<CODE>NULL</CODE> line.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>()</I>
+<DD><A NAME="IDX161"></A>
+Restore the terminal to its initial state and remove the line handler.
+This may be called from within a callback as well as independently.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC33" HREF="readline_toc.html#TOC33">An Example</A></H3>
+
+<P>
+Here is a function which changes lowercase characters to their uppercase
+equivalents, and uppercase characters to lowercase. If
+this function was bound to <SAMP>`M-c'</SAMP>, then typing <SAMP>`M-c'</SAMP> would
+change the case of the character under point. Typing <SAMP>`M-1 0 M-c'</SAMP>
+would change the case of the following 10 characters, leaving the cursor on
+the last character changed.
+
+</P>
+
+<PRE>
+/* Invert the case of the COUNT following characters. */
+int
+invert_case_line (count, key)
+ int count, key;
+{
+ register int start, end, i;
+
+ start = rl_point;
+
+ if (rl_point &#62;= rl_end)
+ return (0);
+
+ if (count &#60; 0)
+ {
+ direction = -1;
+ count = -count;
+ }
+ else
+ direction = 1;
+
+ /* Find the end of the range to modify. */
+ end = start + (count * direction);
+
+ /* Force it to be within range. */
+ if (end &#62; rl_end)
+ end = rl_end;
+ else if (end &#60; 0)
+ end = 0;
+
+ if (start == end)
+ return (0);
+
+ if (start &#62; end)
+ {
+ int temp = start;
+ start = end;
+ end = temp;
+ }
+
+ /* Tell readline that we are modifying the line, so it will save
+ the undo information. */
+ rl_modifying (start, end);
+
+ for (i = start; i != end; i++)
+ {
+ if (uppercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = to_lower (rl_line_buffer[i]);
+ else if (lowercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = to_upper (rl_line_buffer[i]);
+ }
+ /* Move point to on top of the last character changed. */
+ rl_point = (direction == 1) ? end - 1 : start;
+ return (0);
+}
+</PRE>
+
+
+
+<H2><A NAME="SEC34" HREF="readline_toc.html#TOC34">Custom Completers</A></H2>
+
+<P>
+Typically, a program that reads commands from the user has a way of
+disambiguating commands and data. If your program is one of these, then
+it can provide completion for commands, data, or both.
+The following sections describe how your program and Readline
+cooperate to provide this service.
+
+</P>
+
+
+
+<H3><A NAME="SEC35" HREF="readline_toc.html#TOC35">How Completing Works</A></H3>
+
+<P>
+In order to complete some text, the full list of possible completions
+must be available. That is, it is not possible to accurately
+expand a partial word without knowing all of the possible words
+which make sense in that context. The Readline library provides
+the user interface to completion, and two of the most common
+completion functions: filename and username. For completing other types
+of text, you must write your own completion function. This section
+describes exactly what such functions must do, and provides an example.
+
+</P>
+<P>
+There are three major functions used to perform completion:
+
+</P>
+
+<OL>
+<LI>
+
+The user-interface function <CODE>rl_complete ()</CODE>. This function is
+called with the same arguments as other Readline
+functions intended for interactive use: <VAR>count</VAR> and
+<VAR>invoking_key</VAR>. It isolates the word to be completed and calls
+<CODE>completion_matches ()</CODE> to generate a list of possible completions.
+It then either lists the possible completions, inserts the possible
+completions, or actually performs the
+completion, depending on which behavior is desired.
+
+<LI>
+
+The internal function <CODE>completion_matches ()</CODE> uses your
+<STRONG>generator</STRONG> function to generate the list of possible matches, and
+then returns the array of these matches. You should place the address
+of your generator function in <CODE>rl_completion_entry_function</CODE>.
+
+<LI>
+
+The generator function is called repeatedly from
+<CODE>completion_matches ()</CODE>, returning a string each time. The
+arguments to the generator function are <VAR>text</VAR> and <VAR>state</VAR>.
+<VAR>text</VAR> is the partial word to be completed. <VAR>state</VAR> is zero the
+first time the function is called, allowing the generator to perform
+any necessary initialization, and a positive non-zero integer for
+each subsequent call. When the generator function returns
+<CODE>(char *)NULL</CODE> this signals <CODE>completion_matches ()</CODE> that there are
+no more possibilities left. Usually the generator function computes the
+list of possible completions when <VAR>state</VAR> is zero, and returns them
+one at a time on subsequent calls. Each string the generator function
+returns as a match must be allocated with <CODE>malloc()</CODE>; Readline
+frees the strings when it has finished with them.
+
+</OL>
+
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
+<DD><A NAME="IDX162"></A>
+Complete the word at or before point. You have supplied the function
+that does the initial simple matching selection algorithm (see
+<CODE>completion_matches ()</CODE>). The default is to do filename completion.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> Function * <B>rl_completion_entry_function</B>
+<DD><A NAME="IDX163"></A>
+This is a pointer to the generator function for <CODE>completion_matches
+()</CODE>. If the value of <CODE>rl_completion_entry_function</CODE> is
+<CODE>(Function *)NULL</CODE> then the default filename generator function,
+<CODE>filename_completion_function ()</CODE>, is used.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC36" HREF="readline_toc.html#TOC36">Completion Functions</A></H3>
+
+<P>
+Here is the complete list of callable completion functions present in
+Readline.
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I>
+<DD><A NAME="IDX164"></A>
+Complete the word at or before point. <VAR>what_to_do</VAR> says what to do
+with the completion. A value of <SAMP>`?'</SAMP> means list the possible
+completions. <SAMP>`TAB'</SAMP> means do standard completion. <SAMP>`*'</SAMP> means
+insert all of the possible completions. <SAMP>`!'</SAMP> means to display
+all of the possible completions, if there is more than one, as well as
+performing partial completion.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
+<DD><A NAME="IDX165"></A>
+Complete the word at or before point. You have supplied the function
+that does the initial simple matching selection algorithm (see
+<CODE>completion_matches ()</CODE> and <CODE>rl_completion_entry_function</CODE>).
+The default is to do filename
+completion. This calls <CODE>rl_complete_internal ()</CODE> with an
+argument depending on <VAR>invoking_key</VAR>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key))</I>
+<DD><A NAME="IDX166"></A>
+List the possible completions. See description of <CODE>rl_complete
+()</CODE>. This calls <CODE>rl_complete_internal ()</CODE> with an argument of
+<SAMP>`?'</SAMP>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key))</I>
+<DD><A NAME="IDX167"></A>
+Insert the list of possible completions into the line, deleting the
+partially-completed word. See description of <CODE>rl_complete ()</CODE>.
+This calls <CODE>rl_complete_internal ()</CODE> with an argument of <SAMP>`*'</SAMP>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> char ** <B>completion_matches</B> <I>(char *text, CPFunction *entry_func)</I>
+<DD><A NAME="IDX168"></A>
+Returns an array of <CODE>(char *)</CODE> which is a list of completions for
+<VAR>text</VAR>. If there are no completions, returns <CODE>(char **)NULL</CODE>.
+The first entry in the returned array is the substitution for <VAR>text</VAR>.
+The remaining entries are the possible completions. The array is
+terminated with a <CODE>NULL</CODE> pointer.
+
+</P>
+<P>
+<VAR>entry_func</VAR> is a function of two args, and returns a
+<CODE>(char *)</CODE>. The first argument is <VAR>text</VAR>. The second is a
+state argument; it is zero on the first call, and non-zero on subsequent
+calls. <VAR>entry_func</VAR> returns a <CODE>NULL</CODE> pointer to the caller
+when there are no more matches.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> char * <B>filename_completion_function</B> <I>(char *text, int state)</I>
+<DD><A NAME="IDX169"></A>
+A generator function for filename completion in the general case. Note
+that completion in Bash is a little different because of all
+the pathnames that must be followed when looking up completions for a
+command. The Bash source is a useful reference for writing custom
+completion functions.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Function:</U> char * <B>username_completion_function</B> <I>(char *text, int state)</I>
+<DD><A NAME="IDX170"></A>
+A completion generator for usernames. <VAR>text</VAR> contains a partial
+username preceded by a random character (usually <SAMP>`~'</SAMP>). As with all
+completion generators, <VAR>state</VAR> is zero on the first call and non-zero
+for subsequent calls.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC37" HREF="readline_toc.html#TOC37">Completion Variables</A></H3>
+
+<P>
+<DL>
+<DT><U>Variable:</U> Function * <B>rl_completion_entry_function</B>
+<DD><A NAME="IDX171"></A>
+A pointer to the generator function for <CODE>completion_matches ()</CODE>.
+<CODE>NULL</CODE> means to use <CODE>filename_entry_function ()</CODE>, the default
+filename completer.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> CPPFunction * <B>rl_attempted_completion_function</B>
+<DD><A NAME="IDX172"></A>
+A pointer to an alternative function to create matches.
+The function is called with <VAR>text</VAR>, <VAR>start</VAR>, and <VAR>end</VAR>.
+<VAR>start</VAR> and <VAR>end</VAR> are indices in <CODE>rl_line_buffer</CODE> saying
+what the boundaries of <VAR>text</VAR> are. If this function exists and
+returns <CODE>NULL</CODE>, or if this variable is set to <CODE>NULL</CODE>, then
+<CODE>rl_complete ()</CODE> will call the value of
+<CODE>rl_completion_entry_function</CODE> to generate matches, otherwise the
+array of strings returned will be used.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> CPFunction * <B>rl_filename_quoting_function</B>
+<DD><A NAME="IDX173"></A>
+A pointer to a function that will quote a filename in an application-
+specific fashion. This is called if filename completion is being
+attempted and one of the characters in <CODE>rl_filename_quote_characters</CODE>
+appears in a completed filename. The function is called with
+<VAR>text</VAR>, <VAR>match_type</VAR>, and <VAR>quote_pointer</VAR>. The <VAR>text</VAR>
+is the filename to be quoted. The <VAR>match_type</VAR> is either
+<CODE>SINGLE_MATCH</CODE>, if there is only one completion match, or
+<CODE>MULT_MATCH</CODE>. Some functions use this to decide whether or not to
+insert a closing quote character. The <VAR>quote_pointer</VAR> is a pointer
+to any opening quote character the user typed. Some functions choose
+to reset this character.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> CPFunction * <B>rl_filename_dequoting_function</B>
+<DD><A NAME="IDX174"></A>
+A pointer to a function that will remove application-specific quoting
+characters from a filename before completion is attempted, so those
+characters do not interfere with matching the text against names in
+the filesystem. It is called with <VAR>text</VAR>, the text of the word
+to be dequoted, and <VAR>quote_char</VAR>, which is the quoting character
+that delimits the filename (usually <SAMP>`''</SAMP> or <SAMP>`"'</SAMP>). If
+<VAR>quote_char</VAR> is zero, the filename was not in an embedded string.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> Function * <B>rl_char_is_quoted_p</B>
+<DD><A NAME="IDX175"></A>
+A pointer to a function to call that determines whether or not a specific
+character in the line buffer is quoted, according to whatever quoting
+mechanism the program calling readline uses. The function is called with
+two arguments: <VAR>text</VAR>, the text of the line, and <VAR>index</VAR>, the
+index of the character in the line. It is used to decide whether a
+character found in <CODE>rl_completer_word_break_characters</CODE> should be
+used to break words for the completer.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_query_items</B>
+<DD><A NAME="IDX176"></A>
+Up to this many items will be displayed in response to a
+possible-completions call. After that, we ask the user if she is sure
+she wants to see them all. The default value is 100.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_basic_word_break_characters</B>
+<DD><A NAME="IDX177"></A>
+The basic list of characters that signal a break between words for the
+completer routine. The default value of this variable is the characters
+which break words for completion in Bash, i.e.,
+<CODE>" \t\n\"\\'`@$&#62;&#60;=;|&#38;{("</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_basic_quote_characters</B>
+<DD><A NAME="IDX178"></A>
+List of quote characters which can cause a word break.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_completer_word_break_characters</B>
+<DD><A NAME="IDX179"></A>
+The list of characters that signal a break between words for
+<CODE>rl_complete_internal ()</CODE>. The default list is the value of
+<CODE>rl_basic_word_break_characters</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_completer_quote_characters</B>
+<DD><A NAME="IDX180"></A>
+List of characters which can be used to quote a substring of the line.
+Completion occurs on the entire substring, and within the substring
+<CODE>rl_completer_word_break_characters</CODE> are treated as any other character,
+unless they also appear within this list.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_filename_quote_characters</B>
+<DD><A NAME="IDX181"></A>
+A list of characters that cause a filename to be quoted by the completer
+when they appear in a completed filename. The default is empty.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_special_prefixes</B>
+<DD><A NAME="IDX182"></A>
+The list of characters that are word break characters, but should be
+left in <VAR>text</VAR> when it is passed to the completion function.
+Programs can use this to help determine what kind of completing to do.
+For instance, Bash sets this variable to "$@" so that it can complete
+shell variables and hostnames.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_append_character</B>
+<DD><A NAME="IDX183"></A>
+When a single completion alternative matches at the end of the command
+line, this character is appended to the inserted completion text. The
+default is a space character (<SAMP>` '</SAMP>). Setting this to the null
+character (<SAMP>`\0'</SAMP>) prevents anything being appended automatically.
+This can be changed in custom completion functions to
+provide the "most sensible word separator character" according to
+an application-specific command line syntax specification.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B>
+<DD><A NAME="IDX184"></A>
+If non-zero, then disallow duplicates in the matches. Default is 1.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>rl_filename_completion_desired</B>
+<DD><A NAME="IDX185"></A>
+Non-zero means that the results of the matches are to be treated as
+filenames. This is <EM>always</EM> zero on entry, and can only be changed
+within a completion entry generator function. If it is set to a non-zero
+value, directory names have a slash appended and Readline attempts to
+quote completed filenames if they contain any embedded word break
+characters.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B>
+<DD><A NAME="IDX186"></A>
+Non-zero means that the results of the matches are to be quoted using
+double quotes (or an application-specific quoting mechanism) if the
+completed filename contains any characters in
+<CODE>rl_filename_quote_chars</CODE>. This is <EM>always</EM> non-zero
+on entry, and can only be changed within a completion entry generator
+function. The quoting is effected via a call to the function pointed to
+by <CODE>rl_filename_quoting_function</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> int <B>rl_inhibit_completion</B>
+<DD><A NAME="IDX187"></A>
+If this variable is non-zero, completion is inhibit&#60;ed. The completion
+character will be inserted as any other bound to <CODE>self-insert</CODE>.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> Function * <B>rl_ignore_some_completions_function</B>
+<DD><A NAME="IDX188"></A>
+This function, if defined, is called by the completer when real filename
+completion is done, after all the matching names have been generated.
+It is passed a <CODE>NULL</CODE> terminated array of matches.
+The first element (<CODE>matches[0]</CODE>) is the
+maximal substring common to all matches. This function can
+re-arrange the list of matches as required, but each element deleted
+from the array must be freed.
+</DL>
+
+</P>
+<P>
+<DL>
+<DT><U>Variable:</U> Function * <B>rl_directory_completion_hook</B>
+<DD><A NAME="IDX189"></A>
+This function, if defined, is allowed to modify the directory portion
+of filenames Readline completes. It is called with the address of a
+string (the current directory name) as an argument. It could be used
+to expand symbolic links or shell variables in pathnames.
+</DL>
+
+</P>
+
+
+<H3><A NAME="SEC38" HREF="readline_toc.html#TOC38">A Short Completion Example</A></H3>
+
+<P>
+Here is a small application demonstrating the use of the GNU Readline
+library. It is called <CODE>fileman</CODE>, and the source code resides in
+<TT>`examples/fileman.c'</TT>. This sample application provides
+completion of command names, line editing features, and access to the
+history list.
+
+</P>
+
+<PRE>
+/* fileman.c -- A tiny application which demonstrates how to use the
+ GNU Readline library. This application interactively allows users
+ to manipulate files and their modes. */
+
+#include &#60;stdio.h&#62;
+#include &#60;sys/types.h&#62;
+#include &#60;sys/file.h&#62;
+#include &#60;sys/stat.h&#62;
+#include &#60;sys/errno.h&#62;
+
+#include &#60;readline/readline.h&#62;
+#include &#60;readline/history.h&#62;
+
+extern char *getwd ();
+extern char *xmalloc ();
+
+/* The names of functions that actually do the manipulation. */
+int com_list (), com_view (), com_rename (), com_stat (), com_pwd ();
+int com_delete (), com_help (), com_cd (), com_quit ();
+
+/* A structure which contains information on the commands this program
+ can understand. */
+
+typedef struct {
+ char *name; /* User printable name of the function. */
+ Function *func; /* Function to call to do the job. */
+ char *doc; /* Documentation for this function. */
+} COMMAND;
+
+COMMAND commands[] = {
+ { "cd", com_cd, "Change to directory DIR" },
+ { "delete", com_delete, "Delete FILE" },
+ { "help", com_help, "Display this text" },
+ { "?", com_help, "Synonym for `help'" },
+ { "list", com_list, "List files in DIR" },
+ { "ls", com_list, "Synonym for `list'" },
+ { "pwd", com_pwd, "Print the current working directory" },
+ { "quit", com_quit, "Quit using Fileman" },
+ { "rename", com_rename, "Rename FILE to NEWNAME" },
+ { "stat", com_stat, "Print out statistics on FILE" },
+ { "view", com_view, "View the contents of FILE" },
+ { (char *)NULL, (Function *)NULL, (char *)NULL }
+};
+
+/* Forward declarations. */
+char *stripwhite ();
+COMMAND *find_command ();
+
+/* The name of this program, as taken from argv[0]. */
+char *progname;
+
+/* When non-zero, this global means the user is done using this program. */
+int done;
+
+char *
+dupstr (s)
+ int s;
+{
+ char *r;
+
+ r = xmalloc (strlen (s) + 1);
+ strcpy (r, s);
+ return (r);
+}
+
+main (argc, argv)
+ int argc;
+ char **argv;
+{
+ char *line, *s;
+
+ progname = argv[0];
+
+ initialize_readline (); /* Bind our completer. */
+
+ /* Loop reading and executing lines until the user quits. */
+ for ( ; done == 0; )
+ {
+ line = readline ("FileMan: ");
+
+ if (!line)
+ break;
+
+ /* Remove leading and trailing whitespace from the line.
+ Then, if there is anything left, add it to the history list
+ and execute it. */
+ s = stripwhite (line);
+
+ if (*s)
+ {
+ add_history (s);
+ execute_line (s);
+ }
+
+ free (line);
+ }
+ exit (0);
+}
+
+/* Execute a command line. */
+int
+execute_line (line)
+ char *line;
+{
+ register int i;
+ COMMAND *command;
+ char *word;
+
+ /* Isolate the command word. */
+ i = 0;
+ while (line[i] &#38;&#38; whitespace (line[i]))
+ i++;
+ word = line + i;
+
+ while (line[i] &#38;&#38; !whitespace (line[i]))
+ i++;
+
+ if (line[i])
+ line[i++] = '\0';
+
+ command = find_command (word);
+
+ if (!command)
+ {
+ fprintf (stderr, "%s: No such command for FileMan.\n", word);
+ return (-1);
+ }
+
+ /* Get argument to command, if any. */
+ while (whitespace (line[i]))
+ i++;
+
+ word = line + i;
+
+ /* Call the function. */
+ return ((*(command-&#62;func)) (word));
+}
+
+/* Look up NAME as the name of a command, and return a pointer to that
+ command. Return a NULL pointer if NAME isn't a command name. */
+COMMAND *
+find_command (name)
+ char *name;
+{
+ register int i;
+
+ for (i = 0; commands[i].name; i++)
+ if (strcmp (name, commands[i].name) == 0)
+ return (&#38;commands[i]);
+
+ return ((COMMAND *)NULL);
+}
+
+/* Strip whitespace from the start and end of STRING. Return a pointer
+ into STRING. */
+char *
+stripwhite (string)
+ char *string;
+{
+ register char *s, *t;
+
+ for (s = string; whitespace (*s); s++)
+ ;
+
+ if (*s == 0)
+ return (s);
+
+ t = s + strlen (s) - 1;
+ while (t &#62; s &#38;&#38; whitespace (*t))
+ t--;
+ *++t = '\0';
+
+ return s;
+}
+
+/* **************************************************************** */
+/* */
+/* Interface to Readline Completion */
+/* */
+/* **************************************************************** */
+
+char *command_generator ();
+char **fileman_completion ();
+
+/* Tell the GNU Readline library how to complete. We want to try to complete
+ on command names if this is the first word in the line, or on filenames
+ if not. */
+initialize_readline ()
+{
+ /* Allow conditional parsing of the ~/.inputrc file. */
+ rl_readline_name = "FileMan";
+
+ /* Tell the completer that we want a crack first. */
+ rl_attempted_completion_function = (CPPFunction *)fileman_completion;
+}
+
+/* Attempt to complete on the contents of TEXT. START and END bound the
+ region of rl_line_buffer that contains the word to complete. TEXT is
+ the word to complete. We can use the entire contents of rl_line_buffer
+ in case we want to do some simple parsing. Return the array of matches,
+ or NULL if there aren't any. */
+char **
+fileman_completion (text, start, end)
+ char *text;
+ int start, end;
+{
+ char **matches;
+
+ matches = (char **)NULL;
+
+ /* If this word is at the start of the line, then it is a command
+ to complete. Otherwise it is the name of a file in the current
+ directory. */
+ if (start == 0)
+ matches = completion_matches (text, command_generator);
+
+ return (matches);
+}
+
+/* Generator function for command completion. STATE lets us know whether
+ to start from scratch; without any state (i.e. STATE == 0), then we
+ start at the top of the list. */
+char *
+command_generator (text, state)
+ char *text;
+ int state;
+{
+ static int list_index, len;
+ char *name;
+
+ /* If this is a new word to complete, initialize now. This includes
+ saving the length of TEXT for efficiency, and initializing the index
+ variable to 0. */
+ if (!state)
+ {
+ list_index = 0;
+ len = strlen (text);
+ }
+
+ /* Return the next name which partially matches from the command list. */
+ while (name = commands[list_index].name)
+ {
+ list_index++;
+
+ if (strncmp (name, text, len) == 0)
+ return (dupstr(name));
+ }
+
+ /* If no names matched, then return NULL. */
+ return ((char *)NULL);
+}
+
+/* **************************************************************** */
+/* */
+/* FileMan Commands */
+/* */
+/* **************************************************************** */
+
+/* String to pass to system (). This is for the LIST, VIEW and RENAME
+ commands. */
+static char syscom[1024];
+
+/* List the file(s) named in arg. */
+com_list (arg)
+ char *arg;
+{
+ if (!arg)
+ arg = "";
+
+ sprintf (syscom, "ls -FClg %s", arg);
+ return (system (syscom));
+}
+
+com_view (arg)
+ char *arg;
+{
+ if (!valid_argument ("view", arg))
+ return 1;
+
+ sprintf (syscom, "more %s", arg);
+ return (system (syscom));
+}
+
+com_rename (arg)
+ char *arg;
+{
+ too_dangerous ("rename");
+ return (1);
+}
+
+com_stat (arg)
+ char *arg;
+{
+ struct stat finfo;
+
+ if (!valid_argument ("stat", arg))
+ return (1);
+
+ if (stat (arg, &#38;finfo) == -1)
+ {
+ perror (arg);
+ return (1);
+ }
+
+ printf ("Statistics for `%s':\n", arg);
+
+ printf ("%s has %d link%s, and is %d byte%s in length.\n", arg,
+ finfo.st_nlink,
+ (finfo.st_nlink == 1) ? "" : "s",
+ finfo.st_size,
+ (finfo.st_size == 1) ? "" : "s");
+ printf ("Inode Last Change at: %s", ctime (&#38;finfo.st_ctime));
+ printf (" Last access at: %s", ctime (&#38;finfo.st_atime));
+ printf (" Last modified at: %s", ctime (&#38;finfo.st_mtime));
+ return (0);
+}
+
+com_delete (arg)
+ char *arg;
+{
+ too_dangerous ("delete");
+ return (1);
+}
+
+/* Print out help for ARG, or for all of the commands if ARG is
+ not present. */
+com_help (arg)
+ char *arg;
+{
+ register int i;
+ int printed = 0;
+
+ for (i = 0; commands[i].name; i++)
+ {
+ if (!*arg || (strcmp (arg, commands[i].name) == 0))
+ {
+ printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
+ printed++;
+ }
+ }
+
+ if (!printed)
+ {
+ printf ("No commands match `%s'. Possibilties are:\n", arg);
+
+ for (i = 0; commands[i].name; i++)
+ {
+ /* Print in six columns. */
+ if (printed == 6)
+ {
+ printed = 0;
+ printf ("\n");
+ }
+
+ printf ("%s\t", commands[i].name);
+ printed++;
+ }
+
+ if (printed)
+ printf ("\n");
+ }
+ return (0);
+}
+
+/* Change to the directory ARG. */
+com_cd (arg)
+ char *arg;
+{
+ if (chdir (arg) == -1)
+ {
+ perror (arg);
+ return 1;
+ }
+
+ com_pwd ("");
+ return (0);
+}
+
+/* Print out the current working directory. */
+com_pwd (ignore)
+ char *ignore;
+{
+ char dir[1024], *s;
+
+ s = getwd (dir);
+ if (s == 0)
+ {
+ printf ("Error getting pwd: %s\n", dir);
+ return 1;
+ }
+
+ printf ("Current directory is %s\n", dir);
+ return 0;
+}
+
+/* The user wishes to quit using this program. Just set DONE non-zero. */
+com_quit (arg)
+ char *arg;
+{
+ done = 1;
+ return (0);
+}
+
+/* Function which tells you that you can't do this. */
+too_dangerous (caller)
+ char *caller;
+{
+ fprintf (stderr,
+ "%s: Too dangerous for me to distribute. Write it yourself.\n",
+ caller);
+}
+
+/* Return non-zero if ARG is a valid argument for CALLER, else print
+ an error message and return zero. */
+int
+valid_argument (caller, arg)
+ char *caller, *arg;
+{
+ if (!arg || !*arg)
+ {
+ fprintf (stderr, "%s: Argument required.\n", caller);
+ return (0);
+ }
+
+ return (1);
+}
+</PRE>
+
+
+
+<H1><A NAME="SEC39" HREF="readline_toc.html#TOC39">Concept Index</A></H1>
+<P>
+<H2>i</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX1">interaction, readline</A>
+</DIR>
+<H2>r</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX87">readline, function</A>
+</DIR>
+
+</P>
+
+
+<H1><A NAME="SEC40" HREF="readline_toc.html#TOC40">Function and Variable Index</A></H1>
+<P>
+<H2>(</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX147">(int</A>
+</DIR>
+<H2>a</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX72">abort (C-g)</A>
+<LI><A HREF="readline.html#IDX26">accept-line (Newline, Return)</A>
+<LI><A HREF="readline.html#IDX150">alphabetic</A>
+</DIR>
+<H2>b</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX21">backward-char (C-b)</A>
+<LI><A HREF="readline.html#IDX40">backward-delete-char (Rubout)</A>
+<LI><A HREF="readline.html#IDX50">backward-kill-line (C-x Rubout)</A>
+<LI><A HREF="readline.html#IDX54">backward-kill-word (M-DEL)</A>
+<LI><A HREF="readline.html#IDX23">backward-word (M-b)</A>
+<LI><A HREF="readline.html#IDX29">beginning-of-history (M-&#38;#60;)</A>
+<LI><A HREF="readline.html#IDX18">beginning-of-line (C-a)</A>
+<LI><A HREF="readline.html#IDX2">bell-style</A>
+</DIR>
+<H2>c</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX70">call-last-kbd-macro (C-x e)</A>
+<LI><A HREF="readline.html#IDX48">capitalize-word (M-c)</A>
+<LI><A HREF="readline.html#IDX80">character-search (C-])</A>
+<LI><A HREF="readline.html#IDX81">character-search-backward (M-C-])</A>
+<LI><A HREF="readline.html#IDX24">clear-screen (C-l)</A>
+<LI><A HREF="readline.html#IDX3">comment-begin</A>
+<LI><A HREF="readline.html#IDX65">complete (TAB)</A>
+<LI><A HREF="readline.html#IDX4">completion-query-items</A>
+<LI><A HREF="readline.html#IDX168">completion_matches</A>
+<LI><A HREF="readline.html#IDX5">convert-meta</A>
+<LI><A HREF="readline.html#IDX59">copy-backward-word ()</A>
+<LI><A HREF="readline.html#IDX60">copy-forward-word ()</A>
+<LI><A HREF="readline.html#IDX58">copy-region-as-kill ()</A>
+</DIR>
+<H2>d</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX39">delete-char (C-d)</A>
+<LI><A HREF="readline.html#IDX56">delete-horizontal-space ()</A>
+<LI><A HREF="readline.html#IDX63">digit-argument (M-0, M-1, ... M--)</A>
+<LI><A HREF="readline.html#IDX155">digit_p</A>
+<LI><A HREF="readline.html#IDX158">digit_value</A>
+<LI><A HREF="readline.html#IDX152">ding</A>
+<LI><A HREF="readline.html#IDX6">disable-completion</A>
+<LI><A HREF="readline.html#IDX73">do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, ...)</A>
+<LI><A HREF="readline.html#IDX47">downcase-word (M-l)</A>
+<LI><A HREF="readline.html#IDX83">dump-functions ()</A>
+<LI><A HREF="readline.html#IDX85">dump-macros ()</A>
+<LI><A HREF="readline.html#IDX84">dump-variables ()</A>
+</DIR>
+<H2>e</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX7">editing-mode</A>
+<LI><A HREF="readline.html#IDX8">enable-keypad</A>
+<LI><A HREF="readline.html#IDX69">end-kbd-macro (C-x ))</A>
+<LI><A HREF="readline.html#IDX30">end-of-history (M-&#38;#62;)</A>
+<LI><A HREF="readline.html#IDX19">end-of-line (C-e)</A>
+<LI><A HREF="readline.html#IDX79">exchange-point-and-mark (C-x C-x)</A>
+<LI><A HREF="readline.html#IDX9">expand-tilde</A>
+</DIR>
+<H2>f</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX169">filename_completion_function</A>
+<LI><A HREF="readline.html#IDX20">forward-char (C-f)</A>
+<LI><A HREF="readline.html#IDX32">forward-search-history (C-s)</A>
+<LI><A HREF="readline.html#IDX22">forward-word (M-f)</A>
+<LI><A HREF="readline.html#IDX131">free_undo_list</A>
+</DIR>
+<H2>h</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX36">history-search-backward ()</A>
+<LI><A HREF="readline.html#IDX35">history-search-forward ()</A>
+<LI><A HREF="readline.html#IDX10">horizontal-scroll-mode</A>
+</DIR>
+<H2>i</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX13">input-meta</A>
+<LI><A HREF="readline.html#IDX82">insert-comment (M-#)</A>
+<LI><A HREF="readline.html#IDX67">insert-completions (M-*)</A>
+</DIR>
+<H2>k</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX11">keymap</A>
+<LI><A HREF="readline.html#IDX49">kill-line (C-k)</A>
+<LI><A HREF="readline.html#IDX57">kill-region ()</A>
+<LI><A HREF="readline.html#IDX52">kill-whole-line ()</A>
+<LI><A HREF="readline.html#IDX53">kill-word (M-d)</A>
+</DIR>
+<H2>l</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX154">lowercase_p</A>
+</DIR>
+<H2>m</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX12">mark-modified-lines</A>
+<LI><A HREF="readline.html#IDX14">meta-flag</A>
+</DIR>
+<H2>n</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX28">next-history (C-n)</A>
+<LI><A HREF="readline.html#IDX34">non-incremental-forward-search-history (M-n)</A>
+<LI><A HREF="readline.html#IDX33">non-incremental-reverse-search-history (M-p)</A>
+<LI><A HREF="readline.html#IDX151">numeric</A>
+</DIR>
+<H2>o</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX15">output-meta</A>
+</DIR>
+<H2>p</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX66">possible-completions (M-?)</A>
+<LI><A HREF="readline.html#IDX74">prefix-meta (ESC)</A>
+<LI><A HREF="readline.html#IDX27">previous-history (C-p)</A>
+</DIR>
+<H2>q</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX41">quoted-insert (C-q, C-v)</A>
+</DIR>
+<H2>r</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX71">re-read-init-file (C-x C-r)</A>
+<LI><A HREF="readline.html#IDX86">readline</A>
+<LI><A HREF="readline.html#IDX25">redraw-current-line ()</A>
+<LI><A HREF="readline.html#IDX31">reverse-search-history (C-r)</A>
+<LI><A HREF="readline.html#IDX76">revert-line (M-r)</A>
+<LI><A HREF="readline.html#IDX106">rl_add_defun</A>
+<LI><A HREF="readline.html#IDX130">rl_add_undo</A>
+<LI><A HREF="readline.html#IDX172">rl_attempted_completion_function</A>
+<LI><A HREF="readline.html#IDX178">rl_basic_quote_characters</A>
+<LI><A HREF="readline.html#IDX177">rl_basic_word_break_characters</A>
+<LI><A HREF="readline.html#IDX128">rl_begin_undo_group</A>
+<LI><A HREF="readline.html#IDX115">rl_bind_key</A>
+<LI><A HREF="readline.html#IDX116">rl_bind_key_in_map</A>
+<LI><A HREF="readline.html#IDX105">rl_binding_keymap</A>
+<LI><A HREF="readline.html#IDX159">rl_callback_handler_install</A>
+<LI><A HREF="readline.html#IDX161">rl_callback_handler_remove</A>
+<LI><A HREF="readline.html#IDX160">rl_callback_read_char</A>
+<LI><A HREF="readline.html#IDX175">rl_char_is_quoted_p</A>
+<LI><A HREF="readline.html#IDX139">rl_clear_message</A>
+<LI><A HREF="readline.html#IDX162">rl_complete</A>, <A HREF="rlman.html#IDX165">rl_complete</A>
+<LI><A HREF="readline.html#IDX164">rl_complete_internal</A>
+<LI><A HREF="readline.html#IDX180">rl_completer_quote_characters</A>
+<LI><A HREF="readline.html#IDX179">rl_completer_word_break_characters</A>
+<LI><A HREF="readline.html#IDX183">rl_completion_append_character</A>
+<LI><A HREF="readline.html#IDX163">rl_completion_entry_function</A>, <A HREF="rlman.html#IDX171">rl_completion_entry_function</A>
+<LI><A HREF="readline.html#IDX176">rl_completion_query_items</A>
+<LI><A HREF="readline.html#IDX108">rl_copy_keymap</A>
+<LI><A HREF="readline.html#IDX142">rl_copy_text</A>
+<LI><A HREF="readline.html#IDX141">rl_delete_text</A>
+<LI><A HREF="readline.html#IDX189">rl_directory_completion_hook</A>
+<LI><A HREF="readline.html#IDX110">rl_discard_keymap</A>
+<LI><A HREF="readline.html#IDX132">rl_do_undo</A>
+<LI><A HREF="readline.html#IDX92">rl_done</A>
+<LI><A HREF="readline.html#IDX90">rl_end</A>
+<LI><A HREF="readline.html#IDX129">rl_end_undo_group</A>
+<LI><A HREF="readline.html#IDX101">rl_event_hook</A>
+<LI><A HREF="readline.html#IDX104">rl_executing_keymap</A>
+<LI><A HREF="readline.html#IDX185">rl_filename_completion_desired</A>
+<LI><A HREF="readline.html#IDX174">rl_filename_dequoting_function</A>
+<LI><A HREF="readline.html#IDX181">rl_filename_quote_characters</A>
+<LI><A HREF="readline.html#IDX186">rl_filename_quoting_desired</A>
+<LI><A HREF="readline.html#IDX173">rl_filename_quoting_function</A>
+<LI><A HREF="readline.html#IDX135">rl_forced_update_display</A>
+<LI><A HREF="readline.html#IDX126">rl_function_dumper</A>
+<LI><A HREF="readline.html#IDX123">rl_function_of_keyseq</A>
+<LI><A HREF="readline.html#IDX119">rl_generic_bind</A>
+<LI><A HREF="readline.html#IDX111">rl_get_keymap</A>
+<LI><A HREF="readline.html#IDX113">rl_get_keymap_by_name</A>
+<LI><A HREF="readline.html#IDX114">rl_get_keymap_name</A>
+<LI><A HREF="readline.html#IDX145">rl_getc</A>
+<LI><A HREF="readline.html#IDX102">rl_getc_function</A>
+<LI><A HREF="readline.html#IDX184">rl_ignore_completion_duplicates</A>
+<LI><A HREF="readline.html#IDX188">rl_ignore_some_completions_function</A>
+<LI><A HREF="readline.html#IDX187">rl_inhibit_completion</A>
+<LI><A HREF="readline.html#IDX148">rl_initialize</A>
+<LI><A HREF="readline.html#IDX167">rl_insert_completions</A>
+<LI><A HREF="readline.html#IDX140">rl_insert_text</A>
+<LI><A HREF="readline.html#IDX98">rl_instream</A>
+<LI><A HREF="readline.html#IDX124">rl_invoking_keyseqs</A>
+<LI><A HREF="readline.html#IDX125">rl_invoking_keyseqs_in_map</A>
+<LI><A HREF="readline.html#IDX143">rl_kill_text</A>
+<LI><A HREF="readline.html#IDX95">rl_library_version</A>
+<LI><A HREF="readline.html#IDX88">rl_line_buffer</A>
+<LI><A HREF="readline.html#IDX127">rl_list_funmap_names</A>
+<LI><A HREF="readline.html#IDX107">rl_make_bare_keymap</A>
+<LI><A HREF="readline.html#IDX109">rl_make_keymap</A>
+<LI><A HREF="readline.html#IDX91">rl_mark</A>
+<LI><A HREF="readline.html#IDX138">rl_message</A>
+<LI><A HREF="readline.html#IDX133">rl_modifying</A>
+<LI><A HREF="readline.html#IDX122">rl_named_function</A>
+<LI><A HREF="readline.html#IDX136">rl_on_new_line</A>
+<LI><A HREF="readline.html#IDX99">rl_outstream</A>
+<LI><A HREF="readline.html#IDX120">rl_parse_and_bind</A>
+<LI><A HREF="readline.html#IDX93">rl_pending_input</A>
+<LI><A HREF="readline.html#IDX89">rl_point</A>
+<LI><A HREF="readline.html#IDX166">rl_possible_completions</A>
+<LI><A HREF="readline.html#IDX94">rl_prompt</A>
+<LI><A HREF="readline.html#IDX121">rl_read_init_file</A>
+<LI><A HREF="readline.html#IDX144">rl_read_key</A>
+<LI><A HREF="readline.html#IDX97">rl_readline_name</A>
+<LI><A HREF="readline.html#IDX134">rl_redisplay</A>
+<LI><A HREF="readline.html#IDX103">rl_redisplay_function</A>
+<LI><A HREF="readline.html#IDX137">rl_reset_line_state</A>
+<LI><A HREF="readline.html#IDX149">rl_reset_terminal</A>
+<LI><A HREF="readline.html#IDX112">rl_set_keymap</A>
+<LI><A HREF="readline.html#IDX182">rl_special_prefixes</A>
+<LI><A HREF="readline.html#IDX100">rl_startup_hook</A>
+<LI><A HREF="readline.html#IDX146">rl_stuff_char</A>
+<LI><A HREF="readline.html#IDX96">rl_terminal_name</A>
+<LI><A HREF="readline.html#IDX117">rl_unbind_key</A>
+<LI><A HREF="readline.html#IDX118">rl_unbind_key_in_map</A>
+</DIR>
+<H2>s</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX43">self-insert (a, b, A, 1, !, ...)</A>
+<LI><A HREF="readline.html#IDX78">set-mark (C-@)</A>
+<LI><A HREF="readline.html#IDX16">show-all-if-ambiguous</A>
+<LI><A HREF="readline.html#IDX68">start-kbd-macro (C-x ()</A>
+</DIR>
+<H2>t</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX42">tab-insert (M-TAB)</A>
+<LI><A HREF="readline.html#IDX77">tilde-expand (M-~)</A>
+<LI><A HREF="readline.html#IDX157">to_lower</A>
+<LI><A HREF="readline.html#IDX156">to_upper</A>
+<LI><A HREF="readline.html#IDX44">transpose-chars (C-t)</A>
+<LI><A HREF="readline.html#IDX45">transpose-words (M-t)</A>
+</DIR>
+<H2>u</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX75">undo (C-_, C-x C-u)</A>
+<LI><A HREF="readline.html#IDX64">universal-argument ()</A>
+<LI><A HREF="readline.html#IDX51">unix-line-discard (C-u)</A>
+<LI><A HREF="readline.html#IDX55">unix-word-rubout (C-w)</A>
+<LI><A HREF="readline.html#IDX46">upcase-word (M-u)</A>
+<LI><A HREF="readline.html#IDX153">uppercase_p</A>
+<LI><A HREF="readline.html#IDX170">username_completion_function</A>
+</DIR>
+<H2>v</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX17">visible-stats</A>
+</DIR>
+<H2>y</H2>
+<DIR>
+<LI><A HREF="readline.html#IDX61">yank (C-y)</A>
+<LI><A HREF="readline.html#IDX38">yank-last-arg (M-., M-_)</A>
+<LI><A HREF="readline.html#IDX37">yank-nth-arg (M-C-y)</A>
+<LI><A HREF="readline.html#IDX62">yank-pop (M-y)</A>
+</DIR>
+
+</P>
+<P><HR><P>
+This document was generated on 3 June 1997 using the
+<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
+translator version 1.51.</P>
+</BODY>
+</HTML>
diff --git a/doc/readline.info b/doc/readline.info
index f4882e9..3e44460 100644
--- a/doc/readline.info
+++ b/doc/readline.info
@@ -1,5 +1,5 @@
This is Info file readline.info, produced by Makeinfo-1.55 from the
-input file rlman.texinfo.
+input file /usr/homes/chet/src/bash/readline-2.1/doc/rlman.texinfo.
This document describes the GNU Readline Library, a utility which
aids in the consistency of user interface across discrete programs that
@@ -22,53 +22,2744 @@ versions, except that this permission notice may be stated in a
translation approved by the Foundation.

-Indirect:
-readline.info-1: 1000
-readline.info-2: 50467
+File: readline.info, Node: Top, Next: Command Line Editing, Prev: (DIR), Up: (DIR)
+
+GNU Readline Library
+********************
+
+ This document describes the GNU Readline Library, a utility which
+aids in the consistency of user interface across discrete programs that
+need to provide a command line interface.
+
+* Menu:
+
+* Command Line Editing:: GNU Readline User's Manual.
+* Programming with GNU Readline:: GNU Readline Programmer's Manual.
+* Concept Index:: Index of concepts described in this manual.
+* Function and Variable Index:: Index of externally visible functions
+ and variables.
+
+
+File: readline.info, Node: Command Line Editing, Next: Programming with GNU Readline, Prev: Top, Up: Top
+
+Command Line Editing
+********************
+
+ This chapter describes the basic features of the GNU command line
+editing interface.
+
+* Menu:
+
+* Introduction and Notation:: Notation used in this text.
+* Readline Interaction:: The minimum set of commands for editing a line.
+* Readline Init File:: Customizing Readline from a user's view.
+* Bindable Readline Commands:: A description of most of the Readline commands
+ available for binding
+* Readline vi Mode:: A short description of how to make Readline
+ behave like the vi editor.
+
+
+File: readline.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
+
+Introduction to Line Editing
+============================
+
+ The following paragraphs describe the notation used to represent
+keystrokes.
+
+ The text C-k is read as `Control-K' and describes the character
+produced when the k key is pressed while the Control key is depressed.
+
+ The text M-k is read as `Meta-K' and describes the character
+produced when the meta key (if you have one) is depressed, and the k
+key is pressed. If you do not have a meta key, the identical keystroke
+can be generated by typing ESC first, and then typing k. Either
+process is known as "metafying" the k key.
+
+ The text M-C-k is read as `Meta-Control-k' and describes the
+character produced by "metafying" C-k.
+
+ In addition, several keys have their own names. Specifically, DEL,
+ESC, LFD, SPC, RET, and TAB all stand for themselves when seen in this
+text, or in an init file (*note Readline Init File::.).
+
+
+File: readline.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
+
+Readline Interaction
+====================
+
+ Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press RETURN. You do not have to be at the end of
+the line to press RETURN; the entire line is accepted regardless of the
+location of the cursor within the line.
+
+* Menu:
+
+* Readline Bare Essentials:: The least you need to know about Readline.
+* Readline Movement Commands:: Moving about the input line.
+* Readline Killing Commands:: How to delete text, and how to get it back!
+* Readline Arguments:: Giving numeric arguments to commands.
+* Searching:: Searching through previous lines.
+
+
+File: readline.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
+
+Readline Bare Essentials
+------------------------
+
+ In order to enter characters into the line, simply type them. The
+typed character appears where the cursor was, and then the cursor moves
+one space to the right. If you mistype a character, you can use your
+erase character to back up and delete the mistyped character.
+
+ Sometimes you may miss typing a character that you wanted to type,
+and not notice your error until you have typed several other
+characters. In that case, you can type C-b to move the cursor to the
+left, and then correct your mistake. Afterwards, you can move the
+cursor to the right with C-f.
+
+ When you add text in the middle of a line, you will notice that
+characters to the right of the cursor are `pushed over' to make room
+for the text that you have inserted. Likewise, when you delete text
+behind the cursor, characters to the right of the cursor are `pulled
+back' to fill in the blank space created by the removal of the text. A
+list of the basic bare essentials for editing the text of an input line
+follows.
+
+C-b
+ Move back one character.
+
+C-f
+ Move forward one character.
+
+DEL
+ Delete the character to the left of the cursor.
+
+C-d
+ Delete the character underneath the cursor.
+
+Printing characters
+ Insert the character into the line at the cursor.
+
+C-_
+ Undo the last thing that you did. You can undo all the way back
+ to an empty line.
+
+
+File: readline.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
+
+Readline Movement Commands
+--------------------------
+
+ The above table describes the most basic possible keystrokes that
+you need in order to do editing of the input line. For your
+convenience, many other commands have been added in addition to C-b,
+C-f, C-d, and DEL. Here are some commands for moving more rapidly
+about the line.
+
+C-a
+ Move to the start of the line.
+
+C-e
+ Move to the end of the line.
+
+M-f
+ Move forward a word.
+
+M-b
+ Move backward a word.
+
+C-l
+ Clear the screen, reprinting the current line at the top.
+
+ Notice how C-f moves forward a character, while M-f moves forward a
+word. It is a loose convention that control keystrokes operate on
+characters while meta keystrokes operate on words.
+
+
+File: readline.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
+
+Readline Killing Commands
+-------------------------
+
+ "Killing" text means to delete the text from the line, but to save
+it away for later use, usually by "yanking" (re-inserting) it back into
+the line. If the description for a command says that it `kills' text,
+then you can be sure that you can get the text back in a different (or
+the same) place later.
+
+ When you use a kill command, the text is saved in a "kill-ring".
+Any number of consecutive kills save all of the killed text together, so
+that when you yank it back, you get it all. The kill ring is not line
+specific; the text that you killed on a previously typed line is
+available to be yanked back later, when you are typing another line.
+
+ Here is the list of commands for killing text.
+
+C-k
+ Kill the text from the current cursor position to the end of the
+ line.
+
+M-d
+ Kill from the cursor to the end of the current word, or if between
+ words, to the end of the next word.
+
+M-DEL
+ Kill from the cursor the start of the previous word, or if between
+ words, to the start of the previous word.
+
+C-w
+ Kill from the cursor to the previous whitespace. This is
+ different than M-DEL because the word boundaries differ.
+
+ And, here is how to "yank" the text back into the line. Yanking
+means to copy the most-recently-killed text from the kill buffer.
+
+C-y
+ Yank the most recently killed text back into the buffer at the
+ cursor.
+
+M-y
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is C-y or M-y.
+
+
+File: readline.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
+
+Readline Arguments
+------------------
+
+ You can pass numeric arguments to Readline commands. Sometimes the
+argument acts as a repeat count, other times it is the sign of the
+argument that is significant. If you pass a negative argument to a
+command which normally acts in a forward direction, that command will
+act in a backward direction. For example, to kill text back to the
+start of the line, you might type `M-- C-k'.
+
+ The general way to pass numeric arguments to a command is to type
+meta digits before the command. If the first `digit' you type is a
+minus sign (-), then the sign of the argument will be negative. Once
+you have typed one meta digit to get the argument started, you can type
+the remainder of the digits, and then the command. For example, to give
+the C-d command an argument of 10, you could type `M-1 0 C-d'.
+
+
+File: readline.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction
+
+Searching for Commands in the History
+-------------------------------------
+
+ Readline provides commands for searching through the command history
+for lines containing a specified string. There are two search modes:
+iNCREMENTAL and NON-INCREMENTAL.
+
+ Incremental searches begin before the user has finished typing the
+search string. As each character of the search string is typed,
+readline displays the next entry from the history matching the string
+typed so far. An incremental search requires only as many characters
+as needed to find the desired history entry. The Escape character is
+used to terminate an incremental search. Control-J will also terminate
+the search. Control-G will abort an incremental search and restore the
+original line. When the search is terminated, the history entry
+containing the search string becomes the current line. To find other
+matching entries in the history list, type Control-S or Control-R as
+appropriate. This will search backward or forward in the history for
+the next entry matching the search string typed so far. Any other key
+sequence bound to a readline command will terminate the search and
+execute that command. For instance, a `newline' will terminate the
+search and accept the line, thereby executing the command from the
+history list.
+
+ Non-incremental searches read the entire search string before
+starting to search for matching history lines. The search string may be
+typed by the user or part of the contents of the current line.
+
+
+File: readline.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
+
+Readline Init File
+==================
+
+ Although the Readline library comes with a set of `emacs'-like
+keybindings installed by default, it is possible that you would like to
+use a different set of keybindings. You can customize programs that
+use Readline by putting commands in an "inputrc" file in your home
+directory. The name of this file is taken from the value of the
+environment variable `INPUTRC'. If that variable is unset, the default
+is `~/.inputrc'.
+
+ When a program which uses the Readline library starts up, the init
+file is read, and the key bindings are set.
+
+ In addition, the `C-x C-r' command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+
+* Menu:
+
+* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
+
+* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
+
+* Sample Init File:: An example inputrc file.
+
+
+File: readline.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File
+
+Readline Init File Syntax
+-------------------------
+
+ There are only a few basic constructs allowed in the Readline init
+file. Blank lines are ignored. Lines beginning with a `#' are
+comments. Lines beginning with a `$' indicate conditional constructs
+(*note Conditional Init Constructs::.). Other lines denote variable
+settings and key bindings.
+
+Variable Settings
+ You can change the state of a few variables in Readline by using
+ the `set' command within the init file. Here is how you would
+ specify that you wish to use `vi' line editing commands:
+
+ set editing-mode vi
+
+ Right now, there are only a few variables which can be set; so
+ few, in fact, that we just list them here:
+
+ `bell-style'
+ Controls what happens when Readline wants to ring the
+ terminal bell. If set to `none', Readline never rings the
+ bell. If set to `visible', Readline uses a visible bell if
+ one is available. If set to `audible' (the default),
+ Readline attempts to ring the terminal's bell.
+
+ `comment-begin'
+ The string to insert at the beginning of the line when the
+ `insert-comment' command is executed. The default value is
+ `"#"'.
+
+ `completion-query-items'
+ The number of possible completions that determines when the
+ user is asked whether he wants to see the list of
+ possibilities. If the number of possible completions is
+ greater than this value, Readline will ask the user whether
+ or not he wishes to view them; otherwise, they are simply
+ listed. The default limit is `100'.
+
+ `convert-meta'
+ If set to `on', Readline will convert characters with the
+ eigth bit set to an ASCII key sequence by stripping the eigth
+ bit and prepending an ESC character, converting them to a
+ meta-prefixed key sequence. The default value is `on'.
+
+ `disable-completion'
+ If set to `On', readline will inhibit word completion.
+ Completion characters will be inserted into the line as if
+ they had been mapped to `self-insert'. The default is `off'.
+
+ `editing-mode'
+ The `editing-mode' variable controls which editing mode you
+ are using. By default, Readline starts up in Emacs editing
+ mode, where the keystrokes are most similar to Emacs. This
+ variable can be set to either `emacs' or `vi'.
+
+ `enable-keypad'
+ When set to `on', readline will try to enable the application
+ keypad when it is called. Some systems need this to enable
+ the arrow keys. The default is `off'.
+
+ `expand-tilde'
+ If set to `on', tilde expansion is performed when Readline
+ attempts word completion. The default is `off'.
+
+ `horizontal-scroll-mode'
+ This variable can be set to either `on' or `off'. Setting it
+ to `on' means that the text of the lines that you edit will
+ scroll horizontally on a single screen line when they are
+ longer than the width of the screen, instead of wrapping onto
+ a new screen line. By default, this variable is set to `off'.
+
+ `keymap'
+ Sets Readline's idea of the current keymap for key binding
+ commands. Acceptable `keymap' names are `emacs',
+ `emacs-standard', `emacs-meta', `emacs-ctlx', `vi',
+ `vi-command', and `vi-insert'. `vi' is equivalent to
+ `vi-command'; `emacs' is equivalent to `emacs-standard'. The
+ default value is `emacs'. The value of the `editing-mode'
+ variable also affects the default keymap.
+
+ `mark-directories'
+ If set to `on', completed directory names have a slash
+ appended. The default is `on'.
+
+ `mark-modified-lines'
+ This variable, when set to `on', says to display an asterisk
+ (`*') at the start of history lines which have been modified.
+ This variable is `off' by default.
+
+ `input-meta'
+ If set to `on', Readline will enable eight-bit input (it will
+ not strip the eighth bit from the characters it reads),
+ regardless of what the terminal claims it can support. The
+ default value is `off'. The name `meta-flag' is a synonym
+ for this variable.
+
+ `output-meta'
+ If set to `on', Readline will display characters with the
+ eighth bit set directly rather than as a meta-prefixed escape
+ sequence. The default is `off'.
+
+ `show-all-if-ambiguous'
+ This alters the default behavior of the completion functions.
+ If set to `on', words which have more than one possible
+ completion cause the matches to be listed immediately instead
+ of ringing the bell. The default value is `off'.
+
+ `visible-stats'
+ If set to `on', a character denoting a file's type is
+ appended to the filename when listing possible completions.
+ The default is `off'.
+
+Key Bindings
+ The syntax for controlling key bindings in the init file is
+ simple. First you have to know the name of the command that you
+ want to change. The following pages contain tables of the command
+ name, the default keybinding, and a short description of what the
+ command does.
+
+ Once you know the name of the command, simply place the name of
+ the key you wish to bind the command to, a colon, and then the
+ name of the command on a line in the init file. The name of the
+ key can be expressed in different ways, depending on which is most
+ comfortable for you.
+
+ KEYNAME: FUNCTION-NAME or MACRO
+ KEYNAME is the name of a key spelled out in English. For
+ example:
+ Control-u: universal-argument
+ Meta-Rubout: backward-kill-word
+ Control-o: "> output"
+
+ In the above example, `C-u' is bound to the function
+ `universal-argument', and `C-o' is bound to run the macro
+ expressed on the right hand side (that is, to insert the text
+ `> output' into the line).
+
+ "KEYSEQ": FUNCTION-NAME or MACRO
+ KEYSEQ differs from KEYNAME above in that strings denoting an
+ entire key sequence can be specified, by placing the key
+ sequence in double quotes. Some GNU Emacs style key escapes
+ can be used, as in the following example, but the special
+ character names are not recognized.
+
+ "\C-u": universal-argument
+ "\C-x\C-r": re-read-init-file
+ "\e[11~": "Function Key 1"
+
+ In the above example, `C-u' is bound to the function
+ `universal-argument' (just as it was in the first example),
+ `C-x C-r' is bound to the function `re-read-init-file', and
+ `ESC [ 1 1 ~' is bound to insert the text `Function Key 1'.
+ The following escape sequences are available when specifying
+ key sequences:
+
+ ``\C-''
+ control prefix
+
+ ``\M-''
+ meta prefix
+
+ ``\e''
+ an escape character
+
+ ``\\''
+ backslash
+
+ ``\"''
+ "
+
+ ``\'''
+ '
+
+ When entering the text of a macro, single or double quotes
+ should be used to indicate a macro definition. Unquoted text
+ is assumed to be a function name. Backslash will quote any
+ character in the macro text, including `"' and `''. For
+ example, the following binding will make `C-x \' insert a
+ single `\' into the line:
+ "\C-x\\": "\\"
+
+
+File: readline.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File
+
+Conditional Init Constructs
+---------------------------
+
+ Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key bindings
+and variable settings to be performed as the result of tests. There
+are three parser directives used.
+
+`$if'
+ The `$if' construct allows bindings to be made based on the
+ editing mode, the terminal being used, or the application using
+ Readline. The text of the test extends to the end of the line; no
+ characters are required to isolate it.
+
+ `mode'
+ The `mode=' form of the `$if' directive is used to test
+ whether Readline is in `emacs' or `vi' mode. This may be
+ used in conjunction with the `set keymap' command, for
+ instance, to set bindings in the `emacs-standard' and
+ `emacs-ctlx' keymaps only if Readline is starting out in
+ `emacs' mode.
+
+ `term'
+ The `term=' form may be used to include terminal-specific key
+ bindings, perhaps to bind the key sequences output by the
+ terminal's function keys. The word on the right side of the
+ `=' is tested against the full name of the terminal and the
+ portion of the terminal name before the first `-'. This
+ allows `sun' to match both `sun' and `sun-cmd', for instance.
+
+ `application'
+ The APPLICATION construct is used to include
+ application-specific settings. Each program using the
+ Readline library sets the APPLICATION NAME, and you can test
+ for it. This could be used to bind key sequences to
+ functions useful for a specific program. For instance, the
+ following command adds a key sequence that quotes the current
+ or previous word in Bash:
+ $if Bash
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ $endif
+
+`$endif'
+ This command, as you saw in the previous example, terminates an
+ `$if' command.
+
+`$else'
+ Commands in this branch of the `$if' directive are executed if the
+ test fails.
+
+
+File: readline.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File
+
+Sample Init File
+----------------
+
+ Here is an example of an inputrc file. This illustrates key
+binding, variable assignment, and conditional syntax.
+
+
+ # This file controls the behaviour of line input editing for
+ # programs that use the Gnu Readline library. Existing programs
+ # include FTP, Bash, and Gdb.
+ #
+ # You can re-read the inputrc file with C-x C-r.
+ # Lines beginning with '#' are comments.
+ #
+ # Set various bindings for emacs mode.
+
+ set editing-mode emacs
+
+ $if mode=emacs
+
+ Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+ #
+ # Arrow keys in keypad mode
+ #
+ #"\M-OD": backward-char
+ #"\M-OC": forward-char
+ #"\M-OA": previous-history
+ #"\M-OB": next-history
+ #
+ # Arrow keys in ANSI mode
+ #
+ "\M-[D": backward-char
+ "\M-[C": forward-char
+ "\M-[A": previous-history
+ "\M-[B": next-history
+ #
+ # Arrow keys in 8 bit keypad mode
+ #
+ #"\M-\C-OD": backward-char
+ #"\M-\C-OC": forward-char
+ #"\M-\C-OA": previous-history
+ #"\M-\C-OB": next-history
+ #
+ # Arrow keys in 8 bit ANSI mode
+ #
+ #"\M-\C-[D": backward-char
+ #"\M-\C-[C": forward-char
+ #"\M-\C-[A": previous-history
+ #"\M-\C-[B": next-history
+
+ C-q: quoted-insert
+
+ $endif
+
+ # An old-style binding. This happens to be the default.
+ TAB: complete
+
+ # Macros that are convenient for shell interaction
+ $if Bash
+ # edit the path
+ "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+ # prepare to type a quoted word -- insert open and close double quotes
+ # and move to just after the open quote
+ "\C-x\"": "\"\"\C-b"
+ # insert a backslash (testing backslash escapes in sequences and macros)
+ "\C-x\\": "\\"
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ # Add a binding to refresh the line, which is unbound
+ "\C-xr": redraw-current-line
+ # Edit variable on current line.
+ "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+ $endif
+
+ # use a visible bell if one is available
+ set bell-style visible
+
+ # don't strip characters to 7 bits when reading
+ set input-meta on
+
+ # allow iso-latin1 characters to be inserted rather than converted to
+ # prefix-meta sequences
+ set convert-meta off
+
+ # display characters with the eighth bit set directly rather than
+ # as meta-prefixed characters
+ set output-meta on
+
+ # if there are more than 150 possible completions for a word, ask the
+ # user if he wants to see all of them
+ set completion-query-items 150
+
+ # For FTP
+ $if Ftp
+ "\C-xg": "get \M-?"
+ "\C-xt": "put \M-?"
+ "\M-.": yank-last-arg
+ $endif
+
+
+File: readline.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
+
+Bindable Readline Commands
+==========================
+
+* Menu:
+
+* Commands For Moving:: Moving about the line.
+* Commands For History:: Getting at previous lines.
+* Commands For Text:: Commands for changing text.
+* Commands For Killing:: Commands for killing and yanking.
+* Numeric Arguments:: Specifying numeric arguments, repeat counts.
+* Commands For Completion:: Getting Readline to do the typing for you.
+* Keyboard Macros:: Saving and re-executing typed characters
+* Miscellaneous Commands:: Other miscellaneous commands.
+
+ This section describes Readline commands that may be bound to key
+sequences.
+
+
+File: readline.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
+
+Commands For Moving
+-------------------
+
+`beginning-of-line (C-a)'
+ Move to the start of the current line.
+
+`end-of-line (C-e)'
+ Move to the end of the line.
+
+`forward-char (C-f)'
+ Move forward a character.
+
+`backward-char (C-b)'
+ Move back a character.
+
+`forward-word (M-f)'
+ Move forward to the end of the next word. Words are composed of
+ letters and digits.
+
+`backward-word (M-b)'
+ Move back to the start of this, or the previous, word. Words are
+ composed of letters and digits.
+
+`clear-screen (C-l)'
+ Clear the screen and redraw the current line, leaving the current
+ line at the top of the screen.
+
+`redraw-current-line ()'
+ Refresh the current line. By default, this is unbound.
+
+
+File: readline.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
+
+Commands For Manipulating The History
+-------------------------------------
+
+`accept-line (Newline, Return)'
+ Accept the line regardless of where the cursor is. If this line is
+ non-empty, add it to the history list. If this line was a history
+ line, then restore the history line to its original state.
+
+`previous-history (C-p)'
+ Move `up' through the history list.
+
+`next-history (C-n)'
+ Move `down' through the history list.
+
+`beginning-of-history (M-<)'
+ Move to the first line in the history.
+
+`end-of-history (M->)'
+ Move to the end of the input history, i.e., the line you are
+ entering.
+
+`reverse-search-history (C-r)'
+ Search backward starting at the current line and moving `up'
+ through the history as necessary. This is an incremental search.
+
+`forward-search-history (C-s)'
+ Search forward starting at the current line and moving `down'
+ through the the history as necessary. This is an incremental
+ search.
+
+`non-incremental-reverse-search-history (M-p)'
+ Search backward starting at the current line and moving `up'
+ through the history as necessary using a non-incremental search
+ for a string supplied by the user.
+
+`non-incremental-forward-search-history (M-n)'
+ Search forward starting at the current line and moving `down'
+ through the the history as necessary using a non-incremental search
+ for a string supplied by the user.
+
+`history-search-forward ()'
+ Search forward through the history for the string of characters
+ between the start of the current line and the current cursor
+ position (the `point'). This is a non-incremental search. By
+ default, this command is unbound.
+
+`history-search-backward ()'
+ Search backward through the history for the string of characters
+ between the start of the current line and the point. This is a
+ non-incremental search. By default, this command is unbound.
+
+`yank-nth-arg (M-C-y)'
+ Insert the first argument to the previous command (usually the
+ second word on the previous line). With an argument N, insert the
+ Nth word from the previous command (the words in the previous
+ command begin with word 0). A negative argument inserts the Nth
+ word from the end of the previous command.
+
+`yank-last-arg (M-., M-_)'
+ Insert last argument to the previous command (the last word of the
+ previous history entry). With an argument, behave exactly like
+ `yank-nth-arg'.
+
+
+File: readline.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
+
+Commands For Changing Text
+--------------------------
+
+`delete-char (C-d)'
+ Delete the character under the cursor. If the cursor is at the
+ beginning of the line, there are no characters in the line, and
+ the last character typed was not `C-d', then return `EOF'.
+
+`backward-delete-char (Rubout)'
+ Delete the character behind the cursor. A numeric arg says to kill
+ the characters instead of deleting them.
+
+`quoted-insert (C-q, C-v)'
+ Add the next character that you type to the line verbatim. This is
+ how to insert key sequences like C-q, for example.
+
+`tab-insert (M-TAB)'
+ Insert a tab character.
+
+`self-insert (a, b, A, 1, !, ...)'
+ Insert yourself.
+
+`transpose-chars (C-t)'
+ Drag the character before the cursor forward over the character at
+ the cursor, moving the cursor forward as well. If the insertion
+ point is at the end of the line, then this transposes the last two
+ characters of the line. Negative argumentss don't work.
+
+`transpose-words (M-t)'
+ Drag the word behind the cursor past the word in front of the
+ cursor moving the cursor over that word as well.
+
+`upcase-word (M-u)'
+ Uppercase the current (or following) word. With a negative
+ argument, do the previous word, but do not move the cursor.
+
+`downcase-word (M-l)'
+ Lowercase the current (or following) word. With a negative
+ argument, do the previous word, but do not move the cursor.
+
+`capitalize-word (M-c)'
+ Capitalize the current (or following) word. With a negative
+ argument, do the previous word, but do not move the cursor.
+
+
+File: readline.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
+
+Killing And Yanking
+-------------------
+
+`kill-line (C-k)'
+ Kill the text from the current cursor position to the end of the
+ line.
+
+`backward-kill-line (C-x Rubout)'
+ Kill backward to the beginning of the line.
+
+`unix-line-discard (C-u)'
+ Kill backward from the cursor to the beginning of the current line.
+ Save the killed text on the kill-ring.
+
+`kill-whole-line ()'
+ Kill all characters on the current line, no matter where the
+ cursor is. By default, this is unbound.
+
+`kill-word (M-d)'
+ Kill from the cursor to the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the same
+ as `forward-word'.
+
+`backward-kill-word (M-DEL)'
+ Kill the word behind the cursor. Word boundaries are the same as
+ `backward-word'.
+
+`unix-word-rubout (C-w)'
+ Kill the word behind the cursor, using white space as a word
+ boundary. The killed text is saved on the kill-ring.
+
+`delete-horizontal-space ()'
+ Delete all spaces and tabs around point. By default, this is
+ unbound.
+
+`kill-region ()'
+ Kill the text between the point and the *mark* (saved cursor
+ position. This text is referred to as the REGION. By default,
+ this command is unbound.
+
+`copy-region-as-kill ()'
+ Copy the text in the region to the kill buffer, so you can yank it
+ right away. By default, this command is unbound.
+
+`copy-backward-word ()'
+ Copy the word before point to the kill buffer. By default, this
+ command is unbound.
+
+`copy-forward-word ()'
+ Copy the word following point to the kill buffer. By default,
+ this command is unbound.
+
+`yank (C-y)'
+ Yank the top of the kill ring into the buffer at the current
+ cursor position.
+
+`yank-pop (M-y)'
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is yank or yank-pop.
+
+
+File: readline.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
+
+Specifying Numeric Arguments
+----------------------------
+
+`digit-argument (M-0, M-1, ... M--)'
+ Add this digit to the argument already accumulating, or start a new
+ argument. M- starts a negative argument.
+
+`universal-argument ()'
+ This is another way to specify an argument. If this command is
+ followed by one or more digits, optionally with a leading minus
+ sign, those digits define the argument. If the command is
+ followed by digits, executing `universal-argument' again ends the
+ numeric argument, but is otherwise ignored. As a special case, if
+ this command is immediately followed by a character that is
+ neither a digit or minus sign, the argument count for the next
+ command is multiplied by four. The argument count is initially
+ one, so executing this function the first time makes the argument
+ count four, a second time makes the argument count sixteen, and so
+ on. By default, this is not bound to a key.
+
+
+File: readline.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
+
+Letting Readline Type For You
+-----------------------------
+
+`complete (TAB)'
+ Attempt to do completion on the text before the cursor. This is
+ application-specific. Generally, if you are typing a filename
+ argument, you can do filename completion; if you are typing a
+ command, you can do command completion, if you are typing in a
+ symbol to GDB, you can do symbol name completion, if you are
+ typing in a variable to Bash, you can do variable name completion,
+ and so on.
+
+`possible-completions (M-?)'
+ List the possible completions of the text before the cursor.
+
+`insert-completions (M-*)'
+ Insert all completions of the text before point that would have
+ been generated by `possible-completions'.
+
+
+File: readline.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
+
+Keyboard Macros
+---------------
+
+`start-kbd-macro (C-x ()'
+ Begin saving the characters typed into the current keyboard macro.
+
+`end-kbd-macro (C-x ))'
+ Stop saving the characters typed into the current keyboard macro
+ and save the definition.
+
+`call-last-kbd-macro (C-x e)'
+ Re-execute the last keyboard macro defined, by making the
+ characters in the macro appear as if typed at the keyboard.
+
+
+File: readline.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
+
+Some Miscellaneous Commands
+---------------------------
+
+`re-read-init-file (C-x C-r)'
+ Read in the contents of the inputrc file, and incorporate any
+ bindings or variable assignments found there.
+
+`abort (C-g)'
+ Abort the current editing command and ring the terminal's bell
+ (subject to the setting of `bell-style').
+
+`do-uppercase-version (M-a, M-b, M-X, ...)'
+ If the metafied character X is lowercase, run the command that is
+ bound to the corresponding uppercase character.
+
+`prefix-meta (ESC)'
+ Make the next character that you type be metafied. This is for
+ people without a meta key. Typing `ESC f' is equivalent to typing
+ `M-f'.
+
+`undo (C-_, C-x C-u)'
+ Incremental undo, separately remembered for each line.
+
+`revert-line (M-r)'
+ Undo all changes made to this line. This is like typing the `undo'
+ command enough times to get back to the beginning.
+
+`tilde-expand (M-~)'
+ Perform tilde expansion on the current word.
+
+`set-mark (C-@)'
+ Set the mark to the current point. If a numeric argument is
+ supplied, the mark is set to that position.
+
+`exchange-point-and-mark (C-x C-x)'
+ Swap the point with the mark. The current cursor position is set
+ to the saved position, and the old cursor position is saved as the
+ mark.
+
+`character-search (C-])'
+ A character is read and point is moved to the next occurrence of
+ that character. A negative count searches for previous
+ occurrences.
+
+`character-search-backward (M-C-])'
+ A character is read and point is moved to the previous occurrence
+ of that character. A negative count searches for subsequent
+ occurrences.
+
+`insert-comment (M-#)'
+ The value of the `comment-begin' variable is inserted at the
+ beginning of the current line, and the line is accepted as if a
+ newline had been typed.
+
+`dump-functions ()'
+ Print all of the functions and their key bindings to the readline
+ output stream. If a numeric argument is supplied, the output is
+ formatted in such a way that it can be made part of an INPUTRC
+ file. This command is unbound by default.
+
+`dump-variables ()'
+ Print all of the settable variables and their values to the
+ readline output stream. If a numeric argument is supplied, the
+ output is formatted in such a way that it can be made part of an
+ INPUTRC file. This command is unbound by default.
+
+`dump-macros ()'
+ Print all of the readline key sequences bound to macros and the
+ strings they ouput. If a numeric argument is supplied, the output
+ is formatted in such a way that it can be made part of an INPUTRC
+ file. This command is unbound by default.
+
+
+File: readline.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
+
+Readline vi Mode
+================
+
+ While the Readline library does not have a full set of `vi' editing
+functions, it does contain enough to allow simple editing of the line.
+The Readline `vi' mode behaves as specified in the POSIX 1003.2
+standard.
+
+ In order to switch interactively between `emacs' and `vi' editing
+modes, use the command M-C-j (toggle-editing-mode). The Readline
+default is `emacs' mode.
+
+ When you enter a line in `vi' mode, you are already placed in
+`insertion' mode, as if you had typed an `i'. Pressing ESC switches
+you into `command' mode, where you can edit the text of the line with
+the standard `vi' movement keys, move to previous history lines with
+`k' and subsequent lines with `j', and so forth.
+
+ This document describes the GNU Readline Library, a utility for
+aiding in the consitency of user interface across discrete programs
+that need to provide a command line interface.
+
+ Copyright (C) 1988, 1994, 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 pare
+preserved on all copies.
+
+ Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided 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, except that this permission notice may be stated in a
+translation approved by the Foundation.
+
+
+File: readline.info, Node: Programming with GNU Readline, Next: Concept Index, Prev: Command Line Editing, Up: Top
+
+Programming with GNU Readline
+*****************************
+
+ This chapter describes the interface between the GNU Readline
+Library and other programs. If you are a programmer, and you wish to
+include the features found in GNU Readline such as completion, line
+editing, and interactive history manipulation in your own programs,
+this section is for you.
+
+* Menu:
+
+* Basic Behavior:: Using the default behavior of Readline.
+* Custom Functions:: Adding your own functions to Readline.
+* Readline Variables:: Variables accessible to custom
+ functions.
+* Readline Convenience Functions:: Functions which Readline supplies to
+ aid in writing your own
+* Custom Completers:: Supplanting or supplementing Readline's
+ completion functions.
+
+
+File: readline.info, Node: Basic Behavior, Next: Custom Functions, Up: Programming with GNU Readline
+
+Basic Behavior
+==============
+
+ Many programs provide a command line interface, such as `mail',
+`ftp', and `sh'. For such programs, the default behaviour of Readline
+is sufficient. This section describes how to use Readline in the
+simplest way possible, perhaps to replace calls in your code to
+`gets()' or `fgets ()'.
+
+ The function `readline ()' prints a prompt and then reads and returns
+a single line of text from the user. The line `readline' returns is
+allocated with `malloc ()'; you should `free ()' the line when you are
+done with it. The declaration for `readline' in ANSI C is
+
+ `char *readline (char *PROMPT);'
+
+So, one might say
+ `char *line = readline ("Enter a line: ");'
+
+in order to read a line of text from the user. The line returned has
+the final newline removed, so only the text remains.
+
+ If `readline' encounters an `EOF' while reading the line, and the
+line is empty at that point, then `(char *)NULL' is returned.
+Otherwise, the line is ended just as if a newline had been typed.
+
+ If you want the user to be able to get at the line later, (with C-p
+for example), you must call `add_history ()' to save the line away in a
+"history" list of such lines.
+
+ `add_history (line)';
+
+For full details on the GNU History Library, see the associated manual.
+
+ It is preferable to avoid saving empty lines on the history list,
+since users rarely have a burning need to reuse a blank line. Here is
+a function which usefully replaces the standard `gets ()' library
+function, and has the advantage of no static buffer to overflow:
+
+ /* A static variable for holding the line. */
+ static char *line_read = (char *)NULL;
+
+ /* Read a string, and return a pointer to it. Returns NULL on EOF. */
+ char *
+ rl_gets ()
+ {
+ /* If the buffer has already been allocated, return the memory
+ to the free pool. */
+ if (line_read)
+ {
+ free (line_read);
+ line_read = (char *)NULL;
+ }
+
+ /* Get a line from the user. */
+ line_read = readline ("");
+
+ /* If the line has any text in it, save it on the history. */
+ if (line_read && *line_read)
+ add_history (line_read);
+
+ return (line_read);
+ }
+
+ This function gives the user the default behaviour of TAB
+completion: completion on file names. If you do not want Readline to
+complete on filenames, you can change the binding of the TAB key with
+`rl_bind_key ()'.
+
+ `int rl_bind_key (int KEY, int (*FUNCTION)());'
+
+ `rl_bind_key ()' takes two arguments: KEY is the character that you
+want to bind, and FUNCTION is the address of the function to call when
+KEY is pressed. Binding TAB to `rl_insert ()' makes TAB insert itself.
+`rl_bind_key ()' returns non-zero if KEY is not a valid ASCII character
+code (between 0 and 255).
+
+ Thus, to disable the default TAB behavior, the following suffices:
+ `rl_bind_key ('\t', rl_insert);'
+
+ This code should be executed once at the start of your program; you
+might write a function called `initialize_readline ()' which performs
+this and other desired initializations, such as installing custom
+completers (*note Custom Completers::.).
+
+
+File: readline.info, Node: Custom Functions, Next: Readline Variables, Prev: Basic Behavior, Up: Programming with GNU Readline
+
+Custom Functions
+================
+
+ Readline provides many functions for manipulating the text of the
+line, but it isn't possible to anticipate the needs of all programs.
+This section describes the various functions and variables defined
+within the Readline library which allow a user program to add
+customized functionality to Readline.
+
+* Menu:
+
+* The Function Type:: C declarations to make code readable.
+* Function Writing:: Variables and calling conventions.
+
+
+File: readline.info, Node: The Function Type, Next: Function Writing, Up: Custom Functions
+
+The Function Type
+-----------------
+
+ For readabilty, we declare a new type of object, called "Function".
+A `Function' is a C function which returns an `int'. The type
+declaration for `Function' is:
+
+`typedef int Function ();'
+
+ The reason for declaring this new type is to make it easier to write
+code describing pointers to C functions. Let us say we had a variable
+called FUNC which was a pointer to a function. Instead of the classic
+C declaration
+
+ `int (*)()func;'
+
+we may write
+
+ `Function *func;'
+
+Similarly, there are
+
+ typedef void VFunction ();
+ typedef char *CPFunction (); and
+ typedef char **CPPFunction ();
+
+for functions returning no value, `pointer to char', and `pointer to
+pointer to char', respectively.
+
+
+File: readline.info, Node: Function Writing, Prev: The Function Type, Up: Custom Functions
+
+Writing a New Function
+----------------------
+
+ In order to write new functions for Readline, you need to know the
+calling conventions for keyboard-invoked functions, and the names of the
+variables that describe the current state of the line read so far.
+
+ The calling sequence for a command `foo' looks like
+
+ `foo (int count, int key)'
+
+where COUNT is the numeric argument (or 1 if defaulted) and KEY is the
+key that invoked this function.
+
+ It is completely up to the function as to what should be done with
+the numeric argument. Some functions use it as a repeat count, some as
+a flag, and others to choose alternate behavior (refreshing the current
+line as opposed to refreshing the screen, for example). Some choose to
+ignore it. In general, if a function uses the numeric argument as a
+repeat count, it should be able to do something useful with both
+negative and positive arguments. At the very least, it should be aware
+that it can be passed a negative argument.
+
+
+File: readline.info, Node: Readline Variables, Next: Readline Convenience Functions, Prev: Custom Functions, Up: Programming with GNU Readline
+
+Readline Variables
+==================
+
+ These variables are available to function writers.
+
+ - Variable: char * rl_line_buffer
+ This is the line gathered so far. You are welcome to modify the
+ contents of the line, but see *Note Allowing Undoing::.
+
+ - Variable: int rl_point
+ The offset of the current cursor position in `rl_line_buffer' (the
+ *point*).
+
+ - Variable: int rl_end
+ The number of characters present in `rl_line_buffer'. When
+ `rl_point' is at the end of the line, `rl_point' and `rl_end' are
+ equal.
+
+ - Variable: int rl_mark
+ The mark (saved position) in the current line. If set, the mark
+ and point define a *region*.
+
+ - Variable: int rl_done
+ Setting this to a non-zero value causes Readline to return the
+ current line immediately.
+
+ - Variable: int rl_pending_input
+ Setting this to a value makes it the next keystroke read. This is
+ a way to stuff a single character into the input stream.
+
+ - Variable: char * rl_prompt
+ The prompt Readline uses. This is set from the argument to
+ `readline ()', and should not be assigned to directly.
+
+ - Variable: char * rl_library_version
+ The version number of this revision of the library.
+
+ - Variable: char * rl_terminal_name
+ The terminal type, used for initialization.
+
+ - Variable: char * rl_readline_name
+ This variable is set to a unique name by each application using
+ Readline. The value allows conditional parsing of the inputrc file
+ (*note Conditional Init Constructs::.).
+
+ - Variable: FILE * rl_instream
+ The stdio stream from which Readline reads input.
+
+ - Variable: FILE * rl_outstream
+ The stdio stream to which Readline performs output.
+
+ - Variable: Function * rl_startup_hook
+ If non-zero, this is the address of a function to call just before
+ `readline' prints the first prompt.
+
+ - Variable: Function * rl_event_hook
+ If non-zero, this is the address of a function to call periodically
+ when readline is waiting for terminal input.
+
+ - Variable: Function * rl_getc_function
+ If non-zero, `readline' will call indirectly through this pointer
+ to get a character from the input stream. By default, it is set to
+ `rl_getc', the default `readline' character input function (*note
+ Utility Functions::.).
+
+ - Variable: VFunction * rl_redisplay_function
+ If non-zero, `readline' will call indirectly through this pointer
+ to update the display with the current contents of the editing
+ buffer. By default, it is set to `rl_redisplay', the default
+ `readline' redisplay function (*note Redisplay::.).
+
+ - Variable: Keymap rl_executing_keymap
+ This variable is set to the keymap (*note Keymaps::.) in which the
+ currently executing readline function was found.
+
+ - Variable: Keymap rl_binding_keymap
+ This variable is set to the keymap (*note Keymaps::.) in which the
+ last key binding occurred.
+
+
+File: readline.info, Node: Readline Convenience Functions, Next: Custom Completers, Prev: Readline Variables, Up: Programming with GNU Readline
+
+Readline Convenience Functions
+==============================
+
+* Menu:
+
+* Function Naming:: How to give a function you write a name.
+* Keymaps:: Making keymaps.
+* Binding Keys:: Changing Keymaps.
+* Associating Function Names and Bindings:: Translate function names to
+ key sequences.
+* Allowing Undoing:: How to make your functions undoable.
+* Redisplay:: Functions to control line display.
+* Modifying Text:: Functions to modify `rl_line_buffer'.
+* Utility Functions:: Generally useful functions and hooks.
+* Alternate Interface:: Using Readline in a `callback' fashion.
+
+
+File: readline.info, Node: Function Naming, Next: Keymaps, Up: Readline Convenience Functions
+
+Naming a Function
+-----------------
+
+ The user can dynamically change the bindings of keys while using
+Readline. This is done by representing the function with a descriptive
+name. The user is able to type the descriptive name when referring to
+the function. Thus, in an init file, one might find
+
+ Meta-Rubout: backward-kill-word
+
+ This binds the keystroke Meta-Rubout to the function *descriptively*
+named `backward-kill-word'. You, as the programmer, should bind the
+functions you write to descriptive names as well. Readline provides a
+function for doing that:
+
+ - Function: int rl_add_defun (char *name, Function *function, int key)
+ Add NAME to the list of named functions. Make FUNCTION be the
+ function that gets called. If KEY is not -1, then bind it to
+ FUNCTION using `rl_bind_key ()'.
+
+ Using this function alone is sufficient for most applications. It is
+the recommended way to add a few functions to the default functions that
+Readline has built in. If you need to do something other than adding a
+function to Readline, you may need to use the underlying functions
+described below.
+
+
+File: readline.info, Node: Keymaps, Next: Binding Keys, Prev: Function Naming, Up: Readline Convenience Functions
+
+Selecting a Keymap
+------------------
+
+ Key bindings take place on a "keymap". The keymap is the
+association between the keys that the user types and the functions that
+get run. You can make your own keymaps, copy existing keymaps, and tell
+Readline which keymap to use.
+
+ - Function: Keymap rl_make_bare_keymap ()
+ Returns a new, empty keymap. The space for the keymap is
+ allocated with `malloc ()'; you should `free ()' it when you are
+ done.
+
+ - Function: Keymap rl_copy_keymap (Keymap map)
+ Return a new keymap which is a copy of MAP.
+
+ - Function: Keymap rl_make_keymap ()
+ Return a new keymap with the printing characters bound to
+ rl_insert, the lowercase Meta characters bound to run their
+ equivalents, and the Meta digits bound to produce numeric
+ arguments.
+
+ - Function: void rl_discard_keymap (Keymap keymap)
+ Free the storage associated with KEYMAP.
+
+ Readline has several internal keymaps. These functions allow you to
+change which keymap is active.
+
+ - Function: Keymap rl_get_keymap ()
+ Returns the currently active keymap.
+
+ - Function: void rl_set_keymap (Keymap keymap)
+ Makes KEYMAP the currently active keymap.
+
+ - Function: Keymap rl_get_keymap_by_name (char *name)
+ Return the keymap matching NAME. NAME is one which would be
+ supplied in a `set keymap' inputrc line (*note Readline Init
+ File::.).
+
+ - Function: char * rl_get_keymap_name (Keymap keymap)
+ Return the name matching KEYMAP. NAME is one which would be
+ supplied in a `set keymap' inputrc line (*note Readline Init
+ File::.).
+
+
+File: readline.info, Node: Binding Keys, Next: Associating Function Names and Bindings, Prev: Keymaps, Up: Readline Convenience Functions
+
+Binding Keys
+------------
+
+ You associate keys with functions through the keymap. Readline has
+several internal keymaps: `emacs_standard_keymap', `emacs_meta_keymap',
+`emacs_ctlx_keymap', `vi_movement_keymap', and `vi_insertion_keymap'.
+`emacs_standard_keymap' is the default, and the examples in this manual
+assume that.
+
+ These functions manage key bindings.
+
+ - Function: int rl_bind_key (int key, Function *function)
+ Binds KEY to FUNCTION in the currently active keymap. Returns
+ non-zero in the case of an invalid KEY.
+
+ - Function: int rl_bind_key_in_map (int key, Function *function,
+ Keymap map)
+ Bind KEY to FUNCTION in MAP. Returns non-zero in the case of an
+ invalid KEY.
+
+ - Function: int rl_unbind_key (int key)
+ Bind KEY to the null function in the currently active keymap.
+ Returns non-zero in case of error.
+
+ - Function: int rl_unbind_key_in_map (int key, Keymap map)
+ Bind KEY to the null function in MAP. Returns non-zero in case of
+ error.
+
+ - Function: int rl_generic_bind (int type, char *keyseq, char *data,
+ Keymap map)
+ Bind the key sequence represented by the string KEYSEQ to the
+ arbitrary pointer DATA. TYPE says what kind of data is pointed to
+ by DATA; this can be a function (`ISFUNC'), a macro (`ISMACR'), or
+ a keymap (`ISKMAP'). This makes new keymaps as necessary. The
+ initial keymap in which to do bindings is MAP.
+
+ - Function: int rl_parse_and_bind (char *line)
+ Parse LINE as if it had been read from the `inputrc' file and
+ perform any key bindings and variable assignments found (*note
+ Readline Init File::.).
+
+ - Function: int rl_read_init_file (char *filename)
+ Read keybindings and variable assignments from FILENAME (*note
+ Readline Init File::.).
+
+
+File: readline.info, Node: Associating Function Names and Bindings, Next: Allowing Undoing, Prev: Binding Keys, Up: Readline Convenience Functions
+
+Associating Function Names and Bindings
+---------------------------------------
+
+ These functions allow you to find out what keys invoke named
+functions and the functions invoked by a particular key sequence.
+
+ - Function: Function * rl_named_function (char *name)
+ Return the function with name NAME.
+
+ - Function: Function * rl_function_of_keyseq (char *keyseq, Keymap
+ map, int *type)
+ Return the function invoked by KEYSEQ in keymap MAP. If MAP is
+ NULL, the current keymap is used. If TYPE is not NULL, the type
+ of the object is returned in it (one of `ISFUNC', `ISKMAP', or
+ `ISMACR').
+
+ - Function: char ** rl_invoking_keyseqs (Function *function)
+ Return an array of strings representing the key sequences used to
+ invoke FUNCTION in the current keymap.
+
+ - Function: char ** rl_invoking_keyseqs_in_map (Function *function,
+ Keymap map)
+ Return an array of strings representing the key sequences used to
+ invoke FUNCTION in the keymap MAP.
+
+ - Function: void rl_function_dumper (int readable)
+ Print the readline function names and the key sequences currently
+ bound to them to `rl_outstream'. If READABLE is non-zero, the
+ list is formatted in such a way that it can be made part of an
+ `inputrc' file and re-read.
+
+ - Function: void rl_list_funmap_names ()
+ Print the names of all bindable Readline functions to
+ `rl_outstream'.
+
+
+File: readline.info, Node: Allowing Undoing, Next: Redisplay, Prev: Associating Function Names and Bindings, Up: Readline Convenience Functions
+
+Allowing Undoing
+----------------
+
+ Supporting the undo command is a painless thing, and makes your
+functions much more useful. It is certainly easy to try something if
+you know you can undo it. I could use an undo function for the stock
+market.
+
+ If your function simply inserts text once, or deletes text once, and
+uses `rl_insert_text ()' or `rl_delete_text ()' to do it, then undoing
+is already done for you automatically.
+
+ If you do multiple insertions or multiple deletions, or any
+combination of these operations, you should group them together into
+one operation. This is done with `rl_begin_undo_group ()' and
+`rl_end_undo_group ()'.
+
+ The types of events that can be undone are:
+
+ enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
+
+ Notice that `UNDO_DELETE' means to insert some text, and
+`UNDO_INSERT' means to delete some text. That is, the undo code tells
+undo what to undo, not how to undo it. `UNDO_BEGIN' and `UNDO_END' are
+tags added by `rl_begin_undo_group ()' and `rl_end_undo_group ()'.
+
+ - Function: int rl_begin_undo_group ()
+ Begins saving undo information in a group construct. The undo
+ information usually comes from calls to `rl_insert_text ()' and
+ `rl_delete_text ()', but could be the result of calls to
+ `rl_add_undo ()'.
+
+ - Function: int rl_end_undo_group ()
+ Closes the current undo group started with `rl_begin_undo_group
+ ()'. There should be one call to `rl_end_undo_group ()' for each
+ call to `rl_begin_undo_group ()'.
+
+ - Function: void rl_add_undo (enum undo_code what, int start, int end,
+ char *text)
+ Remember how to undo an event (according to WHAT). The affected
+ text runs from START to END, and encompasses TEXT.
+
+ - Function: void free_undo_list ()
+ Free the existing undo list.
+
+ - Function: int rl_do_undo ()
+ Undo the first thing on the undo list. Returns `0' if there was
+ nothing to undo, non-zero if something was undone.
+
+ Finally, if you neither insert nor delete text, but directly modify
+the existing text (e.g., change its case), call `rl_modifying ()' once,
+just before you modify the text. You must supply the indices of the
+text range that you are going to modify.
+
+ - Function: int rl_modifying (int start, int end)
+ Tell Readline to save the text between START and END as a single
+ undo unit. It is assumed that you will subsequently modify that
+ text.
+
+
+File: readline.info, Node: Redisplay, Next: Modifying Text, Prev: Allowing Undoing, Up: Readline Convenience Functions
+
+Redisplay
+---------
+
+ - Function: void rl_redisplay ()
+ Change what's displayed on the screen to reflect the current
+ contents of `rl_line_buffer'.
+
+ - Function: int rl_forced_update_display ()
+ Force the line to be updated and redisplayed, whether or not
+ Readline thinks the screen display is correct.
+
+ - Function: int rl_on_new_line ()
+ Tell the update routines that we have moved onto a new (empty)
+ line, usually after ouputting a newline.
+
+ - Function: int rl_reset_line_state ()
+ Reset the display state to a clean state and redisplay the current
+ line starting on a new line.
+
+ - Function: int rl_message (va_alist)
+ The arguments are a string as would be supplied to `printf'. The
+ resulting string is displayed in the "echo area". The echo area
+ is also used to display numeric arguments and search strings.
+
+ - Function: int rl_clear_message ()
+ Clear the message in the echo area.
+
+
+File: readline.info, Node: Modifying Text, Next: Utility Functions, Prev: Redisplay, Up: Readline Convenience Functions
+
+Modifying Text
+--------------
+
+ - Function: int rl_insert_text (char *text)
+ Insert TEXT into the line at the current cursor position.
+
+ - Function: int rl_delete_text (int start, int end)
+ Delete the text between START and END in the current line.
+
+ - Function: char * rl_copy_text (int start, int end)
+ Return a copy of the text between START and END in the current
+ line.
+
+ - Function: int rl_kill_text (int start, int end)
+ Copy the text between START and END in the current line to the
+ kill ring, appending or prepending to the last kill if the last
+ command was a kill command. The text is deleted. If START is
+ less than END, the text is appended, otherwise prepended. If the
+ last command was not a kill, a new kill ring slot is used.
+
+
+File: readline.info, Node: Utility Functions, Next: Alternate Interface, Prev: Modifying Text, Up: Readline Convenience Functions
+
+Utility Functions
+-----------------
+
+ - Function: int rl_read_key ()
+ Return the next character available. This handles input inserted
+ into the input stream via PENDING INPUT (*note Readline
+ Variables::.) and `rl_stuff_char ()', macros, and characters read
+ from the keyboard.
+
+ - Function: int rl_getc (FILE *)
+ Return the next character available from the keyboard.
+
+ - Function: int rl_stuff_char (int c)
+ Insert C into the Readline input stream. It will be "read" before
+ Readline attempts to read characters from the terminal with
+ `rl_read_key ()'.
+
+ - Function: rl_extend_line_buffer (int len)
+ Ensure that `rl_line_buffer' has enough space to hold LEN
+ characters, possibly reallocating it if necessary.
+
+ - Function: int rl_initialize ()
+ Initialize or re-initialize Readline's internal state.
+
+ - Function: int rl_reset_terminal (char *terminal_name)
+ Reinitialize Readline's idea of the terminal settings using
+ TERMINAL_NAME as the terminal type (e.g., `vt100').
+
+ - Function: int alphabetic (int c)
+ Return 1 if C is an alphabetic character.
+
+ - Function: int numeric (int c)
+ Return 1 if C is a numeric character.
+
+ - Function: int ding ()
+ Ring the terminal bell, obeying the setting of `bell-style'.
+
+ The following are implemented as macros, defined in `chartypes.h'.
+
+ - Function: int uppercase_p (int c)
+ Return 1 if C is an uppercase alphabetic character.
+
+ - Function: int lowercase_p (int c)
+ Return 1 if C is a lowercase alphabetic character.
+
+ - Function: int digit_p (int c)
+ Return 1 if C is a numeric character.
+
+ - Function: int to_upper (int c)
+ If C is a lowercase alphabetic character, return the corresponding
+ uppercase character.
+
+ - Function: int to_lower (int c)
+ If C is an uppercase alphabetic character, return the corresponding
+ lowercase character.
+
+ - Function: int digit_value (int c)
+ If C is a number, return the value it represents.
+
+
+File: readline.info, Node: Alternate Interface, Prev: Utility Functions, Up: Readline Convenience Functions
+
+Alternate Interface
+-------------------
+
+ An alternate interface is available to plain `readline()'. Some
+applications need to interleave keyboard I/O with file, device, or
+window system I/O, typically by using a main loop to `select()' on
+various file descriptors. To accomodate this need, readline can also
+be invoked as a `callback' function from an event loop. There are
+functions available to make this easy.
+
+ - Function: void rl_callback_handler_install (char *prompt, Vfunction
+ *lhandler)
+ Set up the terminal for readline I/O and display the initial
+ expanded value of PROMPT. Save the value of LHANDLER to use as a
+ callback when a complete line of input has been entered.
+
+ - Function: void rl_callback_read_char ()
+ Whenever an application determines that keyboard input is
+ available, it should call `rl_callback_read_char()', which will
+ read the next character from the current input source. If that
+ character completes the line, `rl_callback_read_char' will invoke
+ the LHANDLER function saved by `rl_callback_handler_install' to
+ process the line. `EOF' is indicated by calling LHANDLER with a
+ `NULL' line.
+
+ - Function: void rl_callback_handler_remove ()
+ Restore the terminal to its initial state and remove the line
+ handler. This may be called from within a callback as well as
+ independently.
+
+An Example
+----------
+
+ Here is a function which changes lowercase characters to their
+uppercase equivalents, and uppercase characters to lowercase. If this
+function was bound to `M-c', then typing `M-c' would change the case of
+the character under point. Typing `M-1 0 M-c' would change the case of
+the following 10 characters, leaving the cursor on the last character
+changed.
+
+ /* Invert the case of the COUNT following characters. */
+ int
+ invert_case_line (count, key)
+ int count, key;
+ {
+ register int start, end, i;
+
+ start = rl_point;
+
+ if (rl_point >= rl_end)
+ return (0);
+
+ if (count < 0)
+ {
+ direction = -1;
+ count = -count;
+ }
+ else
+ direction = 1;
+
+ /* Find the end of the range to modify. */
+ end = start + (count * direction);
+
+ /* Force it to be within range. */
+ if (end > rl_end)
+ end = rl_end;
+ else if (end < 0)
+ end = 0;
+
+ if (start == end)
+ return (0);
+
+ if (start > end)
+ {
+ int temp = start;
+ start = end;
+ end = temp;
+ }
+
+ /* Tell readline that we are modifying the line, so it will save
+ the undo information. */
+ rl_modifying (start, end);
+
+ for (i = start; i != end; i++)
+ {
+ if (uppercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = to_lower (rl_line_buffer[i]);
+ else if (lowercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = to_upper (rl_line_buffer[i]);
+ }
+ /* Move point to on top of the last character changed. */
+ rl_point = (direction == 1) ? end - 1 : start;
+ return (0);
+ }
+
+
+File: readline.info, Node: Custom Completers, Prev: Readline Convenience Functions, Up: Programming with GNU Readline
+
+Custom Completers
+=================
+
+ Typically, a program that reads commands from the user has a way of
+disambiguating commands and data. If your program is one of these, then
+it can provide completion for commands, data, or both. The following
+sections describe how your program and Readline cooperate to provide
+this service.
+
+* Menu:
+
+* How Completing Works:: The logic used to do completion.
+* Completion Functions:: Functions provided by Readline.
+* Completion Variables:: Variables which control completion.
+* A Short Completion Example:: An example of writing completer subroutines.
+
+
+File: readline.info, Node: How Completing Works, Next: Completion Functions, Up: Custom Completers
+
+How Completing Works
+--------------------
+
+ In order to complete some text, the full list of possible completions
+must be available. That is, it is not possible to accurately expand a
+partial word without knowing all of the possible words which make sense
+in that context. The Readline library provides the user interface to
+completion, and two of the most common completion functions: filename
+and username. For completing other types of text, you must write your
+own completion function. This section describes exactly what such
+functions must do, and provides an example.
+
+ There are three major functions used to perform completion:
+
+ 1. The user-interface function `rl_complete ()'. This function is
+ called with the same arguments as other Readline functions
+ intended for interactive use: COUNT and INVOKING_KEY. It
+ isolates the word to be completed and calls `completion_matches
+ ()' to generate a list of possible completions. It then either
+ lists the possible completions, inserts the possible completions,
+ or actually performs the completion, depending on which behavior
+ is desired.
+
+ 2. The internal function `completion_matches ()' uses your
+ "generator" function to generate the list of possible matches, and
+ then returns the array of these matches. You should place the
+ address of your generator function in
+ `rl_completion_entry_function'.
+
+ 3. The generator function is called repeatedly from
+ `completion_matches ()', returning a string each time. The
+ arguments to the generator function are TEXT and STATE. TEXT is
+ the partial word to be completed. STATE is zero the first time
+ the function is called, allowing the generator to perform any
+ necessary initialization, and a positive non-zero integer for each
+ subsequent call. When the generator function returns `(char
+ *)NULL' this signals `completion_matches ()' that there are no
+ more possibilities left. Usually the generator function computes
+ the list of possible completions when STATE is zero, and returns
+ them one at a time on subsequent calls. Each string the generator
+ function returns as a match must be allocated with `malloc()';
+ Readline frees the strings when it has finished with them.
+
+
+ - Function: int rl_complete (int ignore, int invoking_key)
+ Complete the word at or before point. You have supplied the
+ function that does the initial simple matching selection algorithm
+ (see `completion_matches ()'). The default is to do filename
+ completion.
+
+ - Variable: Function * rl_completion_entry_function
+ This is a pointer to the generator function for `completion_matches
+ ()'. If the value of `rl_completion_entry_function' is `(Function
+ *)NULL' then the default filename generator function,
+ `filename_completion_function ()', is used.
+
+
+File: readline.info, Node: Completion Functions, Next: Completion Variables, Prev: How Completing Works, Up: Custom Completers
+
+Completion Functions
+--------------------
+
+ Here is the complete list of callable completion functions present in
+Readline.
+
+ - Function: int rl_complete_internal (int what_to_do)
+ Complete the word at or before point. WHAT_TO_DO says what to do
+ with the completion. A value of `?' means list the possible
+ completions. `TAB' means do standard completion. `*' means
+ insert all of the possible completions. `!' means to display all
+ of the possible completions, if there is more than one, as well as
+ performing partial completion.
+
+ - Function: int rl_complete (int ignore, int invoking_key)
+ Complete the word at or before point. You have supplied the
+ function that does the initial simple matching selection algorithm
+ (see `completion_matches ()' and `rl_completion_entry_function').
+ The default is to do filename completion. This calls
+ `rl_complete_internal ()' with an argument depending on
+ INVOKING_KEY.
+
+ - Function: int rl_possible_completions (int count, int invoking_key))
+ List the possible completions. See description of `rl_complete
+ ()'. This calls `rl_complete_internal ()' with an argument of `?'.
+
+ - Function: int rl_insert_completions (int count, int invoking_key))
+ Insert the list of possible completions into the line, deleting the
+ partially-completed word. See description of `rl_complete ()'.
+ This calls `rl_complete_internal ()' with an argument of `*'.
+
+ - Function: char ** completion_matches (char *text, CPFunction
+ *entry_func)
+ Returns an array of `(char *)' which is a list of completions for
+ TEXT. If there are no completions, returns `(char **)NULL'. The
+ first entry in the returned array is the substitution for TEXT.
+ The remaining entries are the possible completions. The array is
+ terminated with a `NULL' pointer.
+
+ ENTRY_FUNC is a function of two args, and returns a `(char *)'.
+ The first argument is TEXT. The second is a state argument; it is
+ zero on the first call, and non-zero on subsequent calls.
+ eNTRY_FUNC returns a `NULL' pointer to the caller when there are
+ no more matches.
+
+ - Function: char * filename_completion_function (char *text, int state)
+ A generator function for filename completion in the general case.
+ Note that completion in Bash is a little different because of all
+ the pathnames that must be followed when looking up completions
+ for a command. The Bash source is a useful reference for writing
+ custom completion functions.
+
+ - Function: char * username_completion_function (char *text, int state)
+ A completion generator for usernames. TEXT contains a partial
+ username preceded by a random character (usually `~'). As with all
+ completion generators, STATE is zero on the first call and non-zero
+ for subsequent calls.
+
+
+File: readline.info, Node: Completion Variables, Next: A Short Completion Example, Prev: Completion Functions, Up: Custom Completers
+
+Completion Variables
+--------------------
+
+ - Variable: Function * rl_completion_entry_function
+ A pointer to the generator function for `completion_matches ()'.
+ `NULL' means to use `filename_entry_function ()', the default
+ filename completer.
+
+ - Variable: CPPFunction * rl_attempted_completion_function
+ A pointer to an alternative function to create matches. The
+ function is called with TEXT, START, and END. START and END are
+ indices in `rl_line_buffer' saying what the boundaries of TEXT
+ are. If this function exists and returns `NULL', or if this
+ variable is set to `NULL', then `rl_complete ()' will call the
+ value of `rl_completion_entry_function' to generate matches,
+ otherwise the array of strings returned will be used.
+
+ - Variable: CPFunction * rl_filename_quoting_function
+ A pointer to a function that will quote a filename in an
+ application- specific fashion. This is called if filename
+ completion is being attempted and one of the characters in
+ `rl_filename_quote_characters' appears in a completed filename.
+ The function is called with TEXT, MATCH_TYPE, and QUOTE_POINTER.
+ The TEXT is the filename to be quoted. The MATCH_TYPE is either
+ `SINGLE_MATCH', if there is only one completion match, or
+ `MULT_MATCH'. Some functions use this to decide whether or not to
+ insert a closing quote character. The QUOTE_POINTER is a pointer
+ to any opening quote character the user typed. Some functions
+ choose to reset this character.
+
+ - Variable: CPFunction * rl_filename_dequoting_function
+ A pointer to a function that will remove application-specific
+ quoting characters from a filename before completion is attempted,
+ so those characters do not interfere with matching the text
+ against names in the filesystem. It is called with TEXT, the text
+ of the word to be dequoted, and QUOTE_CHAR, which is the quoting
+ character that delimits the filename (usually `'' or `"'). If
+ QUOTE_CHAR is zero, the filename was not in an embedded string.
+
+ - Variable: Function * rl_char_is_quoted_p
+ A pointer to a function to call that determines whether or not a
+ specific character in the line buffer is quoted, according to
+ whatever quoting mechanism the program calling readline uses. The
+ function is called with two arguments: TEXT, the text of the line,
+ and INDEX, the index of the character in the line. It is used to
+ decide whether a character found in
+ `rl_completer_word_break_characters' should be used to break words
+ for the completer.
+
+ - Variable: int rl_completion_query_items
+ Up to this many items will be displayed in response to a
+ possible-completions call. After that, we ask the user if she is
+ sure she wants to see them all. The default value is 100.
+
+ - Variable: char * rl_basic_word_break_characters
+ The basic list of characters that signal a break between words for
+ the completer routine. The default value of this variable is the
+ characters which break words for completion in Bash, i.e., `"
+ \t\n\"\\'`@$><=;|&{("'.
+
+ - Variable: char * rl_basic_quote_characters
+ List of quote characters which can cause a word break.
+
+ - Variable: char * rl_completer_word_break_characters
+ The list of characters that signal a break between words for
+ `rl_complete_internal ()'. The default list is the value of
+ `rl_basic_word_break_characters'.
+
+ - Variable: char * rl_completer_quote_characters
+ List of characters which can be used to quote a substring of the
+ line. Completion occurs on the entire substring, and within the
+ substring `rl_completer_word_break_characters' are treated as any
+ other character, unless they also appear within this list.
+
+ - Variable: char * rl_filename_quote_characters
+ A list of characters that cause a filename to be quoted by the
+ completer when they appear in a completed filename. The default
+ is empty.
+
+ - Variable: char * rl_special_prefixes
+ The list of characters that are word break characters, but should
+ be left in TEXT when it is passed to the completion function.
+ Programs can use this to help determine what kind of completing to
+ do. For instance, Bash sets this variable to "$@" so that it can
+ complete shell variables and hostnames.
+
+ - Variable: int rl_completion_append_character
+ When a single completion alternative matches at the end of the
+ command line, this character is appended to the inserted
+ completion text. The default is a space character (` '). Setting
+ this to the null character (`\0') prevents anything being appended
+ automatically. This can be changed in custom completion functions
+ to provide the "most sensible word separator character" according
+ to an application-specific command line syntax specification.
+
+ - Variable: int rl_ignore_completion_duplicates
+ If non-zero, then disallow duplicates in the matches. Default is
+ 1.
+
+ - Variable: int rl_filename_completion_desired
+ Non-zero means that the results of the matches are to be treated as
+ filenames. This is *always* zero on entry, and can only be changed
+ within a completion entry generator function. If it is set to a
+ non-zero value, directory names have a slash appended and Readline
+ attempts to quote completed filenames if they contain any embedded
+ word break characters.
+
+ - Variable: int rl_filename_quoting_desired
+ Non-zero means that the results of the matches are to be quoted
+ using double quotes (or an application-specific quoting mechanism)
+ if the completed filename contains any characters in
+ `rl_filename_quote_chars'. This is *always* non-zero on entry,
+ and can only be changed within a completion entry generator
+ function. The quoting is effected via a call to the function
+ pointed to by `rl_filename_quoting_function'.
+
+ - Variable: int rl_inhibit_completion
+ If this variable is non-zero, completion is inhibit<ed. The
+ completion character will be inserted as any other bound to
+ `self-insert'.
+
+ - Variable: Function * rl_ignore_some_completions_function
+ This function, if defined, is called by the completer when real
+ filename completion is done, after all the matching names have
+ been generated. It is passed a `NULL' terminated array of matches.
+ The first element (`matches[0]') is the maximal substring common
+ to all matches. This function can re-arrange the list of matches
+ as required, but each element deleted from the array must be freed.
+
+ - Variable: Function * rl_directory_completion_hook
+ This function, if defined, is allowed to modify the directory
+ portion of filenames Readline completes. It is called with the
+ address of a string (the current directory name) as an argument.
+ It could be used to expand symbolic links or shell variables in
+ pathnames.
+
+
+File: readline.info, Node: A Short Completion Example, Prev: Completion Variables, Up: Custom Completers
+
+A Short Completion Example
+--------------------------
+
+ Here is a small application demonstrating the use of the GNU Readline
+library. It is called `fileman', and the source code resides in
+`examples/fileman.c'. This sample application provides completion of
+command names, line editing features, and access to the history list.
+
+ /* fileman.c -- A tiny application which demonstrates how to use the
+ GNU Readline library. This application interactively allows users
+ to manipulate files and their modes. */
+
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <sys/file.h>
+ #include <sys/stat.h>
+ #include <sys/errno.h>
+
+ #include <readline/readline.h>
+ #include <readline/history.h>
+
+ extern char *getwd ();
+ extern char *xmalloc ();
+
+ /* The names of functions that actually do the manipulation. */
+ int com_list (), com_view (), com_rename (), com_stat (), com_pwd ();
+ int com_delete (), com_help (), com_cd (), com_quit ();
+
+ /* A structure which contains information on the commands this program
+ can understand. */
+
+ typedef struct {
+ char *name; /* User printable name of the function. */
+ Function *func; /* Function to call to do the job. */
+ char *doc; /* Documentation for this function. */
+ } COMMAND;
+
+ COMMAND commands[] = {
+ { "cd", com_cd, "Change to directory DIR" },
+ { "delete", com_delete, "Delete FILE" },
+ { "help", com_help, "Display this text" },
+ { "?", com_help, "Synonym for `help'" },
+ { "list", com_list, "List files in DIR" },
+ { "ls", com_list, "Synonym for `list'" },
+ { "pwd", com_pwd, "Print the current working directory" },
+ { "quit", com_quit, "Quit using Fileman" },
+ { "rename", com_rename, "Rename FILE to NEWNAME" },
+ { "stat", com_stat, "Print out statistics on FILE" },
+ { "view", com_view, "View the contents of FILE" },
+ { (char *)NULL, (Function *)NULL, (char *)NULL }
+ };
+
+ /* Forward declarations. */
+ char *stripwhite ();
+ COMMAND *find_command ();
+
+ /* The name of this program, as taken from argv[0]. */
+ char *progname;
+
+ /* When non-zero, this global means the user is done using this program. */
+ int done;
+
+ char *
+ dupstr (s)
+ int s;
+ {
+ char *r;
+
+ r = xmalloc (strlen (s) + 1);
+ strcpy (r, s);
+ return (r);
+ }
+
+ main (argc, argv)
+ int argc;
+ char **argv;
+ {
+ char *line, *s;
+
+ progname = argv[0];
+
+ initialize_readline (); /* Bind our completer. */
+
+ /* Loop reading and executing lines until the user quits. */
+ for ( ; done == 0; )
+ {
+ line = readline ("FileMan: ");
+
+ if (!line)
+ break;
+
+ /* Remove leading and trailing whitespace from the line.
+ Then, if there is anything left, add it to the history list
+ and execute it. */
+ s = stripwhite (line);
+
+ if (*s)
+ {
+ add_history (s);
+ execute_line (s);
+ }
+
+ free (line);
+ }
+ exit (0);
+ }
+
+ /* Execute a command line. */
+ int
+ execute_line (line)
+ char *line;
+ {
+ register int i;
+ COMMAND *command;
+ char *word;
+
+ /* Isolate the command word. */
+ i = 0;
+ while (line[i] && whitespace (line[i]))
+ i++;
+ word = line + i;
+
+ while (line[i] && !whitespace (line[i]))
+ i++;
+
+ if (line[i])
+ line[i++] = '\0';
+
+ command = find_command (word);
+
+ if (!command)
+ {
+ fprintf (stderr, "%s: No such command for FileMan.\n", word);
+ return (-1);
+ }
+
+ /* Get argument to command, if any. */
+ while (whitespace (line[i]))
+ i++;
+
+ word = line + i;
+
+ /* Call the function. */
+ return ((*(command->func)) (word));
+ }
+
+ /* Look up NAME as the name of a command, and return a pointer to that
+ command. Return a NULL pointer if NAME isn't a command name. */
+ COMMAND *
+ find_command (name)
+ char *name;
+ {
+ register int i;
+
+ for (i = 0; commands[i].name; i++)
+ if (strcmp (name, commands[i].name) == 0)
+ return (&commands[i]);
+
+ return ((COMMAND *)NULL);
+ }
+
+ /* Strip whitespace from the start and end of STRING. Return a pointer
+ into STRING. */
+ char *
+ stripwhite (string)
+ char *string;
+ {
+ register char *s, *t;
+
+ for (s = string; whitespace (*s); s++)
+ ;
+
+ if (*s == 0)
+ return (s);
+
+ t = s + strlen (s) - 1;
+ while (t > s && whitespace (*t))
+ t--;
+ *++t = '\0';
+
+ return s;
+ }
+
+ /* **************************************************************** */
+ /* */
+ /* Interface to Readline Completion */
+ /* */
+ /* **************************************************************** */
+
+ char *command_generator ();
+ char **fileman_completion ();
+
+ /* Tell the GNU Readline library how to complete. We want to try to complete
+ on command names if this is the first word in the line, or on filenames
+ if not. */
+ initialize_readline ()
+ {
+ /* Allow conditional parsing of the ~/.inputrc file. */
+ rl_readline_name = "FileMan";
+
+ /* Tell the completer that we want a crack first. */
+ rl_attempted_completion_function = (CPPFunction *)fileman_completion;
+ }
+
+ /* Attempt to complete on the contents of TEXT. START and END bound the
+ region of rl_line_buffer that contains the word to complete. TEXT is
+ the word to complete. We can use the entire contents of rl_line_buffer
+ in case we want to do some simple parsing. Return the array of matches,
+ or NULL if there aren't any. */
+ char **
+ fileman_completion (text, start, end)
+ char *text;
+ int start, end;
+ {
+ char **matches;
+
+ matches = (char **)NULL;
+
+ /* If this word is at the start of the line, then it is a command
+ to complete. Otherwise it is the name of a file in the current
+ directory. */
+ if (start == 0)
+ matches = completion_matches (text, command_generator);
+
+ return (matches);
+ }
+
+ /* Generator function for command completion. STATE lets us know whether
+ to start from scratch; without any state (i.e. STATE == 0), then we
+ start at the top of the list. */
+ char *
+ command_generator (text, state)
+ char *text;
+ int state;
+ {
+ static int list_index, len;
+ char *name;
+
+ /* If this is a new word to complete, initialize now. This includes
+ saving the length of TEXT for efficiency, and initializing the index
+ variable to 0. */
+ if (!state)
+ {
+ list_index = 0;
+ len = strlen (text);
+ }
+
+ /* Return the next name which partially matches from the command list. */
+ while (name = commands[list_index].name)
+ {
+ list_index++;
+
+ if (strncmp (name, text, len) == 0)
+ return (dupstr(name));
+ }
+
+ /* If no names matched, then return NULL. */
+ return ((char *)NULL);
+ }
+
+ /* **************************************************************** */
+ /* */
+ /* FileMan Commands */
+ /* */
+ /* **************************************************************** */
+
+ /* String to pass to system (). This is for the LIST, VIEW and RENAME
+ commands. */
+ static char syscom[1024];
+
+ /* List the file(s) named in arg. */
+ com_list (arg)
+ char *arg;
+ {
+ if (!arg)
+ arg = "";
+
+ sprintf (syscom, "ls -FClg %s", arg);
+ return (system (syscom));
+ }
+
+ com_view (arg)
+ char *arg;
+ {
+ if (!valid_argument ("view", arg))
+ return 1;
+
+ sprintf (syscom, "more %s", arg);
+ return (system (syscom));
+ }
+
+ com_rename (arg)
+ char *arg;
+ {
+ too_dangerous ("rename");
+ return (1);
+ }
+
+ com_stat (arg)
+ char *arg;
+ {
+ struct stat finfo;
+
+ if (!valid_argument ("stat", arg))
+ return (1);
+
+ if (stat (arg, &finfo) == -1)
+ {
+ perror (arg);
+ return (1);
+ }
+
+ printf ("Statistics for `%s':\n", arg);
+
+ printf ("%s has %d link%s, and is %d byte%s in length.\n", arg,
+ finfo.st_nlink,
+ (finfo.st_nlink == 1) ? "" : "s",
+ finfo.st_size,
+ (finfo.st_size == 1) ? "" : "s");
+ printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
+ printf (" Last access at: %s", ctime (&finfo.st_atime));
+ printf (" Last modified at: %s", ctime (&finfo.st_mtime));
+ return (0);
+ }
+
+ com_delete (arg)
+ char *arg;
+ {
+ too_dangerous ("delete");
+ return (1);
+ }
+
+ /* Print out help for ARG, or for all of the commands if ARG is
+ not present. */
+ com_help (arg)
+ char *arg;
+ {
+ register int i;
+ int printed = 0;
+
+ for (i = 0; commands[i].name; i++)
+ {
+ if (!*arg || (strcmp (arg, commands[i].name) == 0))
+ {
+ printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
+ printed++;
+ }
+ }
+
+ if (!printed)
+ {
+ printf ("No commands match `%s'. Possibilties are:\n", arg);
+
+ for (i = 0; commands[i].name; i++)
+ {
+ /* Print in six columns. */
+ if (printed == 6)
+ {
+ printed = 0;
+ printf ("\n");
+ }
+
+ printf ("%s\t", commands[i].name);
+ printed++;
+ }
+
+ if (printed)
+ printf ("\n");
+ }
+ return (0);
+ }
+
+ /* Change to the directory ARG. */
+ com_cd (arg)
+ char *arg;
+ {
+ if (chdir (arg) == -1)
+ {
+ perror (arg);
+ return 1;
+ }
+
+ com_pwd ("");
+ return (0);
+ }
+
+ /* Print out the current working directory. */
+ com_pwd (ignore)
+ char *ignore;
+ {
+ char dir[1024], *s;
+
+ s = getwd (dir);
+ if (s == 0)
+ {
+ printf ("Error getting pwd: %s\n", dir);
+ return 1;
+ }
+
+ printf ("Current directory is %s\n", dir);
+ return 0;
+ }
+
+ /* The user wishes to quit using this program. Just set DONE non-zero. */
+ com_quit (arg)
+ char *arg;
+ {
+ done = 1;
+ return (0);
+ }
+
+ /* Function which tells you that you can't do this. */
+ too_dangerous (caller)
+ char *caller;
+ {
+ fprintf (stderr,
+ "%s: Too dangerous for me to distribute. Write it yourself.\n",
+ caller);
+ }
+
+ /* Return non-zero if ARG is a valid argument for CALLER, else print
+ an error message and return zero. */
+ int
+ valid_argument (caller, arg)
+ char *caller, *arg;
+ {
+ if (!arg || !*arg)
+ {
+ fprintf (stderr, "%s: Argument required.\n", caller);
+ return (0);
+ }
+
+ return (1);
+ }
+
+
+File: readline.info, Node: Concept Index, Next: Function and Variable Index, Prev: Programming with GNU Readline, Up: Top
+
+Concept Index
+*************
+
+* Menu:
+
+* command editing: Readline Bare Essentials.
+* editing command lines: Readline Bare Essentials.
+* initialization file, readline: Readline Init File.
+* interaction, readline: Readline Interaction.
+* kill ring: Readline Killing Commands.
+* killing text: Readline Killing Commands.
+* notation, readline: Readline Bare Essentials.
+* readline, function: Basic Behavior.
+* yanking text: Readline Killing Commands.
+
+
+File: readline.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top
+
+Function and Variable Index
+***************************
+
+* Menu:
+
+* (: Utility Functions.
+* abort (C-g): Miscellaneous Commands.
+* accept-line (Newline, Return): Commands For History.
+* alphabetic: Utility Functions.
+* backward-char (C-b): Commands For Moving.
+* backward-delete-char (Rubout): Commands For Text.
+* backward-kill-line (C-x Rubout): Commands For Killing.
+* backward-kill-word (M-DEL): Commands For Killing.
+* backward-word (M-b): Commands For Moving.
+* beginning-of-history (M-<): Commands For History.
+* beginning-of-line (C-a): Commands For Moving.
+* bell-style: Readline Init File Syntax.
+* call-last-kbd-macro (C-x e): Keyboard Macros.
+* capitalize-word (M-c): Commands For Text.
+* character-search (C-]): Miscellaneous Commands.
+* character-search-backward (M-C-]): Miscellaneous Commands.
+* clear-screen (C-l): Commands For Moving.
+* comment-begin: Readline Init File Syntax.
+* complete (TAB): Commands For Completion.
+* completion-query-items: Readline Init File Syntax.
+* completion_matches: Completion Functions.
+* convert-meta: Readline Init File Syntax.
+* copy-backward-word (): Commands For Killing.
+* copy-forward-word (): Commands For Killing.
+* copy-region-as-kill (): Commands For Killing.
+* delete-char (C-d): Commands For Text.
+* delete-horizontal-space (): Commands For Killing.
+* digit-argument (M-0, M-1, ... M-): Numeric Arguments.
+* digit_p: Utility Functions.
+* digit_value: Utility Functions.
+* ding: Utility Functions.
+* disable-completion: Readline Init File Syntax.
+* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands.
+* downcase-word (M-l): Commands For Text.
+* dump-functions (): Miscellaneous Commands.
+* dump-macros (): Miscellaneous Commands.
+* dump-variables (): Miscellaneous Commands.
+* editing-mode: Readline Init File Syntax.
+* enable-keypad: Readline Init File Syntax.
+* end-kbd-macro (C-x )): Keyboard Macros.
+* end-of-history (M->): Commands For History.
+* end-of-line (C-e): Commands For Moving.
+* exchange-point-and-mark (C-x C-x): Miscellaneous Commands.
+* expand-tilde: Readline Init File Syntax.
+* filename_completion_function: Completion Functions.
+* forward-char (C-f): Commands For Moving.
+* forward-search-history (C-s): Commands For History.
+* forward-word (M-f): Commands For Moving.
+* free_undo_list: Allowing Undoing.
+* history-search-backward (): Commands For History.
+* history-search-forward (): Commands For History.
+* horizontal-scroll-mode: Readline Init File Syntax.
+* input-meta: Readline Init File Syntax.
+* insert-comment (M-#): Miscellaneous Commands.
+* insert-completions (M-*): Commands For Completion.
+* keymap: Readline Init File Syntax.
+* kill-line (C-k): Commands For Killing.
+* kill-region (): Commands For Killing.
+* kill-whole-line (): Commands For Killing.
+* kill-word (M-d): Commands For Killing.
+* lowercase_p: Utility Functions.
+* mark-modified-lines: Readline Init File Syntax.
+* meta-flag: Readline Init File Syntax.
+* next-history (C-n): Commands For History.
+* non-incremental-forward-search-history (M-n): Commands For History.
+* non-incremental-reverse-search-history (M-p): Commands For History.
+* numeric: Utility Functions.
+* output-meta: Readline Init File Syntax.
+* possible-completions (M-?): Commands For Completion.
+* prefix-meta (ESC): Miscellaneous Commands.
+* previous-history (C-p): Commands For History.
+* quoted-insert (C-q, C-v): Commands For Text.
+* re-read-init-file (C-x C-r): Miscellaneous Commands.
+* readline: Basic Behavior.
+* redraw-current-line (): Commands For Moving.
+* reverse-search-history (C-r): Commands For History.
+* revert-line (M-r): Miscellaneous Commands.
+* rl_add_defun: Function Naming.
+* rl_add_undo: Allowing Undoing.
+* rl_attempted_completion_function: Completion Variables.
+* rl_basic_quote_characters: Completion Variables.
+* rl_basic_word_break_characters: Completion Variables.
+* rl_begin_undo_group: Allowing Undoing.
+* rl_binding_keymap: Readline Variables.
+* rl_bind_key: Binding Keys.
+* rl_bind_key_in_map: Binding Keys.
+* rl_callback_handler_install: Alternate Interface.
+* rl_callback_handler_remove: Alternate Interface.
+* rl_callback_read_char: Alternate Interface.
+* rl_char_is_quoted_p: Completion Variables.
+* rl_clear_message: Redisplay.
+* rl_complete: Completion Functions.
+* rl_complete: How Completing Works.
+* rl_completer_quote_characters: Completion Variables.
+* rl_completer_word_break_characters: Completion Variables.
+* rl_complete_internal: Completion Functions.
+* rl_completion_append_character: Completion Variables.
+* rl_completion_entry_function: Completion Variables.
+* rl_completion_entry_function: How Completing Works.
+* rl_completion_query_items: Completion Variables.
+* rl_copy_keymap: Keymaps.
+* rl_copy_text: Modifying Text.
+* rl_delete_text: Modifying Text.
+* rl_directory_completion_hook: Completion Variables.
+* rl_discard_keymap: Keymaps.
+* rl_done: Readline Variables.
+* rl_do_undo: Allowing Undoing.
+* rl_end: Readline Variables.
+* rl_end_undo_group: Allowing Undoing.
+* rl_event_hook: Readline Variables.
+* rl_executing_keymap: Readline Variables.
+* rl_filename_completion_desired: Completion Variables.
+* rl_filename_dequoting_function: Completion Variables.
+* rl_filename_quote_characters: Completion Variables.
+* rl_filename_quoting_desired: Completion Variables.
+* rl_filename_quoting_function: Completion Variables.
+* rl_forced_update_display: Redisplay.
+* rl_function_dumper: Associating Function Names and Bindings.
+* rl_function_of_keyseq: Associating Function Names and Bindings.
+* rl_generic_bind: Binding Keys.
+* rl_getc: Utility Functions.
+* rl_getc_function: Readline Variables.
+* rl_get_keymap: Keymaps.
+* rl_get_keymap_by_name: Keymaps.
+* rl_get_keymap_name: Keymaps.
+* rl_ignore_completion_duplicates: Completion Variables.
+* rl_ignore_some_completions_function: Completion Variables.
+* rl_inhibit_completion: Completion Variables.
+* rl_initialize: Utility Functions.
+* rl_insert_completions: Completion Functions.
+* rl_insert_text: Modifying Text.
+* rl_instream: Readline Variables.
+* rl_invoking_keyseqs: Associating Function Names and Bindings.
+* rl_invoking_keyseqs_in_map: Associating Function Names and Bindings.
+* rl_kill_text: Modifying Text.
+* rl_library_version: Readline Variables.
+* rl_line_buffer: Readline Variables.
+* rl_list_funmap_names: Associating Function Names and Bindings.
+* rl_make_bare_keymap: Keymaps.
+* rl_make_keymap: Keymaps.
+* rl_mark: Readline Variables.
+* rl_message: Redisplay.
+* rl_modifying: Allowing Undoing.
+* rl_named_function: Associating Function Names and Bindings.
+* rl_on_new_line: Redisplay.
+* rl_outstream: Readline Variables.
+* rl_parse_and_bind: Binding Keys.
+* rl_pending_input: Readline Variables.
+* rl_point: Readline Variables.
+* rl_possible_completions: Completion Functions.
+* rl_prompt: Readline Variables.
+* rl_readline_name: Readline Variables.
+* rl_read_init_file: Binding Keys.
+* rl_read_key: Utility Functions.
+* rl_redisplay: Redisplay.
+* rl_redisplay_function: Readline Variables.
+* rl_reset_line_state: Redisplay.
+* rl_reset_terminal: Utility Functions.
+* rl_set_keymap: Keymaps.
+* rl_special_prefixes: Completion Variables.
+* rl_startup_hook: Readline Variables.
+* rl_stuff_char: Utility Functions.
+* rl_terminal_name: Readline Variables.
+* rl_unbind_key: Binding Keys.
+* rl_unbind_key_in_map: Binding Keys.
+* self-insert (a, b, A, 1, !, ...): Commands For Text.
+* set-mark (C-@): Miscellaneous Commands.
+* show-all-if-ambiguous: Readline Init File Syntax.
+* start-kbd-macro (C-x (): Keyboard Macros.
+* tab-insert (M-TAB): Commands For Text.
+* tilde-expand (M-~): Miscellaneous Commands.
+* to_lower: Utility Functions.
+* to_upper: Utility Functions.
+* transpose-chars (C-t): Commands For Text.
+* transpose-words (M-t): Commands For Text.
+* undo (C-_, C-x C-u): Miscellaneous Commands.
+* universal-argument (): Numeric Arguments.
+* unix-line-discard (C-u): Commands For Killing.
+* unix-word-rubout (C-w): Commands For Killing.
+* upcase-word (M-u): Commands For Text.
+* uppercase_p: Utility Functions.
+* username_completion_function: Completion Functions.
+* visible-stats: Readline Init File Syntax.
+* yank (C-y): Commands For Killing.
+* yank-last-arg (M-., M-_): Commands For History.
+* yank-nth-arg (M-C-y): Commands For History.
+* yank-pop (M-y): Commands For Killing.
+
+

Tag Table:
-(Indirect)
-Node: Top1000
-Node: Command Line Editing1613
-Node: Introduction and Notation2264
-Node: Readline Interaction3284
-Node: Readline Bare Essentials4423
-Node: Readline Movement Commands5953
-Node: Readline Killing Commands6844
-Node: Readline Arguments8547
-Node: Readline Init File9498
-Node: Readline Init Syntax10502
-Node: Conditional Init Constructs17435
-Node: Bindable Readline Commands19681
-Node: Commands For Moving20351
-Node: Commands For History21199
-Node: Commands For Text23783
-Node: Commands For Killing25522
-Node: Numeric Arguments26971
-Node: Commands For Completion27598
-Node: Keyboard Macros28525
-Node: Miscellaneous Commands29084
-Node: Readline vi Mode30372
-Node: Programming with GNU Readline32122
-Node: Basic Behavior32919
-Node: Custom Functions36232
-Node: The Function Type36845
-Node: Function Writing37690
-Node: Readline Convenience Functions40453
-Node: Function Naming41118
-Node: Keymaps42345
-Node: Binding Keys43856
-Node: Associating Function Names and Bindings45650
-Node: Allowing Undoing46812
-Node: Redisplay49397
-Node: Modifying Text50467
-Node: Utility Functions51378
-Node: Custom Completers54444
-Node: How Completing Works55165
-Node: Completion Functions58156
-Node: Completion Variables61171
-Node: A Short Completion Example64996
-Node: Concept Index77230
-Node: Function and Variable Index77717
+Node: Top1042
+Node: Command Line Editing1655
+Node: Introduction and Notation2306
+Node: Readline Interaction3315
+Node: Readline Bare Essentials4504
+Node: Readline Movement Commands6034
+Node: Readline Killing Commands6925
+Node: Readline Arguments8628
+Node: Searching9602
+Node: Readline Init File11203
+Node: Readline Init File Syntax12266
+Node: Conditional Init Constructs20056
+Node: Sample Init File22338
+Node: Bindable Readline Commands25372
+Node: Commands For Moving26123
+Node: Commands For History26971
+Node: Commands For Text29585
+Node: Commands For Killing31328
+Node: Numeric Arguments33355
+Node: Commands For Completion34480
+Node: Keyboard Macros35364
+Node: Miscellaneous Commands35923
+Node: Readline vi Mode38734
+Node: Programming with GNU Readline40490
+Node: Basic Behavior41359
+Node: Custom Functions44672
+Node: The Function Type45273
+Node: Function Writing46118
+Node: Readline Variables47202
+Node: Readline Convenience Functions50290
+Node: Function Naming51021
+Node: Keymaps52248
+Node: Binding Keys53962
+Node: Associating Function Names and Bindings55906
+Node: Allowing Undoing57484
+Node: Redisplay60069
+Node: Modifying Text61140
+Node: Utility Functions62051
+Node: Alternate Interface64170
+Node: Custom Completers67464
+Node: How Completing Works68185
+Node: Completion Functions71181
+Node: Completion Variables74196
+Node: A Short Completion Example81338
+Node: Concept Index93644
+Node: Function and Variable Index94389

End Tag Table
diff --git a/doc/readline.ps b/doc/readline.ps
index e96ac47..ace5d14 100644
--- a/doc/readline.ps
+++ b/doc/readline.ps
@@ -1,3766 +1,3856 @@
-%!PS-Adobe-2.0
-%%Creator: dvipsk 5.490s Copyright 1986, 1992 Radical Eye Software
-%%Title: readline.dvi
-%%Pages: 52 1
-%%BoundingBox: 0 0 612 792
-%%EndComments
+%!PS (but not EPSF; comments have been disabled)
%DVIPSCommandLine: dvips -D 300 -o readline.ps readline.dvi
-%%BeginProcSet: tex.pro
-%!
-/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
-B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
-concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
--72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
-currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
-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
-/IE 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 IE N end dup{/foo setfont}2 array copy cvx N load 0 nn
-put /ctr 0 N[}B /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 dup definefont setfont}B /ch-width{ch-data
-dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128
-ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127
-sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup 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 /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get
-S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height
-sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0
--1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup
-type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1
-ne{dup dup length 1 sub dup 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 dup 1 get dup mul exch 0 get dup mul add
-.99 lt{/FV}{/RV}ifelse load def pop}N /eop{SI restore showpage userdict
-/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}
-if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE
-S 1 string dup 0 3 index put cvn put}for 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 /rulex 0 N /ruley
-0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop
-product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval
-(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
-rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
-ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /FV{gsave
-transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
-rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup
-/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 40258431 52099146 1000 300 300 @start /Fa 1 59
-df<70F8F8F87005057C840D>58 D E /Fb 1 59 df<78FCFCFCFC7806067B8510>58
-D E /Fc 49 127 df<60F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F0600417789614>33
-D<00800180018007E01FF039BC619CC18EC18EC18EC18471807F803FE00FF001F8019C018E4186
-E186E186E186718C39B81FF00FC00180018000800F1D7E9914>36 D<00C001C0030006000C001C
-0038003000700070006000E000E000E000E000E000E000E000600070007000300038001C000C00
-0600030001C000C00A1D7A9914>40 D<8000C0006000300018001C000E00060007000700030003
-8003800380038003800380038003000700070006000E001C00180030006000C0008000091D7C99
-14>I<70F8FCFC7C0C1830E0C0060A798414>44 D<FFFEFFFEFFFE0F037E8C14>I<70F8F8F87005
-05798414>I<07C00FE01C7038383018701C701CE00EE00EE00EE00EE00EE00EE00EE00EE00E70
-1C701C383838381C700FE007C00F177E9614>48 D<0300030007000F003F00F700470007000700
-0700070007000700070007000700070007000700070007007FF07FF00C177C9614>I<000E003E
-007C00F003E007C01F003E00F800F000F8003E001F0007C003E000F0007C003E000E0F137E9414
->60 D<4000E000F8007C001E000F8007C001F000F8003E001E003E00F801F007C00F801E007C00
-F800E00040000F157E9514>62 D<1FE03FF8701CE00EE00E400E003C007000E001C00380038003
-8003800300000000000000000003000780078003000F177E9614>I<01C00003E00003E0000360
-000360000770000770000770000770000630000E38000E38000E38000E38000E38001FFC001FFC
-001C1C001C1C003C1E00380E00FE3F80FE3F8011177F9614>65 D<FFF0FFFC381E380E38073807
-38073807380E381E3FFC3FFC381E380E38073807380738073807380E381EFFFCFFF810177F9614
->I<03C60FFE1C3E181E381E700E700E600EE000E000E000E000E000E000E000600E700E700E38
-0C181C1C380FF003C00F177E9614>I<FFE000FFF800383C00381E00380E003807003807003807
-00380380380380380380380380380380380380380380380380380700380700380E00381E00383C
-00FFF800FFE00011177F9614>I<FFFF00FFFF0038070038070038070038070038000038000038
-70003870003FF0003FF000387000387000380000380000380000380380380380380380380380FF
-FF80FFFF8011177F9614>I<FF00FF003800380038003800380038003800380038003800380038
-003800380038003807380738073807FFFFFFFF10177E9614>76 D<FE0FE0FE0FE03E0F803B1B80
-3B1B803B1B803B1B803BBB803BBB8039B38039B38039B38039F38038E38038E380380380380380
-380380380380380380380380FE0FE0FE0FE01317809614>I<FE3F80FE3F803E0E003B0E003B0E
-003B0E003B0E003B8E00398E00398E0039CE0039CE0039CE0038CE0038CE0038EE00386E00386E
-00386E00386E00383E00FE3E00FE3E0011177F9614>I<FFE000FFF800383C00381C00380E0038
-0E00380E00380E00381C00383C003FF8003FF000383800381C00381C00381C00381C00381C0038
-1C80381DC0381DC0FE0F80FE070012177F9614>82 D<0FCC1FFC307C603CE01CE01CE01CE00070
-007E003FE00FF001F8001C001E000E600EE00EE00EF01CF838FFF0C7E00F177E9614>I<7FFF80
-FFFF80E1C380E1C380E1C380E1C38001C00001C00001C00001C00001C00001C00001C00001C000
-01C00001C00001C00001C00001C00001C00001C0000FF8000FF80011177F9614>I<1FC0007FF0
-00707800201800001C00001C0007FC001FFC003C1C00701C00E01C00E01C00E01C00707C003FFF
-800F8F8011107E8F14>97 D<FC0000FC00001C00001C00001C00001C00001C00001CF8001DFE00
-1F07001E03001C03801C01C01C01C01C01C01C01C01C01C01C01C01C03801E03001F0E001DFC00
-0CF8001217809614>I<03F80FFC1C1C380870006000E000E000E000E00060007000380E1C1E0F
-FC03F00F107E8F14>I<007E00007E00000E00000E00000E00000E00000E0007CE000FFE001C3E
-00301E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E00301E00383E001FEFC007CF
-C012177F9614>I<07E00FF01C38301C700CE00EE00EFFFEFFFEE00060007000380E1C1E0FFC03
-F00F107E8F14>I<007C00FE01CE03840380038003807FFEFFFE03800380038003800380038003
-80038003800380038003807FFC7FFC0F177F9614>I<07CF001FFF80383B80301800701C00701C
-00701C003018003838003FF00037C0007000007000003FF8001FFC003FFE00700F00E00380E003
-80E00380E003807007003C1E001FFC0007F00011197F8F14>I<FC0000FC00001C00001C00001C
-00001C00001C00001C78001DFE001F86001E07001C07001C07001C07001C07001C07001C07001C
-07001C07001C07001C0700FF8FE0FF8FE01317809614>I<030007800780030000000000000000
-007F807F80038003800380038003800380038003800380038003800380FFFCFFFC0E187D9714>
-I<FC0000FC00001C00001C00001C00001C00001C00001DFF801DFF801C3C001C78001CF0001DE0
-001FC0001FC0001FE0001EF0001C70001C38001C38001C1C00FE3F80FE3F8011177F9614>107
-D<FF80FF8003800380038003800380038003800380038003800380038003800380038003800380
-03800380FFFEFFFE0F177E9614>I<FB8E00FFDF003CF3803CF38038E38038E38038E38038E380
-38E38038E38038E38038E38038E38038E380FEFBE0FE79E01310808F14>I<FC7800FDFE001F86
-001E07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF8FE0FF8F
-E01310808F14>I<07C01FF03C78701C701CE00EE00EE00EE00EE00EE00E701C783C3C781FF007
-C00F107E8F14>I<FCF800FDFE001F07001E03001C03801C01C01C01C01C01C01C01C01C01C01C
-01C01C03801E03001F0E001DFC001CF8001C00001C00001C00001C00001C00001C0000FF8000FF
-80001218808F14>I<03CE000FFE001C3E00301E00700E00E00E00E00E00E00E00E00E00E00E00
-E00E00700E00301E001C3E000FEE0007CE00000E00000E00000E00000E00000E00000E00007FC0
-007FC012187F8F14>I<FE1F00FE7F800EE3800F81000F00000F00000E00000E00000E00000E00
-000E00000E00000E00000E0000FFF000FFF00011107F8F14>I<0FD83FF86038C038C038F0007F
-803FF007F8001C6006E006F006F81CFFF8CFE00F107E8F14>I<030007000700070007007FFCFF
-FC07000700070007000700070007000700070E070E070E070C03FC00F00F157F9414>I<FC3F00
-FC3F001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C1F00
-0FFFE003E7E01310808F14>I<FE3F80FE3F801C1C001C1C001C1C001C1C000E38000E38000E38
-0006300007700007700007700003E00003E00003E00011107F8F14>I<FF7F80FF7F80380E0038
-0E00380E00380E0039CE0039CE0019CC001B6C001B6C001A6C001A6C001E7C000E78000E780011
-107F8F14>I<7E3F007E3F001E38000E780007700007E00003E00001C00003C00003E000077000
-0E78000E38001C1C00FE3F80FE3F8011107F8F14>I<FE3F80FE3F801C1C001C1C001C1C000E1C
-000E38000E380007380007300007300003700003700001E00001E00001E00001C00001C00001C0
-000380007380007700007E00003C000011187F8F14>I<3FFF7FFF700E701C7038007000E001C0
-038007000E001C0738077007FFFFFFFF10107F8F14>I<1C103F38E7E041C00D047D9614>126
-D E /Fd 1 59 df<60F0F06004047D830B>58 D E /Fe 41 123 df<00FC000182000703000607
-000E02000E00000E00000E00000E00000E0000FFFF000E07000E07000E07000E07000E07000E07
-000E07000E07000E07000E07000E07000E07000E07000E07007F0FE0131A809915>12
-D<00FF000387000707000607000E07000E07000E07000E07000E07000E0700FFFF000E07000E07
-000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07007F9F
-E0131A809915>I<60F0F07010101020204080040B7D830B>44 D<FFC0FFC00A0280880D>I<0780
-18603030303060186018E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C6018601870
-383030186007800E187E9713>48 D<03000700FF00070007000700070007000700070007000700
-07000700070007000700070007000700070007000700FFF00C187D9713>I<0F80106020304038
-803CC01CE01C401C003C003800380070006000C001800100020004040804100430083FF87FF8FF
-F80E187E9713>I<0F8010E02070607870382038007800700070006000C00F8000E00070003800
-3C003CE03CE03CC03C4038407030E00F800E187E9713>I<00300030007000F000F00170037002
-7004700C7008701070307020704070C070FFFF00700070007000700070007007FF10187F9713>
-I<30183FF03FE03FC02000200020002000200027C03860203000380018001C001C401CE01CE01C
-80184038403030E00F800E187E9713>I<01E006100C1818383038300070006000E000E7C0E860
-F030F018E018E01CE01CE01C601C601C701830183030186007C00E187E9713>I<40007FFE7FFC
-7FFC40088010801080200040004000800180018001000300030003000300070007000700070007
-00070002000F197E9813>I<078018603030201860186018601870103C303E600F8007C019F030
-F86038401CC00CC00CC00CC00C6008201018600FC00E187E9713>I<07801860303070306018E0
-18E018E01CE01CE01C601C603C303C185C0F9C001C00180018003870307060604021801F000E18
-7E9713>I<FFE07F800E001E000E0018000E0010000E0020000E0040000E0080000E0100000E02
-00000E0400000E0800000E1C00000E2E00000E4E00000E8700000F0380000E0380000E01C0000E
-00E0000E00E0000E0070000E0070000E0038000E001C000E003E00FFE0FF80191A7E991E>75
-D<FF801FE01E0007000E0006000F000400070008000780080003C0100001C0300001E0200000F0
-4000007040000078800000388000001D0000001F0000000E0000000E0000000E0000000E000000
-0E0000000E0000000E0000000E0000000E0000000E000000FFE0001B1A7F991D>89
-D<3F8070C070E020700070007007F01C7030707070E070E071E071E0F171FB1E3C10107E8F13>
-97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001CF8001F0E00
-1E07001C03801C01801C01C01C01C01C01C01C01C01C01C01C01C01C03801C03001E07001B0C00
-10F000121A7F9915>I<07F80C1C381C30087000E000E000E000E000E000E0007000300438080C
-1807E00E107F8F11>I<007E00000E00000E00000E00000E00000E00000E00000E00000E00000E
-0003CE000C3E00380E00300E00700E00E00E00E00E00E00E00E00E00E00E00E00E00600E00700E
-00381E001C2E0007CFC0121A7F9915>I<07C01C3030187018600CE00CFFFCE000E000E000E000
-6000300438080C1807E00E107F8F11>I<01F0031807380E100E000E000E000E000E000E00FFC0
-0E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00D1A80990C>I<0FCE
-187330307038703870387038303018602FC02000600070003FF03FFC1FFE600FC003C003C003C0
-036006381C07E010187F8F13>I<FC00001C00001C00001C00001C00001C00001C00001C00001C
-00001C00001CF8001D0C001E0E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C
-0E001C0E001C0E001C0E00FF9FC0121A7F9915>I<18003C003C00180000000000000000000000
-0000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091A80990A
->I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3F801C1E001C
-18001C10001C20001C40001DC0001FE0001CE0001C70001C78001C38001C1C001C1E001C1F00FF
-3FC0121A7F9914>107 D<FC001C001C001C001C001C001C001C001C001C001C001C001C001C00
-1C001C001C001C001C001C001C001C001C001C001C00FF80091A80990A>I<FC7C1F001D8E6380
-1E0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701
-C01C0701C01C0701C01C0701C0FF9FE7F81D107F8F20>I<FCF8001D0C001E0E001E0E001C0E00
-1C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00FF9FC012107F8F15>
-I<07E01C38300C700E6006E007E007E007E007E007E0076006700E381C1C3807E010107F8F13>
-I<FCF8001F0E001E07001C03801C03801C01C01C01C01C01C01C01C01C01C01C01C01C03801C03
-001E07001F0C001CF0001C00001C00001C00001C00001C00001C0000FF800012177F8F15>I<03
-C2000C2600381E00300E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E00700E0038
-1E001C2E0007CE00000E00000E00000E00000E00000E00000E00007FC012177F8F14>I<FCE01D
-701E701E201C001C001C001C001C001C001C001C001C001C001C00FFC00C107F8F0F>I<1F2060
-E04020C020C020F0007F003FC01FE000F080708030C030C020F0408F800C107F8F0F>I<040004
-0004000C000C001C003C00FFC01C001C001C001C001C001C001C001C001C201C201C201C201C20
-0E4003800B177F960F>I<FC7E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C
-0E001C0E001C0E001C0E001C1E000C2E0007CFC012107F8F15>I<FF1F803C06001C04001C0400
-1E0C000E08000E080007100007100007900003A00003A00001C00001C00001C00000800011107F
-8F14>I<FF3F9F803C0E0700380E06001C1604001C1704001E170C000E2308000E2388000F2398
-00074190000741D00003C1E0000380E0000380E0000180C0000100400019107F8F1C>I<FF3F80
-3C1C001C18000E100007200007600003C00001C00001E00003E000027000043800083800181C00
-381E00FC3FC012107F8F14>I<FF1F803C06001C04001C04001E0C000E08000E08000710000710
-0007900003A00003A00001C00001C00001C000008000008000010000010000E10000E20000E400
-0078000011177F8F14>I<7FF86070407040E041C041C00380070007000E081C081C0838107010
-7030FFF00D107F8F11>I E /Ff 2 42 df<007000E001C00380078007000E001E001E003C003C
-003C0078007800780078007000F000F000F000F000F000F000F000F000F000F000F000F0007000
-78007800780078003C003C003C001E001E000E0007000780038001C000E000700C2E7EA112>40
-D<E000700038001C001E000E0007000780078003C003C003C001E001E001E001E000E000F000F0
-00F000F000F000F000F000F000F000F000F000F000E001E001E001E001E003C003C003C0078007
-8007000E001E001C0038007000E0000C2E7DA112>I E /Fg 26 122 df<000FF07F00007FFBFF
-C001F83FE3C003F07F87E007E07F87E00FC07F07E00FC07F03C00FC03F00000FC03F00000FC03F
-00000FC03F00000FC03F00000FC03F0000FFFFFFFC00FFFFFFFC000FC03F00000FC03F00000FC0
-3F00000FC03F00000FC03F00000FC03F00000FC03F00000FC03F00000FC03F00000FC03F00000F
-C03F00000FC03F00000FC03F00000FC03F00000FC03F00000FC03F00000FC03F00000FC03F0000
-7FF9FFF0007FF9FFF00023237FA221>11 D<0007F800007FFC0001FC0E0003F01F0007E03F000F
-C03F000FC03F000FC03F000FC01E000FC00C000FC000000FC000000FC0FF80FFFFFF80FFFFFF80
-0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F
-800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F807FF8FFF07FF8
-FFF01C237FA220>I<07FE00001FFF80003F07E0003F03F0003F01F0003F01F8001E01F8000001
-F8000001F800003FF80003FDF8001F81F8003E01F8007C01F800F801F800F801F800F801F800F8
-01F8007C02F8007E0CF8001FF87F8007E03F8019167E951C>97 D<FF800000FF8000001F800000
-1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
-001F87F0001FBFFC001FF03E001FC01F001F800F801F800FC01F8007C01F8007E01F8007E01F80
-07E01F8007E01F8007E01F8007E01F8007E01F8007C01F8007C01F800FC01F800F801FC01F001E
-707E001C3FFC00180FE0001B237EA220>I<00FF8007FFE00F83F01F03F03E03F07E03F07C01E0
-7C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00003F00301F00600FC0E0
-07FF8000FE0014167E9519>I<0001FF000001FF0000003F0000003F0000003F0000003F000000
-3F0000003F0000003F0000003F0000003F0000003F0000003F0000FE3F0007FFBF000FC1FF001F
-007F003E003F007E003F007C003F007C003F00FC003F00FC003F00FC003F00FC003F00FC003F00
-FC003F00FC003F007C003F007E003F003E003F001F007F000F81FF0007FF3FE001FC3FE01B237E
-A220>I<00FE0007FF800F83C01F01E03E00F07E00F07C00F87C0078FC0078FFFFF8FFFFF8FC00
-00FC0000FC00007C00007C00003E00183E00181F00300F80E003FFC000FF0015167E951A>I<00
-1F8000FFE001F1F003E3F007E3F00FC3F00FC1E00FC0000FC0000FC0000FC0000FC0000FC000FF
-FE00FFFE000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F
-C0000FC0000FC0000FC0000FC0000FC0000FC0007FFC007FFC0014237EA212>I<00FE0F8003FF
-9FC00F83E3C01F01F3C01E00F0003E00F8003E00F8003E00F8003E00F8003E00F8001E00F0001F
-01F0000F83E0000BFF800008FE000018000000180000001C0000001FFFE0001FFFFC000FFFFF00
-07FFFF001FFFFF807C001FC078000FC0F80007C0F80007C0F80007C07C000F803E001F001F807E
-000FFFFC0001FFE0001A217F951D>I<FF800000FF8000001F8000001F8000001F8000001F8000
-001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F83F0001F8FFC001F98
-7E001FA03E001FC03F001FC03F001F803F001F803F001F803F001F803F001F803F001F803F001F
-803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00FFF1FFE0FFF1FFE0
-1B237DA220>I<1E003F007F807F807F807F803F001E00000000000000000000000000FF80FF80
-1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FF
-F00C247EA30F>I<FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F8000
-001F8000001F8000001F8000001F8000001F8000001F80FF801F80FF801F803C001F8030001F80
-E0001F81C0001F8300001F8600001F9E00001FBE00001FFF00001FDF80001F8FC0001F07C0001F
-07E0001F03F0001F01F8001F00F8001F00FC001F007E00FFE1FFC0FFE1FFC01A237EA21E>107
-D<FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
-1F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF00C237EA20F>I<
-FF03F803F800FF0FFE0FFE001F183F183F001F201F201F001F401FC01F801F401FC01F801F801F
-801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
-1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
-801F80FFF0FFF0FFF0FFF0FFF0FFF02C167D9531>I<FF03F000FF0FFC001F187E001F203E001F
-403F001F403F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00
-1F803F001F803F001F803F001F803F001F803F001F803F00FFF1FFE0FFF1FFE01B167D9520>I<
-00FF0007FFE00F81F01F00F83E007C7C003E7C003E7C003EFC003FFC003FFC003FFC003FFC003F
-FC003FFC003F7C003E7E007E3E007C1F00F80F81F007FFE000FF0018167E951D>I<FF87F000FF
-BFFC001FF07E001FC01F001F800F801F800FC01F800FC01F8007E01F8007E01F8007E01F8007E0
-1F8007E01F8007E01F8007E01F8007C01F800FC01F800FC01F801F801FC01F001FF07E001FBFFC
-001F8FE0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000FFF0
-0000FFF000001B207E9520>I<00FE030007FF07000FC1CF001F00DF003F007F007E003F007E00
-3F007C003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F007E003F007E
-003F003E007F001F00FF000FC1FF0007FF3F0001FC3F0000003F0000003F0000003F0000003F00
-00003F0000003F0000003F0000003F000001FFE00001FFE01B207E951E>I<FF0F80FF1FE01F33
-F01F63F01F43F01F43F01FC1E01F80001F80001F80001F80001F80001F80001F80001F80001F80
-001F80001F80001F80001F8000FFF800FFF80014167E9518>I<07F9801FFF80380780700380F0
-0180F00180F80000FF0000FFF8007FFE003FFF001FFF8007FF80003FC0C007C0C003C0E003C0E0
-03C0F00380FC0F00EFFE00C3F80012167E9517>I<00C00000C00000C00000C00001C00001C000
-03C00007C0000FC0001FC000FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC000
-0FC0000FC0000FC0000FC0000FC1800FC1800FC1800FC1800FC18007C18007E30003FE0000FC00
-11207F9F16>I<FF81FF00FF81FF001F803F001F803F001F803F001F803F001F803F001F803F00
-1F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F807F
-001F80FF000FC1BF0007FF3FE001FC3FE01B167D9520>I<FFF01FE0FFF01FE00FC007000FC006
-000FE00E0007E00C0007F01C0003F0180003F8180001F8300001F8300000FC600000FC6000007E
-C000007EC000007FC000003F8000003F8000001F0000001F0000000E0000000E00001B167F951E
->I<FFF3FF87FCFFF3FF87FC1F807C00E00FC07C00C00FC07E00C00FE03E01C007E03F018007E0
-7F018003F07F030003F0CF830001F8CF860001F8CFC60001FD87C60000FD87CC0000FF03EC0000
-7F03F800007F03F800007E01F800003E01F000003C00F000001C00E000001800600026167F9529
->I<FFF0FFC0FFF0FFC00FC01C0007E0380007F0700003F0E00001F8C00000FD8000007F000000
-7F0000003F0000001F8000003FC0000037E0000067F00000C3F00001C1F8000380FC000700FE00
-0E007E00FFC1FFE0FFC1FFE01B167F951E>I<FFF01FE0FFF01FE00FC007000FC006000FE00E00
-07E00C0007F01C0003F0180003F8180001F8300001F8300000FC600000FC6000007EC000007EC0
-00007FC000003F8000003F8000001F0000001F0000000E0000000E0000000C0000000C00000018
-000078180000FC380000FC300000FC60000069E000007F8000001F0000001B207F951E>I
-E /Fh 23 122 df<00E00000E00000E00000E00040E040F0E1E0F8E3E07EEFC01FFF0007FC0003
-F80007FC001FFF007EEFC0F8E3E0F0E1E040E04000E00000E00000E00000E00013157D991A>42
-D<007C3801FF3807FFF80F83F81E00F81C0078380078380038700038700038700000E00000E000
-00E00000E00000E00000E00000E00000E000007000007000387000383800383800381C00701E00
-F00F83E007FFC001FF80007C00151E7E9D1A>67 D<7FFFFCFFFFFC7FFFFC0E001C0E001C0E001C
-0E001C0E001C0E00000E00000E07000E07000E07000FFF000FFF000FFF000E07000E07000E0700
-0E00000E00000E00000E000E0E000E0E000E0E000E0E000E7FFFFEFFFFFE7FFFFE171E7F9D1A>
-69 D<7FFFFCFFFFFC7FFFFC0E001C0E001C0E001C0E001C0E001C0E00000E00000E07000E0700
-0E07000FFF000FFF000FFF000E07000E07000E07000E00000E00000E00000E00000E00000E0000
-0E00000E00007FE000FFF0007FE000161E7F9D1A>I<FFFF80FFFF80FFFF8001C00001C00001C0
-0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
-0001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF80111E7C9D1A
->73 D<FF83F8FF87FCFF83F81C01E01C03C01C03801C07001C0F001C1E001C1C001C38001C7800
-1CF0001CF8001DF8001FDC001F9C001F0E001E0F001E07001C07801C03801C01C01C01C01C00E0
-1C00E01C0070FF81FCFF81FEFF81FC171E7F9D1A>75 D<7FE000FFF0007FE0000E00000E00000E
-00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
-00000E00000E00000E00000E00380E00380E00380E00380E00387FFFF8FFFFF87FFFF8151E7E9D
-1A>I<7FFF00FFFFC07FFFE00E01F00E00780E00380E003C0E001C0E001C0E001C0E001C0E003C
-0E00380E00780E01F00FFFE00FFFC00FFF000E00000E00000E00000E00000E00000E00000E0000
-0E00000E00007FC000FFE0007FC000161E7F9D1A>80 D<1FF0003FFC007FFE00780F0030070000
-0380000380007F8007FF801FFF803F8380780380700380E00380E00380E00380700780780F803F
-FFFC1FFDFC07F0FC16157D941A>97 D<00FF8003FFC00FFFE01F01E03C00C07800007000007000
-00E00000E00000E00000E00000E000007000007000007800703C00701F01F00FFFE003FFC000FE
-0014157D941A>99 D<001FC0001FC0001FC00001C00001C00001C00001C00001C00001C001F1C0
-07FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0
-7003C07003C03807C03E0FC01FFFFC07FDFC01F1FC161E7E9D1A>I<01F80007FF000FFF801E07
-C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFFF0E000007000007000007800703C00
-701F01F00FFFE003FFC000FE0014157D941A>I<FE0000FE0000FE00000E00000E00000E00000E
-00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E
-00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE3FEFFE3FE171E7F9D1A>
-104 D<01C00003E00003E00003E00001C0000000000000000000000000000000007FE000FFE000
-7FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
-00E00000E00000E000FFFFC0FFFFC0FFFFC0121F7C9E1A>I<7CE0E000FFFBF8007FFFF8001F1F
-1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C
-1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FF9F9F807F1F1F00191580941A>109
-D<FE3E00FEFF80FFFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
-E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE3FEFFE3FE17157F941A>I<01F00007FC001F
-FF003E0F803C07807803C07001C0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C078
-03C03C07803E0F801FFF0007FC0001F00013157D941A>I<FE3E00FEFF80FFFFE00FC1F00F8070
-0F00380E00380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00780F80F00FC1E0
-0FFFC00EFF800E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000FFE000
-FFE00016207F941A>I<FF83F0FF8FF8FFBFFC03FC3C03F01803E00003C00003C0000380000380
-00038000038000038000038000038000038000038000038000FFFF00FFFF80FFFF0016157E941A
->114 D<00C00001C00001C00001C00001C00001C00001C0007FFFE0FFFFE0FFFFE001C00001C0
-0001C00001C00001C00001C00001C00001C00001C00001C00001C07001C07001C07001C07000E0
-E000FFE0007FC0001F00141C7F9B1A>116 D<FE0FE0FE0FE0FE0FE00E00E00E00E00E00E00E00
-E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFE03FF
-FE00FCFE17157F941A>I<7FC7FCFFC7FE7FC7FC0E00E00E00E00F01E00701C00701C00783C003
-838003838003838001C70001C70001C70000EE0000EE0000EE00007C00007C0000380017157F94
-1A>I<7FC7FCFFC7FE7FC7FC0E00E00F00E00701E00701C00781C00381C003838001C38001C380
-01C70000E70000E70000E600006600006E00003C00003C00003C00003C00003800003800007800
-00700030700078E00079E0007FC0003F80001E000017207F941A>121 D
-E /Fi 51 122 df<3C7EFFFFFFFF7E3C08087C8711>46 D<001C00003C0000FC00FFFC00FFFC00
-00FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00
-00FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00
-00FC0000FC007FFFFC7FFFFC16237CA21F>49 D<01FF0007FFC01E07F03803F86001FC7C00FEFE
-00FEFE00FFFE007FFE007F7C007F3800FF0000FF0000FE0000FE0001FC0001F80003F00007E000
-0780000F00001E00003C0000700000E00301C0030380070700060600060FFFFE1FFFFE3FFFFE7F
-FFFCFFFFFCFFFFFC18237DA21F>I<01FF0007FFE01E03F03801F83C01FC7E00FE7E00FE7E00FE
-3E00FE1C01FE0001FC0001FC0003F80007F0000FC001FF0001FF000007E00001F00001F80000FC
-0000FE0000FF0000FF1000FF7C00FFFE00FFFE00FFFE00FEFE00FE7C01FC7001F83E07F00FFFC0
-01FF0018237DA21F>I<0000380000007800000078000000F8000001F8000003F8000007F80000
-06F800000CF800001CF8000038F8000030F8000060F80000E0F80001C0F8000180F8000300F800
-0700F8000E00F8001C00F8001800F8003000F8007000F800E000F800FFFFFFC0FFFFFFC00001F8
-000001F8000001F8000001F8000001F8000001F8000001F800007FFFC0007FFFC01A237EA21F>
-I<18000C1F007C1FFFF81FFFF01FFFE01FFFC01FFF801FFE001800001800001800001800001800
-0018FF001BFFE01F01F01C00F80800FC00007E00007E00007E00007F00007F78007FFC007FFC00
-7FFC007FFC007EF8007E6000FC7000FC3801F81E07E007FFC001FE0018237DA21F>I<001FC000
-7FF001F83803E00C07803E0F807E1F007E3F007E3F007E7E003C7E00007E00007E0000FE3FC0FE
-7FF0FE80F8FF80FCFF007CFF007EFE007EFE007FFE007FFE007FFE007F7E007F7E007F7E007F7E
-007F3E007E3F007E1F007C0F80F807C1F003FFC0007F0018237DA21F>I<300000003C0000003F
-FFFFC03FFFFFC03FFFFF807FFFFF007FFFFE007FFFFC006000180060001800E0003000C0006000
-C000C0000001800000018000000300000007000000060000000E0000001E0000001E0000001E00
-00003C0000003C0000007C0000007C0000007C0000007C000000FC000000FC000000FC000000FC
-000000FC000000FC000000FC000000780000003000001A257DA41F>I<00FF8003FFE00F01F81C
-007C38003C38001E78001E78001E7C001E7E001E7F803C7FE03C3FF8781FFCF01FFFC00FFFC003
-FFE003FFF80FFFFC1E1FFC3C07FE7801FE7800FFF0003FF0001FF0000FF0000FF0000FF0000E78
-000E78001C3E00381F80F007FFE000FF0018237DA21F>I<00FF0003FFC00F83E01F00F03F00F8
-7E007C7E007C7E007EFE007EFE007EFE007EFE007FFE007FFE007FFE007F7E007F7E00FF3E00FF
-3F01FF1F017F0FFE7F03FC7F00007F00007E00007E3C007E7E00FC7E00FC7E00F87E00F07C01F0
-3003E01C0F800FFF0003F80018237DA21F>I<00001C00000000001C00000000003E0000000000
-3E00000000003E00000000007F00000000007F0000000000FF8000000000FF8000000000FF8000
-0000019FC0000000019FC0000000031FE0000000030FE0000000030FE00000000607F000000006
-07F00000000C07F80000000C03F80000001C03FC0000001801FC0000001801FC0000003001FE00
-00003000FE0000007FFFFF0000007FFFFF00000060007F000000C0007F800000C0003F800001C0
-003FC0000180001FC0000180001FC0000300000FE0000300000FE0000780000FF000FFF801FFFF
-80FFF801FFFF8029257EA42E>65 D<FFFFFFE000FFFFFFFC0003F0007F0003F0003F8003F0001F
-C003F0000FE003F0000FE003F0000FF003F0000FF003F00007F003F0000FF003F0000FF003F000
-0FE003F0001FE003F0001FC003F0007F8003F001FE0003FFFFF80003FFFFFF0003F0003FC003F0
-000FE003F00007F003F00007F803F00003F803F00003FC03F00003FC03F00003FC03F00003FC03
-F00003FC03F00003FC03F00003F803F00007F803F0000FF003F0001FE003F0007FC0FFFFFFFF00
-FFFFFFF80026257EA42C>I<0000FF8008000FFFF018003FC03C7800FE0006F801F80003F803F0
-0001F807E00000F80FC00000781FC00000783F800000383F800000387F800000187F000000187F
-00000018FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000
-FF00000000FF000000007F000000007F000000187F800000183F800000183F800000181FC00000
-300FC000003007E000006003F00000C001F800018000FE000700003FC01E00000FFFF8000000FF
-C00025257DA42C>I<FFFFFFFF00FFFFFFFF0003F8007F0003F8000F8003F800078003F8000380
-03F800038003F800018003F800018003F800018003F80000C003F80600C003F80600C003F80600
-0003F806000003F80E000003F81E000003FFFE000003FFFE000003F81E000003F80E000003F806
-000003F806000003F806006003F806006003F800006003F80000C003F80000C003F80000C003F8
-0000C003F80001C003F80003C003F80003C003F8000F8003F8003F80FFFFFFFF80FFFFFFFF8023
-257EA428>69 D<FFFFFFFE00FFFFFFFE0003F800FE0003F8001F0003F8000F0003F800070003F8
-00070003F800030003F800030003F800030003F800018003F806018003F806018003F806000003
-F806000003F80E000003F81E000003FFFE000003FFFE000003F81E000003F80E000003F8060000
-03F806000003F806000003F806000003F800000003F800000003F800000003F800000003F80000
-0003F800000003F800000003F800000003F800000003F8000000FFFFF00000FFFFF0000021257E
-A427>I<FFFFE0FFFFE0FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003FFFFFFF80003FFFFFFF8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F800FFFFE0FFFFE0FFFFE0FFFFE02B257EA430>72
-D<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F800FFFFE0FFFFE013257EA417
->I<FFFFE007FF80FFFFE007FF8003F80000780003F80000600003F80000C00003F80001800003
-F80007000003F8000E000003F80018000003F80030000003F80060000003F800C0000003F80380
-000003F80700000003F80E00000003F81F00000003F83F80000003F87F80000003F8DFC0000003
-FB8FE0000003FF0FF0000003FC07F0000003F803F8000003F803FC000003F801FE000003F800FE
-000003F8007F000003F8007F800003F8003F800003F8001FC00003F8000FE00003F8000FF00003
-F80007F00003F80003F80003F80003FC00FFFFE03FFFC0FFFFE03FFFC02A257EA430>75
-D<FFFFF000FFFFF00003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8
-000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003
-F8000003F8000003F8000003F8000003F8000603F8000603F8000603F8000C03F8000C03F8000C
-03F8001C03F8001C03F8003C03F8007C03F800F803F803F8FFFFFFF8FFFFFFF81F257EA425>I<
-FFF8000000FFF8FFFC000001FFF803FC000001FE00037E0000037E00037E0000037E00037E0000
-037E00033F0000067E00033F0000067E00031F80000C7E00031F80000C7E00030FC000187E0003
-0FC000187E000307E000307E000307E000307E000307E000307E000303F000607E000303F00060
-7E000301F800C07E000301F800C07E000300FC01807E000300FC01807E0003007E03007E000300
-7E03007E0003007E03007E0003003F06007E0003003F06007E0003001F8C007E0003001F8C007E
-0003000FD8007E0003000FD8007E00030007F0007E00030007F0007E00030007F0007E00030003
-E0007E00078003E0007E00FFFC01C01FFFF8FFFC01C01FFFF835257EA43A>I<FFF80007FFE0FF
-FC0007FFE003FE00003C0003FF00001800037F00001800033F80001800031FC0001800031FE000
-1800030FF00018000307F80018000303F80018000301FC0018000300FE0018000300FF00180003
-007F80180003003FC0180003001FC0180003000FE0180003000FF01800030007F81800030003FC
-1800030001FC1800030000FE18000300007F18000300007F98000300003FD8000300001FF80003
-00000FF80003000007F80003000003F80003000003F80003000001F80003000000F80003000000
-7800078000003800FFFC00001800FFFC000018002B257EA430>I<FFFFFF800000FFFFFFF80000
-03F801FE000003F8007F000003F8003F800003F8001FC00003F8001FC00003F8001FE00003F800
-1FE00003F8001FE00003F8001FE00003F8001FE00003F8001FC00003F8001FC00003F8003F8000
-03F8007F000003F801FE000003FFFFF8000003FFFFC0000003F803F0000003F801F8000003F800
-FC000003F8007E000003F8007E000003F8007F000003F8007F000003F8007F000003F8007F0000
-03F8007F800003F8007F800003F8007F800003F8007F806003F8003FC06003F8003FC0C003F800
-1FE1C0FFFFE00FFF80FFFFE001FE002B257EA42E>82 D<00FF008007FFE3800F80F7801E001F80
-3C000F807800078078000380F8000380F8000180F8000180FC000180FC000000FF0000007FE000
-007FFF00003FFFE0003FFFF8001FFFFE0007FFFF0003FFFF80007FFF800003FFC000003FC00000
-0FE0000007E0000007E0C00003E0C00003E0C00003E0C00003C0E00003C0F00007C0F8000780FC
-000F00FFC03E00E3FFF800803FE0001B257DA422>I<7FFFFFFFF87FFFFFFFF87E00FE01F87800
-FE00787000FE00386000FE00186000FE0018E000FE001CE000FE000CC000FE000CC000FE000CC0
-00FE000CC000FE000C0000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000
-0000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
-000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000FFFF
-FE0000FFFFFE0026247EA32B>I<FFFFE00FFFC0FFFFE00FFFC003F80000780003F80000300003
-F80000300003F80000300003F80000300003F80000300003F80000300003F80000300003F80000
-300003F80000300003F80000300003F80000300003F80000300003F80000300003F80000300003
-F80000300003F80000300003F80000300003F80000300003F80000300003F80000300003F80000
-300003F80000300003F80000300003F80000300003F80000300001F80000600001FC0000600000
-FC0000C000007C0000C000003E00018000001F00070000000FE03E00000003FFF8000000007FC0
-00002A257EA42F>I<FFFFC003FFE0FFFFC003FFE007F800003C0003F80000180003FC00001800
-01FC0000300001FC0000300001FE0000700000FE0000600000FF0000E000007F0000C000007F80
-00C000003F80018000003F80018000001FC0030000001FC0030000001FE0070000000FE0060000
-000FF00600000007F00C00000007F80C00000003F81800000003F81800000003FC3800000001FC
-3000000001FE7000000000FE6000000000FF60000000007FC0000000007FC0000000003F800000
-00003F80000000003F80000000001F00000000001F00000000000E00000000000E0000002B257F
-A42E>I<FFFF83FFFE01FFF0FFFF83FFFE01FFF007F0001FC0000F0007F0001FC000060003F800
-0FE0000C0003F8000FE0000C0003FC000FF0001C0001FC0007F000180001FC0007F000180000FE
-000FF800300000FE000FF800300000FE000FFC003000007F0019FC006000007F0019FC00600000
-7F8039FE00E000003F8030FE00C000003F8030FE00C000001FC0607F018000001FC0607F018000
-001FE0607F818000000FE0C03F830000000FE0C03F830000000FF1C03FC700000007F1801FC600
-000007F1801FC600000003FB000FEC00000003FB000FEC00000003FF000FFC00000001FE0007F8
-00000001FE0007F800000001FE0007F800000000FC0003F000000000FC0003F000000000780001
-E000000000780001E000000000780001E000000000300000C000003C257FA43F>I<FFFFC001FF
-E0FFFFC001FFE007F800001C0003FC0000180003FE0000300001FE0000700000FF0000600000FF
-0000C000007F8001C000003FC0018000003FC0038000001FE0070000000FF0060000000FF00E00
-000007F81C00000003FC1800000003FC3800000001FE7000000000FF6000000000FFE000000000
-7FC0000000003F80000000003F80000000003F80000000003F80000000003F80000000003F8000
-0000003F80000000003F80000000003F80000000003F80000000003F80000000003F8000000000
-3F80000000003F800000000FFFFE0000000FFFFE00002B257FA42E>89 D<07FF00001FFFC0003E
-03E0003F01F0003F01F8003F00FC001E00FC000000FC000000FC000000FC00003FFC0003FCFC00
-0FC0FC003F00FC007E00FC007E00FC00FC00FC00FC00FC00FC00FC00FC017C007E017C003F067C
-001FFC3FE007F01FE01B187E971E>97 D<FFC00000FFC000000FC000000FC000000FC000000FC0
-00000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC3F8000F
-CFFE000FF81F800FE00FC00FC007E00FC007E00FC003F00FC003F00FC003F80FC003F80FC003F8
-0FC003F80FC003F80FC003F80FC003F80FC003F80FC003F00FC003F00FC007E00FC007C00FE00F
-C00F383F000E1FFE000C07F0001D267EA522>I<007FE003FFF807C07C1F80FC1F00FC3F00FC7E
-00787E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00007E00007F00003F000C1F
-800C1FC01807E07003FFE0007F0016187E971B>I<0001FF800001FF8000001F8000001F800000
-1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
-7F1F8003FFDF8007E0FF801F803F803F001F803F001F807E001F807E001F80FE001F80FE001F80
-FE001F80FE001F80FE001F80FE001F80FE001F80FE001F807E001F807E001F803F001F803F003F
-801F807F800FC0FF8003FF9FF800FE1FF81D267EA522>I<007F0003FFC007C1F00F80F81F00F8
-3F007C7E007C7E007EFE007EFE007EFFFFFEFFFFFEFE0000FE0000FE00007E00007E00007E0006
-3F00061F000C0F801807E07003FFE0007F8017187E971C>I<000FC0007FF000F8F001F1F803F1
-F803E1F807E0F007E00007E00007E00007E00007E00007E00007E000FFFF00FFFF0007E00007E0
-0007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E0
-0007E00007E00007E00007E00007E0007FFF007FFF0015267EA513>I<01FF07C007FFDFE00F83
-F1E01F01F1E03E00F8007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC003E00F8001F
-01F0000F83E0000FFFC00011FF00003000000030000000380000003C0000003FFFE0001FFFFC00
-1FFFFE000FFFFF001FFFFF803C003F8078000FC0F80007C0F80007C0F80007C0F80007C07C000F
-803E001F001F807E0007FFF80000FFC0001B247E971F>I<FFC00000FFC000000FC000000FC000
-000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0
-00000FC1F8000FC7FE000FCC3F000FD01F000FF01F800FE01F800FE01F800FC01F800FC01F800F
-C01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F80
-0FC01F800FC01F800FC01F80FFFCFFF8FFFCFFF81D267DA522>I<0F001F803FC03FC03FC03FC0
-1F800F000000000000000000000000000000FFC0FFC00FC00FC00FC00FC00FC00FC00FC00FC00F
-C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFF8FFF80D277EA611>I<FFC00000FF
-C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
-0FC000000FC000000FC000000FC07FC00FC07FC00FC01E000FC018000FC030000FC060000FC0C0
-000FC380000FC700000FCF00000FDF80000FFFC0000FE7C0000FC7E0000F83F0000F81F0000F80
-F8000F80FC000F807E000F803E000F803F000F801F80FFF8FFF0FFF8FFF01C267EA520>107
-D<FFC0FFC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
-0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFFCFFFC0E
-267EA511>I<FF81FC01FC00FF87FF07FF000F8C1F8C1F800F980F980F800FB00FF00FC00FA00F
-E00FC00FA00FE00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
-0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
-C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFFCFFFCFFFCFFFCFFFCFFFC2E187D9733>
-I<FF81F800FF87FE000F8C3F000F901F000FB01F800FA01F800FA01F800FC01F800FC01F800FC0
-1F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800F
-C01F800FC01F800FC01F80FFFCFFF8FFFCFFF81D187D9722>I<007F800003FFF00007C0F8001F
-807E003F003F003F003F007E001F807E001F80FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0
-FE001FC0FE001FC0FE001FC07E001F807E001F803F003F003F003F001F807E000FC0FC0003FFF0
-00007F80001A187E971F>I<FFC3F800FFCFFE000FF83F800FE00FC00FC00FE00FC007E00FC007
-F00FC003F00FC003F80FC003F80FC003F80FC003F80FC003F80FC003F80FC003F80FC003F80FC0
-07F00FC007F00FC007E00FC00FC00FE01FC00FF83F000FDFFE000FC7F0000FC000000FC000000F
-C000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC0000FFFC00001D237E97
-22>I<FF87C0FF8FF00F98F80FB1F80FA1F80FA1F80FE0F00FC0000FC0000FC0000FC0000FC000
-0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000FFFE00FFFE0015187E
-9719>114 D<07F9801FFF803C0F80700380F00180F00180F00180FC0000FF80007FFC007FFE00
-3FFF800FFFC003FFC0001FE00003E0C001E0C001E0E001E0E001C0F003C0FC0780EFFF00C3FC00
-13187E9718>I<00600000600000600000600000E00000E00001E00001E00003E00007E0001FE0
-00FFFFC0FFFFC007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E0
-0007E00007E06007E06007E06007E06007E06007E06003E0C003F0C001FF80007E0013237FA218
->I<FFC1FF80FFC1FF800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800F
-C01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC03F80
-0FC03F8007C07F8007E0DF8003FF9FF800FE1FF81D187D9722>I<FFF80FF8FFF80FF80FC003C0
-0FE0018007E0030007E0030003F0060003F0060003F80E0001F80C0001FC1C0000FC180000FE18
-00007E3000007E3000003F6000003F6000001FC000001FC000001FC000000F8000000F80000007
-0000000700001D187F9720>I<FFF9FFE0FF80FFF9FFE0FF801FC03F001C000FC01F0018000FC0
-1F80180007E01F80300007E01F80300007F01FC0700003F037C0600003F037C0600001F877E0C0
-0001F863E0C00001FC63F1C00000FCC1F1800000FCC1F18000007FC1FB0000007F80FB0000007F
-80FF0000003F007E0000003F007E0000001F007C0000001E003C0000001E003C0000000C001800
-0029187F972C>I<FFF83FF0FFF83FF00FC00F0007E00C0003F01C0003F8380001FC700000FCE0
-00007EC000003F8000003F8000001F8000000FC000001FE000001FF0000033F8000071F80000E0
-FC0001C07E0003807F0003003F000F001F80FFC07FF8FFC07FF81D187F9720>I<FFF80FF8FFF8
-0FF80FC003C00FE0018007E0030007E0030003F0060003F0060003F80E0001F80C0001FC1C0000
-FC180000FE1800007E3000007E3000003F6000003F6000001FC000001FC000001FC000000F8000
-000F800000070000000700000006000000060000000C0000300C0000781C0000FC180000FC3800
-00FC70000078E000007FC000001F0000001D237F9720>I E /Fj 27 122
-df<0003E0001C1800381800703C00E03C00E03801C00001C00001C00001C00001C0000380007F
-FFF00380700380700380700380700700E00700E00700E00700E00700E00700E00E01C00E01C00E
-01C00E01C00E01C00E01C01C03801E03C0FF0FF816207E9F19>12 D<FFC0FFC00A027D8A0F>45
-D<07FFFFF8007C0078003C0038003C001800780018007800080078000800780008007800080078
-000800F0100000F0100000F0100000F0300000F0700000FFF00001E0600001E0200001E0200001
-E0200001E0200001E0000003C0000003C0000003C0000003C0000003C0000003C0000007800000
-07C00000FFFE00001D1F7E9E1E>70 D<07FFE07FE0007C001F00003C000C00003C001800007800
-10000078004000007800800000780100000078020000007804000000F008000000F010000000F0
-60000000F0F0000000F1F0000000F278000001E478000001E878000001F03C000001E03C000001
-E01E000001E01E000003C00F000003C00F000003C00F000003C007800003C007800003C003C000
-078003C00007C007E000FFFC3FFC00231F7E9E23>75 D<07F8000C0C001E06001E07001C070000
-070000070000070000FF0007C7001E07003C0E00780E00F00E10F00E10F00E10F01E10F02E2078
-4F401F878014147D9317>97 D<01FC07060E0F1C0F380E78007000F000F000F000F000E000E000
-E000E000F0027004300818300FC010147C9314>99 D<0000700003F00000F00000700000700000
-E00000E00000E00000E00000E00000E00001C000F9C00305C00E03C01C03C03801C07803807003
-80F00380F00380F00380F00380E00700E00700E00700E00700E00700700F00301E00186F000F8F
-E014207C9F19>I<00F800070E000E07001C0700380380780380700380F00380F00380FFFF80F0
-0000E00000E00000E00000E00000F001007002003004001C180007E00011147D9314>I<000780
-0018C00031E00061E000E1C000C00001C00001C00001C00001C00001C0000380007FF800038000
-0380000380000380000700000700000700000700000700000700000E00000E00000E00000E0000
-0E00000E00001C00001E0000FFE00013207E9F0E>I<00000E003E1100E1A301C1C20381E00780
-E00701E00F01E00F01E00F01E00703C007038007870004FC000800000800001800001C00000FFF
-000FFFC007FFE01800F0300030600030C00030C00030C000306000603000C01C070007FC00181F
-809417>I<00E00007E00001E00000E00000E00001C00001C00001C00001C00001C00001C00003
-8000038F800390E003A0E003C0600380600780E00700E00700E00700E00700E00700E00E01C00E
-01C00E01C00E01C00E01C00E01C01C03801E03C0FFCFF815207E9F19>I<01C003E003E003C001
-8000000000000000000000000003801F800780038003800700070007000700070007000E000E00
-0E000E000E000E001C001E00FF800B1F7F9E0C>I<00E00007E00001E00000E00000E00001C000
-01C00001C00001C00001C00001C0000380000383FC0380F00380C0038180038100070400070800
-071800073800077C00071C000E1C000E0E000E0E000E0F000E07000E07801C03801E07C0FF8FF0
-16207E9F18>107 D<00E007E001E000E000E001C001C001C001C001C001C00380038003800380
-038003800700070007000700070007000E000E000E000E000E000E001C001E00FFC00B207F9F0C
->I<0387C07C001F9861860007A072070003C03403000380380300078078070007007007000700
-7007000700700700070070070007007007000E00E00E000E00E00E000E00E00E000E00E00E000E
-00E00E000E00E00E001C01C01C001E01E01E00FFCFFCFFC022147E9326>I<038F801F90E007A0
-E003C0600380600780E00700E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E01
-C00E01C01C03801E03C0FFCFF815147E9319>I<00FC000387000E01801C00C03800E03800E070
-00F0F000F0F000F0F000F0F000F0E001E0E001E0E001C0E003C0F00380700700380E001C1C0007
-E00014147D9317>I<00E3E007EC3800F01C00E01E00E00E01C00E01C00F01C00F01C00F01C00F
-01C00F03801E03801E03801C03803C0380380380700740E00721C0071F00070000070000070000
-0E00000E00000E00000E00001E0000FFC000181D809319>I<00F040038CC00E04C01C03C03C03
-C0780380780380F00380F00380F00380F00380E00700E00700E00700F00700F00F00700F00301E
-00186E000F8E00000E00000E00000E00001C00001C00001C00001C00003C0001FF80121D7C9318
->I<038E001FB38007C78003C7800383000780000700000700000700000700000700000E00000E
-00000E00000E00000E00000E00001C00001E0000FFE00011147E9312>I<01F2060E0806180618
-02380438001E001FE00FF003F8003C401C400C400C600C6018E010D0608FC00F147E9312>I<00
-80010001000100030007000F001E00FFF80E000E000E000E001C001C001C001C001C001C003800
-38203820382038203840384018800F000D1C7C9B12>I<1C0380FC1F803C07801C03801C038038
-0700380700380700380700380700380700700E00700E00700E00700E00701E00701E00703C0030
-5E001F9FC012147B9319>I<FF83F81E00E01C00C01C00800E00800E01000E02000E02000F0400
-07040007080007080007100003900003A00003E00003C00003800001800001000015147C9318>
-I<FF9FE1FC3E0780701C0300601C0300401C0380401C0380800E0780800E0581000E0981000E09
-C2000E11C2000731C4000721C4000760C8000740C8000780F0000780F0000300E0000300600002
-0040001E147C9321>I<1FF0FF03C07801C06001C04000E08000E180007300007600003C00003C
-00001C00002E00004E000087000107000203800603800C01C03E03E0FF07FC18147F9318>I<0F
-F83F8001E00E0001C00C0001C0080000E0180000E0100000E0200000E0200000F0400000704000
-00708000007080000071000000390000003A0000003E0000003C00000038000000180000001000
-000010000000200000002000000040000070C00000F0800000F1000000E20000007C000000191D
-809318>I E /Fk 34 121 df<0001C0000003C000000FC000007FC0001FFFC000FFFFC000FFBF
-C000E03FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
-3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000
-003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
-00003FC000003FC000003FC000003FC000003FC000003FC000003FC0007FFFFFE07FFFFFE07FFF
-FFE01B2E7AAD28>49 D<003FE00001FFFE0007FFFF800F80FFC01E003FE038001FF07C000FF87E
-0007FCFF0007FCFF8007FEFF8007FEFF8003FEFF8003FE7F0003FE3E0007FE000007FE000007FC
-000007FC00000FF800000FF800000FF000001FE000001FC000003F8000007F0000007E000000F8
-000001F0000003E0000007C000000F0000001E000E003C000E0038000E0070001E00E0001C01C0
-001C0300003C07FFFFFC0FFFFFFC1FFFFFFC3FFFFFFC7FFFFFF8FFFFFFF8FFFFFFF8FFFFFFF81F
-2E7CAD28>I<000003FF80018000003FFFF003800001FFFFFC07800007FF003F0F80001FF80007
-9F80003FC00001FF8000FF800000FF8001FE0000007F8003FC0000003F8007FC0000001F8007F8
-0000000F800FF00000000F801FF000000007801FF000000007803FE000000007803FE000000003
-807FE000000003807FE000000003807FC000000000007FC00000000000FFC00000000000FFC000
-00000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000
-FFC00000000000FFC000000000007FC000000000007FC000000000007FE000000000007FE00000
-0003803FE000000003803FE000000003801FF000000003801FF000000007800FF0000000070007
-F8000000070007FC0000000E0003FC0000001E0001FE0000001C0000FF8000007800003FC00000
-F000001FF80003E0000007FF003F80000001FFFFFE000000003FFFF80000000003FF8000003131
-7CB03A>67 D<FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF000FF80003FF000FF800007F800FF80
-0003F800FF800000F800FF800000F800FF8000007800FF8000007800FF8000003800FF80000038
-00FF8000003800FF8000001C00FF8007001C00FF8007001C00FF8007001C00FF8007000000FF80
-07000000FF800F000000FF801F000000FF803F000000FFFFFF000000FFFFFF000000FFFFFF0000
-00FF803F000000FF801F000000FF800F000000FF8007000000FF8007000000FF8007000700FF80
-07000700FF8007000700FF8000000E00FF8000000E00FF8000000E00FF8000000E00FF8000001E
-00FF8000001E00FF8000003C00FF8000003C00FF8000007C00FF800000FC00FF800001FC00FF80
-0007FC00FF80003FFCFFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF830317EB035>69
-D<FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE000FF80007FE000FF80000FF000FF800003F000FF
-800001F000FF800001F000FF800000F000FF800000F000FF8000007000FF8000007000FF800000
-7000FF8000003800FF8000003800FF8007003800FF8007003800FF8007000000FF8007000000FF
-8007000000FF800F000000FF801F000000FF803F000000FFFFFF000000FFFFFF000000FFFFFF00
-0000FF803F000000FF801F000000FF800F000000FF8007000000FF8007000000FF8007000000FF
-8007000000FF8007000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
-80000000FFFFFFE00000FFFFFFE00000FFFFFFE000002D317EB033>I<000003FF00030000007F
-FFF007000001FFFFFC0F000007FF007E1F00001FF0000FBF00007FC00003FF0000FF800001FF00
-01FE0000007F0003FC0000007F0007FC0000003F000FF80000001F000FF00000001F001FF00000
-000F001FF00000000F003FE000000007003FE000000007007FE000000007007FE000000007007F
-C00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000000
-0000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0
-0007FFFFFC7FC00007FFFFFC7FE00007FFFFFC7FE0000001FF003FE0000001FF003FE0000001FF
-001FF0000001FF001FF0000001FF000FF0000001FF000FF8000001FF0007FC000001FF0003FC00
-0001FF0001FE000001FF0000FF800001FF00007FC00003FF00001FF800077F000007FF003E3F00
-0001FFFFFC1F0000007FFFF00F00000003FF80030036317CB03F>I<FFFFFF80FFFFFF80FFFFFF
-8000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF
-800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000
-FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000
-00FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF80
-0000FF800000FF800000FF800000FF8000FFFFFF80FFFFFF80FFFFFF8019317EB01E>73
-D<FFFFFFE00000FFFFFFE00000FFFFFFE0000000FF8000000000FF8000000000FF8000000000FF
-8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
-8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF800001C000FF800001C000FF
-800001C000FF800001C000FF800003C000FF8000038000FF8000038000FF8000078000FF800007
-8000FF8000078000FF80000F8000FF80001F8000FF80003F8000FF80007F8000FF8000FF0000FF
-8007FF00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF002A317EB030>76 D<FFFF800001FFFFC0FF
-FFC00001FFFFC0FFFFE00001FFFFC000FFF0000003E00000FFF8000001C00000EFFC000001C000
-00E7FC000001C00000E7FE000001C00000E3FF000001C00000E1FF800001C00000E0FFC00001C0
-0000E07FE00001C00000E03FE00001C00000E03FF00001C00000E01FF80001C00000E00FFC0001
-C00000E007FE0001C00000E003FE0001C00000E001FF0001C00000E001FF8001C00000E000FFC0
-01C00000E0007FE001C00000E0003FF001C00000E0001FF001C00000E0001FF801C00000E0000F
-FC01C00000E00007FE01C00000E00003FF01C00000E00001FF81C00000E00000FF81C00000E000
-00FFC1C00000E000007FE1C00000E000003FF1C00000E000001FF9C00000E000000FFDC00000E0
-000007FDC00000E0000007FFC00000E0000003FFC00000E0000001FFC00000E0000000FFC00000
-E00000007FC00000E00000003FC00000E00000003FC00000E00000001FC00000E00000000FC000
-01F000000007C000FFFFE0000003C000FFFFE0000001C000FFFFE0000001C0003A317EB03F>78
-D<FFFFFFFFE000FFFFFFFFFE00FFFFFFFFFF8000FF8000FFE000FF80003FF000FF80000FF800FF
-800007FC00FF800007FC00FF800003FE00FF800003FE00FF800003FF00FF800003FF00FF800003
-FF00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF800003FE00FF800003FE00FF
-800007FC00FF800007F800FF80000FF800FF80003FE000FF8000FFC000FFFFFFFF0000FFFFFFF8
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
-8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
-80000000FFFFFF800000FFFFFF800000FFFFFF80000030317EB037>80 D<FFFFFFFF80000000FF
-FFFFFFF8000000FFFFFFFFFE00000000FF8003FF80000000FF80007FE0000000FF80001FF00000
-00FF80000FF8000000FF80000FF8000000FF80000FFC000000FF800007FC000000FF800007FE00
-0000FF800007FE000000FF800007FE000000FF800007FE000000FF800007FE000000FF800007FE
-000000FF800007FC000000FF80000FFC000000FF80000FF8000000FF80001FF0000000FF80003F
-E0000000FF80007FC0000000FF8003FF00000000FFFFFFF800000000FFFFFFE000000000FF8007
-F800000000FF8001FC00000000FF8000FE00000000FF80007F00000000FF80007F80000000FF80
-003FC0000000FF80003FC0000000FF80003FE0000000FF80003FE0000000FF80003FE0000000FF
-80003FE0000000FF80003FE0000000FF80003FF0000000FF80003FF0000000FF80003FF0000000
-FF80003FF0000000FF80003FF0038000FF80003FF8038000FF80001FF8038000FF80001FF80300
-00FF80000FFC0700FFFFFF8003FE0E00FFFFFF8001FFFC00FFFFFF80001FF00039317EB03C>82
-D<7FFFFFFFFFFF007FFFFFFFFFFF007FFFFFFFFFFF007FC00FF801FF007E000FF8003F007C000F
-F8001F0078000FF8000F0078000FF8000F0070000FF8000700F0000FF8000780F0000FF8000780
-F0000FF8000780E0000FF8000380E0000FF8000380E0000FF8000380E0000FF8000380E0000FF8
-00038000000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000
-000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF800
-000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80000000000
-0FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80000
-0000000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000F
-F8000000007FFFFFFF0000007FFFFFFF0000007FFFFFFF000031307DAF38>84
-D<FFFFFF8003FFFF80FFFFFF8003FFFF80FFFFFF8003FFFF8000FF80000007C00000FF80000003
-800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF800000
-03800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF8000
-0003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80
-000003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF
-80000003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000
-FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF800000038000
-00FF80000003800000FF800000038000007F800000038000007F800000070000007FC000000700
-00003FC000000E0000003FC000000E0000001FE000001C0000000FF000003800000007F8000070
-00000003FC0001E000000000FF801FC0000000003FFFFF80000000000FFFFE000000000000FFE0
-00000039317EB03E>I<FFFFFC0000FFFFFFFFFC0000FFFFFFFFFC0000FFFF03FF00000003C001
-FF000000038001FF800000078000FF800000070000FFC000000700007FC000000E00007FC00000
-0E00007FE000001E00003FE000001C00003FF000003C00001FF000003800001FF800003800000F
-F800007000000FFC000070000007FC0000E0000007FC0000E0000007FE0001E0000003FE0001C0
-000003FF0003C0000001FF000380000001FF800380000000FF800700000000FFC00700000000FF
-C00F000000007FC00E000000007FE01E000000003FE01C000000003FF03C000000001FF0380000
-00001FF838000000000FF870000000000FF870000000000FFCF00000000007FCE00000000007FF
-E00000000003FFC00000000003FFC00000000001FF800000000001FF800000000000FF00000000
-0000FF000000000000FF0000000000007E0000000000007E0000000000003C0000000000003C00
-000038317EB03D>I<00FFF0000003FFFE00000F803F80000FC00FE0001FE007F0001FE007F000
-1FE003F8000FC003FC00078003FC00000003FC00000003FC00000003FC00000003FC000000FFFC
-00001FFFFC0000FFE3FC0003FC03FC000FF003FC001FC003FC003FC003FC007F8003FC007F8003
-FC00FF0003FC00FF0003FC00FF0003FC00FF0007FC00FF0007FC007F800DFC003FC019FE001FE0
-70FFF007FFE07FF000FF803FF024207E9F27>97 D<01F8000000FFF8000000FFF8000000FFF800
-00000FF800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
-00000007F800000007F800000007F800000007F800000007F800000007F800000007F83FE00007
-F8FFFC0007FBE07F0007FF001F8007FE000FC007FC000FE007F80007F007F80007F807F80007F8
-07F80003FC07F80003FC07F80003FC07F80003FE07F80003FE07F80003FE07F80003FE07F80003
-FE07F80003FE07F80003FE07F80003FE07F80003FC07F80003FC07F80003FC07F80007F807F800
-07F807F80007F007FC000FE007FE000FC007E7003F8007C3C0FE000780FFF80007003FC0002732
-7EB12D>I<000FFF00007FFFC001FC01F003F003F007E007F80FE007F81FC007F83FC003F03FC0
-01E07F8000007F8000007F800000FF800000FF800000FF800000FF800000FF800000FF800000FF
-800000FF8000007F8000007F8000007F8000003FC0001C3FC0001C1FC000380FE0003807E00070
-03F001E001FC07C0007FFF00000FF8001E207D9F24>I<0000000FC0000007FFC0000007FFC000
-0007FFC00000007FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0
-0000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00007F83F
-C0003FFF3FC000FE07BFC003F801FFC007E0007FC00FE0007FC01FC0003FC03FC0003FC03FC000
-3FC07F80003FC07F80003FC07F80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80
-003FC0FF80003FC0FF80003FC0FF80003FC07F80003FC07F80003FC07F80003FC03FC0003FC03F
-C0003FC01FC0003FC00FE0007FC007E000FFC003F003FFE001FC0F3FFE007FFE3FFE000FF03FFE
-27327DB12D>I<000FFC00007FFF8001FC0FC003F003E007E001F00FE001F81FC000FC3FC000FE
-3FC000FE7F80007E7F80007F7F80007FFF80007FFF80007FFFFFFFFFFFFFFFFFFF800000FF8000
-00FF800000FF8000007F8000007F8000007F8000003FC000071FC000071FC0000E0FE0000E07F0
-001C03F8007800FE03E0003FFFC00007FE0020207E9F25>I<0001FE00000FFF80001FC3C0007F
-07E000FE0FF001FE0FF001FC0FF003FC0FF003FC07E003FC018003FC000003FC000003FC000003
-FC000003FC000003FC000003FC000003FC0000FFFFFC00FFFFFC00FFFFFC0003FC000003FC0000
-03FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00
-0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC
-000003FC000003FC000003FC000003FC00007FFFF0007FFFF0007FFFF0001C327EB119>I<001F
-F007C000FFFE3FE001F83F79F007E00FC3F00FE00FE1F00FC007E0E01FC007F0001FC007F0003F
-C007F8003FC007F8003FC007F8003FC007F8003FC007F8001FC007F0001FC007F0000FC007E000
-0FE00FE00007E00FC00003F83F000006FFFE00000E1FF000000E000000001E000000001E000000
-001F000000001F800000001FFFFF80000FFFFFF0000FFFFFFC0007FFFFFE0003FFFFFF0003FFFF
-FF800FFFFFFFC01F00007FC07E00001FE07C00000FE0FC000007E0FC000007E0FC000007E0FC00
-0007E07E00000FC03E00000F803F00001F800FC0007E0007F803FC0001FFFFF000001FFF000024
-2F7E9F28>I<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F800
-000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
-00000007F800000007F800000007F800000007F807F80007F83FFE0007F8783F0007F8C03F8007
-F9801FC007FB001FC007FE001FE007FC001FE007FC001FE007FC001FE007F8001FE007F8001FE0
-07F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001F
-E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800
-1FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28327DB12D>I<03C00007E0000FF0001F
-F8001FF8001FF8001FF8000FF00007E00003C00000000000000000000000000000000000000000
-000000000000000001F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007
-F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
-F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF8011337DB217>I<01F800FFF800
-FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117>108
-D<03F007F8001FE000FFF03FFE00FFF800FFF0783F01E0FC00FFF0C03F8300FE000FF1801FC600
-7F0007F3001FCC007F0007F6001FF8007F8007FC001FF0007F8007FC001FF0007F8007FC001FF0
-007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001F
-E0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F800
-1FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8
-001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F80FF
-FFC3FFFF0FFFFCFFFFC3FFFF0FFFFCFFFFC3FFFF0FFFFC3E207D9F43>I<03F007F800FFF03FFE
-00FFF0783F00FFF0C03F800FF1801FC007F3001FC007F6001FE007FC001FE007FC001FE007FC00
-1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8
-001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007
-F8001FE007F8001FE007F8001FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28207D9F2D
->I<0007FC0000007FFFC00001FC07F00003F001F80007E000FC000FC0007E001FC0007F003FC0
-007F803F80003F807F80003FC07F80003FC07F80003FC0FF80003FE0FF80003FE0FF80003FE0FF
-80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE07F80003FC07F80003FC07F80003FC0
-3FC0007F803FC0007F801FC0007F000FE000FE0007E000FC0003F803F80001FE0FF000007FFFC0
-000007FC000023207E9F28>I<01F83FE000FFF8FFFC00FFFBE07F00FFFF003F8007FE001FC007
-FC000FE007F8000FF007F80007F807F80007F807F80007FC07F80003FC07F80003FC07F80003FE
-07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003
-FC07F80007FC07F80007FC07F80007F807F80007F807F8000FF007FC000FE007FE001FC007FF00
-3F8007FBC0FE0007F8FFF80007F83FC00007F800000007F800000007F800000007F800000007F8
-00000007F800000007F800000007F800000007F800000007F800000007F8000000FFFFC00000FF
-FFC00000FFFFC00000272E7E9F2D>I<03F03F00FFF07FC0FFF1C3E0FFF187E00FF30FF007F60F
-F007F60FF007FC07E007FC03C007FC000007FC000007F8000007F8000007F8000007F8000007F8
-000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007
-F8000007F8000007F8000007F80000FFFFE000FFFFE000FFFFE0001C207E9F21>114
-D<01FF860007FFFE001F00FE003C003E0078001E0078000E00F8000E00F8000E00F8000E00FC00
-0000FF800000FFFC00007FFFC0007FFFF0003FFFF8001FFFFC0007FFFE0001FFFF00003FFF0000
-00FF8000003F8060001F80E0000F80E0000F80F0000F80F0000F00F8000F00FC001E00FE001C00
-FF807800F3FFF000C07F800019207D9F20>I<001C0000001C0000001C0000001C0000001C0000
-003C0000003C0000003C0000007C0000007C000000FC000001FC000003FC000007FC00001FFFFE
-00FFFFFE00FFFFFE0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC
-000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC038003
-FC038003FC038003FC038003FC038003FC038003FC038001FC038001FC070000FE0700007F0E00
-003FFC000007F000192E7FAD1F>I<01F80007E0FFF803FFE0FFF803FFE0FFF803FFE00FF8003F
-E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800
-1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8
-001FE007F8001FE007F8001FE007F8001FE007F8003FE007F8003FE003F8007FE003F8007FE001
-FC00DFF000FE039FFF007FFF1FFF000FFC1FFF28207D9F2D>I<FFFF1FFFE07FF8FFFF1FFFE07F
-F8FFFF1FFFE07FF80FF000FE0007800FF800FE00078007F800FE00070007F8007F00070003FC00
-7F000E0003FC00FF800E0003FE00FF801E0001FE00FF801C0001FE01DFC01C0001FF01DFC03C00
-00FF03DFE0380000FF838FE07800007F838FE07000007F8707F07000007FC707F0F000003FCF07
-F8E000003FCE03F8E000001FEE03F9C000001FFC01FDC000001FFC01FFC000000FFC01FF800000
-0FF800FF80000007F800FF00000007F0007F00000007F0007F00000003F0007E00000003E0003E
-00000001E0003C00000001C0001C000035207E9F3A>119 D<7FFF807FFC7FFF807FFC7FFF807F
-FC03FE000F0001FE001E0000FF003C0000FF807800007FC07800003FE0F000001FE1E000000FF3
-C000000FFF80000007FF00000003FE00000001FE00000000FF00000000FF80000000FFC0000001
-FFC0000003DFE00000078FF00000078FF800000F07FC00001E03FC00003C01FE00007800FF0000
-F000FF8000E0007FC001E0003FC0FFFC01FFFFFFFC01FFFFFFFC01FFFF28207F9F2B>I
-E /Fl 1 14 df<0001FE00000007FF8000001E01E000007800780000E0001C0001800006000300
-00030006000001800C000000C00C000000C0180000006030000000303000000030300000003060
-0000001860000000186000000018C00000000CC00000000CC00000000CC00000000CC00000000C
-C00000000CC00000000CC00000000CC00000000C60000000186000000018600000001830000000
-303000000030300000003018000000600C000000C00C000000C006000001800300000300018000
-060000E0001C000078007800001E01E0000007FF80000001FE0000262B7DA02D>13
-D E /Fm 53 122 df<001C0000001C0000001C0000007F800003FFE0000FFFF8001F9CFC003E1C
-1E003C1C0F007C1C0700781C0F80F81C1F80F81C3F80F81C3F80F81C3F80FC1C3F80FE1C1F00FF
-1C00007FDC00007FFC00007FFFC0003FFFE0001FFFF8000FFFFC0007FFFC0001FFFE00007FFF00
-001FFF00001C7F00001C3F80381C1F807C1C1F80FE1C0F80FE1C0F80FE1C0F80FC1C0F80F81C0F
-00701C0F00701C1F00381C1E003C1C3C001F9CF8000FFFF00003FFE00000FF0000001C0000001C
-0000001C000019307CAC22>36 D<3C007F00FF80FF80FFC0FFC0FFC07FC03EC000C000C0018001
-8001800300030006000E001C00380030000A157B8813>44 D<1C007F007F00FF80FF80FF807F00
-7F001C0009097B8813>46 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE00
-00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
-00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
-00FE007FFFFE7FFFFE7FFFFE17277BA622>49 D<00FF800007FFF0000FFFFC001E03FE003800FF
-807C003F80FE003FC0FF001FC0FF001FE0FF000FE0FF000FE07E000FE03C001FE000001FE00000
-1FC000001FC000003F8000003F0000007E000000FC000000F8000001F0000003E0000007800000
-0F0000001E0000003C00E0007000E000E000E001C001C0038001C0060001C00FFFFFC01FFFFFC0
-3FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC00
-0F80FE001F007F003F807F003F803F803F803F803F803F801F803F801F003F8000007F0000007F
-0000007E000000FC000001F8000007F00000FFC00000FFC0000001F80000007E0000003F000000
-3F8000001FC000001FC000001FE000001FE03C001FE07E001FE0FF001FE0FF001FE0FF001FC0FF
-003FC0FE003F807C007F003F00FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000
-001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E00000E7E00000E7E00
-001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E0007007E000E007E000E007E
-001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000
-FE000000FE000000FE000000FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622
->I<180003001F801F001FFFFE001FFFFC001FFFF8001FFFF0001FFFC0001FFF00001C0000001C
-0000001C0000001C0000001C0000001C0000001C0000001C7FC0001DFFF8001F80FC001E003F00
-08003F0000001F8000001FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001F
-E0FE001FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFFFC0003FFF00000FF
-80001B277DA622>I<00000780000000000780000000000FC0000000000FC0000000000FC00000
-00001FE0000000001FE0000000003FF0000000003FF0000000003FF00000000077F80000000077
-F800000000F7FC00000000E3FC00000000E3FC00000001C1FE00000001C1FE00000003C1FF0000
-000380FF0000000380FF00000007007F80000007007F8000000F007FC000000E003FC000000E00
-3FC000001C001FE000001C001FE000003FFFFFF000003FFFFFF000003FFFFFF00000700007F800
-00700007F80000F00007FC0000E00003FC0000E00003FC0001C00001FE0001C00001FE0003C000
-01FF00FFFE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA833>65 D<FFFFFFF800FFFFFFFF00
-FFFFFFFFC003F8001FE003F8000FF003F80007F803F80003F803F80003FC03F80003FC03F80001
-FC03F80001FC03F80001FC03F80003FC03F80003F803F80003F803F80007F003F8000FF003F800
-1FC003F800FF8003FFFFFE0003FFFFFFC003F8000FF003F80003F803F80001FC03F80001FE03F8
-0000FE03F80000FE03F80000FF03F80000FF03F80000FF03F80000FF03F80000FF03F80000FF03
-F80000FE03F80001FE03F80003FC03F80007FC03F8001FF8FFFFFFFFE0FFFFFFFFC0FFFFFFFE00
-28297DA830>I<00007FE0030007FFFC07001FFFFF0F007FF00F9F00FF0001FF01FC0000FF03F8
-00007F07F000003F0FE000001F1FC000001F1FC000000F3F8000000F3F800000077F800000077F
-800000077F00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000
-FF00000000FF00000000FF000000007F000000007F800000007F800000073F800000073F800000
-071FC00000071FC000000E0FE000000E07F000001C03F800003C01FC00007800FF0001F0007FF0
-07C0001FFFFF800007FFFE0000007FF00028297CA831>I<FFFFFFFC0000FFFFFFFF8000FFFFFF
-FFE00003FC001FF80003FC0003FC0003FC0000FE0003FC00007F0003FC00003F8003FC00001FC0
-03FC00001FC003FC00000FE003FC00000FE003FC000007F003FC000007F003FC000007F003FC00
-0007F003FC000007F803FC000007F803FC000007F803FC000007F803FC000007F803FC000007F8
-03FC000007F803FC000007F803FC000007F803FC000007F803FC000007F003FC000007F003FC00
-0007F003FC00000FE003FC00000FE003FC00000FC003FC00001FC003FC00003F8003FC00007F00
-03FC0000FF0003FC0003FC0003FC001FF800FFFFFFFFF000FFFFFFFF8000FFFFFFFC00002D297E
-A834>I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001F0
-03FC0000F003FC00007003FC00007003FC00007003FC01C07803FC01C03803FC01C03803FC01C0
-3803FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03
-C00003FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC
-00001C03FC00003C03FC00003803FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FF
-FFFFFFF0FFFFFFFFF0FFFFFFFFF027297EA82C>I<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC00
-3FC003FC000FE003FC0003E003FC0001E003FC0001E003FC0000E003FC0000E003FC0000E003FC
-0000F003FC01C07003FC01C07003FC01C07003FC01C00003FC03C00003FC03C00003FC0FC00003
-FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C00003FC01C000
-03FC01C00003FC01C00003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
-0003FC00000003FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC000024297EA82A>I<00
-007FE003000007FFFC0700001FFFFF0F00007FF00F9F0000FF0001FF0001FC0000FF0003F80000
-7F0007F000003F000FE000001F001FC000001F001FC000000F003F8000000F003F80000007007F
-80000007007F80000007007F0000000000FF0000000000FF0000000000FF0000000000FF000000
-0000FF0000000000FF0000000000FF0000000000FF0000000000FF0000FFFFF87F0000FFFFF87F
-8000FFFFF87F800000FF003F800000FF003F800000FF001FC00000FF001FC00000FF000FE00000
-FF0007F00000FF0003F80000FF0001FC0000FF0000FF0001FF00007FF007FF00001FFFFF9F0000
-07FFFE0F0000007FF003002D297CA835>I<FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF03FC00
-003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00
-003FC003FC00003FC003FFFFFFFFC003FFFFFFFFC003FFFFFFFFC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00
-003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC0FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF30297EA835>I<FFFF
-FCFFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
-0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
-0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFF
-FCFFFFFC16297FA819>I<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC03FC00001E0003FC0000
-3C0003FC0000780003FC0000F00003FC0001E00003FC0003C00003FC0007000003FC001E000003
-FC003C000003FC0078000003FC00F0000003FC01E0000003FC0380000003FC07C0000003FC1FC0
-000003FC3FE0000003FC7FF0000003FCFFF8000003FDE7F8000003FF83FC000003FF03FE000003
-FE01FF000003FC00FF000003FC007F800003FC007FC00003FC003FE00003FC001FE00003FC000F
-F00003FC000FF80003FC0007F80003FC0003FC0003FC0001FE0003FC0001FF0003FC0000FF0003
-FC00007F80FFFFF00FFFFEFFFFF00FFFFEFFFFF00FFFFE2F297EA835>75
-D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC00000003FC00
-000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
-00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003
-FC00000003FC0001C003FC0001C003FC0001C003FC0001C003FC0003C003FC00038003FC000380
-03FC00078003FC00078003FC000F8003FC000F8003FC001F8003FC007F8003FC01FF00FFFFFFFF
-00FFFFFFFF00FFFFFFFF0022297EA828>I<FFFE0000003FFF80FFFE0000003FFF80FFFF000000
-7FFF8003FF0000007FE00003FF0000007FE00003BF800000EFE00003BF800000EFE000039FC000
-01CFE000039FC00001CFE000038FE000038FE000038FE000038FE000038FE000038FE0000387F0
-00070FE0000387F000070FE0000383F8000E0FE0000383F8000E0FE0000381FC001C0FE0000381
-FC001C0FE0000381FC001C0FE0000380FE00380FE0000380FE00380FE00003807F00700FE00003
-807F00700FE00003803F80E00FE00003803F80E00FE00003803F80E00FE00003801FC1C00FE000
-03801FC1C00FE00003800FE3800FE00003800FE3800FE000038007F7000FE000038007F7000FE0
-00038007F7000FE000038003FE000FE000038003FE000FE000038001FC000FE000038001FC000F
-E000038000F8000FE000FFFE00F803FFFF80FFFE00F803FFFF80FFFE007003FFFF8039297DA840
->I<FFFC00007FFFFFFE00007FFFFFFF00007FFF03FF800001C003FFC00001C003BFE00001C003
-9FE00001C0039FF00001C0038FF80001C00387FC0001C00383FE0001C00381FF0001C00380FF80
-01C003807F8001C003807FC001C003803FE001C003801FF001C003800FF801C0038007FC01C003
-8003FC01C0038003FE01C0038001FF01C0038000FF81C00380007FC1C00380003FE1C00380001F
-F1C00380000FF1C00380000FF9C003800007FDC003800003FFC003800001FFC003800000FFC003
-8000007FC0038000007FC0038000003FC0038000001FC0038000000FC00380000007C0FFFE0000
-03C0FFFE000001C0FFFE000001C030297EA835>I<0000FFC00000000FFFFC0000003F807F0000
-00FE001FC00001F80007E00003F00003F00007E00001F8000FE00001FC001FC00000FE001FC000
-00FE003F8000007F003F8000007F007F8000007F807F0000003F807F0000003F807F0000003F80
-FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000
-003FC0FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000007F80
-3F8000007F003F8000007F001FC00000FE001FC00000FE000FE00001FC0007F00003F80003F800
-07F00001FC000FE00000FE001FC000003FC0FF0000000FFFFC00000000FFC000002A297CA833>
-I<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC0007F003FC0003F803FC0003FC03FC00
-01FC03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC
-0001FC03FC0003FC03FC0003F803FC0007F003FC003FE003FFFFFF8003FFFFFE0003FC00000003
-FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
-03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFFF000
-00FFFFF00000FFFFF0000027297EA82E>I<0000FFC00000000FFFFC0000003FC0FF000000FE00
-1FC00001FC000FE00003F00003F00007F00003F8000FE00001FC001FC00000FE001FC00000FE00
-3F8000007F003F8000007F007F8000007F807F8000007F807F0000003F807F0000003F80FF0000
-003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0
-FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000007F803F8000
-007F003F8000007F001FC00000FE001FC03E00FE000FE07F81FC0007E0C1C1F80003F18063F000
-01F98067E00000FF803FC000003FC07F0000000FFFFC00000000FFF800C00000003C00C0000000
-1E00C00000001E01C00000001F83C00000001FFFC00000000FFF800000000FFF800000000FFF00
-00000007FF0000000003FE0000000001FC0000000000F8002A357CA833>I<FFFFFFE00000FFFF
-FFFE0000FFFFFFFF800003FC003FE00003FC000FF00003FC0007F80003FC0003FC0003FC0001FC
-0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC
-0001FC0003FC0003F80003FC0007F80003FC000FE00003FC003FC00003FFFFFE000003FFFFFE00
-0003FC00FF800003FC003FC00003FC001FE00003FC000FF00003FC0007F80003FC0007F80003FC
-0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F8
-0003FC0007F80E03FC0007F80E03FC0003F80E03FC0001FC1CFFFFF000FE1CFFFFF0007FF8FFFF
-F0000FE02F297EA832>I<00FF00C003FFE1C00FFFF9C01F80FFC03F003FC03E000FC07C0007C0
-7C0007C0FC0003C0FC0003C0FC0001C0FE0001C0FE0001C0FF000000FFC000007FFC00007FFFE0
-003FFFF8001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007FE000001FF00000
-0FF0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F00003E0F80007E0FC0007C0FF
-000F80FFE01F80E3FFFF00E1FFFC00C01FF0001C297CA825>I<7FFFFFFFFF807FFFFFFFFF807F
-FFFFFFFF807F807F807F807C007F800F8078007F80078078007F80078070007F800380F0007F80
-03C0F0007F8003C0E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001C000
-007F80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F80
-000000007F80000000007F80000000007F80000000007F80000000007F80000000007F80000000
-007F80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F80
-000000007F80000000007F80000000FFFFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F>I<
-FFFFF000FFFEFFFFF000FFFEFFFFF000FFFE03FC0000038003FC0000038003FC0000038003FC00
-00038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00000380
-03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00
-00038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00000380
-03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038001FC0000070001FE00
-00070000FE00000E00007F00000E00003F00003C00001FC0007800000FF003F0000007FFFFE000
-0000FFFF800000001FFC00002F297EA834>I<FFFFF0007FFFFFFFF0007FFFFFFFF0007FFF03FE
-000001C001FE0000038001FE0000038000FF0000070000FF0000070000FF80000F00007F80000E
-00007FC0000E00003FC0001C00003FE0001C00001FE0003800001FE0003800001FF0007800000F
-F0007000000FF800F0000007F800E0000007FC00E0000003FC01C0000003FC01C0000003FE03C0
-000001FE0380000001FF0780000000FF0700000000FF87000000007F8E000000007F8E00000000
-7FDE000000003FDC000000003FFC000000001FF8000000001FF8000000000FF0000000000FF000
-0000000FF00000000007E00000000007E00000000003C00000000003C0000030297FA833>I<FF
-FFE0FFFFE01FFFC0FFFFE0FFFFE01FFFC0FFFFE0FFFFE01FFFC003FC0003FC0000700003FC0003
-FC0000700003FE0003FE0000F00001FE0001FE0000E00001FE0001FE0000E00001FF0001FF0001
-E00000FF0001FF0001C00000FF0001FF0001C000007F8003FF80038000007F8003FF8003800000
-7FC007FFC0078000003FC0073FC0070000003FC0073FC0070000003FE00F3FE00F0000001FE00E
-1FE00E0000001FE00E1FE00E0000000FF01C0FF01C0000000FF01C0FF01C0000000FF01C0FF81C
-00000007F83807F83800000007F83807F83800000007FC7807FC7800000003FC7003FC70000000
-03FC7003FC7000000003FEF003FEF000000001FEE001FEE000000001FEE001FEE000000000FFC0
-00FFC000000000FFC000FFC000000000FFC000FFC0000000007F80007F80000000007F80007F80
-000000007F80007F80000000003F00003F00000000003F00003F00000000003F00003F00000000
-001E00001E00000000001E00001E00000042297FA845>I<FFFFF0003FFFFFFFF0003FFFFFFFF0
-003FFF03FE000003C001FF0000078000FF8000070000FF80000F00007FC0001E00003FE0001C00
-003FE0003C00001FF0007800001FF8007000000FF800F0000007FC00E0000007FE01C0000003FE
-03C0000001FF0380000001FF8700000000FF8F000000007FCE000000007FFC000000003FFC0000
-00001FF8000000001FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000F
-F0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
-00000FF0000000000FF0000000000FF000000003FFFFC0000003FFFFC0000003FFFFC00030297F
-A833>89 D<03FF80000FFFF0001F01FC003F80FE003F807F003F803F003F803F801F003F800000
-3F8000003F8000003F8000003F80003FFF8001FC3F800FE03F801F803F803F003F807E003F80FC
-003F80FC003F80FC003F80FC003F80FC005F807E00DF803F839FFC1FFE0FFC03F803FC1E1B7E9A
-21>97 D<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE000
-000FE000000FE000000FE000000FE000000FE000000FE000000FE1FE000FE7FF800FFE07E00FF8
-03F00FF001F80FE000FC0FE000FC0FE0007E0FE0007E0FE0007F0FE0007F0FE0007F0FE0007F0F
-E0007F0FE0007F0FE0007F0FE0007F0FE0007E0FE0007E0FE0007E0FE000FC0FE000FC0FF001F8
-0FF803F00F9C0FE00F0FFF800E01FC00202A7EA925>I<003FF00001FFFC0003F03E000FC07F00
-1F807F003F007F003F007F007F003E007E0000007E000000FE000000FE000000FE000000FE0000
-00FE000000FE000000FE0000007E0000007E0000007F0000003F0003803F8003801F8007000FE0
-0E0003F83C0001FFF800003FC000191B7E9A1E>I<00007FF000007FF000007FF0000007F00000
-07F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
-0007F0003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F03F0007F07E0007F07E0007F0
-7E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F07E0007
-F07E0007F03F0007F03F0007F01F800FF00FC01FF007E07FFF01FFE7FF007F87FF202A7EA925>
-I<003FC00001FFF00003E07C000F803E001F801F001F001F003F000F807E000F807E000FC07E00
-0FC0FE0007C0FE0007C0FFFFFFC0FFFFFFC0FE000000FE000000FE0000007E0000007E0000007F
-0000003F0001C01F0001C00F80038007C0070003F01E0000FFFC00003FE0001A1B7E9A1F>I<00
-07F8003FFC007E3E01FC7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007
-F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007
-F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007F
-FF807FFF807FFF80182A7EA915>I<007F80F001FFE3F807C0FE1C0F807C7C1F003E7C1F003E10
-3F003F003F003F003F003F003F003F003F003F003F003F001F003E001F003E000F807C0007C0F8
-0005FFE0000C7F8000180000001C0000001C0000001E0000001FFFF8001FFFFF000FFFFFC007FF
-FFE003FFFFF00FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C0001F07C
-0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22>I<FFE00000FFE00000FFE000000F
-E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000
-0FE000000FE000000FE07E000FE1FF800FE30FC00FE40FE00FE807E00FF807F00FF007F00FF007
-F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
-07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF20
-2A7DA925>I<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FF
-E0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
-0FE00FE00FE00FE0FFFEFFFEFFFE0F2B7EAA12>I<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE0
-0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
-E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7EA912>108
-D<FFC07F001FC000FFC1FFC07FF000FFC307E0C1F8000FC407F101FC000FC803F200FC000FD803
-FE00FE000FD003FC00FE000FD003FC00FE000FE003F800FE000FE003F800FE000FE003F800FE00
-0FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F8
-00FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000F
-E003F800FE000FE003F800FE00FFFE3FFF8FFFE0FFFE3FFF8FFFE0FFFE3FFF8FFFE0331B7D9A38
->I<FFC07E00FFC1FF80FFC30FC00FC40FE00FC807E00FD807F00FD007F00FD007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0
-0FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF201B7D9A25>I<
-003FE00001FFFC0003F07E000FC01F801F800FC03F0007E03F0007E07E0003F07E0003F07E0003
-F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F87E0003F07E00
-03F03F0007E03F0007E01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE1
-FE00FFE7FF80FFFE0FE00FF803F00FF001F80FE001FC0FE000FC0FE000FE0FE000FE0FE0007F0F
-E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007E0FE000FE0FE000FE
-0FE000FC0FE001FC0FF001F80FF803F00FFC0FE00FEFFF800FE1FC000FE000000FE000000FE000
-000FE000000FE000000FE000000FE000000FE000000FE00000FFFE0000FFFE0000FFFE00002027
-7E9A25>I<FFC3E0FFC7F8FFCC7C0FD8FE0FD0FE0FD0FE0FF0FE0FE07C0FE0000FE0000FE0000F
-E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000FF
-FF00FFFF00FFFF00171B7E9A1B>114 D<03FE300FFFF03E03F07800F07000F0F00070F00070F8
-0070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF80007FC0000FCE0007CE0003CF0
-003CF00038F80038FC0070FF01E0E7FFC0C1FF00161B7E9A1B>I<007000007000007000007000
-00F00000F00000F00001F00003F00003F00007F0001FFFE0FFFFE0FFFFE007F00007F00007F000
-07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F07007F07007F070
-07F07007F07007F07007F07003F0E001F8C000FFC0003F0014267FA51A>I<FFE07FF0FFE07FF0
-FFE07FF00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007
-F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
-0FF00FE00FF007E017F003F067FF01FFC7FF007F87FF201B7D9A25>I<FFFE07FFFFFE07FFFFFE
-07FF07F000E007F000E007F801E003F801C003F801C001FC038001FC038001FE078000FE070000
-FF0F00007F0E00007F0E00003F9C00003F9C00003FFC00001FF800001FF800000FF000000FF000
-000FF0000007E0000007E0000003C0000003C000201B7F9A23>I<FFFC7FFC1FFCFFFC7FFC1FFC
-FFFC7FFC1FFC0FE00FE001C007F007E0038007F007E0038007F807F0078003F807F0070003F807
-F8070001FC0FF80E0001FC0FF80E0001FE1FFC1E0000FE1CFC1C0000FE1CFE1C0000FF387E3C00
-007F387E3800007F787F3800003FF03F7000003FF03F7000003FE01FF000001FE01FE000001FE0
-1FE000000FC00FC000000FC00FC000000FC00FC0000007800780000007800780002E1B7F9A31>
-I<FFFC1FFEFFFC1FFEFFFC1FFE07F0078003F8070001FC0F0001FE1E0000FE3C00007F7800003F
-F800003FF000001FE000000FE0000007F0000007F800000FF800001FFC00003DFE000038FF0000
-787F0000F03F8001E03FC003C01FE003800FE0FFF03FFFFFF03FFFFFF03FFF201B7F9A23>I<FF
-FE07FFFFFE07FFFFFE07FF07F000E007F000E007F801E003F801C003F801C001FC038001FC0380
-01FE078000FE070000FF0F00007F0E00007F0E00003F9C00003F9C00003FFC00001FF800001FF8
-00000FF000000FF0000007F0000007E0000007E0000003C0000003C00000038000000380000007
-8000380700007C070000FE0E0000FE0E0000FE1C0000FE3800007C7000003FE000000F80000020
-277F9A23>I E /Fn 86 127 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8
-F8F870051C779B18>33 D<4010E038F078E038E038E038E038E038E038E038E038E038E0386030
-0D0E7B9C18>I<030600078F00078F00078F00078F00078F00078F007FFFC0FFFFE0FFFFE07FFF
-C00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFFC01E3C001E3C001E3C
-001E3C001E3C001E3C000C1800131C7E9B18>I<00C00001C00001C00001C00003F0000FFC003F
-FE007DCF0071C700E1C380E1C780E1C780E1C780F1C00079C0003DC0001FE0000FF80003FC0001
-DE0001CF0001C70061C380F1C380F1C380E1C380E1C70071C70079DE003FFE001FF80007E00001
-C00001C00001C00000C00011247D9F18>I<3803007C07807C0780EE0F80EE0F00EE0F00EE1F00
-EE1E00EE1E00EE3E007C3C007C3C00387C0000780000780000F80000F00001F00001E00001E000
-03E00003C00003C00007C0000783800787C00F87C00F0EE00F0EE01F0EE01E0EE01E0EE03E0EE0
-3C07C03C07C018038013247E9F18>I<01C00007E0000FF0000E70001C38001C38001C38001C38
-001C73F01C73F01CE3F00FE3800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC00E0F8
-00E0F800E07070E0787070FC707FFFE03FCFE00F03C0141C7F9B18>I<387C7C7E3E0E0E0E1C1C
-38F8F0C0070E789B18>I<007000F001E003C007800F001E001C00380038007000700070007000
-E000E000E000E000E000E000E000E0007000700070007000380038001C001E000F00078003C001
-F000F000700C24799F18>I<6000F00078003C001E000F000780038001C001C000E000E000E000
-E00070007000700070007000700070007000E000E000E000E001C001C0038007800F001E003C00
-7800F00060000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC
-0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D9718
->I<00600000F00000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000
-F00000F00000F00000F00000F00000F00000F00000600013147E9718>I<1C3E7E7F3F1F070E1E
-7CF860080C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<3078FCFC78300606778518
->I<000300000780000780000F80000F00001F00001E00001E00003E00003C00007C0000780000
-780000F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F00001F
-00001E00003E00003C00003C00007C0000780000F80000F00000F0000060000011247D9F18>I<
-01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0
-E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE00
-07FC0001F000131C7E9B18>I<01800380038007800F803F80FF80FB8043800380038003800380
-0380038003800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>I<03F0
-000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C00001C00003
-C0000780000F00001E00003C0000780000F00001E00007C0000F80001E00E03C00E07FFFE0FFFF
-E07FFFE0131C7E9B18>I<001F00003F0000770000770000E70001E70001C70003870007870007
-07000E07001E07003C0700380700780700F00700FFFFF8FFFFF8FFFFF800070000070000070000
-0700000700000700007FF000FFF8007FF0151C7F9B18>52 D<007E0001FF0007FF800F83C01E03
-C01C03C0380180380000700000700000E1F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000
-E0F000E07000E07000E07000E03801C03C03C01E07800FFF0007FE0001F800131C7E9B18>54
-D<3078FCFC783000000000000000003078FCFC78300614779318>58 D<183C7E7E3C1800000000
-00000000183C7E7E3E1E0E1C3C78F060071A789318>I<000300000780001F80003F00007E0001
-FC0003F00007E0001FC0003F00007E0000FC0000FC00007E00003F00001FC00007E00003F00001
-FC00007E00003F00001F8000078000030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000
-000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<600000F00000FC00007E00
-003F00001FC00007E00003F00001FC00007E00003F00001F80001F80003F00007E0001FC0003F0
-0007E0001FC0003F00007E0000FC0000F0000060000011187D9918>I<0FF0003FFC007FFF0070
-0F00F00380F00380600780000F00003E00007C0001F00001E00003C00003C00003C00003C00003
-C00003800000000000000000000000000000000003800007C00007C00007C000038000111C7D9B
-18>I<007C0001FE0007FF000F87801E03C03C1DC0387FC070FFE071E3E071C1E0E1C1E0E380E0
-E380E0E380E0E380E0E380E0E380E0E1C1C071C1C071E3C070FF80387F003C1C001E00E00F83E0
-07FFC001FF80007E00131C7E9B18>I<00700000F80000F80000D80000D80001DC0001DC0001DC
-00018C00038E00038E00038E00038E000306000707000707000707000707000FFF800FFF800FFF
-800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<FFFC00FFFF00FFFF801C
-03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C
-00E01C00F01C00701C00701C00701C00701C00F01C00E01C03E0FFFFC0FFFF80FFFE00141C7F9B
-18>I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E07000E0700000E00000E00000
-E00000E00000E00000E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C0
-07FF8003FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00
-E01C00E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00
-E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C
-00701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C
-0E001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B
-18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C00
-1FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00001C00001C00001C00001C0000
-FFC000FFC000FFC000131C7E9B18>I<01F1C003FDC00FFFC01F0FC01C03C03803C03801C07001
-C07001C0700000E00000E00000E00000E00000E00000E00FF0E01FF0E00FF07001C07001C07003
-C03803C03803C01C07C01F0FC00FFFC003FDC001F1C0141C7E9B18>I<7FFF00FFFF807FFF0001
-C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
-C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B
-18>73 D<01FFC003FFC001FFC0000E00000E00000E00000E00000E00000E00000E00000E00000E
-00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00F00E00F00E00F03C
-007FFC003FF0000FC000121C7D9B18>I<7F07F0FF87F87F07F01C03C01C07801C07001C0E001C
-1E001C3C001C38001C70001CF0001DF0001DF0001FB8001FB8001F1C001E1C001C0E001C0E001C
-07001C07001C03801C03801C01C07F03F0FF87F87F03F0151C7F9B18>I<7FE000FFE0007FE000
-0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000
-0E00000E00000E00000E00000E00700E00700E00700E00700E00707FFFF0FFFFF07FFFF0141C7F
-9B18>I<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B8EE03B8EE0398CE0398CE039DC
-E039DCE039DCE038D8E038D8E038F8E03870E03870E03800E03800E03800E03800E03800E03800
-E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01C
-C1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C
-19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF00
-780F00700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380
-E00380E00380E00380E00380E00380E00380F00780700700780F007FFF003FFE000FF800111C7D
-9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00701C00701C00701C00701C00
-E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00001C00001C00001C00001C00
-00FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E0
-0380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E1
-E380E1E380F0E78070F700787F007FFF003FFE000FFC00001C00001E00000E00000F0000070000
-070011227D9B18>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C0
-1C03801C0F801FFF001FFE001FFE001C0F001C07001C03801C03801C03801C03801C03801C039C
-1C039C1C039C7F01F8FF81F87F00F0161C7F9B18>I<03F3801FFF803FFF807C0F80700780E003
-80E00380E00380E000007000007800003F00001FF00007FE0000FF00000F800003C00001C00000
-E00000E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FF
-FFF8FFFFF8E07038E07038E07038E0703800700000700000700000700000700000700000700000
-700000700000700000700000700000700000700000700000700000700000700007FF0007FF0007
-FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C00701C00701C0070
-1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00700E00E0
-0F01E00783C003FF8001FF00007C00171C809B18>I<FF07F8FF07F8FF07F81C01C01C01C01C01
-C01C01C00E03800E03800E03800E03800F0780070700070700070700070700038E00038E00038E
-00038E00018C0001DC0001DC0001DC0000D80000F80000F800007000151C7F9B18>I<FE03F8FE
-03F8FE03F87000707000707000703800E03800E03800E03800E03800E038F8E038F8E039DCE039
-DCE019DCC019DCC019DCC0198CC01D8DC01D8DC01D8DC01D8DC00D8D800D05800F07800F07800E
-0380151C7F9B18>I<7F8FE07F9FE07F8FE00E07000F0700070E00078E00039C0003DC0001F800
-01F80000F00000F00000700000F00000F80001F80001DC00039E00038E00070F000707000E0780
-0E03801E03C07F07F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C00E03
-800F0780070700070700038E00038E0001DC0001DC0001DC0000F80000F8000070000070000070
-0000700000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>I<FFF8FFF8
-FFF8E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
-00E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FFF80D24779F18>91
-D<600000F00000F00000F800007800007C00003C00003C00003E00001E00001F00000F00000F00
-000F800007800007C00003C00003C00003E00001E00001F00000F00000F800007800007800007C
-00003C00003E00001E00001E00001F00000F00000F8000078000078000030011247D9F18>I<FF
-F8FFF8FFF800380038003800380038003800380038003800380038003800380038003800380038
-0038003800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F9F18>I<
-7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<061E3E387070E0E0E0F8FC7C7C38070E789E18
->I<1FE0003FF8007FFC00781E00300E0000070000070000FF0007FF001FFF007F0700780700E0
-0700E00700E00700F00F00781F003FFFF01FFBF007E1F014147D9318>I<7E0000FE00007E0000
-0E00000E00000E00000E00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E0038
-0E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C80
-9B18>I<01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E000
-00E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80003F8000
-1F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F80700780700380E0
-0380E00380E00380E00380E00380E00380700780700780380F803C1F801FFFF00FFBF803E3F015
-1C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380E001C0E001C0FFFFC0FFFFC0
-FFFFC0E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80007F
-C000FFE000E1E001C0C001C00001C00001C0007FFFC0FFFFC0FFFFC001C00001C00001C00001C0
-0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF007FFF007FFF
-00131C7F9B18>I<01E1F007FFF80FFFF81E1E301C0E003807003807003807003807003807001C
-0E001E1E001FFC001FF80039E0003800001C00001FFE001FFFC03FFFE07801F0700070E00038E0
-0038E00038E000387800F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E0000
-0E00000E00000E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E0
-0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C80
-9B18>I<03800007C00007C00007C0000380000000000000000000000000007FC000FFC0007FC0
-0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
-0001C000FFFF00FFFF80FFFF00111D7C9C18>I<0038007C007C007C003800000000000000000F
-FC1FFC0FFC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
-001C001C001C001C001C6038F078FFF07FE03F800E277E9C18>I<FE0000FE0000FE00000E0000
-0E00000E00000E00000E00000E3FF00E7FF00E3FF00E07800E0F000E1E000E3C000E78000EF000
-0FF8000FFC000F9C000F0E000E0F000E07000E03800E03C0FFC7F8FFC7F8FFC7F8151C7F9B18>
-I<7FE000FFE0007FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
-0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0007FFF
-C0FFFFE07FFFC0131C7E9B18>I<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C
-1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00
-1C1C1C007F1F1F00FFBFBF807F1F1F001914819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F
-00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFF
-E7FE7FC3FC1714809318>I<01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000E0
-E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>
-I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00
-380F00700F00700F80E00FC1E00FFFC00EFF800E3E000E00000E00000E00000E00000E00000E00
-000E00007FC000FFE0007FC000151E809318>I<01E38007FB801FFF803E1F80380F8070078070
-0780E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF800FFB8003
-E380000380000380000380000380000380000380000380003FF8003FF8003FF8151E7E9318>I<
-7F87E0FF9FF07FBFF803F87803F03003E00003C00003C000038000038000038000038000038000
-0380000380000380000380007FFE00FFFF007FFE0015147F9318>I<07F7003FFF007FFF00780F
-00E00700E00700E007007C00007FE0001FFC0003FE00001F00600780E00380E00380F00380F80F
-00FFFF00FFFC00E7F00011147D9318>I<0180000380000380000380000380007FFFC0FFFFC0FF
-FFC00380000380000380000380000380000380000380000380000380000380400380E00380E003
-80E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E0
-0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE
-01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03800E03800E03800707000707000707
-00038E00038E00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318>I<FF
-8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C00D
-DD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<7F8FF07F9FF07F8FF0070700
-078E00039E0001DC0001F80000F80000700000F00000F80001DC00039E00038E000707000F0780
-7F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E03800703800707
-00070700038700038600038E0001CE0001CE0000CC0000CC0000DC000078000078000078000070
-0000700000700000F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF07F
-FFF07FFFF07001E07003C0700780000F00001E00003C0000F80001F00003C0000780000F00701E
-00703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE000780000E000
-00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00001E0007FC000FF8000
-FF80007FC00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
-00E000007800007FE0001FE00007E013247E9F18>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
-F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600424769F18>I<7C0000FF0000FFC00003C00000
-E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000F000007FC000
-3FE0003FE0007FC000F00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
-E00000E00003C000FFC000FF00007C000013247E9F18>I<060C1F1E3FBEFBF8F1F060C00F067C
-9B18>I E /Fo 76 124 df<001F83E000F06E3001C078780380F8780300F03007007000070070
-000700700007007000070070000700700007007000FFFFFF800700700007007000070070000700
-700007007000070070000700700007007000070070000700700007007000070070000700700007
-007000070070000700700007007000070070007FE3FF001D20809F1B>11
-D<003F0000E0C001C0C00381E00701E00701E0070000070000070000070000070000070000FFFF
-E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
-E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000E0E001C1E00381E007
-00E00700E00700E00700E00700E00700E00700E00700E0FFFFE00700E00700E00700E00700E007
-00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
-00E07FE7FE1720809F19>I<001F81F80000F04F040001C07C06000380F80F000300F00F000700
-F00F00070070000007007000000700700000070070000007007000000700700000FFFFFFFF0007
-007007000700700700070070070007007007000700700700070070070007007007000700700700
-070070070007007007000700700700070070070007007007000700700700070070070007007007
-00070070070007007007007FE3FE3FF02420809F26>I<0080008007E00C981084208260824081
-C087C08FC08FC086E080F08078803F803FE01FF807FC00FE009E008E00870087F083F083F08380
-83808240864084208818B007C000800080008010257DA117>36 D<70F8FCFC7404040408081010
-2040060E7C9F0D>39 D<0020004000800100020006000C000C0018001800300030003000700060
-0060006000E000E000E000E000E000E000E000E000E000E000E000E00060006000600070003000
-30003000180018000C000C000600020001000080004000200B2E7DA112>I<8000400020001000
-08000C00060006000300030001800180018001C000C000C000C000E000E000E000E000E000E000
-E000E000E000E000E000E000C000C000C001C001800180018003000300060006000C0008001000
-2000400080000B2E7DA112>I<70F8FCFC74040404080810102040060E7C840D>44
-D<FFC0FFC00A027F8A0F>I<70F8F8F87005057C840D>I<03F0000E1C001C0E0018060038070070
-0380700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0
-03C0F003C0F003C0F003C07003807003807003807807803807001806001C0E000E1C0003F00012
-1F7E9D17>48 D<018003800F80F380038003800380038003800380038003800380038003800380
-03800380038003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C
-1C00100E00200700400780800780F007C0F803C0F803C0F803C02007C00007C000078000078000
-0F00000E00001C0000380000700000600000C0000180000300000600400C00401800401000803F
-FF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F80780780780780380F80
-000F80000F00000F00000E00001C0000380003F000003C00000E00000F000007800007800007C0
-2007C0F807C0F807C0F807C0F00780400780400F00200E001C3C0003F000121F7E9D17>I<0006
-00000600000E00000E00001E00002E00002E00004E00008E00008E00010E00020E00020E00040E
-00080E00080E00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E
-00000E00000E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE00010000010000010
-000010000010000010000011F000161C00180E001007001007800003800003800003C00003C000
-03C07003C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E9D17>I<
-007C000182000701000E03800C07801C0780380300380000780000700000700000F1F000F21C00
-F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C0700380380380
-3807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF804001008002
-0080020080040000080000080000100000200000200000400000400000C00000C00001C0000180
-00038000038000038000038000078000078000078000078000078000078000078000030000121F
-7D9D17>I<03F0000C0C001006003003002001806001806001806001807001807803003E03003F
-06001FC8000FF00003F80007FC000C7E00103F00300F806003804001C0C001C0C000C0C000C0C0
-00C0C000806001802001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C00380600
-380700700700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0
-180BC00E13C003E3C0000380000380000380000700300700780600780E00700C00201800107000
-0FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8
-F8700000000000000000000070F0F8F878080808101010202040051D7C930D>I<000100000003
-800000038000000380000007C0000007C0000007C0000009E0000009E0000009E0000010F00000
-10F0000010F00000207800002078000020780000403C0000403C0000403C0000801E0000801E00
-00FFFE0001000F0001000F0001000F00020007800200078002000780040003C00E0003C01F0007
-E0FFC03FFE1F207F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F0007800F800780
-0F8007800F8007800F8007800F8007800F0007801F0007801E0007803C0007FFF00007803C0007
-801E0007800F0007800F8007800780078007C0078007C0078007C0078007C0078007C007800780
-07800F8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC040007030C001C009C0
-038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C00004078000040F80000
-00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000780000007C00
-00407C0000403C0000401C0000401E0000800E000080070001000380020001C004000070380000
-0FC0001A217D9F21>I<FFFFE0000F803C0007801E000780070007800380078003C0078001E007
-8001E0078001F0078000F0078000F0078000F8078000F8078000F8078000F8078000F8078000F8
-078000F8078000F8078000F8078000F0078000F0078000F0078001E0078001E0078003C0078003
-800780070007800E000F803C00FFFFE0001D1F7E9E23>I<FFFFFF000F800F0007800300078003
-000780010007800180078000800780008007800080078080800780800007808000078080000781
-800007FF8000078180000780800007808000078080000780800007800020078000200780002007
-8000400780004007800040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E1F>I<FF
-FFFF000F800F000780030007800300078001000780018007800080078000800780008007800080
-078080000780800007808000078080000781800007FF8000078180000780800007808000078080
-000780800007800000078000000780000007800000078000000780000007800000078000000FC0
-0000FFFE0000191F7E9E1E>I<000FE0200078186000E004E0038002E0070001E00F0000E01E00
-00601E0000603C0000603C0000207C00002078000020F8000000F8000000F8000000F8000000F8
-000000F8000000F8000000F8007FFCF80003E0780001E07C0001E03C0001E03C0001E01E0001E0
-1E0001E00F0001E0070001E0038002E000E0046000781820000FE0001E217D9F24>I<FFF8FFF8
-0F800F8007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F
-0007800F0007800F0007800F0007FFFF0007800F0007800F0007800F0007800F0007800F000780
-0F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000F800F80FF
-F8FFF81D1F7E9E22>I<FFFC0FC007800780078007800780078007800780078007800780078007
-80078007800780078007800780078007800780078007800780078007800FC0FFFC0E1F7F9E10>
-I<0FFFC0007C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
-00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00203C00F83C00F83C
-00F83C00F0380040780040700030E0000F800012207E9E17>I<FFFC0FFC0FC003E00780018007
-800100078002000780040007800800078010000780200007804000078080000781000007830000
-07878000078F80000793C0000791E00007A1E00007C0F0000780F0000780780007803C0007803C
-0007801E0007801E0007800F000780078007800780078007C00FC007E0FFFC3FFC1E1F7E9E23>
-I<FFFE000FC0000780000780000780000780000780000780000780000780000780000780000780
-000780000780000780000780000780000780000780000780020780020780020780020780060780
-0407800407800C07801C0F807CFFFFFC171F7E9E1C>I<FF80001FF80F80001F800780001F0005
-C0002F0005C0002F0005C0002F0004E0004F0004E0004F000470008F000470008F000470008F00
-0438010F000438010F000438010F00041C020F00041C020F00041C020F00040E040F00040E040F
-00040E040F000407080F000407080F000407080F000403900F000403900F000401E00F000401E0
-0F000401E00F000E00C00F001F00C01F80FFE0C1FFF8251F7E9E2A>I<FF803FF807C007C007C0
-038005E0010005E0010004F001000478010004780100043C0100043C0100041E0100040F010004
-0F010004078100040781000403C1000401E1000401E1000400F1000400F1000400790004003D00
-04003D0004001F0004001F0004000F0004000700040007000E0003001F000300FFE001001D1F7E
-9E22>I<001F800000F0F00001C0380007801E000F000F000E0007001E0007803C0003C03C0003
-C07C0003E0780001E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F800
-01F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03C0003C01E0007800E0007000F
-000F0007801E0001C0380000F0F000001F80001C217D9F23>I<FFFFE0000F80780007801C0007
-801E0007800F0007800F8007800F8007800F8007800F8007800F8007800F8007800F0007801E00
-07801C000780780007FFE000078000000780000007800000078000000780000007800000078000
-000780000007800000078000000780000007800000078000000FC00000FFFC0000191F7E9E1F>
-I<FFFF80000F80F0000780780007803C0007801E0007801E0007801F0007801F0007801F000780
-1F0007801E0007801E0007803C00078078000780F00007FF80000781C0000780E0000780F00007
-80700007807800078078000780780007807C0007807C0007807C0007807C0407807E0407803E04
-0FC01E08FFFC0F10000003E01E207E9E21>82 D<07E0800C1980100780300380600180600180E0
-0180E00080E00080E00080F00000F000007800007F00003FF0001FFC000FFE0003FF00001F8000
-07800003C00003C00001C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C0081
-F80012217D9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F
-0010800F0010800F0010000F0000000F0000000F0000000F0000000F0000000F0000000F000000
-0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
-000F0000000F0000001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C00780038007800100
-078001000780010007800100078001000780010007800100078001000780010007800100078001
-000780010007800100078001000780010007800100078001000780010007800100078001000780
-0100038002000380020001C0020001C0040000E008000070180000382000000FC0001D207E9E22
->I<FFF003FE1F8000F80F0000600F800060078000400780004003C0008003C0008003C0008001
-E0010001E0010001F0010000F0020000F0020000F806000078040000780400003C0800003C0800
-003C0800001E1000001E1000001F3000000F2000000F20000007C0000007C0000007C000000380
-000003800000038000000100001F207F9E22>I<FFF07FF81FF01F800FC007C00F00078003800F
-00078001000F0007C00100078007C00200078007C00200078007C0020003C009E0040003C009E0
-040003C009E0040003E010F00C0001E010F0080001E010F0080001F02078080000F02078100000
-F02078100000F0403C10000078403C20000078403C20000078C03E2000003C801E4000003C801E
-4000003C801E4000001F000F8000001F000F8000001F000F8000001E00078000000E0007000000
-0E00070000000C000300000004000200002C207F9E2F>I<FFF003FF1F8000F80F800060078000
-4007C0004003E0008001E0008001F0010000F0030000F80200007C0400003C0400003E0800001E
-0800001F1000000FB0000007A0000007C0000003C0000003C0000003C0000003C0000003C00000
-03C0000003C0000003C0000003C0000003C0000003C0000007C000007FFE00201F7F9E22>89
-D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
-C0C0C0C0C0FEFE072D7CA10D>91 D<FEFE06060606060606060606060606060606060606060606
-06060606060606060606060606060606060606FEFE072D7FA10D>93 D<081020204040808080B8
-FCFC7C38060E7D9F0D>96 D<1FE000303000781800781C00300E00000E00000E00000E0000FE00
-078E001E0E00380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>
-I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E
-000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00780E00780E00
-700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F80E0C1C1E381E380C700070
-00F000F000F000F000F000F00070007000380138011C020E0C03F010147E9314>I<000380003F
-8000038000038000038000038000038000038000038000038000038000038003E380061B801C07
-80380380380380700380700380F00380F00380F00380F00380F00380F003807003807003803803
-803807801C07800E1B8003E3F815207E9F19>I<03F0000E1C001C0E0038070038070070070070
-0380F00380F00380FFFF80F00000F00000F000007000007000003800801800800C010007060001
-F80011147F9314>I<007C00C6018F038F07060700070007000700070007000700FFF007000700
-07000700070007000700070007000700070007000700070007000700070007007FF01020809F0E
->I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E
-380033E0002000002000003000003000003FFE001FFF800FFFC03001E0600070C00030C00030C0
-0030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E00000E0000
-0E00000E00000E00000E00000E00000E00000E00000E3E000E43000E81800F01C00F01C00E01C0
-0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
-FFE7FC16207F9F19>I<1C003E003E003E001C000000000000000000000000000E007E000E000E
-000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>
-I<00E001F001F001F000E0000000000000000000000000007007F000F000700070007000700070
-00700070007000700070007000700070007000700070007000700070007000706070F060F0C061
-803F000C28829E0E>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00
-000E00000E00000E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000EF8000F38
-000E1C000E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE00
-0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
-000E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E
-81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00
-0E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E
-000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C0
-0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC
-16147F9319>I<01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000
-F0F000F0F000F07000E07000E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FE
-C3800F01C00F00E00E00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00700E
-00F00E00E00F01E00F01C00EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E
-0000FFE000151D7F9319>I<03E0800619801C05803C0780380380780380700380F00380F00380
-F00380F00380F00380F003807003807803803803803807801C0B800E138003E380000380000380
-000380000380000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E
-000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030
-704030C010C010C010E00078007F803FE00FF00070803880188018C018C018E030D0608F800D14
-7E9312>I<020002000200060006000E000E003E00FFF80E000E000E000E000E000E000E000E00
-0E000E000E000E080E080E080E080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E
-01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
-03C00603C0030DC001F1FC16147F9319>I<FF83F81E01E01C00C00E00800E00800E0080070100
-07010003820003820003820001C40001C40001EC0000E80000E800007000007000007000002000
-15147F9318>I<FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0400707C080
-0704C0800704E080038861000388710003C8730001D0320001D03A0000F03C0000E01C0000E01C
-0000601800004008001E147F9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC
-00007800003800003C00007C00004E000087000107000303800201C00601E01E01E0FF07FE1714
-809318>I<FF83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001
-C40001C40001EC0000E80000E800007000007000007000002000002000004000004000004000F0
-8000F08000F100006200003C0000151D7F9318>I<3FFF380E200E201C40384078407000E001E0
-01C00380078007010E011E011C0338027006700EFFFE10147F9314>I<FFFFFC1601808C17>I
-E /Fp 14 122 df<0000001FFC0000C000000003FFFFC001C00000001FFFFFF003C00000007FFF
-FFFC07C0000001FFFC00FE0FC0000007FFC0001F9FC000000FFE000007FFC000003FF8000003FF
-C000007FF0000000FFC00000FFE00000007FC00001FFC00000007FC00001FF800000003FC00003
-FF000000001FC00007FE000000001FC0000FFE000000000FC0000FFC000000000FC0001FFC0000
-000007C0001FFC0000000007C0003FF80000000007C0003FF80000000003C0003FF80000000003
-C0007FF80000000003C0007FF80000000003C0007FF0000000000000007FF000000000000000FF
-F000000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF00000
-0000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF00000000000
-0000FFF000000000000000FFF000001FFFFFFF807FF000001FFFFFFF807FF000001FFFFFFF807F
-F800001FFFFFFF807FF800000001FFC0003FF800000001FFC0003FF800000001FFC0003FF80000
-0001FFC0001FFC00000001FFC0001FFC00000001FFC0000FFE00000001FFC0000FFE00000001FF
-C00007FF00000001FFC00003FF00000001FFC00001FF80000001FFC00001FFC0000001FFC00000
-FFE0000001FFC000007FF0000003FFC000003FFC000003FFC000000FFF000007FFC0000007FFC0
-001FBFC0000001FFFC00FF1FC00000007FFFFFFE0FC00000001FFFFFF803C000000003FFFFE000
-C0000000001FFE00000000413D7BBB4C>71 D<FFFFFFFE000000FFFFFFFE000000FFFFFFFE0000
-00FFFFFFFE000000007FF000000000007FF000000000007FF000000000007FF000000000007FF0
-00000000007FF000000000007FF000000000007FF000000000007FF000000000007FF000000000
-007FF000000000007FF000000000007FF000000000007FF000000000007FF000000000007FF000
-000000007FF000000000007FF000000000007FF000000000007FF000000000007FF00000000000
-7FF000000000007FF000000000007FF000000000007FF000000000007FF000000000007FF00000
-0000007FF000000000007FF000000000007FF000000000007FF000000000007FF000000780007F
-F000000780007FF000000780007FF000000780007FF000000780007FF000000F80007FF000000F
-00007FF000000F00007FF000000F00007FF000001F00007FF000001F00007FF000001F00007FF0
-00003F00007FF000003F00007FF000007F00007FF00000FF00007FF00001FF00007FF00003FF00
-007FF0000FFE00007FF0007FFE00FFFFFFFFFFFE00FFFFFFFFFFFE00FFFFFFFFFFFE00FFFFFFFF
-FFFE00313B7CBA3A>76 D<FFFFF0000007FFFFE0FFFFF8000007FFFFE0FFFFFC000007FFFFE0FF
-FFFE000007FFFFE0007FFE00000007E000007FFF00000003C000007FFF80000003C000007BFFC0
-000003C000007BFFE0000003C0000079FFE0000003C0000078FFF0000003C00000787FF8000003
-C00000783FFC000003C00000783FFE000003C00000781FFE000003C00000780FFF000003C00000
-7807FF800003C000007803FFC00003C000007803FFE00003C000007801FFE00003C000007800FF
-F00003C0000078007FF80003C0000078003FFC0003C0000078003FFE0003C0000078001FFF0003
-C0000078000FFF0003C00000780007FF8003C00000780003FFC003C00000780003FFE003C00000
-780001FFF003C00000780000FFF003C000007800007FF803C000007800003FFC03C00000780000
-3FFE03C000007800001FFF03C000007800000FFF03C0000078000007FF83C0000078000003FFC3
-C0000078000003FFE3C0000078000001FFF3C0000078000000FFF3C00000780000007FFBC00000
-780000003FFFC00000780000003FFFC00000780000001FFFC00000780000000FFFC00000780000
-0007FFC000007800000003FFC000007800000003FFC000007800000001FFC000007800000000FF
-C0000078000000007FC0000078000000003FC0000078000000003FC00000FC000000001FC000FF
-FFFC0000000FC000FFFFFC00000007C000FFFFFC00000003C000FFFFFC00000003C000433B7CBA
-4C>78 D<FFFFFFFFF800000000FFFFFFFFFFC0000000FFFFFFFFFFF8000000FFFFFFFFFFFE0000
-00007FF0001FFF000000007FF00003FFC00000007FF00000FFE00000007FF000007FF00000007F
-F000003FF80000007FF000003FF80000007FF000003FFC0000007FF000001FFC0000007FF00000
-1FFC0000007FF000001FFE0000007FF000001FFE0000007FF000001FFE0000007FF000001FFE00
-00007FF000001FFE0000007FF000001FFE0000007FF000001FFC0000007FF000001FFC0000007F
-F000003FFC0000007FF000003FF80000007FF000007FF00000007FF000007FE00000007FF00001
-FFC00000007FF00003FF800000007FF0001FFE000000007FFFFFFFF8000000007FFFFFFFC00000
-00007FFFFFFFC0000000007FF0007FF0000000007FF0001FF8000000007FF0000FFC000000007F
-F00007FE000000007FF00003FF000000007FF00003FF800000007FF00001FF800000007FF00001
-FF800000007FF00001FFC00000007FF00001FFC00000007FF00001FFC00000007FF00001FFC000
-00007FF00001FFC00000007FF00001FFE00000007FF00001FFE00000007FF00001FFE00000007F
-F00001FFE00000007FF00001FFE00000007FF00001FFE001E0007FF00001FFE001E0007FF00000
-FFF001E0007FF00000FFF001E0007FF00000FFF003C0007FF000007FF803C0FFFFFFF8003FFC07
-80FFFFFFF8001FFE0F80FFFFFFF80007FFFF00FFFFFFF80001FFFC000000000000001FF000433C
-7CBA48>82 D<FFFFFFF8001FFFFF80FFFFFFF8001FFFFF80FFFFFFF8001FFFFF80FFFFFFF8001F
-FFFF80007FF00000001F8000007FF00000000F0000007FF00000000F0000007FF00000000F0000
-007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF0
-0000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF0000000
-0F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000
-007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF0
-0000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF0000000
-0F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000
-007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF0
-0000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF0000000
-0F0000007FF00000000F0000003FF00000001E0000003FF00000001E0000003FF80000001E0000
-001FF80000003C0000001FF80000003C0000000FFC0000007800000007FC000000F800000007FE
-000001F000000003FF000003F000000001FF800007E000000000FFE0001FC0000000003FFC01FF
-80000000001FFFFFFE000000000007FFFFF8000000000000FFFFE00000000000000FFE00000000
-413C7CBA4A>85 D<003FFE00000001FFFFE0000007FFFFF800000FE007FC00000FF001FE00001F
-F800FF00001FF8007F80001FF8007FC0001FF8003FC0000FF0003FE00007E0003FE00003C0003F
-E0000000003FE0000000003FE0000000003FE0000000003FE0000000FFFFE000001FFFFFE00000
-7FF83FE00003FF803FE00007FC003FE0000FF0003FE0001FE0003FE0003FE0003FE0007FC0003F
-E0007FC0003FE000FF80003FE000FF80003FE000FF80003FE000FF80003FE000FF80007FE0007F
-C0007FE0007FC000DFE0003FE0039FF0001FF80F0FFFE007FFFE0FFFE001FFF807FFE0003FE000
-FFE02B267DA52F>97 D<00FE00000000FFFE00000000FFFE00000000FFFE00000000FFFE000000
-0007FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE
-0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE000000
-0003FE0000000003FE0000000003FE0000000003FE0000000003FE01FF000003FE1FFFF00003FE
-7FFFFC0003FEFC03FE0003FFF000FF0003FFC0003F8003FF00001FC003FE00001FE003FE00000F
-F003FE00000FF803FE00000FF803FE000007FC03FE000007FC03FE000007FC03FE000007FE03FE
-000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007
-FE03FE000007FE03FE000007FC03FE000007FC03FE000007FC03FE00000FFC03FE00000FF803FE
-00000FF003FE00001FF003FF00001FE003FF80003FC003FFC0007F8003F9E000FF0003F0FC07FE
-0003F07FFFF80003E01FFFE00003C003FE00002F3C7DBB36>I<000000003F800000003FFF8000
-00003FFF800000003FFF800000003FFF8000000001FF8000000000FF8000000000FF8000000000
-FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000
-000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000
-FF800000FF80FF80000FFFF0FF80003FFFFCFF8000FFC03FFF8001FE000FFF8003FC0003FF8007
-F80001FF800FF00000FF801FF00000FF803FE00000FF803FE00000FF807FE00000FF807FC00000
-FF807FC00000FF807FC00000FF80FFC00000FF80FFC00000FF80FFC00000FF80FFC00000FF80FF
-C00000FF80FFC00000FF80FFC00000FF80FFC00000FF80FFC00000FF807FC00000FF807FC00000
-FF807FC00000FF803FE00000FF803FE00000FF801FE00000FF800FF00001FF8007F00003FF8003
-F80007FF8001FE001FFFC000FF807EFFFE007FFFF8FFFE000FFFE0FFFE0001FF00FFFE2F3C7DBB
-36>100 D<0001FF8000000FFFF000003FFFFC0000FF81FE0003FE007F8007F8003F800FF8001F
-C00FF0000FE01FE0000FE03FE0000FF03FE00007F07FC00007F07FC00007F87FC00007F8FFC000
-07F8FFC00007F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFC0000000FFC0000000FFC0000000FFC0
-0000007FC00000007FC00000007FC00000003FE00000003FE00000781FE00000781FF00000780F
-F00000F007F80001F003FC0003E001FE000FC000FFC07F80003FFFFE00000FFFF8000000FFC000
-25267DA52C>I<01E00007F8000FFC000FFC001FFE001FFE001FFE001FFE000FFC000FFC0007F8
-0001E00000000000000000000000000000000000000000000000000000000000000000000000FE
-00FFFE00FFFE00FFFE00FFFE0007FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE00FFFFF0FFFFF0FFFFF0FFFFF0143D7DBC1A
->105 D<00FE00FFFE00FFFE00FFFE00FFFE0007FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE00FFFFF8FFFFF8FFFFF8FFFFF8153C7DBB1A>108
-D<01FC00FF8000FFFC03FFF000FFFC0FFFF800FFFC1E03FC00FFFC3801FE0007FC6001FF0003FC
-C000FF0003FDC000FF8003FD8000FF8003FF0000FF8003FF0000FF8003FF0000FF8003FE0000FF
-8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE
-0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF
-8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE
-0000FF8003FE0000FF80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFE2F267CA536
->110 D<01FC03F000FFFC0FFC00FFFC1FFF00FFFC3C3F80FFFC707F8007FCE0FFC003FCC0FFC0
-03FD80FFC003FD80FFC003FF807F8003FF003F0003FF001E0003FF00000003FE00000003FE0000
-0003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00
-000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE
-00000003FE00000003FE00000003FE000000FFFFFC0000FFFFFC0000FFFFFC0000FFFFFC000022
-267DA528>114 D<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFCFFFFF001FFFC03FE00001F8003
-FF00001F0001FF00001E0001FF80003E0000FF80003C0000FF80003C00007FC0007800007FC000
-7800007FE000F800003FE000F000003FF001F000001FF001E000001FF803E000000FF803C00000
-0FFC03C0000007FC0780000007FC0780000007FE0F80000003FE0F00000003FF1F00000001FF1E
-00000001FFBE00000000FFBC00000000FFFC000000007FF8000000007FF8000000007FF8000000
-003FF0000000003FF0000000001FE0000000001FE0000000000FC0000000000FC0000000000780
-000000000780000000000F80000000000F00000000001F00000000001E00000008003E0000007F
-003C0000007F007C000000FF8078000000FF80F8000000FF80F0000000FF81E00000007F07C000
-00007C1F800000003FFF000000001FFE0000000007F0000000002E377EA533>121
-D E end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
+%DVIPSParameters: dpi=300, compressed, comments removed
+%DVIPSSource: TeX output 1997.06.03:1139
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
+/X{S N}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{dup dup 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 /IE 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 IE N
+end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /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 dup definefont setfont}B /ch-width{ch-data dup
+length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
+128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
+get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
+dup 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 /sf 0 N /CharBuilder{save 3 1 roll S dup
+/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
+0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
+setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
+.1 sub]/id ch-image N /rw ch-width 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 dup 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 dup gp add
+/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
+dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
+adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 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}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
+}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
+length 1 sub dup 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 dup 1 get dup mul exch 0 get dup 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
+/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
+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 /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
+{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
+getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
+ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
+RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
+false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
+round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
+rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
+{dup /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
+TeXDict begin 40258431 52099146 1000 300 300 (readline.dvi)
+@start /Fa 1 47 df<127012F8A212F012E005057B840E>46 D
+E /Fb 1 47 df<1238127C12FCA212F8127006067A8512>46 D E
+/Fc 1 59 df<126012F0A2126004047D830B>58 D E /Fd 52 127
+df<126012F0AD12601200A4126012F0A212600417789614>33 D<EA071CA5EA7FFFB512
+80A2380E3800A7B51280A26C1300EA1C70A511177F9614>35 D<EA01801203EA06005A12
+1C121812385AA35AA91270A37E1218121C120C7EEA03801201091D799914>40
+D<128012C01260123012381218121C120EA31207A9120EA3121C121812381230126012C0
+1280081D7C9914>I<EA0380A3EA638CEAF39EEA7FFCEA3FF8EA0FE0A2EA3FF8EA7FFCEA
+F39EEA638CEA0380A30F107E9214>I<127012F812FCA2127C120C1218123012E012C006
+0A798414>44 D<EAFFFEA30F037E8C14>I<127012F8A312700505798414>I<EA07C0EA0F
+E0EA1C70EA3838EA3018EA701CA2EAE00EA9EA701CA2EA3838A2EA1C70EA0FE0EA07C00F
+177E9614>48 D<1203A25A5A123F12F712471207AEEA7FF0A20C177C9614>I<130E133E
+137C13F0EA03E0EA07C0EA1F00123E12F85A7E123E7EEA07C0EA03E0EA00F0137C133E13
+0E0F137E9414>60 D<124012E012F8127C121EEA0F80EA07C0EA01F0EA00F8133E131E13
+3E13F8EA01F0EA07C0EA0F80EA1E00127C5A12E012400F157E9514>62
+D<EA1FE0EA3FF8EA701CEAE00EA21240EA003C137013E0EA01C0EA0380A41300C7FCA412
+03EA0780A2EA03000F177E9614>I<EA01E0EA07F0EA0E38EA181CEA38FC1271EA731E12
+77EAEE0EA7EA771CEA7318EA71F0EA38E0EA1806EA0E1EEA07F8EA01F00F177E9614>I<
+EA01C0487EA21360A2EA0770A4EA0630EA0E38A4487EEA1FFCA2EA1C1CA2487EA238FE3F
+80A211177F9614>I<EAFFF013FCEA381E130E1307A4130E131EEA3FFCA2EA381E130E13
+07A5130E131EEAFFFC13F810177F9614>I<3801F180EA07FFEA0E1FEA1C071238EA7003
+A348C7FCA738700380A338380700121CEA0E0EEA07FCEA01F011177F9614>I<EAFFE013
+F8EA383C7F130E7FA3EB0380A8EB0700A2130E131E5BEAFFF813E011177F9614>I<B5FC
+A2EA3807A490C7FCA21338A2EA3FF8A2EA3838A290C7FCA3EB0380A4B5FCA211177F9614
+>I<B4FCA21238AF1307A4B5FCA210177E9614>76 D<38FC1F80A2007C1300EA7637A4EA
+7777A2EA7367A313E7EA71C7A2EA7007A638F80F80A211177F9614>I<38FE3F80A2383E
+0E00123BA4138E1239A213CEA31238A213EE136EA4133E12FEA211177F9614>I<EAFFE0
+13F8EA383C131C7FA45B133CEA3FF85BEA38387FA51480EB1DC0A238FE0F80EB07001217
+7F9614>82 D<EA0FCCEA1FFCEA307CEA603CEAE01CA313001270127EEA3FE0EA0FF0EA01
+F8EA001C131E130E126012E0A2EAF01CEAF838EAFFF0EAC7E00F177E9614>I<387FFF80
+B5FCEAE1C3A43801C000AFEA0FF8A211177F9614>I<EAFFE0A21200B3A712FFA20B1D7F
+9914>93 D<EA1FC0EA7FF0EA7078EA2018EA001CA2EA07FC121FEA3C1C127012E0A3EA70
+7C383FFF80EA0F8F11107E8F14>97 D<12FCA2121CA513F8EA1DFEEA1F07EA1E03001C13
+80EB01C0A6EB0380001E1300EA1F0EEA1DFCEA0CF81217809614>I<EA03F8EA0FFEEA1C
+0EEA3804EA7000126012E0A412601270EA380EEA1C1EEA0FFCEA03F00F107E8F14>I<13
+7EA2130EA5EA07CEEA0FFEEA1C3EEA301EEA700E12E0A61270EA301EEA383E381FEFC0EA
+07CF12177F9614>I<EA07E0EA0FF0EA1C38EA301CEA700CEAE00EA2EAFFFEA2EAE00012
+601270EA380EEA1C1EEA0FFCEA03F00F107E8F14>I<13FCEA01FEEA038EEA07041300A3
+EA7FFE12FFEA0700ACEAFFF8A20F177F9614>I<EA07CF381FFF80EA383B38301800EA70
+1CA3EA3018EA3838EA3FF0EA37C00070C7FCA2EA3FF86C7E487EEA700F38E00380A43870
+0700EA3C1EEA1FFCEA07F011197F8F14>I<12FCA2121CA51378EA1DFEEA1F86EA1E0712
+1CAA38FF8FE0A21317809614>I<1206120FA21206C7FCA4B4FCA21207ACEAFFF8A20D18
+7C9714>I<12FCA2121CA5EBFF80A2EB1C005B5B5BEA1DC0EA1FE0A2EA1E70EA1C38133C
+131C7F38FF1F80A21117809614>107 D<EAFF80A21203B3EAFFFEA20F177E9614>I<EAFB
+8EEAFFDF383CF380A2EA38E3AA38FEFBE013791310808F14>I<EAFC78EAFDFEEA1F86EA
+1E07121CAA38FF8FE0A21310808F14>I<EA07C0EA1FF0EA3C78EA701CA2EAE00EA6EA70
+1CEA783CEA3C78EA1FF0EA07C00F107E8F14>I<EAFCF8EAFDFEEA1F07EA1E03001C1380
+EB01C0A6EB0380001E1300EA1F0EEA1DFCEA1CF890C7FCA6B47EA21218808F14>I<EA03
+E7EA0FF7EA1C1FEA300F1270487EA6EA700F1230EA1C3FEA0FF7EA07C7EA0007A6EB3FE0
+A213187F8F14>I<EAFE1FEB7F80EA0EE3380F810090C7FCA2120EA8EAFFF0A211107F8F
+14>I<EA0FD8EA3FF8EA603812C0A2EAF000EA7F80EA3FF0EA07F8EA001CEA600612E012
+F0EAF81CEAFFF8EACFE00F107E8F14>I<1206120EA4EA7FFC12FFEA0E00A8130EA3131C
+EA07F8EA01F00F157F9414>I<EAFC3FA2EA1C07AB131F380FFFE0EA03E71310808F14>I<
+38FE3F80A2383C1E00EA1C1CA36C5AA3EA0630EA0770A36C5AA311107F8F14>I<38FE3F
+80A238700700EA380EA3EA39CEA3EA1B6C121AA3EA1E7CA2EA0E3811107F8F14>I<EA7E
+3FA2EA1E3CEA0E78EA07705B12036C5A12037FEA0770EA0E781338487E38FE3F80A21110
+7F8F14>I<38FE3F80A2381C0E005BA2120E5BA212071330A2EA0370A25B1201A25BA348
+5A12730077C7FC127E123C11187F8F14>I<EA3FFF5AEA700E131C1338EA007013E0EA01
+C0EA0380EA0700120EEA1C0712381270B5FCA210107F8F14>I<EA1C10EA3F38EAE7E0EA
+41C00D047D9614>126 D E /Fe 2 121 df<1270A212F0126004047D830B>46
+D<383FC7E038078380EB0200EA038413C8EA01D8EA00F05B7F120113381202487EEA081E
+123838FC3FC013107F8F14>120 D E /Ff 39 123 df<13FEEA038138060180EA0E0338
+1C010090C7FCA5B51280EA1C03AE38FF8FF0141A809915>12 D<EBFF80EA0383EA060312
+0E121CA6B5FCEA1C03AE38FF9FF0141A809915>I<126012F0A212701210A31220A21240
+A2040B7D830B>44 D<EAFFC0A20A0280880D>I<EA07E0EA1C38EA381CEA300CEA700EEA
+6006A2EAE007AAEA6006A2EA700EEA300CEA381CEA1C38EA07E010187F9713>48
+D<12035AB4FC1207B3A2EA7FF80D187D9713>I<EA0F80EA1060EA2030EA4038EA803CEA
+C01C12E01240EA003C1338A21370136013C0EA018013001202EA040412081210EA3008EA
+3FF8127F12FF0E187E9713>I<EA07E0EA1838EA201CEA601EEA700EEA201E1200131CA2
+13381370EA07E0EA0038131C130E130FA212E0A212C0EA400EEA601CEA1838EA07E01018
+7F9713>I<1318A21338137813F813B8EA01381202A212041208121812101220124012C0
+B5FCEA0038A6EA03FF10187F9713>I<EA3018EA3FF013E01380EA2000A5EA2FC0EA3060
+EA2030EA00381318131CA2124012E0A2EA8018EA40381330EA30E0EA0F800E187E9713>
+I<EA01F8EA0704EA0C06EA180E123013001270126012E0EAE3E0EAE418EAE80CEAF00EEA
+E0061307A31260A2EA7006EA300EEA180CEA0C38EA07E010187F9713>I<1240EA7FFF13
+FEA2EA4004EA80081310A2EA00201340A21380120113005AA25A1206A2120EA512041019
+7E9813>I<EA07E0EA1818EA300CEA20061260A21270EA780CEA3E18EA1F30EA07C0EA03
+E0EA0CF8EA307CEA601E130FEAC0071303A3EA6002EA2004EA1818EA07E010187F9713>
+I<EA07E0EA1C30EA3018EA700CEA600EEAE006A21307A31260EA700FEA3017EA1827EA07
+C7EA00071306130E130C12701318EA6030EA3060EA0F8010187F9713>I<EA1FC0EA3870
+7FEA101C1200A2EA03FCEA1E1C1238127012E01480A2133CEA705F381F8F0011107F8F13
+>97 D<12FC121CA913FCEA1D07381E0380381C01C0130014E0A6EB01C01480381E0300EA
+1906EA10F8131A809915>I<EA07F8EA1C1C1238EA700813005AA612701304EA3808EA1C
+18EA07E00E107F8F11>I<133F1307A9EA03E7EA0C17EA180F487E127012E0A612601270
+6C5AEA1C373807C7E0131A7F9915>I<EA07C0EA1C30EA30181270EA600C12E0EAFFFCEA
+E000A41260EA7004EA3808EA1C18EA07E00E107F8F11>I<EA01F0EA0718EA0E38EA1C10
+1300A6EAFFC0EA1C00AEEAFF800D1A80990C>I<EA0FCF3818718038303000EA7038A4EA
+30306C5AEA2FC00060C7FCA21270EA3FF013FC6C7EEA600FEAC003A4EA6006EA381CEA07
+E011187F8F13>I<12FC121CA9137CEA1D87381E0380A2121CAB38FF9FF0141A809915>I<
+1218123CA212181200A612FC121CAE12FF081A80990A>I<12FC121CA9EB1FC0EB0F0013
+0C5B13205B13E0121DEA1E70EA1C7813387F131E7F148038FF9FE0131A809914>107
+D<12FC121CB3A6EAFF80091A80990A>I<38FC7C1F391D8E6380391E0781C0A2001C1301
+AB39FF9FE7F81D107F8F20>I<EAFC7CEA1D87381E0380A2121CAB38FF9FF01410808F15>
+I<EA07E0EA1C38EA300CEA700EEA6006EAE007A6EA6006EA700EEA381CEA1C38EA07E010
+107F8F13>I<EAFCFCEA1D07381E0380381C01C0A2EB00E0A6EB01C01480381E0300EA1D
+06EA1CF890C7FCA6B47E1317808F15>I<EA03E1EA0C13EA180BEA300FEA700712E0A612
+70A26C5AEA1C37EA07C7EA0007A6EB3FE013177F8F14>I<EAFC78EA1D9CEA1E1C1308EA
+1C00ABEAFF800E10808F0F>I<EA1F20EA60E0EA402012C0A2EAF000127FEA3FC0EA1FE0
+EA00F0EA8070133012C01320EAF040EA8F800C107F8F0F>I<1208A41218A21238EAFFC0
+EA3800A81320A41218EA1C40EA07800B177F960F>I<38FC1F80EA1C03AB1307120CEA0E
+0B3803F3F01410808F15>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2
+EA01C0A36C5A11107F8F14>I<39FE7F1F8039381C0700003C1306381C0C04130E380E16
+081317A238072310149013A33803C1A014E0380180C0A319107F8F1C>I<38FE3F80383C
+1E00EA1C086C5AEA0F306C5A6C5A12017F1203EA0270487E1208EA181CEA381E38FC3FC0
+12107F8F14>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2EA01C0A36C
+5AA248C7FCA212E112E212E4127811177F8F14>I<EAFFF8EAE07012C0EA80E0EA81C0A2
+EA0380EA0700A2EA0E04121CA2EA380812701338EAFFF80E107F8F11>I
+E /Fg 2 42 df<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012
+F0AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40
+D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012
+07A213005AA2121E121C123C12385A5A0B2E7EA112>I E /Fh 28
+123 df<90380FF83F90397FFDFFC03A01FC1FE3E03903F03FC7EA07E0D80FC01387ED83
+C091381F8000A6B612FCA2390FC01F80B2397FF8FFF8A223237FA221>11
+D<EB07F8EB7FFC3801FC0E3803F01F48485AEA0FC0A3141E140C91C7FCA2ECFF80B6FCA2
+380FC01FB2397FF8FFF0A21C237FA220>I<13181330136013C01201EA0380120713005A
+121EA2123E123CA2127CA3127812F8AD1278127CA3123CA2123E121EA27E7E13801203EA
+01C012001360133013180D317BA416>40 D<EA07FE381FFF80383F07E06D7E130180121E
+1200A2133FEA03FDEA1F81EA3E01127C12F8A4EA7C02EA7E0C391FF87F803807E03F1916
+7E951C>97 D<B47EA2121FABEB87F0EBBFFCEBF03EEBC01F9038800F8015C0140715E0A7
+15C0A2140F15809038C01F00381E707E381C3FFC38180FE01B237EA220>I<EBFF800007
+13E0380F83F0EA1F03123E127E387C01E090C7FC12FCA6127C127EA2003E13186C133038
+0FC0603807FFC0C6130015167E9519>I<49B4FCA2EB003FAB13FE3807FFBF380FC1FF48
+C67E003E7F127E127CA212FCA7127C127E123E6C5B380F81FF3907FF3FE0EA01FC1B237E
+A220>I<13FE3807FF80380F83C0381E01E0383E00F0127E007C13F8147812FCB512F8A2
+00FCC7FCA3127CA26C1318A26C1330380F80E03803FFC0C6130015167E951A>I<EB1F80
+EBFFE03801F1F0EA03E31207EA0FC3EBC1E0EBC000A6EAFFFEA2EA0FC0B2EA7FFCA21423
+7EA212>I<9038FE0F803903FF9FC0380F83E3381F01F3391E00F000003E7FA5001E5BEA
+1F01380F83E0380BFF80D808FEC7FC0018C8FCA2121C381FFFE014FC6C13FF7E001F1480
+397C001FC00078130F00F81307A3007CEB0F806CEB1F00381F807E6CB45A000113E01A21
+7F951D>I<B47EA2121FABEB83F0EB8FFCEB987EEBA03EEBC03FA21380AE39FFF1FFE0A2
+1B237DA220>I<121E123FEA7F80A4EA3F00121EC7FCA6EAFF80A2121FB2EAFFF0A20C24
+7EA30F>I<B47EA2121FABECFF80A2EC3C00143014E0EB81C00183C7FC1386139E13BE13
+FFEBDF80EB8FC01307806D7E6D7E130080147E39FFE1FFC0A21A237EA21E>107
+D<EAFF80A2121FB3ADEAFFF0A20C237EA20F>I<3AFF03F803F890390FFE0FFE3A1F183F
+183F9039201F201F014001C01380A201801380AE3BFFF0FFF0FFF0A22C167D9531>I<38
+FF03F0EB0FFC381F187EEB203EEB403FA21380AE39FFF1FFE0A21B167D9520>I<13FF00
+0713E0380F81F0381F00F8003E137C48133EA300FC133FA7007C133E007E137E003E137C
+6C13F8380F81F03807FFE0C6130018167E951D>I<38FF87F0EBBFFC381FF07EEBC01F90
+38800F8015C0A2EC07E0A715C0140FA2EC1F8001C01300EBF07EEBBFFCEB8FE00180C7FC
+A8EAFFF0A21B207E9520>I<EBFE033807FF07380FC1CF381F00DF48137F007E7FA2127C
+12FCA7127EA2003E5B6C5BEA0FC13807FF3FEA00FC1300A8903801FFE0A21B207E951E>
+I<38FF0F80EB1FE0381F33F013631343A2EBC1E0EB8000ADEAFFF8A214167E9518>I<38
+07F980EA1FFFEA3807EA7003EAF001A26CC7FCB4FC13F8EA7FFE6C7E6C1380120738003F
+C0EAC007130312E0A200F0138038FC0F00EAEFFEEAC3F812167E9517>I<487EA41203A2
+1207A2120F123FB5FCA2EA1F80ABEB8180A5380F830013C3EA07FEEA01F811207F9F16>
+I<38FF81FFA2381F803FAF5C5C380FC1BF3907FF3FE0EA01FC1B167D9520>I<39FFF01F
+E0A2391FC00700000F1306EBE00E0007130C13F000035BA26C6C5AA26C6C5AA2EBFEE0EB
+7EC0137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFF3FF83FCA23A1F807C00E0D80F
+C014C08001E013010007017F1380A2D803F0EB0300ECCF8301F81387D801F913C61487D8
+00FD13ECEBFF0315FC017F5BEB7E01013E5BEB3C00A20118136026167F9529>I<39FFF0
+7FC0A2390FC01C006C6C5A6D5A00035B6C6C5A3800FD80137F91C7FC7F6D7E497EEB37E0
+EB67F013C33801C1F8380380FC48487E000E137F39FF81FFE0A21B167F951E>I<39FFF0
+1FE0A2391FC00700000F1306EBE00E0007130C13F000035BA26C6C5AA26C6C5AA2EBFEE0
+EB7EC0137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC3813305BEA69C0EA7F80001FC8
+FC1B207F951E>I<387FFFF0A2387C07E038700FC0EA601F00E0138038C03F005B137EC6
+5A1201485AEBF030EA07E0120FEBC070EA1F80003F1360EB00E0EA7E03B5FCA214167E95
+19>I E /Fi 29 122 df<13E0A538F0E1E0EAFCE7387EEFC0381FFF00EA07FCEA01F0EA
+07FCEA1FFF387EEFC038FCE7E0EAF0E13800E000A513157D991A>42
+D<EB7C38EA01FF000713F8EA0F83EA1E00001C13785A14385AA214005AA812701438A27E
+A26C1370001E13F0380F83E03807FFC00001138038007C00151E7E9D1A>67
+D<B512F8A3381C0038A51400A2130EA3EA1FFEA3EA1C0EA390C7FCA3141CA5B512FCA316
+1E7E9D1A>69 D<387FFFFCB5FC7E380E001CA51400A2EB0380A3EA0FFFA3EA0E03A390C7
+FCA8EA7FE012FF127F161E7F9D1A>I<B51280A33801C000B3A6B51280A3111E7C9D1A>
+73 D<387F03F838FF87FC387F03F8381C01E0EB03C01480EB07005B131E131C5B13785B
+7F121DEA1FDC139C130EEA1E0F7F001C13801303EB01C0A2EB00E0A21470007F13FC38FF
+81FE387F00FC171E7F9D1A>75 D<EA7FE0487E6C5A000EC7FCB3141CA5387FFFFCB5FC7E
+161E7F9D1A>I<EAFFFEEBFF8014C0381C03E0EB00F0147014781438A41478147014F0EB
+03E0381FFFC01480EBFE00001CC7FCA9B47EA3151E7E9D1A>80 D<38FF01FEA3381C0070
+A3001E13F0000E13E0A3380701C0A438038380A43801C700A4EA00C613EEA3136C137CA2
+1338171E7F9D1A>86 D<387FFFC0B512E0A26C13C013047D7E1A>95
+D<EA1FF0EA3FFC487EEA780FEA300738000380A2137FEA07FF121FEA3F83EA7803127012
+E0A3EA7007EA780F383FFFFCEA1FFDEA07F016157D941A>97 D<12FEA3120EA6133EEBFF
+80000F13E0EBC1F0EB8070EB0038120E141CA7000F13381478EB80F0EBC1E0EBFFC0000E
+138038063E00161E7F9D1A>I<EBFF80000313C0000F13E0EA1F01383C00C04813001270
+A25AA51270A2007813707E381F01F0380FFFE0000313C03800FE0014157D941A>I<EB1F
+C0A31301A6EA01F1EA07FDEA0FFFEA1E0FEA3C07EA7803EA700112E0A7EA7003A2EA3807
+EA3E0F381FFFFCEA07FDEA01F1161E7E9D1A>I<EA01F8EA07FF481380381E07C0EA3C01
+387800E01270481370A2B512F0A300E0C7FC1270A2007813707E381F01F0380FFFE00003
+13803800FE0014157D941A>I<EB07E0EB1FF0EB3FF8EB7878EBF030EBE000A4387FFFF0
+B5FCA23800E000AF383FFF804813C06C1380151E7F9D1A>I<12FEA3120EA6133EEBFF80
+000F13C013C1EB80E01300120EAC38FFE3FE13E713E3171E7F9D1A>104
+D<EA01C0487EA36C5AC8FCA5EA7FE0A31200AF387FFF80B512C06C1380121F7C9E1A>I<
+EAFFE0A31200B3A6B512E0A3131E7D9D1A>108 D<387CE0E038FFFBF8EA7FFF381F1F1C
+EA1E1EA2EA1C1CAC387F1F1F39FF9F9F80397F1F1F00191580941A>I<EAFE3EEBFF80B5
+12C0EA0FC1EB80E01300120EAC38FFE3FE13E713E317157F941A>I<EA01F0EA07FCEA1F
+FF383E0F80EA3C07387803C0EA700138E000E0A6EAF001007013C0EA7803383C0780EA3E
+0F381FFF00EA07FCEA01F013157D941A>I<EAFE3EEBFF80B512E0380FC1F0EB8070EB00
+38120E141CA7000F13381478EB80F0EBC1E0EBFFC0000E1380EB3E0090C7FCA8EAFFE0A3
+16207F941A>I<387F81F838FF8FFC387F9FFE3803FE1EEBF80CEBE000A25B5BAAEA7FFF
+B5FC7E17157F941A>114 D<487E1203A6387FFFE0B5FCA238038000AA1470A43801C1E0
+13FF6C1380EB3F00141C7F9B1A>116 D<38FE0FE0A3EA0E00AD1301EA0F033807FFFE7E
+EA00FC17157F941A>I<387FC7FC00FF13FE007F13FC380E00E0A3380701C0A338038380
+A33801C700A3EA00EEA3137CA2133817157F941A>I<387FC7F8EBCFFCEBC7F8380703C0
+38038380EBC700EA01EFEA00FE137C13781338137C13EE120113C738038380000713C013
+01387FC7FC00FF13FE007F13FC17157F941A>120 D<387FC7FC00FF13FE007F13FC380E
+00E0A27EEB01C013811203EB8380EA01C3A2EBC700EA00E7A213E61366136E133CA31338
+A3137813701230EA78E01271EA7FC06C5A001EC7FC17207F941A>I
+E /Fj 1 59 df<127012F8A3127005057C840D>58 D E /Fk 52
+122 df<123C127E12FFA4127E123C08087C8711>46 D<EB7F803803FFF03807E1F8380F
+807C48487E48133F003E7F007E1480A400FE14C0AD007E1480A46CEB3F00A26C133E6C6C
+5A3807E1F86CB45A38007F801A237EA21F>48 D<131C133C13FC12FFA21200B3AA387FFF
+FCA216237CA21F>I<48B4FC000713C0381E07F0383803F8386001FC387C00FE12FE14FF
+147FA2127C003813FFC7FC14FEA2EB01FC14F8EB03F0EB07E01480EB0F00131E5B1370EB
+E003EA01C038038007380700061206380FFFFE5A5A4813FCB5FCA218237DA21F>I<48B4
+FC000713E0381E03F0383801F8003C13FC387E00FEA3123EEA1C01000013FCA2EB03F8EB
+07F0EB0FC03801FF00A2380007E0EB01F014F8EB00FC14FE14FFA21210127C12FEA214FE
+A2387C01FC007013F8383E07F0380FFFC00001130018237DA21F>I<14381478A214F813
+01130313071306130C131C13381330136013E0EA01C01380EA03005A120E5A12185A1270
+5AB612C0A2390001F800A790387FFFC0A21A237EA21F>I<0018130C001F137CEBFFF814
+F014E014C01480EBFC000018C7FCA513FF001B13E0381F03F0381C00F8000813FCC7127E
+A3147FA2127812FCA3147E5A006013FC1270383801F8381E07E03807FFC03801FE001823
+7DA21F>I<EB1FC0EB7FF03801F0383803E00C3807803E000F137EEA1F005AA2007E133C
+1400A338FE3FC0EB7FF0EB80F800FF13FCEB007C147E5A147FA4127EA4003E137E123F6C
+137C380F80F83807C1F03803FFC038007F0018237DA21F>I<1230123C003FB512C0A215
+804814005C5C38600018A200E05B485B5CC6485AA249C7FC1306130EA25BA2133CA25BA2
+13F8A41201A66C5A13601A257DA41F>I<EBFF80000313E0380F01F8381C007C48133C14
+1E1278A2127C127E387F803C13E0383FF878381FFDF0EBFFC07E000313E014F8000F13FC
+EA1E1F383C07FEEA7803EB00FF48133F141F140FA3140E1278141C6C1338381F80F03807
+FFE00001130018237DA21F>I<13FF000313C0380F83E0381F00F04813F8007E137CA214
+7E12FEA3147FA4127E14FF123EEA3F01001F137FEA0FFEEA03FCC7FC147EA2123C007E13
+FCA214F814F0EA7C01383003E0381C0F80380FFF00EA03F818237DA21F>I<141CA2143E
+A3147FA24A7EA39038019FC0A29038031FE0140F01077FEB0607A2010C7F1403011C7FEB
+1801A2496C7EA2017FB5FCA29039E0007F8049133FA2484880151F00038190C7120FA248
+6E7ED8FFF090B51280A229257EA42E>65 D<B612E015FC3903F0007FED3F80ED1FC0ED0F
+E0A216F0A21507150FA216E0151F16C0ED7F80913801FE0090B512F815FF9039F0003FC0
+ED0FE0ED07F016F8150316FCA616F81507ED0FF0ED1FE0ED7FC0B7120015F826257EA42C
+>I<9138FF8008010FEBF01890393FC03C789039FE0006F8D801F8130348481301484813
+0048481478121F48481438A2007F151890C8FCA2481500A97E16187F123FA26C6C143012
+0F6C6C14606C6C14C06C6CEB0180D800FEEB070090383FC01E90380FFFF8010013C02525
+7DA42C>I<B7FCA23903F8007FED0F8015071503A21501A3ED00C01406A21600A2140E14
+1EEBFFFEA2EBF81E140E1406A21660A291C7FC16C0A415011503A2ED0F80153FB7FCA223
+257EA428>69 D<B612FEA23803F800151F8181A281A3ED01801403A292C7FCA25C5C90B5
+FCA2EBF80F8080A491C8FCAAB512F0A221257EA427>I<B500E0B512E0A23B03F80003F8
+00AF90B6FCA29038F80003B0B500E0B512E0A22B257EA430>72 D<B512E0A23803F800B3
+AFB512E0A213257EA417>I<B539E007FF80A2D803F8C7EA780016605E4B5A0307C7FC15
+0E15185D5D5DEC03804AC8FC140E141F4A7E147FECDFC09038FB8FE09038FF0FF0EBFC07
+496C7E816E7E1400157F82153F6F7E6F7E8215076F7E82B539E03FFFC0A22A257EA430>
+75 D<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E153E157CEC03FCB6FCA220
+257EA425>I<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA36D1406A26D6C130CA26D6C
+1318A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A291387E0300A3EC3F06A2EC
+1F8CA2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A235257EA43A>I<D8FFF890
+3807FFE07FD803FE9038003C006D14187F6D7E6D7E806D7E6D7E13036D7E6D7E80EC7F80
+EC3FC0141FEC0FE015F0EC07F8EC03FC1401EC00FE157F1698ED3FD8ED1FF8150F150715
+03A2150115001678486C1438D8FFFC1418A22B257EA430>I<B67E15F83903F801FEEC00
+7F6F7E6F7EA282A55EA24B5A4BC7FCEC01FE90B512F815C09038F803F06E7E6E7E157EA2
+157FA482A31760ED3FC017C0ED1FE1B539E00FFF80923801FE002B257EA42E>82
+D<01FF1380000713E3380F80F7381E001F48130F481307140312F81401A27E91C7FCB4FC
+EA7FE013FE383FFFE014F86C13FE00077F6C1480C67E010313C0EB003FEC0FE01407A200
+C01303A315C07E6C13076C14806CEB0F0038FFC03E38E3FFF838803FE01B257DA422>I<
+007FB612F8A2397E00FE010078EC00780070153800601518A200E0151C160C5AA4C71400
+B3A390B512FEA226247EA32B>I<B539E00FFFC0A2D803F8C7EA78001630B3A700015D7F
+00005D137C6D495A6D0107C7FC90380FE03E903803FFF89038007FC02A257EA42F>I<B5
+398001FFE0A2D807F8C7EA1C0000031518A26D1438000115306D1470000015607F6D5C80
+013F495AA2ECC003011F91C7FC6E5A010F130614F001075BA26D6C5AA2ECFC3801011330
+ECFE700100136014FF6E5AA26E5AA36EC8FCA2140EA22B257FA42E>I<B53B81FFFE01FF
+F0A23D07F0001FC0000F007013066C6C010F5CA26F7E6C6C5EA26D496C1338000017304B
+7E017F01195CA291388030FE013F5E829139C0607F01011F5E03E0138190280FE0C03F83
+C7FCA29139F1801FC3010715C617E69139FB000FEE010315EC02FF14FC6D486D5AA24A13
+0301005DA24A130102785CA202306D5A3C257FA43F>I<B539C001FFE0A2D807F8C7EA1C
+006C6C141816386C6C14306C6C5C16E06D6C5B6D6C485A1503D91FE090C7FC90380FF006
+150E903807F80C6D6C5A15386D6C5A903800FF6015E06E5A6E5AAE90380FFFFCA22B257F
+A42E>89 D<EA07FF001F13E0383E03F0383F00F880147E121EC7FCA3EB1FFE3803FE7EEA
+0FC0EA1F00123E127E5AA314BEEA7E01383F073E391FFE1FE03807F00F1B187E971E>97
+D<EAFFC0A2120FACEBC1FCEBCFFF9038FC0FC09038F007E09038C003F0A2EC01F8A215FC
+A815F8A2EC03F013E09038F007E090381C1F80390E0FFF00380C03F81E267FA522>I<EB
+7FE03803FFF83807C07C381F80FC13005A007E1378140012FEA8127E127F6C130CEA1F80
+EBC0183807E0703803FFE038007F0016187E971B>I<ECFFC0A2140FAC137F3803FFCF38
+0FE0FF381F803F383F000FA2127EA212FEA8127EA27E141F381F803F380FC0EF3903FFCF
+FC3800FE0F1E267EA522>I<137F3803FFC03807C1F0380F80F8EA1F0048137C127E147E
+12FEA2B512FEA248C7FCA3127EA214067E6C130C380F80183807E0703803FFE038007F80
+17187E971C>I<EB1FC0EB7FF0EA01F83803E1F8120713C1380FC0F01400A7B5FCA2EA0F
+C0B3A2EAFFFEA215267EA513>I<3901FF07C00007EBDFE0380F83F1EA1F01393E00F800
+007E7FA6003E5B6C485A380F83E0EBFFC0001190C7FC0030C8FCA21238123C383FFFE06C
+13FC806C7F481480383C003F48EB0FC000F81307A4007CEB0F806CEB1F00381F807E3807
+FFF8C613C01B247E971F>I<EAFFC0A2120FAC14FE9038C3FF809038CE0FC013D89038D0
+07E013E0A213C0AF39FFFC7FFEA21F267EA522>I<120FEA1F80EA3FC0A4EA1F80EA0F00
+C7FCA7EA7FC0A2120FB3A2EAFFF8A20D277EA611>I<EAFFC0A2120FACEC1FF0A2EC0780
+EC0E005C14305CEBC1C0EBC38013C713DFEBFFC0EBE7E0EBC3F0138180EB80FC147E80A2
+EC1F80EC0FC039FFF83FF8A21D267FA520>107 D<EAFFC0A2120FB3B0EAFFFCA20E267E
+A511>I<26FF80FE137F903A83FF81FFC03B0F8E0FC707E0019813CC903A9007E803F001
+A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E9733>I<38FF80FE903883FF80390F8E
+0FC0139890389007E013A0A213C0AF39FFFC7FFEA21F187E9722>I<EB7F803803FFF038
+07C0F8381F807E48487EA2007EEB1F80A200FE14C0A8007E1480A26CEB3F00A2381F807E
+6C6C5A3803FFF038007F801A187E971F>I<38FFC1FCEBCFFF390FFC1FC09038F007E001
+C013F0140315F8140115FCA8EC03F8A215F0EBE0079038F00FE09038DC1F809038CFFF00
+EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38FF83E0EB8FF8380F8C7CEB90FC13B013
+A01478EBE0005BAEEAFFFEA216187F9719>114 D<3807F8C0EA1FFFEA3C07EA7001EAF0
+00A300FC1300B47EEA7FFC7F383FFF80000F13C0120338001FE01303EAC001A212E014C0
+EAF00338FC078038EFFF00EAC3FC13187E9718>I<13C0A41201A312031207120F121FB5
+12C0A2380FC000AC1460A63807E0C013E13801FF8038007E0013237FA218>I<39FFC07F
+E0A2000F1307B0140FA200071317EBE0673903FFC7FE38007F071F187E9722>I<39FFF8
+0FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00005B13FE
+EB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D187F9720>I<3BFFF9FFE0FF80A23B1F
+C03F001C00000F6D13181580D807E05CA29039F03FC07000030137136015E02601F8635B
+A29038FCE3F1000001C15B15F990267F80FBC7FCA215FF90383F007EA2011E133CA3010C
+131829187F972C>I<39FFF83FF0A2390FC00F003807E00E6C6C5A6D5A6C6C5A00001360
+EB7EC06D5AA2131F6D7E497E80EB33F81361EBE0FC3801C07E3803807F3907003F804813
+1F39FFC07FF8A21D187F9720>I<39FFF80FF8A2390FC001C015803907E00300A26D5A00
+031306EBF80E0001130C13FC00005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA2
+1306A25B1230EA781CEAFC185B1370EA68E0EA7FC0001FC8FC1D237F9720>I
+E /Fl 28 122 df<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF03803
+8070A4380700E0A6380E01C0A6381C0380001E13C038FF0FF016207E9F19>12
+D<EAFFF0A20C027E8A0F>45 D<0007B512F83900F800780178133815185B1508A53901E0
+0800A314181438EBFFF83803C0301410A491C7FC485AA648C8FC7FEAFFFC1D1F7E9E1E>
+70 D<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC1402140848485A5C
+146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E81140781140381
+380F00016D487E39FFF00FFE231F7E9E23>75 D<EA07F8EA0C0CEA1E061307121C1200A3
+13FFEA07C7EA1E07EA3C0E127800F01310A3131EEB2E2038784F40381F878014147D9317
+>97 D<1207123F120F7EA2120EA65A137CEA1D83381E0180001C13C0EB00E05A14F0A538
+7001E0A214C013031480EB0700EAE80EEACC38EA83E014207B9F19>I<13FEEA0383380E
+0780121C0038130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D9314>
+I<1438EB01F8EB00781438A21470A614E013FCEA0382EA0601121CEA3C00383801C01278
+12F0A438E00380A412F0EA700738380F00381C37803807C7E015207D9F19>I<13F8EA07
+0EEA0E07121C383803801278127012F0A2B5FC00F0C7FC5AA46C5AEA7002EA3004EA1C18
+EA07E011147D9314>I<EB07C0EB1C60EB30F01360EBE0E0EBC0001201A5485AEA3FFCEA
+0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB3E11EBE1A33801C1C238
+0381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FCA21218121CEA0FFF14C0
+14E0381800F04813305A5AA3006013606C13C0381C0700EA07FC181F809417>I<13E012
+0712011200A2485AA6485AEB8F80EB90E013A0EBC0601380000713E01300A5380E01C0A6
+381C0380001E13C038FF8FF014207E9F19>I<EA01C0EA03E0A213C0EA0180C7FCA6EA03
+80121F12071203A2EA0700A6120EA65A121EEAFF800B1F7F9E0C>I<13E0120712011200
+A2485AA6485AEB81FCEB80F014C0EB81801400EA07045B13181338137C131C120E7FA213
+0F7F1480EA1C03381E07C038FF8FF016207E9F18>107 D<13E0120712011200A2EA01C0
+A6EA0380A6EA0700A6120EA65A121EEAFF800B207F9F0C>I<390387C07C391F98618639
+07A072073903C03403EB80380007EB7807EB0070A5000EEBE00EA64848485A001EEBE01E
+3AFFCFFCFFC022147E9326>I<38038F80381F90E0EA07A03803C0601380000713E01300
+A5380E01C0A6381C0380001E13C038FF8FF014147E9319>I<13FCEA0387380E0180381C
+00C04813E0A24813F012F0A438E001E0A214C0130300F0138038700700EA380E6C5AEA07
+E014147D9317>I<EBE3E03807EC383800F01C497E140F48487E1580A53903800F00A214
+0E141E141C5C38074070EB61C0011FC7FC90C8FCA3120EA4121EEAFFC0191D809319>I<
+EBFC2038038260EA0702381E01E0123C003813C0127812F0A438E00380A212F0A2130712
+7038380F00EA1C37EA07C7EA0007A3130EA4131EEBFFC0131D7D9318>I<EA038E381FB3
+80EA07C71203EB8300EA078090C7FCA5120EA65A121EEAFFC011147E9312>I<EA01F9EA
+0607EA080312181301EA3802EA3C00121F13F0EA07FCEA01FEEA001FEA40071303A21260
+1306EAF004EAC818EA87E010147F9312>I<1380EA0100A35A5A5A121EEAFFF8EA0E00A4
+5AA65A1310A41320A2EA1840EA0F800D1C7C9B12>I<381C0380EAFC1FEA3C07EA1C03A2
+38380700A6EA700EA4131EA25BEA305E381F9F8011147B9319>I<38FF83F8381E00E000
+1C13C01480121E380E01005B13025B12075BA25BEA039013A013E05B5B120190C7FC1514
+7C9318>I<39FF9FE1FC393C078070391C030060148015401580EA0E0790380D81001309
+EB19C21311380F21C4EA0720EB40C814E8EB80F0A26C485A1460000213401E147C9321>
+I<381FF0FF3803C0780001137014403800E0C0EBE180EB73001376133CA2131C132E134E
+1387EA0107380203801204380C01C0383C03E038FE07FC18147F9318>I<390FF83F8039
+01E00E00EBC00C140813E000005B143014205C13705CA20171C7FC1339133A133E133C13
+3813181310A25BA25BEA70C0EAF08000F1C8FC12E61278191D809318>I
+E /Fm 8 89 df<903807F00890383C0C189038E003383901C000B8D80780137848C71238
+120E001E14185A1508127C1278150012F8A6EC1FFF0078EB00F81578127C123CA27E120E
+120F6C7ED801C013B83900E0011890383C0E08903807F00020217C9F27>71
+D<EAFFF0EA0F00B3ABEAFFF00C1F7D9E12>73 D<B4EB0FF8390F8003E0EC0080EA0BC0EA
+09E0A2EA08F01378A27F7FA27FEB0780A2EB03C0EB01E0A2EB00F01478A2143C141EA214
+0F1407A214031401123E38FF80001D1F7C9E25>78 D<EB1FE0EB70383801C00E48487E39
+070003804814C0001EEB01E048EB00F0A2007C14F8A20078147800F8147CA90078147800
+7C14F8A2003C14F0003E1301001E14E06CEB03C06C148039038007003801E01E38007038
+EB1FE01E217C9F26>I<B512F0380F803E0007130FEC0780EC03C0A215E0A415C0A2EC07
+80EC0F00143EEBFFF00180C7FCAD487EEAFFFC1B1F7D9E22>I<3803F020380C0C603818
+03E0EA30005A146012E01420A36C13007E127CEA7F80EA3FFC6CB4FC00071380000113C0
+38000FE013031301EB00F014707EA46C136014E06C13C038F8018038C60300EA81FC1421
+7C9F1C>83 D<39FFF00FF8390F0003E0EC0080B3A46CEB01001380120314026C6C5A6C6C
+5AEB3830EB0FC01D207C9E25>85 D<397FF807FE390FE001F0D807C013C06C6C6C5A0001
+49C7FCEBF0023800F806EB78046D5AEB3E18EB1F106D5A14C0130713036D7E497EEB06F8
+EB0478EB087CEB183EEB101EEB201F496C7EEBC007496C7ED801007F486D7E481300391F
+8001F83AFFC007FF80211F7E9E25>88 D E /Fn 34 121 df<EB01C01303130F137FEA1F
+FFB5FC13BFEAE03F1200B3B1007FB512F0A31C2E7AAD28>49 D<EB3FE03801FFFE0007EB
+FF80D80F8013C0391E003FE00038EB1FF0007CEB0FF8007EEB07FCB4FC018013FEA21403
+A2EA7F00003E1307C7FC15FCA2EC0FF8A215F0EC1FE015C0EC3F80EC7F00147E14F8495A
+495A495A49C7FC011E130E5B133849131E49131C485A48C7123C48B512FC5A5A5A4814F8
+B6FCA31F2E7CAD28>I<913A03FF800180023FEBF00349B5EAFC0701079038003F0FD91F
+F8EB079FD93FC0EB01FFD9FF807F4848C8127F4848153F0007161F49150F485A001F1607
+A2485A1703127FA24992C7FCA212FFA9127FA27FEF0380123FA26C7E1707000F17006C7E
+6D150E0003161E6C6C151C6C6C6C1478D93FC05CD91FF8EB03E0D907FFEB3F800101D9FF
+FEC7FCD9003F13F80203138031317CB03A>67 D<B812F0A3C6903880003FEE07F8160316
+00A21778A21738A3171C1507A31700A25D5D5D91B5FCA3EC803F818181A21707A392C712
+0EA4171EA2173CA2177C17FC16011607163FB812F8A330317EB035>69
+D<B812E0A3C6903880007FEE0FF016031601A21600A21770A31738A21507A21700A35D5D
+5D91B5FCA3EC803F818181A592C8FCACB612C0A32D317EB033>I<DA03FF1303027FEBF0
+0749B5EAFC0F01079038007E1FD91FF0EB0FBFD97FC0EB03FF49487F4848C87E485A0007
+824848815B001F82A2484881A2127FA24992C7FC12FFAA0307B512F8127F7FDB00011300
+123FA26C7EA2120F7F6C7E12036C7E6C6C7E6D6C5BD91FF8497ED907FFEB3E3F01019038
+FFFC1F6D6CEBF00F0203EB800335317CB03F>I<B61280A3C6EB8000B3B3A7B61280A319
+317EB01E>73 D<B67EA3000190C9FCB3A9EE0380A416071700A25EA35E5E5E5E4B5A150F
+B7FCA329317DB030>76 D<B56C49B512C08080C66D90390003E0006E6E5AEBEFFC13E780
+EBE3FF01E17F01E07F6E7E143F816E7E6E7E6E7E14036E7E16806E13C0ED7FE0ED3FF015
+1F16F8ED0FFCED07FEED03FF6F13818117C1EE7FE1EE3FF1EE1FF9EE0FFD160717FF8282
+82177F173FA2171F170F486C1507B500E014031701A23A317EB03F>78
+D<B712E016FEEEFF80C6D9800013E0EE3FF0EE0FF8EE07FCA2EE03FEA217FFA717FEA2EE
+07FC17F8160FEE3FE0EEFFC091B6120016F80280C8FCB3A2B67EA330317EB037>80
+D<B77E16F816FEC690398003FF809238007FE0EE1FF0707EA283160783A65F160F5F4C5A
+4C5A4C5ADB03FFC8FC91B512F816E091388007F8ED01FC6F7E167F83707EA283A583A4F0
+038017F8161F1900706C5AB6398003FE0E933801FFFC9338001FF039317EB03C>82
+D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780A3481603
+A5C792C7FCB3AA017FB6FCA331307DAF38>84 D<B6D88003B51280A3C60180C73807C000
+715AB3AE137F4DC7FC80013F150EA26D6C5C6D6C5C6D6C5C6D6C495A903A00FF801FC002
+3FB55A020F49C8FC020013E039317EB03E>I<B500FC91B5FCA3000390C8EA03C06C1780
+6E14076C170080017F150EA26E141E013F151C6E143C011F153880010F5D8001075DA26E
+130101035D6E13036D5D15806D4AC7FCA26F5A027F130EEDE01E023F131CEDF03C021F13
+3815F8020F5BA2EDFCF002075B15FF6E5BA26E5BA26E90C8FCA3157EA2153CA238317EB0
+3D>I<EBFFF0000313FF390F803F809038C00FE0486C6C7EA26E7ED80FC07FEA0780C7FC
+A414FF131FEBFFE33803FC03EA0FF0EA1FC0123FEA7F80A2EAFF00A31407A2387F800D39
+3FC01DFE3A1FE078FFF03907FFE07FC6EB803F24207E9F27>97 D<EA01F812FFA3120F12
+07ADEC3FE0ECFFFC9038FBE07F9039FF001F8049EB0FC04914E049EB07F016F8A2ED03FC
+A316FEA816FCA3ED07F8A216F06DEB0FE06D14C001E7EB3F809039C3C0FE00903880FFF8
+9038003FC027327EB12D>I<EB0FFF017F13C03901FC01F03803F0033907E007F8120FEA
+1FC0003FEB03F0EC01E04848C7FCA312FFA8127FA36C6C131CA2001F14386C7E00071470
+3903F001E03901FC07C039007FFF00EB0FF81E207D9F24>I<ED0FC0EC07FFA3EC007F15
+3FADEB07F8EB3FFF9038FE07BF3903F801FF3907E0007F120F4848133F123FA2485AA312
+FFA8127FA36C7EA2121F6C6C137F000714FF2603F00313E03A01FC0F3FFE38007FFEEB0F
+F027327DB12D>I<EB0FFC90387FFF803901FC0FC03903F003E03907E001F0000F14F839
+1FC000FC003F14FEA24848137E157FA212FFA290B6FCA20180C7FCA4127FA36C6C130712
+1F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0903807FE0020207E9F25>I<EB
+01FE90380FFF8090381FC3C090387F07E09038FE0FF0120113FC1203EC07E0EC018091C7
+FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C327EB119>I<90391FF007C09039FFFE3F
+E03A01F83F79F03907E00FC3000F14E19039C007E0E0001FECF000A2003F80A5001F5CA2
+000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9FC121EA2121F7F90B57E6C
+14F015FC6C806C801680000F15C0003FC7127F007EEC1FE0007C140F00FC1407A4007EEC
+0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0D8001F90C7FC242F7E9F
+28>I<EA01F812FFA3120F1207ADEC07F8EC3FFEEC783F02C013809039F9801FC0EBFB00
+01FE14E05BA35BB3B500C3B5FCA328327DB12D>I<EA03C0487E487E487EA46C5A6C5A6C
+5AC8FCA9EA01F8127FA31207B3A7B51280A311337DB217>I<EA01F812FFA3120F1207B3
+B3A6B512C0A312327DB117>108 D<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01
+E0FC02C090388300FE280FF1801FC6137F2607F30013CC01F602F8148001FC5CA3495CB3
+B500C3B5380FFFFCA33E207D9F43>I<3903F007F800FFEB3FFEEC783F02C013803A0FF1
+801FC03807F30001F614E013FCA35BB3B500C3B5FCA328207D9F2D>I<EB07FC90387FFF
+C03901FC07F03903F001F848486C7E4848137E001F147F003F158049133F007F15C0A300
+FF15E0A8007F15C0A36C6CEB7F80A2001F15006C6C13FE00075C3903F803F83901FE0FF0
+39007FFFC0D907FCC7FC23207E9F28>I<3901F83FE000FFEBFFFC9038FBE07F9039FF00
+3F80D807FEEB1FC049EB0FE04914F0ED07F8A216FC1503A216FEA816FC1507A216F8A2ED
+0FF06D14E06DEB1FC06DEB3F809039FBC0FE009038F8FFF8EC3FC091C8FCABB512C0A327
+2E7E9F2D>I<3803F03F00FFEB7FC09038F1C3E01487390FF30FF0EA07F6A29038FC07E0
+EC03C091C7FCA25BB2B512E0A31C207E9F21>114 D<3801FF86000713FEEA1F00003C13
+3E48131E140E12F8A36C90C7FCB47E13FC387FFFC06C13F0806C7F00077F00017FEA003F
+01001380143F0060131F00E0130FA27E15007E6C131E6C131C38FF807838F3FFF038C07F
+8019207D9F20>I<131CA5133CA3137CA213FC120112031207381FFFFEB5FCA2D803FCC7
+FCB0EC0380A71201EC0700EA00FEEB7F0EEB3FFCEB07F0192E7FAD1F>I<D801F8EB07E0
+00FFEB03FFA3000FEB003F0007141FB3153FA20003147FA26C6CEBDFF03A00FE039FFF90
+387FFF1FEB0FFC28207D9F2D>I<B53A1FFFE03FF8A33C0FF000FE0007806D150300076E
+EB0700816D5D00039138FF800EA26C6C486D5A15DF01FF153C6C9039038FE038A2D97F87
+6D5A150702C714F0D93FCF6D5AECCE03D91FFEEBF9C09138FC01FD16FF010F5D4A7EA26D
+486DC7FCA20103147E4A133EA26D48131C35207E9F3A>119 D<3A7FFF807FFCA33A03FC
+000F006C6C131E6C6C5BEC803890387FC078013F5B90381FE1E090380FF3C0ECFF806D90
+C7FC6D5A13016D7E81815B903803DFE09038078FF08190380F07FC90381E03FEEB3C0149
+6C7E4914804848EB7FC00003EC3FE026FFFC01B5FCA328207F9F2B>I
+E /Fo 1 14 df<14FF010713E090381F00F80178131E01E01307D80180EB018048C812C0
+00061560481530A248151848150CA2481506A4481503A900601506A46C150CA26C15186C
+1530A26C15606C15C06C6CEB0180D800E0EB07000178131E011F13F8903807FFE0010090
+C7FC282B7EA02D>13 D E /Fp 54 122 df<1306130C13181338137013E01201EA03C0A2
+EA0780A2120F13005AA2123EA3127EA3127CA212FCAE127CA2127EA3123EA37EA27E1380
+1207A2EA03C0A2EA01E01200137013381318130C13060F3C7AAC1A>40
+D<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A21206120E5A5A12100A
+157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
+D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
+D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2
+127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049C7FC131E4913E013
+705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA622>I<EB7F803803
+FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00A2147E5C495AEB07
+F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA215C0143F48148000
+7CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA25C5C5C5C5BA2EB03
+BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12F0B612F8
+A3C7EA7F00A890381FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C5C14C091
+C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218
+127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C613801B277DA6
+22>I<EB7F803801FFF000077F380FC0FC381F803E48487E007E1480A2140F00FE14C0A3
+15E0A5007E131FA26C133F6C132F380F80CF3807FF8F0001130FEA0008010013C0A3EC1F
+80123E127FEC3F00143E147E007E5B383E03F8381FFFE06C1380D801FEC7FC1B277DA622
+>57 D<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F14
+80A249486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F080491303
+000181491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F8
+001FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EA
+FE00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1F
+F8B712E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF0
+0F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290
+C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F09039
+7FF007C0011FB512800107EBFE009038007FF028297CA831>I<B612FCEDFF8016E03A03
+FC001FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0
+A217C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0
+A33903FC001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3
+EBFC0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327
+297EA82C>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A31600
+1403A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387F
+E003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F48488048488048
+4880485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E
+6C7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5
+D8F00FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835
+>I<B512F0A33803FC00B3B1B512F0A314297EA819>I<B500F0EBFFFEA3D803FCC7EA0F00
+161E5E5E16E0ED03C04B5A4BC7FC151E5D15F04A5A4A5A1407140F4A7EEC7FF04A7EEBFD
+E79038FFC3FCEC83FE9038FE01FF497E6F7E826F7E151F6F7E8215076F7E6F7E8281EE7F
+80B539F00FFFFEA32F297EA835>75 D<B512FCA3D803FCC8FCB3A3ED01C0A415031680A2
+1507A2150FA2151F157F913801FF00B7FCA322297EA828>I<D8FFFE92383FFF80A26D5D
+0003EFE000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D983F8
+130EA2D981FC131CA3D980FE1338A2027F1370A291383F80E0A391381FC1C0A291380FE3
+80A2913807F700A3EC03FEA26E5AA26E5AD8FFFE0203B51280A2157039297DA840>I<D8
+FFFCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB87FCEB83FEEB81FF01801380
+147F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E1381ED7FC1ED3FE1ED1FF115
+0F16F9ED07FDED03FF8181167FA2163F161F160F1607D8FFFE14031601A230297EA835>
+I<ECFFC0010F13FC90383F807F9039FE001FC0D801F8EB07E048486D7E48486D7E000F81
+48486D7EA24848147FA2007F168090C8123FA34816C0AA6C16806D147FA2003F1600A26C
+6C14FEA26C6C495A6C6C495A6C6C495A6C6C495A6C6C495A90263FC0FFC7FC90380FFFFC
+010013C02A297CA833>I<B612F815FF16C03A03FC003FE0ED07F0ED03F816FC150116FE
+A716FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B512F0A327297EA82E>I<
+ECFFC0010F13FC90383FC0FF9039FE001FC048486D7ED803F0EB03F000078148486D7E48
+486D7EA24848147FA2007F1680A290C8123FA24816C0AA6C16806D147FA2003F1600A26C
+6C14FE143E3A0FE07F81FC00079038C1C1F83A03F18063F0D801F9EB67E0D800FFEB3FC0
+90263FC07FC7FC90380FFFFC01004913C0EC003C811601ED1F8316FF6F1380A21700816F
+5A6F5A6F5A2A357CA833>I<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A6
+5E4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170E
+A21503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>I<9038FF80600003EBF0E0
+000F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7F
+FCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E0
+1303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA8
+25>I<007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A24815
+01A5C791C7FCB3A490B612C0A32A287EA72F>I<B500F0EBFFFEA3D803FCC7EA0380B3AA
+0001ED07007F0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7
+FC2F297EA834>I<B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B
+017F140E80013F5CA26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE03
+01015CECFF076D91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA230
+297FA833>I<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E
+13016C604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F16
+0E17F09126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703FC7003
+5BA2913AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E8002
+1E141EA242297FA845>I<B500F0EB3FFFA3D803FEC7EA03C06C6C15806C6DEB07005E6D
+6C130E6E5B013F143C6D6C13386E5B010F14F06D6C5B6E485A01031303D901FF5B0387C7
+FC6D138FEC7FCE15FC143F6E5A5D140FAE0103B512C0A330297FA833>89
+D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA
+0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B7E9A21
+>97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F09038F001F89038E0
+00FCA2157EA2157FA8157EA315FCA29038F001F89038F803F090389C0FE090380FFF8039
+0E01FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A248133E
+007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE00E3803F83C3801FF
+F838003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807F03F380FC00F381F
+8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E07FFF3801FFE73800
+7F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F130048EB0F80127E15
+C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003803907C007003803
+F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC7FEA03F813F01207
+143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<9038FF80F00003EBE3
+F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E133E003F137E6C137C
+380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14C06C14E06C14F012
+1F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC01F806CB512003800
+7FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E30FC001E413E0EBE80701
+F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0A3EA1F
+C0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I<EAFFE0A3120FB3
+B2EAFFFEA30F2A7EA912>108 D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D8
+0FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A333
+1B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013D0A213
+E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E390FC01F80391F800FC0
+393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A2391F800FC0390FC01F
+803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038EFFF809038FE0FE039
+0FF803F09038F001F801E013FC140015FEA2157FA8157E15FEA215FC140101F013F89038
+F807F09038FC0FE09038EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FF
+C1F0EBC7FCEBC63E380FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114
+D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C
+13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C137038FF01E038E7FF
+C000C11300161B7E9A1B>I<13E0A41201A31203A21207120F381FFFE0B5FCA2380FE000
+AD1470A73807F0E0000313C03801FF8038007F0014267FA51A>I<39FFE07FF0A3000F13
+07B2140FA2000713173903F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FFA339
+0FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA214
+9EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B0FE0
+0FE001C02607F007EB0380A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC2600
+FE1C5B15FE9039FF387E3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2
+EC800701075CA22E1B7F9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F003801
+FE1E00005BEB7F3814F86D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F
+803901E01FC0D803C013E0EB800F39FFF03FFFA3201B7F9A23>I<39FFFC03FFA3390FF0
+00F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB
+3F9C14FC6D5AA26D5AA36D5AA26D5AA25CA21307003890C7FCEA7C0FEAFE0E131E131C5B
+EA74F0EA3FE0EA0F8020277F9A23>I E /Fq 90 127 df<127012F8B012701200A51270
+12F8A31270051C779B18>33 D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<
+EA0306EA078FA6387FFFC0B512E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E
+3C00A6EA0C18131C7E9B18>I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C3
+8013C7A338F1C0001279123F6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EB
+C7001271EA79DEEA3FFEEA1FF8EA07E0EA01C0A3120011247D9F18>I<EA3803387C0780
+A2EAEE0F1400A25B131EA2133EEA7C3CA2EA387CEA0078A213F85B12015BA212035BA212
+07EB8380EB87C0120FEB0EE0A2121F121EA2123E383C07C0A23818038013247E9F18>I<
+EA01C0EA07E0487EEA0E70487EA4EB73F813F313E3380FC1C0EBC38013831303381F0700
+EA3F87EA7B8EEA71CEEAE1FC12E0137CEB7870A2EA70FE387FFFE0EA3FC7380F03C0151C
+7F9B18>I<1238127CA2127E123E120EA3121CA2123812F812F012C0070E789B18>I<1370
+13F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA45AA81270A47EA27E121E7EEA0780
+EA03C0EA01F0120013700C24799F18>I<126012F012787E7E7EEA07801203EA01C0A2EA
+00E0A41370A813E0A4EA01C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18>I<EA
+01C0A4EA41C138F1C780EAFDDF387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38FDDF80EAF1
+C73841C100EA01C0A411147D9718>I<136013F0A7387FFFC0B512E0A26C13C03800F000
+A7136013147E9718>I<121C123E127E127F123F121F1207120E121E127C12F81260080C
+788518>I<387FFFC0B512E0A26C13C013047E8F18>I<1230127812FCA212781230060677
+8518>I<1303EB0780A2130F14005B131EA2133E133C137C1378A213F85B12015B12035B
+A212075B120F90C7FCA25A121E123E123CA2127C127812F85AA2126011247D9F18>I<EA
+01F0EA07FC487EEA1F1FEA1C0738380380007813C0EA7001A238E000E0A9EAF001007013
+C0A2EA780300381380381C0700EA1F1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203
+A21207120F123F12FF12FB12431203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA03F0EA
+0FFEEA3FFF387C0F80387003C0EAE00138F000E0A21260C7FCA2EB01C0A21303EB0780EB
+0F00131E5B5B5B485AEA07C0485A381E00E05AEA7FFFB5FC7E131C7E9B18>I<131F5B13
+77A213E7120113C7EA038712071307120E121E123C1238127812F0B512F8A338000700A6
+EB7FF0A3151C7F9B18>52 D<383FFF80A30038C7FCA8EA3BF8EA3FFE7F383C0780383003
+C0EA0001EB00E0A2126012F0A238E001C0EA7003387C0F80383FFF00EA1FFCEA03F0131C
+7E9B18>I<137E48B4FC00071380380F83C0EA1E03121C3838018090C7FC5AA2EAE1F8EA
+E7FEB5FC38FE078038F803C0EAF001EB00E05A7E1270A3383801C0EA3C03381E0780380F
+FF006C5AEA01F8131C7E9B18>I<12E0B512E0A214C038E00380EB0700C65A131E131C5B
+A25B13F05BA2485AA3485AA448C7FCA7131D7E9C18>I<EA03F8EA0FFE487E383E0F80EA
+3803387001C0A438380380EA3C07381FFF00EA07FC487EEA1F1F383C0780387001C000F0
+13E0EAE000A4387001C0EA7803383E0F80381FFF006C5AEA03F8131C7E9B18>I<123012
+7812FCA2127812301200A81230127812FCA2127812300614779318>58
+D<1218123C127EA2123C12181200A81218123C127EA2123E121E120E121C123C127812F0
+1260071A789318>I<14C0EB03E01307EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048
+C7FC12FCA2127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E01303EB00C013187E
+9918>I<387FFFC0B512E0A3C8FCA4B512E0A36C13C0130C7E9318>I<126012F87E127F6C
+7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E0A2EB1FC0EB3F80EBFE00485AEA07F048
+5AEA3F8048C7FC12FC5A126013187E9918>I<EA0FF0EA3FFC48B4FCEA700F38F00380A2
+EA600738000F00133E5BEA01F05B485AA55BC8FCA5EA0380487EA36C5A111C7D9B18>I<
+137CEA01FEEA07FF380F8780381E03C0EA3C1DEA387F3870FFE0EA71E313C112E1EAE380
+A638E1C1C0127113E33870FF8038387F00EA3C1C381E00E0EA0F833807FFC00001138038
+007E00131C7E9B18>I<137013F8A213D8A2EA01DCA3138CEA038EA4EA0707A5380FFF80
+A3EA0E03381C01C0A3387F07F000FF13F8007F13F0151C7F9B18>I<EA7FFCB5FC6C1380
+381C03C01301EB00E0A4130114C01307381FFF80140014C0EA1C03EB00E014F01470A414
+F014E01303387FFFC0B51280387FFE00141C7F9B18>I<EBF8E0EA03FEEA07FFEA0F07EA
+1E03EA3C01EA38005AA214005AA8127014E0A27E123C381E01C0EA0F073807FF803803FE
+00EA00F8131C7E9B18>I<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E01300A214F014
+70A814F014E0A2130114C01303EB0F80387FFF00485AEA7FF8141C7F9B18>I<B512F0A3
+381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A3151C7F9B18>
+I<B512F8A3381C0038A41400A21307A3EA1FFFA3EA1C07A390C7FCA7EAFFC0A3151C7F9B
+18>I<3801F1C0EA03FDEA0FFFEA1F0FEA1C03123813011270A290C7FC5AA5EB0FF0131F
+130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FDEA01F1141C7E9B18>I<387F
+07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F015
+1C7F9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<38
+01FFC0A338000E00B312F0A2133CEA7FFCEA3FF0EA0FC0121C7D9B18>I<387F07F038FF
+87F8387F07F0381C03C0EB07801400130E131E5B13385B13F0121DA2EA1FB8A2131C121E
+EA1C0EA27FA2EB0380A2EB01C0387F03F038FF87F8387F03F0151C7F9B18>I<EAFFC0A3
+001CC7FCB114E0A5B5FCA3131C7E9B18>I<38FC01F8EAFE03A2383B06E0A4138EA2EA39
+8CA213DCA3EA38D8A213F81370A21300A638FE03F8A3151C7F9B18>I<387E07F038FF0F
+F8387F07F0381D81C0A313C1121CA213E1A313611371A213311339A31319A2131D130DA3
+EA7F07EAFF87EA7F03151C7F9B18>I<EA0FFE383FFF804813C0EA7803EA700100F013E0
+EAE000B0EAF001007013C0EA7C07EA7FFF6C1380380FFE00131C7E9B18>I<EAFFFEEBFF
+8014C0EA1C03EB01E013001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47E
+A3141C7F9B18>I<EA0FFE383FFF804813C0EA7803EA700100F013E0EAE000AE1370A2EA
+F079387039C0EA783FEA7FFF6C1380380FFE00EA000FEB0780A2EB03C01301A213227E9B
+18>I<EA7FF8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF005BA2EA1C
+0F7FEB0380A5149CA3387F01F8EAFF81387F00F0161C7F9B18>I<3803F1C0EA1FFF5AEA
+7C0FEA7003EAE001A390C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00
+E0A2126012E0130100F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5
+FCA238E07038A400001300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0
+EA0F01380783C03803FF806C1300EA007C171C809B18>I<38FE03F8EAFF07EAFE03383C
+01E0001C13C0A3EA1E03000E1380A438070700A4EA038EA4EA018C13DCA3EA00D813F8A2
+1370151C7F9B18>I<38FE03F8A338700070A36C13E0A513F8EA39FC13DCA2001913C0A3
+138CA2EA1D8DA31305000D1380EA0F07A2EA0E03151C7F9B18>I<387F0FE0139F130F38
+0E0700120FEA070E138EEA039C13DCEA01F8A212005B137013F07F487E13DCEA039E138E
+EA070F7F000E13801303001E13C0387F07F000FF13F8007F13F0151C7F9B18>I<38FE03
+F8EAFF07EAFE03381C01C0EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3EA00
+F8A21370A9EA01FC487E6C5A151C7F9B18>I<EAFFF8A3EAE000B3ACEAFFF8A30D24779F
+18>91 D<126012F0A27E1278127C123CA2123E121E121F7EA27F12077F1203A27F12017F
+12007F1378A2137C133C133E131EA2131F7F14801307A2EB030011247D9F18>I<EAFFF8
+A3EA0038B3ACEAFFF8A30D247F9F18>I<387FFFC0B512E0A26C13C013047E7F18>95
+D<1206121E123E12381270A212E0A312F812FC127CA21238070E789E18>I<EA0FF0EA1F
+FC487EEA3C0FEA180738000380A213FF1207121FEA7F03127812E0A3EAF007EA780F383F
+FFF8EA1FFDEA07F015147E9318>I<127E12FE127E120EA5133EEBFF80000F13C0EBC1E0
+1380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E138038063E00151C809B18
+>I<EA01FEEA07FF001F1380EA3E073838030048C7FCA25AA61270EB01C01238EA3E0338
+1FFF8000071300EA01FC12147D9318>I<EB1F80133F131F1303A5EA03E3EA0FFBEA1FFF
+EA3C1FEA380FEA7007130312E0A6EA7007A2EA380FEA3C1F381FFFF0380FFBF83803E3F0
+151C7E9B18>I<EA01F0EA07FCEA1FFEEA3E0F38380780EA7003A238E001C0A2B5FCA300
+E0C7FC1270EB01C01238EA3E07381FFF8000071300EA01F812147D9318>I<EB1F80EB7F
+C0EBFFE013E13801C0C01400A3387FFFC0B5FCA23801C000AEEA7FFFA3131C7F9B18>I<
+3801E1F03807FFF85A381E1E30381C0E00487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7
+FC7EEA1FFEEBFFC04813E0387801F038700070481338A4007813F0EA7E03381FFFC06C13
+803801FC00151F7F9318>I<127E12FE127E120EA5133EEBFF80000F13C013C1EB80E013
+00120EAB387FC7FC38FFE7FE387FC7FC171C809B18>I<EA0380EA07C0A3EA0380C7FCA4
+EA7FC012FF127F1201AEB5FCA3101D7C9C18>I<1338137CA313381300A4EA0FFCA3EA00
+1CB3A4EA6038EAF078EAFFF0EA7FE0EA3F800E277E9C18>I<127E12FE127E120EA5EB3F
+F0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA0E0F7FEB038014C0387FC7F812FF
+127F151C7F9B18>I<EAFFC0A31201B3A4B51280A3111C7D9B18>I<38F9C1C038FFF7F013
+FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB3E3E1714809318>I<EA7E3E38FEFF
+80007F13C0EA0FC1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC1714809318>I<EA
+01F0EA0FFE487E383E0F80EA3803387001C0A238E000E0A5EAF001007013C0EA7803383C
+0780EA3E0F381FFF006C5AEA01F013147E9318>I<EA7E3E38FEFF80007F13C0380FC1E0
+1380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E1380EB3E0090C7FCA7EA7F
+C0487E6C5A151E809318>I<3801F380EA07FBEA1FFFEA3E1FEA380FEA7007A2EAE003A6
+EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB1FF0EB3FF8EB1FF0151E7E93
+18>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0005BA290C7FCA9EAFFFC7F5B14147E
+9318>I<EA07F7EA3FFF5AEA780FEAE007A3007CC7FCEA7FE0EA1FFCEA03FEEA001F3860
+0780EAE003A212F038F80F00B5FC13FCEAE7F011147D9318>I<487E1203A4387FFFC0B5
+FCA238038000A9144014E0A33801C1C013FF6C1380EB3E0013197F9818>I<387E07E0EA
+FE0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE3801FCFC1714809318>I<387F8FF0
+00FF13F8007F13F0381C01C0380E0380A338070700A3138FEA038EA3EA01DCA3EA00F8A2
+137015147F9318>I<38FF07F8138F1307383800E0A4381C01C0137113F9A213D9EA1DDD
+000D1380A3138DEA0F8FA23807070015147F9318>I<387F8FF0139F138F380F0700EA07
+8EEA039EEA01DC13F81200137013F07FEA01DCEA039E138EEA0707000E1380387F8FF000
+FF13F8007F13F015147F9318>I<387F8FF000FF13F8007F13F0380E01C0EB0380A21207
+EB0700A2EA0387A2138EEA01CEA213CC120013DC1378A31370A313F05B1279EA7BC0EA7F
+806CC7FC121E151E7F9318>I<383FFFF05AA2387001E0EB03C0EB078038000F00131E5B
+13F8485AEA03C0485A380F0070121E5A5AB512F0A314147F9318>I<EB07E0131F137FEB
+780013E0AB1201EA7FC0485AA26C7EEA01E01200AB1378EB7FE0131F130713247E9F18>
+I<126012F0B3B012600424769F18>I<127CB4FC13C01203C67EAB7FEB7FC0EB3FE0A2EB
+7FC0EBF0005BABEA03C012FF90C7FC127C13247E9F18>I<EA060CEA1F1EEA3FBEEAFBF8
+EAF1F0EA60C00F067C9B18>I E /Fr 78 123 df<90381F83E09038F06E303901C07878
+380380F8903800F03048EB7000A7B612803907007000B2383FE3FF1D20809F1B>11
+D<133FEBE0C0EA01C0380381E0EA0701A290C7FCA6B512E0EA0700B2383FC3FC1620809F
+19>I<EB3FE013E0EA01C1EA0381EA0700A8B5FCEA0700B2383FE7FC1620809F19>I<9038
+1F81F89038F04F043901C07C06390380F80FEB00F05A0270C7FCA6B7FC3907007007B23A
+3FE3FE3FE02320809F26>I<EA7038EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008
+A2EA2010EA40200F0E7F9F17>34 D<1340A2EA03F0EA0C4EEA1041382040801260004013
+4038C041C01343A238E04180EB40001270127CEA3FC0EA1FF86C7EEA03FEEA007FEB4F80
+1343EB41C0A2EAF040A312801480EA404100201300EA3042EA0C4CEA03F0EA0040A31225
+7EA117>36 D<127012F812FCA212741204A31208A21210A212201240060E7C9F0D>39
+D<13401380EA01005A12061204120C5AA212381230A212701260A412E0AC1260A4127012
+30A212381218A27E120412067E7EEA008013400A2E7BA112>I<7E12407E12307E120812
+0C7EA212077EA213801201A413C0AC1380A412031300A25A1206A25A120812185A12205A
+5A0A2E7EA112>I<127012F012F8A212781208A31210A31220A21240050E7C840D>44
+D<EAFFF0A20C02808A0F>I<127012F8A3127005057C840D>I<144014C0EB0180A3EB0300
+A31306A25BA35BA35BA25BA35BA3485AA348C7FCA21206A35AA35AA25AA35AA35AA2122D
+7EA117>I<EA03F0EA0E1C487EEA1806EA380738700380A400F013C0AD00701380A3EA78
+0700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>I<13801203120F12F31203B3A6EA
+07C0EAFFFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00401380128000F013C0EAF803
+A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7FC000613405A5A00101380EA
+3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F007813801307A2EA380F1200
+1400A2131E131C1370EA07F0EA003C130E130FEB0780A214C0122012F8A300F013801240
+EB0F00EA200EEA183CEA07F0121F7E9D17>I<1306A2130EA2131E132EA2134E138EA2EA
+010E1202A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17>
+I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA180EEA10071480EA0003A214C0
+A3127012F0A200E013801240EB0700EA20066C5AEA0838EA07E0121F7E9D17>I<137CEA
+0182EA0701380E0380EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEAF406EA
+F807EB0380A200F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D17
+>I<1240387FFFE014C0A23840008038800100A21302485AA25B5BA25BA21360A213E05B
+1201A41203A76C5A131F7E9D17>I<EA03F0EA0C0CEA1006EA3003382001801260A31270
+38780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F38300F80EA6007EB01C0
+12C01300A31480EA600100201300EA1002EA0C0CEA03F0121F7E9D17>I<EA03F0EA0E18
+487E487E13071270EB038012F0A214C0A5EA7007A21238EA180BEA0E13EA03E338000380
+A3EB07001230EA7806130EEA700CEA2018EA1070EA0FC0121F7E9D17>I<127012F8A312
+701200AA127012F8A3127005147C930D>I<127012F8A312701200AA127012F012F8A212
+781208A31210A31220A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB20
+78A3497EA2EBC03EEB801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E14E0
+39FF801FFE1F207F9F22>65 D<B512E0380F0078141EA2801580A515005C141E147CEBFF
+F0EB007C141FEC0F80EC07C0140315E0A515C014071580EC0F00143EB512F01B1F7E9E20
+>I<90380FE0109038381C309038E002703803C00139078000F048C71270121E15305A15
+10127C127800F81400A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E003
+00EB380CEB0FF01C217E9F21>I<B512F83807801EEC0780EC03C0EC01E0EC00F0157015
+78A2153CA3153EA8153CA2157C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F7F
+9E23>I<B61280380F000F14031401140015C01540A314401500A214C0130113FF130113
+001440A3EC0020A31540A315C01401EC0380140FB6FC1B1F7E9E1F>I<B6128038078007
+1401A2140015C01540A4EC2000A3146014E013FF138014601420A391C7FCA87FEAFFFE1A
+1F7F9E1E>I<90380FE0109038381C309038E002703803C00139078000F048C71270121E
+15305A1510127C127800F81400A7EC3FFEEC01F000781300127C123CA27EA27E6C7E3903
+C001703900E002309038380C1090380FF0001F217E9F24>I<39FFF07FF8390F000780AD
+90B5FCEB0007AF39FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<
+3807FFC038003E00131EB3A3122012F8A3EAF01CEA403CEA6038EA1070EA0FC012207F9E
+17>I<39FFF007FC390F0003E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB13
+C0EB21E01341EB80F0EB0078A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E
+9E23>I<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E1C>
+I<B46CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D1383A2
+90380E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E
+2A>I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2
+EB03C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D1F7E
+9E22>I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0A200
+7C14F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E06CEB
+03C06C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F007C14
+1E80EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<
+B57E380F00F0143C8080A21580A41500A2141E5C14F0EBFF80EB01C0EB0070A280143CA3
+143EA31504143F141FEC0F0839FFF00788C7EA01F01E207E9E21>82
+D<3803F040380C0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF8
+6CB4FC00071380C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F80180
+38C60300EA81FC14217E9F19>I<007FB512E038780F010060EB006000401420A200C014
+3000801410A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC00
+80B3A46CEB01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003
+FE391F8000F86CC7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213
+F8EB7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF0
+7FF81FF03B1F000FC007C06C903907800180170015C001805C00071502EC09E013C00003
+5DEC19F01410D801E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C14
+4090383D000F133F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<39
+FFF001FF391F800078000F146012076D1340000314807F3901F001001200EBF802EB7C06
+EB3C04EB3E08131EEB1F10EB0FB0EB07A014E06D5AACEB3FFC201F7F9E22>89
+D<12FFA212C0B3B3A512FFA2082D7CA10D>91 D<EA0804EA1008EA2010A2EA4020A2EA80
+40A3EAB85CEAFC7EA2EA7C3EEA381C0F0E7A9F17>I<12FFA21203B3B3A512FFA2082D80
+A10D>I<120812101220A21240A21280A312B812FCA2127C1238060E7D9F0D>96
+D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA078EEA1E0E1238127800F01310A313
+1E127838386720380F83C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00
+C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C15207E9F
+19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0A61270127800381380A2381C
+0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112
+381278127012F0A61270A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA
+0E1C487E487EA21270EB038012F0A2B5FC00F0C7FCA31270A26C1380A2381C0100EA0706
+EA01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE0
+1020809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA
+33E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C
+13C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A2
+121CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F
+7F9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA
+6180EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013
+E0EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12
+FC121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D039038391E01E01CA2
+001C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38
+FF8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A600
+7013E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA1C7CEAFD87381E01
+8014C0381C00E014F014701478A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7
+FCA8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03EA38011278127012F0A612
+7012781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD
+18EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE0
+00127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F14
+7F9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C
+7F9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83
+F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370
+A3132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D8
+0704138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB40081E14
+7F9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F01370
+137813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC16147F9318>
+I<38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00
+E8A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E12
+60EA401C133813781370EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA70
+06130EEAFFFE10147F9314>I E /Fs 14 122 df<DB1FFC14C00203B5EAC001021FECF0
+03027FECFC07903B01FFFC00FE0F010701C0EB1F9F4948C7EA07FFD93FF8804948140049
+48157F485B4A153F4890C9121F485A000F170F5B001F1707A2485A1803A2127FA24993C8
+FCA212FFAA041FB61280127FA27FDC0001EBC000123FA36C7EA26C7EA26C7E7E6C7F806C
+7F6D6C5CEB3FFCD90FFF5C6D01C0EB1FBF010101FCEBFF1F6D6CB5EAFE0F021FECF80302
+03ECE0009126001FFEC9FC413D7BBB4C>71 D<B612FEA426007FF0C9FCB3ADEF03C0A517
+071880A3170FA3171FA2173F177F17FF5E04071300163FB9FCA4323B7DBA3A>76
+D<B500F00207B512E0808080D8007F92390007E0006E6F5A81017B7F81137901787F6E7E
+6E7E81141F6E7E6E7F6E7F82806E7F6F7E6F7E826F7E816F13806F13C017E06F13F081EE
+7FF8EE3FFC17FEEE1FFF827013837013C318E37013F382EF7FFBEF3FFFA283838383A283
+83187F183FA201FC161FB500FC150F18071803A2433B7CBA4C>78
+D<B712F8EEFFC017F817FE3B007FF0001FFF040313C004007F717E717EA284171FA284A6
+60A2173F604D5A604C485A4C5BDC1FFEC8FC91B612F817C0A29139F0007FF0EE1FF8707E
+707E707E8482A284A584A5F101E0A27013F0A2F103C0EF7FF8B600F890393FFC07809438
+1FFE0F0507B51200050113FCCBEA1FF0433C7CBA48>82 D<B600F80107B512E0A426007F
+F0C83807E000725AB3B3A3013F4C5AA280011F4CC7FCA26D6C151E0107163E6E5D6D6C5D
+6D6D13019026007FE0EB0FE0DA3FFCEB7FC0020FB65A02034AC8FCDA007F13F003071380
+433C7DBA4A>85 D<EB3FFE48B512E0000714F8390FE007FC9038F001FE486C6C7E6F7E82
+153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F3803FF803807FC00EA0FF0485A12
+3F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F0FFFE03807FFFE0001497E3900
+3FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4FC021F13F0027F13FC9138FC03
+FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF017F8A2EE07FCA317FEA917FCA3
+160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EBFF009039F0FC07FE91387FFFF8
+D9E01F13E09026C003FEC7FC2F3C7DBB36>I<EE3F80ED3FFFA4150181B0ECFF80010F13
+F0013F13FC9038FFC03F3901FE000F4848130348487F48487F121F485AA2127F5BA312FF
+A9127FA36C7EA2121F6C6C5B6C6C5B00035CD801FE011F13C02700FF807E13FE90387FFF
+F8010F13E0010113002F3C7DBB36>100 D<49B47E010F13F0017F13FC9038FF81FE3A03
+FE007F80D807F8133F4848EB1FC0ED0FE0485A003F15F01507485A16F8A212FFA290B6FC
+A301C0C8FCA4127FA36C7E1678121F7F000F15F06C6C13016C6CEB03E06C6CEB0FC03A00
+FFC07F8090393FFFFE00010F13F8010013C025267DA52C>I<EA01E0EA07F8487EA2487E
+A46C5AA26C5AEA01E0C8FCAB13FE127FA412071203B3AAB512F0A4143D7DBC1A>105
+D<13FE12FFA412071203B3B3AEB512F8A4153C7DBB1A>108 D<D801FCEBFF8000FF0103
+13F0020F7F91381E03FC91383801FE000701607F0003497E01FD15805C01FFC7FCA35BB3
+A4B5D8F83F13FEA42F267CA536>110 D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC
+707F00079038E0FFC000035BEBFD80A201FFEB7F809138003F00151E92C7FC5BB3A3B512
+FCA422267DA528>114 D<B500F0EBFFFCA4D803FEC7EA1F806D15006C151E806C5DA26E
+137C017F14786E13F8013F5CECF001011F5CECF803010F5CA2ECFC0701075CECFE0F0103
+91C7FC6E5A6D131E15BE6D13BC15FC6E5AA36E5AA26E5AA26E5AA26E5AA2140F92C8FC5C
+141E0008133E007F133C147C38FF807814F8EB81F0EB83E06C485A387C1F80D83FFFC9FC
+EA1FFCEA07F02E377EA533>121 D E end
TeXDict begin
-%%EndSetup
-%%Page: 1 1
-0 bop 0 1152 a Fp(GNU)33 b(Readline)h(Library)p 0 1201 1950
-17 v 1011 1250 a Fo(Edition)17 b(2.0,)c(for)i Fn(Readline)f(Library)g
-Fo(V)l(ersion)i(2.0.)1759 1304 y(July)g(1994)0 2443 y Fm(Brian)23
-b(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
-b(oundation)0 2509 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6
-b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)p 0 2545 1950 9
-v eop
-%%Page: 2 2
-1 bop 0 295 a Fo(This)15 b(do)q(cumen)o(t)f(describ)q(es)i(the)e(GNU)g
-(Readline)j(Library)l(,)d(a)g(utilit)o(y)h(whic)o(h)g(aids)g(in)g(the)f
-(consistency)h(of)f(user)0 358 y(in)o(terface)h(across)g(discrete)h(programs)
-e(that)g(need)j(to)d(pro)o(vide)i(a)f(command)g(line)i(in)o(terface.)0
-495 y(Published)g(b)o(y)f(the)f(F)l(ree)g(Soft)o(w)o(are)f(F)l(oundation)0
-557 y(675)g(Massac)o(h)o(usetts)g(Av)o(en)o(ue,)0 619 y(Cam)o(bridge,)h(MA)g
-(02139)f(USA)0 756 y(P)o(ermission)f(is)g(gran)o(ted)f(to)f(mak)o(e)h(and)h
-(distribute)h(v)o(erbatim)e(copies)h(of)f(this)h(man)o(ual)g(pro)o(vided)g
-(the)f(cop)o(yrigh)o(t)0 818 y(notice)k(and)f(this)h(p)q(ermission)h(notice)e
-(are)g(preserv)o(ed)h(on)f(all)h(copies.)0 955 y(P)o(ermission)f(is)f(gran)o
-(ted)f(to)h(cop)o(y)g(and)g(distribute)h(mo)q(di\014ed)h(v)o(ersions)e(of)f
-(this)i(man)o(ual)f(under)h(the)f(conditions)0 1018 y(for)e(v)o(erbatim)g
-(cop)o(ying,)h(pro)o(vided)h(that)d(the)i(en)o(tire)g(resulting)h(deriv)o(ed)
-f(w)o(ork)f(is)h(distributed)h(under)f(the)g(terms)0 1080 y(of)i(a)g(p)q
-(ermission)h(notice)g(iden)o(tical)h(to)e(this)g(one.)0 1217
-y(P)o(ermission)20 b(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f(distribute)i
-(translations)f(of)f(this)h(man)o(ual)f(in)o(to)h(another)f(language,)0
-1279 y(under)c(the)f(ab)q(o)o(v)o(e)g(conditions)h(for)e(mo)q(di\014ed)j(v)o
-(ersions,)e(except)g(that)g(this)g(p)q(ermission)i(notice)e(ma)o(y)g(b)q(e)h
-(stated)0 1341 y(in)h(a)f(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l
-(oundation.)0 2636 y(Cop)o(yrigh)o(t)226 2635 y(c)214 2636
-y Fl(\015)g Fo(1989,)f(1991)g(F)l(ree)h(Soft)o(w)o(are)f(F)l(oundation,)h
-(Inc.)p eop
-%%Page: 1 3
-2 bop 0 -83 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1227
-b(1)0 158 y Fk(1)41 b(Command)16 b(Line)f(Editing)62 383 y
-Fo(This)h(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f(of)g(the)g
-(GNU)g(command)g(line)i(editing)f(in)o(terface.)0 676 y Fm(1.1)33
-b(In)n(tro)r(duction)17 b(to)e(Line)h(Editing)62 820 y Fo(The)g(follo)o(wing)
-g(paragraphs)e(describ)q(e)j(the)e(notation)g(used)h(to)e(represen)o(t)i(k)o
-(eystrok)o(es.)62 965 y(The)f(text)e Fn(C-K)h Fo(is)g(read)g(as)g(`Con)o
-(trol-K')f(and)h(describ)q(es)i(the)e(c)o(haracter)f(pro)q(duced)i(when)g
-(the)f(Con)o(trol)f(k)o(ey)0 1027 y(is)j(depressed)g(and)f(the)h
-Fn(K)f Fo(k)o(ey)g(is)g(struc)o(k.)62 1172 y(The)i(text)f Fn(M-K)g
-Fo(is)i(read)e(as)g(`Meta-K')g(and)h(describ)q(es)h(the)f(c)o(haracter)f(pro)
-q(duced)h(when)h(the)e(meta)g(k)o(ey)h(\(if)0 1234 y(y)o(ou)g(ha)o(v)o(e)f
-(one\))h(is)g(depressed,)h(and)f(the)g Fn(K)g Fo(k)o(ey)g(is)g(struc)o(k.)25
-b(If)17 b(y)o(ou)f(do)h(not)g(ha)o(v)o(e)f(a)h(meta)f(k)o(ey)l(,)h(the)g
-(iden)o(tical)0 1296 y(k)o(eystrok)o(e)i(can)g(b)q(e)i(generated)e(b)o(y)h(t)
-o(yping)f Fn(ESC)h Fj(\014rst)p Fo(,)g(and)f(then)h(t)o(yping)g
-Fn(K)p Fo(.)33 b(Either)20 b(pro)q(cess)g(is)g(kno)o(wn)f(as)0
-1358 y Fj(metafying)g Fo(the)c Fn(K)g Fo(k)o(ey)l(.)62 1503
-y(The)h(text)e Fn(M-C-K)g Fo(is)i(read)f(as)f(`Meta-Con)o(trol-k')g(and)h
-(describ)q(es)h(the)g(c)o(haracter)e(pro)q(duced)i(b)o(y)f
-Fj(metafying)0 1565 y Fn(C-K)p Fo(.)62 1710 y(In)i(addition,)h(sev)o(eral)e
-(k)o(eys)g(ha)o(v)o(e)g(their)h(o)o(wn)f(names.)23 b(Sp)q(eci\014cally)m(,)c
-Fn(DEL)p Fo(,)d Fn(ESC)p Fo(,)f Fn(LFD)p Fo(,)h Fn(SPC)p Fo(,)g
-Fn(RET)p Fo(,)g(and)g Fn(TAB)0 1772 y Fo(all)e(stand)f(for)f(themselv)o(es)i
-(when)f(seen)h(in)g(this)f(text,)g(or)g(in)g(an)g(init)i(\014le)f(\(see)f
-(Section)h(1.3)e([Readline)j(Init)f(File],)0 1834 y(page)h(4,)g(for)f(more)h
-(info\).)0 2127 y Fm(1.2)33 b(Readline)16 b(In)n(teraction)62
-2271 y Fo(Often)g(during)h(an)f(in)o(teractiv)o(e)g(session)h(y)o(ou)e(t)o
-(yp)q(e)h(in)h(a)f(long)g(line)h(of)f(text,)f(only)h(to)g(notice)g(that)f
-(the)h(\014rst)0 2334 y(w)o(ord)d(on)i(the)f(line)i(is)e(missp)q(elled.)23
-b(The)14 b(Readline)i(library)f(giv)o(es)g(y)o(ou)e(a)h(set)g(of)g(commands)g
-(for)f(manipulating)0 2396 y(the)18 b(text)g(as)g(y)o(ou)g(t)o(yp)q(e)g(it)h
-(in,)g(allo)o(wing)g(y)o(ou)f(to)g(just)g(\014x)g(y)o(our)g(t)o(yp)q(o,)g
-(and)h(not)f(forcing)g(y)o(ou)g(to)g(ret)o(yp)q(e)g(the)0 2458
-y(ma)s(jorit)o(y)d(of)h(the)g(line.)25 b(Using)17 b(these)g(editing)h
-(commands,)e(y)o(ou)g(mo)o(v)o(e)f(the)i(cursor)f(to)g(the)g(place)h(that)f
-(needs)0 2521 y(correction,)g(and)h(delete)g(or)f(insert)g(the)h(text)e(of)h
-(the)g(corrections.)23 b(Then,)17 b(when)g(y)o(ou)f(are)g(satis\014ed)g(with)
-h(the)0 2583 y(line,)h(y)o(ou)e(simply)i(press)f Fn(RETURN)p
-Fo(.)23 b(Y)l(ou)17 b(do)f(not)g(ha)o(v)o(e)g(to)g(b)q(e)i(at)e(the)g(end)h
-(of)f(the)h(line)h(to)e(press)h Fn(RETURN)p Fo(;)f(the)0 2645
-y(en)o(tire)g(line)h(is)e(accepted)h(regardless)f(of)g(the)g(lo)q(cation)h
-(of)f(the)h(cursor)e(within)j(the)e(line.)p eop
-%%Page: 2 4
-3 bop 0 -83 a Fo(2)1472 b(GNU)15 b(Readline)i(Library)0 158
-y Fi(1.2.1)30 b(Readline)15 b(Bare)g(Essen)n(tials)62 295 y
-Fo(In)f(order)f(to)f(en)o(ter)h(c)o(haracters)g(in)o(to)g(the)g(line,)i
-(simply)f(t)o(yp)q(e)f(them.)19 b(The)14 b(t)o(yp)q(ed)f(c)o(haracter)f(app)q
-(ears)i(where)0 358 y(the)h(cursor)h(w)o(as,)e(and)h(then)h(the)g(cursor)f
-(mo)o(v)o(es)f(one)i(space)g(to)e(the)i(righ)o(t.)k(If)c(y)o(ou)f(mist)o(yp)q
-(e)h(a)f(c)o(haracter,)f(y)o(ou)0 420 y(can)h(use)h(y)o(our)f(erase)g(c)o
-(haracter)f(to)h(bac)o(k)g(up)g(and)h(delete)g(the)f(mist)o(yp)q(ed)h(c)o
-(haracter.)62 557 y(Sometimes)f(y)o(ou)e(ma)o(y)h(miss)g(t)o(yping)g(a)g(c)o
-(haracter)g(that)f(y)o(ou)h(w)o(an)o(ted)f(to)g(t)o(yp)q(e,)h(and)h(not)e
-(notice)i(y)o(our)f(error)0 619 y(un)o(til)k(y)o(ou)e(ha)o(v)o(e)g(t)o(yp)q
-(ed)h(sev)o(eral)g(other)f(c)o(haracters.)23 b(In)18 b(that)d(case,)i(y)o(ou)
-f(can)h(t)o(yp)q(e)g Fn(C-B)f Fo(to)g(mo)o(v)o(e)g(the)g(cursor)0
-681 y(to)f(the)h(left,)g(and)g(then)g(correct)f(y)o(our)h(mistak)o(e.)21
-b(Afterw)o(ards,)14 b(y)o(ou)i(can)g(mo)o(v)o(e)f(the)h(cursor)f(to)g(the)h
-(righ)o(t)g(with)0 744 y Fn(C-F)p Fo(.)62 881 y(When)i(y)o(ou)f(add)g(text)g
-(in)h(the)f(middle)i(of)e(a)g(line,)i(y)o(ou)e(will)i(notice)e(that)g(c)o
-(haracters)f(to)h(the)g(righ)o(t)g(of)g(the)0 943 y(cursor)h(are)h(`pushed)g
-(o)o(v)o(er')e(to)h(mak)o(e)g(ro)q(om)g(for)g(the)h(text)f(that)g(y)o(ou)g
-(ha)o(v)o(e)h(inserted.)31 b(Lik)o(ewise,)20 b(when)f(y)o(ou)0
-1005 y(delete)f(text)f(b)q(ehind)i(the)f(cursor,)f(c)o(haracters)f(to)h(the)g
-(righ)o(t)g(of)g(the)h(cursor)f(are)g(`pulled)i(bac)o(k')d(to)h(\014ll)i(in)f
-(the)0 1067 y(blank)g(space)f(created)g(b)o(y)g(the)h(remo)o(v)m(al)f(of)f
-(the)i(text.)25 b(A)17 b(list)h(of)e(the)h(basic)h(bare)f(essen)o(tials)h
-(for)e(editing)j(the)0 1130 y(text)c(of)f(an)i(input)g(line)h(follo)o(ws.)0
-1279 y Fn(C-B)168 b Fo(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o(haracter.)0
-1366 y Fn(C-F)168 b Fo(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h(c)o(haracter.)0
-1454 y Fn(DEL)168 b Fo(Delete)16 b(the)f(c)o(haracter)g(to)f(the)h(left)h(of)
-f(the)g(cursor.)0 1541 y Fn(C-D)168 b Fo(Delete)16 b(the)f(c)o(haracter)g
-(underneath)h(the)f(cursor.)0 1615 y(Prin)o(ting)h(c)o(haracters)240
-1678 y(Insert)f(the)h(c)o(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h
-(cursor.)0 1765 y Fn(C-_)168 b Fo(Undo)15 b(the)h(last)f(thing)h(that)e(y)o
-(ou)h(did.)21 b(Y)l(ou)15 b(can)h(undo)f(all)h(the)g(w)o(a)o(y)e(bac)o(k)h
-(to)f(an)i(empt)o(y)e(line.)0 1973 y Fi(1.2.2)30 b(Readline)15
-b(Mo)n(v)n(emen)n(t)h(Commands)62 2110 y Fo(The)c(ab)q(o)o(v)o(e)g(table)g
-(describ)q(es)i(the)e(most)f(basic)h(p)q(ossible)i(k)o(eystrok)o(es)d(that)g
-(y)o(ou)g(need)i(in)g(order)f(to)f(do)h(editing)0 2172 y(of)g(the)h(input)h
-(line.)21 b(F)l(or)12 b(y)o(our)g(con)o(v)o(enience,)i(man)o(y)f(other)f
-(commands)h(ha)o(v)o(e)f(b)q(een)i(added)f(in)h(addition)g(to)e
-Fn(C-B)p Fo(,)0 2234 y Fn(C-F)p Fo(,)i Fn(C-D)p Fo(,)h(and)g
-Fn(DEL)p Fo(.)20 b(Here)15 b(are)g(some)g(commands)g(for)f(mo)o(ving)h(more)g
-(rapidly)i(ab)q(out)e(the)g(line.)0 2384 y Fn(C-A)168 b Fo(Mo)o(v)o(e)14
-b(to)h(the)g(start)f(of)h(the)g(line.)0 2471 y Fn(C-E)168 b
-Fo(Mo)o(v)o(e)14 b(to)h(the)g(end)h(of)f(the)g(line.)0 2558
-y Fn(M-F)168 b Fo(Mo)o(v)o(e)14 b(forw)o(ard)g(a)h(w)o(ord.)0
-2645 y Fn(M-B)168 b Fo(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)p
+1 0 bop 0 693 a Fs(GNU)33 b(Readline)h(Library)p 0 743
+1950 17 v 1011 791 a Fr(Edition)17 b(2.1,)c(for)i Fq(Readline)f
+(Library)g Fr(V)l(ersion)i(2.1.)1718 845 y(Marc)o(h)e(1996)0
+2467 y Fp(Brian)23 b(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23
+b(Soft)n(w)n(are)f(F)-6 b(oundation)0 2534 y(Chet)22
+b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n
+(ersit)n(y)p 0 2570 1950 9 v eop
+2 1 bop 0 320 a Fr(This)15 b(do)q(cumen)o(t)f(describ)q(es)i(the)e(GNU)
+g(Readline)j(Library)l(,)d(a)g(utilit)o(y)h(whic)o(h)g(aids)g(in)g(the)
+f(consistency)h(of)f(user)0 382 y(in)o(terface)h(across)g(discrete)h
+(programs)e(that)g(need)j(to)d(pro)o(vide)i(a)f(command)g(line)i(in)o
+(terface.)0 519 y(Published)g(b)o(y)f(the)f(F)l(ree)g(Soft)o(w)o(are)f
+(F)l(oundation)0 582 y(675)g(Massac)o(h)o(usetts)g(Av)o(en)o(ue,)0
+644 y(Cam)o(bridge,)h(MA)g(02139)f(USA)0 781 y(P)o(ermission)f(is)g
+(gran)o(ted)f(to)f(mak)o(e)h(and)h(distribute)h(v)o(erbatim)e(copies)h
+(of)f(this)h(man)o(ual)g(pro)o(vided)g(the)f(cop)o(yrigh)o(t)0
+843 y(notice)k(and)f(this)h(p)q(ermission)h(notice)e(are)g(preserv)o
+(ed)h(on)f(all)h(copies.)0 980 y(P)o(ermission)f(is)f(gran)o(ted)f(to)h
+(cop)o(y)g(and)g(distribute)h(mo)q(di\014ed)h(v)o(ersions)e(of)f(this)i
+(man)o(ual)f(under)h(the)f(conditions)0 1043 y(for)e(v)o(erbatim)g(cop)
+o(ying,)h(pro)o(vided)h(that)d(the)i(en)o(tire)g(resulting)h(deriv)o
+(ed)f(w)o(ork)f(is)h(distributed)h(under)f(the)g(terms)0
+1105 y(of)i(a)g(p)q(ermission)h(notice)g(iden)o(tical)h(to)e(this)g
+(one.)0 1242 y(P)o(ermission)20 b(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)
+f(distribute)i(translations)f(of)f(this)h(man)o(ual)f(in)o(to)h
+(another)f(language,)0 1304 y(under)c(the)f(ab)q(o)o(v)o(e)g
+(conditions)h(for)e(mo)q(di\014ed)j(v)o(ersions,)e(except)g(that)g
+(this)g(p)q(ermission)i(notice)e(ma)o(y)g(b)q(e)h(stated)0
+1366 y(in)h(a)f(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l
+(oundation.)0 2661 y(Cop)o(yrigh)o(t)226 2660 y(c)214
+2661 y Fo(\015)g Fr(1989,)f(1991)g(F)l(ree)h(Soft)o(w)o(are)f(F)l
+(oundation,)h(Inc.)p eop
+1 2 bop 0 -58 a Fr(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1227
+b(1)0 183 y Fn(1)41 b(Command)16 b(Line)f(Editing)62
+408 y Fr(This)h(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f
+(of)g(the)g Fm(GNU)g Fr(command)g(line)i(editing)f(in)o(terface.)0
+701 y Fp(1.1)33 b(In)n(tro)r(duction)17 b(to)e(Line)h(Editing)62
+845 y Fr(The)g(follo)o(wing)g(paragraphs)e(describ)q(e)j(the)e
+(notation)g(used)h(to)e(represen)o(t)i(k)o(eystrok)o(es.)62
+990 y(The)k(text)e Fq(C-K)h Fr(is)h(read)f(as)f(`Con)o(trol-K')h(and)g
+(describ)q(es)i(the)e(c)o(haracter)f(pro)q(duced)j(when)e(the)g
+Fq(K)g Fr(k)o(ey)g(is)0 1052 y(pressed)d(while)g(the)g(Con)o(trol)e(k)o
+(ey)h(is)h(depressed.)62 1197 y(The)h(text)f Fq(M-K)g
+Fr(is)i(read)e(as)g(`Meta-K')g(and)h(describ)q(es)h(the)f(c)o(haracter)
+f(pro)q(duced)h(when)h(the)e(meta)g(k)o(ey)h(\(if)0 1259
+y(y)o(ou)f(ha)o(v)o(e)f(one\))h(is)g(depressed,)h(and)f(the)g
+Fq(K)f Fr(k)o(ey)h(is)h(pressed.)22 b(If)16 b(y)o(ou)g(do)g(not)f(ha)o
+(v)o(e)g(a)h(meta)f(k)o(ey)l(,)h(the)g(iden)o(tical)0
+1321 y(k)o(eystrok)o(e)j(can)g(b)q(e)i(generated)e(b)o(y)h(t)o(yping)f
+Fq(ESC)h Fl(\014rst)p Fr(,)g(and)f(then)h(t)o(yping)g
+Fq(K)p Fr(.)33 b(Either)20 b(pro)q(cess)g(is)g(kno)o(wn)f(as)0
+1383 y Fl(metafying)g Fr(the)c Fq(K)g Fr(k)o(ey)l(.)62
+1528 y(The)h(text)e Fq(M-C-K)g Fr(is)i(read)f(as)f(`Meta-Con)o(trol-k')
+g(and)h(describ)q(es)h(the)g(c)o(haracter)e(pro)q(duced)i(b)o(y)f
+Fl(metafying)0 1590 y Fq(C-K)p Fr(.)62 1735 y(In)i(addition,)h(sev)o
+(eral)e(k)o(eys)g(ha)o(v)o(e)g(their)h(o)o(wn)f(names.)23
+b(Sp)q(eci\014cally)m(,)c Fq(DEL)p Fr(,)d Fq(ESC)p Fr(,)f
+Fq(LFD)p Fr(,)h Fq(SPC)p Fr(,)g Fq(RET)p Fr(,)g(and)g
+Fq(TAB)0 1797 y Fr(all)e(stand)f(for)f(themselv)o(es)i(when)f(seen)h
+(in)g(this)f(text,)g(or)g(in)g(an)g(init)i(\014le)f(\(see)f(Section)h
+(1.3)e([Readline)j(Init)f(File],)0 1859 y(page)h(5\).)0
+2152 y Fp(1.2)33 b(Readline)16 b(In)n(teraction)62 2296
+y Fr(Often)g(during)h(an)f(in)o(teractiv)o(e)g(session)h(y)o(ou)e(t)o
+(yp)q(e)h(in)h(a)f(long)g(line)h(of)f(text,)f(only)h(to)g(notice)g
+(that)f(the)h(\014rst)0 2359 y(w)o(ord)d(on)i(the)f(line)i(is)e(missp)q
+(elled.)23 b(The)14 b(Readline)i(library)f(giv)o(es)g(y)o(ou)e(a)h(set)
+g(of)g(commands)g(for)f(manipulating)0 2421 y(the)18
+b(text)g(as)g(y)o(ou)g(t)o(yp)q(e)g(it)h(in,)g(allo)o(wing)g(y)o(ou)f
+(to)g(just)g(\014x)g(y)o(our)g(t)o(yp)q(o,)g(and)h(not)f(forcing)g(y)o
+(ou)g(to)g(ret)o(yp)q(e)g(the)0 2483 y(ma)s(jorit)o(y)d(of)h(the)g
+(line.)25 b(Using)17 b(these)g(editing)h(commands,)e(y)o(ou)g(mo)o(v)o
+(e)f(the)i(cursor)f(to)g(the)g(place)h(that)f(needs)0
+2545 y(correction,)g(and)h(delete)g(or)f(insert)g(the)h(text)e(of)h
+(the)g(corrections.)23 b(Then,)17 b(when)g(y)o(ou)f(are)g(satis\014ed)g
+(with)h(the)0 2608 y(line,)h(y)o(ou)e(simply)i(press)f
+Fq(RETURN)p Fr(.)23 b(Y)l(ou)17 b(do)f(not)g(ha)o(v)o(e)g(to)g(b)q(e)i
+(at)e(the)g(end)h(of)f(the)h(line)h(to)e(press)h Fq(RETURN)p
+Fr(;)f(the)0 2670 y(en)o(tire)g(line)h(is)e(accepted)h(regardless)f(of)
+g(the)g(lo)q(cation)h(of)f(the)h(cursor)e(within)j(the)e(line.)p
eop
-%%Page: 3 5
-4 bop 0 -83 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1227
-b(3)0 158 y Fn(C-L)168 b Fo(Clear)15 b(the)h(screen,)f(reprin)o(ting)h(the)f
-(curren)o(t)g(line)i(at)e(the)g(top.)62 325 y(Notice)22 b(ho)o(w)e
-Fn(C-F)h Fo(mo)o(v)o(es)f(forw)o(ard)g(a)g(c)o(haracter,)i(while)g
-Fn(M-F)f Fo(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)36 b(It)21
-b(is)h(a)f(lo)q(ose)0 387 y(con)o(v)o(en)o(tion)15 b(that)g(con)o(trol)g(k)o
-(eystrok)o(es)f(op)q(erate)h(on)g(c)o(haracters)f(while)j(meta)e(k)o(eystrok)
-o(es)f(op)q(erate)h(on)g(w)o(ords.)0 671 y Fi(1.2.3)30 b(Readline)15
-b(Killing)g(Commands)62 816 y Fj(Killing)25 b Fo(text)18 b(means)g(to)f
-(delete)i(the)g(text)e(from)h(the)g(line,)i(but)e(to)g(sa)o(v)o(e)f(it)i(a)o
-(w)o(a)o(y)d(for)i(later)g(use,)h(usually)0 878 y(b)o(y)c Fj(y)o(anking)k
-Fo(\(re-inserting\))c(it)g(bac)o(k)g(in)o(to)g(the)g(line.)21
+2 3 bop 0 -58 a Fr(2)1472 b(GNU)15 b(Readline)i(Library)0
+183 y Fk(1.2.1)30 b(Readline)15 b(Bare)g(Essen)n(tials)62
+320 y Fr(In)f(order)f(to)f(en)o(ter)h(c)o(haracters)g(in)o(to)g(the)g
+(line,)i(simply)f(t)o(yp)q(e)f(them.)19 b(The)14 b(t)o(yp)q(ed)f(c)o
+(haracter)f(app)q(ears)i(where)0 382 y(the)h(cursor)h(w)o(as,)e(and)h
+(then)h(the)g(cursor)f(mo)o(v)o(es)f(one)i(space)g(to)e(the)i(righ)o
+(t.)k(If)c(y)o(ou)f(mist)o(yp)q(e)h(a)f(c)o(haracter,)f(y)o(ou)0
+445 y(can)h(use)h(y)o(our)f(erase)g(c)o(haracter)f(to)h(bac)o(k)g(up)g
+(and)h(delete)g(the)f(mist)o(yp)q(ed)h(c)o(haracter.)62
+582 y(Sometimes)f(y)o(ou)e(ma)o(y)h(miss)g(t)o(yping)g(a)g(c)o
+(haracter)g(that)f(y)o(ou)h(w)o(an)o(ted)f(to)g(t)o(yp)q(e,)h(and)h
+(not)e(notice)i(y)o(our)f(error)0 644 y(un)o(til)k(y)o(ou)e(ha)o(v)o(e)
+g(t)o(yp)q(ed)h(sev)o(eral)g(other)f(c)o(haracters.)23
+b(In)18 b(that)d(case,)i(y)o(ou)f(can)h(t)o(yp)q(e)g
+Fq(C-B)f Fr(to)g(mo)o(v)o(e)g(the)g(cursor)0 706 y(to)f(the)h(left,)g
+(and)g(then)g(correct)f(y)o(our)h(mistak)o(e.)21 b(Afterw)o(ards,)14
+b(y)o(ou)i(can)g(mo)o(v)o(e)f(the)h(cursor)f(to)g(the)h(righ)o(t)g
+(with)0 769 y Fq(C-F)p Fr(.)62 906 y(When)i(y)o(ou)f(add)g(text)g(in)h
+(the)f(middle)i(of)e(a)g(line,)i(y)o(ou)e(will)i(notice)e(that)g(c)o
+(haracters)f(to)h(the)g(righ)o(t)g(of)g(the)0 968 y(cursor)h(are)h
+(`pushed)g(o)o(v)o(er')e(to)h(mak)o(e)g(ro)q(om)g(for)g(the)h(text)f
+(that)g(y)o(ou)g(ha)o(v)o(e)h(inserted.)31 b(Lik)o(ewise,)20
+b(when)f(y)o(ou)0 1030 y(delete)f(text)f(b)q(ehind)i(the)f(cursor,)f(c)
+o(haracters)f(to)h(the)g(righ)o(t)g(of)g(the)h(cursor)f(are)g(`pulled)i
+(bac)o(k')d(to)h(\014ll)i(in)f(the)0 1092 y(blank)g(space)f(created)g
+(b)o(y)g(the)h(remo)o(v)m(al)f(of)f(the)i(text.)25 b(A)17
+b(list)h(of)e(the)h(basic)h(bare)f(essen)o(tials)h(for)e(editing)j(the)
+0 1155 y(text)c(of)f(an)i(input)g(line)h(follo)o(ws.)0
+1303 y Fq(C-B)168 b Fr(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o(haracter.)0
+1390 y Fq(C-F)168 b Fr(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h(c)o
+(haracter.)0 1476 y Fq(DEL)168 b Fr(Delete)16 b(the)f(c)o(haracter)g
+(to)f(the)h(left)h(of)f(the)g(cursor.)0 1562 y Fq(C-D)168
+b Fr(Delete)16 b(the)f(c)o(haracter)g(underneath)h(the)f(cursor.)0
+1648 y(Prin)o(ting)h(c)o(haracters)240 1710 y(Insert)f(the)h(c)o
+(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h(cursor.)0
+1796 y Fq(C-_)168 b Fr(Undo)15 b(the)h(last)f(thing)h(that)e(y)o(ou)h
+(did.)21 b(Y)l(ou)15 b(can)h(undo)f(all)h(the)g(w)o(a)o(y)e(bac)o(k)h
+(to)f(an)i(empt)o(y)e(line.)0 2001 y Fk(1.2.2)30 b(Readline)15
+b(Mo)n(v)n(emen)n(t)h(Commands)62 2138 y Fr(The)c(ab)q(o)o(v)o(e)g
+(table)g(describ)q(es)i(the)e(most)f(basic)h(p)q(ossible)i(k)o(eystrok)
+o(es)d(that)g(y)o(ou)g(need)i(in)g(order)f(to)f(do)h(editing)0
+2201 y(of)g(the)h(input)h(line.)21 b(F)l(or)12 b(y)o(our)g(con)o(v)o
+(enience,)i(man)o(y)f(other)f(commands)h(ha)o(v)o(e)f(b)q(een)i(added)f
+(in)h(addition)g(to)e Fq(C-B)p Fr(,)0 2263 y Fq(C-F)p
+Fr(,)i Fq(C-D)p Fr(,)h(and)g Fq(DEL)p Fr(.)20 b(Here)15
+b(are)g(some)g(commands)g(for)f(mo)o(ving)h(more)g(rapidly)i(ab)q(out)e
+(the)g(line.)0 2412 y Fq(C-A)168 b Fr(Mo)o(v)o(e)14 b(to)h(the)g(start)
+f(of)h(the)g(line.)0 2498 y Fq(C-E)168 b Fr(Mo)o(v)o(e)14
+b(to)h(the)g(end)h(of)f(the)g(line.)0 2584 y Fq(M-F)168
+b Fr(Mo)o(v)o(e)14 b(forw)o(ard)g(a)h(w)o(ord.)0 2670
+y Fq(M-B)168 b Fr(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)p
+eop
+3 4 bop 0 -58 a Fr(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1227
+b(3)0 183 y Fq(C-L)168 b Fr(Clear)15 b(the)h(screen,)f(reprin)o(ting)h
+(the)f(curren)o(t)g(line)i(at)e(the)g(top.)62 350 y(Notice)22
+b(ho)o(w)e Fq(C-F)h Fr(mo)o(v)o(es)f(forw)o(ard)g(a)g(c)o(haracter,)i
+(while)g Fq(M-F)f Fr(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)36
+b(It)21 b(is)h(a)f(lo)q(ose)0 412 y(con)o(v)o(en)o(tion)15
+b(that)g(con)o(trol)g(k)o(eystrok)o(es)f(op)q(erate)h(on)g(c)o
+(haracters)f(while)j(meta)e(k)o(eystrok)o(es)f(op)q(erate)h(on)g(w)o
+(ords.)0 696 y Fk(1.2.3)30 b(Readline)15 b(Killing)g(Commands)62
+841 y Fl(Killing)25 b Fr(text)18 b(means)g(to)f(delete)i(the)g(text)e
+(from)h(the)g(line,)i(but)e(to)g(sa)o(v)o(e)f(it)i(a)o(w)o(a)o(y)d(for)
+i(later)g(use,)h(usually)0 903 y(b)o(y)c Fl(y)o(anking)k
+Fr(\(re-inserting\))c(it)g(bac)o(k)g(in)o(to)g(the)g(line.)21
b(If)16 b(the)f(description)h(for)e(a)h(command)f(sa)o(ys)h(that)f(it)h
-(`kills')0 941 y(text,)f(then)i(y)o(ou)f(can)g(b)q(e)h(sure)f(that)g(y)o(ou)g
-(can)g(get)g(the)g(text)g(bac)o(k)g(in)h(a)f(di\013eren)o(t)g(\(or)f(the)i
-(same\))e(place)i(later.)62 1086 y(When)g(y)o(ou)f(use)g(a)g(kill)i(command,)
-e(the)h(text)e(is)i(sa)o(v)o(ed)f(in)h(a)f Fj(kill-ring)p Fo(.)22
-b(An)o(y)16 b(n)o(um)o(b)q(er)f(of)g(consecutiv)o(e)h(kills)0
-1148 y(sa)o(v)o(e)g(all)i(of)e(the)h(killed)i(text)d(together,)g(so)g(that)g
-(when)h(y)o(ou)f(y)o(ank)h(it)g(bac)o(k,)f(y)o(ou)h(get)f(it)h(all.)25
-b(The)17 b(kill)h(ring)f(is)0 1211 y(not)e(line)i(sp)q(eci\014c;)g(the)f
-(text)f(that)g(y)o(ou)g(killed)j(on)d(a)h(previously)g(t)o(yp)q(ed)g(line)h
-(is)f(a)o(v)m(ailable)i(to)d(b)q(e)h(y)o(ank)o(ed)f(bac)o(k)0
-1273 y(later,)g(when)h(y)o(ou)e(are)h(t)o(yping)h(another)e(line.)62
-1418 y(Here)i(is)f(the)h(list)g(of)e(commands)h(for)g(killing)j(text.)0
-1585 y Fn(C-K)168 b Fo(Kill)17 b(the)f(text)e(from)h(the)g(curren)o(t)g
+(`kills')0 966 y(text,)f(then)i(y)o(ou)f(can)g(b)q(e)h(sure)f(that)g(y)
+o(ou)g(can)g(get)g(the)g(text)g(bac)o(k)g(in)h(a)f(di\013eren)o(t)g
+(\(or)f(the)i(same\))e(place)i(later.)62 1111 y(When)g(y)o(ou)f(use)g
+(a)g(kill)i(command,)e(the)h(text)e(is)i(sa)o(v)o(ed)f(in)h(a)f
+Fl(kill-ring)p Fr(.)22 b(An)o(y)16 b(n)o(um)o(b)q(er)f(of)g(consecutiv)
+o(e)h(kills)0 1173 y(sa)o(v)o(e)g(all)i(of)e(the)h(killed)i(text)d
+(together,)g(so)g(that)g(when)h(y)o(ou)f(y)o(ank)h(it)g(bac)o(k,)f(y)o
+(ou)h(get)f(it)h(all.)25 b(The)17 b(kill)h(ring)f(is)0
+1236 y(not)e(line)i(sp)q(eci\014c;)g(the)f(text)f(that)g(y)o(ou)g
+(killed)j(on)d(a)h(previously)g(t)o(yp)q(ed)g(line)h(is)f(a)o(v)m
+(ailable)i(to)d(b)q(e)h(y)o(ank)o(ed)f(bac)o(k)0 1298
+y(later,)g(when)h(y)o(ou)e(are)h(t)o(yping)h(another)e(line.)62
+1443 y(Here)i(is)f(the)h(list)g(of)e(commands)h(for)g(killing)j(text.)0
+1610 y Fq(C-K)168 b Fr(Kill)17 b(the)f(text)e(from)h(the)g(curren)o(t)g
(cursor)g(p)q(osition)h(to)f(the)g(end)h(of)f(the)g(line.)0
-1689 y Fn(M-D)168 b Fo(Kill)17 b(from)d(the)h(cursor)g(to)f(the)h(end)g(of)g
-(the)g(curren)o(t)f(w)o(ord,)g(or)g(if)i(b)q(et)o(w)o(een)f(w)o(ords,)f(to)g
-(the)h(end)g(of)240 1751 y(the)g(next)h(w)o(ord.)0 1855 y Fn(M-DEL)120
-b Fo(Kill)16 b(from)d(the)i(cursor)e(the)h(start)f(of)h(the)g(previous)h(w)o
-(ord,)e(or)g(if)i(b)q(et)o(w)o(een)f(w)o(ords,)f(to)h(the)g(start)e(of)240
-1917 y(the)j(previous)h(w)o(ord.)0 2021 y Fn(C-W)168 b Fo(Kill)18
-b(from)e(the)g(cursor)g(to)f(the)h(previous)h(whitespace.)24
-b(This)17 b(is)f(di\013eren)o(t)h(than)f Fn(M-DEL)f Fo(b)q(ecause)240
-2084 y(the)g(w)o(ord)g(b)q(oundaries)h(di\013er.)62 2250 y(And,)e(here)g(is)h
-(ho)o(w)e(to)g Fj(y)o(ank)j Fo(the)e(text)f(bac)o(k)g(in)o(to)h(the)f(line.)
-22 b(Y)l(anking)14 b(means)g(to)f(cop)o(y)g(the)h(most-recen)o(tly-)0
-2312 y(killed)j(text)e(from)g(the)g(kill)i(bu\013er.)0 2479
-y Fn(C-Y)168 b Fo(Y)l(ank)15 b(the)h(most)e(recen)o(tly)i(killed)h(text)e
-(bac)o(k)g(in)o(to)g(the)h(bu\013er)f(at)f(the)i(cursor.)0
-2583 y Fn(M-Y)168 b Fo(Rotate)13 b(the)h(kill-ring,)i(and)e(y)o(ank)g(the)g
-(new)g(top.)19 b(Y)l(ou)14 b(can)g(only)g(do)g(this)g(if)g(the)g(prior)g
-(command)240 2645 y(is)i Fn(C-Y)e Fo(or)h Fn(M-Y)p Fo(.)p eop
-%%Page: 4 6
-5 bop 0 -83 a Fo(4)1472 b(GNU)15 b(Readline)i(Library)0 158
-y Fi(1.2.4)30 b(Readline)15 b(Argumen)n(ts)62 305 y Fo(Y)l(ou)k(can)g(pass)f
-(n)o(umeric)i(argumen)o(ts)d(to)h(Readline)j(commands.)30 b(Sometimes)19
-b(the)f(argumen)o(t)g(acts)g(as)g(a)0 367 y(rep)q(eat)f(coun)o(t,)f(other)g
-(times)g(it)h(is)g(the)g Fj(sign)f Fo(of)g(the)h(argumen)o(t)f(that)f(is)i
-(signi\014can)o(t.)25 b(If)16 b(y)o(ou)h(pass)f(a)g(negativ)o(e)0
-430 y(argumen)o(t)g(to)g(a)h(command)g(whic)o(h)h(normally)f(acts)g(in)h(a)e
-(forw)o(ard)g(direction,)i(that)f(command)f(will)j(act)d(in)i(a)0
-492 y(bac)o(kw)o(ard)13 b(direction.)21 b(F)l(or)13 b(example,)h(to)f(kill)i
-(text)e(bac)o(k)h(to)f(the)h(start)e(of)h(the)h(line,)h(y)o(ou)e(migh)o(t)h
-(t)o(yp)q(e)g Fn(M--)f(C-K)p Fo(.)62 639 y(The)19 b(general)g(w)o(a)o(y)f(to)
-g(pass)g(n)o(umeric)i(argumen)o(ts)e(to)g(a)g(command)h(is)g(to)f(t)o(yp)q(e)
-g(meta)g(digits)i(b)q(efore)f(the)0 701 y(command.)36 b(If)21
-b(the)g(\014rst)f(`digit')h(y)o(ou)g(t)o(yp)q(e)f(is)i(a)e(min)o(us)h(sign)g
-(\()p Fn(-)p Fo(\),)g(then)g(the)g(sign)g(of)g(the)f(argumen)o(t)g(will)0
-763 y(b)q(e)i(negativ)o(e.)40 b(Once)22 b(y)o(ou)f(ha)o(v)o(e)h(t)o(yp)q(ed)g
-(one)f(meta)g(digit)i(to)e(get)g(the)h(argumen)o(t)f(started,)h(y)o(ou)f(can)
-h(t)o(yp)q(e)0 826 y(the)c(remainder)h(of)f(the)g(digits,)h(and)f(then)h(the)
-f(command.)29 b(F)l(or)17 b(example,)i(to)f(giv)o(e)g(the)g
-Fn(C-D)g Fo(command)g(an)0 888 y(argumen)o(t)c(of)h(10,)f(y)o(ou)h(could)h(t)
-o(yp)q(e)g Fn(M-1)23 b(0)h(C-D)p Fo(.)0 1201 y Fm(1.3)33 b(Readline)16
-b(Init)g(File)62 1348 y Fo(Although)g(the)g(Readline)h(library)g(comes)e
-(with)h(a)f(set)g(of)g(Emacs-lik)o(e)h(k)o(eybindings)h(installed)g(b)o(y)f
-(default,)0 1410 y(it)e(is)g(p)q(ossible)i(that)d(y)o(ou)g(w)o(ould)h(lik)o
-(e)h(to)e(use)h(a)f(di\013eren)o(t)h(set)g(of)f(k)o(eybindings.)21
-b(Y)l(ou)14 b(can)g(customize)g(programs)0 1472 y(that)e(use)i(Readline)h(b)o
-(y)e(putting)h(commands)f(in)h(an)f Fj(init)i Fo(\014le)f(in)g(y)o(our)f
-(home)g(directory)l(.)19 b(The)14 b(name)f(of)f(this)i(\014le)0
-1535 y(is)i(tak)o(en)f(from)g(the)g(v)m(alue)i(of)e(the)h(en)o(vironmen)o(t)f
-(v)m(ariable)i Fn(INPUTRC)p Fo(.)j(If)c(that)f(v)m(ariable)h(is)g(unset,)g
-(the)f(default)0 1597 y(is)h(`)p Fn(~/.inputrc)p Fo('.)62 1744
-y(When)j(a)g(program)e(whic)o(h)j(uses)f(the)g(Readline)i(library)e(starts)f
-(up,)h(the)g(init)h(\014le)g(is)f(read,)g(and)g(the)g(k)o(ey)0
-1806 y(bindings)e(are)e(set.)62 1953 y(In)j(addition,)h(the)f
-Fn(C-x)c(C-r)k Fo(command)f(re-reads)g(this)h(init)h(\014le,)g(th)o(us)e
-(incorp)q(orating)h(an)o(y)f(c)o(hanges)h(that)0 2015 y(y)o(ou)d(migh)o(t)g
-(ha)o(v)o(e)g(made)g(to)f(it.)0 2311 y Fi(1.3.1)30 b(Readline)15
-b(Init)g(Syn)n(tax)62 2458 y Fo(There)h(are)f(only)h(a)f(few)g(basic)h
-(constructs)f(allo)o(w)o(ed)h(in)g(the)g(Readline)i(init)e(\014le.)22
-b(Blank)16 b(lines)h(are)e(ignored.)0 2521 y(Lines)j(b)q(eginning)g(with)f(a)
-f Fn(#)g Fo(are)g(commen)o(ts.)22 b(Lines)c(b)q(eginning)g(with)f(a)f
-Fn($)g Fo(indicate)h(conditional)h(constructs)0 2583 y(\(see)e(Section)h
-(1.3.2)e([Conditional)i(Init)g(Constructs],)e(page)i(7\).)22
-b(Other)16 b(lines)i(denote)f(v)m(ariable)h(settings)e(and)0
-2645 y(k)o(ey)f(bindings.)p eop
-%%Page: 5 7
-6 bop 0 -83 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1227
-b(5)0 158 y(V)l(ariable)16 b(Settings)240 221 y(Y)l(ou)j(can)g(c)o(hange)g
-(the)g(state)f(of)g(a)g(few)h(v)m(ariables)h(in)g(Readline)h(b)o(y)d(using)i
-(the)f Fn(set)f Fo(command)240 283 y(within)e(the)f(init)h(\014le.)k(Here)15
-b(is)g(ho)o(w)g(y)o(ou)f(w)o(ould)h(sp)q(ecify)h(that)e(y)o(ou)g(wish)i(to)e
-(use)h Fn(vi)f Fo(line)j(editing)240 345 y(commands:)360 408
-y Fn(set)23 b(editing-mode)g(vi)240 484 y Fo(Righ)o(t)14 b(no)o(w,)f(there)h
-(are)f(only)h(a)f(few)h(v)m(ariables)g(whic)o(h)h(can)f(b)q(e)g(set;)f(so)g
-(few,)h(in)g(fact,)f(that)g(w)o(e)g(just)240 546 y(list)j(them)f(here:)240
-622 y Fn(editing-mode)480 684 y Fo(The)e Fn(editing-mode)e
-Fo(v)m(ariable)j(con)o(trols)e(whic)o(h)h(editing)h(mo)q(de)f(y)o(ou)f(are)g
-(using.)20 b(By)480 746 y(default,)f(Readline)h(starts)c(up)i(in)h(Emacs)e
-(editing)i(mo)q(de,)f(where)g(the)g(k)o(eystrok)o(es)480 808
-y(are)c(most)g(similar)h(to)f(Emacs.)19 b(This)c(v)m(ariable)h(can)f(b)q(e)g
-(set)f(to)g(either)h Fn(emacs)f Fo(or)g Fn(vi)p Fo(.)240 884
-y Fn(horizontal-scroll-mode)480 946 y Fo(This)k(v)m(ariable)g(can)f(b)q(e)g
-(set)g(to)f(either)i Fn(On)f Fo(or)f Fn(Off)p Fo(.)25 b(Setting)17
-b(it)g(to)f Fn(On)h Fo(means)g(that)480 1009 y(the)d(text)g(of)f(the)h(lines)
-i(that)d(y)o(ou)h(edit)h(will)g(scroll)g(horizon)o(tally)g(on)f(a)g(single)h
-(screen)480 1071 y(line)f(when)f(they)g(are)f(longer)h(than)f(the)h(width)g
-(of)f(the)g(screen,)h(instead)g(of)g(wrapping)480 1133 y(on)o(to)h(a)h(new)h
-(screen)f(line.)22 b(By)15 b(default,)h(this)f(v)m(ariable)i(is)f(set)e(to)h
-Fn(Off)p Fo(.)240 1209 y Fn(mark-modified-lines)480 1271 y
-Fo(This)h(v)m(ariable,)g(when)g(set)f(to)f Fn(On)p Fo(,)h(sa)o(ys)f(to)g
-(displa)o(y)j(an)e(asterisk)g(\(`)p Fn(*)p Fo('\))e(at)i(the)g(start)480
-1333 y(of)f(history)h(lines)i(whic)o(h)e(ha)o(v)o(e)g(b)q(een)h(mo)q
-(di\014ed.)21 b(This)15 b(v)m(ariable)h(is)g Fn(off)e Fo(b)o(y)h(default.)240
-1409 y Fn(bell-style)480 1471 y Fo(Con)o(trols)h(what)f(happ)q(ens)j(when)f
-(Readline)h(w)o(an)o(ts)e(to)f(ring)i(the)f(terminal)h(b)q(ell.)26
-b(If)480 1533 y(set)13 b(to)g Fn(none)p Fo(,)g(Readline)j(nev)o(er)e(rings)g
-(the)g(b)q(ell.)21 b(If)14 b(set)f(to)g Fn(visible)p Fo(,)g(Readline)j(uses)
-480 1596 y(a)g(visible)j(b)q(ell)g(if)e(one)g(is)g(a)o(v)m(ailable.)27
-b(If)17 b(set)f(to)g Fn(audible)g Fo(\(the)h(default\),)g(Readline)480
-1658 y(attempts)d(to)h(ring)g(the)h(terminal's)f(b)q(ell.)240
-1733 y Fn(comment-begin)480 1796 y Fo(The)21 b(string)h(to)e(insert)i(at)e
-(the)h(b)q(eginning)j(of)c(the)i(line)g(when)g(the)f Fn(vi-comment)480
-1858 y Fo(command)15 b(is)h(executed.)21 b(The)15 b(default)h(v)m(alue)g(is)g
-Fn("#")p Fo(.)240 1934 y Fn(meta-flag)480 1996 y Fo(If)d(set)g(to)f
-Fn(on)p Fo(,)g(Readline)j(will)g(enable)f(eigh)o(t-bit)f(input)h(\(it)f(will)
-h(not)f(strip)g(the)g(eigh)o(th)480 2058 y(bit)i(from)g(the)g(c)o(haracters)f
-(it)h(reads\),)f(regardless)h(of)g(what)f(the)h(terminal)h(claims)g(it)480
-2120 y(can)f(supp)q(ort.)20 b(The)c(default)g(v)m(alue)g(is)g
-Fn(off)p Fo(.)240 2196 y Fn(convert-meta)480 2258 y Fo(If)23
-b(set)f(to)f Fn(on)p Fo(,)j(Readline)h(will)f(con)o(v)o(ert)d(c)o(haracters)h
-(with)g(the)h(eigth)g(bit)f(set)h(to)480 2320 y(an)17 b(ASCI)q(I)g(k)o(ey)g
-(sequence)h(b)o(y)e(stripping)i(the)f(eigth)g(bit)g(and)g(prep)q(ending)i(an)
-d Fn(ESC)480 2383 y Fo(c)o(haracter,)h(con)o(v)o(erting)g(them)g(to)f(a)h
+1714 y Fq(M-D)168 b Fr(Kill)17 b(from)d(the)h(cursor)g(to)f(the)h(end)g
+(of)g(the)g(curren)o(t)f(w)o(ord,)g(or)g(if)i(b)q(et)o(w)o(een)f(w)o
+(ords,)f(to)g(the)h(end)g(of)240 1776 y(the)g(next)h(w)o(ord.)0
+1880 y Fq(M-DEL)120 b Fr(Kill)16 b(from)d(the)i(cursor)e(the)h(start)f
+(of)h(the)g(previous)h(w)o(ord,)e(or)g(if)i(b)q(et)o(w)o(een)f(w)o
+(ords,)f(to)h(the)g(start)e(of)240 1942 y(the)j(previous)h(w)o(ord.)0
+2046 y Fq(C-W)168 b Fr(Kill)18 b(from)e(the)g(cursor)g(to)f(the)h
+(previous)h(whitespace.)24 b(This)17 b(is)f(di\013eren)o(t)h(than)f
+Fq(M-DEL)f Fr(b)q(ecause)240 2109 y(the)g(w)o(ord)g(b)q(oundaries)h
+(di\013er.)62 2275 y(And,)e(here)g(is)h(ho)o(w)e(to)g
+Fl(y)o(ank)j Fr(the)e(text)f(bac)o(k)g(in)o(to)h(the)f(line.)22
+b(Y)l(anking)14 b(means)g(to)f(cop)o(y)g(the)h(most-recen)o(tly-)0
+2337 y(killed)j(text)e(from)g(the)g(kill)i(bu\013er.)0
+2504 y Fq(C-Y)168 b Fr(Y)l(ank)15 b(the)h(most)e(recen)o(tly)i(killed)h
+(text)e(bac)o(k)g(in)o(to)g(the)h(bu\013er)f(at)f(the)i(cursor.)0
+2608 y Fq(M-Y)168 b Fr(Rotate)13 b(the)h(kill-ring,)i(and)e(y)o(ank)g
+(the)g(new)g(top.)19 b(Y)l(ou)14 b(can)g(only)g(do)g(this)g(if)g(the)g
+(prior)g(command)240 2670 y(is)i Fq(C-Y)e Fr(or)h Fq(M-Y)p
+Fr(.)p eop
+4 5 bop 0 -58 a Fr(4)1472 b(GNU)15 b(Readline)i(Library)0
+183 y Fk(1.2.4)30 b(Readline)15 b(Argumen)n(ts)62 345
+y Fr(Y)l(ou)k(can)g(pass)f(n)o(umeric)i(argumen)o(ts)d(to)h(Readline)j
+(commands.)30 b(Sometimes)19 b(the)f(argumen)o(t)g(acts)g(as)g(a)0
+407 y(rep)q(eat)f(coun)o(t,)f(other)g(times)g(it)h(is)g(the)g
+Fl(sign)f Fr(of)g(the)h(argumen)o(t)f(that)f(is)i(signi\014can)o(t.)25
+b(If)16 b(y)o(ou)h(pass)f(a)g(negativ)o(e)0 470 y(argumen)o(t)g(to)g(a)
+h(command)g(whic)o(h)h(normally)f(acts)g(in)h(a)e(forw)o(ard)g
+(direction,)i(that)f(command)f(will)j(act)d(in)i(a)0
+532 y(bac)o(kw)o(ard)13 b(direction.)20 b(F)l(or)13 b(example,)i(to)d
+(kill)k(text)d(bac)o(k)g(to)g(the)h(start)e(of)h(the)h(line,)h(y)o(ou)e
+(migh)o(t)g(t)o(yp)q(e)h Fq(M--)h(C-k)o Fr(.)62 694 y(The)k(general)g
+(w)o(a)o(y)f(to)g(pass)g(n)o(umeric)i(argumen)o(ts)e(to)g(a)g(command)h
+(is)g(to)f(t)o(yp)q(e)g(meta)g(digits)i(b)q(efore)f(the)0
+756 y(command.)36 b(If)21 b(the)g(\014rst)f(`digit')h(y)o(ou)g(t)o(yp)q
+(e)f(is)i(a)e(min)o(us)h(sign)g(\()p Fq(-)p Fr(\),)g(then)g(the)g(sign)
+g(of)g(the)f(argumen)o(t)g(will)0 818 y(b)q(e)i(negativ)o(e.)40
+b(Once)22 b(y)o(ou)f(ha)o(v)o(e)h(t)o(yp)q(ed)g(one)f(meta)g(digit)i
+(to)e(get)g(the)h(argumen)o(t)f(started,)h(y)o(ou)f(can)h(t)o(yp)q(e)0
+881 y(the)c(remainder)h(of)f(the)g(digits,)h(and)f(then)h(the)f
+(command.)29 b(F)l(or)17 b(example,)i(to)f(giv)o(e)g(the)g
+Fq(C-D)g Fr(command)g(an)0 943 y(argumen)o(t)c(of)h(10,)f(y)o(ou)h
+(could)h(t)o(yp)q(e)g(`)p Fq(M-1)e(0)h(C-d)p Fr('.)0
+1375 y Fk(1.2.5)30 b(Searc)n(hing)15 b(for)g(Commands)h(in)f(the)g
+(History)62 1537 y Fr(Readline)j(pro)o(vides)d(commands)g(for)g(searc)o
+(hing)h(through)e(the)i(command)f(history)g(for)g(lines)h(con)o
+(taining)g(a)0 1599 y(sp)q(eci\014ed)h(string.)j(There)c(are)f(t)o(w)o
+(o)e(searc)o(h)i(mo)q(des:)20 b Fl(incremen)o(tal)f Fr(and)c
+Fl(non-incremen)o(tal)p Fr(.)62 1761 y(Incremen)o(tal)i(searc)o(hes)e
+(b)q(egin)i(b)q(efore)f(the)g(user)f(has)h(\014nished)h(t)o(yping)f
+(the)g(searc)o(h)f(string.)21 b(As)15 b(eac)o(h)h(c)o(har-)0
+1823 y(acter)f(of)h(the)g(searc)o(h)f(string)h(is)g(t)o(yp)q(ed,)g
+(readline)h(displa)o(ys)g(the)f(next)g(en)o(try)f(from)g(the)h(history)
+g(matc)o(hing)g(the)0 1885 y(string)g(t)o(yp)q(ed)g(so)f(far.)20
+b(An)c(incremen)o(tal)h(searc)o(h)e(requires)i(only)f(as)f(man)o(y)g(c)
+o(haracters)g(as)h(needed)h(to)e(\014nd)h(the)0 1948
+y(desired)g(history)f(en)o(try)l(.)20 b(The)15 b(Escap)q(e)h(c)o
+(haracter)e(is)h(used)h(to)e(terminate)h(an)g(incremen)o(tal)h(searc)o
+(h.)k(Con)o(trol-J)0 2010 y(will)c(also)f(terminate)g(the)g(searc)o(h.)
+k(Con)o(trol-G)14 b(will)j(ab)q(ort)d(an)h(incremen)o(tal)g(searc)o(h)g
+(and)g(restore)f(the)h(original)0 2072 y(line.)30 b(When)18
+b(the)h(searc)o(h)e(is)i(terminated,)g(the)f(history)g(en)o(try)f(con)o
+(taining)i(the)f(searc)o(h)g(string)g(b)q(ecomes)h(the)0
+2134 y(curren)o(t)g(line.)35 b(T)l(o)20 b(\014nd)g(other)f(matc)o(hing)
+h(en)o(tries)g(in)g(the)g(history)g(list,)h(t)o(yp)q(e)e(Con)o(trol-S)h
+(or)f(Con)o(trol-R)g(as)0 2197 y(appropriate.)k(This)17
+b(will)h(searc)o(h)e(bac)o(kw)o(ard)g(or)f(forw)o(ard)g(in)j(the)e
+(history)g(for)g(the)g(next)h(en)o(try)f(matc)o(hing)g(the)0
+2259 y(searc)o(h)c(string)h(t)o(yp)q(ed)f(so)g(far.)19
+b(An)o(y)12 b(other)g(k)o(ey)g(sequence)i(b)q(ound)f(to)f(a)g(readline)
+i(command)e(will)i(terminate)f(the)0 2321 y(searc)o(h)j(and)h(execute)g
+(that)f(command.)24 b(F)l(or)16 b(instance,)h(a)g Fq(newline)e
+Fr(will)j(terminate)f(the)g(searc)o(h)f(and)h(accept)0
+2384 y(the)e(line,)i(thereb)o(y)e(executing)h(the)g(command)f(from)f
+(the)h(history)h(list.)62 2545 y(Non-incremen)o(tal)k(searc)o(hes)f
+(read)f(the)h(en)o(tire)g(searc)o(h)g(string)f(b)q(efore)h(starting)f
+(to)g(searc)o(h)h(for)f(matc)o(hing)0 2608 y(history)g(lines.)29
+b(The)18 b(searc)o(h)g(string)g(ma)o(y)f(b)q(e)h(t)o(yp)q(ed)g(b)o(y)g
+(the)g(user)g(or)f(part)g(of)h(the)g(con)o(ten)o(ts)f(of)g(the)h
+(curren)o(t)0 2670 y(line.)p eop
+5 6 bop 0 -58 a Fr(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1227
+b(5)0 183 y Fp(1.3)33 b(Readline)16 b(Init)g(File)62
+324 y Fr(Although)h(the)f(Readline)j(library)e(comes)f(with)g(a)g(set)g
+(of)g Fq(emacs)p Fr(-lik)o(e)h(k)o(eybindings)h(installed)g(b)o(y)e
+(default,)0 387 y(it)e(is)g(p)q(ossible)i(that)d(y)o(ou)g(w)o(ould)h
+(lik)o(e)h(to)e(use)h(a)f(di\013eren)o(t)h(set)g(of)f(k)o(eybindings.)
+21 b(Y)l(ou)14 b(can)g(customize)g(programs)0 449 y(that)j(use)h
+(Readline)i(b)o(y)e(putting)h(commands)e(in)i(an)f Fl(inputrc)j
+Fr(\014le)e(in)g(y)o(our)e(home)h(directory)l(.)28 b(The)19
+b(name)e(of)0 511 y(this)e(\014le)h(is)g(tak)o(en)e(from)h(the)g(v)m
+(alue)h(of)e(the)h(en)o(vironmen)o(t)h(v)m(ariable)g
+Fq(INPUTRC)p Fr(.)j(If)c(that)f(v)m(ariable)j(is)e(unset,)g(the)0
+573 y(default)h(is)f(`)p Fq(~/.inputrc)p Fr('.)62 714
+y(When)k(a)g(program)e(whic)o(h)j(uses)f(the)g(Readline)i(library)e
+(starts)f(up,)h(the)g(init)h(\014le)g(is)f(read,)g(and)g(the)g(k)o(ey)0
+777 y(bindings)e(are)e(set.)62 918 y(In)j(addition,)h(the)f
+Fq(C-x)c(C-r)k Fr(command)f(re-reads)g(this)h(init)h(\014le,)g(th)o(us)
+e(incorp)q(orating)h(an)o(y)f(c)o(hanges)h(that)0 980
+y(y)o(ou)d(migh)o(t)g(ha)o(v)o(e)g(made)g(to)f(it.)0
+1224 y Fk(1.3.1)30 b(Readline)15 b(Init)g(File)g(Syn)n(tax)62
+1365 y Fr(There)h(are)f(only)h(a)f(few)g(basic)h(constructs)f(allo)o(w)
+o(ed)h(in)g(the)g(Readline)i(init)e(\014le.)22 b(Blank)16
+b(lines)h(are)e(ignored.)0 1427 y(Lines)f(b)q(eginning)h(with)e(a)f(`)p
+Fq(#)p Fr(')g(are)g(commen)o(ts.)19 b(Lines)14 b(b)q(eginning)h(with)e
+(a)f(`)p Fq($)p Fr(')g(indicate)i(conditional)g(constructs)0
+1490 y(\(see)i(Section)h(1.3.2)e([Conditional)i(Init)g(Constructs],)e
+(page)i(8\).)22 b(Other)16 b(lines)i(denote)f(v)m(ariable)h(settings)e
+(and)0 1552 y(k)o(ey)f(bindings.)0 1710 y(V)l(ariable)h(Settings)240
+1772 y(Y)l(ou)j(can)g(c)o(hange)g(the)g(state)f(of)g(a)g(few)h(v)m
+(ariables)h(in)g(Readline)h(b)o(y)d(using)i(the)f Fq(set)f
+Fr(command)240 1834 y(within)e(the)f(init)h(\014le.)k(Here)15
+b(is)g(ho)o(w)g(y)o(ou)f(w)o(ould)h(sp)q(ecify)h(that)e(y)o(ou)g(wish)i
+(to)e(use)h Fq(vi)f Fr(line)j(editing)240 1896 y(commands:)360
+1965 y Fq(set)23 b(editing-mode)g(vi)240 2044 y Fr(Righ)o(t)14
+b(no)o(w,)f(there)h(are)f(only)h(a)f(few)h(v)m(ariables)g(whic)o(h)h
+(can)f(b)q(e)g(set;)f(so)g(few,)h(in)g(fact,)f(that)g(w)o(e)g(just)240
+2106 y(list)j(them)f(here:)240 2201 y Fq(bell-style)480
+2263 y Fr(Con)o(trols)h(what)f(happ)q(ens)j(when)f(Readline)h(w)o(an)o
+(ts)e(to)f(ring)i(the)f(terminal)h(b)q(ell.)26 b(If)480
+2326 y(set)17 b(to)f(`)p Fq(none)p Fr(',)g(Readline)j(nev)o(er)f(rings)
+f(the)g(b)q(ell.)28 b(If)17 b(set)g(to)f(`)p Fq(visible)p
+Fr(',)g(Readline)480 2388 y(uses)21 b(a)g(visible)j(b)q(ell)f(if)e(one)
+h(is)f(a)o(v)m(ailable.)40 b(If)21 b(set)g(to)g(`)p Fq(audible)p
+Fr(')e(\(the)i(default\),)480 2450 y(Readline)d(attempts)c(to)g(ring)i
+(the)f(terminal's)h(b)q(ell.)240 2545 y Fq(comment-begin)480
+2608 y Fr(The)d(string)h(to)e(insert)i(at)e(the)i(b)q(eginning)h(of)e
+(the)g(line)i(when)f(the)f Fq(insert-comment)480 2670
+y Fr(command)i(is)h(executed.)21 b(The)15 b(default)h(v)m(alue)g(is)g
+Fq("#")p Fr(.)p eop
+6 7 bop 0 -58 a Fr(6)1472 b(GNU)15 b(Readline)i(Library)240
+183 y Fq(completion-query-items)480 246 y Fr(The)12 b(n)o(um)o(b)q(er)g
+(of)f(p)q(ossible)j(completions)e(that)f(determines)i(when)f(the)g
+(user)g(is)g(ask)o(ed)480 308 y(whether)k(he)h(w)o(an)o(ts)d(to)i(see)g
+(the)g(list)h(of)e(p)q(ossibiliti)q(es.)25 b(If)16 b(the)g(n)o(um)o(b)q
+(er)h(of)e(p)q(ossible)480 370 y(completions)i(is)f(greater)f(than)h
+(this)h(v)m(alue,)f(Readline)j(will)e(ask)f(the)g(user)g(whether)480
+432 y(or)k(not)h(he)h(wishes)f(to)g(view)g(them;)j(otherwise,)e(they)f
+(are)g(simply)h(listed.)39 b(The)480 495 y(default)16
+b(limit)g(is)g Fq(100)p Fr(.)240 592 y Fq(convert-meta)480
+654 y Fr(If)21 b(set)f(to)g(`)p Fq(on)p Fr(',)g(Readline)j(will)f(con)o
+(v)o(ert)e(c)o(haracters)f(with)i(the)g(eigth)f(bit)h(set)g(to)480
+716 y(an)c(ASCI)q(I)g(k)o(ey)g(sequence)h(b)o(y)e(stripping)i(the)f
+(eigth)g(bit)g(and)g(prep)q(ending)i(an)d Fq(ESC)480
+779 y Fr(c)o(haracter,)h(con)o(v)o(erting)g(them)g(to)f(a)h
(meta-pre\014xed)h(k)o(ey)f(sequence.)27 b(The)17 b(default)480
-2445 y(v)m(alue)f(is)g Fn(on)p Fo(.)240 2521 y Fn(output-meta)480
-2583 y Fo(If)d(set)f(to)g Fn(on)p Fo(,)h(Readline)i(will)f(displa)o(y)g(c)o
-(haracters)d(with)i(the)g(eigh)o(th)g(bit)g(set)g(directly)480
-2645 y(rather)i(than)g(as)f(a)h(meta-pre\014xed)h(escap)q(e)g(sequence.)21
-b(The)16 b(default)f(is)h Fn(off)p Fo(.)p eop
-%%Page: 6 8
-7 bop 0 -83 a Fo(6)1472 b(GNU)15 b(Readline)i(Library)240 158
-y Fn(completion-query-items)480 221 y Fo(The)12 b(n)o(um)o(b)q(er)g(of)f(p)q
-(ossible)j(completions)e(that)f(determines)i(when)f(the)g(user)g(is)g(ask)o
-(ed)480 283 y(whether)k(he)h(w)o(an)o(ts)d(to)i(see)g(the)g(list)h(of)e(p)q
-(ossibiliti)q(es.)25 b(If)16 b(the)g(n)o(um)o(b)q(er)h(of)e(p)q(ossible)480
-345 y(completions)i(is)f(greater)f(than)h(this)h(v)m(alue,)f(Readline)j(will)
-e(ask)f(the)g(user)g(whether)480 407 y(or)k(not)h(he)h(wishes)f(to)g(view)g
-(them;)j(otherwise,)e(they)f(are)g(simply)h(listed.)39 b(The)480
-470 y(default)16 b(limit)g(is)g Fn(100)p Fo(.)240 564 y Fn(keymap)96
-b Fo(Sets)13 b(Readline's)i(idea)e(of)g(the)g(curren)o(t)f(k)o(eymap)h(for)f
-(k)o(ey)h(binding)i(commands.)k(Ac-)480 626 y(ceptable)d Fn(keymap)e
-Fo(names)h(are)g Fn(emacs)p Fo(,)f Fn(emacs-standard)p Fo(,)f
-Fn(emacs-meta)p Fo(,)g Fn(emacs-)480 688 y(ctlx)p Fo(,)j Fn(vi)p
-Fo(,)h Fn(vi-move)p Fo(,)f Fn(vi-command)p Fo(,)g(and)h Fn(vi-insert)p
-Fo(.)23 b Fn(vi)17 b Fo(is)g(equiv)m(alen)o(t)i(to)d Fn(vi-)480
-750 y(command)p Fo(;)22 b Fn(emacs)e Fo(is)h(equiv)m(alen)o(t)h(to)e
-Fn(emacs-standard)p Fo(.)35 b(The)20 b(default)i(v)m(alue)f(is)480
-813 y Fn(emacs)p Fo(.)33 b(The)21 b(v)m(alue)g(of)e(the)i Fn(editing-mode)d
-Fo(v)m(ariable)j(also)f(a\013ects)f(the)h(default)480 875 y(k)o(eymap.)240
-953 y Fn(show-all-if-ambiguous)480 1015 y Fo(This)d(alters)f(the)h(default)g
-(b)q(eha)o(vior)g(of)f(the)g(completion)i(functions.)24 b(If)17
-b(set)f(to)g Fn(on)p Fo(,)480 1077 y(w)o(ords)d(whic)o(h)h(ha)o(v)o(e)f(more)
-h(than)f(one)h(p)q(ossible)h(completion)g(cause)f(the)f(matc)o(hes)h(to)480
-1140 y(b)q(e)h(listed)g(immediately)h(instead)f(of)f(ringing)h(the)f(b)q
-(ell.)22 b(The)14 b(default)h(v)m(alue)g(is)g Fn(off)p Fo(.)240
-1218 y Fn(expand-tilde)480 1280 y Fo(If)20 b(set)f(to)g Fn(on)p
-Fo(,)h(tilde)h(expansion)f(is)g(p)q(erformed)g(when)g(Readline)i(attempts)d
-(w)o(ord)480 1342 y(completion.)i(The)15 b(default)h(is)g Fn(off)p
-Fo(.)0 1420 y(Key)g(Bindings)240 1483 y(The)k(syn)o(tax)f(for)g(con)o
-(trolling)i(k)o(ey)e(bindings)j(in)e(the)g(init)h(\014le)g(is)f(simple.)35
-b(First)19 b(y)o(ou)g(ha)o(v)o(e)h(to)240 1545 y(kno)o(w)13
-b(the)h(name)g(of)f(the)h(command)g(that)f(y)o(ou)g(w)o(an)o(t)g(to)g(c)o
-(hange.)20 b(The)14 b(follo)o(wing)g(pages)g(con)o(tain)240
-1607 y(tables)i(of)f(the)h(command)g(name,)f(the)h(default)g(k)o(eybinding,)i
-(and)e(a)f(short)g(description)i(of)f(what)240 1669 y(the)f(command)g(do)q
-(es.)240 1748 y(Once)h(y)o(ou)e(kno)o(w)g(the)h(name)g(of)f(the)h(command,)f
-(simply)i(place)g(the)f(name)f(of)h(the)f(k)o(ey)h(y)o(ou)f(wish)240
-1810 y(to)g(bind)j(the)e(command)g(to,)f(a)g(colon,)i(and)f(then)g(the)g
-(name)g(of)g(the)g(command)g(on)g(a)f(line)j(in)f(the)240 1872
-y(init)h(\014le.)22 b(The)16 b(name)g(of)f(the)h(k)o(ey)f(can)h(b)q(e)g
-(expressed)h(in)f(di\013eren)o(t)g(w)o(a)o(ys,)f(dep)q(ending)i(on)f(whic)o
-(h)240 1934 y(is)g(most)e(comfortable)h(for)g(y)o(ou.)240 2012
-y Fj(k)o(eyname)s Fo(:)k Fj(function-name)g Fo(or)c Fj(macro)480
-2075 y(k)o(eyname)j Fo(is)d(the)h(name)f(of)g(a)g(k)o(ey)g(sp)q(elled)i(out)e
-(in)h(English.)21 b(F)l(or)15 b(example:)600 2140 y Fn(Control-u:)22
-b(universal-argument)600 2190 y(Meta-Rubout:)g(backward-kill-word)600
-2240 y(Control-o:)g(">&output")480 2318 y Fo(In)12 b(the)g(ab)q(o)o(v)o(e)f
-(example,)h(`)p Fn(C-u)p Fo(')f(is)h(b)q(ound)g(to)f(the)h(function)g
-Fn(universal-argument)p Fo(,)480 2380 y(and)h(`)p Fn(C-o)p
-Fo(')f(is)h(b)q(ound)h(to)f(run)g(the)g(macro)f(expressed)i(on)f(the)g(righ)o
-(t)g(hand)g(side)h(\(that)480 2442 y(is,)h(to)g(insert)h(the)f(text)g(`)p
-Fn(>&output)p Fo(')e(in)o(to)i(the)g(line\).)240 2521 y Fn(")p
-Fj(k)o(eyseq)q Fn(")p Fo(:)20 b Fj(function-name)e Fo(or)d
-Fj(macro)480 2583 y(k)o(eyseq)j Fo(di\013ers)f(from)f Fj(k)o(eyname)k
-Fo(ab)q(o)o(v)o(e)c(in)i(that)e(strings)h(denoting)h(an)f(en)o(tire)g(k)o(ey)
-480 2645 y(sequence)i(can)f(b)q(e)h(sp)q(eci\014ed,)i(b)o(y)d(placing)h(the)f
-(k)o(ey)g(sequence)h(in)g(double)h(quotes.)p eop
-%%Page: 7 9
-8 bop 0 -83 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1227
-b(7)480 158 y(Some)18 b(GNU)g(Emacs)f(st)o(yle)h(k)o(ey)g(escap)q(es)g(can)g
-(b)q(e)h(used,)g(as)e(in)i(the)f(follo)o(wing)h(ex-)480 221
-y(ample,)c(but)h(the)f(sp)q(ecial)i(c)o(haracter)e(names)g(are)g(not)f
-(recognized.)600 283 y Fn("\\C-u":)23 b(universal-argument)600
-333 y("\\C-x\\C-r":)f(re-read-init-file)600 383 y("\\e[11~":)h("Function)f
-(Key)i(1")480 457 y Fo(In)13 b(the)g(ab)q(o)o(v)o(e)g(example,)g(`)p
-Fn(C-u)p Fo(')f(is)h(b)q(ound)h(to)e(the)h(function)g Fn(universal-argument)
-480 519 y Fo(\(just)g(as)f(it)i(w)o(as)e(in)i(the)f(\014rst)g(example\),)h(`)
-p Fn(C-x)g(C-r)p Fo(')f(is)g(b)q(ound)i(to)d(the)h(function)h
-Fn(re-)480 582 y(read-init-file)p Fo(,)g(and)i(`)p Fn(ESC)e([)h(1)g(1)g(~)p
-Fo(')h(is)g(b)q(ound)h(to)f(insert)g(the)g(text)f(`)p Fn(Function)480
-644 y(Key)g(1)p Fo('.)24 b(The)18 b(follo)o(wing)f(escap)q(e)h(sequences)g
-(are)f(a)o(v)m(ailable)i(when)e(sp)q(ecifying)i(k)o(ey)480
-706 y(sequences:)480 793 y Fn(\\C-)168 b Fo(con)o(trol)15 b(pre\014x)480
-881 y Fn(\\M-)168 b Fo(meta)15 b(pre\014x)480 968 y Fn(\\e)192
-b Fo(an)15 b(escap)q(e)h(c)o(haracter)480 1055 y Fn(\\\\)192
-b Fo(bac)o(kslash)480 1142 y Fn(\\")g(")480 1229 y(\\')g(')480
-1317 y Fo(When)14 b(en)o(tering)h(the)f(text)f(of)h(a)f(macro,)g(single)j(or)
-d(double)i(quotes)f(should)h(b)q(e)f(used)480 1379 y(to)g(indicate)j(a)e
-(macro)f(de\014nition.)22 b(Unquoted)15 b(text)g(is)g(assumed)g(to)g(b)q(e)g
-(a)g(function)480 1441 y(name.)27 b(Bac)o(kslash)18 b(will)h(quote)e(an)o(y)g
-(c)o(haracter)g(in)h(the)g(macro)f(text,)g(including)j Fn(")480
-1503 y Fo(and)c Fn(')p Fo(.)22 b(F)l(or)16 b(example,)h(the)f(follo)o(wing)h
-(binding)h(will)f(mak)o(e)f Fn(C-x)f(\\)g Fo(insert)i(a)f(single)480
-1566 y Fn(\\)f Fo(in)o(to)g(the)g(line:)600 1628 y Fn("\\C-x\\\\":)23
-b("\\\\")0 1836 y Fi(1.3.2)30 b(Conditional)15 b(Init)g(Constructs)62
-1973 y Fo(Readline)j(implemen)o(ts)e(a)f(facilit)o(y)h(similar)g(in)g(spirit)
-g(to)f(the)g(conditional)i(compilation)f(features)f(of)g(the)g(C)0
-2035 y(prepro)q(cessor)f(whic)o(h)h(allo)o(ws)f(k)o(ey)g(bindings)h(and)f(v)m
-(ariable)i(settings)e(to)f(b)q(e)h(p)q(erformed)h(as)e(the)h(result)g(of)g
-(tests.)0 2097 y(There)h(are)g(three)h(parser)e(directiv)o(es)j(used.)0
-2247 y Fn($if)168 b Fo(The)14 b Fn($if)e Fo(construct)h(allo)o(ws)h(bindings)
-h(to)e(b)q(e)h(made)f(based)h(on)f(the)h(editing)g(mo)q(de,)g(the)f(terminal)
-240 2309 y(b)q(eing)k(used,)e(or)g(the)g(application)i(using)f(Readline.)22
-b(The)16 b(text)f(of)g(the)g(test)g(extends)g(to)g(the)g(end)240
-2371 y(of)g(the)g(line;)i(no)e(c)o(haracters)f(are)h(required)h(to)f(isolate)
-g(it.)240 2458 y Fn(mode)144 b Fo(The)19 b Fn(mode=)f Fo(form)g(of)h(the)g
-Fn($if)f Fo(directiv)o(e)i(is)f(used)h(to)e(test)g(whether)h(Readline)i(is)
-480 2521 y(in)h Fn(emacs)f Fo(or)f Fn(vi)h Fo(mo)q(de.)38 b(This)22
-b(ma)o(y)f(b)q(e)h(used)g(in)g(conjunction)g(with)f(the)h(`)p
-Fn(set)480 2583 y(keymap)p Fo(')d(command,)i(for)e(instance,)j(to)d(set)h
-(bindings)i(in)f(the)f Fn(emacs-standard)480 2645 y Fo(and)15
-b Fn(emacs-ctlx)f Fo(k)o(eymaps)h(only)h(if)f(Readline)j(is)e(starting)e(out)
-h(in)h Fn(emacs)f Fo(mo)q(de.)p eop
-%%Page: 8 10
-9 bop 0 -83 a Fo(8)1472 b(GNU)15 b(Readline)i(Library)240 158
-y Fn(term)144 b Fo(The)21 b Fn(term=)f Fo(form)g(ma)o(y)h(b)q(e)g(used)h(to)e
+841 y(v)m(alue)f(is)g(`)p Fq(on)p Fr('.)240 938 y Fq
+(disable-completion)480 1000 y Fr(If)e(set)f(to)g(`)p
+Fq(On)p Fr(',)f(readline)j(will)h(inhibit)f(w)o(ord)e(completion.)20
+b(Completion)15 b(c)o(haracters)480 1063 y(will)h(b)q(e)g(inserted)g
+(in)o(to)e(the)h(line)i(as)d(if)h(they)g(had)g(b)q(een)h(mapp)q(ed)g
+(to)e Fq(self-insert)p Fr(.)480 1125 y(The)h(default)h(is)g(`)p
+Fq(off)p Fr('.)240 1222 y Fq(editing-mode)480 1285 y
+Fr(The)d Fq(editing-mode)e Fr(v)m(ariable)j(con)o(trols)e(whic)o(h)h
+(editing)h(mo)q(de)f(y)o(ou)f(are)g(using.)20 b(By)480
+1347 y(default,)f(Readline)h(starts)c(up)i(in)h(Emacs)e(editing)i(mo)q
+(de,)f(where)g(the)g(k)o(eystrok)o(es)480 1409 y(are)g(most)f(similar)i
+(to)e(Emacs.)27 b(This)19 b(v)m(ariable)g(can)f(b)q(e)h(set)e(to)g
+(either)i(`)p Fq(emacs)p Fr(')d(or)480 1471 y(`)p Fq(vi)p
+Fr('.)240 1569 y Fq(enable-keypad)480 1631 y Fr(When)g(set)g(to)f(`)p
+Fq(on)p Fr(',)g(readline)j(will)f(try)e(to)h(enable)h(the)f
+(application)h(k)o(eypad)f(when)480 1693 y(it)f(is)g(called.)22
+b(Some)15 b(systems)f(need)i(this)f(to)f(enable)i(the)f(arro)o(w)f(k)o
+(eys.)19 b(The)c(default)480 1755 y(is)h(`)p Fq(off)p
+Fr('.)240 1853 y Fq(expand-tilde)480 1915 y Fr(If)i(set)f(to)f(`)p
+Fq(on)p Fr(',)h(tilde)h(expansion)h(is)e(p)q(erformed)h(when)g
+(Readline)h(attempts)e(w)o(ord)480 1977 y(completion.)k(The)15
+b(default)h(is)g(`)p Fq(off)p Fr('.)240 2075 y Fq
+(horizontal-scroll-mode)480 2137 y Fr(This)j(v)m(ariable)h(can)e(b)q(e)
+i(set)e(to)g(either)h(`)p Fq(on)p Fr(')e(or)h(`)p Fq(off)p
+Fr('.)28 b(Setting)19 b(it)g(to)f(`)p Fq(on)p Fr(')f(means)480
+2199 y(that)f(the)h(text)f(of)h(the)f(lines)j(that)d(y)o(ou)g(edit)i
+(will)g(scroll)g(horizon)o(tally)f(on)g(a)g(single)480
+2261 y(screen)h(line)h(when)f(they)f(are)g(longer)h(than)f(the)g(width)
+h(of)f(the)g(screen,)h(instead)g(of)480 2324 y(wrapping)e(on)o(to)e(a)h
+(new)g(screen)h(line.)21 b(By)16 b(default,)f(this)h(v)m(ariable)g(is)g
+(set)f(to)g(`)p Fq(off)p Fr('.)240 2421 y Fq(keymap)96
+b Fr(Sets)13 b(Readline's)i(idea)e(of)g(the)g(curren)o(t)f(k)o(eymap)h
+(for)f(k)o(ey)h(binding)i(commands.)k(Ac-)480 2483 y(ceptable)d
+Fq(keymap)e Fr(names)h(are)g Fq(emacs)p Fr(,)f Fq(emacs-standard)p
+Fr(,)f Fq(emacs-meta)p Fr(,)g Fq(emacs-)480 2545 y(ctlx)p
+Fr(,)18 b Fq(vi)p Fr(,)h Fq(vi-command)p Fr(,)e(and)i
+Fq(vi-insert)p Fr(.)28 b Fq(vi)18 b Fr(is)h(equiv)m(alen)o(t)h(to)e
+Fq(vi-command)p Fr(;)480 2608 y Fq(emacs)d Fr(is)i(equiv)m(alen)o(t)h
+(to)d Fq(emacs-standard)p Fr(.)20 b(The)d(default)f(v)m(alue)i(is)e
+Fq(emacs)p Fr(.)22 b(The)480 2670 y(v)m(alue)16 b(of)f(the)g
+Fq(editing-mode)f Fr(v)m(ariable)j(also)e(a\013ects)f(the)h(default)h
+(k)o(eymap.)p eop
+7 8 bop 0 -58 a Fr(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1227
+b(7)240 183 y Fq(mark-directories)480 246 y Fr(If)22
+b(set)g(to)g(`)p Fq(on)p Fr(',)g(completed)h(directory)f(names)h(ha)o
+(v)o(e)e(a)h(slash)h(app)q(ended.)42 b(The)480 308 y(default)16
+b(is)f(`)p Fq(on)p Fr('.)240 388 y Fq(mark-modified-lines)480
+450 y Fr(This)f(v)m(ariable,)h(when)e(set)g(to)g(`)p
+Fq(on)p Fr(',)f(sa)o(ys)h(to)g(displa)o(y)h(an)f(asterisk)g(\(`)p
+Fq(*)p Fr('\))f(at)h(the)g(start)480 512 y(of)f(history)h(lines)h(whic)
+o(h)f(ha)o(v)o(e)f(b)q(een)i(mo)q(di\014ed.)21 b(This)13
+b(v)m(ariable)h(is)f(`)p Fq(off)p Fr(')e(b)o(y)i(default.)240
+593 y Fq(input-meta)480 655 y Fr(If)21 b(set)g(to)g(`)p
+Fq(on)p Fr(',)g(Readline)i(will)g(enable)g(eigh)o(t-bit)f(input)g(\(it)
+f(will)i(not)d(strip)i(the)480 717 y(eigh)o(th)e(bit)f(from)f(the)i(c)o
+(haracters)e(it)h(reads\),)h(regardless)f(of)f(what)h(the)g(terminal)
+480 779 y(claims)d(it)g(can)f(supp)q(ort.)21 b(The)15
+b(default)h(v)m(alue)h(is)e(`)p Fq(off)p Fr('.)20 b(The)15
+b(name)g Fq(meta-flag)f Fr(is)480 842 y(a)h(synon)o(ym)g(for)f(this)i
+(v)m(ariable.)240 922 y Fq(output-meta)480 984 y Fr(If)11
+b(set)f(to)g(`)p Fq(on)p Fr(',)g(Readline)j(will)g(displa)o(y)e(c)o
+(haracters)f(with)h(the)g(eigh)o(th)g(bit)g(set)g(directly)480
+1046 y(rather)k(than)g(as)f(a)h(meta-pre\014xed)h(escap)q(e)g
+(sequence.)21 b(The)16 b(default)f(is)h(`)p Fq(off)p
+Fr('.)240 1126 y Fq(show-all-if-ambiguous)480 1189 y
+Fr(This)f(alters)f(the)h(default)g(b)q(eha)o(vior)g(of)f(the)h
+(completion)g(functions.)21 b(If)14 b(set)h(to)e(`)p
+Fq(on)p Fr(',)480 1251 y(w)o(ords)18 b(whic)o(h)i(ha)o(v)o(e)f(more)f
+(than)h(one)g(p)q(ossible)i(completion)f(cause)f(the)g(matc)o(hes)480
+1313 y(to)e(b)q(e)h(listed)h(immediately)g(instead)f(of)f(ringing)i
+(the)e(b)q(ell.)29 b(The)18 b(default)g(v)m(alue)g(is)480
+1375 y(`)p Fq(off)p Fr('.)240 1456 y Fq(visible-stats)480
+1518 y Fr(If)c(set)g(to)f(`)p Fq(on)p Fr(',)f(a)i(c)o(haracter)f
+(denoting)h(a)g(\014le's)g(t)o(yp)q(e)g(is)g(app)q(ended)i(to)d(the)h
+(\014lename)480 1580 y(when)i(listing)g(p)q(ossible)h(completions.)k
+(The)16 b(default)f(is)h(`)p Fq(off)p Fr('.)0 1660 y(Key)g(Bindings)240
+1722 y(The)k(syn)o(tax)f(for)g(con)o(trolling)i(k)o(ey)e(bindings)j(in)
+e(the)g(init)h(\014le)g(is)f(simple.)35 b(First)19 b(y)o(ou)g(ha)o(v)o
+(e)h(to)240 1785 y(kno)o(w)13 b(the)h(name)g(of)f(the)h(command)g(that)
+f(y)o(ou)g(w)o(an)o(t)g(to)g(c)o(hange.)20 b(The)14 b(follo)o(wing)g
+(pages)g(con)o(tain)240 1847 y(tables)i(of)f(the)h(command)g(name,)f
+(the)h(default)g(k)o(eybinding,)i(and)e(a)f(short)g(description)i(of)f
+(what)240 1909 y(the)f(command)g(do)q(es.)240 1980 y(Once)h(y)o(ou)e
+(kno)o(w)g(the)h(name)g(of)f(the)h(command,)f(simply)i(place)g(the)f
+(name)f(of)h(the)f(k)o(ey)h(y)o(ou)f(wish)240 2043 y(to)g(bind)j(the)e
+(command)g(to,)f(a)g(colon,)i(and)f(then)g(the)g(name)g(of)g(the)g
+(command)g(on)g(a)f(line)j(in)f(the)240 2105 y(init)h(\014le.)22
+b(The)16 b(name)g(of)f(the)h(k)o(ey)f(can)h(b)q(e)g(expressed)h(in)f
+(di\013eren)o(t)g(w)o(a)o(ys,)f(dep)q(ending)i(on)f(whic)o(h)240
+2167 y(is)g(most)e(comfortable)h(for)g(y)o(ou.)240 2247
+y Fl(k)o(eyname)s Fr(:)k Fl(function-name)g Fr(or)c Fl(macro)480
+2310 y(k)o(eyname)j Fr(is)d(the)h(name)f(of)g(a)g(k)o(ey)g(sp)q(elled)i
+(out)e(in)h(English.)21 b(F)l(or)15 b(example:)600 2370
+y Fq(Control-u:)22 b(universal-argument)600 2422 y(Meta-Rubout:)g
+(backward-kill-word)600 2474 y(Control-o:)g(">)i(output")480
+2545 y Fr(In)12 b(the)g(ab)q(o)o(v)o(e)f(example,)h(`)p
+Fq(C-u)p Fr(')f(is)h(b)q(ound)g(to)f(the)h(function)g
+Fq(universal-argument)p Fr(,)480 2608 y(and)h(`)p Fq(C-o)p
+Fr(')f(is)h(b)q(ound)h(to)f(run)g(the)g(macro)f(expressed)i(on)f(the)g
+(righ)o(t)g(hand)g(side)h(\(that)480 2670 y(is,)h(to)g(insert)h(the)f
+(text)g(`)p Fq(>)f(output)p Fr(')g(in)o(to)h(the)h(line\).)p
+eop
+8 9 bop 0 -58 a Fr(8)1472 b(GNU)15 b(Readline)i(Library)240
+183 y Fq(")p Fl(k)o(eyseq)q Fq(")p Fr(:)j Fl(function-name)e
+Fr(or)d Fl(macro)480 246 y(k)o(eyseq)j Fr(di\013ers)f(from)f
+Fl(k)o(eyname)k Fr(ab)q(o)o(v)o(e)c(in)i(that)e(strings)h(denoting)h
+(an)f(en)o(tire)g(k)o(ey)480 308 y(sequence)i(can)f(b)q(e)h(sp)q
+(eci\014ed,)i(b)o(y)d(placing)h(the)f(k)o(ey)g(sequence)h(in)g(double)h
+(quotes.)480 370 y(Some)e(GNU)g(Emacs)f(st)o(yle)h(k)o(ey)g(escap)q(es)
+g(can)g(b)q(e)h(used,)g(as)e(in)i(the)f(follo)o(wing)h(ex-)480
+432 y(ample,)c(but)h(the)f(sp)q(ecial)i(c)o(haracter)e(names)g(are)g
+(not)f(recognized.)600 499 y Fq("\\C-u":)23 b(universal-argument)600
+551 y("\\C-x\\C-r":)f(re-read-init-file)600 603 y("\\e[11~":)h
+("Function)f(Key)i(1")480 681 y Fr(In)13 b(the)g(ab)q(o)o(v)o(e)g
+(example,)g(`)p Fq(C-u)p Fr(')f(is)h(b)q(ound)h(to)e(the)h(function)g
+Fq(universal-argument)480 743 y Fr(\(just)g(as)f(it)i(w)o(as)e(in)i
+(the)f(\014rst)g(example\),)h(`)p Fq(C-x)g(C-r)p Fr(')f(is)g(b)q(ound)i
+(to)d(the)h(function)h Fq(re-)480 805 y(read-init-file)p
+Fr(,)g(and)i(`)p Fq(ESC)e([)h(1)g(1)g(~)p Fr(')h(is)g(b)q(ound)h(to)f
+(insert)g(the)g(text)f(`)p Fq(Function)480 867 y(Key)g(1)p
+Fr('.)24 b(The)18 b(follo)o(wing)f(escap)q(e)h(sequences)g(are)f(a)o(v)
+m(ailable)i(when)e(sp)q(ecifying)i(k)o(ey)480 930 y(sequences:)480
+1022 y Fq(\\C-)168 b Fr(con)o(trol)15 b(pre\014x)480
+1115 y Fq(\\M-)168 b Fr(meta)15 b(pre\014x)480 1208 y
+Fq(\\e)192 b Fr(an)15 b(escap)q(e)h(c)o(haracter)480
+1300 y Fq(\\\\)192 b Fr(bac)o(kslash)480 1393 y Fq(\\")g(")480
+1485 y(\\')g(')480 1578 y Fr(When)14 b(en)o(tering)h(the)f(text)f(of)h
+(a)f(macro,)g(single)j(or)d(double)i(quotes)f(should)h(b)q(e)f(used)480
+1640 y(to)g(indicate)j(a)e(macro)f(de\014nition.)22 b(Unquoted)15
+b(text)g(is)g(assumed)g(to)g(b)q(e)g(a)g(function)480
+1703 y(name.)21 b(Bac)o(kslash)16 b(will)h(quote)f(an)o(y)f(c)o
+(haracter)g(in)h(the)g(macro)f(text,)g(including)j(`)p
+Fq(")p Fr(')480 1765 y(and)12 b(`)p Fq(')p Fr('.)18 b(F)l(or)11
+b(example,)i(the)f(follo)o(wing)g(binding)i(will)f(mak)o(e)e(`)p
+Fq(C-x)k(\\)p Fr(')c(insert)h(a)g(single)480 1827 y(`)p
+Fq(\\)p Fr(')i(in)o(to)h(the)h(line:)600 1894 y Fq("\\C-x\\\\":)23
+b("\\\\")0 2126 y Fk(1.3.2)30 b(Conditional)15 b(Init)g(Constructs)62
+2266 y Fr(Readline)j(implemen)o(ts)e(a)f(facilit)o(y)h(similar)g(in)g
+(spirit)g(to)f(the)g(conditional)i(compilation)f(features)f(of)g(the)g
+(C)0 2328 y(prepro)q(cessor)f(whic)o(h)h(allo)o(ws)f(k)o(ey)g(bindings)
+h(and)f(v)m(ariable)i(settings)e(to)f(b)q(e)h(p)q(erformed)h(as)e(the)h
+(result)g(of)g(tests.)0 2391 y(There)h(are)g(three)h(parser)e(directiv)
+o(es)j(used.)0 2545 y Fq($if)168 b Fr(The)14 b Fq($if)e
+Fr(construct)h(allo)o(ws)h(bindings)h(to)e(b)q(e)h(made)f(based)h(on)f
+(the)h(editing)g(mo)q(de,)g(the)f(terminal)240 2608 y(b)q(eing)k(used,)
+e(or)g(the)g(application)i(using)f(Readline.)22 b(The)16
+b(text)f(of)g(the)g(test)g(extends)g(to)g(the)g(end)240
+2670 y(of)g(the)g(line;)i(no)e(c)o(haracters)f(are)h(required)h(to)f
+(isolate)g(it.)p eop
+9 10 bop 0 -58 a Fr(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1227
+b(9)240 183 y Fq(mode)144 b Fr(The)19 b Fq(mode=)f Fr(form)g(of)h(the)g
+Fq($if)f Fr(directiv)o(e)i(is)f(used)h(to)e(test)g(whether)h(Readline)i
+(is)480 246 y(in)h Fq(emacs)f Fr(or)f Fq(vi)h Fr(mo)q(de.)38
+b(This)22 b(ma)o(y)f(b)q(e)h(used)g(in)g(conjunction)g(with)f(the)h(`)p
+Fq(set)480 308 y(keymap)p Fr(')d(command,)i(for)e(instance,)j(to)d(set)
+h(bindings)i(in)f(the)f Fq(emacs-standard)480 370 y Fr(and)15
+b Fq(emacs-ctlx)f Fr(k)o(eymaps)h(only)h(if)f(Readline)j(is)e(starting)
+e(out)h(in)h Fq(emacs)f Fr(mo)q(de.)240 457 y Fq(term)144
+b Fr(The)21 b Fq(term=)f Fr(form)g(ma)o(y)h(b)q(e)g(used)h(to)e
(include)j(terminal-sp)q(eci\014c)h(k)o(ey)c(bindings,)480
-221 y(p)q(erhaps)15 b(to)f(bind)j(the)d(k)o(ey)h(sequences)h(output)e(b)o(y)h
-(the)g(terminal's)g(function)h(k)o(eys.)480 283 y(The)f(w)o(ord)g(on)f(the)i
-(righ)o(t)e(side)i(of)f(the)g(`)p Fn(=)p Fo(')f(is)h(tested)g(against)g(the)g
-(full)h(name)f(of)g(the)480 345 y(terminal)k(and)g(the)g(p)q(ortion)g(of)f
-(the)h(terminal)g(name)g(b)q(efore)g(the)g(\014rst)f(`)p Fn(-)p
-Fo('.)29 b(This)480 407 y(allo)o(ws)15 b Fj(sun)h Fo(to)e(matc)o(h)h(b)q(oth)
-g Fj(sun)h Fo(and)f Fj(sun-cmd)p Fo(,)h(for)f(instance.)240
-485 y Fn(application)480 547 y Fo(The)j Fj(application)i Fo(construct)e(is)g
-(used)h(to)e(include)k(application-sp)q(eci\014c)g(settings.)480
-610 y(Eac)o(h)d(program)g(using)h(the)f(Readline)j(library)e(sets)f(the)h
-Fj(application)h(name)p Fo(,)f(and)480 672 y(y)o(ou)c(can)h(test)f(for)g(it.)
-21 b(This)16 b(could)g(b)q(e)h(used)f(to)e(bind)j(k)o(ey)f(sequences)g(to)f
-(functions)480 734 y(useful)h(for)e(a)h(sp)q(eci\014c)i(program.)h(F)l(or)d
-(instance,)g(the)g(follo)o(wing)h(command)e(adds)h(a)480 796
-y(k)o(ey)g(sequence)h(that)f(quotes)g(the)g(curren)o(t)g(or)g(previous)h(w)o
-(ord)e(in)i(Bash:)600 862 y Fn($if)23 b(bash)600 911 y(#)h(Quote)f(the)g
-(current)g(or)h(previous)f(word)600 961 y("\\C-xq":)g("\\eb\\"\\ef\\"")600
-1011 y($endif)0 1104 y($endif)96 b Fo(This)16 b(command,)e(as)h(y)o(ou)g(sa)o
-(w)g(in)h(the)f(previous)h(example,)f(terminates)h(an)f Fn($if)f
-Fo(command.)0 1197 y Fn($else)120 b Fo(Commands)15 b(in)h(this)f(branc)o(h)h
-(of)e(the)i Fn($if)e Fo(directiv)o(e)j(are)e(executed)h(if)g(the)f(test)g
-(fails.)0 1447 y Fm(1.4)33 b(Bindable)16 b(Readline)h(Commands)0
-1681 y Fi(1.4.1)30 b(Commands)15 b(F)-5 b(or)15 b(Mo)n(ving)0
-1821 y Fn(beginning-of-line)e(\(C-a\))240 1883 y Fo(Mo)o(v)o(e)h(to)h(the)g
-(start)f(of)h(the)g(curren)o(t)g(line.)0 1961 y Fn(end-of-line)f(\(C-e\))240
-2023 y Fo(Mo)o(v)o(e)g(to)h(the)g(end)h(of)f(the)g(line.)0
-2101 y Fn(forward-char)f(\(C-f\))240 2163 y Fo(Mo)o(v)o(e)g(forw)o(ard)g(a)h
-(c)o(haracter.)0 2241 y Fn(backward-char)e(\(C-b\))240 2303
-y Fo(Mo)o(v)o(e)h(bac)o(k)h(a)g(c)o(haracter.)0 2381 y Fn(forward-word)f
-(\(M-f\))240 2443 y Fo(Mo)o(v)o(e)g(forw)o(ard)g(to)h(the)g(end)h(of)f(the)g
-(next)g(w)o(ord.)k(W)l(ords)c(are)g(comp)q(osed)h(of)e(letters)i(and)f
-(digits.)0 2521 y Fn(backward-word)e(\(M-b\))240 2583 y Fo(Mo)o(v)o(e)j(bac)o
-(k)g(to)g(the)h(start)f(of)g(this,)h(or)g(the)f(previous,)i(w)o(ord.)24
-b(W)l(ords)16 b(are)g(comp)q(osed)i(of)e(letters)240 2645 y(and)f(digits.)p
+519 y(p)q(erhaps)15 b(to)f(bind)j(the)d(k)o(ey)h(sequences)h(output)e
+(b)o(y)h(the)g(terminal's)g(function)h(k)o(eys.)480 582
+y(The)f(w)o(ord)g(on)f(the)i(righ)o(t)e(side)i(of)f(the)g(`)p
+Fq(=)p Fr(')f(is)h(tested)g(against)g(the)g(full)h(name)f(of)g(the)480
+644 y(terminal)k(and)g(the)g(p)q(ortion)g(of)f(the)h(terminal)g(name)g
+(b)q(efore)g(the)g(\014rst)f(`)p Fq(-)p Fr('.)29 b(This)480
+706 y(allo)o(ws)15 b Fq(sun)g Fr(to)g(matc)o(h)f(b)q(oth)i
+Fq(sun)e Fr(and)i Fq(sun-cmd)p Fr(,)e(for)g(instance.)240
+793 y Fq(application)480 856 y Fr(The)k Fl(application)i
+Fr(construct)e(is)g(used)h(to)e(include)k(application-sp)q(eci\014c)g
+(settings.)480 918 y(Eac)o(h)d(program)g(using)h(the)f(Readline)j
+(library)e(sets)f(the)h Fl(application)h(name)p Fr(,)f(and)480
+980 y(y)o(ou)c(can)h(test)f(for)g(it.)21 b(This)16 b(could)g(b)q(e)h
+(used)f(to)e(bind)j(k)o(ey)f(sequences)g(to)f(functions)480
+1043 y(useful)h(for)e(a)h(sp)q(eci\014c)i(program.)h(F)l(or)d
+(instance,)g(the)g(follo)o(wing)h(command)e(adds)h(a)480
+1105 y(k)o(ey)g(sequence)h(that)f(quotes)g(the)g(curren)o(t)g(or)g
+(previous)h(w)o(ord)e(in)i(Bash:)600 1169 y Fq($if)23
+b(Bash)600 1221 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)600
+1273 y("\\C-xq":)g("\\eb\\"\\ef\\"")600 1325 y($endif)0
+1412 y($endif)96 b Fr(This)16 b(command,)e(as)h(y)o(ou)g(sa)o(w)g(in)h
+(the)f(previous)h(example,)f(terminates)h(an)f Fq($if)f
+Fr(command.)0 1499 y Fq($else)120 b Fr(Commands)15 b(in)h(this)f(branc)
+o(h)h(of)e(the)i Fq($if)e Fr(directiv)o(e)j(are)e(executed)h(if)g(the)f
+(test)g(fails.)0 1707 y Fk(1.3.3)30 b(Sample)15 b(Init)g(File)62
+1844 y Fr(Here)20 b(is)f(an)g(example)h(of)f(an)g(inputrc)h(\014le.)33
+b(This)20 b(illustrates)g(k)o(ey)f(binding,)j(v)m(ariable)e(assignmen)o
+(t,)g(and)0 1906 y(conditional)d(syn)o(tax.)p eop
+10 11 bop 0 -58 a Fr(10)1449 b(GNU)15 b(Readline)i(Library)120
+235 y Fq(#)24 b(This)f(file)g(controls)g(the)h(behaviour)e(of)i(line)f
+(input)g(editing)g(for)120 287 y(#)h(programs)e(that)i(use)f(the)h(Gnu)
+f(Readline)g(library.)47 b(Existing)22 b(programs)120
+339 y(#)i(include)f(FTP,)g(Bash,)g(and)h(Gdb.)120 391
+y(#)120 443 y(#)g(You)f(can)h(re-read)f(the)g(inputrc)g(file)g(with)h
+(C-x)f(C-r.)120 495 y(#)h(Lines)f(beginning)g(with)g('#')g(are)h
+(comments.)120 546 y(#)120 598 y(#)g(Set)f(various)g(bindings)g(for)g
+(emacs)g(mode.)120 702 y(set)g(editing-mode)g(emacs)120
+806 y($if)g(mode=emacs)120 910 y(Meta-Control-h:)46 b
+(backward-kill-word)21 b(Text)i(after)h(the)f(function)g(name)g(is)h
+(ignored)120 1013 y(#)120 1065 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)
+120 1117 y(#)120 1169 y(#"\\M-OD":)190 b(backward-char)120
+1221 y(#"\\M-OC":)g(forward-char)120 1273 y(#"\\M-OA":)g
+(previous-history)120 1325 y(#"\\M-OB":)g(next-history)120
+1377 y(#)120 1429 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)120
+1480 y(#)120 1532 y("\\M-[D":)190 b(backward-char)120
+1584 y("\\M-[C":)g(forward-char)120 1636 y("\\M-[A":)g
+(previous-history)120 1688 y("\\M-[B":)g(next-history)120
+1740 y(#)120 1792 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode)
+120 1844 y(#)120 1896 y(#"\\M-\\C-OD":)165 b(backward-char)120
+1947 y(#"\\M-\\C-OC":)g(forward-char)120 1999 y(#"\\M-\\C-OA":)g
+(previous-history)120 2051 y(#"\\M-\\C-OB":)g(next-history)120
+2103 y(#)120 2155 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
+120 2207 y(#)120 2259 y(#"\\M-\\C-[D":)165 b(backward-char)120
+2311 y(#"\\M-\\C-[C":)g(forward-char)120 2363 y(#"\\M-\\C-[A":)g
+(previous-history)120 2414 y(#"\\M-\\C-[B":)g(next-history)120
+2518 y(C-q:)23 b(quoted-insert)120 2622 y($endif)p eop
+11 12 bop 0 -58 a Fr(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1205
+b(11)120 235 y Fq(#)24 b(An)f(old-style)g(binding.)47
+b(This)23 b(happens)g(to)g(be)h(the)f(default.)120 287
+y(TAB:)g(complete)120 391 y(#)h(Macros)f(that)g(are)h(convenient)e(for)
+h(shell)h(interaction)120 443 y($if)f(Bash)120 495 y(#)h(edit)f(the)g
+(path)120 546 y("\\C-xp":)g("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")120
+598 y(#)h(prepare)f(to)g(type)h(a)f(quoted)g(word)h(--)f(insert)g(open)
+h(and)f(close)g(double)g(quotes)120 650 y(#)h(and)f(move)g(to)h(just)f
+(after)h(the)f(open)g(quote)120 702 y("\\C-x\\"":)g("\\"\\"\\C-b")120
+754 y(#)h(insert)f(a)g(backslash)g(\(testing)g(backslash)g(escapes)f
+(in)i(sequences)f(and)g(macros\))120 806 y("\\C-x\\\\":)g("\\\\")120
+858 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)120
+910 y("\\C-xq":)g("\\eb\\"\\ef\\"")120 962 y(#)h(Add)f(a)h(binding)f
+(to)g(refresh)g(the)h(line,)f(which)g(is)h(unbound)120
+1013 y("\\C-xr":)f(redraw-current-line)120 1065 y(#)h(Edit)f(variable)g
+(on)g(current)g(line.)120 1117 y("\\M-\\C-v":)f
+("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)o(")120 1169 y($endif)120
+1273 y(#)i(use)f(a)h(visible)f(bell)g(if)h(one)f(is)h(available)120
+1325 y(set)f(bell-style)g(visible)120 1429 y(#)h(don't)f(strip)g
+(characters)g(to)g(7)h(bits)f(when)h(reading)120 1480
+y(set)f(input-meta)g(on)120 1584 y(#)h(allow)f(iso-latin1)f(characters)
+h(to)g(be)h(inserted)f(rather)g(than)g(converted)g(to)120
+1636 y(#)h(prefix-meta)e(sequences)120 1688 y(set)h(convert-meta)g(off)
+120 1792 y(#)h(display)f(characters)f(with)h(the)h(eighth)f(bit)g(set)h
+(directly)f(rather)g(than)120 1844 y(#)h(as)f(meta-prefixed)f
+(characters)120 1896 y(set)h(output-meta)g(on)120 1999
+y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g(completions)f
+(for)i(a)f(word,)h(ask)f(the)120 2051 y(#)h(user)f(if)h(he)f(wants)g
+(to)h(see)f(all)h(of)f(them)120 2103 y(set)g(completion-query-items)e
+(150)120 2207 y(#)j(For)f(FTP)120 2259 y($if)g(Ftp)120
+2311 y("\\C-xg":)g("get)g(\\M-?")120 2363 y("\\C-xt":)g("put)g(\\M-?")
+120 2414 y("\\M-.":)g(yank-last-arg)120 2466 y($endif)p
eop
-%%Page: 9 11
-10 bop 0 -83 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1227
-b(9)0 158 y Fn(clear-screen)14 b(\(C-l\))240 221 y Fo(Clear)h(the)g(screen)g
-(and)g(redra)o(w)f(the)h(curren)o(t)g(line,)h(lea)o(ving)g(the)f(curren)o(t)f
-(line)j(at)d(the)h(top)f(of)h(the)240 283 y(screen.)0 361 y
-Fn(redraw-current-line)e(\(\))240 423 y Fo(Refresh)j(the)f(curren)o(t)g
-(line.)22 b(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)0
-663 y Fi(1.4.2)30 b(Commands)15 b(F)-5 b(or)15 b(Manipulating)g(The)g
-(History)0 804 y Fn(accept-line)f(\(Newline,)g(Return\))240
-866 y Fo(Accept)g(the)f(line)i(regardless)e(of)g(where)g(the)g(cursor)g(is.)
-20 b(If)13 b(this)h(line)h(is)e(non-empt)o(y)l(,)h(add)f(it)g(to)g(the)240
-928 y(history)k(list.)25 b(If)17 b(this)g(line)i(w)o(as)c(a)i(history)g
-(line,)h(then)f(restore)f(the)h(history)f(line)j(to)d(its)h(original)240
-990 y(state.)0 1069 y Fn(previous-history)c(\(C-p\))240 1131
-y Fo(Mo)o(v)o(e)h(`up')h(through)g(the)g(history)g(list.)0
-1209 y Fn(next-history)f(\(C-n\))240 1272 y Fo(Mo)o(v)o(e)g(`do)o(wn')g
-(through)h(the)h(history)f(list.)0 1350 y Fn(beginning-of-history)d(\(M-<\))
-240 1412 y Fo(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)i(in)f(the)f(history)l
-(.)0 1490 y Fn(end-of-history)e(\(M->\))240 1553 y Fo(Mo)o(v)o(e)h(to)h(the)g
-(end)h(of)f(the)g(input)h(history)l(,)f(i.e.,)g(the)g(line)i(y)o(ou)e(are)g
-(en)o(tering.)0 1631 y Fn(reverse-search-history)d(\(C-r\))240
-1693 y Fo(Searc)o(h)18 b(bac)o(kw)o(ard)f(starting)g(at)g(the)g(curren)o(t)h
-(line)h(and)f(mo)o(ving)f(`up')h(through)f(the)h(history)f(as)240
-1756 y(necessary)l(.)j(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)0
-1834 y Fn(forward-search-history)c(\(C-s\))240 1896 y Fo(Searc)o(h)j(forw)o
-(ard)e(starting)h(at)g(the)g(curren)o(t)h(line)h(and)f(mo)o(ving)f(`do)o(wn')
-g(through)g(the)g(the)h(history)240 1958 y(as)g(necessary)l(.)20
-b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)0 2037 y Fn
-(non-incremental-reverse-se)o(arch-hi)o(story)c(\(M-p\))240
-2099 y Fo(Searc)o(h)18 b(bac)o(kw)o(ard)f(starting)g(at)g(the)g(curren)o(t)h
-(line)h(and)f(mo)o(ving)f(`up')h(through)f(the)h(history)f(as)240
-2161 y(necessary)e(using)h(a)f(non-incremen)o(tal)i(searc)o(h)e(for)g(a)f
-(string)i(supplied)h(b)o(y)e(the)h(user.)0 2239 y Fn
-(non-incremental-forward-se)o(arch-hi)o(story)c(\(M-n\))240
-2302 y Fo(Searc)o(h)j(forw)o(ard)e(starting)h(at)g(the)g(curren)o(t)h(line)h
-(and)f(mo)o(ving)f(`do)o(wn')g(through)g(the)g(the)h(history)240
-2364 y(as)g(necessary)g(using)h(a)f(non-incremen)o(tal)i(searc)o(h)e(for)f(a)
-h(string)g(supplied)j(b)o(y)d(the)g(user.)0 2442 y Fn(history-search-forward)
-d(\(\))240 2505 y Fo(Searc)o(h)h(forw)o(ard)f(through)h(the)g(history)g(for)g
-(the)g(string)g(of)g(c)o(haracters)f(b)q(et)o(w)o(een)i(the)f(start)f(of)h
-(the)240 2567 y(curren)o(t)j(line)i(and)e(the)h(curren)o(t)f(p)q(oin)o(t.)23
-b(This)17 b(is)f(a)g(non-incremen)o(tal)i(searc)o(h.)23 b(By)16
-b(default,)h(this)240 2629 y(command)e(is)h(un)o(b)q(ound.)p
+12 13 bop 0 -58 a Fr(12)1449 b(GNU)15 b(Readline)i(Library)0
+183 y Fp(1.4)33 b(Bindable)16 b(Readline)h(Commands)62
+322 y Fr(This)f(section)g(describ)q(es)h(Readline)g(commands)e(that)g
+(ma)o(y)f(b)q(e)i(b)q(ound)g(to)f(k)o(ey)g(sequences.)0
+545 y Fk(1.4.1)30 b(Commands)15 b(F)-5 b(or)15 b(Mo)n(ving)0
+698 y Fq(beginning-of-line)e(\(C-a\))240 760 y Fr(Mo)o(v)o(e)h(to)h
+(the)g(start)f(of)h(the)g(curren)o(t)g(line.)0 851 y
+Fq(end-of-line)f(\(C-e\))240 913 y Fr(Mo)o(v)o(e)g(to)h(the)g(end)h(of)
+f(the)g(line.)0 1003 y Fq(forward-char)f(\(C-f\))240
+1066 y Fr(Mo)o(v)o(e)g(forw)o(ard)g(a)h(c)o(haracter.)0
+1156 y Fq(backward-char)e(\(C-b\))240 1219 y Fr(Mo)o(v)o(e)h(bac)o(k)h
+(a)g(c)o(haracter.)0 1309 y Fq(forward-word)f(\(M-f\))240
+1371 y Fr(Mo)o(v)o(e)g(forw)o(ard)g(to)h(the)g(end)h(of)f(the)g(next)g
+(w)o(ord.)k(W)l(ords)c(are)g(comp)q(osed)h(of)e(letters)i(and)f
+(digits.)0 1462 y Fq(backward-word)e(\(M-b\))240 1524
+y Fr(Mo)o(v)o(e)j(bac)o(k)g(to)g(the)h(start)f(of)g(this,)h(or)g(the)f
+(previous,)i(w)o(ord.)24 b(W)l(ords)16 b(are)g(comp)q(osed)i(of)e
+(letters)240 1587 y(and)f(digits.)0 1677 y Fq(clear-screen)f(\(C-l\))
+240 1739 y Fr(Clear)h(the)g(screen)g(and)g(redra)o(w)f(the)h(curren)o
+(t)g(line,)h(lea)o(ving)g(the)f(curren)o(t)f(line)j(at)d(the)h(top)f
+(of)h(the)240 1802 y(screen.)0 1892 y Fq(redraw-current-line)e(\(\))240
+1955 y Fr(Refresh)j(the)f(curren)o(t)g(line.)22 b(By)15
+b(default,)h(this)f(is)h(un)o(b)q(ound.)0 2177 y Fk(1.4.2)30
+b(Commands)15 b(F)-5 b(or)15 b(Manipulating)g(The)g(History)0
+2330 y Fq(accept-line)f(\(Newline,)g(Return\))240 2393
+y Fr(Accept)g(the)f(line)i(regardless)e(of)g(where)g(the)g(cursor)g
+(is.)20 b(If)13 b(this)h(line)h(is)e(non-empt)o(y)l(,)h(add)f(it)g(to)g
+(the)240 2455 y(history)k(list.)25 b(If)17 b(this)g(line)i(w)o(as)c(a)i
+(history)g(line,)h(then)f(restore)f(the)h(history)f(line)j(to)d(its)h
+(original)240 2517 y(state.)0 2608 y Fq(previous-history)c(\(C-p\))240
+2670 y Fr(Mo)o(v)o(e)h(`up')h(through)g(the)g(history)g(list.)p
eop
-%%Page: 10 12
-11 bop 0 -83 a Fo(10)1449 b(GNU)15 b(Readline)i(Library)0 158
-y Fn(history-search-backward)12 b(\(\))240 221 y Fo(Searc)o(h)k(bac)o(kw)o
-(ard)g(through)g(the)g(history)g(for)g(the)g(string)g(of)g(c)o(haracters)g(b)
-q(et)o(w)o(een)g(the)g(start)f(of)240 283 y(the)i(curren)o(t)g(line)h(and)f
-(the)g(curren)o(t)g(p)q(oin)o(t.)25 b(This)17 b(is)g(a)g(non-incremen)o(tal)h
-(searc)o(h.)25 b(By)17 b(default,)240 345 y(this)f(command)f(is)g(un)o(b)q
-(ound.)0 425 y Fn(yank-nth-arg)f(\(M-C-y\))240 487 y Fo(Insert)19
-b(the)g(\014rst)f(argumen)o(t)g(to)g(the)h(previous)g(command)g(\(usually)g
-(the)g(second)g(w)o(ord)f(on)h(the)240 550 y(previous)e(line\).)23
-b(With)16 b(an)g(argumen)o(t)f Fj(n)p Fo(,)h(insert)h(the)f
-Fj(n)p Fo(th)g(w)o(ord)f(from)g(the)h(previous)h(command)240
-612 y(\(the)d(w)o(ords)g(in)h(the)g(previous)g(command)f(b)q(egin)i(with)f(w)
-o(ord)f(0\).)19 b(A)14 b(negativ)o(e)h(argumen)o(t)f(inserts)240
-674 y(the)h Fj(n)p Fo(th)h(w)o(ord)e(from)h(the)g(end)h(of)e(the)i(previous)g
-(command.)0 754 y Fn(yank-last-arg)d(\(M-.,)i(M-_\))240 816
-y Fo(Insert)k(last)g(argumen)o(t)g(to)f(the)h(previous)h(command)f(\(the)g
-(last)g(w)o(ord)f(on)h(the)g(previous)h(line\).)240 879 y(With)15
-b(an)h(argumen)o(t,)e(b)q(eha)o(v)o(e)h(exactly)h(lik)o(e)g
-Fn(yank-nth-arg)p Fo(.)0 1134 y Fi(1.4.3)30 b(Commands)15 b(F)-5
-b(or)15 b(Changing)g(T)-5 b(ext)0 1276 y Fn(delete-char)14
-b(\(C-d\))240 1338 y Fo(Delete)f(the)f(c)o(haracter)f(under)i(the)f(cursor.)
-19 b(If)12 b(the)g(cursor)g(is)g(at)g(the)g(b)q(eginning)i(of)e(the)g(line,)i
-(there)240 1400 y(are)k(no)g(c)o(haracters)g(in)h(the)g(line,)h(and)f(the)f
-(last)g(c)o(haracter)g(t)o(yp)q(ed)h(w)o(as)e(not)h(C-d,)h(then)g(return)240
-1463 y(EOF.)0 1543 y Fn(backward-delete-char)12 b(\(Rubout\))240
-1605 y Fo(Delete)g(the)f(c)o(haracter)f(b)q(ehind)j(the)e(cursor.)18
-b(A)11 b(n)o(umeric)h(arg)e(sa)o(ys)g(to)g(kill)j(the)e(c)o(haracters)f
-(instead)240 1667 y(of)15 b(deleting)h(them.)0 1747 y Fn(quoted-insert)d
-(\(C-q,)i(C-v\))240 1809 y Fo(Add)i(the)f(next)h(c)o(haracter)f(that)f(y)o
-(ou)h(t)o(yp)q(e)h(to)f(the)g(line)i(v)o(erbatim.)24 b(This)17
-b(is)g(ho)o(w)e(to)h(insert)h(k)o(ey)240 1872 y(sequences)f(lik)o(e)h
-Fn(C-Q)p Fo(,)d(for)h(example.)0 1952 y Fn(tab-insert)f(\(M-TAB\))240
-2014 y Fo(Insert)h(a)g(tab)g(c)o(haracter.)0 2094 y Fn(self-insert)f(\(a,)g
-(b,)h(A,)g(1,)g(!,)g(...\))240 2156 y Fo(Insert)g(y)o(ourself.)0
-2236 y Fn(transpose-chars)e(\(C-t\))240 2298 y Fo(Drag)h(the)h(c)o(haracter)g
-(b)q(efore)g(the)h(cursor)f(forw)o(ard)f(o)o(v)o(er)g(the)h(c)o(haracter)g
-(at)f(the)i(cursor,)e(mo)o(ving)240 2361 y(the)k(cursor)h(forw)o(ard)e(as)h
-(w)o(ell.)30 b(If)19 b(the)f(insertion)i(p)q(oin)o(t)f(is)g(at)e(the)i(end)g
-(of)f(the)g(line,)j(then)e(this)240 2423 y(transp)q(oses)c(the)g(last)g(t)o
-(w)o(o)f(c)o(haracters)h(of)f(the)i(line.)21 b(Negativ)o(e)15
-b(argumen)o(tss)f(don't)h(w)o(ork.)0 2503 y Fn(transpose-words)e(\(M-t\))240
-2565 y Fo(Drag)f(the)h(w)o(ord)f(b)q(ehind)i(the)f(cursor)g(past)f(the)h(w)o
-(ord)f(in)h(fron)o(t)f(of)h(the)f(cursor)h(mo)o(ving)f(the)h(cursor)240
-2627 y(o)o(v)o(er)h(that)h(w)o(ord)f(as)h(w)o(ell.)p eop
-%%Page: 11 13
-12 bop 0 -83 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1205
-b(11)0 158 y Fn(upcase-word)14 b(\(M-u\))240 221 y Fo(Upp)q(ercase)h(the)e
-(curren)o(t)h(\(or)f(follo)o(wing\))h(w)o(ord.)k(With)c(a)f(negativ)o(e)h
-(argumen)o(t,)f(do)g(the)h(previous)240 283 y(w)o(ord,)g(but)h(do)h(not)e(mo)
-o(v)o(e)h(the)g(cursor.)0 358 y Fn(downcase-word)e(\(M-l\))240
-420 y Fo(Lo)o(w)o(ercase)g(the)i(curren)o(t)f(\(or)f(follo)o(wing\))h(w)o
-(ord.)19 b(With)14 b(a)g(negativ)o(e)g(argumen)o(t,)f(do)h(the)g(previous)240
-482 y(w)o(ord,)g(but)h(do)h(not)e(mo)o(v)o(e)h(the)g(cursor.)0
-557 y Fn(capitalize-word)e(\(M-c\))240 619 y Fo(Capitalize)j(the)e(curren)o
-(t)g(\(or)f(follo)o(wing\))i(w)o(ord.)j(With)d(a)f(negativ)o(e)g(argumen)o
-(t,)f(do)h(the)g(previous)240 682 y(w)o(ord,)g(but)h(do)h(not)e(mo)o(v)o(e)h
-(the)g(cursor.)0 891 y Fi(1.4.4)30 b(Killing)15 b(And)h(Y)-5
-b(anking)0 1028 y Fn(kill-line)14 b(\(C-k\))240 1090 y Fo(Kill)j(the)f(text)e
-(from)h(the)g(curren)o(t)g(cursor)g(p)q(osition)h(to)f(the)g(end)h(of)f(the)g
-(line.)0 1165 y Fn(backward-kill-line)e(\(C-x)h(Rubout\))240
-1228 y Fo(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g(line.)
-0 1302 y Fn(unix-line-discard)e(\(C-u\))240 1365 y Fo(Kill)j(bac)o(kw)o(ard)d
-(from)f(the)i(cursor)f(to)g(the)h(b)q(eginning)i(of)d(the)g(curren)o(t)h
-(line.)21 b(Sa)o(v)o(e)13 b(the)h(killed)h(text)240 1427 y(on)g(the)g
-(kill-ring.)0 1502 y Fn(kill-whole-line)e(\(\))240 1564 y Fo(Kill)18
-b(all)f(c)o(haracters)e(on)h(the)g(curren)o(t)f(line,)j(no)e(matter)e(where)i
-(the)g(cursor)g(is.)22 b(By)16 b(default,)h(this)240 1626 y(is)f(un)o(b)q
-(ound.)0 1701 y Fn(kill-word)e(\(M-d\))240 1764 y Fo(Kill)j(from)d(the)h
-(cursor)g(to)f(the)h(end)g(of)g(the)g(curren)o(t)f(w)o(ord,)g(or)g(if)i(b)q
-(et)o(w)o(een)f(w)o(ords,)f(to)g(the)h(end)g(of)240 1826 y(the)g(next)h(w)o
-(ord.)j(W)l(ord)c(b)q(oundaries)h(are)f(the)g(same)g(as)g Fn(forward-word)p
-Fo(.)0 1901 y Fn(backward-kill-word)e(\(M-DEL\))240 1963 y
-Fo(Kill)k(the)f(w)o(ord)e(b)q(ehind)j(the)f(cursor.)j(W)l(ord)c(b)q
-(oundaries)i(are)d(the)i(same)f(as)f Fn(backward-word)p Fo(.)0
-2038 y Fn(unix-word-rubout)f(\(C-w\))240 2100 y Fo(Kill)i(the)e(w)o(ord)f(b)q
-(ehind)j(the)f(cursor,)e(using)i(white)f(space)h(as)e(a)h(w)o(ord)f(b)q
-(oundary)l(.)20 b(The)13 b(killed)i(text)240 2162 y(is)h(sa)o(v)o(ed)e(on)i
-(the)f(kill-ring.)0 2237 y Fn(delete-horizontal-space)d(\(\))240
-2300 y Fo(Delete)k(all)g(spaces)f(and)h(tabs)e(around)i(p)q(oin)o(t.)k(By)15
-b(default,)h(this)f(is)h(un)o(b)q(ound.)0 2375 y Fn(yank)f(\(C-y\))240
-2437 y Fo(Y)l(ank)g(the)h(top)f(of)f(the)i(kill)h(ring)e(in)o(to)g(the)h
-(bu\013er)f(at)f(the)i(curren)o(t)f(cursor)g(p)q(osition.)0
-2512 y Fn(yank-pop)f(\(M-y\))240 2574 y Fo(Rotate)f(the)h(kill-ring,)i(and)e
-(y)o(ank)g(the)g(new)g(top.)19 b(Y)l(ou)14 b(can)g(only)g(do)g(this)g(if)g
-(the)g(prior)g(command)240 2636 y(is)i(y)o(ank)f(or)f(y)o(ank-p)q(op.)p
+13 14 bop 0 -58 a Fr(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1205
+b(13)0 183 y Fq(next-history)14 b(\(C-n\))240 246 y Fr(Mo)o(v)o(e)g
+(`do)o(wn')g(through)h(the)h(history)f(list.)0 331 y
+Fq(beginning-of-history)d(\(M-<\))240 393 y Fr(Mo)o(v)o(e)i(to)h(the)g
+(\014rst)g(line)i(in)f(the)f(history)l(.)0 478 y Fq(end-of-history)e
+(\(M->\))240 540 y Fr(Mo)o(v)o(e)h(to)h(the)g(end)h(of)f(the)g(input)h
+(history)l(,)f(i.e.,)g(the)g(line)i(y)o(ou)e(are)g(en)o(tering.)0
+625 y Fq(reverse-search-history)d(\(C-r\))240 688 y Fr(Searc)o(h)18
+b(bac)o(kw)o(ard)f(starting)g(at)g(the)g(curren)o(t)h(line)h(and)f(mo)o
+(ving)f(`up')h(through)f(the)h(history)f(as)240 750 y(necessary)l(.)j
+(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)0 835 y
+Fq(forward-search-history)c(\(C-s\))240 897 y Fr(Searc)o(h)j(forw)o
+(ard)e(starting)h(at)g(the)g(curren)o(t)h(line)h(and)f(mo)o(ving)f(`do)
+o(wn')g(through)g(the)g(the)h(history)240 960 y(as)g(necessary)l(.)20
+b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)0 1045
+y Fq(non-incremental-reverse-se)o(arch-hi)o(story)c(\(M-p\))240
+1107 y Fr(Searc)o(h)18 b(bac)o(kw)o(ard)f(starting)g(at)g(the)g(curren)
+o(t)h(line)h(and)f(mo)o(ving)f(`up')h(through)f(the)h(history)f(as)240
+1169 y(necessary)e(using)h(a)f(non-incremen)o(tal)i(searc)o(h)e(for)g
+(a)f(string)i(supplied)h(b)o(y)e(the)h(user.)0 1254 y
+Fq(non-incremental-forward-se)o(arch-hi)o(story)c(\(M-n\))240
+1317 y Fr(Searc)o(h)j(forw)o(ard)e(starting)h(at)g(the)g(curren)o(t)h
+(line)h(and)f(mo)o(ving)f(`do)o(wn')g(through)g(the)g(the)h(history)240
+1379 y(as)g(necessary)g(using)h(a)f(non-incremen)o(tal)i(searc)o(h)e
+(for)f(a)h(string)g(supplied)j(b)o(y)d(the)g(user.)0
+1464 y Fq(history-search-forward)d(\(\))240 1526 y Fr(Searc)o(h)h(forw)
+o(ard)f(through)h(the)g(history)g(for)g(the)g(string)g(of)g(c)o
+(haracters)f(b)q(et)o(w)o(een)i(the)f(start)f(of)h(the)240
+1589 y(curren)o(t)19 b(line)h(and)f(the)g(curren)o(t)f(cursor)h(p)q
+(osition)g(\(the)g(`p)q(oin)o(t'\).)30 b(This)19 b(is)g(a)f
+(non-incremen)o(tal)240 1651 y(searc)o(h.)i(By)15 b(default,)g(this)h
+(command)f(is)h(un)o(b)q(ound.)0 1736 y Fq(history-search-backward)c
+(\(\))240 1798 y Fr(Searc)o(h)21 b(bac)o(kw)o(ard)f(through)g(the)h
+(history)f(for)g(the)h(string)f(of)h(c)o(haracters)f(b)q(et)o(w)o(een)g
+(the)h(start)240 1860 y(of)c(the)h(curren)o(t)g(line)h(and)f(the)f(p)q
+(oin)o(t.)28 b(This)18 b(is)h(a)e(non-incremen)o(tal)i(searc)o(h.)27
+b(By)18 b(default,)h(this)240 1923 y(command)c(is)h(un)o(b)q(ound.)0
+2008 y Fq(yank-nth-arg)e(\(M-C-y\))240 2070 y Fr(Insert)19
+b(the)g(\014rst)f(argumen)o(t)g(to)g(the)h(previous)g(command)g
+(\(usually)g(the)g(second)g(w)o(ord)f(on)h(the)240 2132
+y(previous)e(line\).)23 b(With)16 b(an)g(argumen)o(t)f
+Fl(n)p Fr(,)h(insert)h(the)f Fl(n)p Fr(th)g(w)o(ord)f(from)g(the)h
+(previous)h(command)240 2195 y(\(the)d(w)o(ords)g(in)h(the)g(previous)g
+(command)f(b)q(egin)i(with)f(w)o(ord)f(0\).)19 b(A)14
+b(negativ)o(e)h(argumen)o(t)f(inserts)240 2257 y(the)h
+Fl(n)p Fr(th)h(w)o(ord)e(from)h(the)g(end)h(of)e(the)i(previous)g
+(command.)0 2342 y Fq(yank-last-arg)d(\(M-.,)i(M-_\))240
+2404 y Fr(Insert)i(last)g(argumen)o(t)g(to)f(the)h(previous)h(command)f
+(\(the)g(last)g(w)o(ord)f(of)h(the)g(previous)h(history)240
+2467 y(en)o(try\).)h(With)d(an)f(argumen)o(t,)f(b)q(eha)o(v)o(e)h
+(exactly)h(lik)o(e)g Fq(yank-nth-arg)p Fr(.)0 2670 y
+Fk(1.4.3)30 b(Commands)15 b(F)-5 b(or)15 b(Changing)g(T)-5
+b(ext)p eop
+14 15 bop 0 -58 a Fr(14)1449 b(GNU)15 b(Readline)i(Library)0
+183 y Fq(delete-char)d(\(C-d\))240 246 y Fr(Delete)f(the)f(c)o
+(haracter)f(under)i(the)f(cursor.)19 b(If)12 b(the)g(cursor)g(is)g(at)g
+(the)g(b)q(eginning)i(of)e(the)g(line,)i(there)240 308
+y(are)k(no)h(c)o(haracters)e(in)j(the)e(line,)j(and)d(the)h(last)f(c)o
+(haracter)g(t)o(yp)q(ed)h(w)o(as)f(not)g Fq(C-d)p Fr(,)g(then)h(return)
+240 370 y Fq(EOF)p Fr(.)0 460 y Fq(backward-delete-char)12
+b(\(Rubout\))240 522 y Fr(Delete)g(the)f(c)o(haracter)f(b)q(ehind)j
+(the)e(cursor.)18 b(A)11 b(n)o(umeric)h(arg)e(sa)o(ys)g(to)g(kill)j
+(the)e(c)o(haracters)f(instead)240 584 y(of)15 b(deleting)h(them.)0
+674 y Fq(quoted-insert)d(\(C-q,)i(C-v\))240 736 y Fr(Add)i(the)f(next)h
+(c)o(haracter)f(that)f(y)o(ou)h(t)o(yp)q(e)h(to)f(the)g(line)i(v)o
+(erbatim.)24 b(This)17 b(is)g(ho)o(w)e(to)h(insert)h(k)o(ey)240
+799 y(sequences)f(lik)o(e)h Fq(C-Q)p Fr(,)d(for)h(example.)0
+888 y Fq(tab-insert)f(\(M-TAB\))240 951 y Fr(Insert)h(a)g(tab)g(c)o
+(haracter.)0 1040 y Fq(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...\))
+240 1103 y Fr(Insert)g(y)o(ourself.)0 1192 y Fq(transpose-chars)e
+(\(C-t\))240 1255 y Fr(Drag)h(the)h(c)o(haracter)g(b)q(efore)g(the)h
+(cursor)f(forw)o(ard)f(o)o(v)o(er)g(the)h(c)o(haracter)g(at)f(the)i
+(cursor,)e(mo)o(ving)240 1317 y(the)k(cursor)h(forw)o(ard)e(as)h(w)o
+(ell.)30 b(If)19 b(the)f(insertion)i(p)q(oin)o(t)f(is)g(at)e(the)i(end)
+g(of)f(the)g(line,)j(then)e(this)240 1379 y(transp)q(oses)c(the)g(last)
+g(t)o(w)o(o)f(c)o(haracters)h(of)f(the)i(line.)21 b(Negativ)o(e)15
+b(argumen)o(tss)f(don't)h(w)o(ork.)0 1469 y Fq(transpose-words)e
+(\(M-t\))240 1531 y Fr(Drag)f(the)h(w)o(ord)f(b)q(ehind)i(the)f(cursor)
+g(past)f(the)h(w)o(ord)f(in)h(fron)o(t)f(of)h(the)f(cursor)h(mo)o(ving)
+f(the)h(cursor)240 1594 y(o)o(v)o(er)h(that)h(w)o(ord)f(as)h(w)o(ell.)0
+1683 y Fq(upcase-word)f(\(M-u\))240 1746 y Fr(Upp)q(ercase)h(the)e
+(curren)o(t)h(\(or)f(follo)o(wing\))h(w)o(ord.)k(With)c(a)f(negativ)o
+(e)h(argumen)o(t,)f(do)g(the)h(previous)240 1808 y(w)o(ord,)g(but)h(do)
+h(not)e(mo)o(v)o(e)h(the)g(cursor.)0 1898 y Fq(downcase-word)e(\(M-l\))
+240 1960 y Fr(Lo)o(w)o(ercase)g(the)i(curren)o(t)f(\(or)f(follo)o
+(wing\))h(w)o(ord.)19 b(With)14 b(a)g(negativ)o(e)g(argumen)o(t,)f(do)h
+(the)g(previous)240 2022 y(w)o(ord,)g(but)h(do)h(not)e(mo)o(v)o(e)h
+(the)g(cursor.)0 2112 y Fq(capitalize-word)e(\(M-c\))240
+2174 y Fr(Capitalize)j(the)e(curren)o(t)g(\(or)f(follo)o(wing\))i(w)o
+(ord.)j(With)d(a)f(negativ)o(e)g(argumen)o(t,)f(do)h(the)g(previous)240
+2236 y(w)o(ord,)g(but)h(do)h(not)e(mo)o(v)o(e)h(the)g(cursor.)0
+2456 y Fk(1.4.4)30 b(Killing)15 b(And)h(Y)-5 b(anking)0
+2608 y Fq(kill-line)14 b(\(C-k\))240 2670 y Fr(Kill)j(the)f(text)e
+(from)h(the)g(curren)o(t)g(cursor)g(p)q(osition)h(to)f(the)g(end)h(of)f
+(the)g(line.)p eop
+15 16 bop 0 -58 a Fr(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1205
+b(15)0 183 y Fq(backward-kill-line)13 b(\(C-x)h(Rubout\))240
+246 y Fr(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
+(line.)0 332 y Fq(unix-line-discard)e(\(C-u\))240 394
+y Fr(Kill)j(bac)o(kw)o(ard)d(from)f(the)i(cursor)f(to)g(the)h(b)q
+(eginning)i(of)d(the)g(curren)o(t)h(line.)21 b(Sa)o(v)o(e)13
+b(the)h(killed)h(text)240 456 y(on)g(the)g(kill-ring.)0
+543 y Fq(kill-whole-line)e(\(\))240 605 y Fr(Kill)18
+b(all)f(c)o(haracters)e(on)h(the)g(curren)o(t)f(line,)j(no)e(matter)e
+(where)i(the)g(cursor)g(is.)22 b(By)16 b(default,)h(this)240
+667 y(is)f(un)o(b)q(ound.)0 753 y Fq(kill-word)e(\(M-d\))240
+816 y Fr(Kill)j(from)d(the)h(cursor)g(to)f(the)h(end)g(of)g(the)g
+(curren)o(t)f(w)o(ord,)g(or)g(if)i(b)q(et)o(w)o(een)f(w)o(ords,)f(to)g
+(the)h(end)g(of)240 878 y(the)g(next)h(w)o(ord.)j(W)l(ord)c(b)q
+(oundaries)h(are)f(the)g(same)g(as)g Fq(forward-word)p
+Fr(.)0 964 y Fq(backward-kill-word)e(\(M-DEL\))240 1027
+y Fr(Kill)k(the)f(w)o(ord)e(b)q(ehind)j(the)f(cursor.)j(W)l(ord)c(b)q
+(oundaries)i(are)d(the)i(same)f(as)f Fq(backward-word)p
+Fr(.)0 1113 y Fq(unix-word-rubout)f(\(C-w\))240 1175
+y Fr(Kill)i(the)e(w)o(ord)f(b)q(ehind)j(the)f(cursor,)e(using)i(white)f
+(space)h(as)e(a)h(w)o(ord)f(b)q(oundary)l(.)20 b(The)13
+b(killed)i(text)240 1237 y(is)h(sa)o(v)o(ed)e(on)i(the)f(kill-ring.)0
+1324 y Fq(delete-horizontal-space)d(\(\))240 1386 y Fr(Delete)k(all)g
+(spaces)f(and)h(tabs)e(around)i(p)q(oin)o(t.)k(By)15
+b(default,)h(this)f(is)h(un)o(b)q(ound.)0 1472 y Fq(kill-region)e(\(\))
+240 1535 y Fr(Kill)23 b(the)e(text)g(b)q(et)o(w)o(een)g(the)g(p)q(oin)o
+(t)g(and)g(the)g Fl(mark)j Fr(\(sa)o(v)o(ed)c(cursor)g(p)q(osition.)38
+b(This)22 b(text)e(is)240 1597 y(referred)15 b(to)g(as)g(the)g
+Fl(region)p Fr(.)20 b(By)15 b(default,)h(this)g(command)f(is)g(un)o(b)q
+(ound.)0 1683 y Fq(copy-region-as-kill)e(\(\))240 1745
+y Fr(Cop)o(y)f(the)h(text)f(in)i(the)f(region)g(to)f(the)g(kill)j
+(bu\013er,)e(so)f(y)o(ou)h(can)f(y)o(ank)h(it)g(righ)o(t)f(a)o(w)o(a)o
+(y)l(.)18 b(By)13 b(default,)240 1808 y(this)j(command)f(is)g(un)o(b)q
+(ound.)0 1894 y Fq(copy-backward-word)e(\(\))240 1956
+y Fr(Cop)o(y)i(the)g(w)o(ord)f(b)q(efore)i(p)q(oin)o(t)g(to)e(the)h
+(kill)j(bu\013er.)h(By)d(default,)f(this)h(command)f(is)h(un)o(b)q
+(ound.)0 2043 y Fq(copy-forward-word)d(\(\))240 2105
+y Fr(Cop)o(y)f(the)h(w)o(ord)f(follo)o(wing)h(p)q(oin)o(t)g(to)f(the)h
+(kill)h(bu\013er.)19 b(By)13 b(default,)g(this)h(command)e(is)h(un)o(b)
+q(ound.)0 2191 y Fq(yank)i(\(C-y\))240 2253 y Fr(Y)l(ank)g(the)h(top)f
+(of)f(the)i(kill)h(ring)e(in)o(to)g(the)h(bu\013er)f(at)f(the)i(curren)
+o(t)f(cursor)g(p)q(osition.)0 2340 y Fq(yank-pop)f(\(M-y\))240
+2402 y Fr(Rotate)f(the)h(kill-ring,)i(and)e(y)o(ank)g(the)g(new)g(top.)
+19 b(Y)l(ou)14 b(can)g(only)g(do)g(this)g(if)g(the)g(prior)g(command)
+240 2464 y(is)i(y)o(ank)f(or)f(y)o(ank-p)q(op.)0 2670
+y Fk(1.4.5)30 b(Sp)r(ecifying)15 b(Numeric)h(Argumen)n(ts)p
eop
-%%Page: 12 14
-13 bop 0 -83 a Fo(12)1449 b(GNU)15 b(Readline)i(Library)0 158
-y Fi(1.4.5)30 b(Sp)r(ecifying)15 b(Numeric)h(Argumen)n(ts)0
-301 y Fn(digit-argument)d(\(M-0,)i(M-1,)f(...)h(M--\))240 364
-y Fo(Add)k(this)f(digit)h(to)f(the)g(argumen)o(t)f(already)i(accum)o
-(ulating,)g(or)f(start)f(a)g(new)i(argumen)o(t.)28 b(M{)240
-426 y(starts)14 b(a)h(negativ)o(e)g(argumen)o(t.)0 507 y Fn
-(universal-argument)e(\(\))240 569 y Fo(Eac)o(h)k(time)h(this)g(is)f
-(executed,)i(the)e(argumen)o(t)g(coun)o(t)g(is)h(m)o(ultiplied)i(b)o(y)d
-(four.)26 b(The)18 b(argumen)o(t)240 631 y(coun)o(t)i(is)h(initially)j(one,)d
-(so)f(executing)i(this)f(function)g(the)g(\014rst)f(time)h(mak)o(es)f(the)h
-(argumen)o(t)240 693 y(coun)o(t)15 b(four.)20 b(By)15 b(default,)g(this)h(is)
-g(not)e(b)q(ound)j(to)d(a)h(k)o(ey)l(.)0 956 y Fi(1.4.6)30
-b(Letting)14 b(Readline)h(T)n(yp)r(e)h(F)-5 b(or)14 b(Y)-5
-b(ou)0 1099 y Fn(complete)14 b(\(TAB\))240 1161 y Fo(A)o(ttempt)i(to)h(do)g
+16 17 bop 0 -58 a Fr(16)1449 b(GNU)15 b(Readline)i(Library)0
+183 y Fq(digit-argument)c(\(M-0,)i(M-1,)f(...)h(M--\))240
+246 y Fr(Add)j(this)g(digit)h(to)e(the)h(argumen)o(t)e(already)i(accum)
+o(ulating,)h(or)e(start)g(a)g(new)h(argumen)o(t.)26 b
+Fq(M--)240 308 y Fr(starts)14 b(a)h(negativ)o(e)g(argumen)o(t.)0
+403 y Fq(universal-argument)e(\(\))240 465 y Fr(This)f(is)h(another)e
+(w)o(a)o(y)g(to)g(sp)q(ecify)i(an)f(argumen)o(t.)18 b(If)12
+b(this)g(command)g(is)g(follo)o(w)o(ed)g(b)o(y)g(one)g(or)f(more)240
+527 y(digits,)19 b(optionally)g(with)f(a)g(leading)h(min)o(us)f(sign,)h
+(those)e(digits)i(de\014ne)g(the)f(argumen)o(t.)27 b(If)18
+b(the)240 590 y(command)12 b(is)h(follo)o(w)o(ed)g(b)o(y)f(digits,)i
+(executing)f Fq(universal-argument)d Fr(again)j(ends)g(the)f(n)o
+(umeric)240 652 y(argumen)o(t,)i(but)h(is)g(otherwise)g(ignored.)20
+b(As)15 b(a)f(sp)q(ecial)j(case,)d(if)h(this)g(command)g(is)g
+(immediately)240 714 y(follo)o(w)o(ed)e(b)o(y)f(a)h(c)o(haracter)e
+(that)h(is)h(neither)h(a)e(digit)i(or)e(min)o(us)h(sign,)g(the)g
+(argumen)o(t)f(coun)o(t)g(for)g(the)240 776 y(next)i(command)g(is)h(m)o
+(ultiplied)i(b)o(y)d(four.)19 b(The)c(argumen)o(t)e(coun)o(t)h(is)h
+(initially)i(one,)d(so)g(executing)240 839 y(this)k(function)g(the)f
+(\014rst)g(time)g(mak)o(es)g(the)g(argumen)o(t)g(coun)o(t)g(four,)g(a)g
+(second)h(time)f(mak)o(es)g(the)240 901 y(argumen)o(t)d(coun)o(t)h
+(sixteen,)h(and)f(so)g(on.)20 b(By)15 b(default,)h(this)f(is)h(not)f(b)
+q(ound)h(to)f(a)g(k)o(ey)l(.)0 1143 y Fk(1.4.6)30 b(Letting)14
+b(Readline)h(T)n(yp)r(e)h(F)-5 b(or)14 b(Y)-5 b(ou)0
+1301 y Fq(complete)14 b(\(TAB\))240 1363 y Fr(A)o(ttempt)i(to)h(do)g
(completion)i(on)e(the)g(text)g(b)q(efore)h(the)f(cursor.)26
-b(This)18 b(is)g(application-sp)q(eci\014c.)240 1223 y(Generally)l(,)h(if)f
-(y)o(ou)f(are)h(t)o(yping)g(a)f(\014lename)i(argumen)o(t,)e(y)o(ou)g(can)h
-(do)f(\014lename)i(completion;)g(if)240 1285 y(y)o(ou)f(are)f(t)o(yping)i(a)e
-(command,)i(y)o(ou)e(can)i(do)f(command)g(completion,)h(if)g(y)o(ou)e(are)h
-(t)o(yping)g(in)h(a)240 1348 y(sym)o(b)q(ol)e(to)f(GDB,)g(y)o(ou)g(can)h(do)g
-(sym)o(b)q(ol)g(name)g(completion,)h(if)f(y)o(ou)f(are)h(t)o(yping)g(in)g(a)g
-(v)m(ariable)240 1410 y(to)e(Bash,)f(y)o(ou)h(can)h(do)f(v)m(ariable)h(name)g
-(completion,)g(and)f(so)g(on.)0 1491 y Fn(possible-completions)d(\(M-?\))240
-1553 y Fo(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b)q
-(efore)h(the)f(cursor.)0 1634 y Fn(insert-completions)e(\(\))240
-1696 y Fo(Insert)22 b(all)h(completions)g(of)f(the)g(text)f(b)q(efore)h(p)q
-(oin)o(t)h(that)e(w)o(ould)h(ha)o(v)o(e)g(b)q(een)h(generated)f(b)o(y)240
-1758 y Fn(possible-completions)p Fo(.)17 b(By)e(default,)h(this)f(is)h(not)f
-(b)q(ound)h(to)f(a)g(k)o(ey)l(.)0 2020 y Fi(1.4.7)30 b(Keyb)r(oard)15
-b(Macros)0 2163 y Fn(start-kbd-macro)e(\(C-x)i(\(\))240 2226
-y Fo(Begin)h(sa)o(ving)f(the)h(c)o(haracters)e(t)o(yp)q(ed)i(in)o(to)f(the)g
-(curren)o(t)g(k)o(eyb)q(oard)g(macro.)0 2306 y Fn(end-kbd-macro)e(\(C-x)i
-(\)\))240 2369 y Fo(Stop)f(sa)o(ving)h(the)g(c)o(haracters)f(t)o(yp)q(ed)h
-(in)o(to)f(the)h(curren)o(t)f(k)o(eyb)q(oard)h(macro)f(and)h(sa)o(v)o(e)f
-(the)g(de\014ni-)240 2431 y(tion.)0 2512 y Fn(call-last-kbd-macro)f(\(C-x)h
-(e\))240 2574 y Fo(Re-execute)20 b(the)f(last)f(k)o(eyb)q(oard)g(macro)g
-(de\014ned,)i(b)o(y)f(making)f(the)h(c)o(haracters)f(in)h(the)g(macro)240
-2636 y(app)q(ear)c(as)g(if)h(t)o(yp)q(ed)f(at)g(the)g(k)o(eyb)q(oard.)p
-eop
-%%Page: 13 15
-14 bop 0 -83 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1205
-b(13)0 158 y Fi(1.4.8)30 b(Some)15 b(Miscellaneous)h(Commands)0
-299 y Fn(re-read-init-file)d(\(C-x)h(C-r\))240 361 y Fo(Read)i(in)g(the)f
-(con)o(ten)o(ts)f(of)h(y)o(our)g(init)h(\014le,)g(and)f(incorp)q(orate)h(an)o
-(y)e(bindings)j(or)e(v)m(ariable)i(assign-)240 423 y(men)o(ts)e(found)g
-(there.)0 502 y Fn(abort)f(\(C-g\))240 564 y Fo(Ab)q(ort)f(the)h(curren)o(t)f
-(editing)i(command)e(and)h(ring)g(the)f(terminal's)h(b)q(ell)h(\(sub)s(ject)f
-(to)e(the)i(setting)240 626 y(of)h Fn(bell-style)p Fo(\).)0
-704 y Fn(do-uppercase-version)d(\(M-a,)j(M-b,)f(...\))240 767
-y Fo(Run)i(the)f(command)g(that)g(is)h(b)q(ound)g(to)e(the)i(corresop)q
-(onding)g(upp)q(ercase)g(c)o(haracter.)0 845 y Fn(prefix-meta)e(\(ESC\))240
-907 y Fo(Mak)o(e)g(the)g(next)h(c)o(haracter)f(that)g(y)o(ou)g(t)o(yp)q(e)h
-(b)q(e)g(meta\014ed.)20 b(This)15 b(is)g(for)f(p)q(eople)i(without)e(a)h
-(meta)240 970 y(k)o(ey)l(.)20 b(T)o(yping)c(`)p Fn(ESC)e(f)p
-Fo(')h(is)g(equiv)m(alen)o(t)i(to)e(t)o(yping)g(`)p Fn(M-f)p
-Fo('.)0 1048 y Fn(undo)g(\(C-_,)f(C-x)h(C-u\))240 1110 y Fo(Incremen)o(tal)h
-(undo,)f(separately)h(remem)o(b)q(ered)g(for)e(eac)o(h)h(line.)0
-1188 y Fn(revert-line)f(\(M-r\))240 1251 y Fo(Undo)20 b(all)h(c)o(hanges)f
-(made)g(to)f(this)i(line.)35 b(This)21 b(is)f(lik)o(e)h(t)o(yping)f(the)g
-Fn(undo)g Fo(command)g(enough)240 1313 y(times)15 b(to)g(get)g(bac)o(k)g(to)f
-(the)i(b)q(eginning.)0 1391 y Fn(tilde-expand)e(\(M-~\))240
-1453 y Fo(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o(ord.)0
-1532 y Fn(dump-functions)e(\(\))240 1594 y Fo(Prin)o(t)18 b(all)h(of)f(the)g
-(functions)h(and)g(their)g(k)o(ey)f(bindings)i(to)d(the)i(readline)h(output)e
-(stream.)28 b(If)18 b(a)240 1656 y(n)o(umeric)i(argumen)o(t)d(is)i(supplied,)
-j(the)d(output)f(is)h(formatted)f(in)h(suc)o(h)g(a)f(w)o(a)o(y)g(that)g(it)h
-(can)f(b)q(e)240 1718 y(made)d(part)g(of)g(an)g Fj(inputrc)k
-Fo(\014le.)0 1974 y Fm(1.5)33 b(Readline)16 b(vi)g(Mo)r(de)62
-2115 y Fo(While)d(the)f(Readline)i(library)e(do)q(es)g(not)g(ha)o(v)o(e)f(a)g
-(full)i(set)f(of)f Fn(vi)g Fo(editing)i(functions,)g(it)f(do)q(es)g(con)o
-(tain)g(enough)0 2177 y(to)i(allo)o(w)h(simple)i(editing)f(of)f(the)g(line.)
-21 b(The)15 b(Readline)i Fn(vi)e Fo(mo)q(de)g(b)q(eha)o(v)o(es)h(as)e(sp)q
-(eci\014ed)j(in)f(the)f(P)o(osix)g(1003.2)0 2240 y(standard.)62
-2380 y(In)i(order)e(to)g(switc)o(h)h(in)o(teractiv)o(ely)h(b)q(et)o(w)o(een)f
-Fn(Emacs)f Fo(and)h Fn(Vi)f Fo(editing)i(mo)q(des,)f(use)g(the)g(command)f
-(M-C-j)0 2442 y(\(toggle-editing-mo)q(de\).)21 b(The)15 b(Readline)j(default)
-e(is)f Fn(emacs)g Fo(mo)q(de.)62 2583 y(When)k(y)o(ou)f(en)o(ter)g(a)g(line)i
-(in)g Fn(vi)e Fo(mo)q(de,)h(y)o(ou)f(are)g(already)g(placed)i(in)f
-(`insertion')g(mo)q(de,)g(as)f(if)h(y)o(ou)f(had)0 2645 y(t)o(yp)q(ed)e(an)f
-(`)p Fn(i)p Fo('.)20 b(Pressing)c Fn(ESC)f Fo(switc)o(hes)h(y)o(ou)f(in)o(to)
-h(`command')f(mo)q(de,)g(where)h(y)o(ou)f(can)h(edit)g(the)g(text)f(of)g(the)
-p eop
-%%Page: 14 16
-15 bop 0 -83 a Fo(14)1449 b(GNU)15 b(Readline)i(Library)0 158
-y(line)j(with)e(the)g(standard)g Fn(vi)f Fo(mo)o(v)o(emen)o(t)g(k)o(eys,)h
-(mo)o(v)o(e)g(to)f(previous)i(history)f(lines)h(with)g(`)p
-Fn(k)p Fo(',)e(and)h(follo)o(wing)0 221 y(lines)f(with)e(`)p
-Fn(j)p Fo(',)f(and)i(so)e(forth.)p eop
-%%Page: 15 17
-16 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(15)0 158 y Fk(2)41 b(Programming)16 b(with)f(GNU)h(Readline)62
-370 y Fo(This)j(c)o(hapter)f(describ)q(es)i(the)e(in)o(terface)g(b)q(et)o(w)o
-(een)h(the)f(GNU)g(Readline)j(Library)d(and)h(other)f(programs.)0
-433 y(If)h(y)o(ou)g(are)f(a)h(programmer,)f(and)i(y)o(ou)e(wish)i(to)e
-(include)j(the)e(features)g(found)g(in)h(GNU)f(Readline)i(suc)o(h)e(as)0
-495 y(completion,)f(line)h(editing,)f(and)f(in)o(teractiv)o(e)h(history)f
-(manipulation)h(in)g(y)o(our)f(o)o(wn)f(programs,)g(this)h(section)0
-557 y(is)f(for)e(y)o(ou.)0 826 y Fm(2.1)33 b(Basic)14 b(Beha)n(vior)62
-968 y Fo(Man)o(y)c(programs)g(pro)o(vide)h(a)g(command)f(line)j(in)o
-(terface,)e(suc)o(h)g(as)g Fn(mail)p Fo(,)f Fn(ftp)p Fo(,)h(and)g
-Fn(sh)p Fo(.)18 b(F)l(or)10 b(suc)o(h)i(programs,)0 1031 y(the)17
+b(This)18 b(is)g(application-sp)q(eci\014c.)240 1425
+y(Generally)l(,)h(if)f(y)o(ou)f(are)h(t)o(yping)g(a)f(\014lename)i
+(argumen)o(t,)e(y)o(ou)g(can)h(do)f(\014lename)i(completion;)g(if)240
+1487 y(y)o(ou)f(are)f(t)o(yping)i(a)e(command,)i(y)o(ou)e(can)i(do)f
+(command)g(completion,)h(if)g(y)o(ou)e(are)h(t)o(yping)g(in)h(a)240
+1550 y(sym)o(b)q(ol)e(to)f(GDB,)g(y)o(ou)g(can)h(do)g(sym)o(b)q(ol)g
+(name)g(completion,)h(if)f(y)o(ou)f(are)h(t)o(yping)g(in)g(a)g(v)m
+(ariable)240 1612 y(to)e(Bash,)f(y)o(ou)h(can)h(do)f(v)m(ariable)h
+(name)g(completion,)g(and)f(so)g(on.)0 1707 y Fq(possible-completions)d
+(\(M-?\))240 1769 y Fr(List)k(the)f(p)q(ossible)i(completions)f(of)f
+(the)g(text)g(b)q(efore)h(the)f(cursor.)0 1864 y Fq(insert-completions)
+e(\(M-*\))240 1926 y Fr(Insert)22 b(all)h(completions)g(of)f(the)g
+(text)f(b)q(efore)h(p)q(oin)o(t)h(that)e(w)o(ould)h(ha)o(v)o(e)g(b)q
+(een)h(generated)f(b)o(y)240 1989 y Fq(possible-completions)p
+Fr(.)0 2231 y Fk(1.4.7)30 b(Keyb)r(oard)15 b(Macros)0
+2388 y Fq(start-kbd-macro)e(\(C-x)i(\(\))240 2451 y Fr(Begin)h(sa)o
+(ving)f(the)h(c)o(haracters)e(t)o(yp)q(ed)i(in)o(to)f(the)g(curren)o(t)
+g(k)o(eyb)q(oard)g(macro.)0 2545 y Fq(end-kbd-macro)e(\(C-x)i(\)\))240
+2608 y Fr(Stop)f(sa)o(ving)h(the)g(c)o(haracters)f(t)o(yp)q(ed)h(in)o
+(to)f(the)h(curren)o(t)f(k)o(eyb)q(oard)h(macro)f(and)h(sa)o(v)o(e)f
+(the)g(de\014ni-)240 2670 y(tion.)p eop
+17 18 bop 0 -58 a Fr(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1205
+b(17)0 183 y Fq(call-last-kbd-macro)13 b(\(C-x)h(e\))240
+246 y Fr(Re-execute)20 b(the)f(last)f(k)o(eyb)q(oard)g(macro)g
+(de\014ned,)i(b)o(y)f(making)f(the)h(c)o(haracters)f(in)h(the)g(macro)
+240 308 y(app)q(ear)c(as)g(if)h(t)o(yp)q(ed)f(at)g(the)g(k)o(eyb)q
+(oard.)0 546 y Fk(1.4.8)30 b(Some)15 b(Miscellaneous)h(Commands)0
+703 y Fq(re-read-init-file)d(\(C-x)h(C-r\))240 765 y
+Fr(Read)23 b(in)h(the)e(con)o(ten)o(ts)g(of)h(the)f(inputrc)i(\014le,)h
+(and)e(incorp)q(orate)g(an)o(y)f(bindings)i(or)f(v)m(ariable)240
+827 y(assignmen)o(ts)15 b(found)h(there.)0 921 y Fq(abort)e(\(C-g\))240
+984 y Fr(Ab)q(ort)f(the)h(curren)o(t)f(editing)i(command)e(and)h(ring)g
+(the)f(terminal's)h(b)q(ell)h(\(sub)s(ject)f(to)e(the)i(setting)240
+1046 y(of)h Fq(bell-style)p Fr(\).)0 1140 y Fq(do-uppercase-version)d
+(\(M-a,)j(M-b,)f(M-)p Fl(x)p Fq(,)h Fj(:)8 b(:)g(:)n
+Fq(\))240 1202 y Fr(If)16 b(the)f(meta\014ed)g(c)o(haracter)g
+Fl(x)k Fr(is)c(lo)o(w)o(ercase,)g(run)h(the)f(command)g(that)g(is)h(b)q
+(ound)g(to)f(the)g(corre-)240 1264 y(sp)q(onding)h(upp)q(ercase)h(c)o
+(haracter.)0 1358 y Fq(prefix-meta)d(\(ESC\))240 1421
+y Fr(Mak)o(e)g(the)g(next)h(c)o(haracter)f(that)g(y)o(ou)g(t)o(yp)q(e)h
+(b)q(e)g(meta\014ed.)20 b(This)15 b(is)g(for)f(p)q(eople)i(without)e(a)
+h(meta)240 1483 y(k)o(ey)l(.)20 b(T)o(yping)c(`)p Fq(ESC)e(f)p
+Fr(')h(is)g(equiv)m(alen)o(t)i(to)e(t)o(yping)g(`)p Fq(M-f)p
+Fr('.)0 1577 y Fq(undo)g(\(C-_,)f(C-x)h(C-u\))240 1639
+y Fr(Incremen)o(tal)h(undo,)f(separately)h(remem)o(b)q(ered)g(for)e
+(eac)o(h)h(line.)0 1733 y Fq(revert-line)f(\(M-r\))240
+1796 y Fr(Undo)20 b(all)h(c)o(hanges)f(made)g(to)f(this)i(line.)35
+b(This)21 b(is)f(lik)o(e)h(t)o(yping)f(the)g Fq(undo)g
+Fr(command)g(enough)240 1858 y(times)15 b(to)g(get)g(bac)o(k)g(to)f
+(the)i(b)q(eginning.)0 1952 y Fq(tilde-expand)e(\(M-~\))240
+2014 y Fr(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o
+(ord.)0 2108 y Fq(set-mark)f(\(C-@\))240 2171 y Fr(Set)i(the)g(mark)f
+(to)g(the)h(curren)o(t)g(p)q(oin)o(t.)23 b(If)16 b(a)f(n)o(umeric)i
+(argumen)o(t)e(is)i(supplied,)h(the)e(mark)f(is)h(set)240
+2233 y(to)f(that)f(p)q(osition.)0 2327 y Fq(exchange-point-and-mark)e
+(\(C-x)j(C-x\))240 2389 y Fr(Sw)o(ap)e(the)g(p)q(oin)o(t)h(with)f(the)g
+(mark.)19 b(The)13 b(curren)o(t)g(cursor)g(p)q(osition)h(is)g(set)f(to)
+f(the)i(sa)o(v)o(ed)e(p)q(osition,)240 2451 y(and)j(the)h(old)f(cursor)
+g(p)q(osition)i(is)e(sa)o(v)o(ed)g(as)g(the)g(mark.)0
+2545 y Fq(character-search)e(\(C-]\))240 2608 y Fr(A)19
+b(c)o(haracter)e(is)j(read)e(and)h(p)q(oin)o(t)g(is)g(mo)o(v)o(ed)f(to)
+g(the)g(next)h(o)q(ccurrence)h(of)e(that)g(c)o(haracter.)29
+b(A)240 2670 y(negativ)o(e)15 b(coun)o(t)g(searc)o(hes)g(for)g
+(previous)h(o)q(ccurrences.)p eop
+18 19 bop 0 -58 a Fr(18)1449 b(GNU)15 b(Readline)i(Library)0
+183 y Fq(character-search-backward)12 b(\(M-C-]\))240
+246 y Fr(A)i(c)o(haracter)f(is)h(read)g(and)f(p)q(oin)o(t)i(is)f(mo)o
+(v)o(ed)f(to)g(the)h(previous)g(o)q(ccurrence)h(of)e(that)g(c)o
+(haracter.)19 b(A)240 308 y(negativ)o(e)c(coun)o(t)g(searc)o(hes)g(for)
+g(subsequen)o(t)h(o)q(ccurrences.)0 395 y Fq(insert-comment)d(\(M-#\))
+240 457 y Fr(The)19 b(v)m(alue)g(of)f(the)g Fq(comment-begin)f
+Fr(v)m(ariable)i(is)g(inserted)g(at)f(the)g(b)q(eginning)j(of)d(the)g
+(curren)o(t)240 519 y(line,)e(and)g(the)f(line)i(is)f(accepted)g(as)e
+(if)i(a)f(newline)i(had)e(b)q(een)i(t)o(yp)q(ed.)0 607
+y Fq(dump-functions)c(\(\))240 669 y Fr(Prin)o(t)18 b(all)h(of)f(the)g
+(functions)h(and)g(their)g(k)o(ey)f(bindings)i(to)d(the)i(readline)h
+(output)e(stream.)28 b(If)18 b(a)240 731 y(n)o(umeric)i(argumen)o(t)d
+(is)i(supplied,)j(the)d(output)f(is)h(formatted)f(in)h(suc)o(h)g(a)f(w)
+o(a)o(y)g(that)g(it)h(can)f(b)q(e)240 793 y(made)d(part)g(of)g(an)g
+Fl(inputrc)k Fr(\014le.)i(This)15 b(command)g(is)h(un)o(b)q(ound)h(b)o
+(y)e(default.)0 881 y Fq(dump-variables)e(\(\))240 943
+y Fr(Prin)o(t)j(all)h(of)f(the)h(settable)f(v)m(ariables)i(and)e(their)
+h(v)m(alues)g(to)f(the)g(readline)i(output)e(stream.)23
+b(If)16 b(a)240 1005 y(n)o(umeric)k(argumen)o(t)d(is)i(supplied,)j(the)
+d(output)f(is)h(formatted)f(in)h(suc)o(h)g(a)f(w)o(a)o(y)g(that)g(it)h
+(can)f(b)q(e)240 1067 y(made)d(part)g(of)g(an)g Fl(inputrc)k
+Fr(\014le.)i(This)15 b(command)g(is)h(un)o(b)q(ound)h(b)o(y)e(default.)
+0 1155 y Fq(dump-macros)f(\(\))240 1217 y Fr(Prin)o(t)h(all)g(of)g(the)
+f(readline)j(k)o(ey)d(sequences)i(b)q(ound)g(to)e(macros)g(and)h(the)f
+(strings)h(they)g(ouput.)20 b(If)240 1279 y(a)c(n)o(umeric)h(argumen)o
+(t)e(is)i(supplied,)h(the)e(output)g(is)g(formatted)f(in)i(suc)o(h)g(a)
+e(w)o(a)o(y)g(that)h(it)g(can)g(b)q(e)240 1341 y(made)f(part)g(of)g(an)
+g Fl(inputrc)k Fr(\014le.)i(This)15 b(command)g(is)h(un)o(b)q(ound)h(b)
+o(y)e(default.)0 1566 y Fp(1.5)33 b(Readline)16 b(vi)g(Mo)r(de)62
+1703 y Fr(While)d(the)f(Readline)i(library)e(do)q(es)g(not)g(ha)o(v)o
+(e)f(a)g(full)i(set)f(of)f Fq(vi)g Fr(editing)i(functions,)g(it)f(do)q
+(es)g(con)o(tain)g(enough)0 1765 y(to)f(allo)o(w)i(simple)g(editing)g
+(of)f(the)g(line.)20 b(The)13 b(Readline)h Fq(vi)d Fr(mo)q(de)i(b)q
+(eha)o(v)o(es)f(as)g(sp)q(eci\014ed)i(in)e(the)h Fm(POSIX)f
+Fr(1003.2)0 1827 y(standard.)62 1964 y(In)17 b(order)e(to)g(switc)o(h)h
+(in)o(teractiv)o(ely)h(b)q(et)o(w)o(een)f Fq(emacs)f
+Fr(and)h Fq(vi)f Fr(editing)i(mo)q(des,)f(use)g(the)g(command)f(M-C-j)0
+2026 y(\(toggle-editing-mo)q(de\).)21 b(The)15 b(Readline)j(default)e
+(is)f Fq(emacs)g Fr(mo)q(de.)62 2163 y(When)k(y)o(ou)f(en)o(ter)g(a)g
+(line)i(in)g Fq(vi)e Fr(mo)q(de,)h(y)o(ou)f(are)g(already)g(placed)i
+(in)f(`insertion')g(mo)q(de,)g(as)f(if)h(y)o(ou)f(had)0
+2226 y(t)o(yp)q(ed)e(an)f(`)p Fq(i)p Fr('.)20 b(Pressing)c
+Fq(ESC)f Fr(switc)o(hes)h(y)o(ou)f(in)o(to)h(`command')f(mo)q(de,)g
+(where)h(y)o(ou)f(can)h(edit)g(the)g(text)f(of)g(the)0
+2288 y(line)j(with)e(the)h(standard)e Fq(vi)h Fr(mo)o(v)o(emen)o(t)f(k)
+o(eys,)h(mo)o(v)o(e)g(to)f(previous)i(history)f(lines)i(with)f(`)p
+Fq(k)p Fr(')e(and)h(subsequen)o(t)0 2350 y(lines)h(with)e(`)p
+Fq(j)p Fr(',)f(and)i(so)e(forth.)p eop
+19 20 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(19)0 183 y Fn(2)41 b(Programming)16 b(with)f(GNU)h
+(Readline)62 394 y Fr(This)j(c)o(hapter)f(describ)q(es)i(the)e(in)o
+(terface)g(b)q(et)o(w)o(een)h(the)f(GNU)g(Readline)j(Library)d(and)h
+(other)f(programs.)0 456 y(If)h(y)o(ou)g(are)f(a)h(programmer,)f(and)i
+(y)o(ou)e(wish)i(to)e(include)j(the)e(features)g(found)g(in)h(GNU)f
+(Readline)i(suc)o(h)e(as)0 518 y(completion,)f(line)h(editing,)f(and)f
+(in)o(teractiv)o(e)h(history)f(manipulation)h(in)g(y)o(our)f(o)o(wn)f
+(programs,)g(this)h(section)0 581 y(is)f(for)e(y)o(ou.)0
+848 y Fp(2.1)33 b(Basic)14 b(Beha)n(vior)62 989 y Fr(Man)o(y)c
+(programs)g(pro)o(vide)h(a)g(command)f(line)j(in)o(terface,)e(suc)o(h)g
+(as)g Fq(mail)p Fr(,)f Fq(ftp)p Fr(,)h(and)g Fq(sh)p
+Fr(.)18 b(F)l(or)10 b(suc)o(h)i(programs,)0 1052 y(the)17
b(default)h(b)q(eha)o(viour)g(of)e(Readline)k(is)e(su\016cien)o(t.)26
-b(This)18 b(section)f(describ)q(es)i(ho)o(w)e(to)f(use)i(Readline)h(in)f(the)
-0 1093 y(simplest)e(w)o(a)o(y)e(p)q(ossible,)j(p)q(erhaps)f(to)e(replace)j
-(calls)f(in)g(y)o(our)f(co)q(de)g(to)g Fn(gets\(\))f Fo(or)h
-Fn(fgets)f(\(\))p Fo(.)62 1235 y(The)g(function)g Fn(readline)g(\(\))f
-Fo(prin)o(ts)h(a)f(prompt)g(and)h(then)g(reads)f(and)g(returns)h(a)f(single)i
-(line)g(of)e(text)g(from)0 1297 y(the)g(user.)19 b(The)13 b(line)i
-Fn(readline)d Fo(returns)g(is)i(allo)q(cated)g(with)f Fn(malloc)h(\(\))p
-Fo(;)f(y)o(ou)g(should)h Fn(free)g(\(\))f Fo(the)g(line)h(when)0
-1360 y(y)o(ou)h(are)g(done)g(with)h(it.)k(The)15 b(declaration)h(for)f
-Fn(readline)f Fo(in)i(ANSI)g(C)f(is)120 1489 y Fn(char)23 b(*readline)g
-(\(char)g(*)p Fj(prompt)q Fn(\);)0 1631 y Fo(So,)15 b(one)g(migh)o(t)g(sa)o
-(y)120 1761 y Fn(char)23 b(*line)g(=)h(readline)f(\("Enter)g(a)h(line:)f
-("\);)0 1903 y Fo(in)17 b(order)g(to)f(read)g(a)g(line)j(of)d(text)g(from)g
-(the)g(user.)24 b(The)17 b(line)h(returned)f(has)g(the)f(\014nal)i(newline)g
-(remo)o(v)o(ed,)e(so)0 1965 y(only)g(the)f(text)g(remains.)62
-2107 y(If)g Fn(readline)f Fo(encoun)o(ters)h(an)f Fn(EOF)h
-Fo(while)h(reading)f(the)g(line,)h(and)f(the)g(line)h(is)f(empt)o(y)g(at)f
-(that)g(p)q(oin)o(t,)h(then)0 2169 y Fn(\(char)f(*\)NULL)h
-Fo(is)h(returned.)k(Otherwise,)15 b(the)h(line)h(is)e(ended)i(just)d(as)h(if)
-h(a)f(newline)i(had)e(b)q(een)i(t)o(yp)q(ed.)62 2311 y(If)g(y)o(ou)g(w)o(an)o
-(t)f(the)h(user)g(to)f(b)q(e)i(able)f(to)g(get)f(at)g(the)h(line)i(later,)e
-(\(with)g Fn(C-P)f Fo(for)g(example\),)i(y)o(ou)e(m)o(ust)h(call)0
-2374 y Fn(add_history)d(\(\))h Fo(to)f(sa)o(v)o(e)h(the)g(line)i(a)o(w)o(a)o
-(y)c(in)j(a)f Fj(history)k Fo(list)d(of)f(suc)o(h)h(lines.)120
-2503 y Fn(add_history)22 b(\(line\);)0 2645 y Fo(F)l(or)15
-b(full)h(details)g(on)f(the)h(GNU)f(History)g(Library)l(,)g(see)h(the)f(asso)
-q(ciated)g(man)o(ual.)p eop
-%%Page: 16 18
-17 bop 0 -83 a Fo(16)1449 b(GNU)15 b(Readline)i(Library)62
-158 y(It)e(is)g(preferable)g(to)f(a)o(v)o(oid)g(sa)o(ving)h(empt)o(y)f(lines)
-i(on)f(the)f(history)h(list,)g(since)g(users)g(rarely)g(ha)o(v)o(e)f(a)g
-(burning)0 221 y(need)i(to)e(reuse)h(a)f(blank)i(line.)21 b(Here)15
-b(is)g(a)g(function)g(whic)o(h)h(usefully)g(replaces)g(the)f(standard)f
-Fn(gets)h(\(\))f Fo(library)0 283 y(function,)i(and)f(has)g(the)g(adv)m(an)o
-(tage)g(of)g(no)g(static)g(bu\013er)g(to)g(o)o(v)o(er\015o)o(w:)120
-428 y Fn(/*)24 b(A)f(static)g(variable)g(for)h(holding)e(the)i(line.)f(*/)120
-477 y(static)g(char)g(*line_read)g(=)h(\(char)f(*\)NULL;)120
-577 y(/*)h(Read)f(a)h(string,)f(and)g(return)g(a)h(pointer)f(to)g(it.)48
-b(Returns)22 b(NULL)i(on)f(EOF.)h(*/)120 627 y(char)f(*)120
-677 y(rl_gets)g(\(\))120 726 y({)168 776 y(/*)g(If)h(the)f(buffer)g(has)h
-(already)f(been)g(allocated,)g(return)g(the)g(memory)239 826
-y(to)h(the)f(free)h(pool.)f(*/)168 876 y(if)g(\(line_read\))215
-926 y({)263 975 y(free)g(\(line_read\);)263 1025 y(line_read)g(=)h(\(char)f
-(*\)NULL;)215 1075 y(})168 1175 y(/*)g(Get)h(a)f(line)h(from)f(the)h(user.)f
-(*/)168 1225 y(line_read)f(=)i(readline)f(\(""\);)168 1324
-y(/*)g(If)h(the)f(line)h(has)f(any)h(text)f(in)g(it,)h(save)f(it)h(on)f(the)h
-(history.)f(*/)168 1374 y(if)g(\(line_read)g(&&)g(*line_read\))215
-1424 y(add_history)g(\(line_read\);)168 1523 y(return)g(\(line_read\);)120
-1573 y(})62 1730 y Fo(This)15 b(function)g(giv)o(es)f(the)g(user)g(the)g
-(default)h(b)q(eha)o(viour)g(of)e Fn(TAB)h Fo(completion:)20
-b(completion)15 b(on)f(\014le)h(names.)0 1793 y(If)h(y)o(ou)f(do)h(not)f(w)o
-(an)o(t)g(Readline)j(to)d(complete)i(on)e(\014lenames,)i(y)o(ou)e(can)h(c)o
-(hange)g(the)g(binding)i(of)d(the)h Fn(TAB)f Fo(k)o(ey)0 1855
-y(with)h Fn(rl_bind_key)d(\(\))p Fo(.)120 1999 y Fn(int)23
-b(rl_bind_key)g(\(int)g Fj(k)o(ey)p Fn(,)h(int)f(\(*)p Fj(function)p
-Fn(\)\(\)\);)62 2157 y(rl_bind_key)14 b(\(\))f Fo(tak)o(es)g(t)o(w)o(o)f
-(argumen)o(ts:)19 b Fj(k)o(ey)e Fo(is)d(the)g(c)o(haracter)f(that)g(y)o(ou)g
-(w)o(an)o(t)f(to)h(bind,)i(and)f Fj(function)0 2219 y Fo(is)g(the)g(address)g
-(of)f(the)h(function)g(to)f(call)i(when)f Fj(k)o(ey)j Fo(is)d(pressed.)20
-b(Binding)c Fn(TAB)d Fo(to)g Fn(rl_insert)h(\(\))f Fo(mak)o(es)g
-Fn(TAB)0 2281 y Fo(insert)i(itself.)20 b Fn(rl_bind_key)14
-b(\(\))g Fo(returns)g(non-zero)h(if)g Fj(k)o(ey)j Fo(is)d(not)f(a)g(v)m(alid)
-i(ASCI)q(I)f(c)o(haracter)f(co)q(de)h(\(b)q(et)o(w)o(een)0
-2343 y(0)g(and)g(255\).)62 2500 y(Th)o(us,)g(to)g(disable)h(the)g(default)f
-Fn(TAB)g Fo(b)q(eha)o(vior,)h(the)f(follo)o(wing)h(su\016ces:)120
-2645 y Fn(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)p eop
-%%Page: 17 19
-18 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(17)62 158 y(This)12 b(co)q(de)f(should)h(b)q(e)f(executed)h(once)f(at)f
-(the)h(start)f(of)g(y)o(our)g(program;)h(y)o(ou)g(migh)o(t)f(write)h(a)g
-(function)g(called)0 221 y Fn(initialize_readline)i(\(\))j
-Fo(whic)o(h)h(p)q(erforms)f(this)h(and)f(other)g(desired)i(initializations,)h
-(suc)o(h)e(as)f(installing)0 283 y(custom)f(completers)g(\(see)h(Section)g
-(2.4)e([Custom)g(Completers],)h(page)g(28\).)0 539 y Fm(2.2)33
-b(Custom)14 b(F)-6 b(unctions)62 680 y Fo(Readline)18 b(pro)o(vides)f(man)o
-(y)e(functions)i(for)e(manipulating)j(the)e(text)f(of)g(the)h(line,)i(but)e
-(it)g(isn't)g(p)q(ossible)i(to)0 742 y(an)o(ticipate)i(the)g(needs)g(of)f
-(all)h(programs.)31 b(This)20 b(section)g(describ)q(es)h(the)f(v)m(arious)g
-(functions)g(and)g(v)m(ariables)0 804 y(de\014ned)c(within)f(the)g(Readline)i
-(library)e(whic)o(h)g(allo)o(w)g(a)f(user)g(program)f(to)h(add)h(customized)g
-(functionalit)o(y)h(to)0 866 y(Readline.)0 1106 y Fi(2.2.1)30
-b(The)15 b(F)-5 b(unction)14 b(T)n(yp)r(e)62 1247 y Fo(F)l(or)j(readabilt)o
-(y)l(,)h(w)o(e)f(declare)i(a)e(new)g(t)o(yp)q(e)h(of)f(ob)s(ject,)f(called)j
-Fj(F)l(unction)p Fo(.)28 b(A)17 b Fn(Function)f Fo(is)i(a)f(C)g(function)0
-1309 y(whic)o(h)f(returns)f(an)g Fn(int)p Fo(.)20 b(The)15
-b(t)o(yp)q(e)g(declaration)h(for)f Fn(Function)f Fo(is:)0 1450
-y Fn(typedef)g(int)h(Function)f(\(\);)62 1590 y Fo(The)i(reason)f(for)g
-(declaring)i(this)f(new)g(t)o(yp)q(e)f(is)h(to)f(mak)o(e)g(it)h(easier)g(to)f
-(write)g(co)q(de)h(describing)i(p)q(oin)o(ters)e(to)0 1652
-y(C)g(functions.)25 b(Let)17 b(us)f(sa)o(y)g(w)o(e)g(had)h(a)f(v)m(ariable)i
-(called)g Fj(func)i Fo(whic)o(h)d(w)o(as)f(a)g(p)q(oin)o(ter)h(to)f(a)g
-(function.)25 b(Instead)0 1715 y(of)15 b(the)g(classic)h(C)f(declaration)62
-1855 y Fn(int)g(\(*\)\(\)func;)0 1996 y Fo(w)o(e)g(ma)o(y)f(write)62
-2136 y Fn(Function)g(*func;)0 2277 y Fo(Similarly)l(,)j(there)e(are)120
-2405 y Fn(typedef)23 b(void)g(VFunction)g(\(\);)120 2455 y(typedef)g(char)g
-(*CPFunction)g(\(\);)g Fo(and)120 2505 y Fn(typedef)g(char)g(**CPPFunction)f
-(\(\);)0 2645 y Fo(for)12 b(functions)h(returning)g(no)g(v)m(alue,)g
-Fn(pointer)i(to)g(char)p Fo(,)d(and)g Fn(pointer)i(to)h(pointer)g(to)f(char)p
-Fo(,)e(resp)q(ectiv)o(ely)l(.)p eop
-%%Page: 18 20
-19 bop 0 -83 a Fo(18)1449 b(GNU)15 b(Readline)i(Library)0 158
-y Fi(2.2.2)30 b(W)-5 b(riting)15 b(a)g(New)g(F)-5 b(unction)62
-296 y Fo(In)22 b(order)f(to)g(write)g(new)h(functions)g(for)f(Readline,)j(y)o
-(ou)d(need)h(to)f(kno)o(w)g(the)g(calling)i(con)o(v)o(en)o(tions)f(for)0
-358 y(k)o(eyb)q(oard-in)o(v)o(ok)o(ed)17 b(functions,)g(and)f(the)h(names)f
-(of)g(the)h(v)m(ariables)h(that)d(describ)q(e)j(the)f(curren)o(t)f(state)g
-(of)g(the)0 420 y(line)h(read)e(so)g(far.)62 558 y(The)h(calling)h(sequence)f
-(for)f(a)f(command)i Fn(foo)e Fo(lo)q(oks)i(lik)o(e)120 683
-y Fn(foo)23 b(\(int)h(count,)f(int)g(key\))0 820 y Fo(where)f
-Fj(coun)o(t)g Fo(is)g(the)f(n)o(umeric)i(argumen)o(t)d(\(or)h(1)g(if)h
-(defaulted\))g(and)f Fj(k)o(ey)26 b Fo(is)21 b(the)h(k)o(ey)f(that)g(in)o(v)o
-(ok)o(ed)h(this)0 882 y(function.)62 1020 y(It)f(is)h(completely)g(up)f(to)f
-(the)h(function)h(as)f(to)f(what)g(should)i(b)q(e)g(done)f(with)g(the)g(n)o
-(umeric)h(argumen)o(t.)0 1082 y(Some)c(functions)g(use)g(it)g(as)f(a)h(rep)q
-(eat)g(coun)o(t,)f(some)h(as)f(a)g(\015ag,)h(and)g(others)f(to)g(c)o(ho)q
-(ose)h(alternate)f(b)q(eha)o(vior)0 1144 y(\(refreshing)12
+b(This)18 b(section)f(describ)q(es)i(ho)o(w)e(to)f(use)i(Readline)h(in)
+f(the)0 1114 y(simplest)e(w)o(a)o(y)e(p)q(ossible,)j(p)q(erhaps)f(to)e
+(replace)j(calls)f(in)g(y)o(our)f(co)q(de)g(to)g Fq(gets\(\))f
+Fr(or)h Fq(fgets)f(\(\))p Fr(.)62 1256 y(The)g(function)g
+Fq(readline)g(\(\))f Fr(prin)o(ts)h(a)f(prompt)g(and)h(then)g(reads)f
+(and)g(returns)h(a)f(single)i(line)g(of)e(text)g(from)0
+1318 y(the)g(user.)19 b(The)13 b(line)i Fq(readline)d
+Fr(returns)g(is)i(allo)q(cated)g(with)f Fq(malloc)h(\(\))p
+Fr(;)f(y)o(ou)g(should)h Fq(free)g(\(\))f Fr(the)g(line)h(when)0
+1380 y(y)o(ou)h(are)g(done)g(with)h(it.)k(The)15 b(declaration)h(for)f
+Fq(readline)f Fr(in)i(ANSI)g(C)f(is)120 1512 y Fq(char)23
+b(*readline)g(\(char)g(*)p Fl(prompt)q Fq(\);)0 1653
+y Fr(So,)15 b(one)g(migh)o(t)g(sa)o(y)120 1785 y Fq(char)23
+b(*line)g(=)h(readline)f(\("Enter)g(a)h(line:)f("\);)0
+1927 y Fr(in)17 b(order)g(to)f(read)g(a)g(line)j(of)d(text)g(from)g
+(the)g(user.)24 b(The)17 b(line)h(returned)f(has)g(the)f(\014nal)i
+(newline)g(remo)o(v)o(ed,)e(so)0 1989 y(only)g(the)f(text)g(remains.)62
+2131 y(If)g Fq(readline)f Fr(encoun)o(ters)h(an)f Fq(EOF)h
+Fr(while)h(reading)f(the)g(line,)h(and)f(the)g(line)h(is)f(empt)o(y)g
+(at)f(that)g(p)q(oin)o(t,)h(then)0 2193 y Fq(\(char)f(*\)NULL)h
+Fr(is)h(returned.)k(Otherwise,)15 b(the)h(line)h(is)e(ended)i(just)d
+(as)h(if)h(a)f(newline)i(had)e(b)q(een)i(t)o(yp)q(ed.)62
+2335 y(If)g(y)o(ou)g(w)o(an)o(t)f(the)h(user)g(to)f(b)q(e)i(able)f(to)g
+(get)f(at)g(the)h(line)i(later,)e(\(with)g Fq(C-P)f Fr(for)g
+(example\),)i(y)o(ou)e(m)o(ust)h(call)0 2397 y Fq(add_history)d(\(\))h
+Fr(to)f(sa)o(v)o(e)h(the)g(line)i(a)o(w)o(a)o(y)c(in)j(a)f
+Fl(history)k Fr(list)d(of)f(suc)o(h)h(lines.)120 2528
+y Fq(add_history)22 b(\(line\);)0 2670 y Fr(F)l(or)15
+b(full)h(details)g(on)f(the)h(GNU)f(History)g(Library)l(,)g(see)h(the)f
+(asso)q(ciated)g(man)o(ual.)p eop
+20 21 bop 0 -58 a Fr(20)1449 b(GNU)15 b(Readline)i(Library)62
+183 y(It)e(is)g(preferable)g(to)f(a)o(v)o(oid)g(sa)o(ving)h(empt)o(y)f
+(lines)i(on)f(the)f(history)h(list,)g(since)g(users)g(rarely)g(ha)o(v)o
+(e)f(a)g(burning)0 246 y(need)i(to)e(reuse)h(a)f(blank)i(line.)21
+b(Here)15 b(is)g(a)g(function)g(whic)o(h)h(usefully)g(replaces)g(the)f
+(standard)f Fq(gets)h(\(\))f Fr(library)0 308 y(function,)i(and)f(has)g
+(the)g(adv)m(an)o(tage)g(of)g(no)g(static)g(bu\013er)g(to)g(o)o(v)o
+(er\015o)o(w:)120 445 y Fq(/*)24 b(A)f(static)g(variable)g(for)h
+(holding)e(the)i(line.)f(*/)120 497 y(static)g(char)g(*line_read)g(=)h
+(\(char)f(*\)NULL;)120 601 y(/*)h(Read)f(a)h(string,)f(and)g(return)g
+(a)h(pointer)f(to)g(it.)48 b(Returns)22 b(NULL)i(on)f(EOF.)h(*/)120
+653 y(char)f(*)120 705 y(rl_gets)g(\(\))120 757 y({)168
+809 y(/*)g(If)h(the)f(buffer)g(has)h(already)f(been)g(allocated,)g
+(return)g(the)g(memory)239 861 y(to)h(the)f(free)h(pool.)f(*/)168
+912 y(if)g(\(line_read\))215 964 y({)263 1016 y(free)g(\(line_read\);)
+263 1068 y(line_read)g(=)h(\(char)f(*\)NULL;)215 1120
+y(})168 1224 y(/*)g(Get)h(a)f(line)h(from)f(the)h(user.)f(*/)168
+1276 y(line_read)f(=)i(readline)f(\(""\);)168 1379 y(/*)g(If)h(the)f
+(line)h(has)f(any)h(text)f(in)g(it,)h(save)f(it)h(on)f(the)h(history.)f
+(*/)168 1431 y(if)g(\(line_read)g(&&)g(*line_read\))215
+1483 y(add_history)g(\(line_read\);)168 1587 y(return)g(\(line_read\);)
+120 1639 y(})62 1787 y Fr(This)15 b(function)g(giv)o(es)f(the)g(user)g
+(the)g(default)h(b)q(eha)o(viour)g(of)e Fq(TAB)h Fr(completion:)20
+b(completion)15 b(on)f(\014le)h(names.)0 1849 y(If)h(y)o(ou)f(do)h(not)
+f(w)o(an)o(t)g(Readline)j(to)d(complete)i(on)e(\014lenames,)i(y)o(ou)e
+(can)h(c)o(hange)g(the)g(binding)i(of)d(the)h Fq(TAB)f
+Fr(k)o(ey)0 1912 y(with)h Fq(rl_bind_key)d(\(\))p Fr(.)120
+2049 y Fq(int)23 b(rl_bind_key)g(\(int)g Fl(k)o(ey)p
+Fq(,)h(int)f(\(*)p Fl(function)p Fq(\)\(\)\);)62 2197
+y(rl_bind_key)14 b(\(\))f Fr(tak)o(es)g(t)o(w)o(o)f(argumen)o(ts:)19
+b Fl(k)o(ey)e Fr(is)d(the)g(c)o(haracter)f(that)g(y)o(ou)g(w)o(an)o(t)f
+(to)h(bind,)i(and)f Fl(function)0 2260 y Fr(is)g(the)g(address)g(of)f
+(the)h(function)g(to)f(call)i(when)f Fl(k)o(ey)j Fr(is)d(pressed.)20
+b(Binding)c Fq(TAB)d Fr(to)g Fq(rl_insert)h(\(\))f Fr(mak)o(es)g
+Fq(TAB)0 2322 y Fr(insert)i(itself.)20 b Fq(rl_bind_key)14
+b(\(\))g Fr(returns)g(non-zero)h(if)g Fl(k)o(ey)j Fr(is)d(not)f(a)g(v)m
+(alid)i(ASCI)q(I)f(c)o(haracter)f(co)q(de)h(\(b)q(et)o(w)o(een)0
+2384 y(0)g(and)g(255\).)62 2532 y(Th)o(us,)g(to)g(disable)h(the)g
+(default)f Fq(TAB)g Fr(b)q(eha)o(vior,)h(the)f(follo)o(wing)h
+(su\016ces:)120 2670 y Fq(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)p
+eop
+21 22 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(21)62 183 y(This)12 b(co)q(de)f(should)h(b)q(e)f
+(executed)h(once)f(at)f(the)h(start)f(of)g(y)o(our)g(program;)h(y)o(ou)
+g(migh)o(t)f(write)h(a)g(function)g(called)0 246 y Fq
+(initialize_readline)i(\(\))j Fr(whic)o(h)h(p)q(erforms)f(this)h(and)f
+(other)g(desired)i(initializations,)h(suc)o(h)e(as)f(installing)0
+308 y(custom)f(completers)g(\(see)h(Section)g(2.5)e([Custom)g
+(Completers],)h(page)g(34\).)0 562 y Fp(2.2)33 b(Custom)14
+b(F)-6 b(unctions)62 702 y Fr(Readline)18 b(pro)o(vides)f(man)o(y)e
+(functions)i(for)e(manipulating)j(the)e(text)f(of)g(the)h(line,)i(but)e
+(it)g(isn't)g(p)q(ossible)i(to)0 765 y(an)o(ticipate)i(the)g(needs)g
+(of)f(all)h(programs.)31 b(This)20 b(section)g(describ)q(es)h(the)f(v)m
+(arious)g(functions)g(and)g(v)m(ariables)0 827 y(de\014ned)c(within)f
+(the)g(Readline)i(library)e(whic)o(h)g(allo)o(w)g(a)f(user)g(program)f
+(to)h(add)h(customized)g(functionalit)o(y)h(to)0 889
+y(Readline.)0 1127 y Fk(2.2.1)30 b(The)15 b(F)-5 b(unction)14
+b(T)n(yp)r(e)62 1267 y Fr(F)l(or)j(readabilt)o(y)l(,)h(w)o(e)f(declare)
+i(a)e(new)g(t)o(yp)q(e)h(of)f(ob)s(ject,)f(called)j Fl(F)l(unction)p
+Fr(.)28 b(A)17 b Fq(Function)f Fr(is)i(a)f(C)g(function)0
+1329 y(whic)o(h)f(returns)f(an)g Fq(int)p Fr(.)20 b(The)15
+b(t)o(yp)q(e)g(declaration)h(for)f Fq(Function)f Fr(is:)0
+1470 y Fq(typedef)g(int)h(Function)f(\(\);)62 1610 y
+Fr(The)i(reason)f(for)g(declaring)i(this)f(new)g(t)o(yp)q(e)f(is)h(to)f
+(mak)o(e)g(it)h(easier)g(to)f(write)g(co)q(de)h(describing)i(p)q(oin)o
+(ters)e(to)0 1672 y(C)g(functions.)25 b(Let)17 b(us)f(sa)o(y)g(w)o(e)g
+(had)h(a)f(v)m(ariable)i(called)g Fl(func)i Fr(whic)o(h)d(w)o(as)f(a)g
+(p)q(oin)o(ter)h(to)f(a)g(function.)25 b(Instead)0 1735
+y(of)15 b(the)g(classic)h(C)f(declaration)62 1875 y Fq(int)g
+(\(*\)\(\)func;)0 2015 y Fr(w)o(e)g(ma)o(y)f(write)62
+2156 y Fq(Function)g(*func;)0 2296 y Fr(Similarly)l(,)j(there)e(are)120
+2426 y Fq(typedef)23 b(void)g(VFunction)g(\(\);)120 2478
+y(typedef)g(char)g(*CPFunction)g(\(\);)g Fr(and)120 2530
+y Fq(typedef)g(char)g(**CPPFunction)f(\(\);)0 2670 y
+Fr(for)12 b(functions)h(returning)g(no)g(v)m(alue,)g
+Fq(pointer)i(to)g(char)p Fr(,)d(and)g Fq(pointer)i(to)h(pointer)g(to)f
+(char)p Fr(,)e(resp)q(ectiv)o(ely)l(.)p eop
+22 23 bop 0 -58 a Fr(22)1449 b(GNU)15 b(Readline)i(Library)0
+183 y Fk(2.2.2)30 b(W)-5 b(riting)15 b(a)g(New)g(F)-5
+b(unction)62 325 y Fr(In)22 b(order)f(to)g(write)g(new)h(functions)g
+(for)f(Readline,)j(y)o(ou)d(need)h(to)f(kno)o(w)g(the)g(calling)i(con)o
+(v)o(en)o(tions)f(for)0 387 y(k)o(eyb)q(oard-in)o(v)o(ok)o(ed)17
+b(functions,)g(and)f(the)h(names)f(of)g(the)h(v)m(ariables)h(that)d
+(describ)q(e)j(the)f(curren)o(t)f(state)g(of)g(the)0
+449 y(line)h(read)e(so)g(far.)62 591 y(The)h(calling)h(sequence)f(for)f
+(a)f(command)i Fq(foo)e Fr(lo)q(oks)i(lik)o(e)120 722
+y Fq(foo)23 b(\(int)h(count,)f(int)g(key\))0 864 y Fr(where)f
+Fl(coun)o(t)g Fr(is)g(the)f(n)o(umeric)i(argumen)o(t)d(\(or)h(1)g(if)h
+(defaulted\))g(and)f Fl(k)o(ey)26 b Fr(is)21 b(the)h(k)o(ey)f(that)g
+(in)o(v)o(ok)o(ed)h(this)0 926 y(function.)62 1068 y(It)f(is)h
+(completely)g(up)f(to)f(the)h(function)h(as)f(to)f(what)g(should)i(b)q
+(e)g(done)f(with)g(the)g(n)o(umeric)h(argumen)o(t.)0
+1130 y(Some)c(functions)g(use)g(it)g(as)f(a)h(rep)q(eat)g(coun)o(t,)f
+(some)h(as)f(a)g(\015ag,)h(and)g(others)f(to)g(c)o(ho)q(ose)h
+(alternate)f(b)q(eha)o(vior)0 1192 y(\(refreshing)12
b(the)g(curren)o(t)g(line)h(as)f(opp)q(osed)g(to)f(refreshing)i(the)f
(screen,)g(for)g(example\).)19 b(Some)12 b(c)o(ho)q(ose)f(to)h(ignore)0
-1207 y(it.)24 b(In)17 b(general,)g(if)g(a)g(function)g(uses)g(the)g(n)o
-(umeric)g(argumen)o(t)f(as)g(a)g(rep)q(eat)h(coun)o(t,)f(it)h(should)h(b)q(e)
-f(able)g(to)f(do)0 1269 y(something)f(useful)g(with)g(b)q(oth)f(negativ)o(e)h
-(and)f(p)q(ositiv)o(e)i(argumen)o(ts.)i(A)o(t)c(the)h(v)o(ery)f(least,)g(it)h
-(should)g(b)q(e)g(a)o(w)o(are)0 1331 y(that)f(it)i(can)f(b)q(e)h(passed)g(a)e
-(negativ)o(e)i(argumen)o(t.)1736 1494 y(V)l(ariable)-1899 b
-Fh(char)20 b(*)f Fg(rl)p 211 1494 18 3 v 21 w(line)p 320 1494
-V 23 w(bu\013er)120 1557 y Fo(This)f(is)g(the)f(line)i(gathered)e(so)g(far.)
-25 b(Y)l(ou)18 b(are)f(w)o(elcome)g(to)g(mo)q(dify)h(the)f(con)o(ten)o(ts)g
-(of)f(the)i(line,)120 1619 y(but)d(see)h(Section)g(2.3.5)d([Allo)o(wing)k
-(Undoing],)e(page)g(23.)1736 1782 y(V)l(ariable)-1899 b Fh(int)20
-b Fg(rl)p 140 1782 V 21 w(p)r(oin)n(t)120 1844 y Fo(The)15
-b(o\013set)g(of)f(the)i(curren)o(t)f(cursor)g(p)q(osition)h(in)g
-Fn(rl_line_buffer)d Fo(\(the)i Fj(p)q(oin)o(t)q Fo(\).)1736
-2007 y(V)l(ariable)-1899 b Fh(int)20 b Fg(rl)p 140 2007 V 21
-w(end)120 2070 y Fo(The)d(n)o(um)o(b)q(er)f(of)g(c)o(haracters)g(presen)o(t)g
-(in)h Fn(rl_line_buffer)p Fo(.)k(When)c Fn(rl_point)e Fo(is)i(at)f(the)g(end)
-120 2132 y(of)f(the)g(line,)i Fn(rl_point)d Fo(and)h Fn(rl_end)f
-Fo(are)h(equal.)1736 2295 y(V)l(ariable)-1899 b Fh(int)20 b
-Fg(rl)p 140 2295 V 21 w(mark)120 2357 y Fo(The)h(mark)e(\(sa)o(v)o(ed)h(p)q
-(osition\))h(in)g(the)f(curren)o(t)h(line.)37 b(If)20 b(set,)h(the)g(mark)e
-(and)i(p)q(oin)o(t)g(de\014ne)g(a)120 2420 y Fj(region)p Fo(.)1736
-2583 y(V)l(ariable)-1899 b Fh(int)20 b Fg(rl)p 140 2583 V 21
-w(done)120 2645 y Fo(Setting)13 b(this)h(to)f(a)f(non-zero)i(v)m(alue)g
-(causes)f(Readline)j(to)c(return)h(the)h(curren)o(t)f(line)h(immediately)l(.)
-p eop
-%%Page: 19 21
-20 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(19)1736 158 y(V)l(ariable)-1899 b Fh(int)20 b Fg(rl)p 140
-158 18 3 v 21 w(p)r(ending)p 361 158 V 20 w(input)120 221 y
-Fo(Setting)15 b(this)f(to)g(a)g(v)m(alue)i(mak)o(es)d(it)i(the)f(next)h(k)o
-(eystrok)o(e)e(read.)19 b(This)c(is)g(a)f(w)o(a)o(y)f(to)h(stu\013)g(a)g
-(single)120 283 y(c)o(haracter)g(in)o(to)i(the)f(input)h(stream.)1736
-451 y(V)l(ariable)-1899 b Fh(char)20 b(*)f Fg(rl)p 211 451
-V 21 w(prompt)120 513 y Fo(The)c(prompt)e(Readline)k(uses.)j(This)15
-b(is)f(set)h(from)e(the)h(argumen)o(t)g(to)g Fn(readline)g(\(\))p
-Fo(,)f(and)i(should)120 575 y(not)g(b)q(e)h(assigned)f(to)g(directly)l(.)1736
-743 y(V)l(ariable)-1899 b Fh(char)20 b(*)f Fg(rl)p 211 743
-V 21 w(terminal)p 443 743 V 21 w(name)120 806 y Fo(The)c(terminal)h(t)o(yp)q
-(e,)f(used)h(for)f(initialization.)1736 974 y(V)l(ariable)-1899
-b Fh(char)20 b(*)f Fg(rl)p 211 974 V 21 w(readline)p 430 974
-V 22 w(name)120 1036 y Fo(This)f(v)m(ariable)h(is)f(set)f(to)g(a)g(unique)i
-(name)f(b)o(y)f(eac)o(h)h(application)h(using)f(Readline.)29
-b(The)18 b(v)m(alue)120 1098 y(allo)o(ws)f(conditional)h(parsing)f(of)f(the)g
-(inputrc)i(\014le)f(\(see)g(Section)g(1.3.2)e([Conditional)j(Init)f(Con-)120
-1160 y(structs],)d(page)h(7\).)1736 1328 y(V)l(ariable)-1899
-b Fh(FILE)20 b(*)f Fg(rl)p 211 1328 V 21 w(instream)120 1391
-y Fo(The)c(stdio)h(stream)e(from)h(whic)o(h)h(Readline)h(reads)e(input.)1736
-1559 y(V)l(ariable)-1899 b Fh(FILE)20 b(*)f Fg(rl)p 211 1559
-V 21 w(outstream)120 1621 y Fo(The)c(stdio)h(stream)e(to)h(whic)o(h)h
-(Readline)h(p)q(erforms)e(output.)1736 1789 y(V)l(ariable)-1899
-b Fh(Function)20 b(*)g Fg(rl)p 316 1789 V 21 w(startup)p 520
-1789 V 20 w(ho)r(ok)120 1851 y Fo(If)13 b(non-zero,)h(this)f(is)h(the)f
-(address)g(of)g(a)f(function)i(to)f(call)h(just)f(b)q(efore)g
-Fn(readline)f Fo(prin)o(ts)h(the)g(\014rst)120 1913 y(prompt.)0
-2156 y Fm(2.3)33 b(Readline)16 b(Con)n(v)n(enience)g(F)-6 b(unctions)0
-2382 y Fi(2.3.1)30 b(Naming)15 b(a)g(F)-5 b(unction)62 2521
-y Fo(The)19 b(user)f(can)g(dynamically)i(c)o(hange)e(the)g(bindings)i(of)e(k)
-o(eys)f(while)j(using)f(Readline.)30 b(This)19 b(is)g(done)f(b)o(y)0
-2583 y(represen)o(ting)f(the)g(function)h(with)f(a)g(descriptiv)o(e)h(name.)
-25 b(The)17 b(user)g(is)g(able)h(to)e(t)o(yp)q(e)h(the)g(descriptiv)o(e)h
-(name)0 2645 y(when)e(referring)f(to)g(the)g(function.)21 b(Th)o(us,)14
-b(in)j(an)e(init)h(\014le,)g(one)f(migh)o(t)g(\014nd)p eop
-%%Page: 20 22
-21 bop 0 -83 a Fo(20)1449 b(GNU)15 b(Readline)i(Library)120
-158 y Fn(Meta-Rubout:)46 b(backward-kill-word)62 297 y Fo(This)21
-b(binds)f(the)g(k)o(eystrok)o(e)f Fn(META-RUBOUT)f Fo(to)h(the)h(function)g
-Fj(descriptiv)o(ely)26 b Fo(named)20 b Fn(backward-kill-)0
-359 y(word)p Fo(.)j(Y)l(ou,)16 b(as)g(the)g(programmer,)f(should)i(bind)h
-(the)e(functions)i(y)o(ou)d(write)i(to)e(descriptiv)o(e)j(names)e(as)g(w)o
-(ell.)0 421 y(Readline)i(pro)o(vides)d(a)g(function)h(for)f(doing)g(that:)
-1725 587 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140 587
-18 3 v 21 w(add)p 253 587 V 20 w(defun)i Ff(\()p Fn(char)14
-b(*name,)g(Function)g(*function,)g(int)h(key)p Ff(\))120 649
-y Fo(Add)20 b Fj(name)i Fo(to)d(the)h(list)g(of)f(named)h(functions.)33
-b(Mak)o(e)19 b Fj(function)i Fo(b)q(e)f(the)f(function)i(that)d(gets)120
-711 y(called.)j(If)16 b Fj(k)o(ey)j Fo(is)d(not)e(-1,)h(then)h(bind)g(it)g
-(to)e Fj(function)i Fo(using)g Fn(rl_bind_key)e(\(\))p Fo(.)62
-877 y(Using)i(this)g(function)g(alone)g(is)g(su\016cien)o(t)h(for)d(most)h
-(applications.)22 b(It)16 b(is)g(the)f(recommended)i(w)o(a)o(y)d(to)h(add)0
-940 y(a)i(few)h(functions)g(to)f(the)h(default)g(functions)h(that)e(Readline)
-j(has)d(built)i(in.)28 b(If)18 b(y)o(ou)g(need)g(to)f(do)h(something)0
-1002 y(other)c(than)h(adding)h(a)e(function)i(to)e(Readline,)j(y)o(ou)d(ma)o
-(y)g(need)i(to)e(use)h(the)g(underlying)h(functions)g(describ)q(ed)0
-1064 y(b)q(elo)o(w.)0 1283 y Fi(2.3.2)30 b(Selecting)15 b(a)g(Keymap)62
-1422 y Fo(Key)k(bindings)i(tak)o(e)c(place)j(on)e(a)g Fj(k)o(eymap)p
-Fo(.)30 b(The)18 b(k)o(eymap)h(is)g(the)f(asso)q(ciation)h(b)q(et)o(w)o(een)g
-(the)f(k)o(eys)h(that)0 1484 y(the)g(user)g(t)o(yp)q(es)g(and)g(the)g
-(functions)g(that)f(get)h(run.)30 b(Y)l(ou)20 b(can)e(mak)o(e)h(y)o(our)f(o)o
-(wn)g(k)o(eymaps,)h(cop)o(y)g(existing)0 1546 y(k)o(eymaps,)14
-b(and)i(tell)g(Readline)i(whic)o(h)e(k)o(eymap)f(to)f(use.)1725
-1712 y(F)l(unction)-1899 b Fh(Keymap)20 b Fg(rl)p 218 1712
-V 21 w(mak)n(e)p 370 1712 V 20 w(bare)p 500 1712 V 20 w(k)n(eymap)j
-Ff(\(\))120 1774 y Fo(Returns)14 b(a)f(new,)g(empt)o(y)g(k)o(eymap.)19
-b(The)14 b(space)f(for)g(the)h(k)o(eymap)f(is)g(allo)q(cated)i(with)e
-Fn(malloc)i(\(\))p Fo(;)120 1836 y(y)o(ou)g(should)h Fn(free)f(\(\))g
-Fo(it)g(when)h(y)o(ou)f(are)f(done.)1725 2002 y(F)l(unction)-1899
-b Fh(Keymap)20 b Fg(rl)p 218 2002 V 21 w(cop)n(y)p 353 2002
-V 21 w(k)n(eymap)j Ff(\()p Fn(Keymap)14 b(map)p Ff(\))120 2064
-y Fo(Return)i(a)f(new)g(k)o(eymap)g(whic)o(h)h(is)g(a)f(cop)o(y)g(of)g
-Fj(map)p Fo(.)1725 2230 y(F)l(unction)-1899 b Fh(Keymap)20
-b Fg(rl)p 218 2230 V 21 w(mak)n(e)p 370 2230 V 20 w(k)n(eymap)j
-Ff(\(\))120 2293 y Fo(Return)c(a)f(new)h(k)o(eymap)f(with)h(the)f(prin)o
-(ting)i(c)o(haracters)d(b)q(ound)j(to)e(rl)p 1407 2293 14 2
-v 16 w(insert,)i(the)e(lo)o(w)o(ercase)120 2355 y(Meta)13 b(c)o(haracters)g
-(b)q(ound)h(to)f(run)h(their)g(equiv)m(alen)o(ts,)i(and)d(the)h(Meta)f
-(digits)h(b)q(ound)h(to)e(pro)q(duce)120 2417 y(n)o(umeric)j(argumen)o(ts.)
-1725 2583 y(F)l(unction)-1899 b Fh(void)20 b Fg(rl)p 166 2583
-18 3 v 21 w(discard)p 366 2583 V 21 w(k)n(eymap)i Ff(\()p Fn(Keymap)14
-b(keymap)p Ff(\))120 2645 y Fo(F)l(ree)h(the)h(storage)d(asso)q(ciated)j
-(with)f Fj(k)o(eymap)p Fo(.)p eop
-%%Page: 21 23
-22 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(21)62 158 y(Readline)20 b(has)d(sev)o(eral)h(in)o(ternal)g(k)o(eymaps.)26
-b(These)18 b(functions)g(allo)o(w)g(y)o(ou)f(to)g(c)o(hange)g(whic)o(h)h(k)o
-(eymap)f(is)0 221 y(activ)o(e.)1725 383 y(F)l(unction)-1899
-b Fh(Keymap)20 b Fg(rl)p 218 383 18 3 v 21 w(get)p 316 383
-V 21 w(k)n(eymap)i Ff(\(\))120 445 y Fo(Returns)16 b(the)f(curren)o(tly)h
-(activ)o(e)f(k)o(eymap.)1725 607 y(F)l(unction)-1899 b Fh(void)20
-b Fg(rl)p 166 607 V 21 w(set)p 258 607 V 21 w(k)n(eymap)i Ff(\()p
-Fn(Keymap)14 b(keymap)p Ff(\))120 669 y Fo(Mak)o(es)g Fj(k)o(eymap)j
-Fo(the)e(curren)o(tly)h(activ)o(e)f(k)o(eymap.)1725 831 y(F)l(unction)-1899
-b Fh(Keymap)20 b Fg(rl)p 218 831 V 21 w(get)p 316 831 V 21
-w(k)n(eymap)p 530 831 V 20 w(b)n(y)p 610 831 V 21 w(name)i
-Ff(\()p Fn(char)14 b(*name)p Ff(\))120 893 y Fo(Return)19 b(the)g(k)o(eymap)f
-(matc)o(hing)g Fj(name)p Fo(.)30 b Fj(name)21 b Fo(is)e(one)g(whic)o(h)g(w)o
-(ould)g(b)q(e)g(supplied)i(in)e(a)f Fn(set)120 955 y(keymap)c
-Fo(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)j(Init)f(File],)g(page)
-f(4\).)0 1163 y Fi(2.3.3)30 b(Binding)15 b(Keys)62 1300 y Fo(Y)l(ou)h(asso)q
-(ciate)f(k)o(eys)f(with)i(functions)g(through)e(the)i(k)o(eymap.)j(Readline)f
-(has)c(sev)o(eral)i(in)o(ternal)g(k)o(eymaps:)0 1362 y Fn
-(emacs_standard_keymap)p Fo(,)i Fn(emacs_meta_keymap)p Fo(,)g
-Fn(emacs_ctlx_keymap)p Fo(,)h Fn(vi_movement_keymap)p Fo(,)f(and)0
-1425 y Fn(vi_insertion_keymap)p Fo(.)h Fn(emacs_standard_keymap)13
-b Fo(is)k(the)f(default,)g(and)g(the)g(examples)h(in)f(this)h(man)o(ual)0
-1487 y(assume)e(that.)62 1624 y(These)h(functions)g(manage)e(k)o(ey)i
-(bindings.)1725 1786 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p
-140 1786 V 21 w(bind)p 272 1786 V 21 w(k)n(ey)k Ff(\()p Fn(int)14
-b(key,)h(Function)f(*function)p Ff(\))120 1848 y Fo(Binds)i
-Fj(k)o(ey)j Fo(to)14 b Fj(function)i Fo(in)g(the)f(curren)o(tly)h(activ)o(e)f
-(k)o(eymap.)k(Returns)d(non-zero)f(in)h(the)f(case)g(of)120
-1910 y(an)g(in)o(v)m(alid)j Fj(k)o(ey)p Fo(.)1725 2072 y(F)l(unction)-1899
-b Fh(int)19 b Fg(rl)p 139 2072 V 21 w(bind)p 271 2072 V 21
-w(k)n(ey)p 376 2072 V 21 w(in)p 444 2072 V 22 w(map)i Ff(\()p
-Fn(int)14 b(key,)h(Function)f(*function,)g(Keymap)g(map)p Ff(\))120
-2134 y Fo(Bind)i Fj(k)o(ey)j Fo(to)c Fj(function)h Fo(in)g
-Fj(map)p Fo(.)k(Returns)15 b(non-zero)h(in)g(the)f(case)g(of)g(an)g(in)o(v)m
-(alid)j Fj(k)o(ey)p Fo(.)1725 2296 y(F)l(unction)-1899 b Fh(int)20
-b Fg(rl)p 140 2296 V 21 w(un)n(bind)p 334 2296 V 21 w(k)n(ey)k
-Ff(\()p Fn(int)14 b(key)p Ff(\))120 2359 y Fo(Bind)h Fj(k)o(ey)i
-Fo(to)c(the)h(n)o(ull)h(function)f(in)g(the)g(curren)o(tly)g(activ)o(e)g(k)o
-(eymap.)19 b(Returns)14 b(non-zero)g(in)g(case)120 2421 y(of)h(error.)1725
-2583 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140 2583 V 21
-w(un)n(bind)p 334 2583 V 21 w(k)n(ey)p 439 2583 V 21 w(in)p
-507 2583 V 22 w(map)h Ff(\()p Fn(int)14 b(key,)h(Keymap)f(map)p
-Ff(\))120 2645 y Fo(Bind)i Fj(k)o(ey)j Fo(to)c(the)g(n)o(ull)i(function)f(in)
-g Fj(map)p Fo(.)k(Returns)15 b(non-zero)h(in)g(case)f(of)g(error.)p
+1255 y(it.)24 b(In)17 b(general,)g(if)g(a)g(function)g(uses)g(the)g(n)o
+(umeric)g(argumen)o(t)f(as)g(a)g(rep)q(eat)h(coun)o(t,)f(it)h(should)h
+(b)q(e)f(able)g(to)f(do)0 1317 y(something)f(useful)g(with)g(b)q(oth)f
+(negativ)o(e)h(and)f(p)q(ositiv)o(e)i(argumen)o(ts.)i(A)o(t)c(the)h(v)o
+(ery)f(least,)g(it)h(should)g(b)q(e)g(a)o(w)o(are)0 1379
+y(that)f(it)i(can)f(b)q(e)h(passed)g(a)e(negativ)o(e)i(argumen)o(t.)0
+1645 y Fp(2.3)33 b(Readline)16 b(V)-6 b(ariables)62 1787
+y Fr(These)16 b(v)m(ariables)g(are)f(a)o(v)m(ailable)i(to)e(function)h
+(writers.)1736 1963 y(V)l(ariable)-1899 b Fi(char)20
+b(*)f Fh(rl)p 211 1963 18 3 v 21 w(line)p 320 1963 V
+23 w(bu\013er)120 2025 y Fr(This)f(is)g(the)f(line)i(gathered)e(so)g
+(far.)25 b(Y)l(ou)18 b(are)f(w)o(elcome)g(to)g(mo)q(dify)h(the)f(con)o
+(ten)o(ts)g(of)f(the)i(line,)120 2087 y(but)d(see)h(Section)g(2.4.5)d
+([Allo)o(wing)k(Undoing],)e(page)g(28.)1736 2263 y(V)l(ariable)-1899
+b Fi(int)20 b Fh(rl)p 140 2263 V 21 w(p)r(oin)n(t)120
+2325 y Fr(The)15 b(o\013set)g(of)f(the)i(curren)o(t)f(cursor)g(p)q
+(osition)h(in)g Fq(rl_line_buffer)d Fr(\(the)i Fl(p)q(oin)o(t)q
+Fr(\).)1736 2501 y(V)l(ariable)-1899 b Fi(int)20 b Fh(rl)p
+140 2501 V 21 w(end)120 2563 y Fr(The)d(n)o(um)o(b)q(er)f(of)g(c)o
+(haracters)g(presen)o(t)g(in)h Fq(rl_line_buffer)p Fr(.)k(When)c
+Fq(rl_point)e Fr(is)i(at)f(the)g(end)120 2626 y(of)f(the)g(line,)i
+Fq(rl_point)d Fr(and)h Fq(rl_end)f Fr(are)h(equal.)p
eop
-%%Page: 22 24
-23 bop 0 -83 a Fo(22)1449 b(GNU)15 b(Readline)i(Library)1725
-158 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140 158 18 3
-v 21 w(generic)p 338 158 V 21 w(bind)j Ff(\()p Fn(int)15 b(type,)f(char)h
-(*keyseq,)f(char)h(*data,)f(Keymap)208 221 y(map)p Ff(\))120
-283 y Fo(Bind)j(the)f(k)o(ey)g(sequence)h(represen)o(ted)f(b)o(y)g(the)g
-(string)g Fj(k)o(eyseq)g Fo(to)g(the)f(arbitrary)h(p)q(oin)o(ter)g
-Fj(data)p Fo(.)120 345 y Fj(t)o(yp)q(e)j Fo(sa)o(ys)c(what)g(kind)i(of)f
-(data)f(is)i(p)q(oin)o(ted)g(to)e(b)o(y)h Fj(data)p Fo(;)f(this)i(can)f(b)q
-(e)g(a)g(function)h(\()p Fn(ISFUNC)p Fo(\),)d(a)120 407 y(macro)i(\()p
-Fn(ISMACR)p Fo(\),)f(or)i(a)f(k)o(eymap)g(\()p Fn(ISKMAP)p
-Fo(\).)23 b(This)18 b(mak)o(es)e(new)h(k)o(eymaps)f(as)h(necessary)l(.)25
-b(The)120 470 y(initial)17 b(k)o(eymap)e(in)h(whic)o(h)g(to)f(do)g(bindings)i
-(is)f Fj(map)p Fo(.)1725 656 y(F)l(unction)-1899 b Fh(int)20
-b Fg(rl)p 140 656 V 21 w(parse)p 294 656 V 19 w(and)p 405 656
-V 21 w(bind)j Ff(\()p Fn(char)14 b(*line)p Ff(\))120 718 y
-Fo(P)o(arse)i Fj(line)21 b Fo(as)16 b(if)h(it)g(had)f(b)q(een)i(read)f(from)e
-(the)i Fn(inputrc)f Fo(\014le)h(and)g(p)q(erform)f(an)o(y)h(k)o(ey)f
-(bindings)120 780 y(and)f(v)m(ariable)i(assignmen)o(ts)e(found)h(\(see)f
-(Section)h(1.3)e([Readline)j(Init)f(File],)g(page)f(4\).)0
-1061 y Fi(2.3.4)30 b(Asso)r(ciating)15 b(F)-5 b(unction)15
-b(Names)g(and)g(Bindings)62 1206 y Fo(These)22 b(functions)g(allo)o(w)g(y)o
-(ou)f(to)f(\014nd)i(out)f(what)g(k)o(eys)g(in)o(v)o(ok)o(e)h(named)f
-(functions)h(and)g(the)f(functions)0 1269 y(in)o(v)o(ok)o(ed)15
-b(b)o(y)h(a)e(particular)i(k)o(ey)f(sequence.)1725 1455 y(F)l(unction)-1899
-b Fh(Function)20 b(*)g Fg(rl)p 316 1455 V 21 w(named)p 504
-1455 V 19 w(function)j Ff(\()p Fn(char)14 b(*name)p Ff(\))120
-1517 y Fo(Return)i(the)f(function)h(with)g(name)f Fj(name)p
-Fo(.)1725 1703 y(F)l(unction)-1899 b Fh(Function)20 b(*)g Fg(rl)p
-316 1703 V 21 w(function)p 542 1703 V 21 w(of)p 610 1703 V
-19 w(k)n(eyseq)k Ff(\()p Fn(char)15 b(*keyseq,)f(Keymap)g(map,)h(int)208
-1766 y(*type)p Ff(\))120 1828 y Fo(Return)i(the)f(function)h(in)o(v)o(ok)o
-(ed)g(b)o(y)f Fj(k)o(eyseq)i Fo(in)f(k)o(eymap)f Fj(map)p Fo(.)23
-b(If)16 b Fj(map)i Fo(is)f(NULL,)g(the)f(curren)o(t)120 1890
-y(k)o(eymap)g(is)i(used.)25 b(If)17 b Fj(t)o(yp)q(e)i Fo(is)e(not)g(NULL,)g
-(the)g(t)o(yp)q(e)g(of)f(the)h(ob)s(ject)f(is)h(returned)g(in)h(it)f(\(one)f
-(of)120 1952 y Fn(ISFUNC)p Fo(,)e Fn(ISKMAP)p Fo(,)g(or)h Fn(ISMACR)p
-Fo(\).)1725 2139 y(F)l(unction)-1899 b Fh(char)20 b(**)f Fg(rl)p
-237 2139 V 21 w(in)n(v)n(oking)p 466 2139 V 23 w(k)n(eyseqs)k
-Ff(\()p Fn(Function)14 b(*function)p Ff(\))120 2201 y Fo(Return)19
-b(an)e(arra)o(y)g(of)h(strings)f(represen)o(ting)i(the)f(k)o(ey)g(sequences)h
-(used)f(to)f(in)o(v)o(ok)o(e)h Fj(function)h Fo(in)120 2263
-y(the)c(curren)o(t)g(k)o(eymap.)1725 2449 y(F)l(unction)-1899
-b Fh(char)20 b(**)f Fg(rl)p 237 2449 V 21 w(in)n(v)n(oking)p
-466 2449 V 23 w(k)n(eyseqs)p 675 2449 V 21 w(in)p 743 2449
-V 22 w(map)i Ff(\()p Fn(Function)14 b(*function,)f(Keymap)208
-2512 y(map)p Ff(\))120 2574 y Fo(Return)19 b(an)e(arra)o(y)g(of)h(strings)f
-(represen)o(ting)i(the)f(k)o(ey)g(sequences)h(used)f(to)f(in)o(v)o(ok)o(e)h
-Fj(function)h Fo(in)120 2636 y(the)c(k)o(eymap)g Fj(map)p Fo(.)p
+23 24 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(23)1736 183 y(V)l(ariable)-1899 b Fi(int)20
+b Fh(rl)p 140 183 18 3 v 21 w(mark)120 246 y Fr(The)h(mark)e(\(sa)o(v)o
+(ed)h(p)q(osition\))h(in)g(the)f(curren)o(t)h(line.)37
+b(If)20 b(set,)h(the)g(mark)e(and)i(p)q(oin)o(t)g(de\014ne)g(a)120
+308 y Fl(region)p Fr(.)1736 473 y(V)l(ariable)-1899 b
+Fi(int)20 b Fh(rl)p 140 473 V 21 w(done)120 536 y Fr(Setting)13
+b(this)h(to)f(a)f(non-zero)i(v)m(alue)g(causes)f(Readline)j(to)c
+(return)h(the)h(curren)o(t)f(line)h(immediately)l(.)1736
+701 y(V)l(ariable)-1899 b Fi(int)20 b Fh(rl)p 140 701
+V 21 w(p)r(ending)p 361 701 V 20 w(input)120 764 y Fr(Setting)15
+b(this)f(to)g(a)g(v)m(alue)i(mak)o(es)d(it)i(the)f(next)h(k)o(eystrok)o
+(e)e(read.)19 b(This)c(is)g(a)f(w)o(a)o(y)f(to)h(stu\013)g(a)g(single)
+120 826 y(c)o(haracter)g(in)o(to)i(the)f(input)h(stream.)1736
+991 y(V)l(ariable)-1899 b Fi(char)20 b(*)f Fh(rl)p 211
+991 V 21 w(prompt)120 1054 y Fr(The)c(prompt)e(Readline)k(uses.)j(This)
+15 b(is)f(set)h(from)e(the)h(argumen)o(t)g(to)g Fq(readline)g(\(\))p
+Fr(,)f(and)i(should)120 1116 y(not)g(b)q(e)h(assigned)f(to)g(directly)l
+(.)1736 1282 y(V)l(ariable)-1899 b Fi(char)20 b(*)f Fh(rl)p
+211 1282 V 21 w(library)p 400 1282 V 22 w(v)n(ersion)120
+1344 y Fr(The)c(v)o(ersion)h(n)o(um)o(b)q(er)f(of)g(this)h(revision)g
+(of)f(the)g(library)l(.)1736 1509 y(V)l(ariable)-1899
+b Fi(char)20 b(*)f Fh(rl)p 211 1509 V 21 w(terminal)p
+443 1509 V 21 w(name)120 1572 y Fr(The)c(terminal)h(t)o(yp)q(e,)f(used)
+h(for)f(initialization.)1736 1737 y(V)l(ariable)-1899
+b Fi(char)20 b(*)f Fh(rl)p 211 1737 V 21 w(readline)p
+430 1737 V 22 w(name)120 1800 y Fr(This)f(v)m(ariable)h(is)f(set)f(to)g
+(a)g(unique)i(name)f(b)o(y)f(eac)o(h)h(application)h(using)f(Readline.)
+29 b(The)18 b(v)m(alue)120 1862 y(allo)o(ws)f(conditional)h(parsing)f
+(of)f(the)g(inputrc)i(\014le)f(\(see)g(Section)g(1.3.2)e([Conditional)j
+(Init)f(Con-)120 1924 y(structs],)d(page)h(8\).)1736
+2090 y(V)l(ariable)-1899 b Fi(FILE)20 b(*)f Fh(rl)p 211
+2090 V 21 w(instream)120 2152 y Fr(The)c(stdio)h(stream)e(from)h(whic)o
+(h)h(Readline)h(reads)e(input.)1736 2318 y(V)l(ariable)-1899
+b Fi(FILE)20 b(*)f Fh(rl)p 211 2318 V 21 w(outstream)120
+2380 y Fr(The)c(stdio)h(stream)e(to)h(whic)o(h)h(Readline)h(p)q
+(erforms)e(output.)1736 2545 y(V)l(ariable)-1899 b Fi(Function)20
+b(*)g Fh(rl)p 316 2545 V 21 w(startup)p 520 2545 V 20
+w(ho)r(ok)120 2608 y Fr(If)13 b(non-zero,)h(this)f(is)h(the)f(address)g
+(of)g(a)f(function)i(to)f(call)h(just)f(b)q(efore)g Fq(readline)f
+Fr(prin)o(ts)h(the)g(\014rst)120 2670 y(prompt.)p eop
+24 25 bop 0 -58 a Fr(24)1449 b(GNU)15 b(Readline)i(Library)1736
+183 y(V)l(ariable)-1899 b Fi(Function)20 b(*)g Fh(rl)p
+316 183 18 3 v 21 w(ev)n(en)n(t)p 469 183 V 22 w(ho)r(ok)120
+246 y Fr(If)13 b(non-zero,)f(this)h(is)g(the)g(address)f(of)g(a)g
+(function)h(to)f(call)i(p)q(erio)q(dically)h(when)e(readline)h(is)f(w)o
+(aiting)120 308 y(for)i(terminal)h(input.)1736 471 y(V)l(ariable)-1899
+b Fi(Function)20 b(*)g Fh(rl)p 316 471 V 21 w(getc)p
+439 471 V 21 w(function)120 533 y Fr(If)c(non-zero,)h
+Fq(readline)d Fr(will)k(call)f(indirectly)i(through)c(this)i(p)q(oin)o
+(ter)g(to)e(get)h(a)f(c)o(haracter)h(from)120 595 y(the)k(input)h
+(stream.)33 b(By)20 b(default,)i(it)e(is)g(set)g(to)g
+Fq(rl_getc)p Fr(,)f(the)h(default)h Fq(readline)e Fr(c)o(haracter)120
+657 y(input)d(function)g(\(see)f(Section)h(2.4.8)e([Utilit)o(y)i(F)l
+(unctions],)f(page)g(31\).)1736 820 y(V)l(ariable)-1899
+b Fi(VFunction)20 b(*)g Fh(rl)p 342 820 V 21 w(redispla)n(y)p
+586 820 V 22 w(function)120 883 y Fr(If)f(non-zero,)h
+Fq(readline)e Fr(will)i(call)g(indirectly)i(through)c(this)i(p)q(oin)o
+(ter)f(to)f(up)q(date)i(the)f(displa)o(y)120 945 y(with)d(the)g(curren)
+o(t)f(con)o(ten)o(ts)g(of)h(the)f(editing)i(bu\013er.)22
+b(By)15 b(default,)h(it)g(is)h(set)e(to)g Fq(rl_redisplay)p
+Fr(,)120 1007 y(the)g(default)h Fq(readline)e Fr(redispla)o(y)i
+(function)g(\(see)g(Section)g(2.4.6)d([Redispla)o(y],)j(page)f(29\).)
+1736 1170 y(V)l(ariable)-1899 b Fi(Keymap)20 b Fh(rl)p
+218 1170 V 21 w(executing)p 476 1170 V 22 w(k)n(eymap)120
+1232 y Fr(This)15 b(v)m(ariable)h(is)f(set)g(to)f(the)g(k)o(eymap)h
+(\(see)f(Section)i(2.4.2)d([Keymaps],)h(page)g(25\))g(in)h(whic)o(h)h
+(the)120 1294 y(curren)o(tly)g(executing)g(readline)h(function)f(w)o
+(as)e(found.)1736 1457 y(V)l(ariable)-1899 b Fi(Keymap)20
+b Fh(rl)p 218 1457 V 21 w(binding)p 426 1457 V 22 w(k)n(eymap)120
+1520 y Fr(This)15 b(v)m(ariable)h(is)f(set)g(to)f(the)g(k)o(eymap)h
+(\(see)f(Section)i(2.4.2)d([Keymaps],)h(page)g(25\))g(in)h(whic)o(h)h
+(the)120 1582 y(last)f(k)o(ey)g(binding)i(o)q(ccurred.)0
+1809 y Fp(2.4)33 b(Readline)16 b(Con)n(v)n(enience)g(F)-6
+b(unctions)0 2019 y Fk(2.4.1)30 b(Naming)15 b(a)g(F)-5
+b(unction)62 2157 y Fr(The)19 b(user)f(can)g(dynamically)i(c)o(hange)e
+(the)g(bindings)i(of)e(k)o(eys)f(while)j(using)f(Readline.)30
+b(This)19 b(is)g(done)f(b)o(y)0 2219 y(represen)o(ting)f(the)g
+(function)h(with)f(a)g(descriptiv)o(e)h(name.)25 b(The)17
+b(user)g(is)g(able)h(to)e(t)o(yp)q(e)h(the)g(descriptiv)o(e)h(name)0
+2281 y(when)e(referring)f(to)g(the)g(function.)21 b(Th)o(us,)14
+b(in)j(an)e(init)h(\014le,)g(one)f(migh)o(t)g(\014nd)120
+2408 y Fq(Meta-Rubout:)46 b(backward-kill-word)62 2545
+y Fr(This)21 b(binds)f(the)g(k)o(eystrok)o(e)f Fq(META-RUBOUT)f
+Fr(to)h(the)h(function)g Fl(descriptiv)o(ely)26 b Fr(named)20
+b Fq(backward-kill-)0 2608 y(word)p Fr(.)j(Y)l(ou,)16
+b(as)g(the)g(programmer,)f(should)i(bind)h(the)e(functions)i(y)o(ou)d
+(write)i(to)e(descriptiv)o(e)j(names)e(as)g(w)o(ell.)0
+2670 y(Readline)i(pro)o(vides)d(a)g(function)h(for)f(doing)g(that:)p
eop
-%%Page: 23 25
-24 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(23)0 158 y Fi(2.3.5)30 b(Allo)n(wing)16 b(Undoing)62 297
-y Fo(Supp)q(orting)f(the)f(undo)g(command)g(is)g(a)g(painless)h(thing,)f(and)
-g(mak)o(es)f(y)o(our)h(functions)g(m)o(uc)o(h)g(more)f(useful.)0
-359 y(It)i(is)g(certainly)g(easy)f(to)g(try)g(something)h(if)g(y)o(ou)f(kno)o
-(w)g(y)o(ou)g(can)h(undo)g(it.)20 b(I)15 b(could)g(use)g(an)f(undo)h
-(function)h(for)0 422 y(the)f(sto)q(c)o(k)g(mark)o(et.)62 561
-y(If)h(y)o(our)f(function)i(simply)g(inserts)f(text)f(once,)h(or)f(deletes)h
-(text)f(once,)h(and)g(uses)g Fn(rl_insert_text)d(\(\))i Fo(or)0
-623 y Fn(rl_delete_text)e(\(\))i Fo(to)g(do)g(it,)g(then)g(undoing)i(is)e
-(already)h(done)f(for)g(y)o(ou)g(automatically)l(.)62 762 y(If)h(y)o(ou)f(do)
-g(m)o(ultiple)i(insertions)f(or)f(m)o(ultiple)i(deletions,)f(or)f(an)o(y)g
-(com)o(bination)h(of)f(these)g(op)q(erations,)g(y)o(ou)0 824
-y(should)j(group)e(them)g(together)g(in)o(to)g(one)h(op)q(eration.)24
-b(This)17 b(is)g(done)g(with)g Fn(rl_begin_undo_group)c(\(\))j
-Fo(and)0 886 y Fn(rl_end_undo_group)d(\(\))p Fo(.)62 1025 y(The)j(t)o(yp)q
-(es)f(of)g(ev)o(en)o(ts)g(that)f(can)h(b)q(e)h(undone)g(are:)120
-1151 y Fn(enum)23 b(undo_code)g({)h(UNDO_DELETE,)e(UNDO_INSERT,)g
-(UNDO_BEGIN,)g(UNDO_END)h(};)62 1290 y Fo(Notice)c(that)e Fn(UNDO_DELETE)f
-Fo(means)i(to)f(insert)i(some)e(text,)h(and)g Fn(UNDO_INSERT)e
-Fo(means)i(to)f(delete)i(some)0 1353 y(text.)37 b(That)21 b(is,)i(the)e(undo)
-h(co)q(de)f(tells)i(undo)e(what)g(to)f(undo,)j(not)e(ho)o(w)g(to)f(undo)i
-(it.)38 b Fn(UNDO_BEGIN)20 b Fo(and)0 1415 y Fn(UNDO_END)14
-b Fo(are)h(tags)f(added)i(b)o(y)f Fn(rl_begin_undo_group)e(\(\))i
-Fo(and)g Fn(rl_end_undo_group)e(\(\))p Fo(.)1725 1582 y(F)l(unction)-1899
-b Fh(int)20 b Fg(rl)p 140 1582 18 3 v 21 w(b)r(egin)p 297 1582
-V 20 w(undo)p 442 1582 V 20 w(group)h Ff(\(\))120 1645 y Fo(Begins)e(sa)o
+25 26 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(25)1725 183 y(F)l(unction)-1899 b Fi(int)20
+b Fh(rl)p 140 183 18 3 v 21 w(add)p 253 183 V 20 w(defun)i
+Fg(\()p Fq(char)14 b(*name,)g(Function)g(*function,)g(int)h(key)p
+Fg(\))120 246 y Fr(Add)20 b Fl(name)i Fr(to)d(the)h(list)g(of)f(named)h
+(functions.)33 b(Mak)o(e)19 b Fl(function)i Fr(b)q(e)f(the)f(function)i
+(that)d(gets)120 308 y(called.)j(If)16 b Fl(k)o(ey)j
+Fr(is)d(not)e(-1,)h(then)h(bind)g(it)g(to)e Fl(function)i
+Fr(using)g Fq(rl_bind_key)e(\(\))p Fr(.)62 471 y(Using)i(this)g
+(function)g(alone)g(is)g(su\016cien)o(t)h(for)d(most)h(applications.)22
+b(It)16 b(is)g(the)f(recommended)i(w)o(a)o(y)d(to)h(add)0
+533 y(a)i(few)h(functions)g(to)f(the)h(default)g(functions)h(that)e
+(Readline)j(has)d(built)i(in.)28 b(If)18 b(y)o(ou)g(need)g(to)f(do)h
+(something)0 595 y(other)c(than)h(adding)h(a)e(function)i(to)e
+(Readline,)j(y)o(ou)d(ma)o(y)g(need)i(to)e(use)h(the)g(underlying)h
+(functions)g(describ)q(ed)0 658 y(b)q(elo)o(w.)0 869
+y Fk(2.4.2)30 b(Selecting)15 b(a)g(Keymap)62 1006 y Fr(Key)k(bindings)i
+(tak)o(e)c(place)j(on)e(a)g Fl(k)o(eymap)p Fr(.)30 b(The)18
+b(k)o(eymap)h(is)g(the)f(asso)q(ciation)h(b)q(et)o(w)o(een)g(the)f(k)o
+(eys)h(that)0 1069 y(the)g(user)g(t)o(yp)q(es)g(and)g(the)g(functions)g
+(that)f(get)h(run.)30 b(Y)l(ou)20 b(can)e(mak)o(e)h(y)o(our)f(o)o(wn)g
+(k)o(eymaps,)h(cop)o(y)g(existing)0 1131 y(k)o(eymaps,)14
+b(and)i(tell)g(Readline)i(whic)o(h)e(k)o(eymap)f(to)f(use.)1725
+1294 y(F)l(unction)-1899 b Fi(Keymap)20 b Fh(rl)p 218
+1294 V 21 w(mak)n(e)p 370 1294 V 20 w(bare)p 500 1294
+V 20 w(k)n(eymap)j Fg(\(\))120 1356 y Fr(Returns)14 b(a)f(new,)g(empt)o
+(y)g(k)o(eymap.)19 b(The)14 b(space)f(for)g(the)h(k)o(eymap)f(is)g
+(allo)q(cated)i(with)e Fq(malloc)i(\(\))p Fr(;)120 1419
+y(y)o(ou)g(should)h Fq(free)f(\(\))g Fr(it)g(when)h(y)o(ou)f(are)f
+(done.)1725 1582 y(F)l(unction)-1899 b Fi(Keymap)20 b
+Fh(rl)p 218 1582 V 21 w(cop)n(y)p 353 1582 V 21 w(k)n(eymap)j
+Fg(\()p Fq(Keymap)14 b(map)p Fg(\))120 1644 y Fr(Return)i(a)f(new)g(k)o
+(eymap)g(whic)o(h)h(is)g(a)f(cop)o(y)g(of)g Fl(map)p
+Fr(.)1725 1807 y(F)l(unction)-1899 b Fi(Keymap)20 b Fh(rl)p
+218 1807 V 21 w(mak)n(e)p 370 1807 V 20 w(k)n(eymap)j
+Fg(\(\))120 1869 y Fr(Return)c(a)f(new)h(k)o(eymap)f(with)h(the)f(prin)
+o(ting)i(c)o(haracters)d(b)q(ound)j(to)e(rl)p 1407 1869
+14 2 v 16 w(insert,)i(the)e(lo)o(w)o(ercase)120 1932
+y(Meta)13 b(c)o(haracters)g(b)q(ound)h(to)f(run)h(their)g(equiv)m(alen)
+o(ts,)i(and)d(the)h(Meta)f(digits)h(b)q(ound)h(to)e(pro)q(duce)120
+1994 y(n)o(umeric)j(argumen)o(ts.)1725 2157 y(F)l(unction)-1899
+b Fi(void)20 b Fh(rl)p 166 2157 18 3 v 21 w(discard)p
+366 2157 V 21 w(k)n(eymap)i Fg(\()p Fq(Keymap)14 b(keymap)p
+Fg(\))120 2219 y Fr(F)l(ree)h(the)h(storage)d(asso)q(ciated)j(with)f
+Fl(k)o(eymap)p Fr(.)62 2382 y(Readline)20 b(has)d(sev)o(eral)h(in)o
+(ternal)g(k)o(eymaps.)26 b(These)18 b(functions)g(allo)o(w)g(y)o(ou)f
+(to)g(c)o(hange)g(whic)o(h)h(k)o(eymap)f(is)0 2445 y(activ)o(e.)1725
+2608 y(F)l(unction)-1899 b Fi(Keymap)20 b Fh(rl)p 218
+2608 V 21 w(get)p 316 2608 V 21 w(k)n(eymap)i Fg(\(\))120
+2670 y Fr(Returns)16 b(the)f(curren)o(tly)h(activ)o(e)f(k)o(eymap.)p
+eop
+26 27 bop 0 -58 a Fr(26)1449 b(GNU)15 b(Readline)i(Library)1725
+183 y(F)l(unction)-1899 b Fi(void)20 b Fh(rl)p 166 183
+18 3 v 21 w(set)p 258 183 V 21 w(k)n(eymap)i Fg(\()p
+Fq(Keymap)14 b(keymap)p Fg(\))120 246 y Fr(Mak)o(es)g
+Fl(k)o(eymap)j Fr(the)e(curren)o(tly)h(activ)o(e)f(k)o(eymap.)1725
+420 y(F)l(unction)-1899 b Fi(Keymap)20 b Fh(rl)p 218
+420 V 21 w(get)p 316 420 V 21 w(k)n(eymap)p 530 420 V
+20 w(b)n(y)p 610 420 V 21 w(name)i Fg(\()p Fq(char)14
+b(*name)p Fg(\))120 482 y Fr(Return)19 b(the)g(k)o(eymap)f(matc)o(hing)
+g Fl(name)p Fr(.)30 b Fl(name)21 b Fr(is)e(one)g(whic)o(h)g(w)o(ould)g
+(b)q(e)g(supplied)i(in)e(a)f Fq(set)120 544 y(keymap)c
+Fr(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)j(Init)f(File],)g
+(page)f(5\).)1725 719 y(F)l(unction)-1899 b Fi(char)20
+b(*)f Fh(rl)p 211 719 V 21 w(get)p 309 719 V 21 w(k)n(eymap)p
+523 719 V 20 w(name)i Fg(\()p Fq(Keymap)14 b(keymap)p
+Fg(\))120 781 y Fr(Return)19 b(the)g(name)f(matc)o(hing)h
+Fl(k)o(eymap)p Fr(.)29 b Fl(name)21 b Fr(is)e(one)g(whic)o(h)g(w)o
+(ould)g(b)q(e)g(supplied)i(in)e(a)f Fq(set)120 843 y(keymap)c
+Fr(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)j(Init)f(File],)g
+(page)f(5\).)0 1088 y Fk(2.4.3)30 b(Binding)15 b(Keys)62
+1229 y Fr(Y)l(ou)h(asso)q(ciate)f(k)o(eys)f(with)i(functions)g(through)
+e(the)i(k)o(eymap.)j(Readline)f(has)c(sev)o(eral)i(in)o(ternal)g(k)o
+(eymaps:)0 1291 y Fq(emacs_standard_keymap)p Fr(,)i Fq
+(emacs_meta_keymap)p Fr(,)g Fq(emacs_ctlx_keymap)p Fr(,)h
+Fq(vi_movement_keymap)p Fr(,)f(and)0 1354 y Fq(vi_insertion_keymap)p
+Fr(.)h Fq(emacs_standard_keymap)13 b Fr(is)k(the)f(default,)g(and)g
+(the)g(examples)h(in)f(this)h(man)o(ual)0 1416 y(assume)e(that.)62
+1557 y(These)h(functions)g(manage)e(k)o(ey)i(bindings.)1725
+1731 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p 140 1731
+V 21 w(bind)p 272 1731 V 21 w(k)n(ey)k Fg(\()p Fq(int)14
+b(key,)h(Function)f(*function)p Fg(\))120 1794 y Fr(Binds)i
+Fl(k)o(ey)j Fr(to)14 b Fl(function)i Fr(in)g(the)f(curren)o(tly)h
+(activ)o(e)f(k)o(eymap.)k(Returns)d(non-zero)f(in)h(the)f(case)g(of)120
+1856 y(an)g(in)o(v)m(alid)j Fl(k)o(ey)p Fr(.)1725 2030
+y(F)l(unction)-1899 b Fi(int)19 b Fh(rl)p 139 2030 V
+21 w(bind)p 271 2030 V 21 w(k)n(ey)p 376 2030 V 21 w(in)p
+444 2030 V 22 w(map)i Fg(\()p Fq(int)14 b(key,)h(Function)f(*function,)
+g(Keymap)g(map)p Fg(\))120 2093 y Fr(Bind)i Fl(k)o(ey)j
+Fr(to)c Fl(function)h Fr(in)g Fl(map)p Fr(.)k(Returns)15
+b(non-zero)h(in)g(the)f(case)g(of)g(an)g(in)o(v)m(alid)j
+Fl(k)o(ey)p Fr(.)1725 2267 y(F)l(unction)-1899 b Fi(int)20
+b Fh(rl)p 140 2267 V 21 w(un)n(bind)p 334 2267 V 21 w(k)n(ey)k
+Fg(\()p Fq(int)14 b(key)p Fg(\))120 2329 y Fr(Bind)h
+Fl(k)o(ey)i Fr(to)c(the)h(n)o(ull)h(function)f(in)g(the)g(curren)o(tly)
+g(activ)o(e)g(k)o(eymap.)19 b(Returns)14 b(non-zero)g(in)g(case)120
+2391 y(of)h(error.)1725 2566 y(F)l(unction)-1899 b Fi(int)20
+b Fh(rl)p 140 2566 V 21 w(un)n(bind)p 334 2566 V 21 w(k)n(ey)p
+439 2566 V 21 w(in)p 507 2566 V 22 w(map)h Fg(\()p Fq(int)14
+b(key,)h(Keymap)f(map)p Fg(\))120 2628 y Fr(Bind)i Fl(k)o(ey)j
+Fr(to)c(the)g(n)o(ull)i(function)f(in)g Fl(map)p Fr(.)k(Returns)15
+b(non-zero)h(in)g(case)f(of)g(error.)p eop
+27 28 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(27)1725 183 y(F)l(unction)-1899 b Fi(int)20
+b Fh(rl)p 140 183 18 3 v 21 w(generic)p 338 183 V 21
+w(bind)j Fg(\()p Fq(int)15 b(type,)f(char)h(*keyseq,)f(char)h(*data,)f
+(Keymap)208 246 y(map)p Fg(\))120 308 y Fr(Bind)j(the)f(k)o(ey)g
+(sequence)h(represen)o(ted)f(b)o(y)g(the)g(string)g Fl(k)o(eyseq)g
+Fr(to)g(the)f(arbitrary)h(p)q(oin)o(ter)g Fl(data)p Fr(.)120
+370 y Fl(t)o(yp)q(e)j Fr(sa)o(ys)c(what)g(kind)i(of)f(data)f(is)i(p)q
+(oin)o(ted)g(to)e(b)o(y)h Fl(data)p Fr(;)f(this)i(can)f(b)q(e)g(a)g
+(function)h(\()p Fq(ISFUNC)p Fr(\),)d(a)120 432 y(macro)i(\()p
+Fq(ISMACR)p Fr(\),)f(or)i(a)f(k)o(eymap)g(\()p Fq(ISKMAP)p
+Fr(\).)23 b(This)18 b(mak)o(es)e(new)h(k)o(eymaps)f(as)h(necessary)l(.)
+25 b(The)120 495 y(initial)17 b(k)o(eymap)e(in)h(whic)o(h)g(to)f(do)g
+(bindings)i(is)f Fl(map)p Fr(.)1725 683 y(F)l(unction)-1899
+b Fi(int)20 b Fh(rl)p 140 683 V 21 w(parse)p 294 683
+V 19 w(and)p 405 683 V 21 w(bind)j Fg(\()p Fq(char)14
+b(*line)p Fg(\))120 745 y Fr(P)o(arse)i Fl(line)21 b
+Fr(as)16 b(if)h(it)g(had)f(b)q(een)i(read)f(from)e(the)i
+Fq(inputrc)f Fr(\014le)h(and)g(p)q(erform)f(an)o(y)h(k)o(ey)f(bindings)
+120 808 y(and)f(v)m(ariable)i(assignmen)o(ts)e(found)h(\(see)f(Section)
+h(1.3)e([Readline)j(Init)f(File],)g(page)f(5\).)1725
+996 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p 140 996
+V 21 w(read)p 271 996 V 20 w(init)p 375 996 V 22 w(\014le)k
+Fg(\()p Fq(char)14 b(*filename)p Fg(\))120 1059 y Fr(Read)19
+b(k)o(eybindings)i(and)e(v)m(ariable)h(assignmen)o(ts)f(from)f
+Fl(\014lename)k Fr(\(see)d(Section)g(1.3)f([Readline)120
+1121 y(Init)e(File],)g(page)f(5\).)0 1409 y Fk(2.4.4)30
+b(Asso)r(ciating)15 b(F)-5 b(unction)15 b(Names)g(and)g(Bindings)62
+1554 y Fr(These)22 b(functions)g(allo)o(w)g(y)o(ou)f(to)f(\014nd)i(out)
+f(what)g(k)o(eys)g(in)o(v)o(ok)o(e)h(named)f(functions)h(and)g(the)f
+(functions)0 1617 y(in)o(v)o(ok)o(ed)15 b(b)o(y)h(a)e(particular)i(k)o
+(ey)f(sequence.)1725 1805 y(F)l(unction)-1899 b Fi(Function)20
+b(*)g Fh(rl)p 316 1805 V 21 w(named)p 504 1805 V 19 w(function)j
+Fg(\()p Fq(char)14 b(*name)p Fg(\))120 1868 y Fr(Return)i(the)f
+(function)h(with)g(name)f Fl(name)p Fr(.)1725 2056 y(F)l(unction)-1899
+b Fi(Function)20 b(*)g Fh(rl)p 316 2056 V 21 w(function)p
+542 2056 V 21 w(of)p 610 2056 V 19 w(k)n(eyseq)k Fg(\()p
+Fq(char)15 b(*keyseq,)f(Keymap)g(map,)h(int)208 2118
+y(*type)p Fg(\))120 2181 y Fr(Return)i(the)f(function)h(in)o(v)o(ok)o
+(ed)g(b)o(y)f Fl(k)o(eyseq)i Fr(in)f(k)o(eymap)f Fl(map)p
+Fr(.)23 b(If)16 b Fl(map)i Fr(is)f(NULL,)g(the)f(curren)o(t)120
+2243 y(k)o(eymap)g(is)i(used.)25 b(If)17 b Fl(t)o(yp)q(e)i
+Fr(is)e(not)g(NULL,)g(the)g(t)o(yp)q(e)g(of)f(the)h(ob)s(ject)f(is)h
+(returned)g(in)h(it)f(\(one)f(of)120 2305 y Fq(ISFUNC)p
+Fr(,)e Fq(ISKMAP)p Fr(,)g(or)h Fq(ISMACR)p Fr(\).)1725
+2494 y(F)l(unction)-1899 b Fi(char)20 b(**)f Fh(rl)p
+237 2494 V 21 w(in)n(v)n(oking)p 466 2494 V 23 w(k)n(eyseqs)k
+Fg(\()p Fq(Function)14 b(*function)p Fg(\))120 2556 y
+Fr(Return)19 b(an)e(arra)o(y)g(of)h(strings)f(represen)o(ting)i(the)f
+(k)o(ey)g(sequences)h(used)f(to)f(in)o(v)o(ok)o(e)h Fl(function)h
+Fr(in)120 2618 y(the)c(curren)o(t)g(k)o(eymap.)p eop
+28 29 bop 0 -58 a Fr(28)1449 b(GNU)15 b(Readline)i(Library)1725
+183 y(F)l(unction)-1899 b Fi(char)20 b(**)f Fh(rl)p 237
+183 18 3 v 21 w(in)n(v)n(oking)p 466 183 V 23 w(k)n(eyseqs)p
+675 183 V 21 w(in)p 743 183 V 22 w(map)i Fg(\()p Fq(Function)14
+b(*function,)f(Keymap)208 246 y(map)p Fg(\))120 308 y
+Fr(Return)19 b(an)e(arra)o(y)g(of)h(strings)f(represen)o(ting)i(the)f
+(k)o(ey)g(sequences)h(used)f(to)f(in)o(v)o(ok)o(e)h Fl(function)h
+Fr(in)120 370 y(the)c(k)o(eymap)g Fl(map)p Fr(.)1725
+563 y(F)l(unction)-1899 b Fi(void)20 b Fh(rl)p 166 563
+V 21 w(function)p 392 563 V 21 w(dump)r(er)g Fg(\()p
+Fq(int)15 b(readable)p Fg(\))120 625 y Fr(Prin)o(t)i(the)g(readline)h
+(function)g(names)f(and)g(the)g(k)o(ey)g(sequences)h(curren)o(tly)g(b)q
+(ound)f(to)g(them)g(to)120 687 y Fq(rl_outstream)p Fr(.)j(If)c
+Fl(readable)j Fr(is)d(non-zero,)g(the)g(list)g(is)g(formatted)f(in)i
+(suc)o(h)f(a)f(w)o(a)o(y)g(that)g(it)h(can)120 750 y(b)q(e)g(made)f
+(part)g(of)f(an)i Fq(inputrc)e Fr(\014le)i(and)f(re-read.)1725
+942 y(F)l(unction)-1899 b Fi(void)20 b Fh(rl)p 166 942
+V 21 w(list)p 262 942 V 22 w(funmap)p 475 942 V 18 w(names)h
+Fg(\(\))120 1005 y Fr(Prin)o(t)15 b(the)g(names)h(of)e(all)j(bindable)g
+(Readline)g(functions)f(to)f Fq(rl_outstream)p Fr(.)0
+1305 y Fk(2.4.5)30 b(Allo)n(wing)16 b(Undoing)62 1452
+y Fr(Supp)q(orting)f(the)f(undo)g(command)g(is)g(a)g(painless)h(thing,)
+f(and)g(mak)o(es)f(y)o(our)h(functions)g(m)o(uc)o(h)g(more)f(useful.)0
+1515 y(It)i(is)g(certainly)g(easy)f(to)g(try)g(something)h(if)g(y)o(ou)
+f(kno)o(w)g(y)o(ou)g(can)h(undo)g(it.)20 b(I)15 b(could)g(use)g(an)f
+(undo)h(function)h(for)0 1577 y(the)f(sto)q(c)o(k)g(mark)o(et.)62
+1724 y(If)h(y)o(our)f(function)i(simply)g(inserts)f(text)f(once,)h(or)f
+(deletes)h(text)f(once,)h(and)g(uses)g Fq(rl_insert_text)d(\(\))i
+Fr(or)0 1786 y Fq(rl_delete_text)e(\(\))i Fr(to)g(do)g(it,)g(then)g
+(undoing)i(is)e(already)h(done)f(for)g(y)o(ou)g(automatically)l(.)62
+1934 y(If)h(y)o(ou)f(do)g(m)o(ultiple)i(insertions)f(or)f(m)o(ultiple)i
+(deletions,)f(or)f(an)o(y)g(com)o(bination)h(of)f(these)g(op)q
+(erations,)g(y)o(ou)0 1996 y(should)j(group)e(them)g(together)g(in)o
+(to)g(one)h(op)q(eration.)24 b(This)17 b(is)g(done)g(with)g
+Fq(rl_begin_undo_group)c(\(\))j Fr(and)0 2058 y Fq(rl_end_undo_group)d
+(\(\))p Fr(.)62 2206 y(The)j(t)o(yp)q(es)f(of)g(ev)o(en)o(ts)g(that)f
+(can)h(b)q(e)h(undone)g(are:)120 2343 y Fq(enum)23 b(undo_code)g({)h
+(UNDO_DELETE,)e(UNDO_INSERT,)g(UNDO_BEGIN,)g(UNDO_END)h(};)62
+2490 y Fr(Notice)c(that)e Fq(UNDO_DELETE)f Fr(means)i(to)f(insert)i
+(some)e(text,)h(and)g Fq(UNDO_INSERT)e Fr(means)i(to)f(delete)i(some)0
+2552 y(text.)37 b(That)21 b(is,)i(the)e(undo)h(co)q(de)f(tells)i(undo)e
+(what)g(to)f(undo,)j(not)e(ho)o(w)g(to)f(undo)i(it.)38
+b Fq(UNDO_BEGIN)20 b Fr(and)0 2614 y Fq(UNDO_END)14 b
+Fr(are)h(tags)f(added)i(b)o(y)f Fq(rl_begin_undo_group)e(\(\))i
+Fr(and)g Fq(rl_end_undo_group)e(\(\))p Fr(.)p eop
+29 30 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(29)1725 183 y(F)l(unction)-1899 b Fi(int)20
+b Fh(rl)p 140 183 18 3 v 21 w(b)r(egin)p 297 183 V 20
+w(undo)p 442 183 V 20 w(group)h Fg(\(\))120 246 y Fr(Begins)e(sa)o
(ving)e(undo)i(information)f(in)g(a)g(group)f(construct.)27
-b(The)18 b(undo)h(information)f(usually)120 1707 y(comes)j(from)f(calls)h(to)
-g Fn(rl_insert_text)13 b(\(\))20 b Fo(and)h Fn(rl_delete_text)13
-b(\(\))p Fo(,)22 b(but)f(could)g(b)q(e)h(the)120 1769 y(result)16
-b(of)e(calls)j(to)d Fn(rl_add_undo)g(\(\))p Fo(.)1725 1937
-y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140 1937 V 21 w(end)p
-251 1937 V 20 w(undo)p 396 1937 V 20 w(group)h Ff(\(\))120
-1999 y Fo(Closes)d(the)f(curren)o(t)g(undo)h(group)f(started)g(with)h
-Fn(rl_begin_undo_group)12 b(\(\))p Fo(.)26 b(There)18 b(should)120
-2061 y(b)q(e)e(one)f(call)i(to)d Fn(rl_end_undo_group)f(\(\))i
-Fo(for)f(eac)o(h)i(call)g(to)f Fn(rl_begin_undo_group)d(\(\))p
-Fo(.)1725 2229 y(F)l(unction)-1899 b Fh(void)20 b Fg(rl)p 166
-2229 V 21 w(add)p 279 2229 V 20 w(undo)i Ff(\()p Fn(enum)14
-b(undo_code)g(what,)g(int)h(start,)g(int)f(end,)h(char)208
-2291 y(*text)p Ff(\))120 2353 y Fo(Remem)o(b)q(er)20 b(ho)o(w)e(to)h(undo)g
-(an)g(ev)o(en)o(t)g(\(according)g(to)g Fj(what)q Fo(\).)30
-b(The)19 b(a\013ected)g(text)f(runs)i(from)120 2415 y Fj(start)15
-b Fo(to)g Fj(end)p Fo(,)g(and)g(encompasses)h Fj(text)p Fo(.)1725
-2583 y(F)l(unction)-1899 b Fh(void)20 b Fg(free)p 221 2583
-V 20 w(undo)p 366 2583 V 20 w(list)k Ff(\(\))120 2645 y Fo(F)l(ree)15
-b(the)h(existing)g(undo)f(list.)p eop
-%%Page: 24 26
-25 bop 0 -83 a Fo(24)1449 b(GNU)15 b(Readline)i(Library)1725
-158 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140 158 18 3
-v 21 w(do)p 222 158 V 20 w(undo)i Ff(\(\))120 221 y Fo(Undo)14
-b(the)f(\014rst)g(thing)h(on)g(the)f(undo)h(list.)20 b(Returns)14
-b Fn(0)f Fo(if)h(there)g(w)o(as)e(nothing)i(to)f(undo,)h(non-zero)120
-283 y(if)i(something)f(w)o(as)f(undone.)62 454 y(Finally)l(,)j(if)f(y)o(ou)f
-(neither)i(insert)f(nor)f(delete)i(text,)d(but)i(directly)h(mo)q(dify)f(the)f
-(existing)i(text)e(\(e.g.,)f(c)o(hange)0 516 y(its)g(case\),)f(call)i
-Fn(rl_modifying)e(\(\))g Fo(once,)h(just)f(b)q(efore)h(y)o(ou)f(mo)q(dify)h
-(the)g(text.)19 b(Y)l(ou)14 b(m)o(ust)f(supply)h(the)g(indices)0
-578 y(of)h(the)g(text)g(range)g(that)f(y)o(ou)h(are)g(going)g(to)g(mo)q(dify)
-l(.)1725 749 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140
-749 V 21 w(mo)r(difying)h Ff(\()p Fn(int)15 b(start,)f(int)h(end)p
-Ff(\))120 811 y Fo(T)l(ell)e(Readline)g(to)e(sa)o(v)o(e)f(the)i(text)f(b)q
-(et)o(w)o(een)g Fj(start)g Fo(and)h Fj(end)h Fo(as)e(a)g(single)i(undo)e
-(unit.)20 b(It)11 b(is)h(assumed)120 873 y(that)i(y)o(ou)h(will)i(subsequen)o
-(tly)g(mo)q(dify)e(that)g(text.)0 1107 y Fi(2.3.6)30 b(Redispla)n(y)1725
-1278 y Fo(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140 1278
-V 21 w(redispla)n(y)k Ff(\(\))120 1340 y Fo(Change)d(what's)g(displa)o(y)o
-(ed)h(on)g(the)f(screen)h(to)f(re\015ect)h(the)f(curren)o(t)g(con)o(ten)o(ts)
-g(of)g Fn(rl_line_)120 1402 y(buffer)p Fo(.)1725 1573 y(F)l(unction)-1899
-b Fh(int)20 b Fg(rl)p 140 1573 V 21 w(forced)p 315 1573 V 20
-w(up)r(date)p 509 1573 V 20 w(displa)n(y)k Ff(\(\))120 1635
-y Fo(F)l(orce)12 b(the)g(line)h(to)f(b)q(e)g(up)q(dated)h(and)f(redispla)o(y)
-o(ed,)i(whether)e(or)f(not)h(Readline)i(thinks)e(the)g(screen)120
-1697 y(displa)o(y)k(is)g(correct.)1725 1868 y(F)l(unction)-1899
-b Fh(int)20 b Fg(rl)p 140 1868 V 21 w(on)p 222 1868 V 20 w(new)p
-341 1868 V 21 w(line)k Ff(\(\))120 1930 y Fo(T)l(ell)c(the)f(up)q(date)g
-(routines)g(that)f(w)o(e)g(ha)o(v)o(e)g(mo)o(v)o(ed)g(on)o(to)g(a)g(new)h
-(\(empt)o(y\))e(line,)k(usually)f(after)120 1992 y(ouputting)c(a)e(newline.)
-1725 2163 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140 2163
-V 21 w(reset)p 282 2163 V 20 w(line)p 390 2163 V 23 w(state)j
-Ff(\(\))120 2225 y Fo(Reset)14 b(the)f(displa)o(y)h(state)f(to)f(a)h(clean)h
-(state)f(and)g(redispla)o(y)i(the)e(curren)o(t)g(line)i(starting)e(on)g(a)g
-(new)120 2288 y(line.)1725 2458 y(F)l(unction)-1899 b Fh(int)20
-b Fg(rl)p 140 2458 V 21 w(message)g Ff(\()p Fn(va_alist)p Ff(\))120
-2521 y Fo(The)f(argumen)o(ts)e(are)h(a)g(string)g(as)g(w)o(ould)h(b)q(e)g
-(supplied)i(to)d Fn(printf)p Fo(.)28 b(The)19 b(resulting)g(string)f(is)120
-2583 y(displa)o(y)o(ed)h(in)f(the)g Fj(ec)o(ho)f(area)p Fo(.)27
-b(The)18 b(ec)o(ho)f(area)g(is)h(also)g(used)g(to)f(displa)o(y)h(n)o(umeric)h
-(argumen)o(ts)120 2645 y(and)c(searc)o(h)g(strings.)p eop
-%%Page: 25 27
-26 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(25)1725 158 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140
-158 18 3 v 21 w(clear)p 279 158 V 21 w(message)h Ff(\(\))120
-221 y Fo(Clear)15 b(the)h(message)e(in)i(the)g(ec)o(ho)f(area.)0
-423 y Fi(2.3.7)30 b(Mo)r(difying)15 b(T)-5 b(ext)1725 582 y
-Fo(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140 582 V 21 w(insert)p
-303 582 V 21 w(text)k Ff(\()p Fn(char)14 b(*text)p Ff(\))120
-644 y Fo(Insert)h Fj(text)h Fo(in)o(to)f(the)h(line)g(at)f(the)g(curren)o(t)g
-(cursor)g(p)q(osition.)1725 803 y(F)l(unction)-1899 b Fh(int)20
-b Fg(rl)p 140 803 V 21 w(delete)p 308 803 V 22 w(text)k Ff(\()p
-Fn(int)14 b(start,)h(int)f(end)p Ff(\))120 865 y Fo(Delete)i(the)f(text)g(b)q
-(et)o(w)o(een)g Fj(start)g Fo(and)h Fj(end)h Fo(in)f(the)g(curren)o(t)f
-(line.)1725 1025 y(F)l(unction)-1899 b Fh(char)20 b(*)f Fg(rl)p
-211 1025 V 21 w(cop)n(y)p 346 1025 V 21 w(text)24 b Ff(\()p
-Fn(int)14 b(start,)h(int)g(end)p Ff(\))120 1087 y Fo(Return)h(a)f(cop)o(y)g
-(of)g(the)g(text)f(b)q(et)o(w)o(een)i Fj(start)f Fo(and)g Fj(end)j
-Fo(in)e(the)f(curren)o(t)g(line.)1725 1246 y(F)l(unction)-1899
-b Fh(int)20 b Fg(rl)p 140 1246 V 21 w(kill)p 236 1246 V 23
-w(text)k Ff(\()p Fn(int)14 b(start,)h(int)g(end)p Ff(\))120
-1308 y Fo(Cop)o(y)k(the)g(text)f(b)q(et)o(w)o(een)i Fj(start)e
-Fo(and)i Fj(end)h Fo(in)f(the)f(curren)o(t)g(line)i(to)d(the)h(kill)i(ring,)f
-(app)q(ending)120 1371 y(or)e(prep)q(ending)j(to)d(the)h(last)f(kill)j(if)e
-(the)g(last)f(command)h(w)o(as)e(a)i(kill)h(command.)30 b(The)19
-b(text)f(is)120 1433 y(deleted.)j(If)13 b Fj(start)g Fo(is)h(less)f(than)h
-Fj(end)p Fo(,)f(the)h(text)e(is)i(app)q(ended,)h(otherwise)e(prep)q(ended.)21
-b(If)14 b(the)f(last)120 1495 y(command)i(w)o(as)f(not)h(a)g(kill,)i(a)e(new)
-g(kill)i(ring)f(slot)f(is)g(used.)0 1697 y Fi(2.3.8)30 b(Utilit)n(y)16
-b(F)-5 b(unctions)1725 1856 y Fo(F)l(unction)-1899 b Fh(int)20
-b Fg(rl)p 140 1856 V 21 w(reset)p 282 1856 V 20 w(terminal)j
-Ff(\()p Fn(char)15 b(*terminal_name)p Ff(\))120 1919 y Fo(Reinitializ)q(e)f
-(Readline's)e(idea)g(of)e(the)h(terminal)h(settings)f(using)g
-Fj(terminal)p 1404 1919 14 2 v 17 w(name)j Fo(as)c(the)h(terminal)120
-1981 y(t)o(yp)q(e)k(\(e.g.,)f Fn(vt100)p Fo(\).)1725 2140 y(F)l(unction)-1899
-b Fh(int)20 b Fg(alphab)r(etic)k Ff(\()p Fn(int)14 b(c)p Ff(\))120
-2202 y Fo(Return)i(1)f(if)g Fj(c)j Fo(is)e(an)f(alphab)q(etic)i(c)o
-(haracter.)1725 2361 y(F)l(unction)-1899 b Fh(int)20 b Fg(n)n(umeric)i
-Ff(\()p Fn(int)15 b(c)p Ff(\))120 2424 y Fo(Return)h(1)f(if)g
-Fj(c)j Fo(is)e(a)f(n)o(umeric)h(c)o(haracter.)1725 2583 y(F)l(unction)-1899
-b Fh(int)20 b Fg(ding)i Ff(\(\))120 2645 y Fo(Ring)16 b(the)f(terminal)h(b)q
-(ell,)h(ob)q(eying)f(the)g(setting)f(of)g Fn(bell-style)p Fo(.)p
+b(The)18 b(undo)h(information)f(usually)120 308 y(comes)j(from)f(calls)
+h(to)g Fq(rl_insert_text)13 b(\(\))20 b Fr(and)h Fq(rl_delete_text)13
+b(\(\))p Fr(,)22 b(but)f(could)g(b)q(e)h(the)120 370
+y(result)16 b(of)e(calls)j(to)d Fq(rl_add_undo)g(\(\))p
+Fr(.)1725 541 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p
+140 541 V 21 w(end)p 251 541 V 20 w(undo)p 396 541 V
+20 w(group)h Fg(\(\))120 603 y Fr(Closes)d(the)f(curren)o(t)g(undo)h
+(group)f(started)g(with)h Fq(rl_begin_undo_group)12 b(\(\))p
+Fr(.)26 b(There)18 b(should)120 665 y(b)q(e)e(one)f(call)i(to)d
+Fq(rl_end_undo_group)f(\(\))i Fr(for)f(eac)o(h)i(call)g(to)f
+Fq(rl_begin_undo_group)d(\(\))p Fr(.)1725 836 y(F)l(unction)-1899
+b Fi(void)20 b Fh(rl)p 166 836 V 21 w(add)p 279 836 V
+20 w(undo)i Fg(\()p Fq(enum)14 b(undo_code)g(what,)g(int)h(start,)g
+(int)f(end,)h(char)208 898 y(*text)p Fg(\))120 960 y
+Fr(Remem)o(b)q(er)20 b(ho)o(w)e(to)h(undo)g(an)g(ev)o(en)o(t)g
+(\(according)g(to)g Fl(what)q Fr(\).)30 b(The)19 b(a\013ected)g(text)f
+(runs)i(from)120 1023 y Fl(start)15 b Fr(to)g Fl(end)p
+Fr(,)g(and)g(encompasses)h Fl(text)p Fr(.)1725 1193 y(F)l(unction)-1899
+b Fi(void)20 b Fh(free)p 221 1193 V 20 w(undo)p 366 1193
+V 20 w(list)k Fg(\(\))120 1256 y Fr(F)l(ree)15 b(the)h(existing)g(undo)
+f(list.)1725 1426 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p
+140 1426 V 21 w(do)p 222 1426 V 20 w(undo)i Fg(\(\))120
+1488 y Fr(Undo)14 b(the)f(\014rst)g(thing)h(on)g(the)f(undo)h(list.)20
+b(Returns)14 b Fq(0)f Fr(if)h(there)g(w)o(as)e(nothing)i(to)f(undo,)h
+(non-zero)120 1551 y(if)i(something)f(w)o(as)f(undone.)62
+1721 y(Finally)l(,)j(if)f(y)o(ou)f(neither)i(insert)f(nor)f(delete)i
+(text,)d(but)i(directly)h(mo)q(dify)f(the)f(existing)i(text)e(\(e.g.,)f
+(c)o(hange)0 1784 y(its)g(case\),)f(call)i Fq(rl_modifying)e(\(\))g
+Fr(once,)h(just)f(b)q(efore)h(y)o(ou)f(mo)q(dify)h(the)g(text.)19
+b(Y)l(ou)14 b(m)o(ust)f(supply)h(the)g(indices)0 1846
+y(of)h(the)g(text)g(range)g(that)f(y)o(ou)h(are)g(going)g(to)g(mo)q
+(dify)l(.)1725 2017 y(F)l(unction)-1899 b Fi(int)20 b
+Fh(rl)p 140 2017 V 21 w(mo)r(difying)h Fg(\()p Fq(int)15
+b(start,)f(int)h(end)p Fg(\))120 2079 y Fr(T)l(ell)e(Readline)g(to)e
+(sa)o(v)o(e)f(the)i(text)f(b)q(et)o(w)o(een)g Fl(start)g
+Fr(and)h Fl(end)h Fr(as)e(a)g(single)i(undo)e(unit.)20
+b(It)11 b(is)h(assumed)120 2141 y(that)i(y)o(ou)h(will)i(subsequen)o
+(tly)g(mo)q(dify)e(that)g(text.)0 2375 y Fk(2.4.6)30
+b(Redispla)n(y)1725 2545 y Fr(F)l(unction)-1899 b Fi(void)20
+b Fh(rl)p 166 2545 V 21 w(redispla)n(y)k Fg(\(\))120
+2608 y Fr(Change)d(what's)g(displa)o(y)o(ed)h(on)g(the)f(screen)h(to)f
+(re\015ect)h(the)f(curren)o(t)g(con)o(ten)o(ts)g(of)g
+Fq(rl_line_)120 2670 y(buffer)p Fr(.)p eop
+30 31 bop 0 -58 a Fr(30)1449 b(GNU)15 b(Readline)i(Library)1725
+183 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p 140 183
+18 3 v 21 w(forced)p 315 183 V 20 w(up)r(date)p 509 183
+V 20 w(displa)n(y)k Fg(\(\))120 246 y Fr(F)l(orce)12
+b(the)g(line)h(to)f(b)q(e)g(up)q(dated)h(and)f(redispla)o(y)o(ed,)i
+(whether)e(or)f(not)h(Readline)i(thinks)e(the)g(screen)120
+308 y(displa)o(y)k(is)g(correct.)1725 462 y(F)l(unction)-1899
+b Fi(int)20 b Fh(rl)p 140 462 V 21 w(on)p 222 462 V 20
+w(new)p 341 462 V 21 w(line)k Fg(\(\))120 524 y Fr(T)l(ell)c(the)f(up)q
+(date)g(routines)g(that)f(w)o(e)g(ha)o(v)o(e)g(mo)o(v)o(ed)g(on)o(to)g
+(a)g(new)h(\(empt)o(y\))e(line,)k(usually)f(after)120
+587 y(ouputting)c(a)e(newline.)1725 741 y(F)l(unction)-1899
+b Fi(int)20 b Fh(rl)p 140 741 V 21 w(reset)p 282 741
+V 20 w(line)p 390 741 V 23 w(state)j Fg(\(\))120 803
+y Fr(Reset)14 b(the)f(displa)o(y)h(state)f(to)f(a)h(clean)h(state)f
+(and)g(redispla)o(y)i(the)e(curren)o(t)g(line)i(starting)e(on)g(a)g
+(new)120 866 y(line.)1725 1020 y(F)l(unction)-1899 b
+Fi(int)20 b Fh(rl)p 140 1020 V 21 w(message)g Fg(\()p
+Fq(va_alist)p Fg(\))120 1082 y Fr(The)f(argumen)o(ts)e(are)h(a)g
+(string)g(as)g(w)o(ould)h(b)q(e)g(supplied)i(to)d Fq(printf)p
+Fr(.)28 b(The)19 b(resulting)g(string)f(is)120 1145 y(displa)o(y)o(ed)h
+(in)f(the)g Fl(ec)o(ho)f(area)p Fr(.)27 b(The)18 b(ec)o(ho)f(area)g(is)
+h(also)g(used)g(to)f(displa)o(y)h(n)o(umeric)h(argumen)o(ts)120
+1207 y(and)c(searc)o(h)g(strings.)1725 1361 y(F)l(unction)-1899
+b Fi(int)20 b Fh(rl)p 140 1361 V 21 w(clear)p 279 1361
+V 21 w(message)h Fg(\(\))120 1424 y Fr(Clear)15 b(the)h(message)e(in)i
+(the)g(ec)o(ho)f(area.)0 1616 y Fk(2.4.7)30 b(Mo)r(difying)15
+b(T)-5 b(ext)1725 1771 y Fr(F)l(unction)-1899 b Fi(int)20
+b Fh(rl)p 140 1771 V 21 w(insert)p 303 1771 V 21 w(text)k
+Fg(\()p Fq(char)14 b(*text)p Fg(\))120 1833 y Fr(Insert)h
+Fl(text)h Fr(in)o(to)f(the)h(line)g(at)f(the)g(curren)o(t)g(cursor)g(p)
+q(osition.)1725 1988 y(F)l(unction)-1899 b Fi(int)20
+b Fh(rl)p 140 1988 V 21 w(delete)p 308 1988 V 22 w(text)k
+Fg(\()p Fq(int)14 b(start,)h(int)f(end)p Fg(\))120 2050
+y Fr(Delete)i(the)f(text)g(b)q(et)o(w)o(een)g Fl(start)g
+Fr(and)h Fl(end)h Fr(in)f(the)g(curren)o(t)f(line.)1725
+2204 y(F)l(unction)-1899 b Fi(char)20 b(*)f Fh(rl)p 211
+2204 V 21 w(cop)n(y)p 346 2204 V 21 w(text)24 b Fg(\()p
+Fq(int)14 b(start,)h(int)g(end)p Fg(\))120 2266 y Fr(Return)h(a)f(cop)o
+(y)g(of)g(the)g(text)f(b)q(et)o(w)o(een)i Fl(start)f
+Fr(and)g Fl(end)j Fr(in)e(the)f(curren)o(t)g(line.)1725
+2421 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p 140 2421
+V 21 w(kill)p 236 2421 V 23 w(text)k Fg(\()p Fq(int)14
+b(start,)h(int)g(end)p Fg(\))120 2483 y Fr(Cop)o(y)k(the)g(text)f(b)q
+(et)o(w)o(een)i Fl(start)e Fr(and)i Fl(end)h Fr(in)f(the)f(curren)o(t)g
+(line)i(to)d(the)h(kill)i(ring,)f(app)q(ending)120 2545
+y(or)e(prep)q(ending)j(to)d(the)h(last)f(kill)j(if)e(the)g(last)f
+(command)h(w)o(as)e(a)i(kill)h(command.)30 b(The)19 b(text)f(is)120
+2608 y(deleted.)j(If)13 b Fl(start)g Fr(is)h(less)f(than)h
+Fl(end)p Fr(,)f(the)h(text)e(is)i(app)q(ended,)h(otherwise)e(prep)q
+(ended.)21 b(If)14 b(the)f(last)120 2670 y(command)i(w)o(as)f(not)h(a)g
+(kill,)i(a)e(new)g(kill)i(ring)f(slot)f(is)g(used.)p
eop
-%%Page: 26 28
-27 bop 0 -83 a Fo(26)1449 b(GNU)15 b(Readline)i(Library)62
-158 y(The)f(follo)o(wing)g(are)f(implemen)o(ted)h(as)f(macros,)f(de\014ned)j
-(in)f Fn(chartypes.h)p Fo(.)1725 319 y(F)l(unction)-1899 b
-Fh(int)20 b Fg(upp)r(ercase)p 351 319 18 3 v 19 w(p)j Ff(\()p
-Fn(int)14 b(c)p Ff(\))120 381 y Fo(Return)i(1)f(if)g Fj(c)j
-Fo(is)e(an)f(upp)q(ercase)i(alphab)q(etic)f(c)o(haracter.)1725
-541 y(F)l(unction)-1899 b Fh(int)20 b Fg(lo)n(w)n(ercase)p
-334 541 V 22 w(p)i Ff(\()p Fn(int)15 b(c)p Ff(\))120 604 y
-Fo(Return)h(1)f(if)g Fj(c)j Fo(is)e(a)f(lo)o(w)o(ercase)g(alphab)q(etic)i(c)o
-(haracter.)1725 764 y(F)l(unction)-1899 b Fh(int)20 b Fg(digit)p
-214 764 V 22 w(p)i Ff(\()p Fn(int)15 b(c)p Ff(\))120 826 y
-Fo(Return)h(1)f(if)g Fj(c)j Fo(is)e(a)f(n)o(umeric)h(c)o(haracter.)1725
-987 y(F)l(unction)-1899 b Fh(int)20 b Fg(to)p 152 987 V 20
-w(upp)r(er)i Ff(\()p Fn(int)14 b(c)p Ff(\))120 1049 y Fo(If)h
-Fj(c)i Fo(is)f(a)e(lo)o(w)o(ercase)g(alphab)q(etic)j(c)o(haracter,)c(return)i
-(the)g(corresp)q(onding)g(upp)q(ercase)h(c)o(haracter.)1725
-1209 y(F)l(unction)-1899 b Fh(int)20 b Fg(to)p 152 1209 V 20
-w(lo)n(w)n(er)k Ff(\()p Fn(int)15 b(c)p Ff(\))120 1272 y Fo(If)e
-Fj(c)i Fo(is)e(an)f(upp)q(ercase)h(alphab)q(etic)h(c)o(haracter,)e(return)g
-(the)h(corresp)q(onding)g(lo)o(w)o(ercase)f(c)o(haracter.)1725
-1432 y(F)l(unction)-1899 b Fh(int)20 b Fg(digit)p 214 1432
-V 22 w(v)m(alue)j Ff(\()p Fn(int)15 b(c)p Ff(\))120 1494 y
-Fo(If)g Fj(c)k Fo(is)c(a)g(n)o(um)o(b)q(er,)g(return)g(the)h(v)m(alue)g(it)g
-(represen)o(ts.)0 1699 y Fi(2.3.9)30 b(An)15 b(Example)62 1836
-y Fo(Here)e(is)g(a)f(function)h(whic)o(h)g(c)o(hanges)g(lo)o(w)o(ercase)f(c)o
-(haracters)f(to)h(their)h(upp)q(ercase)g(equiv)m(alen)o(ts,)h(and)f(upp)q
-(er-)0 1898 y(case)j(c)o(haracters)g(to)g(lo)o(w)o(ercase.)23
-b(If)16 b(this)h(function)g(w)o(as)f(b)q(ound)h(to)f(`)p Fn(M-c)p
-Fo(',)f(then)h(t)o(yping)h(`)p Fn(M-c)p Fo(')e(w)o(ould)i(c)o(hange)0
-1960 y(the)g(case)f(of)g(the)h(c)o(haracter)f(under)h(p)q(oin)o(t.)25
-b(T)o(yping)17 b(`)p Fn(M-1)d(0)h(M-c)p Fo(')h(w)o(ould)h(c)o(hange)f(the)h
-(case)f(of)h(the)f(follo)o(wing)0 2022 y(10)f(c)o(haracters,)f(lea)o(ving)i
-(the)f(cursor)g(on)g(the)g(last)g(c)o(haracter)g(c)o(hanged.)120
-2147 y Fn(/*)24 b(Invert)f(the)g(case)g(of)h(the)f(COUNT)h(following)e
-(characters.)h(*/)120 2197 y(int)120 2247 y(invert_case_line)f(\(count,)h
-(key\))239 2296 y(int)h(count,)f(key;)120 2346 y({)168 2396
-y(register)f(int)i(start,)f(end,)g(i;)168 2496 y(start)g(=)h(rl_point;)168
-2595 y(if)f(\(rl_point)g(>=)h(rl_end\))215 2645 y(return)f(\(0\);)p
+31 32 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(31)0 183 y Fk(2.4.8)30 b(Utilit)n(y)16
+b(F)-5 b(unctions)1725 345 y Fr(F)l(unction)-1899 b Fi(int)20
+b Fh(rl)p 140 345 18 3 v 21 w(read)p 271 345 V 20 w(k)n(ey)k
+Fg(\(\))120 407 y Fr(Return)14 b(the)g(next)g(c)o(haracter)f(a)o(v)m
+(ailable.)21 b(This)15 b(handles)g(input)g(inserted)f(in)o(to)g(the)g
+(input)h(stream)120 469 y(via)h Fl(p)q(ending)i(input)h
+Fr(\(see)d(Section)h(2.3)e([Readline)j(V)l(ariables],)f(page)f(22\))f
+(and)i Fq(rl_stuff_char)120 532 y(\(\))p Fr(,)e(macros,)f(and)h(c)o
+(haracters)f(read)h(from)g(the)g(k)o(eyb)q(oard.)1725
+693 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p 140 693
+V 21 w(getc)j Fg(\()p Fq(FILE)14 b(*)p Fg(\))120 755
+y Fr(Return)i(the)f(next)g(c)o(haracter)g(a)o(v)m(ailable)i(from)d(the)
+h(k)o(eyb)q(oard.)1725 917 y(F)l(unction)-1899 b Fi(int)20
+b Fh(rl)p 140 917 V 21 w(stu\013)p 271 917 V 20 w(c)n(har)j
+Fg(\()p Fq(int)15 b(c)p Fg(\))120 979 y Fr(Insert)g Fl(c)i
+Fr(in)o(to)e(the)g(Readline)i(input)e(stream.)k(It)c(will)h(b)q(e)g
+Fq(")p Fr(read)p Fq(")e Fr(b)q(efore)h(Readline)i(attempts)d(to)120
+1041 y(read)h(c)o(haracters)g(from)f(the)h(terminal)h(with)g
+Fq(rl_read_key)d(\(\))p Fr(.)1725 1203 y(F)l(unction)-1899
+b Fi(rl_extend_line_buffer)22 b Fh(\(in)n(t)j Fq(len)p
+Fg(\))120 1265 y Fr(Ensure)15 b(that)f Fq(rl_line_buffer)e
+Fr(has)j(enough)g(space)g(to)e(hold)j Fl(len)f Fr(c)o(haracters,)f(p)q
+(ossibly)i(reallo-)120 1327 y(cating)f(it)h(if)f(necessary)l(.)1725
+1489 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p 140 1489
+V 21 w(initiali)q(z)q(e)26 b Fg(\(\))120 1551 y Fr(Initialize)18
+b(or)d(re-initialize)j(Readline's)f(in)o(ternal)f(state.)1725
+1713 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p 140 1713
+V 21 w(reset)p 282 1713 V 20 w(terminal)j Fg(\()p Fq(char)15
+b(*terminal_name)p Fg(\))120 1775 y Fr(Reinitializ)q(e)f(Readline's)e
+(idea)g(of)e(the)h(terminal)h(settings)f(using)g Fl(terminal)p
+1404 1775 14 2 v 17 w(name)j Fr(as)c(the)h(terminal)120
+1837 y(t)o(yp)q(e)k(\(e.g.,)f Fq(vt100)p Fr(\).)1725
+1999 y(F)l(unction)-1899 b Fi(int)20 b Fh(alphab)r(etic)k
+Fg(\()p Fq(int)14 b(c)p Fg(\))120 2061 y Fr(Return)i(1)f(if)g
+Fl(c)j Fr(is)e(an)f(alphab)q(etic)i(c)o(haracter.)1725
+2222 y(F)l(unction)-1899 b Fi(int)20 b Fh(n)n(umeric)i
+Fg(\()p Fq(int)15 b(c)p Fg(\))120 2285 y Fr(Return)h(1)f(if)g
+Fl(c)j Fr(is)e(a)f(n)o(umeric)h(c)o(haracter.)1725 2446
+y(F)l(unction)-1899 b Fi(int)20 b Fh(ding)i Fg(\(\))120
+2508 y Fr(Ring)16 b(the)f(terminal)h(b)q(ell,)h(ob)q(eying)f(the)g
+(setting)f(of)g Fq(bell-style)p Fr(.)62 2670 y(The)h(follo)o(wing)g
+(are)f(implemen)o(ted)h(as)f(macros,)f(de\014ned)j(in)f
+Fq(chartypes.h)p Fr(.)p eop
+32 33 bop 0 -58 a Fr(32)1449 b(GNU)15 b(Readline)i(Library)1725
+183 y(F)l(unction)-1899 b Fi(int)20 b Fh(upp)r(ercase)p
+351 183 18 3 v 19 w(p)j Fg(\()p Fq(int)14 b(c)p Fg(\))120
+246 y Fr(Return)i(1)f(if)g Fl(c)j Fr(is)e(an)f(upp)q(ercase)i(alphab)q
+(etic)f(c)o(haracter.)1725 409 y(F)l(unction)-1899 b
+Fi(int)20 b Fh(lo)n(w)n(ercase)p 334 409 V 22 w(p)i Fg(\()p
+Fq(int)15 b(c)p Fg(\))120 471 y Fr(Return)h(1)f(if)g
+Fl(c)j Fr(is)e(a)f(lo)o(w)o(ercase)g(alphab)q(etic)i(c)o(haracter.)1725
+634 y(F)l(unction)-1899 b Fi(int)20 b Fh(digit)p 214
+634 V 22 w(p)i Fg(\()p Fq(int)15 b(c)p Fg(\))120 696
+y Fr(Return)h(1)f(if)g Fl(c)j Fr(is)e(a)f(n)o(umeric)h(c)o(haracter.)
+1725 859 y(F)l(unction)-1899 b Fi(int)20 b Fh(to)p 152
+859 V 20 w(upp)r(er)i Fg(\()p Fq(int)14 b(c)p Fg(\))120
+922 y Fr(If)h Fl(c)i Fr(is)f(a)e(lo)o(w)o(ercase)g(alphab)q(etic)j(c)o
+(haracter,)c(return)i(the)g(corresp)q(onding)g(upp)q(ercase)h(c)o
+(haracter.)1725 1085 y(F)l(unction)-1899 b Fi(int)20
+b Fh(to)p 152 1085 V 20 w(lo)n(w)n(er)k Fg(\()p Fq(int)15
+b(c)p Fg(\))120 1147 y Fr(If)e Fl(c)i Fr(is)e(an)f(upp)q(ercase)h
+(alphab)q(etic)h(c)o(haracter,)e(return)g(the)h(corresp)q(onding)g(lo)o
+(w)o(ercase)f(c)o(haracter.)1725 1310 y(F)l(unction)-1899
+b Fi(int)20 b Fh(digit)p 214 1310 V 22 w(v)m(alue)j Fg(\()p
+Fq(int)15 b(c)p Fg(\))120 1372 y Fr(If)g Fl(c)k Fr(is)c(a)g(n)o(um)o(b)
+q(er,)g(return)g(the)h(v)m(alue)g(it)g(represen)o(ts.)0
+1584 y Fk(2.4.9)30 b(Alternate)15 b(In)n(terface)62 1721
+y Fr(An)k(alternate)e(in)o(terface)h(is)h(a)o(v)m(ailable)h(to)d(plain)
+i Fq(readline\(\))p Fr(.)27 b(Some)18 b(applications)h(need)g(to)e(in)o
+(terlea)o(v)o(e)0 1783 y(k)o(eyb)q(oard)d(I/O)h(with)f(\014le,)h
+(device,)h(or)d(windo)o(w)i(system)e(I/O,)i(t)o(ypically)g(b)o(y)f
+(using)h(a)f(main)h(lo)q(op)g(to)e Fq(select\(\))0 1846
+y Fr(on)k(v)m(arious)h(\014le)g(descriptors.)26 b(T)l(o)17
+b(accomo)q(date)g(this)h(need,)g(readline)h(can)e(also)h(b)q(e)f(in)o
+(v)o(ok)o(ed)h(as)f(a)g(`callbac)o(k')0 1908 y(function)f(from)e(an)i
+(ev)o(en)o(t)f(lo)q(op.)20 b(There)15 b(are)g(functions)h(a)o(v)m
+(ailable)h(to)e(mak)o(e)f(this)i(easy)l(.)1725 2071 y(F)l(unction)-1899
+b Fi(void)20 b Fh(rl)p 166 2071 V 21 w(callbac)n(k)p
+383 2071 V 23 w(handler)p 595 2071 V 21 w(install)25
+b Fg(\()p Fq(char)14 b(*prompt,)g(Vfunction)208 2133
+y(*lhandler)p Fg(\))120 2196 y Fr(Set)h(up)g(the)f(terminal)i(for)d
+(readline)k(I/O)e(and)f(displa)o(y)i(the)f(initial)h(expanded)g(v)m
+(alue)g(of)e Fl(prompt)p Fr(.)120 2258 y(Sa)o(v)o(e)h(the)f(v)m(alue)j
+(of)d Fl(lhandler)20 b Fr(to)14 b(use)h(as)g(a)g(callbac)o(k)h(when)f
+(a)f(complete)i(line)h(of)d(input)i(has)f(b)q(een)120
+2320 y(en)o(tered.)1725 2483 y(F)l(unction)-1899 b Fi(void)20
+b Fh(rl)p 166 2483 V 21 w(callbac)n(k)p 383 2483 V 23
+w(read)p 516 2483 V 20 w(c)n(har)j Fg(\(\))120 2545 y
+Fr(Whenev)o(er)d(an)f(application)i(determines)g(that)e(k)o(eyb)q(oard)
+g(input)i(is)f(a)o(v)m(ailable,)i(it)d(should)i(call)120
+2608 y Fq(rl_callback_read_char\(\))p Fr(,)11 b(whic)o(h)j(will)i(read)
+e(the)g(next)g(c)o(haracter)f(from)g(the)h(curren)o(t)g(input)120
+2670 y(source.)24 b(If)17 b(that)f(c)o(haracter)g(completes)i(the)f
+(line,)h Fq(rl_callback_read_char)c Fr(will)k(in)o(v)o(ok)o(e)f(the)p
eop
-%%Page: 27 29
-28 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(27)168 208 y Fn(if)23 b(\(count)g(<)h(0\))215 258 y({)263
-308 y(direction)f(=)h(-1;)263 358 y(count)f(=)h(-count;)215
-407 y(})168 457 y(else)215 507 y(direction)f(=)h(1;)168 607
-y(/*)f(Find)h(the)f(end)h(of)f(the)h(range)f(to)g(modify.)g(*/)168
-656 y(end)g(=)h(start)f(+)h(\(count)f(*)h(direction\);)168
-756 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g(*/)168
-806 y(if)g(\(end)h(>)f(rl_end\))215 856 y(end)h(=)g(rl_end;)168
-906 y(else)f(if)h(\(end)f(<)h(0\))215 955 y(end)g(=)g(0;)168
-1055 y(if)f(\(start)g(==)h(end\))215 1105 y(return)f(\(0\);)168
-1204 y(if)g(\(start)g(>)h(end\))215 1254 y({)263 1304 y(int)g(temp)f(=)h
-(start;)263 1354 y(start)f(=)h(end;)263 1404 y(end)g(=)f(temp;)215
-1453 y(})168 1553 y(/*)g(Tell)h(readline)e(that)i(we)f(are)h(modifying)e(the)
-i(line,)f(so)h(it)f(will)h(save)239 1603 y(the)g(undo)f(information.)f(*/)168
-1653 y(rl_modifying)g(\(start,)h(end\);)168 1752 y(for)g(\(i)h(=)f(start;)h
-(i)f(!=)h(end;)f(i++\))215 1802 y({)263 1852 y(if)h(\(uppercase_p)e
-(\(rl_line_buffer[i]\)\))311 1902 y(rl_line_buffer[i])f(=)j(to_lower)f
-(\(rl_line_buffer[i]\);)263 1952 y(else)g(if)h(\(lowercase_p)e
-(\(rl_line_buffer[i]\)\))311 2001 y(rl_line_buffer[i])f(=)j(to_upper)f
-(\(rl_line_buffer[i]\);)215 2051 y(})168 2101 y(/*)g(Move)h(point)f(to)g(on)h
-(top)f(of)h(the)f(last)h(character)e(changed.)h(*/)168 2151
-y(rl_point)f(=)i(\(direction)f(==)g(1\))h(?)g(end)f(-)h(1)g(:)f(start;)168
-2201 y(return)g(\(0\);)120 2250 y(})p eop
-%%Page: 28 30
-29 bop 0 -83 a Fo(28)1449 b(GNU)15 b(Readline)i(Library)0 158
-y Fm(2.4)33 b(Custom)14 b(Completers)62 306 y Fo(T)o(ypically)l(,)g(a)c
-(program)g(that)h(reads)g(commands)g(from)f(the)h(user)h(has)e(a)h(w)o(a)o(y)
-f(of)h(disam)o(biguating)h(commands)0 368 y(and)k(data.)k(If)c(y)o(our)f
-(program)g(is)h(one)g(of)f(these,)h(then)g(it)g(can)g(pro)o(vide)g
-(completion)g(for)g(commands,)f(data,)f(or)0 430 y(b)q(oth.)28
+33 34 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(33)120 183 y Fl(lhandler)19 b Fr(function)d(sa)o(v)o
+(ed)e(b)o(y)g Fq(rl_callback_handler_install)d Fr(to)j(pro)q(cess)h
+(the)f(line.)21 b Fq(EOF)14 b Fr(is)120 246 y(indicated)j(b)o(y)e
+(calling)i Fl(lhandler)j Fr(with)c(a)f Fq(NULL)f Fr(line.)1725
+413 y(F)l(unction)-1899 b Fi(void)20 b Fh(rl)p 166 413
+18 3 v 21 w(callbac)n(k)p 383 413 V 23 w(handler)p 595
+413 V 21 w(remo)n(v)n(e)i Fg(\(\))120 476 y Fr(Restore)12
+b(the)g(terminal)h(to)e(its)i(initial)h(state)d(and)h(remo)o(v)o(e)g
+(the)g(line)i(handler.)20 b(This)12 b(ma)o(y)g(b)q(e)g(called)120
+538 y(from)i(within)j(a)e(callbac)o(k)h(as)f(w)o(ell)h(as)f(indep)q
+(enden)o(tly)l(.)0 763 y Fk(2.4.10)29 b(An)16 b(Example)62
+902 y Fr(Here)d(is)g(a)f(function)h(whic)o(h)g(c)o(hanges)g(lo)o(w)o
+(ercase)f(c)o(haracters)f(to)h(their)h(upp)q(ercase)g(equiv)m(alen)o
+(ts,)h(and)f(upp)q(er-)0 964 y(case)j(c)o(haracters)g(to)g(lo)o(w)o
+(ercase.)23 b(If)16 b(this)h(function)g(w)o(as)f(b)q(ound)h(to)f(`)p
+Fq(M-c)p Fr(',)f(then)h(t)o(yping)h(`)p Fq(M-c)p Fr(')e(w)o(ould)i(c)o
+(hange)0 1026 y(the)g(case)f(of)g(the)h(c)o(haracter)f(under)h(p)q(oin)
+o(t.)25 b(T)o(yping)17 b(`)p Fq(M-1)d(0)h(M-c)p Fr(')h(w)o(ould)h(c)o
+(hange)f(the)h(case)f(of)h(the)f(follo)o(wing)0 1089
+y(10)f(c)o(haracters,)f(lea)o(ving)i(the)f(cursor)g(on)g(the)g(last)g
+(c)o(haracter)g(c)o(hanged.)120 1217 y Fq(/*)24 b(Invert)f(the)g(case)g
+(of)h(the)f(COUNT)h(following)e(characters.)h(*/)120
+1269 y(int)120 1321 y(invert_case_line)f(\(count,)h(key\))239
+1373 y(int)h(count,)f(key;)120 1425 y({)168 1477 y(register)f(int)i
+(start,)f(end,)g(i;)168 1580 y(start)g(=)h(rl_point;)168
+1684 y(if)f(\(rl_point)g(>=)h(rl_end\))215 1736 y(return)f(\(0\);)168
+1840 y(if)g(\(count)g(<)h(0\))215 1892 y({)263 1944 y(direction)f(=)h
+(-1;)263 1995 y(count)f(=)h(-count;)215 2047 y(})168
+2099 y(else)215 2151 y(direction)f(=)h(1;)168 2255 y(/*)f(Find)h(the)f
+(end)h(of)f(the)h(range)f(to)g(modify.)g(*/)168 2307
+y(end)g(=)h(start)f(+)h(\(count)f(*)h(direction\);)168
+2411 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g(*/)168
+2462 y(if)g(\(end)h(>)f(rl_end\))215 2514 y(end)h(=)g(rl_end;)168
+2566 y(else)f(if)h(\(end)f(<)h(0\))215 2618 y(end)g(=)g(0;)p
+eop
+34 35 bop 0 -58 a Fr(34)1449 b(GNU)15 b(Readline)i(Library)168
+183 y Fq(if)23 b(\(start)g(==)h(end\))215 235 y(return)f(\(0\);)168
+339 y(if)g(\(start)g(>)h(end\))215 391 y({)263 443 y(int)g(temp)f(=)h
+(start;)263 495 y(start)f(=)h(end;)263 546 y(end)g(=)f(temp;)215
+598 y(})168 702 y(/*)g(Tell)h(readline)e(that)i(we)f(are)h(modifying)e
+(the)i(line,)f(so)h(it)f(will)h(save)239 754 y(the)g(undo)f
+(information.)f(*/)168 806 y(rl_modifying)g(\(start,)h(end\);)168
+910 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f(i++\))215
+962 y({)263 1013 y(if)h(\(uppercase_p)e(\(rl_line_buffer[i]\)\))311
+1065 y(rl_line_buffer[i])f(=)j(to_lower)f(\(rl_line_buffer[i]\);)263
+1117 y(else)g(if)h(\(lowercase_p)e(\(rl_line_buffer[i]\)\))311
+1169 y(rl_line_buffer[i])f(=)j(to_upper)f(\(rl_line_buffer[i]\);)215
+1221 y(})168 1273 y(/*)g(Move)h(point)f(to)g(on)h(top)f(of)h(the)f
+(last)h(character)e(changed.)h(*/)168 1325 y(rl_point)f(=)i
+(\(direction)f(==)g(1\))h(?)g(end)f(-)h(1)g(:)f(start;)168
+1377 y(return)g(\(0\);)120 1429 y(})0 1670 y Fp(2.5)33
+b(Custom)14 b(Completers)62 1809 y Fr(T)o(ypically)l(,)g(a)c(program)g
+(that)h(reads)g(commands)g(from)f(the)h(user)h(has)e(a)h(w)o(a)o(y)f
+(of)h(disam)o(biguating)h(commands)0 1871 y(and)k(data.)k(If)c(y)o(our)
+f(program)g(is)h(one)g(of)f(these,)h(then)g(it)g(can)g(pro)o(vide)g
+(completion)g(for)g(commands,)f(data,)f(or)0 1933 y(b)q(oth.)28
b(The)18 b(follo)o(wing)h(sections)f(describ)q(e)h(ho)o(w)f(y)o(our)f
(program)g(and)h(Readline)i(co)q(op)q(erate)e(to)f(pro)o(vide)i(this)0
-493 y(service.)0 795 y Fi(2.4.1)30 b(Ho)n(w)15 b(Completing)g(W)-5
-b(orks)62 942 y Fo(In)16 b(order)f(to)g(complete)h(some)f(text,)f(the)h(full)
-i(list)f(of)f(p)q(ossible)i(completions)f(m)o(ust)f(b)q(e)h(a)o(v)m(ailable.)
-21 b(That)15 b(is,)0 1004 y(it)k(is)f(not)g(p)q(ossible)i(to)e(accurately)h
-(expand)g(a)f(partial)h(w)o(ord)e(without)i(kno)o(wing)f(all)h(of)f(the)h(p)q
-(ossible)h(w)o(ords)0 1067 y(whic)o(h)c(mak)o(e)f(sense)h(in)g(that)e(con)o
-(text.)20 b(The)15 b(Readline)j(library)e(pro)o(vides)f(the)h(user)f(in)o
-(terface)h(to)e(completion,)0 1129 y(and)h(t)o(w)o(o)f(of)h(the)h(most)e
-(common)h(completion)h(functions:)21 b(\014lename)c(and)e(username.)20
-b(F)l(or)15 b(completing)h(other)0 1191 y(t)o(yp)q(es)h(of)f(text,)g(y)o(ou)h
-(m)o(ust)f(write)h(y)o(our)f(o)o(wn)g(completion)i(function.)25
-b(This)18 b(section)f(describ)q(es)h(exactly)g(what)0 1253
-y(suc)o(h)e(functions)f(m)o(ust)g(do,)g(and)g(pro)o(vides)h(an)f(example.)62
-1401 y(There)h(are)f(three)g(ma)s(jor)f(functions)i(used)f(to)g(p)q(erform)g
-(completion:)25 1548 y(1.)29 b(The)15 b(user-in)o(terface)g(function)g
-Fn(rl_complete)e(\(\))p Fo(.)20 b(This)15 b(function)g(is)g(called)h(with)e
-(the)h(same)f(argumen)o(ts)90 1611 y(as)j(other)g(Readline)j(functions)f(in)o
-(tended)g(for)e(in)o(teractiv)o(e)h(use:)25 b Fj(coun)o(t)18
-b Fo(and)g Fj(in)o(v)o(oking)p 1633 1611 14 2 v 17 w(k)o(ey)p
-Fo(.)27 b(It)18 b(isolates)90 1673 y(the)j(w)o(ord)g(to)f(b)q(e)i(completed)h
-(and)e(calls)h Fn(completion_matches)13 b(\(\))21 b Fo(to)f(generate)h(a)g
-(list)h(of)f(p)q(ossible)90 1735 y(completions.)h(It)16 b(then)g(either)h
-(lists)f(the)g(p)q(ossible)h(completions,)g(inserts)f(the)g(p)q(ossible)h
-(completions,)f(or)90 1797 y(actually)g(p)q(erforms)f(the)g(completion,)h
-(dep)q(ending)i(on)d(whic)o(h)h(b)q(eha)o(vior)f(is)h(desired.)25
-1883 y(2.)29 b(The)18 b(in)o(ternal)h(function)g Fn(completion_matches)13
-b(\(\))18 b Fo(uses)g(y)o(our)f Fj(generator)k Fo(function)e(to)e(generate)h
-(the)90 1945 y(list)h(of)e(p)q(ossible)j(matc)o(hes,)e(and)g(then)g(returns)g
-(the)g(arra)o(y)f(of)h(these)g(matc)o(hes.)28 b(Y)l(ou)18 b(should)h(place)g
-(the)90 2007 y(address)c(of)g(y)o(our)g(generator)f(function)i(in)g
-Fn(rl_completion_entry_functi)o(on)p Fo(.)25 2092 y(3.)29 b(The)16
-b(generator)g(function)h(is)f(called)i(rep)q(eatedly)g(from)d
-Fn(completion_matches)e(\(\))p Fo(,)i(returning)i(a)f(string)90
-2155 y(eac)o(h)j(time.)31 b(The)19 b(argumen)o(ts)f(to)g(the)h(generator)e
-(function)j(are)e Fj(text)i Fo(and)f Fj(state)p Fo(.)29 b Fj(text)19
-b Fo(is)h(the)f(partial)90 2217 y(w)o(ord)13 b(to)g(b)q(e)h(completed.)21
-b Fj(state)15 b Fo(is)f(zero)g(the)g(\014rst)f(time)h(the)g(function)g(is)g
-(called,)i(allo)o(wing)e(the)g(generator)90 2279 y(to)19 b(p)q(erform)f(an)o
-(y)h(necessary)h(initialization,)i(and)e(a)f(p)q(ositiv)o(e)h(non-zero)f(in)o
-(teger)h(for)e(eac)o(h)h(subsequen)o(t)90 2341 y(call.)35 b(When)21
-b(the)f(generator)f(function)i(returns)f Fn(\(char)14 b(*\)NULL)19
-b Fo(this)i(signals)f Fn(completion_matches)90 2404 y(\(\))c
-Fo(that)g(there)h(are)f(no)h(more)f(p)q(ossibilitie)q(s)j(left.)25
-b(Usually)18 b(the)e(generator)g(function)i(computes)e(the)h(list)90
-2466 y(of)j(p)q(ossible)i(completions)f(when)g Fj(state)h Fo(is)f(zero,)g
-(and)f(returns)g(them)h(one)f(at)g(a)g(time)g(on)g(subsequen)o(t)90
-2528 y(calls.)g(Eac)o(h)14 b(string)f(the)h(generator)e(function)j(returns)e
-(as)g(a)g(matc)o(h)g(m)o(ust)g(b)q(e)h(allo)q(cated)h(with)e
-Fn(malloc\(\))p Fo(;)90 2590 y(Readline)18 b(frees)d(the)g(strings)g(when)h
-(it)f(has)g(\014nished)i(with)f(them.)p eop
-%%Page: 29 31
-30 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(29)1725 158 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140
-158 18 3 v 21 w(complete)j Ff(\()p Fn(int)14 b(ignore,)g(int)h(invoking_key)p
-Ff(\))120 221 y Fo(Complete)j(the)f(w)o(ord)f(at)h(or)g(b)q(efore)g(p)q(oin)o
-(t.)27 b(Y)l(ou)17 b(ha)o(v)o(e)g(supplied)i(the)f(function)g(that)e(do)q(es)
-i(the)120 283 y(initial)d(simple)f(matc)o(hing)f(selection)h(algorithm)f
-(\(see)f Fn(completion_matches)h(\(\))p Fo(\).)18 b(The)13
-b(default)120 345 y(is)j(to)e(do)h(\014lename)i(completion.)1736
-520 y(V)l(ariable)-1899 b Fh(Function)20 b(*)g Fg(rl)p 316
-520 V 21 w(completion)p 611 520 V 21 w(en)n(try)p 764 520 V
-21 w(function)120 582 y Fo(This)e(is)g(a)f(p)q(oin)o(ter)h(to)f(the)g
-(generator)g(function)h(for)f Fn(completion_matches)12 b(\(\))p
-Fo(.)27 b(If)17 b(the)h(v)m(alue)120 644 y(of)j Fn(rl_completion_entry_funct)
-o(ion)d Fo(is)k Fn(\(Function)14 b(*\)NULL)20 b Fo(then)i(the)f(default)h
-(\014lename)120 707 y(generator)14 b(function,)i Fn(filename_entry_function)c
-(\(\))p Fo(,)i(is)i(used.)0 953 y Fi(2.4.2)30 b(Completion)15
-b(F)-5 b(unctions)62 1094 y Fo(Here)16 b(is)f(the)h(complete)g(list)g(of)e
-(callable)k(completion)e(functions)g(presen)o(t)f(in)h(Readline.)1725
-1269 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140 1269 V 21
-w(complete)p 385 1269 V 21 w(in)n(ternal)k Ff(\()p Fn(int)15
-b(what_to_do)p Ff(\))120 1331 y Fo(Complete)d(the)g(w)o(ord)f(at)g(or)g(b)q
-(efore)h(p)q(oin)o(t.)19 b Fj(what)p 979 1331 14 2 v 16 w(to)p
-1036 1331 V 16 w(do)14 b Fo(sa)o(ys)d(what)g(to)g(do)g(with)h(the)g
-(completion.)120 1394 y(A)g(v)m(alue)h(of)f(`)p Fn(?)p Fo(')f(means)h(list)h
-(the)f(p)q(ossible)i(completions.)20 b(`)p Fn(TAB)p Fo(')11
-b(means)h(do)g(standard)f(completion.)120 1456 y(`)p Fn(*)p
-Fo(')i(means)h(insert)h(all)g(of)f(the)g(p)q(ossible)i(completions.)21
-b(`)p Fn(!)p Fo(')13 b(means)h(to)g(displa)o(y)h(all)g(of)f(the)g(p)q
-(ossible)120 1518 y(completions,)i(if)g(there)f(is)h(more)e(than)h(one,)g(as)
-g(w)o(ell)h(as)f(p)q(erforming)h(partial)f(completion.)1725
-1693 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140 1693 18
-3 v 21 w(complete)j Ff(\()p Fn(int)14 b(ignore,)g(int)h(invoking_key)p
-Ff(\))120 1755 y Fo(Complete)23 b(the)g(w)o(ord)e(at)h(or)g(b)q(efore)h(p)q
-(oin)o(t.)43 b(Y)l(ou)23 b(ha)o(v)o(e)f(supplied)j(the)d(function)i(that)e
-(do)q(es)120 1817 y(the)16 b(initial)j(simple)f(matc)o(hing)e(selection)i
-(algorithm)e(\(see)g Fn(completion_matches)d(\(\))j Fo(and)g
-Fn(rl_)120 1880 y(completion_entry_function)p Fo(\))o(.)25
+1995 y(service.)0 2220 y Fk(2.5.1)30 b(Ho)n(w)15 b(Completing)g(W)-5
+b(orks)62 2359 y Fr(In)16 b(order)f(to)g(complete)h(some)f(text,)f(the)
+h(full)i(list)f(of)f(p)q(ossible)i(completions)f(m)o(ust)f(b)q(e)h(a)o
+(v)m(ailable.)21 b(That)15 b(is,)0 2421 y(it)k(is)f(not)g(p)q(ossible)i
+(to)e(accurately)h(expand)g(a)f(partial)h(w)o(ord)e(without)i(kno)o
+(wing)f(all)h(of)f(the)h(p)q(ossible)h(w)o(ords)0 2483
+y(whic)o(h)c(mak)o(e)f(sense)h(in)g(that)e(con)o(text.)20
+b(The)15 b(Readline)j(library)e(pro)o(vides)f(the)h(user)f(in)o
+(terface)h(to)e(completion,)0 2545 y(and)h(t)o(w)o(o)f(of)h(the)h(most)
+e(common)h(completion)h(functions:)21 b(\014lename)c(and)e(username.)20
+b(F)l(or)15 b(completing)h(other)0 2608 y(t)o(yp)q(es)h(of)f(text,)g(y)
+o(ou)h(m)o(ust)f(write)h(y)o(our)f(o)o(wn)g(completion)i(function.)25
+b(This)18 b(section)f(describ)q(es)h(exactly)g(what)0
+2670 y(suc)o(h)e(functions)f(m)o(ust)g(do,)g(and)g(pro)o(vides)h(an)f
+(example.)p eop
+35 36 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(35)62 183 y(There)16 b(are)f(three)g(ma)s(jor)f
+(functions)i(used)f(to)g(p)q(erform)g(completion:)25
+320 y(1.)29 b(The)15 b(user-in)o(terface)g(function)g
+Fq(rl_complete)e(\(\))p Fr(.)20 b(This)15 b(function)g(is)g(called)h
+(with)e(the)h(same)f(argumen)o(ts)90 383 y(as)j(other)g(Readline)j
+(functions)f(in)o(tended)g(for)e(in)o(teractiv)o(e)h(use:)25
+b Fl(coun)o(t)18 b Fr(and)g Fl(in)o(v)o(oking)p 1633
+383 14 2 v 17 w(k)o(ey)p Fr(.)27 b(It)18 b(isolates)90
+445 y(the)j(w)o(ord)g(to)f(b)q(e)i(completed)h(and)e(calls)h
+Fq(completion_matches)13 b(\(\))21 b Fr(to)f(generate)h(a)g(list)h(of)f
+(p)q(ossible)90 507 y(completions.)h(It)16 b(then)g(either)h(lists)f
+(the)g(p)q(ossible)h(completions,)g(inserts)f(the)g(p)q(ossible)h
+(completions,)f(or)90 569 y(actually)g(p)q(erforms)f(the)g(completion,)
+h(dep)q(ending)i(on)d(whic)o(h)h(b)q(eha)o(vior)f(is)h(desired.)25
+644 y(2.)29 b(The)18 b(in)o(ternal)h(function)g Fq(completion_matches)
+13 b(\(\))18 b Fr(uses)g(y)o(our)f Fl(generator)k Fr(function)e(to)e
+(generate)h(the)90 706 y(list)h(of)e(p)q(ossible)j(matc)o(hes,)e(and)g
+(then)g(returns)g(the)g(arra)o(y)f(of)h(these)g(matc)o(hes.)28
+b(Y)l(ou)18 b(should)h(place)g(the)90 769 y(address)c(of)g(y)o(our)g
+(generator)f(function)i(in)g Fq(rl_completion_entry_functi)o(on)p
+Fr(.)25 843 y(3.)29 b(The)16 b(generator)g(function)h(is)f(called)i
+(rep)q(eatedly)g(from)d Fq(completion_matches)e(\(\))p
+Fr(,)i(returning)i(a)f(string)90 906 y(eac)o(h)j(time.)31
+b(The)19 b(argumen)o(ts)f(to)g(the)h(generator)e(function)j(are)e
+Fl(text)i Fr(and)f Fl(state)p Fr(.)29 b Fl(text)19 b
+Fr(is)h(the)f(partial)90 968 y(w)o(ord)13 b(to)g(b)q(e)h(completed.)21
+b Fl(state)15 b Fr(is)f(zero)g(the)g(\014rst)f(time)h(the)g(function)g
+(is)g(called,)i(allo)o(wing)e(the)g(generator)90 1030
+y(to)19 b(p)q(erform)f(an)o(y)h(necessary)h(initialization,)i(and)e(a)f
+(p)q(ositiv)o(e)h(non-zero)f(in)o(teger)h(for)e(eac)o(h)h(subsequen)o
+(t)90 1092 y(call.)35 b(When)21 b(the)f(generator)f(function)i(returns)
+f Fq(\(char)14 b(*\)NULL)19 b Fr(this)i(signals)f Fq
+(completion_matches)90 1155 y(\(\))c Fr(that)g(there)h(are)f(no)h(more)
+f(p)q(ossibilitie)q(s)j(left.)25 b(Usually)18 b(the)e(generator)g
+(function)i(computes)e(the)h(list)90 1217 y(of)j(p)q(ossible)i
+(completions)f(when)g Fl(state)h Fr(is)f(zero,)g(and)f(returns)g(them)h
+(one)f(at)g(a)g(time)g(on)g(subsequen)o(t)90 1279 y(calls.)g(Eac)o(h)14
+b(string)f(the)h(generator)e(function)j(returns)e(as)g(a)g(matc)o(h)g
+(m)o(ust)g(b)q(e)h(allo)q(cated)h(with)e Fq(malloc\(\))p
+Fr(;)90 1341 y(Readline)18 b(frees)d(the)g(strings)g(when)h(it)f(has)g
+(\014nished)i(with)f(them.)1725 1503 y(F)l(unction)-1899
+b Fi(int)20 b Fh(rl)p 140 1503 18 3 v 21 w(complete)j
+Fg(\()p Fq(int)14 b(ignore,)g(int)h(invoking_key)p Fg(\))120
+1566 y Fr(Complete)j(the)f(w)o(ord)f(at)h(or)g(b)q(efore)g(p)q(oin)o
+(t.)27 b(Y)l(ou)17 b(ha)o(v)o(e)g(supplied)i(the)f(function)g(that)e
+(do)q(es)i(the)120 1628 y(initial)d(simple)f(matc)o(hing)f(selection)h
+(algorithm)f(\(see)f Fq(completion_matches)h(\(\))p Fr(\).)18
+b(The)13 b(default)120 1690 y(is)j(to)e(do)h(\014lename)i(completion.)
+1736 1852 y(V)l(ariable)-1899 b Fi(Function)20 b(*)g
+Fh(rl)p 316 1852 V 21 w(completion)p 611 1852 V 21 w(en)n(try)p
+764 1852 V 21 w(function)120 1914 y Fr(This)e(is)g(a)f(p)q(oin)o(ter)h
+(to)f(the)g(generator)g(function)h(for)f Fq(completion_matches)12
+b(\(\))p Fr(.)27 b(If)17 b(the)h(v)m(alue)120 1977 y(of)j
+Fq(rl_completion_entry_funct)o(ion)d Fr(is)k Fq(\(Function)14
+b(*\)NULL)20 b Fr(then)i(the)f(default)h(\014lename)120
+2039 y(generator)14 b(function,)i Fq(filename_completion_functi)o(on)c
+(\(\))p Fr(,)j(is)g(used.)0 2247 y Fk(2.5.2)30 b(Completion)15
+b(F)-5 b(unctions)62 2384 y Fr(Here)16 b(is)f(the)h(complete)g(list)g
+(of)e(callable)k(completion)e(functions)g(presen)o(t)f(in)h(Readline.)
+1725 2545 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p 140
+2545 V 21 w(complete)p 385 2545 V 21 w(in)n(ternal)k
+Fg(\()p Fq(int)15 b(what_to_do)p Fg(\))120 2608 y Fr(Complete)d(the)g
+(w)o(ord)f(at)g(or)g(b)q(efore)h(p)q(oin)o(t.)19 b Fl(what)p
+979 2608 14 2 v 16 w(to)p 1036 2608 V 16 w(do)14 b Fr(sa)o(ys)d(what)g
+(to)g(do)g(with)h(the)g(completion.)120 2670 y(A)g(v)m(alue)h(of)f(`)p
+Fq(?)p Fr(')f(means)h(list)h(the)f(p)q(ossible)i(completions.)20
+b(`)p Fq(TAB)p Fr(')11 b(means)h(do)g(standard)f(completion.)p
+eop
+36 37 bop 0 -58 a Fr(36)1449 b(GNU)15 b(Readline)i(Library)120
+183 y(`)p Fq(*)p Fr(')c(means)h(insert)h(all)g(of)f(the)g(p)q(ossible)i
+(completions.)21 b(`)p Fq(!)p Fr(')13 b(means)h(to)g(displa)o(y)h(all)g
+(of)f(the)g(p)q(ossible)120 246 y(completions,)i(if)g(there)f(is)h
+(more)e(than)h(one,)g(as)g(w)o(ell)h(as)f(p)q(erforming)h(partial)f
+(completion.)1725 441 y(F)l(unction)-1899 b Fi(int)20
+b Fh(rl)p 140 441 18 3 v 21 w(complete)j Fg(\()p Fq(int)14
+b(ignore,)g(int)h(invoking_key)p Fg(\))120 503 y Fr(Complete)23
+b(the)g(w)o(ord)e(at)h(or)g(b)q(efore)h(p)q(oin)o(t.)43
+b(Y)l(ou)23 b(ha)o(v)o(e)f(supplied)j(the)d(function)i(that)e(do)q(es)
+120 565 y(the)16 b(initial)j(simple)f(matc)o(hing)e(selection)i
+(algorithm)e(\(see)g Fq(completion_matches)d(\(\))j Fr(and)g
+Fq(rl_)120 627 y(completion_entry_function)p Fr(\))o(.)25
b(The)18 b(default)g(is)g(to)f(do)h(\014lename)h(completion.)29
-b(This)18 b(calls)120 1942 y Fn(rl_complete_internal)12 b(\(\))j
-Fo(with)h(an)f(argumen)o(t)f(dep)q(ending)k(on)d Fj(in)o(v)o(oking)p
-1496 1942 14 2 v 17 w(k)o(ey)p Fo(.)1725 2117 y(F)l(unction)-1899
-b Fh(int)20 b Fg(rl)p 140 2117 18 3 v 21 w(p)r(ossible)p 358
-2117 V 20 w(completions)j Ff(\()p Fn(int)15 b(count,)f(int)h(invoking_key)p
-Ff(\)\))120 2179 y Fo(List)23 b(the)f(p)q(ossible)j(completions.)42
-b(See)23 b(description)h(of)e Fn(rl_complete)14 b(\(\))p Fo(.)41
-b(This)23 b(calls)g Fn(rl_)120 2241 y(complete_internal)13
-b(\(\))i Fo(with)g(an)g(argumen)o(t)g(of)g(`)p Fn(?)p Fo('.)1725
-2416 y(F)l(unction)-1899 b Fh(int)20 b Fg(rl)p 140 2416 V 21
-w(insert)p 303 2416 V 21 w(completions)j Ff(\()p Fn(int)14
-b(count,)g(int)h(invoking_key)p Ff(\)\))120 2478 y Fo(Insert)20
-b(the)f(list)i(of)e(p)q(ossible)i(completions)f(in)o(to)g(the)f(line,)j
-(deleting)f(the)f(partially-completed)120 2540 y(w)o(ord.)h(See)c
-(description)g(of)e Fn(rl_complete)f(\(\))p Fo(.)21 b(This)c(calls)g
-Fn(rl_complete_internal)12 b(\(\))k Fo(with)120 2603 y(an)f(argumen)o(t)g(of)
-f(`)p Fn(*)p Fo('.)p eop
-%%Page: 30 32
-31 bop 0 -83 a Fo(30)1449 b(GNU)15 b(Readline)i(Library)1725
-158 y(F)l(unction)-1899 b Fh(char)20 b(**)f Fg(completion)p
-472 158 18 3 v 21 w(matc)n(hes)j Ff(\()p Fn(char)15 b(*text,)f(CPFunction)208
-221 y(*entry_func)p Ff(\))120 283 y Fo(Returns)22 b(an)g(arra)o(y)e(of)h
-Fn(\(char)15 b(*\))21 b Fo(whic)o(h)i(is)f(a)f(list)i(of)e(completions)i(for)
-e Fj(text)p Fo(.)39 b(If)22 b(there)f(are)120 345 y(no)d(completions,)i
-(returns)e Fn(\(char)c(**\)NULL)p Fo(.)28 b(The)19 b(\014rst)e(en)o(try)h(in)
-h(the)g(returned)f(arra)o(y)f(is)i(the)120 407 y(substitution)c(for)e
-Fj(text)p Fo(.)19 b(The)c(remaining)g(en)o(tries)f(are)g(the)g(p)q(ossible)i
-(completions.)k(The)15 b(arra)o(y)d(is)120 470 y(terminated)j(with)h(a)f
-Fn(NULL)f Fo(p)q(oin)o(ter.)120 613 y Fj(en)o(try)p 227 613
-14 2 v 16 w(func)h Fo(is)d(a)g(function)h(of)e(t)o(w)o(o)g(args,)g(and)h
-(returns)g(a)f Fn(\(char)k(*\))p Fo(.)j(The)12 b(\014rst)f(argumen)o(t)g(is)i
-Fj(text)p Fo(.)120 675 y(The)i(second)f(is)h(a)f(state)g(argumen)o(t;)f(it)i
-(is)g(zero)f(on)g(the)h(\014rst)f(call,)h(and)f(non-zero)h(on)f(subsequen)o
-(t)120 738 y(calls.)21 b Fj(en)o(try)p 346 738 V 16 w(func)c
-Fo(returns)e(a)f Fn(NULL)g Fo(p)q(oin)o(ter)h(to)f(the)g(caller)i(when)f
-(there)f(are)g(no)h(more)f(matc)o(hes.)1725 919 y(F)l(unction)-1899
-b Fh(char)20 b(*)f Fg(\014lename)p 380 919 18 3 v 20 w(completion)p
-674 919 V 21 w(function)k Ff(\()p Fn(char)15 b(*text,)f(int)h(state)p
-Ff(\))120 981 y Fo(A)e(generator)f(function)h(for)f(\014lename)i(completion)g
-(in)f(the)g(general)g(case.)19 b(Note)13 b(that)f(completion)120
-1043 y(in)18 b(Bash)f(is)h(a)f(little)h(di\013eren)o(t)f(b)q(ecause)h(of)f
-(all)h(the)f(pathnames)g(that)g(m)o(ust)f(b)q(e)i(follo)o(w)o(ed)f(when)120
-1105 y(lo)q(oking)23 b(up)f(completions)h(for)e(a)g(command.)39
+b(This)18 b(calls)120 690 y Fq(rl_complete_internal)12
+b(\(\))j Fr(with)h(an)f(argumen)o(t)f(dep)q(ending)k(on)d
+Fl(in)o(v)o(oking)p 1496 690 14 2 v 17 w(k)o(ey)p Fr(.)1725
+885 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p 140 885
+18 3 v 21 w(p)r(ossible)p 358 885 V 20 w(completions)j
+Fg(\()p Fq(int)15 b(count,)f(int)h(invoking_key)p Fg(\)\))120
+947 y Fr(List)23 b(the)f(p)q(ossible)j(completions.)42
+b(See)23 b(description)h(of)e Fq(rl_complete)14 b(\(\))p
+Fr(.)41 b(This)23 b(calls)g Fq(rl_)120 1009 y(complete_internal)13
+b(\(\))i Fr(with)g(an)g(argumen)o(t)g(of)g(`)p Fq(?)p
+Fr('.)1725 1204 y(F)l(unction)-1899 b Fi(int)20 b Fh(rl)p
+140 1204 V 21 w(insert)p 303 1204 V 21 w(completions)j
+Fg(\()p Fq(int)14 b(count,)g(int)h(invoking_key)p Fg(\)\))120
+1267 y Fr(Insert)20 b(the)f(list)i(of)e(p)q(ossible)i(completions)f(in)
+o(to)g(the)f(line,)j(deleting)f(the)f(partially-completed)120
+1329 y(w)o(ord.)h(See)c(description)g(of)e Fq(rl_complete)f(\(\))p
+Fr(.)21 b(This)c(calls)g Fq(rl_complete_internal)12 b(\(\))k
+Fr(with)120 1391 y(an)f(argumen)o(t)g(of)f(`)p Fq(*)p
+Fr('.)1725 1586 y(F)l(unction)-1899 b Fi(char)20 b(**)f
+Fh(completion)p 472 1586 V 21 w(matc)n(hes)j Fg(\()p
+Fq(char)15 b(*text,)f(CPFunction)208 1648 y(*entry_func)p
+Fg(\))120 1711 y Fr(Returns)22 b(an)g(arra)o(y)e(of)h
+Fq(\(char)15 b(*\))21 b Fr(whic)o(h)i(is)f(a)f(list)i(of)e(completions)
+i(for)e Fl(text)p Fr(.)39 b(If)22 b(there)f(are)120 1773
+y(no)d(completions,)i(returns)e Fq(\(char)c(**\)NULL)p
+Fr(.)28 b(The)19 b(\014rst)e(en)o(try)h(in)h(the)g(returned)f(arra)o(y)
+f(is)i(the)120 1835 y(substitution)c(for)e Fl(text)p
+Fr(.)19 b(The)c(remaining)g(en)o(tries)f(are)g(the)g(p)q(ossible)i
+(completions.)k(The)15 b(arra)o(y)d(is)120 1897 y(terminated)j(with)h
+(a)f Fq(NULL)f Fr(p)q(oin)o(ter.)120 2045 y Fl(en)o(try)p
+227 2045 14 2 v 16 w(func)h Fr(is)d(a)g(function)h(of)e(t)o(w)o(o)g
+(args,)g(and)h(returns)g(a)f Fq(\(char)k(*\))p Fr(.)j(The)12
+b(\014rst)f(argumen)o(t)g(is)i Fl(text)p Fr(.)120 2108
+y(The)i(second)f(is)h(a)f(state)g(argumen)o(t;)f(it)i(is)g(zero)f(on)g
+(the)h(\014rst)f(call,)h(and)f(non-zero)h(on)f(subsequen)o(t)120
+2170 y(calls.)21 b Fl(en)o(try)p 346 2170 V 16 w(func)c
+Fr(returns)e(a)f Fq(NULL)g Fr(p)q(oin)o(ter)h(to)f(the)g(caller)i(when)
+f(there)f(are)g(no)h(more)f(matc)o(hes.)1725 2365 y(F)l(unction)-1899
+b Fi(char)20 b(*)f Fh(\014lename)p 380 2365 18 3 v 20
+w(completion)p 674 2365 V 21 w(function)k Fg(\()p Fq(char)15
+b(*text,)f(int)h(state)p Fg(\))120 2427 y Fr(A)e(generator)f(function)h
+(for)f(\014lename)i(completion)g(in)f(the)g(general)g(case.)19
+b(Note)13 b(that)f(completion)120 2490 y(in)18 b(Bash)f(is)h(a)f
+(little)h(di\013eren)o(t)f(b)q(ecause)h(of)f(all)h(the)f(pathnames)g
+(that)g(m)o(ust)f(b)q(e)i(follo)o(w)o(ed)f(when)120 2552
+y(lo)q(oking)23 b(up)f(completions)h(for)e(a)g(command.)39
b(The)22 b(Bash)g(source)g(is)g(a)f(useful)i(reference)g(for)120
-1168 y(writing)16 b(custom)f(completion)h(functions.)1725 1349
-y(F)l(unction)-1899 b Fh(char)20 b(*)f Fg(username)p 412 1349
-V 19 w(completion)p 705 1349 V 21 w(function)k Ff(\()p Fn(char)14
-b(*text,)g(int)h(state)p Ff(\))120 1411 y Fo(A)i(completion)h(generator)e
-(for)g(usernames.)24 b Fj(text)18 b Fo(con)o(tains)e(a)h(partial)g(username)g
-(preceded)h(b)o(y)120 1473 y(a)f(random)g(c)o(haracter)f(\(usually)j(`)p
-Fn(~)p Fo('\).)24 b(As)18 b(with)f(all)h(completion)h(generators,)d
-Fj(state)j Fo(is)f(zero)f(on)120 1536 y(the)e(\014rst)g(call)h(and)g
-(non-zero)f(for)g(subsequen)o(t)h(calls.)0 1801 y Fi(2.4.3)30
-b(Completion)15 b(V)-5 b(ariables)1736 1982 y Fo(V)l(ariable)-1899
-b Fh(Function)20 b(*)g Fg(rl)p 316 1982 V 21 w(completion)p
-611 1982 V 21 w(en)n(try)p 764 1982 V 21 w(function)120 2044
-y Fo(A)d(p)q(oin)o(ter)h(to)f(the)g(generator)f(function)i(for)f
-Fn(completion_matches)c(\(\))p Fo(.)25 b Fn(NULL)17 b Fo(means)g(to)g(use)120
-2106 y Fn(filename_entry_function)12 b(\(\))p Fo(,)j(the)g(default)h
-(\014lename)g(completer.)1736 2287 y(V)l(ariable)-1899 b Fh(CPPFunction)21
-b(*)e Fg(rl)p 394 2287 V 21 w(attempted)p 674 2287 V 20 w(completion)p
-968 2287 V 21 w(function)120 2350 y Fo(A)g(p)q(oin)o(ter)h(to)f(an)g
-(alternativ)o(e)h(function)g(to)f(create)g(matc)o(hes.)32 b(The)20
-b(function)g(is)g(called)h(with)120 2412 y Fj(text)p Fo(,)e
-Fj(start)p Fo(,)g(and)g Fj(end)p Fo(.)32 b Fj(start)19 b Fo(and)g
-Fj(end)j Fo(are)c(indices)j(in)f Fn(rl_line_buffer)d Fo(sa)o(ying)i(what)g
-(the)120 2474 y(b)q(oundaries)c(of)e Fj(text)h Fo(are.)19 b(If)13
-b(this)h(function)g(exists)g(and)g(returns)f Fn(NULL)p Fo(,)g(or)g(if)h(this)
-f(v)m(ariable)i(is)f(set)120 2536 y(to)h Fn(NULL)p Fo(,)f(then)i
-Fn(rl_complete)e(\(\))h Fo(will)i(call)g(the)e(v)m(alue)i(of)e
-Fn(rl_completion_entry_funct)o(ion)120 2599 y Fo(to)g(generate)f(matc)o(hes,)
-h(otherwise)g(the)h(arra)o(y)e(of)g(strings)h(returned)h(will)h(b)q(e)f
-(used.)p eop
-%%Page: 31 33
-32 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(31)1736 158 y(V)l(ariable)-1899 b Fh(int)20 b Fg(rl)p 140
-158 18 3 v 21 w(completion)p 435 158 V 21 w(query)p 598 158
-V 21 w(items)120 221 y Fo(Up)h(to)e(this)i(man)o(y)f(items)h(will)h(b)q(e)f
-(displa)o(y)o(ed)h(in)f(resp)q(onse)g(to)f(a)g(p)q(ossible-completions)j
-(call.)120 283 y(After)16 b(that,)f(w)o(e)g(ask)h(the)g(user)g(if)g(she)g(is)
-h(sure)f(she)g(w)o(an)o(ts)f(to)g(see)h(them)g(all.)23 b(The)16
-b(default)h(v)m(alue)120 345 y(is)f(100.)1736 524 y(V)l(ariable)-1899
-b Fh(char)20 b(*)f Fg(rl)p 211 524 V 21 w(basic)p 355 524 V
-21 w(w)n(ord)p 500 524 V 21 w(break)p 661 524 V 20 w(c)n(haracters)120
-586 y Fo(The)12 b(basic)g(list)h(of)e(c)o(haracters)g(that)g(signal)h(a)g
-(break)f(b)q(et)o(w)o(een)h(w)o(ords)f(for)g(the)h(completer)g(routine.)120
-648 y(The)17 b(default)h(v)m(alue)g(of)e(this)i(v)m(ariable)g(is)g(the)f(c)o
-(haracters)f(whic)o(h)h(break)g(w)o(ords)g(for)f(completion)120
-711 y(in)g(Bash,)f(i.e.,)g Fn(")g(\\t\\n\\"\\\\'`@$><=;|&{\(")p
-Fo(.)1736 889 y(V)l(ariable)-1899 b Fh(char)20 b(*)f Fg(rl)p
-211 889 V 21 w(completer)p 480 889 V 21 w(w)n(ord)p 625 889
-V 20 w(break)p 785 889 V 20 w(c)n(haracters)120 952 y Fo(The)f(list)h(of)e(c)
-o(haracters)g(that)g(signal)i(a)f(break)f(b)q(et)o(w)o(een)h(w)o(ords)g(for)f
-Fn(rl_complete_internal)120 1014 y(\(\))p Fo(.)j(The)15 b(default)h(list)g
-(is)f(the)h(v)m(alue)g(of)f Fn(rl_basic_word_break_charac)o(ters)p
-Fo(.)1736 1192 y(V)l(ariable)-1899 b Fh(char)20 b(*)f Fg(rl)p
-211 1192 V 21 w(sp)r(ecial)p 398 1192 V 22 w(pre\014xes)120
-1255 y Fo(The)d(list)h(of)e(c)o(haracters)g(that)g(are)h(w)o(ord)f(break)h(c)
-o(haracters,)f(but)h(should)h(b)q(e)f(left)g(in)h Fj(text)f
-Fo(when)120 1317 y(it)f(is)g(passed)g(to)f(the)g(completion)i(function.)k
-(Programs)14 b(can)g(use)h(this)g(to)f(help)i(determine)g(what)120
-1379 y(kind)h(of)f(completing)i(to)e(do.)23 b(F)l(or)16 b(instance,)h(Bash)f
-(sets)g(this)h(v)m(ariable)h(to)e Fn(")p Fo($)p Fn(@")f Fo(so)h(that)g(it)h
-(can)120 1442 y(complete)f(shell)h(v)m(ariables)f(and)g(hostnames.)1736
-1620 y(V)l(ariable)-1899 b Fh(int)20 b Fg(rl)p 140 1620 V 21
-w(ignore)p 316 1620 V 20 w(completion)p 610 1620 V 21 w(duplicates)120
-1682 y Fo(If)15 b(non-zero,)h(then)f(disallo)o(w)h(duplicates)h(in)f(the)g
-(matc)o(hes.)j(Default)c(is)h(1.)1736 1861 y(V)l(ariable)-1899
-b Fh(int)20 b Fg(rl)p 140 1861 V 21 w(\014lename)p 369 1861
-V 20 w(completion)p 663 1861 V 21 w(desired)120 1923 y Fo(Non-zero)e(means)g
-(that)f(the)g(results)i(of)e(the)h(matc)o(hes)f(are)h(to)f(b)q(e)h(treated)f
-(as)h(\014lenames.)28 b(This)120 1986 y(is)16 b Fj(alw)o(a)o(ys)h
-Fo(zero)e(on)g(en)o(try)l(,)g(and)h(can)g(only)g(b)q(e)g(c)o(hanged)f(within)
-i(a)e(completion)i(en)o(try)e(generator)120 2048 y(function.)26
-b(If)18 b(it)f(is)h(set)f(to)f(a)h(non-zero)g(v)m(alue,)i(directory)e(names)g
-(ha)o(v)o(e)g(a)g(slash)g(app)q(ended)i(and)120 2110 y(Readline)i(attempts)c
-(to)g(quote)h(completed)i(\014lenames)f(if)f(they)h(con)o(tain)f(an)o(y)g(em)
-o(b)q(edded)i(w)o(ord)120 2172 y(break)15 b(c)o(haracters.)1736
-2351 y(V)l(ariable)-1899 b Fh(int)20 b Fg(rl)p 140 2351 V 21
-w(\014lename)p 369 2351 V 20 w(quoting)p 578 2351 V 21 w(desired)120
-2413 y Fo(Non-zero)c(means)g(that)g(the)g(results)h(of)e(the)i(matc)o(hes)e
-(are)h(to)g(b)q(e)h(quoted)f(using)h(double)g(quotes)120 2476
-y(\(or)d(an)h(application-sp)q(eci\014)q(c)j(quoting)d(mec)o(hanism\))g(if)h
-(the)f(completed)h(\014lename)g(con)o(tains)f(an)o(y)120 2538
-y(c)o(haracters)c(in)h Fn(rl_completer_word_break_cha)o(rs)p
-Fo(.)k(This)c(is)g Fj(alw)o(a)o(ys)h Fo(non-zero)f(on)f(en)o(try)l(,)h(and)
-120 2600 y(can)j(only)h(b)q(e)g(c)o(hanged)f(within)i(a)e(completion)h(en)o
-(try)f(generator)f(function.)p eop
-%%Page: 32 34
-33 bop 0 -83 a Fo(32)1449 b(GNU)15 b(Readline)i(Library)1736
-158 y(V)l(ariable)-1899 b Fh(Function)20 b(*)g Fg(rl)p 316
-158 18 3 v 21 w(ignore)p 492 158 V 20 w(some)p 639 158 V 19
-w(completions)p 955 158 V 21 w(function)120 221 y Fo(This)e(function,)g(if)g
+2614 y(writing)16 b(custom)f(completion)h(functions.)p
+eop
+37 38 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(37)1725 183 y(F)l(unction)-1899 b Fi(char)20
+b(*)f Fh(username)p 412 183 18 3 v 19 w(completion)p
+705 183 V 21 w(function)k Fg(\()p Fq(char)14 b(*text,)g(int)h(state)p
+Fg(\))120 246 y Fr(A)i(completion)h(generator)e(for)g(usernames.)24
+b Fl(text)18 b Fr(con)o(tains)e(a)h(partial)g(username)g(preceded)h(b)o
+(y)120 308 y(a)f(random)g(c)o(haracter)f(\(usually)j(`)p
+Fq(~)p Fr('\).)24 b(As)18 b(with)f(all)h(completion)h(generators,)d
+Fl(state)j Fr(is)f(zero)f(on)120 370 y(the)e(\014rst)g(call)h(and)g
+(non-zero)f(for)g(subsequen)o(t)h(calls.)0 618 y Fk(2.5.3)30
+b(Completion)15 b(V)-5 b(ariables)1736 793 y Fr(V)l(ariable)-1899
+b Fi(Function)20 b(*)g Fh(rl)p 316 793 V 21 w(completion)p
+611 793 V 21 w(en)n(try)p 764 793 V 21 w(function)120
+856 y Fr(A)d(p)q(oin)o(ter)h(to)f(the)g(generator)f(function)i(for)f
+Fq(completion_matches)c(\(\))p Fr(.)25 b Fq(NULL)17 b
+Fr(means)g(to)g(use)120 918 y Fq(filename_entry_function)12
+b(\(\))p Fr(,)j(the)g(default)h(\014lename)g(completer.)1736
+1093 y(V)l(ariable)-1899 b Fi(CPPFunction)21 b(*)e Fh(rl)p
+394 1093 V 21 w(attempted)p 674 1093 V 20 w(completion)p
+968 1093 V 21 w(function)120 1156 y Fr(A)g(p)q(oin)o(ter)h(to)f(an)g
+(alternativ)o(e)h(function)g(to)f(create)g(matc)o(hes.)32
+b(The)20 b(function)g(is)g(called)h(with)120 1218 y Fl(text)p
+Fr(,)e Fl(start)p Fr(,)g(and)g Fl(end)p Fr(.)32 b Fl(start)19
+b Fr(and)g Fl(end)j Fr(are)c(indices)j(in)f Fq(rl_line_buffer)d
+Fr(sa)o(ying)i(what)g(the)120 1280 y(b)q(oundaries)c(of)e
+Fl(text)h Fr(are.)19 b(If)13 b(this)h(function)g(exists)g(and)g
+(returns)f Fq(NULL)p Fr(,)g(or)g(if)h(this)f(v)m(ariable)i(is)f(set)120
+1342 y(to)h Fq(NULL)p Fr(,)f(then)i Fq(rl_complete)e(\(\))h
+Fr(will)i(call)g(the)e(v)m(alue)i(of)e Fq(rl_completion_entry_funct)o
+(ion)120 1405 y Fr(to)g(generate)f(matc)o(hes,)h(otherwise)g(the)h
+(arra)o(y)e(of)g(strings)h(returned)h(will)h(b)q(e)f(used.)1736
+1580 y(V)l(ariable)-1899 b Fi(CPFunction)21 b(*)e Fh(rl)p
+368 1580 V 21 w(\014lename)p 597 1580 V 20 w(quoting)p
+806 1580 V 21 w(function)120 1642 y Fr(A)e(p)q(oin)o(ter)h(to)f(a)g
+(function)h(that)e(will)j(quote)e(a)g(\014lename)h(in)h(an)e
+(application-)i(sp)q(eci\014c)g(fashion.)120 1705 y(This)f(is)g(called)
+i(if)e(\014lename)h(completion)f(is)h(b)q(eing)f(attempted)g(and)f(one)
+h(of)f(the)h(c)o(haracters)f(in)120 1767 y Fq
+(rl_filename_quote_characte)o(rs)g Fr(app)q(ears)k(in)g(a)f(completed)h
+(\014lename.)37 b(The)20 b(function)h(is)120 1829 y(called)14
+b(with)f Fl(text)p Fr(,)g Fl(matc)o(h)p 579 1829 14 2
+v 15 w(t)o(yp)q(e)p Fr(,)g(and)g Fl(quote)p 903 1829
+V 16 w(p)q(oin)o(ter)p Fr(.)20 b(The)13 b Fl(text)g Fr(is)g(the)g
+(\014lename)h(to)e(b)q(e)h(quoted.)120 1891 y(The)21
+b Fl(matc)o(h)p 345 1891 V 16 w(t)o(yp)q(e)j Fr(is)e(either)f
+Fq(SINGLE_MATCH)p Fr(,)g(if)h(there)f(is)h(only)f(one)h(completion)g
+(matc)o(h,)f(or)120 1954 y Fq(MULT_MATCH)p Fr(.)d(Some)13
+b(functions)g(use)h(this)f(to)f(decide)j(whether)e(or)f(not)h(to)f
+(insert)i(a)e(closing)i(quote)120 2016 y(c)o(haracter.)36
+b(The)21 b Fl(quote)p 565 2016 V 16 w(p)q(oin)o(ter)k
+Fr(is)c(a)g(p)q(oin)o(ter)g(to)f(an)o(y)h(op)q(ening)h(quote)f(c)o
+(haracter)f(the)h(user)120 2078 y(t)o(yp)q(ed.)f(Some)15
+b(functions)h(c)o(ho)q(ose)g(to)e(reset)h(this)h(c)o(haracter.)1736
+2254 y(V)l(ariable)-1899 b Fi(CPFunction)21 b(*)e Fh(rl)p
+368 2254 18 3 v 21 w(\014lename)p 597 2254 V 20 w(dequoting)p
+864 2254 V 21 w(function)120 2316 y Fr(A)f(p)q(oin)o(ter)g(to)f(a)g
+(function)h(that)f(will)i(remo)o(v)o(e)e(application-sp)q(eci\014c)k
+(quoting)d(c)o(haracters)f(from)120 2378 y(a)h(\014lename)i(b)q(efore)f
+(completion)h(is)f(attempted,)g(so)f(those)h(c)o(haracters)f(do)g(not)h
+(in)o(terfere)g(with)120 2440 y(matc)o(hing)13 b(the)g(text)f(against)g
+(names)h(in)g(the)g(\014lesystem.)20 b(It)13 b(is)g(called)h(with)f
+Fl(text)p Fr(,)g(the)f(text)h(of)f(the)120 2503 y(w)o(ord)i(to)g(b)q(e)
+h(dequoted,)g(and)g Fl(quote)p 757 2503 14 2 v 16 w(c)o(har)p
+Fr(,)f(whic)o(h)i(is)f(the)g(quoting)g(c)o(haracter)f(that)f(delimits)k
+(the)120 2565 y(\014lename)d(\(usually)g(`)p Fq(')p Fr(')e(or)g(`)p
+Fq(")p Fr('\).)18 b(If)13 b Fl(quote)p 838 2565 V 16
+w(c)o(har)j Fr(is)e(zero,)e(the)h(\014lename)h(w)o(as)e(not)h(in)h(an)f
+(em)o(b)q(edded)120 2627 y(string.)p eop
+38 39 bop 0 -58 a Fr(38)1449 b(GNU)15 b(Readline)i(Library)1736
+183 y(V)l(ariable)-1899 b Fi(Function)20 b(*)g Fh(rl)p
+316 183 18 3 v 21 w(c)n(har)p 444 183 V 20 w(is)p 502
+183 V 22 w(quoted)p 695 183 V 20 w(p)120 246 y Fr(A)d(p)q(oin)o(ter)g
+(to)f(a)g(function)i(to)e(call)h(that)f(determines)i(whether)f(or)f
+(not)g(a)h(sp)q(eci\014c)h(c)o(haracter)e(in)120 308
+y(the)c(line)i(bu\013er)e(is)h(quoted,)f(according)h(to)e(whatev)o(er)h
+(quoting)g(mec)o(hanism)h(the)f(program)f(calling)120
+370 y(readline)j(uses.)20 b(The)13 b(function)g(is)h(called)g(with)f(t)
+o(w)o(o)f(argumen)o(ts:)17 b Fl(text)p Fr(,)c(the)g(text)f(of)g(the)h
+(line,)i(and)120 432 y Fl(index)p Fr(,)j(the)e(index)i(of)e(the)g(c)o
+(haracter)g(in)h(the)g(line.)25 b(It)16 b(is)h(used)g(to)f(decide)i
+(whether)f(a)f(c)o(haracter)120 495 y(found)j(in)g Fq
+(rl_completer_word_break_)o(charact)o(ers)c Fr(should)20
+b(b)q(e)e(used)h(to)f(break)g(w)o(ords)g(for)120 557
+y(the)d(completer.)1736 745 y(V)l(ariable)-1899 b Fi(int)20
+b Fh(rl)p 140 745 V 21 w(completion)p 435 745 V 21 w(query)p
+598 745 V 21 w(items)120 807 y Fr(Up)h(to)e(this)i(man)o(y)f(items)h
+(will)h(b)q(e)f(displa)o(y)o(ed)h(in)f(resp)q(onse)g(to)f(a)g(p)q
+(ossible-completions)j(call.)120 869 y(After)16 b(that,)f(w)o(e)g(ask)h
+(the)g(user)g(if)g(she)g(is)h(sure)f(she)g(w)o(an)o(ts)f(to)g(see)h
+(them)g(all.)23 b(The)16 b(default)h(v)m(alue)120 932
+y(is)f(100.)1736 1120 y(V)l(ariable)-1899 b Fi(char)20
+b(*)f Fh(rl)p 211 1120 V 21 w(basic)p 355 1120 V 21 w(w)n(ord)p
+500 1120 V 21 w(break)p 661 1120 V 20 w(c)n(haracters)120
+1182 y Fr(The)12 b(basic)g(list)h(of)e(c)o(haracters)g(that)g(signal)h
+(a)g(break)f(b)q(et)o(w)o(een)h(w)o(ords)f(for)g(the)h(completer)g
+(routine.)120 1244 y(The)17 b(default)h(v)m(alue)g(of)e(this)i(v)m
+(ariable)g(is)g(the)f(c)o(haracters)f(whic)o(h)h(break)g(w)o(ords)g
+(for)f(completion)120 1306 y(in)g(Bash,)f(i.e.,)g Fq(")g
+(\\t\\n\\"\\\\'`@$><=;|&{\(")p Fr(.)1736 1494 y(V)l(ariable)-1899
+b Fi(char)20 b(*)f Fh(rl)p 211 1494 V 21 w(basic)p 355
+1494 V 21 w(quote)p 515 1494 V 21 w(c)n(haracters)120
+1557 y Fr(List)d(of)f(quote)g(c)o(haracters)f(whic)o(h)i(can)f(cause)h
+(a)f(w)o(ord)f(break.)1736 1745 y(V)l(ariable)-1899 b
+Fi(char)20 b(*)f Fh(rl)p 211 1745 V 21 w(completer)p
+480 1745 V 21 w(w)n(ord)p 625 1745 V 20 w(break)p 785
+1745 V 20 w(c)n(haracters)120 1807 y Fr(The)f(list)h(of)e(c)o
+(haracters)g(that)g(signal)i(a)f(break)f(b)q(et)o(w)o(een)h(w)o(ords)g
+(for)f Fq(rl_complete_internal)120 1869 y(\(\))p Fr(.)j(The)15
+b(default)h(list)g(is)f(the)h(v)m(alue)g(of)f Fq
+(rl_basic_word_break_charac)o(ters)p Fr(.)1736 2057 y(V)l(ariable)-1899
+b Fi(char)20 b(*)f Fh(rl)p 211 2057 V 21 w(completer)p
+480 2057 V 21 w(quote)p 640 2057 V 21 w(c)n(haracters)120
+2120 y Fr(List)j(of)e(c)o(haracters)g(whic)o(h)i(can)f(b)q(e)h(used)f
+(to)f(quote)h(a)g(substring)g(of)f(the)h(line.)39 b(Completion)120
+2182 y(o)q(ccurs)17 b(on)f(the)h(en)o(tire)g(substring,)g(and)f(within)
+i(the)e(substring)h Fq(rl_completer_word_break_)120 2244
+y(characters)i Fr(are)g(treated)h(as)f(an)o(y)h(other)g(c)o(haracter,)g
+(unless)h(they)f(also)g(app)q(ear)g(within)i(this)120
+2306 y(list.)1736 2494 y(V)l(ariable)-1899 b Fi(char)20
+b(*)f Fh(rl)p 211 2494 V 21 w(\014lename)p 440 2494 V
+20 w(quote)p 599 2494 V 21 w(c)n(haracters)120 2557 y
+Fr(A)g(list)h(of)e(c)o(haracters)g(that)g(cause)h(a)g(\014lename)h(to)e
+(b)q(e)i(quoted)e(b)o(y)h(the)g(completer)h(when)f(they)120
+2619 y(app)q(ear)c(in)h(a)f(completed)h(\014lename.)21
+b(The)16 b(default)g(is)f(empt)o(y)l(.)p eop
+39 40 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(39)1736 183 y(V)l(ariable)-1899 b Fi(char)20
+b(*)f Fh(rl)p 211 183 18 3 v 21 w(sp)r(ecial)p 398 183
+V 22 w(pre\014xes)120 246 y Fr(The)d(list)h(of)e(c)o(haracters)g(that)g
+(are)h(w)o(ord)f(break)h(c)o(haracters,)f(but)h(should)h(b)q(e)f(left)g
+(in)h Fl(text)f Fr(when)120 308 y(it)f(is)g(passed)g(to)f(the)g
+(completion)i(function.)k(Programs)14 b(can)g(use)h(this)g(to)f(help)i
+(determine)g(what)120 370 y(kind)h(of)f(completing)i(to)e(do.)23
+b(F)l(or)16 b(instance,)h(Bash)f(sets)g(this)h(v)m(ariable)h(to)e
+Fq(")p Fr($)p Fq(@")f Fr(so)h(that)g(it)h(can)120 432
+y(complete)f(shell)h(v)m(ariables)f(and)g(hostnames.)1736
+587 y(V)l(ariable)-1899 b Fi(int)20 b Fh(rl)p 140 587
+V 21 w(completion)p 435 587 V 21 w(app)r(end)p 640 587
+V 19 w(c)n(haracter)120 650 y Fr(When)f(a)g(single)h(completion)g
+(alternativ)o(e)f(matc)o(hes)g(at)f(the)h(end)g(of)g(the)g(command)f
+(line,)k(this)120 712 y(c)o(haracter)12 b(is)i(app)q(ended)h(to)d(the)i
+(inserted)g(completion)g(text.)19 b(The)13 b(default)h(is)f(a)g(space)h
+(c)o(haracter)120 774 y(\(`)g('\).)21 b(Setting)c(this)f(to)f(the)h(n)o
+(ull)h(c)o(haracter)e(\(`)p Fq(\\0)p Fr('\))f(prev)o(en)o(ts)i(an)o
+(ything)g(b)q(eing)h(app)q(ended)g(auto-)120 836 y(matically)l(.)26
+b(This)17 b(can)g(b)q(e)g(c)o(hanged)g(in)g(custom)g(completion)h
+(functions)f(to)f(pro)o(vide)h(the)g(\\most)120 899 y(sensible)i(w)o
+(ord)d(separator)g(c)o(haracter")g(according)h(to)f(an)h
+(application-sp)q(eci\014)q(c)j(command)c(line)120 961
+y(syn)o(tax)e(sp)q(eci\014cation.)1736 1116 y(V)l(ariable)-1899
+b Fi(int)20 b Fh(rl)p 140 1116 V 21 w(ignore)p 316 1116
+V 20 w(completion)p 610 1116 V 21 w(duplicates)120 1178
+y Fr(If)15 b(non-zero,)h(then)f(disallo)o(w)h(duplicates)h(in)f(the)g
+(matc)o(hes.)j(Default)c(is)h(1.)1736 1333 y(V)l(ariable)-1899
+b Fi(int)20 b Fh(rl)p 140 1333 V 21 w(\014lename)p 369
+1333 V 20 w(completion)p 663 1333 V 21 w(desired)120
+1395 y Fr(Non-zero)e(means)g(that)f(the)g(results)i(of)e(the)h(matc)o
+(hes)f(are)h(to)f(b)q(e)h(treated)f(as)h(\014lenames.)28
+b(This)120 1458 y(is)16 b Fl(alw)o(a)o(ys)h Fr(zero)e(on)g(en)o(try)l
+(,)g(and)h(can)g(only)g(b)q(e)g(c)o(hanged)f(within)i(a)e(completion)i
+(en)o(try)e(generator)120 1520 y(function.)26 b(If)18
+b(it)f(is)h(set)f(to)f(a)h(non-zero)g(v)m(alue,)i(directory)e(names)g
+(ha)o(v)o(e)g(a)g(slash)g(app)q(ended)i(and)120 1582
+y(Readline)i(attempts)c(to)g(quote)h(completed)i(\014lenames)f(if)f
+(they)h(con)o(tain)f(an)o(y)g(em)o(b)q(edded)i(w)o(ord)120
+1645 y(break)15 b(c)o(haracters.)1736 1800 y(V)l(ariable)-1899
+b Fi(int)20 b Fh(rl)p 140 1800 V 21 w(\014lename)p 369
+1800 V 20 w(quoting)p 578 1800 V 21 w(desired)120 1862
+y Fr(Non-zero)c(means)g(that)g(the)g(results)h(of)e(the)i(matc)o(hes)e
+(are)h(to)g(b)q(e)h(quoted)f(using)h(double)g(quotes)120
+1924 y(\(or)d(an)h(application-sp)q(eci\014)q(c)j(quoting)d(mec)o
+(hanism\))g(if)h(the)f(completed)h(\014lename)g(con)o(tains)f(an)o(y)
+120 1986 y(c)o(haracters)i(in)h Fq(rl_filename_quote_chars)p
+Fr(.)24 b(This)19 b(is)f Fl(alw)o(a)o(ys)h Fr(non-zero)f(on)f(en)o(try)
+l(,)h(and)g(can)120 2049 y(only)d(b)q(e)g(c)o(hanged)f(within)i(a)e
+(completion)h(en)o(try)f(generator)g(function.)20 b(The)14
+b(quoting)h(is)g(e\013ected)120 2111 y(via)g(a)g(call)i(to)d(the)i
+(function)g(p)q(oin)o(ted)g(to)e(b)o(y)h Fq
+(rl_filename_quoting_function)p Fr(.)1736 2266 y(V)l(ariable)-1899
+b Fi(int)20 b Fh(rl)p 140 2266 V 21 w(inhibit)p 324 2266
+V 23 w(completion)120 2328 y Fr(If)15 b(this)g(v)m(ariable)h(is)f
+(non-zero,)g(completion)h(is)f(inhibit)p Fq(<)p Fr(ed.)22
+b(The)15 b(completion)h(c)o(haracter)e(will)i(b)q(e)120
+2390 y(inserted)g(as)f(an)o(y)g(other)g(b)q(ound)h(to)e
+Fq(self-insert)p Fr(.)1736 2545 y(V)l(ariable)-1899 b
+Fi(Function)20 b(*)g Fh(rl)p 316 2545 V 21 w(ignore)p
+492 2545 V 20 w(some)p 639 2545 V 19 w(completions)p
+955 2545 V 21 w(function)120 2608 y Fr(This)e(function,)g(if)g
(de\014ned,)h(is)f(called)h(b)o(y)e(the)h(completer)g(when)g(real)f
-(\014lename)i(completion)f(is)120 283 y(done,)13 b(after)e(all)i(the)g(matc)o
-(hing)f(names)g(ha)o(v)o(e)g(b)q(een)h(generated.)19 b(It)12
-b(is)h(passed)f(a)g Fn(NULL)g Fo(terminated)120 345 y(arra)o(y)k(of)h(matc)o
-(hes.)26 b(The)17 b(\014rst)g(elemen)o(t)h(\()p Fn(matches[0])p
-Fo(\))e(is)h(the)h(maximal)g(substring)f(common)120 407 y(to)f(all)h(matc)o
-(hes.)22 b(This)17 b(function)g(can)f(re-arrange)g(the)g(list)h(of)f(matc)o
-(hes)g(as)f(required,)j(but)e(eac)o(h)120 470 y(elemen)o(t)g(deleted)g(from)f
-(the)g(arra)o(y)f(m)o(ust)h(b)q(e)h(freed.)1736 632 y(V)l(ariable)-1899
-b Fh(char)20 b(*)f Fg(rl)p 211 632 V 21 w(completer)p 480 632
-V 21 w(quote)p 640 632 V 21 w(c)n(haracters)120 694 y Fo(List)j(of)e(c)o
-(haracters)g(whic)o(h)i(can)f(b)q(e)h(used)f(to)f(quote)h(a)g(substring)g(of)
-f(the)h(line.)39 b(Completion)120 756 y(o)q(ccurs)17 b(on)f(the)h(en)o(tire)g
-(substring,)g(and)f(within)i(the)e(substring)h Fn(rl_completer_word_break_)
-120 818 y(characters)i Fo(are)g(treated)h(as)f(an)o(y)h(other)g(c)o
-(haracter,)g(unless)h(they)f(also)g(app)q(ear)g(within)i(this)120
-881 y(list.)0 1088 y Fi(2.4.4)30 b(A)15 b(Short)g(Completion)g(Example)62
-1225 y Fo(Here)20 b(is)h(a)e(small)i(application)g(demonstrating)f(the)f(use)
-i(of)e(the)h(GNU)f(Readline)k(library)l(.)34 b(It)20 b(is)g(called)0
-1287 y Fn(fileman)p Fo(,)14 b(and)i(the)f(source)g(co)q(de)h(resides)g(in)h
-(`)p Fn(examples/fileman.c)p Fo(')o(.)h(This)e(sample)f(application)i(pro)o
-(vides)0 1350 y(completion)f(of)f(command)g(names,)g(line)i(editing)f
-(features,)f(and)g(access)g(to)g(the)g(history)g(list.)p eop
-%%Page: 33 35
-34 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(33)120 158 y Fn(/*)24 b(fileman.c)e(--)i(A)g(tiny)f(application)f(which)h
-(demonstrates)g(how)g(to)h(use)f(the)192 208 y(GNU)g(Readline)g(library.)46
-b(This)24 b(application)e(interactively)g(allows)h(users)192
-258 y(to)g(manipulate)g(files)g(and)g(their)g(modes.)h(*/)120
-358 y(#include)f(<stdio.h>)120 407 y(#include)g(<sys/types.h>)120
-457 y(#include)g(<sys/file.h>)120 507 y(#include)g(<sys/stat.h>)120
-557 y(#include)g(<sys/errno.h>)120 656 y(#include)g(<readline/readline.h>)120
-706 y(#include)g(<readline/history.h>)120 806 y(extern)g(char)g(*getwd)g
-(\(\);)120 856 y(extern)g(char)g(*xmalloc)g(\(\);)120 955 y(/*)h(The)f(names)
-g(of)h(functions)e(that)i(actually)f(do)g(the)h(manipulation.)e(*/)120
-1005 y(int)h(com_list)g(\(\),)h(com_view)e(\(\),)i(com_rename)e(\(\),)i
-(com_stat)f(\(\),)g(com_pwd)g(\(\);)120 1055 y(int)g(com_delete)g(\(\),)g
-(com_help)g(\(\),)h(com_cd)f(\(\),)g(com_quit)g(\(\);)120 1155
-y(/*)h(A)f(structure)g(which)g(contains)g(information)f(on)i(the)f(commands)g
-(this)g(program)192 1204 y(can)g(understand.)f(*/)120 1304
-y(typedef)h(struct)g({)168 1354 y(char)g(*name;)g(/*)h(User)f(printable)g
-(name)g(of)h(the)f(function.)g(*/)168 1404 y(Function)f(*func;)i(/*)f
-(Function)g(to)g(call)h(to)f(do)h(the)f(job.)h(*/)168 1453
-y(char)f(*doc;)g(/*)h(Documentation)e(for)h(this)h(function.)46
-b(*/)120 1503 y(})24 b(COMMAND;)120 1603 y(COMMAND)f(commands[])f(=)i({)168
-1653 y({)f("cd",)h(com_cd,)f("Change)f(to)i(directory)f(DIR")g(},)168
-1703 y({)g("delete",)g(com_delete,)f("Delete)h(FILE")h(},)168
-1752 y({)f("help",)g(com_help,)g("Display)g(this)g(text")g(},)168
-1802 y({)g("?",)h(com_help,)e("Synonym)h(for)h(`help'")f(},)168
-1852 y({)g("list",)g(com_list,)g("List)g(files)g(in)h(DIR")f(},)168
-1902 y({)g("ls",)h(com_list,)e("Synonym)h(for)g(`list'")g(},)168
-1952 y({)g("pwd",)g(com_pwd,)g("Print)g(the)h(current)f(working)g(directory")
-f(},)168 2001 y({)h("quit",)g(com_quit,)g("Quit)g(using)g(Fileman")g(},)168
-2051 y({)g("rename",)g(com_rename,)f("Rename)h(FILE)h(to)f(NEWNAME")g(},)168
-2101 y({)g("stat",)g(com_stat,)g("Print)g(out)g(statistics)g(on)h(FILE")f(},)
-168 2151 y({)g("view",)g(com_view,)g("View)g(the)h(contents)e(of)i(FILE")f
-(},)168 2201 y({)g(\(char)h(*\)NULL,)f(\(Function)f(*\)NULL,)h(\(char)g
-(*\)NULL)g(})120 2250 y(};)120 2350 y(/*)h(Forward)e(declarations.)h(*/)120
-2400 y(char)g(*stripwhite)g(\(\);)120 2450 y(COMMAND)g(*find_command)f(\(\);)
-120 2549 y(/*)i(The)f(name)g(of)h(this)f(program,)g(as)h(taken)f(from)g
-(argv[0].)g(*/)120 2599 y(char)g(*progname;)p eop
-%%Page: 34 36
-35 bop 0 -83 a Fo(34)1449 b(GNU)15 b(Readline)i(Library)120
-208 y Fn(/*)24 b(When)f(non-zero,)g(this)g(global)g(means)g(the)h(user)f(is)g
-(done)h(using)f(this)g(program.)g(*/)120 258 y(int)g(done;)120
-358 y(char)g(*)120 407 y(dupstr)g(\(s\))239 457 y(int)h(s;)120
-507 y({)168 557 y(char)f(*r;)168 656 y(r)g(=)h(xmalloc)f(\(strlen)g(\(s\))g
-(+)h(1\);)168 706 y(strcpy)f(\(r,)g(s\);)168 756 y(return)g(\(r\);)120
-806 y(})120 906 y(main)g(\(argc,)g(argv\))239 955 y(int)h(argc;)239
-1005 y(char)g(**argv;)120 1055 y({)168 1105 y(char)f(*line,)g(*s;)168
-1204 y(progname)f(=)i(argv[0];)168 1304 y(initialize_readline)d(\(\);)i(/*)h
-(Bind)f(our)h(completer.)e(*/)168 1404 y(/*)h(Loop)h(reading)f(and)g
-(executing)g(lines)g(until)g(the)g(user)h(quits.)f(*/)168 1453
-y(for)g(\()h(;)g(done)f(==)h(0;)f(\))215 1503 y({)263 1553
-y(line)g(=)h(readline)f(\("FileMan:)f("\);)263 1653 y(if)i(\(!line\))311
-1703 y(break;)263 1802 y(/*)g(Remove)f(leading)g(and)g(trailing)g(whitespace)
-f(from)i(the)f(line.)335 1852 y(Then,)g(if)h(there)f(is)g(anything)g(left,)g
-(add)h(it)f(to)h(the)f(history)g(list)335 1902 y(and)g(execute)g(it.)h(*/)263
-1952 y(s)g(=)g(stripwhite)e(\(line\);)263 2051 y(if)i(\(*s\))311
-2101 y({)359 2151 y(add_history)e(\(s\);)359 2201 y(execute_line)g(\(s\);)311
-2250 y(})263 2350 y(free)h(\(line\);)215 2400 y(})168 2450
-y(exit)g(\(0\);)120 2500 y(})120 2599 y(/*)h(Execute)e(a)i(command)f(line.)g
-(*/)p eop
-%%Page: 35 37
-36 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(35)120 158 y Fn(int)120 208 y(execute_line)22 b(\(line\))239
-258 y(char)i(*line;)120 308 y({)168 358 y(register)e(int)i(i;)168
-407 y(COMMAND)f(*command;)168 457 y(char)g(*word;)168 557 y(/*)g(Isolate)g
-(the)h(command)f(word.)g(*/)168 607 y(i)g(=)h(0;)168 656 y(while)f(\(line[i])
-g(&&)g(whitespace)g(\(line[i]\)\))215 706 y(i++;)168 756 y(word)g(=)h(line)f
-(+)h(i;)168 856 y(while)f(\(line[i])g(&&)g(!whitespace)g(\(line[i]\)\))215
-906 y(i++;)168 1005 y(if)g(\(line[i]\))215 1055 y(line[i++])g(=)h('\\0';)168
-1155 y(command)f(=)g(find_command)g(\(word\);)168 1254 y(if)g(\(!command\))
-215 1304 y({)263 1354 y(fprintf)g(\(stderr,)g("\045s:)g(No)h(such)f(command)g
-(for)g(FileMan.\\n",)g(word\);)263 1404 y(return)g(\(-1\);)215
-1453 y(})168 1553 y(/*)g(Get)h(argument)f(to)g(command,)g(if)g(any.)h(*/)168
-1603 y(while)f(\(whitespace)f(\(line[i]\)\))215 1653 y(i++;)168
-1752 y(word)h(=)h(line)f(+)h(i;)168 1852 y(/*)f(Call)h(the)f(function.)g(*/)
-168 1902 y(return)g(\(\(*\(command->func\)\))e(\(word\)\);)120
-1952 y(})120 2051 y(/*)j(Look)f(up)g(NAME)h(as)f(the)h(name)f(of)h(a)f
-(command,)g(and)h(return)f(a)g(pointer)g(to)h(that)192 2101
-y(command.)46 b(Return)23 b(a)h(NULL)f(pointer)g(if)h(NAME)f(isn't)g(a)h
-(command)f(name.)g(*/)120 2151 y(COMMAND)g(*)120 2201 y(find_command)f
-(\(name\))239 2250 y(char)i(*name;)120 2300 y({)168 2350 y(register)e(int)i
-(i;)168 2450 y(for)f(\(i)h(=)f(0;)h(commands[i].name;)e(i++\))215
-2500 y(if)i(\(strcmp)f(\(name,)g(commands[i].name\))f(==)h(0\))263
-2549 y(return)g(\(&commands[i]\);)p eop
-%%Page: 36 38
-37 bop 0 -83 a Fo(36)1449 b(GNU)15 b(Readline)i(Library)168
-208 y Fn(return)23 b(\(\(COMMAND)f(*\)NULL\);)120 258 y(})120
-358 y(/*)i(Strip)f(whitespace)f(from)i(the)f(start)g(and)h(end)f(of)h
-(STRING.)46 b(Return)24 b(a)f(pointer)192 407 y(into)g(STRING.)g(*/)120
-457 y(char)g(*)120 507 y(stripwhite)f(\(string\))239 557 y(char)i(*string;)
-120 607 y({)168 656 y(register)e(char)i(*s,)f(*t;)168 756 y(for)g(\(s)h(=)f
-(string;)g(whitespace)g(\(*s\);)g(s++\))215 806 y(;)168 906
-y(if)g(\(*s)h(==)f(0\))215 955 y(return)g(\(s\);)168 1055 y(t)g(=)h(s)g(+)g
-(strlen)f(\(s\))g(-)h(1;)168 1105 y(while)f(\(t)g(>)h(s)g(&&)g(whitespace)e
-(\(*t\)\))215 1155 y(t--;)168 1204 y(*++t)h(=)h('\\0';)168
-1304 y(return)f(s;)120 1354 y(})120 1453 y(/*)h(***********************)o
+(\014lename)i(completion)f(is)120 2670 y(done,)13 b(after)e(all)i(the)g
+(matc)o(hing)f(names)g(ha)o(v)o(e)g(b)q(een)h(generated.)19
+b(It)12 b(is)h(passed)f(a)g Fq(NULL)g Fr(terminated)p
+eop
+40 41 bop 0 -58 a Fr(40)1449 b(GNU)15 b(Readline)i(Library)120
+183 y(arra)o(y)f(of)h(matc)o(hes.)26 b(The)17 b(\014rst)g(elemen)o(t)h
+(\()p Fq(matches[0])p Fr(\))e(is)h(the)h(maximal)g(substring)f(common)
+120 246 y(to)f(all)h(matc)o(hes.)22 b(This)17 b(function)g(can)f
+(re-arrange)g(the)g(list)h(of)f(matc)o(hes)g(as)f(required,)j(but)e
+(eac)o(h)120 308 y(elemen)o(t)g(deleted)g(from)f(the)g(arra)o(y)f(m)o
+(ust)h(b)q(e)h(freed.)1736 470 y(V)l(ariable)-1899 b
+Fi(Function)20 b(*)g Fh(rl)p 316 470 18 3 v 21 w(directory)p
+564 470 V 21 w(completion)p 859 470 V 21 w(ho)r(ok)120
+532 y Fr(This)15 b(function,)g(if)g(de\014ned,)h(is)f(allo)o(w)o(ed)g
+(to)e(mo)q(dify)j(the)e(directory)h(p)q(ortion)g(of)f(\014lenames)h
+(Read-)120 594 y(line)h(completes.)k(It)14 b(is)g(called)i(with)e(the)g
+(address)g(of)g(a)g(string)g(\(the)g(curren)o(t)f(directory)i(name\))e
+(as)120 656 y(an)f(argumen)o(t.)17 b(It)12 b(could)h(b)q(e)f(used)g(to)
+f(expand)h(sym)o(b)q(olic)h(links)g(or)e(shell)i(v)m(ariables)g(in)f
+(pathnames.)0 864 y Fk(2.5.4)30 b(A)15 b(Short)g(Completion)g(Example)
+62 1001 y Fr(Here)20 b(is)h(a)e(small)i(application)g(demonstrating)f
+(the)f(use)i(of)e(the)h(GNU)f(Readline)k(library)l(.)34
+b(It)20 b(is)g(called)0 1063 y Fq(fileman)p Fr(,)14 b(and)i(the)f
+(source)g(co)q(de)h(resides)g(in)h(`)p Fq(examples/fileman.c)p
+Fr(')o(.)h(This)e(sample)f(application)i(pro)o(vides)0
+1126 y(completion)f(of)f(command)g(names,)g(line)i(editing)f(features,)
+f(and)g(access)g(to)g(the)g(history)g(list.)p eop
+41 42 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(41)120 183 y Fq(/*)24 b(fileman.c)e(--)i(A)g(tiny)f
+(application)f(which)h(demonstrates)g(how)g(to)h(use)f(the)192
+235 y(GNU)g(Readline)g(library.)46 b(This)24 b(application)e
+(interactively)g(allows)h(users)192 287 y(to)g(manipulate)g(files)g
+(and)g(their)g(modes.)h(*/)120 391 y(#include)f(<stdio.h>)120
+443 y(#include)g(<sys/types.h>)120 495 y(#include)g(<sys/file.h>)120
+546 y(#include)g(<sys/stat.h>)120 598 y(#include)g(<sys/errno.h>)120
+702 y(#include)g(<readline/readline.h>)120 754 y(#include)g
+(<readline/history.h>)120 858 y(extern)g(char)g(*getwd)g(\(\);)120
+910 y(extern)g(char)g(*xmalloc)g(\(\);)120 1013 y(/*)h(The)f(names)g
+(of)h(functions)e(that)i(actually)f(do)g(the)h(manipulation.)e(*/)120
+1065 y(int)h(com_list)g(\(\),)h(com_view)e(\(\),)i(com_rename)e(\(\),)i
+(com_stat)f(\(\),)g(com_pwd)g(\(\);)120 1117 y(int)g(com_delete)g
+(\(\),)g(com_help)g(\(\),)h(com_cd)f(\(\),)g(com_quit)g(\(\);)120
+1221 y(/*)h(A)f(structure)g(which)g(contains)g(information)f(on)i(the)f
+(commands)g(this)g(program)192 1273 y(can)g(understand.)f(*/)120
+1377 y(typedef)h(struct)g({)168 1429 y(char)g(*name;)g(/*)h(User)f
+(printable)g(name)g(of)h(the)f(function.)g(*/)168 1480
+y(Function)f(*func;)i(/*)f(Function)g(to)g(call)h(to)f(do)h(the)f(job.)
+h(*/)168 1532 y(char)f(*doc;)g(/*)h(Documentation)e(for)h(this)h
+(function.)46 b(*/)120 1584 y(})24 b(COMMAND;)120 1688
+y(COMMAND)f(commands[])f(=)i({)168 1740 y({)f("cd",)h(com_cd,)f
+("Change)f(to)i(directory)f(DIR")g(},)168 1792 y({)g("delete",)g
+(com_delete,)f("Delete)h(FILE")h(},)168 1844 y({)f("help",)g(com_help,)
+g("Display)g(this)g(text")g(},)168 1896 y({)g("?",)h(com_help,)e
+("Synonym)h(for)h(`help'")f(},)168 1947 y({)g("list",)g(com_list,)g
+("List)g(files)g(in)h(DIR")f(},)168 1999 y({)g("ls",)h(com_list,)e
+("Synonym)h(for)g(`list'")g(},)168 2051 y({)g("pwd",)g(com_pwd,)g
+("Print)g(the)h(current)f(working)g(directory")f(},)168
+2103 y({)h("quit",)g(com_quit,)g("Quit)g(using)g(Fileman")g(},)168
+2155 y({)g("rename",)g(com_rename,)f("Rename)h(FILE)h(to)f(NEWNAME")g
+(},)168 2207 y({)g("stat",)g(com_stat,)g("Print)g(out)g(statistics)g
+(on)h(FILE")f(},)168 2259 y({)g("view",)g(com_view,)g("View)g(the)h
+(contents)e(of)i(FILE")f(},)168 2311 y({)g(\(char)h(*\)NULL,)f
+(\(Function)f(*\)NULL,)h(\(char)g(*\)NULL)g(})120 2363
+y(};)120 2466 y(/*)h(Forward)e(declarations.)h(*/)120
+2518 y(char)g(*stripwhite)g(\(\);)120 2570 y(COMMAND)g(*find_command)f
+(\(\);)p eop
+42 43 bop 0 -58 a Fr(42)1449 b(GNU)15 b(Readline)i(Library)120
+183 y Fq(/*)24 b(The)f(name)g(of)h(this)f(program,)g(as)h(taken)f(from)
+g(argv[0].)g(*/)120 235 y(char)g(*progname;)120 339 y(/*)h(When)f
+(non-zero,)g(this)g(global)g(means)g(the)h(user)f(is)g(done)h(using)f
+(this)g(program.)g(*/)120 391 y(int)g(done;)120 495 y(char)g(*)120
+546 y(dupstr)g(\(s\))239 598 y(int)h(s;)120 650 y({)168
+702 y(char)f(*r;)168 806 y(r)g(=)h(xmalloc)f(\(strlen)g(\(s\))g(+)h
+(1\);)168 858 y(strcpy)f(\(r,)g(s\);)168 910 y(return)g(\(r\);)120
+962 y(})120 1065 y(main)g(\(argc,)g(argv\))239 1117 y(int)h(argc;)239
+1169 y(char)g(**argv;)120 1221 y({)168 1273 y(char)f(*line,)g(*s;)168
+1377 y(progname)f(=)i(argv[0];)168 1480 y(initialize_readline)d(\(\);)i
+(/*)h(Bind)f(our)h(completer.)e(*/)168 1584 y(/*)h(Loop)h(reading)f
+(and)g(executing)g(lines)g(until)g(the)g(user)h(quits.)f(*/)168
+1636 y(for)g(\()h(;)g(done)f(==)h(0;)f(\))215 1688 y({)263
+1740 y(line)g(=)h(readline)f(\("FileMan:)f("\);)263 1844
+y(if)i(\(!line\))311 1896 y(break;)263 1999 y(/*)g(Remove)f(leading)g
+(and)g(trailing)g(whitespace)f(from)i(the)f(line.)335
+2051 y(Then,)g(if)h(there)f(is)g(anything)g(left,)g(add)h(it)f(to)h
+(the)f(history)g(list)335 2103 y(and)g(execute)g(it.)h(*/)263
+2155 y(s)g(=)g(stripwhite)e(\(line\);)263 2259 y(if)i(\(*s\))311
+2311 y({)359 2363 y(add_history)e(\(s\);)359 2414 y(execute_line)g
+(\(s\);)311 2466 y(})263 2570 y(free)h(\(line\);)215
+2622 y(})p eop
+43 44 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(43)168 183 y Fq(exit)23 b(\(0\);)120
+235 y(})120 339 y(/*)h(Execute)e(a)i(command)f(line.)g(*/)120
+391 y(int)120 443 y(execute_line)f(\(line\))239 495 y(char)i(*line;)120
+546 y({)168 598 y(register)e(int)i(i;)168 650 y(COMMAND)f(*command;)168
+702 y(char)g(*word;)168 806 y(/*)g(Isolate)g(the)h(command)f(word.)g
+(*/)168 858 y(i)g(=)h(0;)168 910 y(while)f(\(line[i])g(&&)g(whitespace)
+g(\(line[i]\)\))215 962 y(i++;)168 1013 y(word)g(=)h(line)f(+)h(i;)168
+1117 y(while)f(\(line[i])g(&&)g(!whitespace)g(\(line[i]\)\))215
+1169 y(i++;)168 1273 y(if)g(\(line[i]\))215 1325 y(line[i++])g(=)h
+('\\0';)168 1429 y(command)f(=)g(find_command)g(\(word\);)168
+1532 y(if)g(\(!command\))215 1584 y({)263 1636 y(fprintf)g(\(stderr,)g
+("\045s:)g(No)h(such)f(command)g(for)g(FileMan.\\n",)g(word\);)263
+1688 y(return)g(\(-1\);)215 1740 y(})168 1844 y(/*)g(Get)h(argument)f
+(to)g(command,)g(if)g(any.)h(*/)168 1896 y(while)f(\(whitespace)f
+(\(line[i]\)\))215 1947 y(i++;)168 2051 y(word)h(=)h(line)f(+)h(i;)168
+2155 y(/*)f(Call)h(the)f(function.)g(*/)168 2207 y(return)g
+(\(\(*\(command->func\)\))e(\(word\)\);)120 2259 y(})120
+2363 y(/*)j(Look)f(up)g(NAME)h(as)f(the)h(name)f(of)h(a)f(command,)g
+(and)h(return)f(a)g(pointer)g(to)h(that)192 2414 y(command.)46
+b(Return)23 b(a)h(NULL)f(pointer)g(if)h(NAME)f(isn't)g(a)h(command)f
+(name.)g(*/)120 2466 y(COMMAND)g(*)120 2518 y(find_command)f(\(name\))
+239 2570 y(char)i(*name;)120 2622 y({)p eop
+44 45 bop 0 -58 a Fr(44)1449 b(GNU)15 b(Readline)i(Library)168
+183 y Fq(register)22 b(int)i(i;)168 287 y(for)f(\(i)h(=)f(0;)h
+(commands[i].name;)e(i++\))215 339 y(if)i(\(strcmp)f(\(name,)g
+(commands[i].name\))f(==)h(0\))263 391 y(return)g(\(&commands[i]\);)168
+495 y(return)g(\(\(COMMAND)f(*\)NULL\);)120 546 y(})120
+650 y(/*)i(Strip)f(whitespace)f(from)i(the)f(start)g(and)h(end)f(of)h
+(STRING.)46 b(Return)24 b(a)f(pointer)192 702 y(into)g(STRING.)g(*/)120
+754 y(char)g(*)120 806 y(stripwhite)f(\(string\))239
+858 y(char)i(*string;)120 910 y({)168 962 y(register)e(char)i(*s,)f
+(*t;)168 1065 y(for)g(\(s)h(=)f(string;)g(whitespace)g(\(*s\);)g(s++\))
+215 1117 y(;)168 1221 y(if)g(\(*s)h(==)f(0\))215 1273
+y(return)g(\(s\);)168 1377 y(t)g(=)h(s)g(+)g(strlen)f(\(s\))g(-)h(1;)
+168 1429 y(while)f(\(t)g(>)h(s)g(&&)g(whitespace)e(\(*t\)\))215
+1480 y(t--;)168 1532 y(*++t)h(=)h('\\0';)168 1636 y(return)f(s;)120
+1688 y(})120 1792 y(/*)h(***********************)o(*******)o(********)o
+(*******)o(*******)o(********)o(****)d(*/)120 1844 y(/*)1575
+b(*/)120 1896 y(/*)429 b(Interface)23 b(to)g(Readline)g(Completion)381
+b(*/)120 1947 y(/*)1575 b(*/)120 1999 y(/*)24 b
+(***********************)o(*******)o(********)o(*******)o(*******)o
+(********)o(****)d(*/)120 2103 y(char)i(*command_generator)f(\(\);)120
+2155 y(char)h(**fileman_completion)e(\(\);)120 2259 y(/*)j(Tell)f(the)g
+(GNU)h(Readline)f(library)f(how)i(to)g(complete.)46 b(We)24
+b(want)f(to)h(try)f(to)h(complete)192 2311 y(on)f(command)g(names)g(if)
+h(this)f(is)h(the)f(first)g(word)h(in)f(the)h(line,)f(or)h(on)f
+(filenames)192 2363 y(if)g(not.)g(*/)120 2414 y(initialize_readline)e
+(\(\))120 2466 y({)168 2518 y(/*)i(Allow)g(conditional)g(parsing)g(of)g
+(the)h(~/.inputrc)e(file.)h(*/)168 2570 y(rl_readline_name)e(=)j
+("FileMan";)p eop
+45 46 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(45)168 183 y Fq(/*)23 b(Tell)h(the)f(completer)g(that)g
+(we)h(want)f(a)h(crack)f(first.)g(*/)168 235 y
+(rl_attempted_completion_)o(functio)o(n)e(=)j(\(CPPFunction)e
+(*\)fileman_completion;)120 287 y(})120 391 y(/*)i(Attempt)e(to)i
+(complete)f(on)g(the)h(contents)f(of)g(TEXT.)47 b(START)23
+b(and)h(END)f(bound)h(the)192 443 y(region)f(of)g(rl_line_buffer)f
+(that)h(contains)g(the)h(word)f(to)h(complete.)46 b(TEXT)23
+b(is)192 495 y(the)g(word)g(to)h(complete.)46 b(We)24
+b(can)f(use)h(the)f(entire)g(contents)g(of)h(rl_line_buffer)192
+546 y(in)f(case)g(we)h(want)f(to)h(do)g(some)f(simple)g(parsing.)47
+b(Return)23 b(the)g(array)g(of)h(matches,)192 598 y(or)f(NULL)g(if)h
+(there)f(aren't)g(any.)h(*/)120 650 y(char)f(**)120 702
+y(fileman_completion)e(\(text,)i(start,)g(end\))239 754
+y(char)h(*text;)239 806 y(int)g(start,)f(end;)120 858
+y({)168 910 y(char)g(**matches;)168 1013 y(matches)g(=)g(\(char)h
+(**\)NULL;)168 1117 y(/*)f(If)h(this)f(word)h(is)f(at)h(the)f(start)g
+(of)h(the)f(line,)h(then)f(it)g(is)h(a)g(command)239
+1169 y(to)g(complete.)46 b(Otherwise)23 b(it)h(is)f(the)h(name)f(of)h
+(a)f(file)h(in)f(the)h(current)239 1221 y(directory.)f(*/)168
+1273 y(if)g(\(start)g(==)h(0\))215 1325 y(matches)f(=)h
+(completion_matches)d(\(text,)j(command_generator\);)168
+1429 y(return)f(\(matches\);)120 1480 y(})120 1584 y(/*)h(Generator)e
+(function)h(for)g(command)g(completion.)47 b(STATE)23
+b(lets)g(us)h(know)f(whether)192 1636 y(to)g(start)g(from)h(scratch;)e
+(without)h(any)h(state)f(\(i.e.)g(STATE)g(==)h(0\),)f(then)h(we)192
+1688 y(start)f(at)g(the)h(top)f(of)h(the)f(list.)g(*/)120
+1740 y(char)g(*)120 1792 y(command_generator)f(\(text,)h(state\))239
+1844 y(char)h(*text;)239 1896 y(int)g(state;)120 1947
+y({)168 1999 y(static)f(int)g(list_index,)g(len;)168
+2051 y(char)g(*name;)168 2155 y(/*)g(If)h(this)f(is)h(a)g(new)f(word)g
+(to)h(complete,)f(initialize)f(now.)47 b(This)24 b(includes)239
+2207 y(saving)f(the)h(length)f(of)g(TEXT)h(for)f(efficiency,)g(and)g
+(initializing)f(the)i(index)239 2259 y(variable)f(to)h(0.)f(*/)168
+2311 y(if)g(\(!state\))215 2363 y({)263 2414 y(list_index)g(=)g(0;)263
+2466 y(len)h(=)f(strlen)g(\(text\);)215 2518 y(})168
+2622 y(/*)g(Return)g(the)h(next)f(name)g(which)h(partially)e(matches)h
+(from)g(the)h(command)f(list.)g(*/)p eop
+46 47 bop 0 -58 a Fr(46)1449 b(GNU)15 b(Readline)i(Library)168
+183 y Fq(while)23 b(\(name)g(=)h(commands[list_index].name)o(\))215
+235 y({)263 287 y(list_index++;)263 391 y(if)g(\(strncmp)f(\(name,)g
+(text,)g(len\))g(==)h(0\))311 443 y(return)f(\(dupstr\(name\)\);)215
+495 y(})168 598 y(/*)g(If)h(no)f(names)h(matched,)e(then)i(return)f
+(NULL.)g(*/)168 650 y(return)g(\(\(char)g(*\)NULL\);)120
+702 y(})120 806 y(/*)h(***********************)o(*******)o(********)o
+(*******)o(*******)o(********)o(****)d(*/)120 858 y(/*)1575
+b(*/)120 910 y(/*)549 b(FileMan)22 b(Commands)644 b(*/)120
+962 y(/*)1575 b(*/)120 1013 y(/*)24 b(***********************)o
(*******)o(********)o(*******)o(*******)o(********)o(****)d(*/)120
-1503 y(/*)1575 b(*/)120 1553 y(/*)429 b(Interface)23 b(to)g(Readline)g
-(Completion)381 b(*/)120 1603 y(/*)1575 b(*/)120 1653 y(/*)24
-b(***********************)o(*******)o(********)o(*******)o(*******)o
-(********)o(****)d(*/)120 1752 y(char)i(*command_generator)f(\(\);)120
-1802 y(char)h(**fileman_completion)e(\(\);)120 1902 y(/*)j(Tell)f(the)g(GNU)h
-(Readline)f(library)f(how)i(to)g(complete.)46 b(We)24 b(want)f(to)h(try)f(to)
-h(complete)192 1952 y(on)f(command)g(names)g(if)h(this)f(is)h(the)f(first)g
-(word)h(in)f(the)h(line,)f(or)h(on)f(filenames)192 2001 y(if)g(not.)g(*/)120
-2051 y(initialize_readline)e(\(\))120 2101 y({)168 2151 y(/*)i(Allow)g
-(conditional)g(parsing)g(of)g(the)h(~/.inputrc)e(file.)h(*/)168
-2201 y(rl_readline_name)e(=)j("FileMan";)168 2300 y(/*)f(Tell)h(the)f
-(completer)g(that)g(we)h(want)f(a)h(crack)f(first.)g(*/)168
-2350 y(rl_attempted_completion_)o(functio)o(n)e(=)j(\(CPPFunction)e
-(*\)fileman_completion;)120 2400 y(})p eop
-%%Page: 37 39
-38 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(37)120 158 y Fn(/*)24 b(Attempt)e(to)i(complete)f(on)g(the)h(contents)f(of)
-g(TEXT.)47 b(START)23 b(and)h(END)f(show)h(the)192 208 y(region)f(of)g(TEXT)h
-(that)f(contains)g(the)g(word)g(to)h(complete.)46 b(We)24 b(can)g(use)f(the)
-192 258 y(entire)g(line)g(in)h(case)f(we)g(want)h(to)f(do)h(some)f(simple)g
-(parsing.)47 b(Return)23 b(the)192 308 y(array)g(of)g(matches,)g(or)h(NULL)f
-(if)h(there)f(aren't)g(any.)g(*/)120 358 y(char)g(**)120 407
-y(fileman_completion)e(\(text,)i(start,)g(end\))239 457 y(char)h(*text;)239
-507 y(int)g(start,)f(end;)120 557 y({)168 607 y(char)g(**matches;)168
-706 y(matches)g(=)g(\(char)h(**\)NULL;)168 806 y(/*)f(If)h(this)f(word)h(is)f
-(at)h(the)f(start)g(of)h(the)f(line,)h(then)f(it)g(is)h(a)g(command)239
-856 y(to)g(complete.)46 b(Otherwise)23 b(it)h(is)f(the)h(name)f(of)h(a)f
-(file)h(in)f(the)h(current)239 906 y(directory.)f(*/)168 955
-y(if)g(\(start)g(==)h(0\))215 1005 y(matches)f(=)h(completion_matches)d
-(\(text,)j(command_generator\);)168 1105 y(return)f(\(matches\);)120
-1155 y(})120 1254 y(/*)h(Generator)e(function)h(for)g(command)g(completion.)
-47 b(STATE)23 b(lets)g(us)h(know)f(whether)192 1304 y(to)g(start)g(from)h
-(scratch;)e(without)h(any)h(state)f(\(i.e.)g(STATE)g(==)h(0\),)f(then)h(we)
-192 1354 y(start)f(at)g(the)h(top)f(of)h(the)f(list.)g(*/)120
-1404 y(char)g(*)120 1453 y(command_generator)f(\(text,)h(state\))239
-1503 y(char)h(*text;)239 1553 y(int)g(state;)120 1603 y({)168
-1653 y(static)f(int)g(list_index,)g(len;)168 1703 y(char)g(*name;)168
-1802 y(/*)g(If)h(this)f(is)h(a)g(new)f(word)g(to)h(complete,)f(initialize)f
-(now.)47 b(This)24 b(includes)239 1852 y(saving)f(the)h(length)f(of)g(TEXT)h
-(for)f(efficiency,)g(and)g(initializing)f(the)i(index)239 1902
-y(variable)f(to)h(0.)f(*/)168 1952 y(if)g(\(!state\))215 2001
-y({)263 2051 y(list_index)g(=)g(0;)263 2101 y(len)h(=)f(strlen)g(\(text\);)
-215 2151 y(})168 2250 y(/*)g(Return)g(the)h(next)f(name)g(which)h(partially)e
-(matches)h(from)g(the)h(command)f(list.)g(*/)168 2300 y(while)g(\(name)g(=)h
-(commands[list_index].name)o(\))215 2350 y({)263 2400 y(list_index++;)263
-2500 y(if)g(\(strncmp)f(\(name,)g(text,)g(len\))g(==)h(0\))311
-2549 y(return)f(\(dupstr\(name\)\);)215 2599 y(})p eop
-%%Page: 38 40
-39 bop 0 -83 a Fo(38)1449 b(GNU)15 b(Readline)i(Library)168
-208 y Fn(/*)23 b(If)h(no)f(names)h(matched,)e(then)i(return)f(NULL.)g(*/)168
-258 y(return)g(\(\(char)g(*\)NULL\);)120 308 y(})120 407 y(/*)h
-(***********************)o(*******)o(********)o(*******)o(*******)o(********)
-o(****)d(*/)120 457 y(/*)1575 b(*/)120 507 y(/*)549 b(FileMan)22
-b(Commands)644 b(*/)120 557 y(/*)1575 b(*/)120 607 y(/*)24
-b(***********************)o(*******)o(********)o(*******)o(*******)o
-(********)o(****)d(*/)120 706 y(/*)j(String)f(to)g(pass)h(to)f(system)g
-(\(\).)47 b(This)24 b(is)f(for)h(the)f(LIST,)g(VIEW)h(and)f(RENAME)192
-756 y(commands.)f(*/)120 806 y(static)h(char)g(syscom[1024];)120
-906 y(/*)h(List)f(the)g(file\(s\))g(named)g(in)h(arg.)f(*/)120
-955 y(com_list)g(\(arg\))239 1005 y(char)h(*arg;)120 1055 y({)168
-1105 y(if)f(\(!arg\))215 1155 y(arg)h(=)g("";)168 1254 y(sprintf)f(\(syscom,)
-f("ls)i(-FClg)f(\045s",)g(arg\);)168 1304 y(return)g(\(system)g
-(\(syscom\)\);)120 1354 y(})120 1453 y(com_view)g(\(arg\))239
-1503 y(char)h(*arg;)120 1553 y({)168 1603 y(if)f(\(!valid_argument)f
-(\("view",)h(arg\)\))215 1653 y(return)g(1;)168 1752 y(sprintf)g(\(syscom,)f
-("more)i(\045s",)f(arg\);)168 1802 y(return)g(\(system)g(\(syscom\)\);)120
-1852 y(})120 1952 y(com_rename)f(\(arg\))239 2001 y(char)i(*arg;)120
-2051 y({)168 2101 y(too_dangerous)e(\("rename"\);)168 2151
-y(return)h(\(1\);)120 2201 y(})120 2300 y(com_stat)g(\(arg\))239
-2350 y(char)h(*arg;)120 2400 y({)168 2450 y(struct)f(stat)g(finfo;)168
-2549 y(if)g(\(!valid_argument)f(\("stat",)h(arg\)\))215 2599
-y(return)g(\(1\);)p eop
-%%Page: 39 41
-40 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(39)168 208 y Fn(if)23 b(\(stat)g(\(arg,)h(&finfo\))f(==)g(-1\))215
-258 y({)263 308 y(perror)g(\(arg\);)263 358 y(return)g(\(1\);)215
-407 y(})168 507 y(printf)g(\("Statistics)f(for)h(`\045s':\\n",)g(arg\);)168
-607 y(printf)g(\("\045s)g(has)h(\045d)f(link\045s,)g(and)g(is)h(\045d)g
-(byte\045s)f(in)g(length.\\n",)g(arg,)359 656 y(finfo.st_nlink,)359
-706 y(\(finfo.st_nlink)e(==)j(1\))g(?)f("")h(:)g("s",)359 756
-y(finfo.st_size,)359 806 y(\(finfo.st_size)e(==)h(1\))h(?)f("")h(:)g("s"\);)
-168 856 y(printf)f(\("Inode)g(Last)g(Change)g(at:)g(\045s",)h(ctime)f
-(\(&finfo.st_ctime\)\);)168 906 y(printf)g(\(")143 b(Last)23
+1117 y(/*)j(String)f(to)g(pass)h(to)f(system)g(\(\).)47
+b(This)24 b(is)f(for)h(the)f(LIST,)g(VIEW)h(and)f(RENAME)192
+1169 y(commands.)f(*/)120 1221 y(static)h(char)g(syscom[1024];)120
+1325 y(/*)h(List)f(the)g(file\(s\))g(named)g(in)h(arg.)f(*/)120
+1377 y(com_list)g(\(arg\))239 1429 y(char)h(*arg;)120
+1480 y({)168 1532 y(if)f(\(!arg\))215 1584 y(arg)h(=)g("";)168
+1688 y(sprintf)f(\(syscom,)f("ls)i(-FClg)f(\045s",)g(arg\);)168
+1740 y(return)g(\(system)g(\(syscom\)\);)120 1792 y(})120
+1896 y(com_view)g(\(arg\))239 1947 y(char)h(*arg;)120
+1999 y({)168 2051 y(if)f(\(!valid_argument)f(\("view",)h(arg\)\))215
+2103 y(return)g(1;)168 2207 y(sprintf)g(\(syscom,)f("more)i(\045s",)f
+(arg\);)168 2259 y(return)g(\(system)g(\(syscom\)\);)120
+2311 y(})120 2414 y(com_rename)f(\(arg\))239 2466 y(char)i(*arg;)120
+2518 y({)168 2570 y(too_dangerous)e(\("rename"\);)168
+2622 y(return)h(\(1\);)p eop
+47 48 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(47)120 183 y Fq(})120 287 y(com_stat)23
+b(\(arg\))239 339 y(char)h(*arg;)120 391 y({)168 443
+y(struct)f(stat)g(finfo;)168 546 y(if)g(\(!valid_argument)f(\("stat",)h
+(arg\)\))215 598 y(return)g(\(1\);)168 702 y(if)g(\(stat)g(\(arg,)h
+(&finfo\))f(==)g(-1\))215 754 y({)263 806 y(perror)g(\(arg\);)263
+858 y(return)g(\(1\);)215 910 y(})168 1013 y(printf)g(\("Statistics)f
+(for)h(`\045s':\\n",)g(arg\);)168 1117 y(printf)g(\("\045s)g(has)h
+(\045d)f(link\045s,)g(and)g(is)h(\045d)g(byte\045s)f(in)g(length.\\n",)
+g(arg,)359 1169 y(finfo.st_nlink,)359 1221 y(\(finfo.st_nlink)e(==)j
+(1\))g(?)f("")h(:)g("s",)359 1273 y(finfo.st_size,)359
+1325 y(\(finfo.st_size)e(==)h(1\))h(?)f("")h(:)g("s"\);)168
+1377 y(printf)f(\("Inode)g(Last)g(Change)g(at:)g(\045s",)h(ctime)f
+(\(&finfo.st_ctime\)\);)168 1429 y(printf)g(\(")143 b(Last)23
b(access)g(at:)g(\045s",)h(ctime)f(\(&finfo.st_atime\)\);)168
-955 y(printf)g(\(")95 b(Last)23 b(modified)g(at:)g(\045s",)h(ctime)f
-(\(&finfo.st_mtime\)\);)168 1005 y(return)g(\(0\);)120 1055
-y(})120 1155 y(com_delete)f(\(arg\))239 1204 y(char)i(*arg;)120
-1254 y({)168 1304 y(too_dangerous)e(\("delete"\);)168 1354
-y(return)h(\(1\);)120 1404 y(})120 1503 y(/*)h(Print)f(out)g(help)h(for)f
-(ARG,)g(or)h(for)f(all)h(of)f(the)h(commands)f(if)g(ARG)h(is)192
-1553 y(not)f(present.)g(*/)120 1603 y(com_help)g(\(arg\))239
-1653 y(char)h(*arg;)120 1703 y({)168 1752 y(register)e(int)i(i;)168
-1802 y(int)f(printed)g(=)h(0;)168 1902 y(for)f(\(i)h(=)f(0;)h
-(commands[i].name;)e(i++\))215 1952 y({)263 2001 y(if)i(\(!*arg)f(||)g
-(\(strcmp)g(\(arg,)g(commands[i].name\))f(==)i(0\)\))311 2051
-y({)359 2101 y(printf)f(\("\045s\\t\\t\045s.\\n",)e(commands[i].name,)h
-(commands[i].doc\);)359 2151 y(printed++;)311 2201 y(})215
-2250 y(})168 2350 y(if)h(\(!printed\))215 2400 y({)263 2450
+1480 y(printf)g(\(")95 b(Last)23 b(modified)g(at:)g(\045s",)h(ctime)f
+(\(&finfo.st_mtime\)\);)168 1532 y(return)g(\(0\);)120
+1584 y(})120 1688 y(com_delete)f(\(arg\))239 1740 y(char)i(*arg;)120
+1792 y({)168 1844 y(too_dangerous)e(\("delete"\);)168
+1896 y(return)h(\(1\);)120 1947 y(})120 2051 y(/*)h(Print)f(out)g(help)
+h(for)f(ARG,)g(or)h(for)f(all)h(of)f(the)h(commands)f(if)g(ARG)h(is)192
+2103 y(not)f(present.)g(*/)120 2155 y(com_help)g(\(arg\))239
+2207 y(char)h(*arg;)120 2259 y({)168 2311 y(register)e(int)i(i;)168
+2363 y(int)f(printed)g(=)h(0;)168 2466 y(for)f(\(i)h(=)f(0;)h
+(commands[i].name;)e(i++\))215 2518 y({)263 2570 y(if)i(\(!*arg)f(||)g
+(\(strcmp)g(\(arg,)g(commands[i].name\))f(==)i(0\)\))311
+2622 y({)p eop
+48 49 bop 0 -58 a Fr(48)1449 b(GNU)15 b(Readline)i(Library)359
+183 y Fq(printf)23 b(\("\045s\\t\\t\045s.\\n",)e(commands[i].name,)h
+(commands[i].doc\);)359 235 y(printed++;)311 287 y(})215
+339 y(})168 443 y(if)h(\(!printed\))215 495 y({)263 546
y(printf)g(\("No)h(commands)e(match)h(`\045s'.)48 b(Possibilties)22
-b(are:\\n",)h(arg\);)p eop
-%%Page: 40 42
-41 bop 0 -83 a Fo(40)1449 b(GNU)15 b(Readline)i(Library)263
-208 y Fn(for)24 b(\(i)f(=)h(0;)g(commands[i].name;)d(i++\))311
-258 y({)359 308 y(/*)i(Print)g(in)h(six)f(columns.)g(*/)359
-358 y(if)g(\(printed)g(==)h(6\))406 407 y({)454 457 y(printed)f(=)h(0;)454
-507 y(printf)f(\("\\n"\);)406 557 y(})359 656 y(printf)g(\("\045s\\t",)f
-(commands[i].name\);)359 706 y(printed++;)311 756 y(})263 856
-y(if)i(\(printed\))311 906 y(printf)f(\("\\n"\);)215 955 y(})168
-1005 y(return)g(\(0\);)120 1055 y(})120 1155 y(/*)h(Change)f(to)g(the)h
-(directory)e(ARG.)i(*/)120 1204 y(com_cd)f(\(arg\))239 1254
-y(char)h(*arg;)120 1304 y({)168 1354 y(if)f(\(chdir)g(\(arg\))h(==)f(-1\))215
-1404 y({)263 1453 y(perror)g(\(arg\);)263 1503 y(return)g(1;)215
-1553 y(})168 1653 y(com_pwd)g(\(""\);)168 1703 y(return)g(\(0\);)120
-1752 y(})120 1852 y(/*)h(Print)f(out)g(the)h(current)f(working)f(directory.)h
-(*/)120 1902 y(com_pwd)g(\(ignore\))239 1952 y(char)h(*ignore;)120
-2001 y({)168 2051 y(char)f(dir[1024],)g(*s;)168 2151 y(s)g(=)h(getwd)f
-(\(dir\);)168 2201 y(if)g(\(s)h(==)f(0\))215 2250 y({)263 2300
-y(printf)g(\("Error)g(getting)g(pwd:)g(\045s\\n",)g(dir\);)263
-2350 y(return)g(1;)215 2400 y(})168 2500 y(printf)g(\("Current)f(directory)h
-(is)h(\045s\\n",)f(dir\);)168 2549 y(return)g(0;)120 2599 y(})p
+b(are:\\n",)h(arg\);)263 650 y(for)h(\(i)f(=)h(0;)g(commands[i].name;)d
+(i++\))311 702 y({)359 754 y(/*)i(Print)g(in)h(six)f(columns.)g(*/)359
+806 y(if)g(\(printed)g(==)h(6\))406 858 y({)454 910 y(printed)f(=)h(0;)
+454 962 y(printf)f(\("\\n"\);)406 1013 y(})359 1117 y(printf)g
+(\("\045s\\t",)f(commands[i].name\);)359 1169 y(printed++;)311
+1221 y(})263 1325 y(if)i(\(printed\))311 1377 y(printf)f(\("\\n"\);)215
+1429 y(})168 1480 y(return)g(\(0\);)120 1532 y(})120
+1636 y(/*)h(Change)f(to)g(the)h(directory)e(ARG.)i(*/)120
+1688 y(com_cd)f(\(arg\))239 1740 y(char)h(*arg;)120 1792
+y({)168 1844 y(if)f(\(chdir)g(\(arg\))h(==)f(-1\))215
+1896 y({)263 1947 y(perror)g(\(arg\);)263 1999 y(return)g(1;)215
+2051 y(})168 2155 y(com_pwd)g(\(""\);)168 2207 y(return)g(\(0\);)120
+2259 y(})120 2363 y(/*)h(Print)f(out)g(the)h(current)f(working)f
+(directory.)h(*/)120 2414 y(com_pwd)g(\(ignore\))239
+2466 y(char)h(*ignore;)120 2518 y({)168 2570 y(char)f(dir[1024],)g(*s;)
+p eop
+49 50 bop 0 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)994 b(49)168 183 y Fq(s)23 b(=)h(getwd)f(\(dir\);)168
+235 y(if)g(\(s)h(==)f(0\))215 287 y({)263 339 y(printf)g(\("Error)g
+(getting)g(pwd:)g(\045s\\n",)g(dir\);)263 391 y(return)g(1;)215
+443 y(})168 546 y(printf)g(\("Current)f(directory)h(is)h(\045s\\n",)f
+(dir\);)168 598 y(return)g(0;)120 650 y(})120 754 y(/*)h(The)f(user)g
+(wishes)g(to)h(quit)f(using)g(this)h(program.)46 b(Just)24
+b(set)f(DONE)h(non-zero.)e(*/)120 806 y(com_quit)h(\(arg\))239
+858 y(char)h(*arg;)120 910 y({)168 962 y(done)f(=)h(1;)168
+1013 y(return)f(\(0\);)120 1065 y(})120 1169 y(/*)h(Function)e(which)i
+(tells)f(you)g(that)g(you)h(can't)f(do)h(this.)f(*/)120
+1221 y(too_dangerous)f(\(caller\))239 1273 y(char)i(*caller;)120
+1325 y({)168 1377 y(fprintf)f(\(stderr,)382 1429 y("\045s:)h(Too)f
+(dangerous)g(for)g(me)h(to)g(distribute.)46 b(Write)23
+b(it)h(yourself.\\n",)382 1480 y(caller\);)120 1532 y(})120
+1636 y(/*)g(Return)f(non-zero)f(if)i(ARG)f(is)h(a)g(valid)f(argument)g
+(for)g(CALLER,)g(else)g(print)192 1688 y(an)g(error)g(message)g(and)h
+(return)f(zero.)g(*/)120 1740 y(int)120 1792 y(valid_argument)f
+(\(caller,)h(arg\))239 1844 y(char)h(*caller,)e(*arg;)120
+1896 y({)168 1947 y(if)h(\(!arg)g(||)h(!*arg\))215 1999
+y({)263 2051 y(fprintf)f(\(stderr,)g("\045s:)g(Argument)g
+(required.\\n",)f(caller\);)263 2103 y(return)h(\(0\);)215
+2155 y(})168 2259 y(return)g(\(1\);)120 2311 y(})p eop
+50 51 bop 0 -58 a Fr(50)1449 b(GNU)15 b(Readline)i(Library)p
eop
-%%Page: 41 43
-42 bop 0 -83 a Fo(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g(Readline)994
-b(41)120 208 y Fn(/*)24 b(The)f(user)g(wishes)g(to)h(quit)f(using)g(this)h
-(program.)46 b(Just)24 b(set)f(DONE)h(non-zero.)e(*/)120 258
-y(com_quit)h(\(arg\))239 308 y(char)h(*arg;)120 358 y({)168
-407 y(done)f(=)h(1;)168 457 y(return)f(\(0\);)120 507 y(})120
-607 y(/*)h(Function)e(which)i(tells)f(you)g(that)g(you)h(can't)f(do)h(this.)f
-(*/)120 656 y(too_dangerous)f(\(caller\))239 706 y(char)i(*caller;)120
-756 y({)168 806 y(fprintf)f(\(stderr,)382 856 y("\045s:)h(Too)f(dangerous)g
-(for)g(me)h(to)g(distribute.)46 b(Write)23 b(it)h(yourself.\\n",)382
-906 y(caller\);)120 955 y(})120 1055 y(/*)g(Return)f(non-zero)f(if)i(ARG)f
-(is)h(a)g(valid)f(argument)g(for)g(CALLER,)g(else)g(print)192
-1105 y(an)g(error)g(message)g(and)h(return)f(zero.)g(*/)120
-1155 y(int)120 1204 y(valid_argument)f(\(caller,)h(arg\))239
-1254 y(char)h(*caller,)e(*arg;)120 1304 y({)168 1354 y(if)h(\(!arg)g(||)h
-(!*arg\))215 1404 y({)263 1453 y(fprintf)f(\(stderr,)g("\045s:)g(Argument)g
-(required.\\n",)f(caller\);)263 1503 y(return)h(\(0\);)215
-1553 y(})168 1653 y(return)g(\(1\);)120 1703 y(})p eop
-%%Page: 42 44
-43 bop 0 -83 a Fo(42)1449 b(GNU)15 b(Readline)i(Library)p eop
-%%Page: 43 45
-44 bop 0 -83 a Fo(Concept)15 b(Index)1616 b(43)0 158 y Fk(Concept)16
-b(Index)0 405 y Fm(I)0 471 y Fe(in)o(teraction,)f(readline)5
-b Fd(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)17
-b Fe(1)0 579 y Fm(K)0 646 y Fe(Kill)e(ring)8 b Fd(:)f(:)f(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21
-b Fe(3)0 704 y(Killing)16 b(text)8 b Fd(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)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(:)h(:)20 b Fe(3)1015
-405 y Fm(R)1015 471 y Fe(readline,)15 b(function)8 b Fd(:)g(:)e(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fe(15)1015 637
-y Fm(Y)1015 704 y Fe(Y)m(anking)15 b(text)t Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)17 b
-Fe(3)p eop
-%%Page: 44 46
-45 bop 0 -83 a Fo(44)1449 b(GNU)15 b(Readline)i(Library)p eop
-%%Page: 45 47
-46 bop 0 -83 a Fo(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1337
-b(45)0 158 y Fk(F)-7 b(unction)15 b(and)g(V)-7 b(ariable)14
-b(Index)0 399 y Fm($)0 466 y Fc($else)t Fd(:)t(:)6 b(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)17 b Fe(8)0 524 y Fc($endif)9 b Fd(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)24
-b Fe(8)0 582 y Fc($if)7 b Fd(:)e(:)h(:)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(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)19
-b Fe(7)0 699 y Fm(A)0 765 y Fc(abort)11 b(\(C-g\))c Fd(:)t(:)f(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)20 b
-Fe(13)0 824 y Fc(accept-lin)o(e)10 b(\(Newline)o(,)g(Return\))c
-Fd(:)s(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)19 b Fe(9)0 882 y Fc(alphabetic)t Fd(:)s(:)7 b(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fe(25)0
-999 y Fm(B)0 1065 y Fc(backward-c)o(ha)o(r)10 b(\(C-b\))d Fd(:)t(:)f(:)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(:)h(:)f(:)19 b Fe(8)0 1124 y Fc(backward-d)o(el)o(ete)o
-(-c)o(har)9 b(\(Rubout\))e Fd(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)23 b Fe(10)0 1182 y Fc(backward-k)o(il)o(l-l)o(in)o(e)
-10 b(\(C-x)h(Rubout\))d Fd(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)24 b Fe(11)0 1240 y Fc(backward-k)o(il)o(l-w)o(or)o(d)10
-b(\(M-DEL\))5 b Fd(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Fe(11)0 1298 y Fc(backward-w)o(or)o(d)10
-b(\(M-b\))d Fd(:)t(:)f(:)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(:)h(:)f(:)19
-b Fe(8)0 1356 y Fc(beginning-)o(of)o(-hi)o(st)o(ory)9 b(\(M-<\))d
-Fd(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)19 b Fe(9)0 1414 y Fc(beginning-)o(of)o(-li)o(ne)9
-b(\(C-a\))g Fd(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fe(8)0 1472 y(b)q(ell-st)o(yle)s
-Fd(:)9 b(:)d(:)g(:)g(:)g(:)h(:)f(:)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(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)16 b Fe(5)0 1590 y Fm(C)0 1656 y
-Fc(call-last-)o(kb)o(d-m)o(ac)o(ro)9 b(\(C-x)j(e\))7 b Fd(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20
-b Fe(12)0 1714 y Fc(capitalize)o(-w)o(ord)9 b(\(M-c\))s Fd(:)t(:)d(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)16 b Fe(11)0 1772 y Fc(clear-scre)o(en)9 b(\(C-l\))f
-Fd(:)t(:)e(:)h(:)f(:)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(:)21 b Fe(9)0
-1830 y(commen)o(t-b)q(egin)13 b Fd(:)6 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
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23 b Fe(5)0 1888 y Fc(complete)10
-b(\(TAB\))t Fd(:)s(:)c(:)h(:)f(:)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(:)h(:)f(:)g
-(:)16 b Fe(12)0 1947 y(completion-query-i)q(tems)d Fd(:)6 b(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)23 b Fe(6)0 2005 y Fc(completion)p 201 2005
-12 2 v 10 w(matches)6 b Fd(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)19
-b Fe(29)0 2063 y(con)o(v)o(ert-meta)t Fd(:)6 b(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)16 b Fe(5)0
-2180 y Fm(D)0 2247 y Fc(delete-cha)o(r)10 b(\(C-d\))e Fd(:)t(:)e(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fe(10)0 2305 y Fc(delete-hor)o(iz)o(ont)o
-(al)o(-sp)o(ace)9 b(\(\))c Fd(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Fe(11)0 2363 y
-Fc(digit-argu)o(me)o(nt)9 b(\(M-0,)i(M-1,)h(...)f(M--\))5 b
-Fd(:)g(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18
-b Fe(12)0 2421 y Fc(digit)p 102 2421 V 12 w(p)s Fd(:)6 b(:)g(:)g(:)g(:)g(:)h
-(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)16
-b Fe(26)0 2479 y Fc(digit)p 102 2479 V 12 w(value)7 b Fd(:)t(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)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(:)20
-b Fe(26)0 2537 y Fc(ding)t Fd(:)5 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)17
-b Fe(25)0 2595 y Fc(do-upperca)o(se)o(-ve)o(rs)o(ion)9 b(\(M-a,)i(M-b,)g
-(...\))d Fd(:)d(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b
-Fe(13)0 2653 y Fc(downcase-w)o(or)o(d)10 b(\(M-l\))c Fd(:)t(:)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(:)19 b Fe(11)1015 399 y Fc(dump-functi)o(on)o(s)10
-b(\(\))e Fd(:)d(:)i(:)f(:)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(:)22
-b Fe(13)1015 513 y Fm(E)1015 579 y Fe(editing-mo)q(de)t Fd(:)9
-b(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)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
-(:)17 b Fe(5)1015 637 y Fc(end-kbd-mac)o(ro)9 b(\(C-x)j(\)\))7
-b Fd(:)t(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Fe(12)1015 695
-y Fc(end-of-hist)o(or)o(y)10 b(\(M->\))c Fd(:)t(:)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(:)19 b Fe(9)1015 754 y Fc(end-of-line)9 b(\(C-e\))e
-Fd(:)g(:)f(:)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(:)h(:)f(:)22
-b Fe(8)1015 812 y(expand-tilde)10 b Fd(:)f(:)d(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fe(6)1015 925
-y Fm(F)1015 992 y Fc(filename)p 1177 992 V 12 w(completi)o(on)p
-1388 992 V 11 w(function)5 b Fd(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Fe(30)1015 1050 y Fc(forward-cha)o(r)
-10 b(\(C-f\))e Fd(:)t(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21
-b Fe(8)1015 1108 y Fc(forward-sea)o(rc)o(h-h)o(ist)o(or)o(y)10
-b(\(C-s\))t Fd(:)t(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)17 b Fe(9)1015 1166 y Fc(forward-wor)o(d)10
-b(\(M-f\))e Fd(:)t(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21
-b Fe(8)1015 1224 y Fc(free)p 1097 1224 V 13 w(undo)p 1190 1224
-V 13 w(list)6 b Fd(:)t(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)19 b Fe(23)1015 1338 y Fm(H)1015 1404 y Fc(history-sea)o(rc)o(h-b)o
-(ack)o(wa)o(rd)9 b(\(\))d Fd(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)19 b Fe(9)1015 1462
-y Fc(history-sea)o(rc)o(h-f)o(orw)o(ar)o(d)10 b(\(\))e Fd(:)d(:)h(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21
-b Fe(9)1015 1521 y(horizon)o(tal-scrol)q(l)q(-mo)q(de)t Fd(:)9
-b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fe(5)1015 1634
-y Fm(I)1015 1701 y Fc(insert-comp)o(le)o(tio)o(ns)9 b(\(\))s
-Fd(:)d(:)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(:)h(:)16 b Fe(12)1015 1814 y
-Fm(K)1015 1881 y Fe(k)o(eymap)6 b Fd(:)h(:)f(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
-b Fe(6)1015 1939 y Fc(kill-line)10 b(\(C-k\))f Fd(:)d(:)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
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 b Fe(11)1015 1997 y Fc(kill-whole-)o(li)o
-(ne)10 b(\(\))d Fd(:)e(:)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(:)h(:)f(:)g(:)g(:)20
-b Fe(11)1015 2055 y Fc(kill-word)10 b(\(M-d\))f Fd(:)d(:)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
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 b Fe(11)1015 2169 y Fm(L)1015
-2235 y Fc(lowercase)p 1197 2235 V 11 w(p)7 b Fd(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Fe(26)1015
-2349 y Fm(M)1015 2415 y Fe(mark-mo)q(di\014ed-li)q(nes)8 b
-Fd(:)h(:)d(:)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(:)h(:)f(:)g(:)g(:)20
-b Fe(5)1015 2473 y(meta-\015ag)11 b Fd(:)6 b(:)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(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
-b Fe(5)1015 2587 y Fm(N)1015 2653 y Fc(next-histor)o(y)10 b(\(C-n\))e
-Fd(:)t(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fe(9)p
+51 52 bop 0 -58 a Fr(Concept)15 b(Index)1616 b(51)0 183
+y Fn(Concept)16 b(Index)0 430 y Fp(C)0 496 y Ff(command)e(editing)f
+Fe(.)6 b(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)23 b Ff(2)0 604 y Fp(E)0 670 y Ff(editing)15 b(command)f(lines)d
+Fe(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)22
+b Ff(2)0 778 y Fp(I)0 845 y Ff(initiali)q(zati)q(on)16
+b(\014le,)e(readline)d Fe(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)22
+b Ff(5)0 903 y(in)o(teraction,)15 b(readline)5 b Fe(.)j(.)e(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)17 b Ff(1)0 1011
+y Fp(K)0 1077 y Ff(kill)e(ring)5 b Fe(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)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(.)h(.)f(.)g(.)g
+(.)g(.)17 b Ff(3)1015 430 y(killin)q(g)f(text)t Fe(.)6
+b(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)17 b Ff(3)1015 579 y Fp(N)1015
+646 y Ff(notation,)e(readline)7 b Fe(.)h(.)f(.)f(.)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(.)h(.)f(.)g(.)20 b Ff(2)1015 795
+y Fp(R)1015 861 y Ff(readline,)15 b(function)8 b Fe(.)g(.)e(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)21 b Ff(19)1015
+1011 y Fp(Y)1015 1077 y Ff(y)o(anking)15 b(text)7 b Fe(.)g(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)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(.)h(.)f
+(.)20 b Ff(3)p eop
+52 53 bop 0 -58 a Fr(52)1449 b(GNU)15 b(Readline)i(Library)p
eop
-%%Page: 46 48
-47 bop 0 -83 a Fo(46)1449 b(GNU)15 b(Readline)i(Library)0 158
-y Fc(non-increm)o(en)o(tal)o(-f)o(orw)o(ard)o(-s)o(ear)o(ch)o(-hi)o(st)o(ory)
-9 b(\(M-n\))g Fd(:)t(:)22 b Fe(9)0 216 y Fc(non-increm)o(en)o(tal)o(-r)o(eve)
-o(rse)o(-s)o(ear)o(ch)o(-hi)o(st)o(ory)9 b(\(M-p\))g Fd(:)t(:)22
-b Fe(9)0 275 y Fc(numeric)9 b Fd(:)s(:)e(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fe(25)0
-394 y Fm(O)0 460 y Fe(output-meta)8 b Fd(:)g(:)e(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fe(5)0
-580 y Fm(P)0 646 y Fc(possible-c)o(om)o(ple)o(ti)o(ons)9 b(\(M-?\))c
-Fd(:)g(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)18 b Fe(12)0 704 y Fc(prefix-met)o(a)10 b(\(ESC\))e
-Fd(:)t(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fe(13)0
-762 y Fc(previous-h)o(is)o(tor)o(y)10 b(\(C-p\))f Fd(:)d(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)24 b Fe(9)0 882 y Fm(Q)0 948 y Fc(quoted-ins)o(er)o(t)10
-b(\(C-q,)h(C-v\))e Fd(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 b Fe(10)0 1068 y
-Fm(R)0 1134 y Fc(re-read-in)o(it)o(-fi)o(le)9 b(\(C-x)i(C-r\))c
-Fd(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)20 b Fe(13)0 1192 y Fc(readline)8 b Fd(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)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(:)21
-b Fe(15)0 1250 y Fc(redraw-cur)o(re)o(nt-)o(li)o(ne)9 b(\(\))i
-Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 b Fe(9)0 1308 y Fc(reverse-se)o(ar)o
-(ch-)o(hi)o(sto)o(ry)9 b(\(C-r\))t Fd(:)t(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)16 b Fe(9)0 1367
-y Fc(revert-lin)o(e)10 b(\(M-r\))e Fd(:)t(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)21 b Fe(13)0 1425 y Fc(rl)p 42 1425 12 2 v 13 w(add)p
-115 1425 V 13 w(defun)8 b Fd(:)d(:)h(:)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(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fe(20)0 1483 y Fc(rl)p 42 1483
-V 13 w(add)p 115 1483 V 13 w(undo)8 b Fd(:)e(:)g(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)22 b Fe(23)0 1541
-y Fc(rl)p 42 1541 V 13 w(attempted)p 235 1541 V 11 w(completion)p
-445 1541 V 10 w(function)15 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)17 b Fe(30)0 1599 y Fc(rl)p 42 1599 V 13 w(basic)p
-155 1599 V 13 w(word)p 248 1599 V 12 w(break)p 360 1599 V 12
-w(characters)i Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)23 b Fe(31)0 1657 y Fc(rl)p 42 1657 V 13 w(begin)p
-155 1657 V 13 w(undo)p 248 1657 V 12 w(group)9 b Fd(:)d(:)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(:)h(:)f(:)g(:)23 b Fe(23)0 1715 y Fc(rl)p 42 1715 V 13
-w(bind)p 135 1715 V 13 w(key)8 b Fd(:)e(:)g(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)22 b Fe(21)0 1773 y
-Fc(rl)p 42 1773 V 13 w(bind)p 135 1773 V 13 w(key)p 208 1773
-V 13 w(in)p 261 1773 V 13 w(map)6 b Fd(:)f(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)19 b Fe(21)0 1831 y Fc(rl)p 42 1831 V 13 w(clear)p
-155 1831 V 13 w(message)s Fd(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)16 b Fe(25)0 1890 y Fc(rl)p 42 1890 V 13 w(complete)7
-b Fd(:)f(:)g(:)g(:)g(:)h(:)f(:)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(:)23
-b Fe(28,)13 b(29)0 1948 y Fc(rl)p 42 1948 V 13 w(complete)p
-215 1948 V 11 w(internal)7 b Fd(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)19
-b Fe(29)0 2006 y Fc(rl)p 42 2006 V 13 w(completer)p 235 2006
-V 11 w(quote)p 346 2006 V 12 w(characters)f Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)21 b Fe(32)0 2064
-y Fc(rl)p 42 2064 V 13 w(completer)p 235 2064 V 11 w(word)p
-326 2064 V 13 w(break)p 439 2064 V 12 w(character)o(s)15 b
-Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
-Fe(31)0 2122 y Fc(rl)p 42 2122 V 13 w(completion)p 254 2122
-V 11 w(entry)p 366 2122 V 12 w(function)c Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)17 b Fe(29,)c(30)0 2180 y Fc(rl)p
-42 2180 V 13 w(completion)p 254 2180 V 11 w(query)p 366 2180
-V 12 w(items)j Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fe(30)0 2238 y Fc(rl)p
-42 2238 V 13 w(copy)p 135 2238 V 13 w(keymap)6 b Fd(:)s(:)g(:)g(:)h(:)f(:)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(:)h(:)f(:)18 b Fe(20)0 2296
-y Fc(rl)p 42 2296 V 13 w(copy)p 135 2296 V 13 w(text)8 b Fd(:)d(:)h(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)21
-b Fe(25)0 2355 y Fc(rl)p 42 2355 V 13 w(delete)p 175 2355 V
-12 w(text)6 b Fd(:)t(:)g(:)g(:)h(:)f(:)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(:)h
-(:)f(:)18 b Fe(25)0 2413 y Fc(rl)p 42 2413 V 13 w(discard)p
-195 2413 V 12 w(keymap)8 b Fd(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)23 b Fe(20)0 2471 y Fc(rl)p 42 2471 V 13 w(do)p 95 2471
-V 14 w(undo)9 b Fd(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)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(:)24 b Fe(24)0 2529 y Fc(rl)p 42 2529
-V 13 w(done)17 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)18 b Fe(18)0 2587 y
-Fc(rl)p 42 2587 V 13 w(end)h Fd(:)6 b(:)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(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)19 b
-Fe(18)0 2645 y Fc(rl)p 42 2645 V 13 w(end)p 115 2645 V 13 w(undo)p
-208 2645 V 13 w(group)5 b Fd(:)t(:)h(:)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(:)h(:)f
-(:)g(:)17 b Fe(23)1015 158 y Fc(rl)p 1057 158 V 14 w(filename)p
-1231 158 V 11 w(completio)o(n)p 1441 158 V 11 w(desired)g Fd(:)7
-b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20
-b Fe(31)1015 216 y Fc(rl)p 1057 216 V 14 w(filename)p 1231
-216 V 11 w(quoting)p 1382 216 V 11 w(desired)h Fd(:)7 b(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b
-Fe(31)1015 275 y Fc(rl)p 1057 275 V 14 w(forced)p 1191 275
-V 12 w(update)p 1323 275 V 11 w(display)t Fd(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)17
-b Fe(24)1015 333 y Fc(rl)p 1057 333 V 14 w(function)p 1231
-333 V 11 w(of)p 1282 333 V 13 w(keyseq)8 b Fd(:)t(:)e(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)21 b Fe(22)1015 391 y Fc(rl)p 1057 391 V 14 w(generic)p
-1211 391 V 11 w(bind)t Fd(:)5 b(:)h(:)g(:)g(:)g(:)h(:)f(:)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(:)18 b Fe(22)1015 449 y Fc(rl)p 1057 449 V 14
-w(get)p 1131 449 V 13 w(keymap)7 b Fd(:)t(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)20 b Fe(21)1015 507 y Fc(rl)p
-1057 507 V 14 w(get)p 1131 507 V 13 w(keymap)p 1264 507 V 12
-w(by)p 1316 507 V 13 w(name)9 b Fd(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)24
-b Fe(21)1015 565 y Fc(rl)p 1057 565 V 14 w(ignore)p 1191 565
-V 12 w(completio)o(n)p 1402 565 V 11 w(duplicate)o(s)16 b Fd(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)19
-b Fe(31)1015 623 y Fc(rl)p 1057 623 V 14 w(ignore)p 1191 623
-V 12 w(some)p 1283 623 V 12 w(completion)o(s)p 1514 623 V 11
-w(function)13 b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fe(31)1015 681 y Fc(rl)p 1057 681 V 14 w(insert)p 1191 681
-V 12 w(completio)o(ns)t Fd(:)t(:)6 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(:)19
-b Fe(29)1015 739 y Fc(rl)p 1057 739 V 14 w(insert)p 1191 739
-V 12 w(text)6 b Fd(:)t(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)19 b Fe(25)1015 798 y Fc(rl)p 1057 798 V 14 w(instream)f
-Fd(:)6 b(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g
-(:)22 b Fe(19)1015 856 y Fc(rl)p 1057 856 V 14 w(invoking)p
-1231 856 V 11 w(keyseqs)8 b Fd(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fe(22)1015 914 y Fc(rl)p 1057 914 V 14 w(invoking)p 1231
-914 V 11 w(keyseqs)p 1382 914 V 11 w(in)p 1433 914 V 14 w(map)t
-Fd(:)5 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)18 b Fe(22)1015 972 y Fc(rl)p 1057 972 V
-14 w(kill)p 1151 972 V 12 w(text)8 b Fd(:)d(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)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(:)h(:)21 b Fe(25)1015 1030
-y Fc(rl)p 1057 1030 V 14 w(line)p 1151 1030 V 12 w(buffer)e
-Fd(:)6 b(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fe(18)1015 1088 y Fc(rl)p 1057 1088 V 14 w(make)p 1151 1088
-V 12 w(bare)p 1243 1088 V 13 w(keymap)8 b Fd(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)24 b Fe(20)1015 1146 y Fc(rl)p 1057 1146 V 14 w(make)p
-1151 1146 V 12 w(keymap)6 b Fd(:)t(:)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(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)19 b Fe(20)1015 1204 y Fc(rl)p 1057 1204
-V 14 w(mark)e Fd(:)6 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(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Fe(18)1015 1263 y Fc(rl)p
-1057 1263 V 14 w(message)8 b Fd(:)s(:)e(:)g(:)g(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)g(:)21 b Fe(24)1015 1321
-y Fc(rl)p 1057 1321 V 14 w(modifying)t Fd(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)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(:)19 b Fe(24)1015
-1379 y Fc(rl)p 1057 1379 V 14 w(named)p 1171 1379 V 12 w(function)7
-b Fd(:)f(:)g(:)h(:)f(:)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(:)24 b
-Fe(22)1015 1437 y Fc(rl)p 1057 1437 V 14 w(on)p 1111 1437 V
-13 w(new)p 1184 1437 V 13 w(line)8 b Fd(:)d(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)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(:)22 b Fe(24)1015 1495 y Fc(rl)p
-1057 1495 V 14 w(outstream)17 b Fd(:)6 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(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fe(19)1015 1553 y Fc(rl)p
-1057 1553 V 14 w(parse)p 1171 1553 V 12 w(and)p 1243 1553 V
-13 w(bind)5 b Fd(:)t(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
-b Fe(22)1015 1611 y Fc(rl)p 1057 1611 V 14 w(pending)p 1211
-1611 V 11 w(input)e Fd(:)6 b(:)h(:)f(:)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
-(:)19 b Fe(19)1015 1669 y Fc(rl)p 1057 1669 V 14 w(point)c
-Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)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(:)h(:)f(:)17 b Fe(18)1015 1727 y Fc(rl)p 1057 1727
-V 14 w(possible)p 1231 1727 V 11 w(completio)o(ns)8 b Fd(:)e(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)25 b Fe(29)1015 1786 y Fc(rl)p 1057 1786 V 14 w(prompt)d
-Fd(:)6 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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)25 b Fe(19)1015 1844 y Fc(rl)p 1057 1844 V 14 w(readline)p
-1231 1844 V 11 w(name)16 b Fd(:)6 b(:)h(:)f(:)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(:)19 b Fe(19)1015 1902 y Fc(rl)p 1057 1902 V 14 w(redisplay)t
-Fd(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)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
-(:)19 b Fe(24)1015 1960 y Fc(rl)p 1057 1960 V 14 w(reset)p
-1171 1960 V 12 w(line)p 1263 1960 V 13 w(state)8 b Fd(:)e(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)24 b Fe(24)1015 2018 y Fc(rl)p 1057 2018
-V 14 w(reset)p 1171 2018 V 12 w(terminal)7 b Fd(:)f(:)g(:)h(:)f(:)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(:)24 b Fe(25)1015 2076 y Fc(rl)p 1057
-2076 V 14 w(set)p 1131 2076 V 13 w(keymap)7 b Fd(:)t(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)20 b Fe(21)1015
-2134 y Fc(rl)p 1057 2134 V 14 w(special)p 1211 2134 V 11 w(prefixes)g
-Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fe(31)1015
-2192 y Fc(rl)p 1057 2192 V 14 w(startup)p 1211 2192 V 11 w(hook)18
-b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)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(:)20
-b Fe(19)1015 2250 y Fc(rl)p 1057 2250 V 14 w(terminal)p 1231
-2250 V 11 w(name)c Fd(:)6 b(:)h(:)f(:)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
-(:)19 b Fe(19)1015 2309 y Fc(rl)p 1057 2309 V 14 w(unbind)p
-1191 2309 V 12 w(key)7 b Fd(:)e(:)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
-(:)h(:)f(:)g(:)g(:)g(:)20 b Fe(21)1015 2367 y Fc(rl)p 1057
-2367 V 14 w(unbind)p 1191 2367 V 12 w(key)p 1263 2367 V 13
-w(in)p 1316 2367 V 13 w(map)t Fd(:)t(:)6 b(:)h(:)f(:)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(:)
-17 b Fe(21)1015 2521 y Fm(S)1015 2587 y Fc(self-insert)9 b(\(a,)j(b,)g(A,)g
-(1,)g(!,)g(...\))6 b Fd(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)19 b Fe(10)1015 2645 y(sho)o(w-all-if-am)o(bigu)q(ous)9
-b Fd(:)g(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fe(6)p
+53 54 bop 0 -58 a Fr(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1337
+b(53)0 183 y Fn(F)-7 b(unction)15 b(and)g(V)-7 b(ariable)14
+b(Index)0 424 y Fp(\()0 490 y Fd(\(int)t Fe(.)5 b(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)h
+(.)f(.)g(.)g(.)g(.)g(.)17 b Ff(31)0 608 y Fp(A)0 674
+y Fd(abort)11 b(\(C-g\))c Fe(.)t(.)f(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)20 b Ff(17)0
+732 y Fd(accept-lin)o(e)10 b(\(Newline)o(,)g(Return\))5
+b Fe(.)s(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)18 b Ff(12)0 790 y Fd(alphabetic)t Fe(.)s(.)7
+b(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)18 b Ff(31)0 908 y Fp(B)0 974 y Fd(backward-c)o(ha)o(r)10
+b(\(C-b\))c Fe(.)t(.)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(.)19
+b Ff(12)0 1032 y Fd(backward-d)o(el)o(ete)o(-c)o(har)9
+b(\(Rubout\))e Fe(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)23 b Ff(14)0 1090 y Fd(backward-k)o(il)o(l-l)o(in)o
+(e)10 b(\(C-x)h(Rubout\))d Fe(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)24 b Ff(15)0 1148 y Fd(backward-k)o(il)o(l-w)o
+(or)o(d)10 b(\(M-DEL\))5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(15)0
+1207 y Fd(backward-w)o(or)o(d)10 b(\(M-b\))c Fe(.)t(.)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(.)19 b Ff(12)0 1265 y Fd(beginning-)o(of)o(-hi)o
+(st)o(ory)9 b(\(M-<\))c Fe(.)g(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(13)0
+1323 y Fd(beginning-)o(of)o(-li)o(ne)9 b(\(C-a\))g Fe(.)c(.)h(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)22 b Ff(12)0 1381 y(b)q(ell-st)o(yle)s Fe(.)9
+b(.)d(.)g(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)16 b Ff(5)0 1498 y Fp(C)0
+1565 y Fd(call-last-)o(kb)o(d-m)o(ac)o(ro)9 b(\(C-x)j(e\))7
+b Fe(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)20 b Ff(17)0 1623 y Fd(capitalize)o(-w)o(ord)9
+b(\(M-c\))s Fe(.)t(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)16
+b Ff(14)0 1681 y Fd(character-)o(se)o(arc)o(h)10 b(\(C-]\))e
+Fe(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)23 b Ff(17)0 1739
+y Fd(character-)o(se)o(arc)o(h-)o(bac)o(kwa)o(rd)9 b(\(M-C-]\))c
+Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18
+b Ff(18)0 1797 y Fd(clear-scre)o(en)9 b(\(C-l\))e Fe(.)t(.)f(.)g(.)h(.)
+f(.)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(.)20 b Ff(12)0 1855
+y(commen)o(t-b)q(egin)13 b Fe(.)6 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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(5)0 1913
+y Fd(complete)10 b(\(TAB\))t Fe(.)s(.)c(.)h(.)f(.)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(.)h(.)f(.)g(.)16 b Ff(16)0 1972 y(completion-query-i)
+q(tems)d Fe(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)23
+b Ff(6)0 2030 y Fd(completion)p 201 2030 12 2 v 10 w(matches)6
+b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
+b Ff(36)0 2088 y(con)o(v)o(ert-meta)t Fe(.)6 b(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)16
+b Ff(6)0 2146 y Fd(copy-backw)o(ar)o(d-w)o(or)o(d)10
+b(\(\))s Fe(.)5 b(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)16
+b Ff(15)0 2204 y Fd(copy-forwa)o(rd)o(-wo)o(rd)9 b(\(\))t
+Fe(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 b Ff(15)0
+2262 y Fd(copy-regio)o(n-)o(as-)o(ki)o(ll)9 b(\(\))h
+Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)23 b Ff(15)0 2379
+y Fp(D)0 2446 y Fd(delete-cha)o(r)10 b(\(C-d\))e Fe(.)t(.)e(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)21 b Ff(14)0 2504
+y Fd(delete-hor)o(iz)o(ont)o(al)o(-sp)o(ace)9 b(\(\))c
+Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)18 b Ff(15)0 2562 y Fd(digit-argu)o(me)o(nt)9
+b(\(M-0,)i(M-1,)h(...)f(M--\))5 b Fe(.)g(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)18 b Ff(16)0 2620 y Fd(digit)p 102
+2620 V 12 w(p)s Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)16
+b Ff(32)0 2678 y Fd(digit)p 102 2678 V 12 w(value)7 b
+Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)20 b Ff(32)1015 424 y Fd(ding)t Fe(.)5
+b(.)h(.)h(.)f(.)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(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18 b Ff(31)1015
+482 y(disable-compl)q(eti)q(on)9 b Fe(.)g(.)d(.)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(.)h(.)f(.)g(.)21 b Ff(6)1015 540 y
+Fd(do-uppercas)o(e-)o(ver)o(sio)o(n)10 b(\(M-a,)g(M-b,)i(M-)p
+Fe(x)p Fd(,)g Fc(:)6 b(:)g(:)g Fd(\))j Fe(.)c(.)h(.)g(.)g(.)g(.)22
+b Ff(17)1015 598 y Fd(downcase-wo)o(rd)9 b(\(M-l\))d
+Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)19
+b Ff(14)1015 656 y Fd(dump-functi)o(on)o(s)10 b(\(\))e
+Fe(.)d(.)i(.)f(.)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(.)22
+b Ff(18)1015 715 y Fd(dump-macros)9 b(\(\))t Fe(.)c(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b
+Ff(18)1015 773 y Fd(dump-variab)o(le)o(s)10 b(\(\))e
+Fe(.)d(.)i(.)f(.)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(.)22
+b Ff(18)1015 890 y Fp(E)1015 956 y Ff(editing-mo)q(de)t
+Fe(.)9 b(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)17 b Ff(6)1015 1014 y(enable-k)o(eypad)d
+Fe(.)7 b(.)f(.)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(.)h(.)f(.)g
+(.)g(.)g(.)g(.)24 b Ff(6)1015 1072 y Fd(end-kbd-mac)o(ro)9
+b(\(C-x)j(\)\))7 b Fe(.)t(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20
+b Ff(16)1015 1131 y Fd(end-of-hist)o(or)o(y)10 b(\(M->\))t
+Fe(.)t(.)d(.)f(.)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(.)18 b Ff(13)1015
+1189 y Fd(end-of-line)9 b(\(C-e\))f Fe(.)t(.)f(.)f(.)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(.)22 b Ff(12)1015 1247 y Fd(exchange-po)o(in)o
+(t-a)o(nd-)o(ma)o(rk)9 b(\(C-x)j(C-x\))c Fe(.)d(.)h(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)22 b Ff(17)1015 1305 y(expand-tilde)10
+b Fe(.)f(.)d(.)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(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)22 b Ff(6)1015 1422 y Fp(F)1015
+1488 y Fd(filename)p 1177 1488 V 12 w(completi)o(on)p
+1388 1488 V 11 w(function)5 b Fe(.)s(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(36)1015
+1547 y Fd(forward-cha)o(r)10 b(\(C-f\))d Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(12)1015 1605 y Fd(forward-sea)o(rc)o
+(h-h)o(ist)o(or)o(y)10 b(\(C-s\))f Fe(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)25 b Ff(13)1015
+1663 y Fd(forward-wor)o(d)10 b(\(M-f\))d Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(12)1015 1721 y Fd(free)p
+1097 1721 V 13 w(undo)p 1190 1721 V 13 w(list)6 b Fe(.)t(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19
+b Ff(29)1015 1838 y Fp(H)1015 1904 y Fd(history-sea)o(rc)o(h-b)o(ack)o
+(wa)o(rd)9 b(\(\))c Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(13)1015
+1963 y Fd(history-sea)o(rc)o(h-f)o(orw)o(ar)o(d)10 b(\(\))d
+Fe(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)20 b Ff(13)1015 2021 y(horizon)o(tal-scrol)q(l)q
+(-mo)q(de)t Fe(.)9 b(.)d(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)17
+b Ff(6)1015 2138 y Fp(I)1015 2204 y Ff(input-meta)s Fe(.)8
+b(.)e(.)g(.)g(.)h(.)f(.)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(.)
+h(.)f(.)g(.)g(.)g(.)g(.)16 b Ff(7)1015 2262 y Fd(insert-comm)o(en)o(t)
+10 b(\(M-#\))t Fe(.)t(.)d(.)f(.)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(.)18
+b Ff(18)1015 2320 y Fd(insert-comp)o(le)o(tio)o(ns)9
+b(\(M-*\))f Fe(.)t(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)21 b Ff(16)1015
+2438 y Fp(K)1015 2504 y Ff(k)o(eymap)6 b Fe(.)h(.)f(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)19 b Ff(6)1015 2562 y Fd(kill-line)10 b(\(C-k\))f
+Fe(.)d(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)24
+b Ff(14)1015 2620 y Fd(kill-region)9 b(\(\))t Fe(.)c(.)h(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17
+b Ff(15)1015 2678 y Fd(kill-whole-)o(li)o(ne)10 b(\(\))d
+Fe(.)e(.)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(.)h(.)f(.)g(.)g(.)20
+b Ff(15)p eop
+54 55 bop 0 -58 a Fr(54)1449 b(GNU)15 b(Readline)i(Library)0
+183 y Fd(kill-word)9 b(\(M-d\))g Fe(.)d(.)g(.)g(.)g(.)h(.)f(.)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(.)24 b Ff(15)0 298 y Fp(L)0
+364 y Fd(lowercase)p 182 364 12 2 v 11 w(p)7 b Fe(.)e(.)h(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)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(.)20
+b Ff(32)0 479 y Fp(M)0 545 y Ff(mark-mo)q(di\014ed-lin)q(es)7
+b Fe(.)i(.)d(.)g(.)g(.)g(.)h(.)f(.)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(.)20
+b Ff(7)0 603 y(meta-\015ag)10 b Fe(.)c(.)g(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)22
+b Ff(7)0 718 y Fp(N)0 784 y Fd(next-histo)o(ry)9 b(\(C-n\))e
+Fe(.)t(.)f(.)g(.)h(.)f(.)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(.)20
+b Ff(13)0 842 y Fd(non-increm)o(en)o(tal)o(-f)o(orw)o(ard)o(-s)o(ear)o
+(ch)o(-hi)o(st)o(ory)9 b(\(M-n\))82 900 y Fe(.)d(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)18 b Ff(13)0 958 y Fd(non-increm)o(en)o(tal)o(-r)o
+(eve)o(rse)o(-s)o(ear)o(ch)o(-hi)o(st)o(ory)9 b(\(M-p\))82
+1017 y Fe(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18
+b Ff(13)0 1075 y Fd(numeric)9 b Fe(.)s(.)e(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)22
+b Ff(31)0 1189 y Fp(O)0 1256 y Ff(output-meta)8 b Fe(.)g(.)e(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+21 b Ff(7)0 1370 y Fp(P)0 1436 y Fd(possible-c)o(om)o(ple)o(ti)o(ons)9
+b(\(M-?\))c Fe(.)g(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(16)0 1495 y Fd(prefix-met)o(a)10
+b(\(ESC\))e Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+21 b Ff(17)0 1553 y Fd(previous-h)o(is)o(tor)o(y)10 b(\(C-p\))e
+Fe(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)23 b Ff(12)0 1667
+y Fp(Q)0 1734 y Fd(quoted-ins)o(er)o(t)10 b(\(C-q,)h(C-v\))e
+Fe(.)d(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)24 b Ff(14)0 1848 y Fp(R)0
+1914 y Fd(re-read-in)o(it)o(-fi)o(le)9 b(\(C-x)i(C-r\))c
+Fe(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)20 b Ff(17)0 1973 y Fd(readline)8 b Fe(.)s(.)e(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)21 b Ff(19)0 2031 y Fd(redraw-cur)o(re)o(nt-)o(li)o(ne)9
+b(\(\))h Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)23 b Ff(12)0
+2089 y Fd(reverse-se)o(ar)o(ch-)o(hi)o(sto)o(ry)9 b(\(C-r\))h
+Fe(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)24 b Ff(13)0 2147 y Fd(revert-lin)o(e)10 b(\(M-r\))e
+Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)21
+b Ff(17)0 2205 y Fd(rl)p 42 2205 V 13 w(add)p 115 2205
+V 13 w(defun)8 b Fe(.)d(.)h(.)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(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Ff(25)0 2263 y Fd(rl)p
+42 2263 V 13 w(add)p 115 2263 V 13 w(undo)8 b Fe(.)e(.)g(.)g(.)h(.)f(.)
+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(.)h(.)f(.)g(.)g(.)22
+b Ff(29)0 2321 y Fd(rl)p 42 2321 V 13 w(attempted)p 235
+2321 V 11 w(completion)p 445 2321 V 10 w(function)15
+b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)17
+b Ff(37)0 2379 y Fd(rl)p 42 2379 V 13 w(basic)p 155 2379
+V 13 w(quote)p 268 2379 V 12 w(character)o(s)e Fe(.)6
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)18 b Ff(38)0 2438 y Fd(rl)p 42 2438
+V 13 w(basic)p 155 2438 V 13 w(word)p 248 2438 V 12 w(break)p
+360 2438 V 12 w(characters)h Fe(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(38)0 2496 y Fd(rl)p
+42 2496 V 13 w(begin)p 155 2496 V 13 w(undo)p 248 2496
+V 12 w(group)9 b Fe(.)d(.)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(.)h(.)f(.)g(.)23
+b Ff(28)0 2554 y Fd(rl)p 42 2554 V 13 w(bind)p 135 2554
+V 13 w(key)8 b Fe(.)e(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)22 b Ff(26)0 2612 y Fd(rl)p
+42 2612 V 13 w(bind)p 135 2612 V 13 w(key)p 208 2612
+V 13 w(in)p 261 2612 V 13 w(map)6 b Fe(.)f(.)h(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(26)0 2670 y Fd(rl)p 42
+2670 V 13 w(binding)p 195 2670 V 12 w(keymap)14 b Fe(.)6
+b(.)g(.)g(.)g(.)h(.)f(.)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(.)17
+b Ff(24)1015 183 y Fd(rl)p 1057 183 V 14 w(callback)p
+1231 183 V 11 w(handler)p 1382 183 V 11 w(install)9 b
+Fe(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)22 b Ff(32)1015 241 y Fd(rl)p 1057 241
+V 14 w(callback)p 1231 241 V 11 w(handler)p 1382 241
+V 11 w(remove)8 b Fe(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(33)1015 299
+y Fd(rl)p 1057 299 V 14 w(callback)p 1231 299 V 11 w(read)p
+1322 299 V 12 w(char)8 b Fe(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)21
+b Ff(32)1015 358 y Fd(rl)p 1057 358 V 14 w(char)p 1151
+358 V 12 w(is)p 1203 358 V 14 w(quoted)p 1337 358 V 12
+w(p)e Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20
+b Ff(37)1015 416 y Fd(rl)p 1057 416 V 14 w(clear)p 1171
+416 V 12 w(message)s Fe(.)t(.)6 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(.)h(.)f(.)16 b Ff(30)1015 474 y Fd(rl)p 1057
+474 V 14 w(complete)7 b Fe(.)f(.)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(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(35,)13 b(36)1015 532
+y Fd(rl)p 1057 532 V 14 w(complete)p 1231 532 V 11 w(internal)6
+b Fe(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20 b
+Ff(35)1015 590 y Fd(rl)p 1057 590 V 14 w(completer)p
+1250 590 V 10 w(quote)p 1361 590 V 13 w(character)o(s)e
+Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)22 b Ff(38)1015 648 y Fd(rl)p 1057 648 V 14 w(completer)p
+1250 648 V 10 w(word)p 1341 648 V 13 w(break)p 1454 648
+V 12 w(characters)14 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)18 b Ff(38)1015 706 y Fd(rl)p 1057 706 V 14 w(completio)o(n)p
+1270 706 V 11 w(append)p 1401 706 V 12 w(character)e
+Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+20 b Ff(39)1015 764 y Fd(rl)p 1057 764 V 14 w(completio)o(n)p
+1270 764 V 11 w(entry)p 1381 764 V 12 w(function)14 b
+Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18
+b Ff(35,)13 b(37)1015 823 y Fd(rl)p 1057 823 V 14 w(completio)o(n)p
+1270 823 V 11 w(query)p 1381 823 V 12 w(items)j Fe(.)6
+b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)18 b Ff(38)1015 881 y Fd(rl)p 1057
+881 V 14 w(copy)p 1151 881 V 12 w(keymap)6 b Fe(.)t(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b
+Ff(25)1015 939 y Fd(rl)p 1057 939 V 14 w(copy)p 1151
+939 V 12 w(text)8 b Fe(.)d(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)h(.)21 b Ff(30)1015 997 y
+Fd(rl)p 1057 997 V 14 w(delete)p 1191 997 V 12 w(text)6
+b Fe(.)t(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)19 b Ff(30)1015 1055 y Fd(rl)p 1057 1055 V 14
+w(directory)p 1250 1055 V 10 w(completion)p 1461 1055
+V 11 w(hook)i Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(40)1015 1113 y Fd(rl)p
+1057 1113 V 14 w(discard)p 1211 1113 V 11 w(keymap)8
+b Fe(.)e(.)g(.)h(.)f(.)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(.)24
+b Ff(25)1015 1171 y Fd(rl)p 1057 1171 V 14 w(do)p 1111
+1171 V 13 w(undo)9 b Fe(.)d(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b Ff(29)1015
+1229 y Fd(rl)p 1057 1229 V 14 w(done)17 b Fe(.)6 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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)19 b Ff(23)1015 1287 y Fd(rl)p 1057 1287 V 14
+w(end)f Fe(.)6 b(.)g(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)20 b Ff(22)1015
+1346 y Fd(rl)p 1057 1346 V 14 w(end)p 1131 1346 V 13
+w(undo)p 1224 1346 V 12 w(group)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)18 b Ff(29)1015 1404 y Fd(rl)p
+1057 1404 V 14 w(event)p 1171 1404 V 12 w(hook)i Fe(.)6
+b(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)
+22 b Ff(24)1015 1462 y Fd(rl)p 1057 1462 V 14 w(executing)p
+1250 1462 V 10 w(keymap)f Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)23 b Ff(24)1015 1520 y Fd(rl)p 1057 1520 V 14 w(filename)p
+1231 1520 V 11 w(completio)o(n)p 1441 1520 V 11 w(desired)17
+b Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)20 b Ff(39)1015 1578 y Fd(rl)p 1057 1578 V 14 w(filename)p
+1231 1578 V 11 w(dequoting)p 1421 1578 V 11 w(function)c
+Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+20 b Ff(37)1015 1636 y Fd(rl)p 1057 1636 V 14 w(filename)p
+1231 1636 V 11 w(quote)p 1342 1636 V 12 w(characters)f
+Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)23 b Ff(38)1015 1694 y Fd(rl)p 1057 1694 V 14
+w(filename)p 1231 1694 V 11 w(quoting)p 1382 1694 V 11
+w(desired)e Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)24 b Ff(39)1015 1752 y Fd(rl)p
+1057 1752 V 14 w(filename)p 1231 1752 V 11 w(quoting)p
+1382 1752 V 11 w(function)c Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(37)1015 1810
+y Fd(rl)p 1057 1810 V 14 w(forced)p 1191 1810 V 12 w(update)p
+1323 1810 V 11 w(display)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)17
+b Ff(30)1015 1869 y Fd(rl)p 1057 1869 V 14 w(function)p
+1231 1869 V 11 w(dumper)9 b Fe(.)t(.)d(.)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(.)
+h(.)f(.)g(.)22 b Ff(28)1015 1927 y Fd(rl)p 1057 1927
+V 14 w(function)p 1231 1927 V 11 w(of)p 1282 1927 V 13
+w(keyseq)8 b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)21
+b Ff(27)1015 1985 y Fd(rl)p 1057 1985 V 14 w(generic)p
+1211 1985 V 11 w(bind)t Fe(.)5 b(.)h(.)g(.)g(.)g(.)h(.)f(.)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(.)18 b Ff(26)1015 2043 y Fd(rl)p
+1057 2043 V 14 w(get)p 1131 2043 V 13 w(keymap)7 b Fe(.)t(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)20
+b Ff(25)1015 2101 y Fd(rl)p 1057 2101 V 14 w(get)p 1131
+2101 V 13 w(keymap)p 1264 2101 V 12 w(by)p 1316 2101
+V 13 w(name)9 b Fe(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)24
+b Ff(26)1015 2159 y Fd(rl)p 1057 2159 V 14 w(get)p 1131
+2159 V 13 w(keymap)p 1264 2159 V 12 w(name)s Fe(.)t(.)7
+b(.)f(.)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(.)17
+b Ff(26)1015 2217 y Fd(rl)p 1057 2217 V 14 w(getc)s Fe(.)5
+b(.)h(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(31)1015 2275
+y Fd(rl)p 1057 2275 V 14 w(getc)p 1151 2275 V 12 w(function)e
+Fe(.)6 b(.)h(.)f(.)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(.)19
+b Ff(24)1015 2334 y Fd(rl)p 1057 2334 V 14 w(ignore)p
+1191 2334 V 12 w(completio)o(n)p 1402 2334 V 11 w(duplicate)o(s)d
+Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)19
+b Ff(39)1015 2392 y Fd(rl)p 1057 2392 V 14 w(ignore)p
+1191 2392 V 12 w(some)p 1283 2392 V 12 w(completion)o(s)p
+1514 2392 V 11 w(function)13 b Fe(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)17 b Ff(39)1015 2450 y Fd(rl)p 1057 2450 V
+14 w(inhibit)p 1211 2450 V 11 w(completion)g Fe(.)6 b(.)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(.)21 b Ff(39)1015 2508 y Fd(rl)p 1057 2508
+V 14 w(initializ)o(e)t Fe(.)s(.)6 b(.)g(.)g(.)h(.)f(.)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(.)h(.)17 b Ff(31)1015 2566
+y Fd(rl)p 1057 2566 V 14 w(insert)p 1191 2566 V 12 w(completio)o(ns)t
+Fe(.)t(.)6 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(.)19 b Ff(36)1015
+2624 y Fd(rl)p 1057 2624 V 14 w(insert)p 1191 2624 V
+12 w(text)6 b Fe(.)t(.)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(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)19 b Ff(30)p eop
+55 56 bop 0 -58 a Fr(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1337
+b(55)0 183 y Fd(rl)p 42 183 12 2 v 13 w(instream)19 b
+Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)22 b Ff(23)0 241 y Fd(rl)p 42 241 V 13
+w(invoking)p 215 241 V 11 w(keyseqs)8 b Fe(.)t(.)e(.)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(.)21 b Ff(27)0 299 y Fd(rl)p 42 299
+V 13 w(invoking)p 215 299 V 11 w(keyseqs)p 366 299 V
+12 w(in)p 418 299 V 13 w(map)t Fe(.)5 b(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)17
+b Ff(27)0 358 y Fd(rl)p 42 358 V 13 w(kill)p 135 358
+V 13 w(text)8 b Fe(.)d(.)h(.)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(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Ff(30)0 416 y Fd(rl)p
+42 416 V 13 w(library)p 195 416 V 12 w(version)g Fe(.)6
+b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b Ff(23)0
+474 y Fd(rl)p 42 474 V 13 w(line)p 135 474 V 13 w(buffer)18
+b Fe(.)6 b(.)g(.)g(.)g(.)h(.)f(.)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(.)21 b Ff(22)0 532 y Fd(rl)p 42 532 V 13 w(list)p 135
+532 V 13 w(funmap)p 268 532 V 12 w(names)7 b Fe(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)22 b Ff(28)0 590 y Fd(rl)p 42 590
+V 13 w(make)p 135 590 V 13 w(bare)p 228 590 V 13 w(keymap)8
+b Fe(.)e(.)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(.)h(.)f(.)g(.)23
+b Ff(25)0 648 y Fd(rl)p 42 648 V 13 w(make)p 135 648
+V 13 w(keymap)6 b Fe(.)s(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)18 b Ff(25)0 706 y Fd(rl)p 42
+706 V 13 w(mark)f Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)18
+b Ff(22)0 764 y Fd(rl)p 42 764 V 13 w(message)8 b Fe(.)t(.)e(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+21 b Ff(30)0 823 y Fd(rl)p 42 823 V 13 w(modifying)5
+b Fe(.)s(.)h(.)h(.)f(.)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(.)h(.)f
+(.)g(.)g(.)g(.)18 b Ff(29)0 881 y Fd(rl)p 42 881 V 13
+w(named)p 155 881 V 13 w(function)7 b Fe(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Ff(27)0 939 y Fd(rl)p
+42 939 V 13 w(on)p 95 939 V 14 w(new)p 169 939 V 13 w(line)8
+b Fe(.)d(.)h(.)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(.)h(.)f(.)g(.)g
+(.)g(.)21 b Ff(30)0 997 y Fd(rl)p 42 997 V 13 w(outstream)c
+Fe(.)6 b(.)g(.)g(.)h(.)f(.)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(.)h
+(.)f(.)g(.)20 b Ff(23)0 1055 y Fd(rl)p 42 1055 V 13 w(parse)p
+155 1055 V 13 w(and)p 228 1055 V 13 w(bind)5 b Fe(.)t(.)h(.)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(.)h(.)f(.)g(.)17 b Ff(27)0
+1113 y Fd(rl)p 42 1113 V 13 w(pending)p 195 1113 V 12
+w(input)f Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)18 b Ff(23)0 1171 y Fd(rl)p 42 1171 V 13 w(point)d
+Fe(.)6 b(.)h(.)f(.)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(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(22)0 1229 y Fd(rl)p
+42 1229 V 13 w(possible)p 215 1229 V 11 w(completions)7
+b Fe(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b Ff(36)0 1287 y Fd(rl)p
+42 1287 V 13 w(prompt)e Fe(.)6 b(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)24 b Ff(23)0
+1346 y Fd(rl)p 42 1346 V 13 w(read)p 135 1346 V 13 w(init)p
+228 1346 V 13 w(file)5 b Fe(.)t(.)h(.)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(.)h(.)f(.)g(.)17 b Ff(27)0 1404 y Fd(rl)p 42 1404 V
+13 w(read)p 135 1404 V 13 w(key)8 b Fe(.)e(.)g(.)g(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)22
+b Ff(31)0 1462 y Fd(rl)p 42 1462 V 13 w(readline)p 215
+1462 V 11 w(name)17 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)18 b Ff(23)0 1520 y Fd(rl)p 42 1520 V
+13 w(redisplay)5 b Fe(.)s(.)h(.)h(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)18 b Ff(29)0 1578 y Fd(rl)p
+42 1578 V 13 w(redisplay)p 235 1578 V 11 w(function)f
+Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(24)0
+1636 y Fd(rl)p 42 1636 V 13 w(reset)p 155 1636 V 13 w(line)p
+248 1636 V 12 w(state)9 b Fe(.)d(.)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(.)h(.)f
+(.)g(.)23 b Ff(30)0 1694 y Fd(rl)p 42 1694 V 13 w(reset)p
+155 1694 V 13 w(terminal)7 b Fe(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)23 b Ff(31)0 1752 y Fd(rl)p 42 1752 V
+13 w(set)p 115 1752 V 13 w(keymap)7 b Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)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(.)20 b Ff(26)0
+1810 y Fd(rl)p 42 1810 V 13 w(special)p 195 1810 V 12
+w(prefixes)f Fe(.)7 b(.)f(.)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(.)23
+b Ff(38)0 1869 y Fd(rl)p 42 1869 V 13 w(startup)p 195
+1869 V 12 w(hook)18 b Fe(.)6 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(.)h(.)f(.)g(.)g(.)19 b Ff(23)0 1927 y Fd(rl)p 42 1927
+V 13 w(stuff)p 155 1927 V 13 w(char)7 b Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)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(.)20 b
+Ff(31)0 1985 y Fd(rl)p 42 1985 V 13 w(terminal)p 215
+1985 V 11 w(name)d Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)18 b Ff(23)0 2043 y Fd(rl)p 42 2043 V 13
+w(unbind)p 175 2043 V 12 w(key)7 b Fe(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)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(.)20 b Ff(26)1015
+183 y Fd(rl)p 1057 183 V 14 w(unbind)p 1191 183 V 12
+w(key)p 1263 183 V 13 w(in)p 1316 183 V 13 w(map)t Fe(.)t(.)6
+b(.)h(.)f(.)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(.)17 b Ff(26)1015
+291 y Fp(S)1015 358 y Fd(self-insert)9 b(\(a,)j(b,)g(A,)g(1,)g(!,)g
+(...\))6 b Fe(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)19 b Ff(14)1015 416 y Fd(set-mark)10 b(\(C-@\))t
+Fe(.)t(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)17 b Ff(17)1015 474 y(sho)o(w-all-if-am)o(bigu)q(ous)9
+b Fe(.)g(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)22
+b Ff(7)1015 532 y Fd(start-kbd-m)o(ac)o(ro)10 b(\(C-x)h(\(\))t
+Fe(.)5 b(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)17 b Ff(16)1015 640
+y Fp(T)1015 706 y Fd(tab-insert)9 b(\(M-TAB\))e Fe(.)t(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(14)1015 764 y
+Fd(tilde-expan)o(d)10 b(\(M-~\))d Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)20 b Ff(17)1015 823 y Fd(to)p 1057
+823 V 14 w(lower)8 b Fe(.)f(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b
+Ff(32)1015 881 y Fd(to)p 1057 881 V 14 w(upper)8 b Fe(.)f(.)f(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)24 b Ff(32)1015 939 y Fd(transpose-c)o(ha)o(rs)10
+b(\(C-t\))s Fe(.)t(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)16
+b Ff(14)1015 997 y Fd(transpose-w)o(or)o(ds)10 b(\(M-t\))s
+Fe(.)t(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(14)1015
+1105 y Fp(U)1015 1171 y Fd(undo)c(\(C-)p 1169 1171 V
+13 w(,)g(C-x)g(C-u\))7 b Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)20 b Ff(17)1015 1229 y Fd(universal-a)o(rg)o(ume)o(nt)9
+b(\(\))s Fe(.)d(.)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(.)h(.)16
+b Ff(16)1015 1287 y Fd(unix-line-d)o(is)o(car)o(d)10
+b(\(C-u\))f Fe(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)22 b Ff(15)1015
+1346 y Fd(unix-word-r)o(ub)o(out)9 b(\(C-w\))g Fe(.)d(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)24 b Ff(15)1015 1404 y Fd(upcase-word)9 b(\(M-u\))f
+Fe(.)t(.)f(.)f(.)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(.)22
+b Ff(14)1015 1462 y Fd(uppercase)p 1197 1462 V 11 w(p)7
+b Fe(.)f(.)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(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)20 b Ff(32)1015 1520 y Fd(username)p
+1177 1520 V 12 w(completi)o(on)p 1388 1520 V 11 w(function)5
+b Fe(.)s(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)18 b Ff(36)1015 1628 y Fp(V)1015 1694 y Ff(visible-stats)6
+b Fe(.)j(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)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(.)h(.)18 b Ff(7)1015 1802 y Fp(Y)1015
+1869 y Fd(yank)12 b(\(C-y\))d Fe(.)t(.)d(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)22
+b Ff(15)1015 1927 y Fd(yank-last-a)o(rg)9 b(\(M-.,)i(M-)p
+1436 1927 V 13 w(\))6 b Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19
+b Ff(13)1015 1985 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))t
+Fe(.)s(.)d(.)f(.)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(.)18 b Ff(13)1015
+2043 y Fd(yank-pop)10 b(\(M-y\))t Fe(.)t(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(15)p eop
+56 57 bop 0 -58 a Fr(56)1449 b(GNU)15 b(Readline)i(Library)p
eop
-%%Page: 47 49
-48 bop 0 -83 a Fo(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1337
-b(47)0 158 y Fc(start-kbd-)o(ma)o(cro)9 b(\(C-x)i(\(\))t Fd(:)6
-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(:)17 b Fe(12)0 266 y Fm(T)0 333 y Fc(tab-insert)9
-b(\(M-TAB\))e Fd(:)s(:)f(:)g(:)h(:)f(:)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(:)20
-b Fe(10)0 391 y Fc(tilde-expa)o(nd)9 b(\(M-~\))e Fd(:)t(:)f(:)g(:)h(:)f(:)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(:)20 b Fe(13)0 449 y Fc(to)p 42 449 12
-2 v 13 w(lower)9 b Fd(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)23 b Fe(26)0 507 y Fc(to)p
-42 507 V 13 w(upper)9 b Fd(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)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(:)h(:)f(:)g(:)23 b Fe(26)0 565 y Fc(transpose-)o(ch)
-o(ars)9 b(\(C-t\))s Fd(:)t(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16
-b Fe(10)0 623 y Fc(transpose-)o(wo)o(rds)9 b(\(M-t\))s Fd(:)t(:)d(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)16 b Fe(10)0 731 y Fm(U)0 798 y Fc(undo)11 b(\(C-)p
-153 798 V 13 w(,)i(C-x)e(C-u\))c Fd(:)e(:)h(:)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(:)20 b Fe(13)1015 158 y Fc(universal-a)o(rg)o(ume)o(nt)9
-b(\(\))s Fd(:)d(:)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(:)h(:)16 b Fe(12)1015
-216 y Fc(unix-line-d)o(is)o(car)o(d)10 b(\(C-u\))f Fd(:)t(:)d(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22
-b Fe(11)1015 275 y Fc(unix-word-r)o(ub)o(out)9 b(\(C-w\))g
-Fd(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fe(11)1015 333 y Fc(upcase-word)9
-b(\(M-u\))f Fd(:)t(:)f(:)f(:)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(:)22
-b Fe(10)1015 391 y Fc(uppercase)p 1197 391 V 11 w(p)7 b Fd(:)f(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fe(26)1015 449 y Fc(username)p 1177 449 V 12 w(completi)o(on)p
-1388 449 V 11 w(function)5 b Fd(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Fe(30)1015 557 y Fm(Y)1015
-623 y Fc(yank)12 b(\(C-y\))d Fd(:)t(:)d(:)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
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fe(11)1015 681
-y Fc(yank-last-a)o(rg)9 b(\(M-.,)i(M-)p 1436 681 V 13 w(\))6
-b Fd(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Fe(10)1015 739 y Fc(yank-nth-ar)o(g)10
-b(\(M-C-y\))t Fd(:)s(:)d(:)f(:)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(:)18 b
-Fe(10)1015 798 y Fc(yank-pop)10 b(\(M-y\))t Fd(:)t(:)c(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fe(11)p eop
-%%Page: 48 50
-49 bop 0 -83 a Fo(48)1449 b(GNU)15 b(Readline)i(Library)p eop
-%%Page: -1 51
-50 bop 1937 -83 a Fo(i)0 158 y Fk(T)-7 b(able)15 b(of)g(Con)n(ten)n(ts)0
-333 y Fm(1)67 b(Command)22 b(Line)i(Editing)13 b Fb(:)f(:)e(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)36 b Fm(1)149 411 y Fo(1.1)45 b(In)o(tro)q(duction)16
-b(to)f(Line)h(Editing)5 b Fa(:)k(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)20 b Fo(1)149 473 y(1.2)45 b(Readline)17
-b(In)o(teraction)6 b Fa(:)i(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)21
-b Fo(1)299 535 y(1.2.1)44 b(Readline)17 b(Bare)e(Essen)o(tials)f
-Fa(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27
-b Fo(2)299 597 y(1.2.2)44 b(Readline)17 b(Mo)o(v)o(emen)o(t)d(Commands)f
-Fa(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)27 b Fo(2)299 660 y(1.2.3)44
-b(Readline)17 b(Killing)h(Commands)9 b Fa(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)23 b Fo(3)299 722 y(1.2.4)44 b(Readline)17 b(Argumen)o(ts)5
-b Fa(:)i(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)19 b Fo(4)149 784 y(1.3)45 b(Readline)17 b(Init)g(File)d
-Fa(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fo(4)299
-846 y(1.3.1)44 b(Readline)17 b(Init)f(Syn)o(tax)11 b Fa(:)d(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)25 b Fo(4)299
-909 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)d Fa(:)7
-b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)27 b Fo(7)149 971 y(1.4)45
-b(Bindable)17 b(Readline)h(Commands)9 b Fa(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)23 b Fo(8)299 1033 y(1.4.1)44
-b(Commands)14 b(F)l(or)h(Mo)o(ving)t Fa(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)18 b Fo(8)299 1095 y(1.4.2)44 b(Commands)14
-b(F)l(or)h(Manipulating)i(The)e(History)9 b Fa(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)23 b Fo(9)299 1158 y(1.4.3)44
-b(Commands)14 b(F)l(or)h(Changing)h(T)l(ext)10 b Fa(:)c(:)i(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)25 b Fo(10)299 1220 y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)10
-b Fa(:)e(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)25
-b Fo(11)299 1282 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)8
-b Fa(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)22 b Fo(12)299 1345 y(1.4.6)44
-b(Letting)15 b(Readline)j(T)o(yp)q(e)d(F)l(or)g(Y)l(ou)5 b
-Fa(:)i(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)20 b Fo(12)299 1407 y(1.4.7)44
-b(Keyb)q(oard)15 b(Macros)9 b Fa(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)24 b Fo(12)299 1469 y(1.4.8)44
-b(Some)15 b(Miscellaneous)i(Commands)11 b Fa(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27
-b Fo(13)149 1531 y(1.5)45 b(Readline)17 b(vi)f(Mo)q(de)d Fa(:)7
-b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fo(13)0 1656 y Fm(2)67
-b(Programming)23 b(with)g(GNU)f(Readline)d Fb(:)10 b(:)g(:)g(:)h(:)f(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fm(15)149 1734 y Fo(2.1)k(Basic)16
-b(Beha)o(vior)9 b Fa(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)23
-b Fo(15)149 1796 y(2.2)45 b(Custom)14 b(F)l(unctions)6 b Fa(:)j(:)e(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)21 b Fo(17)299 1858 y(2.2.1)44 b(The)15
-b(F)l(unction)h(T)o(yp)q(e)e Fa(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fo(17)299 1920 y(2.2.2)44 b(W)l(riting)16
-b(a)e(New)i(F)l(unction)6 b Fa(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)20 b Fo(18)149 1983 y(2.3)45 b(Readline)17 b(Con)o(v)o(enience)g(F)l
-(unctions)8 b Fa(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23
-b Fo(19)299 2045 y(2.3.1)44 b(Naming)15 b(a)g(F)l(unction)t
-Fa(:)9 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)19 b Fo(19)299 2107 y(2.3.2)44 b(Selecting)17 b(a)e(Keymap)8
-b Fa(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)23
-b Fo(20)299 2170 y(2.3.3)44 b(Binding)17 b(Keys)11 b Fa(:)d(:)f(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)26
-b Fo(21)299 2232 y(2.3.4)44 b(Asso)q(ciating)16 b(F)l(unction)g(Names)f(and)g
-(Bindings)7 b Fa(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)22
-b Fo(22)299 2294 y(2.3.5)44 b(Allo)o(wing)16 b(Undoing)7 b
-Fa(:)i(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)22 b Fo(23)299 2356 y(2.3.6)44 b(Redispla)o(y)9 b Fa(:)f(:)g(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)23 b Fo(24)299 2419 y(2.3.7)44 b(Mo)q(difying)16
-b(T)l(ext)11 b Fa(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)26 b Fo(25)299 2481 y(2.3.8)44 b(Utilit)o(y)16
-b(F)l(unctions)7 b Fa(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)22 b Fo(25)299 2543 y(2.3.9)44 b(An)15
-b(Example)c Fa(:)d(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)26 b Fo(26)149 2605 y(2.4)45
-b(Custom)14 b(Completers)c Fa(:)e(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)25
-b Fo(28)p eop
-%%Page: -2 52
-51 bop 0 -83 a Fo(ii)1471 b(GNU)15 b(Readline)i(Library)299
-17 y(2.4.1)44 b(Ho)o(w)14 b(Completing)i(W)l(orks)10 b Fa(:)c(:)i(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)24 b Fo(28)299 79 y(2.4.2)44
-b(Completion)16 b(F)l(unctions)7 b Fa(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)22 b Fo(29)299 141 y(2.4.3)44 b(Completion)16
-b(V)l(ariables)e Fa(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)28 b Fo(30)299 203 y(2.4.4)44 b(A)15 b(Short)g(Completion)h(Example)11
-b Fa(:)d(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)26 b Fo(32)0 328 y Fm(Concept)c(Index)5
-b Fb(:)12 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)28 b Fm(43)0 468 y(F)-6 b(unction)25
-b(and)d(V)-6 b(ariable)24 b(Index)11 b Fb(:)g(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34
-b Fm(45)p eop
-%%Trailer
-end
+-1 58 bop 1937 -58 a Fr(i)0 183 y Fn(T)-7 b(able)15 b(of)g(Con)n(ten)n
+(ts)0 358 y Fp(1)67 b(Command)22 b(Line)i(Editing)18
+b Fb(.)10 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)38 b Fp(1)149
+435 y Fr(1.1)45 b(In)o(tro)q(duction)16 b(to)f(Line)h(Editing)d
+Fa(.)8 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)27 b Fr(1)149 498 y(1.2)45 b(Readline)17 b(In)o(teraction)8
+b Fa(.)g(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)22 b Fr(1)299
+560 y(1.2.1)44 b(Readline)17 b(Bare)e(Essen)o(tials)f
+Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
+b Fr(2)299 622 y(1.2.2)44 b(Readline)17 b(Mo)o(v)o(emen)o(t)d(Commands)
+7 b Fa(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Fr(2)299 684
+y(1.2.3)44 b(Readline)17 b(Killing)h(Commands)10 b Fa(.)e(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)25 b Fr(3)299 747 y(1.2.4)44
+b(Readline)17 b(Argumen)o(ts)12 b Fa(.)7 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fr(4)299 809
+y(1.2.5)44 b(Searc)o(hing)16 b(for)e(Commands)h(in)h(the)f(History)e
+Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+27 b Fr(4)149 871 y(1.3)45 b(Readline)17 b(Init)g(File)e
+Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)28 b Fr(5)299
+934 y(1.3.1)44 b(Readline)17 b(Init)f(File)h(Syn)o(tax)6
+b Fa(.)h(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)21
+b Fr(5)299 996 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)t
+Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)19 b
+Fr(8)299 1058 y(1.3.3)44 b(Sample)16 b(Init)g(File)11
+b Fa(.)e(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)25 b Fr(9)149 1120 y(1.4)45 b(Bindable)17
+b(Readline)h(Commands)6 b Fa(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)g(.)f(.)h(.)f(.)21 b Fr(12)299 1183 y(1.4.1)44
+b(Commands)14 b(F)l(or)h(Mo)o(ving)e Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)28 b Fr(12)299 1245 y(1.4.2)44
+b(Commands)14 b(F)l(or)h(Manipulating)i(The)e(History)9
+b Fa(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)24
+b Fr(12)299 1307 y(1.4.3)44 b(Commands)14 b(F)l(or)h(Changing)h(T)l
+(ext)e Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)29 b Fr(13)299 1369
+y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)8 b Fa(.)g(.)g(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)23 b Fr(14)299
+1432 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)c
+Fa(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)27 b Fr(15)299 1494 y(1.4.6)44
+b(Letting)15 b(Readline)j(T)o(yp)q(e)d(F)l(or)g(Y)l(ou)9
+b Fa(.)f(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)25 b Fr(16)299 1556 y(1.4.7)44
+b(Keyb)q(oard)15 b(Macros)5 b Fa(.)i(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)21 b Fr(16)299
+1618 y(1.4.8)44 b(Some)15 b(Miscellaneous)i(Commands)6
+b Fa(.)h(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Fr(17)149 1681 y(1.5)45
+b(Readline)17 b(vi)f(Mo)q(de)d Fa(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)28 b Fr(18)0 1805 y Fp(2)67 b(Programming)23 b(with)g(GNU)f
+(Readline)d Fb(.)10 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)41 b Fp(19)149 1883 y Fr(2.1)k(Basic)16 b(Beha)o(vior)7
+b Fa(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)22
+b Fr(19)149 1945 y(2.2)45 b(Custom)14 b(F)l(unctions)7
+b Fa(.)i(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)22 b Fr(21)299
+2008 y(2.2.1)44 b(The)15 b(F)l(unction)h(T)o(yp)q(e)10
+b Fa(.)e(.)g(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)26 b Fr(21)299 2070 y(2.2.2)44 b(W)l(riting)16 b(a)e(New)i(F)l
+(unction)5 b Fa(.)k(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)21
+b Fr(22)149 2132 y(2.3)45 b(Readline)17 b(V)l(ariables)f
+Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)29 b Fr(22)149
+2194 y(2.4)45 b(Readline)17 b(Con)o(v)o(enience)g(F)l(unctions)7
+b Fa(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)22
+b Fr(24)299 2257 y(2.4.1)44 b(Naming)15 b(a)g(F)l(unction)e
+Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)27 b Fr(24)299 2319 y(2.4.2)44 b(Selecting)17 b(a)e(Keymap)6
+b Fa(.)h(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)21 b Fr(25)299 2381 y(2.4.3)44 b(Binding)17 b(Keys)t
+Fa(.)8 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)20 b Fr(26)299 2444 y(2.4.4)44
+b(Asso)q(ciating)16 b(F)l(unction)g(Names)f(and)g(Bindings)8
+b Fa(.)h(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)23
+b Fr(27)299 2506 y(2.4.5)44 b(Allo)o(wing)16 b(Undoing)f
+Fa(.)7 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)29 b Fr(28)299 2568 y(2.4.6)44 b(Redispla)o(y)10
+b Fa(.)f(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)25 b Fr(29)299
+2630 y(2.4.7)44 b(Mo)q(difying)16 b(T)l(ext)6 b Fa(.)i(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21
+b Fr(30)p eop
+-2 59 bop 0 -58 a Fr(ii)1471 b(GNU)15 b(Readline)i(Library)299
+42 y(2.4.8)44 b(Utilit)o(y)16 b(F)l(unctions)e Fa(.)7
+b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
+f(.)28 b Fr(31)299 104 y(2.4.9)44 b(Alternate)15 b(In)o(terface)t
+Fa(.)8 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
+(.)h(.)19 b Fr(32)299 166 y(2.4.10)43 b(An)16 b(Example)f
+Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)29 b Fr(33)149 228 y(2.5)45 b(Custom)14
+b(Completers)f Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)27 b
+Fr(34)299 291 y(2.5.1)44 b(Ho)o(w)14 b(Completing)i(W)l(orks)9
+b Fa(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)25
+b Fr(34)299 353 y(2.5.2)44 b(Completion)16 b(F)l(unctions)6
+b Fa(.)i(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21
+b Fr(35)299 415 y(2.5.3)44 b(Completion)16 b(V)l(ariables)11
+b Fa(.)e(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)26
+b Fr(37)299 477 y(2.5.4)44 b(A)15 b(Short)g(Completion)h(Example)t
+Fa(.)8 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)19 b Fr(40)0 602
+y Fp(Concept)j(Index)11 b Fb(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)34 b Fp(51)0
+742 y(F)-6 b(unction)25 b(and)d(V)-6 b(ariable)24 b(Index)17
+b Fb(.)10 b(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38 b Fp(53)p eop end
userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/doc/readline_toc.html b/doc/readline_toc.html
new file mode 100644
index 0000000..046b1ab
--- /dev/null
+++ b/doc/readline_toc.html
@@ -0,0 +1,77 @@
+<HTML>
+<HEAD>
+<!-- This HTML file has been created by texi2html 1.51
+ from /usr/homes/chet/src/bash/readline-2.1/doc/rlman.texinfo on 3 June 1997 -->
+
+<TITLE>GNU Readline Library - Table of Contents</TITLE>
+</HEAD>
+<BODY>
+<H1>GNU Readline Library</H1>
+<H2>Edition 2.1, for <CODE>Readline Library</CODE> Version 2.1.</H2>
+<H2>March 1996</H2>
+<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
+<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
+<P>
+<P><HR><P>
+<UL>
+<LI><A NAME="TOC1" HREF="readline.html#SEC1">Command Line Editing</A>
+<UL>
+<LI><A NAME="TOC2" HREF="readline.html#SEC2">Introduction to Line Editing</A>
+<LI><A NAME="TOC3" HREF="readline.html#SEC3">Readline Interaction</A>
+<UL>
+<LI><A NAME="TOC4" HREF="readline.html#SEC4">Readline Init File Syntax</A>
+<LI><A NAME="TOC5" HREF="readline.html#SEC5">Conditional Init Constructs</A>
+<LI><A NAME="TOC6" HREF="readline.html#SEC6">Sample Init File</A>
+</UL>
+<LI><A NAME="TOC7" HREF="readline.html#SEC7">Bindable Readline Commands</A>
+<UL>
+<LI><A NAME="TOC8" HREF="readline.html#SEC8">Commands For Moving</A>
+<LI><A NAME="TOC9" HREF="readline.html#SEC9">Commands For Manipulating The History</A>
+<LI><A NAME="TOC10" HREF="readline.html#SEC10">Commands For Changing Text</A>
+<LI><A NAME="TOC11" HREF="readline.html#SEC11">Killing And Yanking</A>
+<LI><A NAME="TOC12" HREF="readline.html#SEC12">Specifying Numeric Arguments</A>
+<LI><A NAME="TOC13" HREF="readline.html#SEC13">Letting Readline Type For You</A>
+<LI><A NAME="TOC14" HREF="readline.html#SEC14">Keyboard Macros</A>
+<LI><A NAME="TOC15" HREF="readline.html#SEC15">Some Miscellaneous Commands</A>
+</UL>
+<LI><A NAME="TOC16" HREF="readline.html#SEC16">Readline vi Mode</A>
+</UL>
+<LI><A NAME="TOC17" HREF="readline.html#SEC17">Programming with GNU Readline</A>
+<UL>
+<LI><A NAME="TOC18" HREF="readline.html#SEC18">Basic Behavior</A>
+<LI><A NAME="TOC19" HREF="readline.html#SEC19">Custom Functions</A>
+<UL>
+<LI><A NAME="TOC20" HREF="readline.html#SEC20">The Function Type</A>
+<LI><A NAME="TOC21" HREF="readline.html#SEC21">Writing a New Function</A>
+</UL>
+<LI><A NAME="TOC22" HREF="readline.html#SEC22">Readline Variables</A>
+<LI><A NAME="TOC23" HREF="readline.html#SEC23">Readline Convenience Functions</A>
+<UL>
+<LI><A NAME="TOC24" HREF="readline.html#SEC24">Naming a Function</A>
+<LI><A NAME="TOC25" HREF="readline.html#SEC25">Selecting a Keymap</A>
+<LI><A NAME="TOC26" HREF="readline.html#SEC26">Binding Keys</A>
+<LI><A NAME="TOC27" HREF="readline.html#SEC27">Associating Function Names and Bindings</A>
+<LI><A NAME="TOC28" HREF="readline.html#SEC28">Allowing Undoing</A>
+<LI><A NAME="TOC29" HREF="readline.html#SEC29">Redisplay</A>
+<LI><A NAME="TOC30" HREF="readline.html#SEC30">Modifying Text</A>
+<LI><A NAME="TOC31" HREF="readline.html#SEC31">Utility Functions</A>
+<LI><A NAME="TOC32" HREF="readline.html#SEC32">Alternate Interface</A>
+<LI><A NAME="TOC33" HREF="readline.html#SEC33">An Example</A>
+</UL>
+<LI><A NAME="TOC34" HREF="readline.html#SEC34">Custom Completers</A>
+<UL>
+<LI><A NAME="TOC35" HREF="readline.html#SEC35">How Completing Works</A>
+<LI><A NAME="TOC36" HREF="readline.html#SEC36">Completion Functions</A>
+<LI><A NAME="TOC37" HREF="readline.html#SEC37">Completion Variables</A>
+<LI><A NAME="TOC38" HREF="readline.html#SEC38">A Short Completion Example</A>
+</UL>
+</UL>
+<LI><A NAME="TOC39" HREF="readline.html#SEC39">Concept Index</A>
+<LI><A NAME="TOC40" HREF="readline.html#SEC40">Function and Variable Index</A>
+</UL>
+<P><HR><P>
+This document was generated on 3 June 1997 using the
+<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
+translator version 1.51.</P>
+</BODY>
+</HTML>
diff --git a/doc/rlman.texinfo b/doc/rlman.texinfo
index ec14066..655f3db 100644
--- a/doc/rlman.texinfo
+++ b/doc/rlman.texinfo
@@ -7,13 +7,13 @@
@setchapternewpage odd
@ignore
-last change: Thu Jul 21 16:02:40 EDT 1994
+last change: Thu Mar 21 16:06:39 EST 1996
@end ignore
-@set EDITION 2.0
-@set VERSION 2.0
-@set UPDATED 21 July 1994
-@set UPDATE-MONTH July 1994
+@set EDITION 2.1
+@set VERSION 2.1
+@set UPDATED 21 March 1996
+@set UPDATE-MONTH March 1996
@ifinfo
This document describes the GNU Readline Library, a utility which aids
@@ -45,7 +45,6 @@ by the Foundation.
@end ifinfo
@titlepage
-@sp 10
@title GNU Readline Library
@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
@subtitle @value{UPDATE-MONTH}
diff --git a/doc/rltech.texinfo b/doc/rltech.texinfo
index f24ac1f..ea0d317 100644
--- a/doc/rltech.texinfo
+++ b/doc/rltech.texinfo
@@ -8,7 +8,7 @@ This document describes the GNU Readline Library, a utility for aiding
in the consitency of user interface across discrete programs that need
to provide a command line interface.
-Copyright (C) 1988, 1994 Free Software Foundation, Inc.
+Copyright (C) 1988, 1994, 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
@@ -44,6 +44,8 @@ in your own programs, this section is for you.
@menu
* Basic Behavior:: Using the default behavior of Readline.
* Custom Functions:: Adding your own functions to Readline.
+* Readline Variables:: Variables accessible to custom
+ functions.
* Readline Convenience Functions:: Functions which Readline supplies to
aid in writing your own
* Custom Completers:: Supplanting or supplementing Readline's
@@ -230,6 +232,11 @@ to do something useful with both negative and positive arguments.
At the very least, it should be aware that it can be passed a
negative argument.
+@node Readline Variables
+@section Readline Variables
+
+These variables are available to function writers.
+
@deftypevar {char *} rl_line_buffer
This is the line gathered so far. You are welcome to modify the
contents of the line, but see @ref{Allowing Undoing}.
@@ -266,6 +273,10 @@ The prompt Readline uses. This is set from the argument to
@code{readline ()}, and should not be assigned to directly.
@end deftypevar
+@deftypevar {char *} rl_library_version
+The version number of this revision of the library.
+@end deftypevar
+
@deftypevar {char *} rl_terminal_name
The terminal type, used for initialization.
@end deftypevar
@@ -289,6 +300,35 @@ If non-zero, this is the address of a function to call just
before @code{readline} prints the first prompt.
@end deftypevar
+@deftypevar {Function *} rl_event_hook
+If non-zero, this is the address of a function to call periodically
+when readline is waiting for terminal input.
+@end deftypevar
+
+@deftypevar {Function *} rl_getc_function
+If non-zero, @code{readline} will call indirectly through this pointer
+to get a character from the input stream. By default, it is set to
+@code{rl_getc}, the default @code{readline} character input function
+(@pxref{Utility Functions}).
+@end deftypevar
+
+@deftypevar {VFunction *} rl_redisplay_function
+If non-zero, @code{readline} will call indirectly through this pointer
+to update the display with the current contents of the editing buffer.
+By default, it is set to @code{rl_redisplay}, the default @code{readline}
+redisplay function (@pxref{Redisplay}).
+@end deftypevar
+
+@deftypevar {Keymap} rl_executing_keymap
+This variable is set to the keymap (@pxref{Keymaps}) in which the
+currently executing readline function was found.
+@end deftypevar
+
+@deftypevar {Keymap} rl_binding_keymap
+This variable is set to the keymap (@pxref{Keymaps}) in which the
+last key binding occurred.
+@end deftypevar
+
@node Readline Convenience Functions
@section Readline Convenience Functions
@@ -302,6 +342,7 @@ before @code{readline} prints the first prompt.
* Redisplay:: Functions to control line display.
* Modifying Text:: Functions to modify @code{rl_line_buffer}.
* Utility Functions:: Generally useful functions and hooks.
+* Alternate Interface:: Using Readline in a `callback' fashion.
@end menu
@node Function Naming
@@ -376,6 +417,11 @@ Return the keymap matching @var{name}. @var{name} is one which would
be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
@end deftypefun
+@deftypefun {char *} rl_get_keymap_name (Keymap keymap)
+Return the name matching @var{keymap}. @var{name} is one which would
+be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
+@end deftypefun
+
@node Binding Keys
@subsection Binding Keys
@@ -422,6 +468,11 @@ perform any key bindings and variable assignments found
(@pxref{Readline Init File}).
@end deftypefun
+@deftypefun int rl_read_init_file (char *filename)
+Read keybindings and variable assignments from @var{filename}
+(@pxref{Readline Init File}).
+@end deftypefun
+
@node Associating Function Names and Bindings
@subsection Associating Function Names and Bindings
@@ -449,6 +500,17 @@ Return an array of strings representing the key sequences used to
invoke @var{function} in the keymap @var{map}.
@end deftypefun
+@deftypefun void rl_function_dumper (int readable)
+Print the readline function names and the key sequences currently
+bound to them to @code{rl_outstream}. If @var{readable} is non-zero,
+the list is formatted in such a way that it can be made part of an
+@code{inputrc} file and re-read.
+@end deftypefun
+
+@deftypefun void rl_list_funmap_names ()
+Print the names of all bindable Readline functions to @code{rl_outstream}.
+@end deftypefun
+
@node Allowing Undoing
@subsection Allowing Undoing
@@ -519,7 +581,7 @@ that text.
@node Redisplay
@subsection Redisplay
-@deftypefun int rl_redisplay ()
+@deftypefun void rl_redisplay ()
Change what's displayed on the screen to reflect the current contents
of @code{rl_line_buffer}.
@end deftypefun
@@ -577,6 +639,31 @@ not a kill, a new kill ring slot is used.
@node Utility Functions
@subsection Utility Functions
+@deftypefun int rl_read_key ()
+Return the next character available. This handles input inserted into
+the input stream via @var{pending input} (@pxref{Readline Variables})
+and @code{rl_stuff_char ()}, macros, and characters read from the keyboard.
+@end deftypefun
+
+@deftypefun int rl_getc (FILE *)
+Return the next character available from the keyboard.
+@end deftypefun
+
+@deftypefun int rl_stuff_char (int c)
+Insert @var{c} into the Readline input stream. It will be "read"
+before Readline attempts to read characters from the terminal with
+@code{rl_read_key ()}.
+@end deftypefun
+
+@deftypefun rl_extend_line_buffer (int len)
+Ensure that @code{rl_line_buffer} has enough space to hold @var{len}
+characters, possibly reallocating it if necessary.
+@end deftypefun
+
+@deftypefun int rl_initialize ()
+Initialize or re-initialize Readline's internal state.
+@end deftypefun
+
@deftypefun int rl_reset_terminal (char *terminal_name)
Reinitialize Readline's idea of the terminal settings using
@var{terminal_name} as the terminal type (e.g., @code{vt100}).
@@ -606,7 +693,7 @@ Return 1 if @var{c} is a lowercase alphabetic character.
@deftypefun int digit_p (int c)
Return 1 if @var{c} is a numeric character.
-@deftypefun
+@end deftypefun
@deftypefun int to_upper (int c)
If @var{c} is a lowercase alphabetic character, return the corresponding
@@ -622,6 +709,37 @@ lowercase character.
If @var{c} is a number, return the value it represents.
@end deftypefun
+@node Alternate Interface
+@subsection Alternate Interface
+
+An alternate interface is available to plain @code{readline()}. Some
+applications need to interleave keyboard I/O with file, device, or
+window system I/O, typically by using a main loop to @code{select()}
+on various file descriptors. To accomodate this need, readline can
+also be invoked as a `callback' function from an event loop. There
+are functions available to make this easy.
+
+@deftypefun void rl_callback_handler_install (char *prompt, Vfunction *lhandler)
+Set up the terminal for readline I/O and display the initial
+expanded value of @var{prompt}. Save the value of @var{lhandler} to
+use as a callback when a complete line of input has been entered.
+@end deftypefun
+
+@deftypefun void rl_callback_read_char ()
+Whenever an application determines that keyboard input is available, it
+should call @code{rl_callback_read_char()}, which will read the next
+character from the current input source. If that character completes the
+line, @code{rl_callback_read_char} will invoke the @var{lhandler}
+function saved by @code{rl_callback_handler_install} to process the
+line. @code{EOF} is indicated by calling @var{lhandler} with a
+@code{NULL} line.
+@end deftypefun
+
+@deftypefun void rl_callback_handler_remove ()
+Restore the terminal to its initial state and remove the line handler.
+This may be called from within a callback as well as independently.
+@end deftypefun
+
@subsection An Example
Here is a function which changes lowercase characters to their uppercase
@@ -762,7 +880,7 @@ that does the initial simple matching selection algorithm (see
This is a pointer to the generator function for @code{completion_matches
()}. If the value of @code{rl_completion_entry_function} is
@code{(Function *)NULL} then the default filename generator function,
-@code{filename_entry_function ()}, is used.
+@code{filename_completion_function ()}, is used.
@end deftypevar
@node Completion Functions
@@ -850,6 +968,40 @@ returns @code{NULL}, or if this variable is set to @code{NULL}, then
array of strings returned will be used.
@end deftypevar
+@deftypevar {CPFunction *} rl_filename_quoting_function
+A pointer to a function that will quote a filename in an application-
+specific fashion. This is called if filename completion is being
+attempted and one of the characters in @code{rl_filename_quote_characters}
+appears in a completed filename. The function is called with
+@var{text}, @var{match_type}, and @var{quote_pointer}. The @var{text}
+is the filename to be quoted. The @var{match_type} is either
+@code{SINGLE_MATCH}, if there is only one completion match, or
+@code{MULT_MATCH}. Some functions use this to decide whether or not to
+insert a closing quote character. The @var{quote_pointer} is a pointer
+to any opening quote character the user typed. Some functions choose
+to reset this character.
+@end deftypevar
+
+@deftypevar {CPFunction *} rl_filename_dequoting_function
+A pointer to a function that will remove application-specific quoting
+characters from a filename before completion is attempted, so those
+characters do not interfere with matching the text against names in
+the filesystem. It is called with @var{text}, the text of the word
+to be dequoted, and @var{quote_char}, which is the quoting character
+that delimits the filename (usually @samp{'} or @samp{"}). If
+@var{quote_char} is zero, the filename was not in an embedded string.
+@end deftypevar
+
+@deftypevar {Function *} rl_char_is_quoted_p
+A pointer to a function to call that determines whether or not a specific
+character in the line buffer is quoted, according to whatever quoting
+mechanism the program calling readline uses. The function is called with
+two arguments: @var{text}, the text of the line, and @var{index}, the
+index of the character in the line. It is used to decide whether a
+character found in @code{rl_completer_word_break_characters} should be
+used to break words for the completer.
+@end deftypevar
+
@deftypevar int rl_completion_query_items
Up to this many items will be displayed in response to a
possible-completions call. After that, we ask the user if she is sure
@@ -863,12 +1015,28 @@ which break words for completion in Bash, i.e.,
@code{" \t\n\"\\'`@@$><=;|&@{("}.
@end deftypevar
+@deftypevar {char *} rl_basic_quote_characters
+List of quote characters which can cause a word break.
+@end deftypevar
+
@deftypevar {char *} rl_completer_word_break_characters
The list of characters that signal a break between words for
@code{rl_complete_internal ()}. The default list is the value of
@code{rl_basic_word_break_characters}.
@end deftypevar
+@deftypevar {char *} rl_completer_quote_characters
+List of characters which can be used to quote a substring of the line.
+Completion occurs on the entire substring, and within the substring
+@code{rl_completer_word_break_characters} are treated as any other character,
+unless they also appear within this list.
+@end deftypevar
+
+@deftypevar {char *} rl_filename_quote_characters
+A list of characters that cause a filename to be quoted by the completer
+when they appear in a completed filename. The default is empty.
+@end deftypevar
+
@deftypevar {char *} rl_special_prefixes
The list of characters that are word break characters, but should be
left in @var{text} when it is passed to the completion function.
@@ -877,6 +1045,16 @@ For instance, Bash sets this variable to "$@@" so that it can complete
shell variables and hostnames.
@end deftypevar
+@deftypevar {int} rl_completion_append_character
+When a single completion alternative matches at the end of the command
+line, this character is appended to the inserted completion text. The
+default is a space character (@samp{ }). Setting this to the null
+character (@samp{\0}) prevents anything being appended automatically.
+This can be changed in custom completion functions to
+provide the ``most sensible word separator character'' according to
+an application-specific command line syntax specification.
+@end deftypevar
+
@deftypevar int rl_ignore_completion_duplicates
If non-zero, then disallow duplicates in the matches. Default is 1.
@end deftypevar
@@ -894,9 +1072,15 @@ characters.
Non-zero means that the results of the matches are to be quoted using
double quotes (or an application-specific quoting mechanism) if the
completed filename contains any characters in
-@code{rl_completer_word_break_chars}. This is @emph{always} non-zero
+@code{rl_filename_quote_chars}. This is @emph{always} non-zero
on entry, and can only be changed within a completion entry generator
-function.
+function. The quoting is effected via a call to the function pointed to
+by @code{rl_filename_quoting_function}.
+@end deftypevar
+
+@deftypevar int rl_inhibit_completion
+If this variable is non-zero, completion is inhibit<ed. The completion
+character will be inserted as any other bound to @code{self-insert}.
@end deftypevar
@deftypevar {Function *} rl_ignore_some_completions_function
@@ -909,14 +1093,13 @@ re-arrange the list of matches as required, but each element deleted
from the array must be freed.
@end deftypevar
-@deftypevar {char *} rl_completer_quote_characters
-List of characters which can be used to quote a substring of the line.
-Completion occurs on the entire substring, and within the substring
-@code{rl_completer_word_break_characters} are treated as any other character,
-unless they also appear within this list.
+@deftypevar {Function *} rl_directory_completion_hook
+This function, if defined, is allowed to modify the directory portion
+of filenames Readline completes. It is called with the address of a
+string (the current directory name) as an argument. It could be used
+to expand symbolic links or shell variables in pathnames.
@end deftypevar
-
@node A Short Completion Example
@subsection A Short Completion Example
@@ -1124,10 +1307,11 @@ initialize_readline ()
rl_attempted_completion_function = (CPPFunction *)fileman_completion;
@}
-/* Attempt to complete on the contents of TEXT. START and END show the
- region of TEXT that contains the word to complete. We can use the
- entire line in case we want to do some simple parsing. Return the
- array of matches, or NULL if there aren't any. */
+/* Attempt to complete on the contents of TEXT. START and END bound the
+ region of rl_line_buffer that contains the word to complete. TEXT is
+ the word to complete. We can use the entire contents of rl_line_buffer
+ in case we want to do some simple parsing. Return the array of matches,
+ or NULL if there aren't any. */
char **
fileman_completion (text, start, end)
char *text;
diff --git a/doc/rluser.texinfo b/doc/rluser.texinfo
index 3567549..f7d6fd8 100644
--- a/doc/rluser.texinfo
+++ b/doc/rluser.texinfo
@@ -10,7 +10,7 @@ use these features. There is a document entitled "readline.texinfo"
which contains both end-user and programmer documentation for the GNU
Readline Library.
-Copyright (C) 1988 Free Software Foundation, Inc.
+Copyright (C) 1988, 1991, 1993, 1996 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
@@ -39,7 +39,7 @@ into another language, under the above conditions for modified versions.
@node Command Line Editing
@chapter Command Line Editing
-This chapter describes the basic features of the GNU
+This chapter describes the basic features of the @sc{GNU}
command line editing interface.
@menu
@@ -59,11 +59,12 @@ The following paragraphs describe the notation used to represent
keystrokes.
The text @key{C-k} is read as `Control-K' and describes the character
-produced when the Control key is depressed and the @key{k} key is struck.
+produced when the @key{k} key is pressed while the Control key
+is depressed.
The text @key{M-k} is read as `Meta-K' and describes the character
produced when the meta key (if you have one) is depressed, and the @key{k}
-key is struck. If you do not have a meta key, the identical keystroke
+key is pressed. If you do not have a meta key, the identical keystroke
can be generated by typing @key{ESC} @i{first}, and then typing @key{k}.
Either process is known as @dfn{metafying} the @key{k} key.
@@ -73,7 +74,7 @@ character produced by @dfn{metafying} @key{C-k}.
In addition, several keys have their own names. Specifically,
@key{DEL}, @key{ESC}, @key{LFD}, @key{SPC}, @key{RET}, and @key{TAB} all
stand for themselves when seen in this text, or in an init file
-(@pxref{Readline Init File}, for more info).
+(@pxref{Readline Init File}).
@node Readline Interaction
@section Readline Interaction
@@ -95,10 +96,14 @@ regardless of the location of the cursor within the line.
* Readline Movement Commands:: Moving about the input line.
* Readline Killing Commands:: How to delete text, and how to get it back!
* Readline Arguments:: Giving numeric arguments to commands.
-@end menu
+* Searching:: Searching through previous lines.
+ @end menu
@node Readline Bare Essentials
@subsection Readline Bare Essentials
+@cindex notation, readline
+@cindex command editing
+@cindex editing command lines
In order to enter characters into the line, simply type them. The typed
character appears where the cursor was, and then the cursor moves one
@@ -164,8 +169,8 @@ operate on characters while meta keystrokes operate on words.
@node Readline Killing Commands
@subsection Readline Killing Commands
-@cindex Killing text
-@cindex Yanking text
+@cindex killing text
+@cindex yanking text
@dfn{Killing} text means to delete the text from the line, but to save
it away for later use, usually by @dfn{yanking} (re-inserting)
@@ -180,7 +185,7 @@ that when you yank it back, you get it all. The kill
ring is not line specific; the text that you killed on a previously
typed line is available to be yanked back later, when you are typing
another line.
-@cindex Kill ring
+@cindex kill ring
Here is the list of commands for killing text.
@@ -222,24 +227,59 @@ argument acts as a repeat count, other times it is the @i{sign} of the
argument that is significant. If you pass a negative argument to a
command which normally acts in a forward direction, that command will
act in a backward direction. For example, to kill text back to the
-start of the line, you might type @key{M--} @key{C-k}.
+start of the line, you might type @w{@kbd{M-- C-k}}.
The general way to pass numeric arguments to a command is to type meta
digits before the command. If the first `digit' you type is a minus
sign (@key{-}), then the sign of the argument will be negative. Once
you have typed one meta digit to get the argument started, you can type
the remainder of the digits, and then the command. For example, to give
-the @key{C-d} command an argument of 10, you could type @key{M-1 0 C-d}.
+the @key{C-d} command an argument of 10, you could type @samp{M-1 0 C-d}.
+
+@node Searching
+@subsection Searching for Commands in the History
+Readline provides commands for searching through the command history
+@ifset BashFeatures
+(@pxref{Bash History Facilities})
+@end ifset
+for lines containing a specified string.
+There are two search modes: @var{incremental} and @var{non-incremental}.
+
+Incremental searches begin before the user has finished typing the
+search string.
+As each character of the search string is typed, readline displays
+the next entry from the history matching the string typed so far.
+An incremental search requires only as many characters as needed to
+find the desired history entry.
+The Escape character is used to terminate an incremental search.
+Control-J will also terminate the search.
+Control-G will abort an incremental search and restore the original
+line.
+When the search is terminated, the history entry containing the
+search string becomes the current line.
+To find other matching entries in the history list, type Control-S or
+Control-R as appropriate.
+This will search backward or forward in the history for the next
+entry matching the search string typed so far.
+Any other key sequence bound to a readline command will terminate
+the search and execute that command.
+For instance, a @code{newline} will terminate the search and accept
+the line, thereby executing the command from the history list.
+
+Non-incremental searches read the entire search string before starting
+to search for matching history lines. The search string may be
+typed by the user or part of the contents of the current line.
@node Readline Init File
@section Readline Init File
+@cindex initialization file, readline
-Although the Readline library comes with a set of Emacs-like
+Although the Readline library comes with a set of @code{emacs}-like
keybindings installed by default,
it is possible that you would like to use a different set
of keybindings. You can customize programs that use Readline by putting
-commands in an @dfn{init} file in your home directory. The name of this
+commands in an @dfn{inputrc} file in your home directory. The name of this
@ifset BashFeatures
file is taken from the value of the shell variable @code{INPUTRC}. If
@end ifset
@@ -255,17 +295,20 @@ In addition, the @code{C-x C-r} command re-reads this init file, thus
incorporating any changes that you might have made to it.
@menu
-* Readline Init Syntax:: Syntax for the commands in the inputrc file.
+* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
+
* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
+
+* Sample Init File:: An example inputrc file.
@end menu
-@node Readline Init Syntax
-@subsection Readline Init Syntax
+@node Readline Init File Syntax
+@subsection Readline Init File Syntax
There are only a few basic constructs allowed in the
Readline init file. Blank lines are ignored.
-Lines beginning with a @key{#} are comments.
-Lines beginning with a @key{$} indicate conditional
+Lines beginning with a @samp{#} are comments.
+Lines beginning with a @samp{$} indicate conditional
constructs (@pxref{Conditional Init Constructs}). Other lines
denote variable settings and key bindings.
@@ -284,61 +327,20 @@ so few, in fact, that we just list them here:
@table @code
-@item editing-mode
-@vindex editing-mode
-The @code{editing-mode} variable controls which editing mode you are
-using. By default, Readline starts up in Emacs editing mode, where
-the keystrokes are most similar to Emacs. This variable can be
-set to either @code{emacs} or @code{vi}.
-
-@item horizontal-scroll-mode
-@vindex horizontal-scroll-mode
-This variable can be set to either @code{On} or @code{Off}. Setting it
-to @code{On} means that the text of the lines that you edit will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line. By default,
-this variable is set to @code{Off}.
-
-@item mark-modified-lines
-@vindex mark-modified-lines
-This variable, when set to @code{On}, says to display an asterisk
-(@samp{*}) at the start of history lines which have been modified.
-This variable is @code{off} by default.
-
@item bell-style
@vindex bell-style
Controls what happens when Readline wants to ring the terminal bell.
-If set to @code{none}, Readline never rings the bell. If set to
-@code{visible}, Readline uses a visible bell if one is available.
-If set to @code{audible} (the default), Readline attempts to ring
+If set to @samp{none}, Readline never rings the bell. If set to
+@samp{visible}, Readline uses a visible bell if one is available.
+If set to @samp{audible} (the default), Readline attempts to ring
the terminal's bell.
@item comment-begin
@vindex comment-begin
The string to insert at the beginning of the line when the
-@code{vi-comment} command is executed. The default value
+@code{insert-comment} command is executed. The default value
is @code{"#"}.
-@item meta-flag
-@vindex meta-flag
-If set to @code{on}, Readline will enable eight-bit input (it
-will not strip the eighth bit from the characters it reads),
-regardless of what the terminal claims it can support. The
-default value is @code{off}.
-
-@item convert-meta
-@vindex convert-meta
-If set to @code{on}, Readline will convert characters with the
-eigth bit set to an ASCII key sequence by stripping the eigth
-bit and prepending an @key{ESC} character, converting them to a
-meta-prefixed key sequence. The default value is @code{on}.
-
-@item output-meta
-@vindex output-meta
-If set to @code{on}, Readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence. The default is @code{off}.
-
@item completion-query-items
@vindex completion-query-items
The number of possible completions that determines when the user is
@@ -348,6 +350,45 @@ Readline will ask the user whether or not he wishes to view
them; otherwise, they are simply listed. The default limit is
@code{100}.
+@item convert-meta
+@vindex convert-meta
+If set to @samp{on}, Readline will convert characters with the
+eigth bit set to an ASCII key sequence by stripping the eigth
+bit and prepending an @key{ESC} character, converting them to a
+meta-prefixed key sequence. The default value is @samp{on}.
+
+@item disable-completion
+@vindex disable-completion
+If set to @samp{On}, readline will inhibit word completion.
+Completion characters will be inserted into the line as if they had
+been mapped to @code{self-insert}. The default is @samp{off}.
+
+@item editing-mode
+@vindex editing-mode
+The @code{editing-mode} variable controls which editing mode you are
+using. By default, Readline starts up in Emacs editing mode, where
+the keystrokes are most similar to Emacs. This variable can be
+set to either @samp{emacs} or @samp{vi}.
+
+@item enable-keypad
+@vindex enable-keypad
+When set to @samp{on}, readline will try to enable the application
+keypad when it is called. Some systems need this to enable the
+arrow keys. The default is @samp{off}.
+
+@item expand-tilde
+@vindex expand-tilde
+If set to @samp{on}, tilde expansion is performed when Readline
+attempts word completion. The default is @samp{off}.
+
+@item horizontal-scroll-mode
+@vindex horizontal-scroll-mode
+This variable can be set to either @samp{on} or @samp{off}. Setting it
+to @samp{on} means that the text of the lines that you edit will scroll
+horizontally on a single screen line when they are longer than the width
+of the screen, instead of wrapping onto a new screen line. By default,
+this variable is set to @samp{off}.
+
@item keymap
@vindex keymap
Sets Readline's idea of the current keymap for key binding commands.
@@ -357,7 +398,6 @@ Acceptable @code{keymap} names are
@code{emacs-meta},
@code{emacs-ctlx},
@code{vi},
-@code{vi-move},
@code{vi-command}, and
@code{vi-insert}.
@code{vi} is equivalent to @code{vi-command}; @code{emacs} is
@@ -365,18 +405,44 @@ equivalent to @code{emacs-standard}. The default value is @code{emacs}.
The value of the @code{editing-mode} variable also affects the
default keymap.
+@item mark-directories
+If set to @samp{on}, completed directory names have a slash
+appended. The default is @samp{on}.
+
+@item mark-modified-lines
+@vindex mark-modified-lines
+This variable, when set to @samp{on}, says to display an asterisk
+(@samp{*}) at the start of history lines which have been modified.
+This variable is @samp{off} by default.
+
+@item input-meta
+@vindex input-meta
+@vindex meta-flag
+If set to @samp{on}, Readline will enable eight-bit input (it
+will not strip the eighth bit from the characters it reads),
+regardless of what the terminal claims it can support. The
+default value is @samp{off}. The name @code{meta-flag} is a
+synonym for this variable.
+
+@item output-meta
+@vindex output-meta
+If set to @samp{on}, Readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence. The default is @samp{off}.
+
@item show-all-if-ambiguous
@vindex show-all-if-ambiguous
This alters the default behavior of the completion functions. If
-set to @code{on},
+set to @samp{on},
words which have more than one possible completion cause the
matches to be listed immediately instead of ringing the bell.
-The default value is @code{off}.
+The default value is @samp{off}.
-@item expand-tilde
-@vindex expand-tilde
-If set to @code{on}, tilde expansion is performed when Readline
-attempts word completion. The default is @code{off}.
+@item visible-stats
+@vindex visible-stats
+If set to @samp{on}, a character denoting a file's type
+is appended to the filename when listing possible
+completions. The default is @samp{off}.
@end table
@@ -399,13 +465,13 @@ comfortable for you.
@example
Control-u: universal-argument
Meta-Rubout: backward-kill-word
-Control-o: ">&output"
+Control-o: "> output"
@end example
In the above example, @samp{C-u} is bound to the function
@code{universal-argument}, and @samp{C-o} is bound to run the macro
expressed on the right hand side (that is, to insert the text
-@samp{>&output} into the line).
+@samp{> output} into the line).
@item @w{"@var{keyseq}": @var{function-name} or @var{macro}}
@var{keyseq} differs from @var{keyname} above in that strings
@@ -445,10 +511,10 @@ backslash
When entering the text of a macro, single or double quotes should
be used to indicate a macro definition. Unquoted text
is assumed to be a function name. Backslash
-will quote any character in the macro text, including @key{"}
-and @key{'}.
-For example, the following binding will make @kbd{C-x \}
-insert a single @key{\} into the line:
+will quote any character in the macro text, including @samp{"}
+and @samp{'}.
+For example, the following binding will make @samp{C-x \}
+insert a single @samp{\} into the line:
@example
"\C-x\\": "\\"
@end example
@@ -464,7 +530,7 @@ compilation features of the C preprocessor which allows key
bindings and variable settings to be performed as the result
of tests. There are three parser directives used.
-@ftable @code
+@table @code
@item $if
The @code{$if} construct allows bindings to be made based on the
editing mode, the terminal being used, or the application using
@@ -486,7 +552,7 @@ key bindings, perhaps to bind the key sequences output by the
terminal's function keys. The word on the right side of the
@samp{=} is tested against the full name of the terminal and the
portion of the terminal name before the first @samp{-}. This
-allows @var{sun} to match both @var{sun} and @var{sun-cmd},
+allows @code{sun} to match both @code{sun} and @code{sun-cmd},
for instance.
@item application
@@ -497,7 +563,7 @@ This could be used to bind key sequences to functions useful for
a specific program. For instance, the following command adds a
key sequence that quotes the current or previous word in Bash:
@example
-$if bash
+$if Bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endif
@@ -511,7 +577,109 @@ This command, as you saw in the previous example, terminates an
@item $else
Commands in this branch of the @code{$if} directive are executed if
the test fails.
-@end ftable
+@end table
+
+@node Sample Init File
+@subsection Sample Init File
+
+Here is an example of an inputrc file. This illustrates key
+binding, variable assignment, and conditional syntax.
+
+@example
+@page
+# This file controls the behaviour of line input editing for
+# programs that use the Gnu Readline library. Existing programs
+# include FTP, Bash, and Gdb.
+#
+# You can re-read the inputrc file with C-x C-r.
+# Lines beginning with '#' are comments.
+#
+# Set various bindings for emacs mode.
+
+set editing-mode emacs
+
+$if mode=emacs
+
+Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+#
+# Arrow keys in keypad mode
+#
+#"\M-OD": backward-char
+#"\M-OC": forward-char
+#"\M-OA": previous-history
+#"\M-OB": next-history
+#
+# Arrow keys in ANSI mode
+#
+"\M-[D": backward-char
+"\M-[C": forward-char
+"\M-[A": previous-history
+"\M-[B": next-history
+#
+# Arrow keys in 8 bit keypad mode
+#
+#"\M-\C-OD": backward-char
+#"\M-\C-OC": forward-char
+#"\M-\C-OA": previous-history
+#"\M-\C-OB": next-history
+#
+# Arrow keys in 8 bit ANSI mode
+#
+#"\M-\C-[D": backward-char
+#"\M-\C-[C": forward-char
+#"\M-\C-[A": previous-history
+#"\M-\C-[B": next-history
+
+C-q: quoted-insert
+
+$endif
+
+# An old-style binding. This happens to be the default.
+TAB: complete
+
+# Macros that are convenient for shell interaction
+$if Bash
+# edit the path
+"\C-xp": "PATH=$@{PATH@}\e\C-e\C-a\ef\C-f"
+# prepare to type a quoted word -- insert open and close double quotes
+# and move to just after the open quote
+"\C-x\"": "\"\"\C-b"
+# insert a backslash (testing backslash escapes in sequences and macros)
+"\C-x\\": "\\"
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+# Add a binding to refresh the line, which is unbound
+"\C-xr": redraw-current-line
+# Edit variable on current line.
+"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+$endif
+
+# use a visible bell if one is available
+set bell-style visible
+
+# don't strip characters to 7 bits when reading
+set input-meta on
+
+# allow iso-latin1 characters to be inserted rather than converted to
+# prefix-meta sequences
+set convert-meta off
+
+# display characters with the eighth bit set directly rather than
+# as meta-prefixed characters
+set output-meta on
+
+# if there are more than 150 possible completions for a word, ask the
+# user if he wants to see all of them
+set completion-query-items 150
+
+# For FTP
+$if Ftp
+"\C-xg": "get \M-?"
+"\C-xt": "put \M-?"
+"\M-.": yank-last-arg
+$endif
+@end example
@node Bindable Readline Commands
@section Bindable Readline Commands
@@ -527,6 +695,9 @@ the test fails.
* Miscellaneous Commands:: Other miscellaneous commands.
@end menu
+This section describes Readline commands that may be bound to key
+sequences.
+
@node Commands For Moving
@subsection Commands For Moving
@ftable @code
@@ -608,12 +779,13 @@ for a string supplied by the user.
@item history-search-forward ()
Search forward through the history for the string of characters
-between the start of the current line and the current point. This
-is a non-incremental search. By default, this command is unbound.
+between the start of the current line and the current cursor
+position (the `point'). This is a non-incremental search. By
+default, this command is unbound.
@item history-search-backward ()
Search backward through the history for the string of characters
-between the start of the current line and the current point. This
+between the start of the current line and the point. This
is a non-incremental search. By default, this command is unbound.
@item yank-nth-arg (M-C-y)
@@ -624,8 +796,8 @@ in the previous command begin with word 0). A negative argument
inserts the @var{n}th word from the end of the previous command.
@item yank-last-arg (M-., M-_)
-Insert last argument to the previous command (the last word on the
-previous line). With an
+Insert last argument to the previous command (the last word of the
+previous history entry). With an
argument, behave exactly like @code{yank-nth-arg}.
@end ftable
@@ -637,7 +809,7 @@ argument, behave exactly like @code{yank-nth-arg}.
@item delete-char (C-d)
Delete the character under the cursor. If the cursor is at the
beginning of the line, there are no characters in the line, and
-the last character typed was not C-d, then return EOF.
+the last character typed was not @kbd{C-d}, then return @code{EOF}.
@item backward-delete-char (Rubout)
Delete the character behind the cursor. A numeric arg says to kill
@@ -714,6 +886,23 @@ boundary. The killed text is saved on the kill-ring.
@item delete-horizontal-space ()
Delete all spaces and tabs around point. By default, this is unbound.
+@item kill-region ()
+Kill the text between the point and the @emph{mark} (saved
+cursor position. This text is referred to as the @var{region}.
+By default, this command is unbound.
+
+@item copy-region-as-kill ()
+Copy the text in the region to the kill buffer, so you can yank it
+right away. By default, this command is unbound.
+
+@item copy-backward-word ()
+Copy the word before point to the kill buffer.
+By default, this command is unbound.
+
+@item copy-forward-word ()
+Copy the word following point to the kill buffer.
+By default, this command is unbound.
+
@item yank (C-y)
Yank the top of the kill ring into the buffer at the current
cursor position.
@@ -729,13 +918,21 @@ the prior command is yank or yank-pop.
@item digit-argument (M-0, M-1, ... M--)
Add this digit to the argument already accumulating, or start a new
-argument. M-- starts a negative argument.
+argument. @key{M--} starts a negative argument.
@item universal-argument ()
-Each time this is executed, the argument count is multiplied by four.
+This is another way to specify an argument.
+If this command is followed by one or more digits, optionally with a
+leading minus sign, those digits define the argument.
+If the command is followed by digits, executing @code{universal-argument}
+again ends the numeric argument, but is otherwise ignored.
+As a special case, if this command is immediately followed by a
+character that is neither a digit or minus sign, the argument count
+for the next command is multiplied by four.
The argument count is initially one, so executing this function the
-first time makes the argument count four. By default, this is not
-bound to a key.
+first time makes the argument count four, a second time makes the
+argument count sixteen, and so on.
+By default, this is not bound to a key.
@end ftable
@node Commands For Completion
@@ -750,18 +947,74 @@ you can do command completion, if you are typing in a symbol to GDB, you
can do symbol name completion, if you are typing in a variable to Bash,
you can do variable name completion, and so on.
@ifset BashFeatures
-See the Bash manual page for a complete list of available completion
-functions.
+Bash attempts completion treating the text as a variable (if the
+text begins with @samp{$}), username (if the text begins with
+@samp{~}), hostname (if the text begins with @samp{@@}), or
+command (including aliases and functions) in turn. If none
+of these produces a match, filename completion is attempted.
@end ifset
@item possible-completions (M-?)
List the possible completions of the text before the cursor.
-@item insert-completions ()
+@item insert-completions (M-*)
Insert all completions of the text before point that would have
-been generated by @code{possible-completions}. By default, this
-is not bound to a key.
+been generated by @code{possible-completions}.
+
+@ifset BashFeatures
+@item complete-filename (M-/)
+Attempt filename completion on the text before point.
+
+@item possible-filename-completions (C-x /)
+List the possible completions of the text before point,
+treating it as a filename.
+
+@item complete-username (M-~)
+Attempt completion on the text before point, treating
+it as a username.
+
+@item possible-username-completions (C-x ~)
+List the possible completions of the text before point,
+treating it as a username.
+
+@item complete-variable (M-$)
+Attempt completion on the text before point, treating
+it as a shell variable.
+
+@item possible-variable-completions (C-x $)
+List the possible completions of the text before point,
+treating it as a shell variable.
+
+@item complete-hostname (M-@@)
+Attempt completion on the text before point, treating
+it as a hostname.
+
+@item possible-hostname-completions (C-x @@)
+List the possible completions of the text before point,
+treating it as a hostname.
+
+@item complete-command (M-!)
+Attempt completion on the text before point, treating
+it as a command name. Command completion attempts to
+match the text against aliases, reserved words, shell
+functions, builtins, and finally executable filenames,
+in that order.
+
+@item possible-command-completions (C-x !)
+List the possible completions of the text before point,
+treating it as a command name.
+
+@item dynamic-complete-history (M-TAB)
+Attempt completion on the text before point, comparing
+the text against lines from the history list for possible
+completion matches.
+
+@item complete-into-braces (M-@{)
+Perform filename completion and return the list of possible completions
+enclosed within braces so the list is available to the shell
+(@pxref{Brace Expansion}).
+@end ifset
@end ftable
@node Keyboard Macros
@@ -786,7 +1039,7 @@ in the macro appear as if typed at the keyboard.
@ftable @code
@item re-read-init-file (C-x C-r)
-Read in the contents of your init file, and incorporate
+Read in the contents of the inputrc file, and incorporate
any bindings or variable assignments found there.
@item abort (C-g)
@@ -794,9 +1047,9 @@ Abort the current editing command and
ring the terminal's bell (subject to the setting of
@code{bell-style}).
-@item do-uppercase-version (M-a, M-b, ...)
-Run the command that is bound to the corresoponding uppercase
-character.
+@item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{})
+If the metafied character @var{x} is lowercase, run the command
+that is bound to the corresponding uppercase character.
@item prefix-meta (ESC)
Make the next character that you type be metafied. This is for people
@@ -813,13 +1066,59 @@ command enough times to get back to the beginning.
@item tilde-expand (M-~)
Perform tilde expansion on the current word.
+@item set-mark (C-@@)
+Set the mark to the current point. If a
+numeric argument is supplied, the mark is set to that position.
+
+@item exchange-point-and-mark (C-x C-x)
+Swap the point with the mark. The current cursor position is set to
+the saved position, and the old cursor position is saved as the mark.
+
+@item character-search (C-])
+A character is read and point is moved to the next occurrence of that
+character. A negative count searches for previous occurrences.
+
+@item character-search-backward (M-C-])
+A character is read and point is moved to the previous occurrence
+of that character. A negative count searches for subsequent
+occurrences.
+
+@item insert-comment (M-#)
+The value of the @code{comment-begin}
+variable is inserted at the beginning of the current line,
+and the line is accepted as if a newline had been typed.
+@ifset BashFeatures
+This makes the current line a shell comment.
+@end ifset
+
@item dump-functions ()
Print all of the functions and their key bindings to the
readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
-of an @var{inputrc} file.
+of an @var{inputrc} file. This command is unbound by default.
+
+@item dump-variables ()
+Print all of the settable variables and their values to the
+readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an @var{inputrc} file. This command is unbound by default.
+
+@item dump-macros ()
+Print all of the readline key sequences bound to macros and the
+strings they ouput. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an @var{inputrc} file. This command is unbound by default.
@ifset BashFeatures
+@item glob-expand-word (C-x *)
+The word before point is treated as a pattern for pathname expansion,
+and the list of matching file names is inserted, replacing the word.
+
+@item glob-list-expansions (C-x g)
+The list of expansions that would have been generated by
+@code{glob-expand-word}
+is inserted into the line, replacing the word before point.
+
@item display-shell-version (C-x C-v)
Display version information about the current instance of Bash.
@@ -831,6 +1130,12 @@ word expansions.
@item history-expand-line (M-^)
Perform history expansion on the current line.
+@item alias-expand-line
+Perform alias expansion on the current line (@pxref{Aliases}).
+
+@item history-and-alias-expand-line
+Perform history and alias expansion on the current line.
+
@item insert-last-argument (M-., M-_)
A synonym for @code{yank-last-arg}.
@@ -841,7 +1146,7 @@ argument is ignored.
@item emacs-editing-mode (C-e)
When in @code{vi} editing mode, this causes a switch back to
-emacs editing mode, as if the command @code{set -o emacs} had
+@code{emacs} editing mode, as if the command @samp{set -o emacs} had
been executed.
@end ifset
@@ -854,15 +1159,15 @@ been executed.
While the Readline library does not have a full set of @code{vi}
editing functions, it does contain enough to allow simple editing
of the line. The Readline @code{vi} mode behaves as specified in
-the Posix 1003.2 standard.
+the @sc{POSIX} 1003.2 standard.
@ifset BashFeatures
-In order to switch interactively between @code{Emacs} and @code{Vi}
-editing modes, use the @code{set -o emacs} and @code{set -o vi}
+In order to switch interactively between @code{emacs} and @code{vi}
+editing modes, use the @samp{set -o emacs} and @samp{set -o vi}
commands (@pxref{The Set Builtin}).
@end ifset
@ifclear BashFeatures
-In order to switch interactively between @code{Emacs} and @code{Vi}
+In order to switch interactively between @code{emacs} and @code{vi}
editing modes, use the command M-C-j (toggle-editing-mode).
@end ifclear
The Readline default is @code{emacs} mode.
@@ -871,5 +1176,5 @@ When you enter a line in @code{vi} mode, you are already placed in
`insertion' mode, as if you had typed an @samp{i}. Pressing @key{ESC}
switches you into `command' mode, where you can edit the text of the
line with the standard @code{vi} movement keys, move to previous
-history lines with @samp{k}, and following lines with @samp{j}, and
+history lines with @samp{k} and subsequent lines with @samp{j}, and
so forth.
diff --git a/doc/texi2dvi b/doc/texi2dvi
new file mode 100755
index 0000000..8fb2f90
--- /dev/null
+++ b/doc/texi2dvi
@@ -0,0 +1,275 @@
+#! /bin/sh
+# texi2dvi --- smartly produce DVI files from texinfo sources
+
+# Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+
+# $Id: texi2dvi,v 0.5 1995/06/20 02:21:36 friedman Exp $
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, you can either send email to this
+# program's maintainer or write to: The Free Software Foundation,
+# Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
+
+# Commentary:
+
+# Author: Noah Friedman <friedman@prep.ai.mit.edu>
+
+# Please send bug reports, etc. to bug-texinfo@prep.ai.mit.edu
+# If possible, please send a copy of the output of the script called with
+# the `--debug' option when making a bug report.
+
+# In the interest of general portability, some common bourne shell
+# constructs were avoided because they weren't guaranteed to be available
+# in some earlier implementations. I've tried to make this program as
+# portable as possible. Welcome to unix, where the lowest common
+# denominator is rapidly diminishing.
+#
+# Among the more interesting lossages I noticed with some bourne shells
+# are:
+# * No shell functions.
+# * No `unset' builtin.
+# * `shift' cannot take a numeric argument, and signals an error if
+# there are no arguments to shift.
+
+# Code:
+
+# Name by which this script was invoked.
+progname=`echo "$0" | sed -e 's/[^\/]*\///g'`
+
+# This string is expanded by rcs automatically when this file is checked out.
+rcs_revision='$Revision: 0.5 $'
+version=`set - $rcs_revision; echo $2`
+
+# To prevent hairy quoting and escaping later.
+bq='`'
+eq="'"
+
+usage="Usage: $progname {options} [file1] {file2 {...}}
+(version $version)
+
+Options are:
+-D, --debug Turn on shell debugging ($bq${bq}set -x$eq$eq).
+-h, --help You're looking at it.
+-v, --version Print version number.
+
+Arguments in brackets are required. Those in braces are optional.
+"
+
+# Initialize variables.
+# Don't use `unset' since old bourne shells don't have this command.
+# Instead, assign them an empty value.
+# Some of these, like TEX and TEXINDEX, may be inherited from the environment
+backup_extension=.bak
+debug=
+orig_pwd="`pwd`"
+verbose=
+texindex="${TEXINDEX-texindex}"
+tex="${TEX-tex}"
+
+# Save this so we can construct a new TEXINPUTS path for each file to be
+# processed.
+TEXINPUTS_orig="$TEXINPUTS"
+export TEXINPUTS
+
+# Parse command line arguments.
+# Make sure that all wildcarded options are long enough to be unambiguous.
+# It's a good idea to document the full long option name in each case.
+# Long options which take arguments will need a `*' appended to the
+# canonical name to match the value appended after the `=' character.
+while : ; do
+ case $# in 0) break ;; esac
+ case "$1" in
+ -D | --debug | --d* )
+ debug=t
+ shift
+ ;;
+ -h | --help | --h* )
+ echo "$usage" 1>&2
+ exit 0
+ ;;
+ -v | --version | --v* )
+ echo "texi2dvi version $version" 1>&2
+ exit 0
+ ;;
+ -- ) # Stop option processing
+ shift
+ break
+ ;;
+ -* )
+ case "$1" in
+ --*=* ) arg=`echo "$1" | sed -e 's/=.*//'` ;;
+ * ) arg="$1" ;;
+ esac
+ exec 1>&2
+ echo "$progname: unknown or ambiguous option $bq$arg$eq"
+ echo "$progname: Use $bq--help$eq for a list of options."
+ exit 1
+ ;;
+ * )
+ break
+ ;;
+ esac
+done
+
+# See if there are any command line args left (which will be interpreted as
+# filename arguments)
+case $# in
+ 0 )
+ exec 1>&2
+ echo "$progname: at least one file name is required as an argument."
+ echo "$progname: Use $bq--help$eq for a description of command syntax."
+ exit 2
+ ;;
+esac
+
+case "$debug" in t ) set -x ;; esac
+
+# Texify files
+for command_line_filename in ${1+"$@"} ; do
+ # Roughly equivalent to `dirname ...`, but more portable
+ directory="`echo ${command_line_filename} | sed 's/\/[^\/]*$//'`"
+ filename_texi="`basename ${command_line_filename}`"
+ # Strip off the last extension part (probably .texinfo or .texi)
+ filename_noext="`echo ${filename_texi} | sed 's/\.[^.]*$//'`"
+
+ # If directory and file are the same, then it's probably because there's
+ # no pathname component. Set dirname to `.', the current directory.
+ if test "z${directory}" = "z${command_line_filename}" ; then
+ directory="."
+ fi
+
+ # Source file might @include additional texinfo sources. Put `.' and
+ # directory where source file(s) reside in TEXINPUTS before anything
+ # else. `.' goes first to ensure that any old .aux, .cps, etc. files in
+ # ${directory} don't get used in preference to fresher files in `.'.
+ TEXINPUTS=".:${directory}:${TEXINPUTS_orig}"
+
+ # "Unset" variables that might have values from previous iterations and
+ # which won't be completely reset later.
+ definite_index_files=""
+
+ # See if file exists here. If it doesn't we're in trouble since, even
+ # though the user may be able to reenter a valid filename at the tex
+ # prompt (assuming they're attending the terminal), this script won't be
+ # able to find the right index files and so forth.
+ if test ! -r "${command_line_filename}" ; then
+ echo "${progname}: ${command_line_filename}: No such file or permission denied." 1>&2
+ continue;
+ fi
+
+ # Find all files having root filename with a two-letter extension,
+ # determine whether they're really index files, and save them. Foo.aux
+ # is actually the cross-references file, but we need to keep track of
+ # that too.
+ possible_index_files="`eval echo ${filename_noext}.?? ${filename_noext}.aux`"
+ for this_file in ${possible_index_files} ; do
+ # If file is empty, forget it.
+ if test ! -s "${this_file}" ; then
+ continue;
+ fi
+
+ # Examine first character of file. If it's not a backslash or
+ # single quote, then it's definitely not an index or xref file.
+ first_character="`sed -n '1s/^\(.\).*$/\1/p;q' ${this_file}`"
+ if test "${first_character}" = "\\" -o "${first_character}" = "'" ; then
+ definite_index_files="${definite_index_files} ${this_file}"
+ fi
+ done
+ orig_index_files="${definite_index_files}"
+ orig_index_files_sans_aux="`echo ${definite_index_files} \
+ | sed 's/'${filename_noext}'\.aux//;
+ s/^[ ]*//;s/[ ]*$//;'`"
+
+ # Now save copies of original index files so we have some means of
+ # comparison later.
+ for index_file_to_save in ${orig_index_files} ; do
+ cp "${index_file_to_save}" "${index_file_to_save}${backup_extension}"
+ done
+
+ # Run texindex on current index files. If they already exist, and
+ # after running TeX a first time the index files don't change, then
+ # there's no reason to run TeX again. But we won't know that if the
+ # index files are out of date or nonexistent.
+ if test "${orig_index_files_sans_aux}" ; then
+ ${texindex} ${orig_index_files_sans_aux}
+ fi
+
+ if ${tex} ${command_line_filename} ; then # TeX run first time
+ definite_index_files=""
+ # Get list of new index files
+ possible_index_files="`eval echo ${filename_noext}.?? ${filename_noext}.aux`"
+ for this_file in ${possible_index_files} ; do
+ # If file is empty, forget it.
+ if test ! -s ${this_file} ; then
+ continue;
+ fi
+
+ # Examine first character of file. If it's not a backslash or
+ # single quote, then it's definitely not an index or xref file.
+ first_character="`sed -n '1s/^\(.\).*$/\1/p;q' ${this_file}`"
+ if test "${first_character}" = "\\" -o "${first_character}" = "'" ; then
+ definite_index_files="${definite_index_files} ${this_file}"
+ fi
+ done
+ new_index_files="${definite_index_files}"
+ new_index_files_sans_aux="`echo ${definite_index_files} \
+ | sed 's/'${filename_noext}'\.aux//;
+ s/^[ ]*//;s/[ ]*$//;'`"
+
+ # If old and new list don't at least have the same file list, then one
+ # file or another has definitely changed.
+ if test "${orig_index_files}" != "${new_index_files}" ; then
+ index_files_changed_p=t
+ else
+ # File list is the same. We must compare each file until we find a
+ # difference.
+ index_files_changed_p=""
+ for this_file in ${new_index_files} ; do
+ # cmp -s will return nonzero exit status if files differ.
+ cmp -s "${this_file}" "${this_file}${backup_extension}"
+ if test $? -ne 0 ; then
+ # We only need to keep comparing until we find *one* that
+ # differs, because we'll have to run texindex & tex no
+ # matter what.
+ index_files_changed_p=t
+ break
+ fi
+ done
+ fi
+
+ # If index files have changed since TeX has been run, or if the aux
+ # file wasn't present originally, run texindex and TeX again.
+ if test "${index_files_changed_p}" ; then
+ retval=0
+ if test "${new_index_files_sans_aux}" ; then
+ ${texindex} ${new_index_files_sans_aux}
+ retval=$?
+ fi
+ if test ${retval} -eq 0 ; then
+ ${tex} "${command_line_filename}"
+ fi
+ fi
+ fi
+
+ # Generate list of files to delete, then call rm once with the entire
+ # list. This is significantly faster than multiple executions of rm.
+ file_list=""
+ for file in ${orig_index_files} ; do
+ file_list="${file_list} ${file}${backup_extension}"
+ done
+ if test "${file_list}" ; then
+ rm -f ${file_list}
+ fi
+done
+
+# texi2dvi ends here
diff --git a/doc/texi2html b/doc/texi2html
new file mode 100755
index 0000000..2c61aa9
--- /dev/null
+++ b/doc/texi2html
@@ -0,0 +1,2021 @@
+#!/usr/local/bin/perl
+'di ';
+'ig 00 ';
+#+##############################################################################
+# #
+# File: texi2html #
+# #
+# Description: Program to transform most Texinfo documents to HTML #
+# #
+#-##############################################################################
+
+# @(#)texi2html 1.51 09/10/96 Written (mainly) by Lionel Cons, Lionel.Cons@cern.ch
+
+# The man page for this program is included at the end of this file and can be
+# viewed using the command 'nroff -man texi2html'.
+# Please read the copyright at the end of the man page.
+
+#+++############################################################################
+# #
+# Constants #
+# #
+#---############################################################################
+
+$DEBUG_TOC = 1;
+$DEBUG_INDEX = 2;
+$DEBUG_BIB = 4;
+$DEBUG_GLOSS = 8;
+$DEBUG_DEF = 16;
+$DEBUG_HTML = 32;
+$DEBUG_USER = 64;
+
+$BIBRE = '\[[\w\/]+\]'; # RE for a bibliography reference
+$FILERE = '[\/\w.+-]+'; # RE for a file name
+$VARRE = '[^\s\{\}]+'; # RE for a variable name
+$NODERE = '[^@{}:\'`",]+'; # RE for a node name
+$NODESRE = '[^@{}:\'`"]+'; # RE for a list of node names
+$XREFRE = '[^@{}]+'; # RE for a xref (should use NODERE)
+
+$ERROR = "***"; # prefix for errors and warnings
+$THISPROG = "texi2html 1.51"; # program name and version
+$HOMEPAGE = "http://wwwcn.cern.ch/dci/texi2html/"; # program home page
+$TODAY = &pretty_date; # like "20 September 1993"
+$SPLITTAG = "<!-- SPLIT HERE -->\n"; # tag to know where to split
+$PROTECTTAG = "_ThisIsProtected_"; # tag to recognize protected sections
+$html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//EN">';
+
+#
+# language dependent constants
+#
+#$LDC_SEE = 'see';
+#$LDC_SECTION = 'section';
+#$LDC_IN = 'in';
+#$LDC_TOC = 'Table of Contents';
+#$LDC_GOTO = 'Go to the';
+#$LDC_FOOT = 'Footnotes';
+# TODO: @def* shortcuts
+
+#
+# pre-defined indices
+#
+%predefined_index = (
+ 'cp', 'c',
+ 'fn', 'f',
+ 'vr', 'v',
+ 'ky', 'k',
+ 'pg', 'p',
+ 'tp', 't',
+ );
+
+#
+# valid indices
+#
+%valid_index = (
+ 'c', 1,
+ 'f', 1,
+ 'v', 1,
+ 'k', 1,
+ 'p', 1,
+ 't', 1,
+ );
+
+#
+# texinfo section names to level
+#
+%sec2level = (
+ 'top', 0,
+ 'chapter', 1,
+ 'unnumbered', 1,
+ 'majorheading', 1,
+ 'chapheading', 1,
+ 'appendix', 1,
+ 'section', 2,
+ 'unnumberedsec', 2,
+ 'heading', 2,
+ 'appendixsec', 2,
+ 'appendixsection', 2,
+ 'subsection', 3,
+ 'unnumberedsubsec', 3,
+ 'subheading', 3,
+ 'appendixsubsec', 3,
+ 'subsubsection', 4,
+ 'unnumberedsubsubsec', 4,
+ 'subsubheading', 4,
+ 'appendixsubsubsec', 4,
+ );
+
+#
+# accent map, TeX command to ISO name
+#
+%accent_map = (
+ '"', 'uml',
+ '~', 'tilde',
+ '^', 'circ',
+ '`', 'grave',
+ '\'', 'acute',
+ );
+
+#
+# texinfo "simple things" (@foo) to HTML ones
+#
+%simple_map = (
+ # cf. makeinfo.c
+ "*", "<BR>", # HTML+
+ " ", " ",
+ "\n", "\n",
+ "|", "",
+ # spacing commands
+ ":", "",
+ "!", "!",
+ "?", "?",
+ ".", ".",
+ );
+
+#
+# texinfo "things" (@foo{}) to HTML ones
+#
+%things_map = (
+ 'TeX', 'TeX',
+ 'br', '<P>', # paragraph break
+ 'bullet', '*',
+ 'copyright', '(C)',
+ 'dots', '...',
+ 'equiv', '==',
+ 'error', 'error-->',
+ 'expansion', '==>',
+ 'minus', '-',
+ 'point', '-!-',
+ 'print', '-|',
+ 'result', '=>',
+ 'today', $TODAY,
+ );
+
+#
+# texinfo styles (@foo{bar}) to HTML ones
+#
+%style_map = (
+ 'asis', '',
+ 'b', 'B',
+ 'cite', 'CITE',
+ 'code', 'CODE',
+ 'ctrl', '&do_ctrl', # special case
+ 'dfn', 'STRONG', # DFN tag is illegal in the standard
+ 'dmn', '', # useless
+ 'emph', 'EM',
+ 'file', '"TT', # will put quotes, cf. &apply_style
+ 'i', 'I',
+ 'kbd', 'KBD',
+ 'key', 'KBD',
+ 'r', '', # unsupported
+ 'samp', '"SAMP', # will put quotes, cf. &apply_style
+ 'sc', '&do_sc', # special case
+ 'strong', 'STRONG',
+ 't', 'TT',
+ 'titlefont', '', # useless
+ 'var', 'VAR',
+ 'w', '', # unsupported
+ );
+
+#
+# texinfo format (@foo/@end foo) to HTML ones
+#
+%format_map = (
+ 'display', 'PRE',
+ 'example', 'PRE',
+ 'format', 'PRE',
+ 'lisp', 'PRE',
+ 'quotation', 'BLOCKQUOTE',
+ 'smallexample', 'PRE',
+ 'smalllisp', 'PRE',
+ # lists
+ 'itemize', 'UL',
+ 'enumerate', 'OL',
+ # poorly supported
+ 'flushleft', 'PRE',
+ 'flushright', 'PRE',
+ );
+
+#
+# texinfo definition shortcuts to real ones
+#
+%def_map = (
+ # basic commands
+ 'deffn', 0,
+ 'defvr', 0,
+ 'deftypefn', 0,
+ 'deftypevr', 0,
+ 'defcv', 0,
+ 'defop', 0,
+ 'deftp', 0,
+ # basic x commands
+ 'deffnx', 0,
+ 'defvrx', 0,
+ 'deftypefnx', 0,
+ 'deftypevrx', 0,
+ 'defcvx', 0,
+ 'defopx', 0,
+ 'deftpx', 0,
+ # shortcuts
+ 'defun', 'deffn Function',
+ 'defmac', 'deffn Macro',
+ 'defspec', 'deffn {Special Form}',
+ 'defvar', 'defvr Variable',
+ 'defopt', 'defvr {User Option}',
+ 'deftypefun', 'deftypefn Function',
+ 'deftypevar', 'deftypevr Variable',
+ 'defivar', 'defcv {Instance Variable}',
+ 'defmethod', 'defop Method',
+ # x shortcuts
+ 'defunx', 'deffnx Function',
+ 'defmacx', 'deffnx Macro',
+ 'defspecx', 'deffnx {Special Form}',
+ 'defvarx', 'defvrx Variable',
+ 'defoptx', 'defvrx {User Option}',
+ 'deftypefunx', 'deftypefnx Function',
+ 'deftypevarx', 'deftypevrx Variable',
+ 'defivarx', 'defcvx {Instance Variable}',
+ 'defmethodx', 'defopx Method',
+ );
+
+#
+# things to skip
+#
+%to_skip = (
+ # comments
+ 'c', 1,
+ 'comment', 1,
+ # useless
+ 'contents', 1,
+ 'shortcontents', 1,
+ 'summarycontents', 1,
+ 'footnotestyle', 1,
+ 'end ifclear', 1,
+ 'end ifset', 1,
+ 'titlepage', 1,
+ 'end titlepage', 1,
+ # unsupported commands (formatting)
+ 'afourpaper', 1,
+ 'cropmarks', 1,
+ 'finalout', 1,
+ 'headings', 1,
+ 'need', 1,
+ 'page', 1,
+ 'setchapternewpage', 1,
+ 'everyheading', 1,
+ 'everyfooting', 1,
+ 'evenheading', 1,
+ 'evenfooting', 1,
+ 'oddheading', 1,
+ 'oddfooting', 1,
+ 'smallbook', 1,
+ 'vskip', 1,
+ 'filbreak', 1,
+ # unsupported formats
+ 'cartouche', 1,
+ 'end cartouche', 1,
+ 'group', 1,
+ 'end group', 1,
+ );
+
+#+++############################################################################
+# #
+# Argument parsing, initialisation #
+# #
+#---############################################################################
+
+$use_bibliography = 1;
+$use_acc = 0;
+$debug = 0;
+$doctype = '';
+$check = 0;
+$expandinfo = 0;
+$use_glossary = 0;
+$invisible_mark = '';
+$use_iso = 0;
+@include_dirs = ();
+$show_menu = 0;
+$number_sections = 0;
+$split_node = 0;
+$split_chapter = 0;
+$monolithic = 0;
+$verbose = 0;
+$usage = <<EOT;
+This is $THISPROG
+To convert a Texinfo file to HMTL: $0 [options] file
+ where options can be:
+ -expandinfo : use \@ifinfo sections, not \@iftex
+ -glossary : handle a glossary
+ -invisible name: use 'name' as an invisible anchor
+ -I dir : search also for files in 'dir'
+ -menu : handle menus
+ -monolithic : output only one file including ToC
+ -number : number sections
+ -split_chapter : split on main sections
+ -split_node : split on nodes
+ -usage : print usage instructions
+ -verbose : verbose output
+To check converted files: $0 -check [-verbose] files
+EOT
+
+while ($#ARGV >= 0 && $ARGV[0] =~ /^-/) {
+ $_ = shift(@ARGV);
+ if (/^-acc$/) { $use_acc = 1; next; }
+ if (/^-d(ebug)?(\d+)?$/) { $debug = $2 || shift(@ARGV); next; }
+ if (/^-doctype$/) { $doctype = shift(@ARGV); next; }
+ if (/^-c(heck)?$/) { $check = 1; next; }
+ if (/^-e(xpandinfo)?$/) { $expandinfo = 1; next; }
+ if (/^-g(lossary)?$/) { $use_glossary = 1; next; }
+ if (/^-i(nvisible)?$/) { $invisible_mark = shift(@ARGV); next; }
+ if (/^-iso$/) { $use_iso = 1; next; }
+ if (/^-I(.+)?$/) { push(@include_dirs, $1 || shift(@ARGV)); next; }
+ if (/^-m(enu)?$/) { $show_menu = 1; next; }
+ if (/^-mono(lithic)?$/) { $monolithic = 1; next; }
+ if (/^-n(umber)?$/) { $number_sections = 1; next; }
+ if (/^-s(plit)?_?(n(ode)?|c(hapter)?)?$/) {
+ if ($2 =~ /^n/) {
+ $split_node = 1;
+ } else {
+ $split_chapter = 1;
+ }
+ next;
+ }
+ if (/^-v(erbose)?$/) { $verbose = 1; next; }
+ die $usage;
+}
+if ($check) {
+ die $usage unless @ARGV > 0;
+ &check;
+ exit;
+}
+
+if (($split_node || $split_chapter) && $monolithic) {
+ warn "Can't use -monolithic with -split, -monolithic ignored.\n";
+ $monolithic = 0;
+}
+if ($expandinfo) {
+ $to_skip{'ifinfo'}++;
+ $to_skip{'end ifinfo'}++;
+} else {
+ $to_skip{'iftex'}++;
+ $to_skip{'end iftex'}++;
+}
+$invisible_mark = '<IMG SRC="invisible.xbm">' if $invisible_mark eq 'xbm';
+die $usage unless @ARGV == 1;
+$docu = shift(@ARGV);
+if ($docu =~ /.*\//) {
+ chop($docu_dir = $&);
+ $docu_name = $';
+} else {
+ $docu_dir = '.';
+ $docu_name = $docu;
+}
+unshift(@include_dirs, $docu_dir);
+$docu_name =~ s/\.te?x(i|info)?$//; # basename of the document
+
+$docu_doc = "$docu_name.html"; # document's contents
+if ($monolithic) {
+ $docu_toc = $docu_foot = $docu_doc;
+} else {
+ $docu_toc = "${docu_name}_toc.html"; # document's table of contents
+ $docu_foot = "${docu_name}_foot.html"; # document's footnotes
+}
+
+#
+# variables
+#
+%value = (); # hold texinfo variables
+$value{'html'} = 1; # predefine html (the output format)
+$value{'texi2html'} = '1.51'; # predefine texi2html (the translator)
+# _foo: internal to track @foo
+foreach ('_author', '_title', '_subtitle',
+ '_settitle', '_setfilename') {
+ $value{$_} = ''; # prevent -w warnings
+}
+%node2sec = (); # node to section name
+%node2href = (); # node to HREF
+%bib2href = (); # bibliography reference to HREF
+%gloss2href = (); # glossary term to HREF
+@sections = (); # list of sections
+%tag2pro = (); # protected sections
+
+#
+# initial indexes
+#
+$bib_num = 0;
+$foot_num = 0;
+$gloss_num = 0;
+$idx_num = 0;
+$sec_num = 0;
+$doc_num = 0;
+$html_num = 0;
+
+#
+# can I use ISO8879 characters? (HTML+)
+#
+if ($use_iso) {
+ $things_map{'bullet'} = "&bull;";
+ $things_map{'copyright'} = "&copy;";
+ $things_map{'dots'} = "&hellip;";
+ $things_map{'equiv'} = "&equiv;";
+ $things_map{'expansion'} = "&rarr;";
+ $things_map{'point'} = "&lowast;";
+ $things_map{'result'} = "&rArr;";
+}
+
+#
+# read texi2html extensions (if any)
+#
+$extensions = 'texi2html.ext'; # extensions in working directory
+if (-f $extensions) {
+ print "# reading extensions from $extensions\n" if $verbose;
+ require($extensions);
+}
+($progdir = $0) =~ s/[^\/]+$//;
+if ($progdir && ($progdir ne './')) {
+ $extensions = "${progdir}texi2html.ext"; # extensions in texi2html directory
+ if (-f $extensions) {
+ print "# reading extensions from $extensions\n" if $verbose;
+ require($extensions);
+ }
+}
+
+print "# reading from $docu\n" if $verbose;
+
+#+++############################################################################
+# #
+# Pass 1: read source, handle command, variable, simple substitution #
+# #
+#---############################################################################
+
+@lines = (); # whole document
+@toc_lines = (); # table of contents
+$toplevel = 0; # top level seen in hierarchy
+$curlevel = 0; # current level in TOC
+$node = ''; # current node name
+$in_table = 0; # am I inside a table
+$table_type = ''; # type of table ('', 'f', 'v')
+@tables = (); # nested table support
+$in_bibliography = 0; # am I inside a bibliography
+$in_glossary = 0; # am I inside a glossary
+$in_top = 0; # am I inside the top node
+$in_pre = 0; # am I inside a preformatted section
+$in_list = 0; # am I inside a list
+$in_html = 0; # am I inside an HTML section
+$first_line = 1; # is it the first line
+$dont_html = 0; # don't protect HTML on this line
+$split_num = 0; # split index
+$deferred_ref = ''; # deferred reference for indexes
+@html_stack = (); # HTML elements stack
+$html_element = ''; # current HTML element
+&html_reset;
+
+# build code for simple substitutions
+# the maps used (%simple_map and %things_map) MUST be aware of this
+# watch out for regexps, / and escaped characters!
+$subst_code = '';
+foreach (keys(%simple_map)) {
+ ($re = $_) =~ s/(\W)/\\$1/g; # protect regexp chars
+ $subst_code .= "s/\\\@$re/$simple_map{$_}/g;\n";
+}
+foreach (keys(%things_map)) {
+ $subst_code .= "s/\\\@$_\\{\\}/$things_map{$_}/g;\n";
+}
+if ($use_acc) {
+ # accentuated characters
+ foreach (keys(%accent_map)) {
+ if ($_ eq "`") {
+ $subst_code .= "s/$;3";
+ } elsif ($_ eq "'") {
+ $subst_code .= "s/$;4";
+ } else {
+ $subst_code .= "s/\\\@\\$_";
+ }
+ $subst_code .= "([aeiou])/&\${1}$accent_map{$_};/gi;\n";
+ }
+}
+eval("sub simple_substitutions { $subst_code }");
+
+&init_input;
+while ($_ = &next_line) {
+ #
+ # remove \input on the first lines only
+ #
+ if ($first_line) {
+ next if /^\\input/;
+ $first_line = 0;
+ }
+ #
+ # parse texinfo tags
+ #
+ $tag = '';
+ $end_tag = '';
+ if (/^\@end\s+(\w+)\b/) {
+ $end_tag = $1;
+ } elsif (/^\@(\w+)\b/) {
+ $tag = $1;
+ }
+ #
+ # handle @ifhtml / @end ifhtml
+ #
+ if ($in_html) {
+ if ($end_tag eq 'ifhtml') {
+ $in_html = 0;
+ } else {
+ $tag2pro{$in_html} .= $_;
+ }
+ next;
+ } elsif ($tag eq 'ifhtml') {
+ $in_html = $PROTECTTAG . ++$html_num;
+ push(@lines, $in_html);
+ next;
+ }
+ #
+ # try to skip the line
+ #
+ if ($end_tag) {
+ next if $to_skip{"end $end_tag"};
+ } elsif ($tag) {
+ next if $to_skip{$tag};
+ last if $tag eq 'bye';
+ }
+ if ($in_top) {
+ # parsing the top node
+ if ($tag eq 'node' || $tag eq 'include' || $sec2level{$tag}) {
+ # no more in top
+ $in_top = 0;
+ } else {
+ # skip it
+ next;
+ }
+ }
+ #
+ # try to remove inlined comments
+ # syntax from tex-mode.el comment-start-skip
+ #
+ s/((^|[^\@])(\@\@)*)\@c(omment)? .*/$1/;
+ # non-@ substitutions cf. texinfmt.el
+ s/``/\"/g;
+ s/''/\"/g;
+ s/([\w ])---([\w ])/$1--$2/g;
+ #
+ # analyze the tag
+ #
+ if ($tag) {
+ # skip lines
+ &skip_until($tag), next if $tag eq 'ignore';
+ if ($expandinfo) {
+ &skip_until($tag), next if $tag eq 'iftex';
+ } else {
+ &skip_until($tag), next if $tag eq 'ifinfo';
+ }
+ &skip_until($tag), next if $tag eq 'tex';
+ # handle special tables
+ if ($tag eq 'table') {
+ $table_type = '';
+ } elsif ($tag eq 'ftable') {
+ $tag = 'table';
+ $table_type = 'f';
+ } elsif ($tag eq 'vtable') {
+ $tag = 'table';
+ $table_type = 'v';
+ }
+ # special cases
+ if ($tag eq 'top' || ($tag eq 'node' && /^\@node\s+top\s*,/i)) {
+ $in_top = 1;
+ @lines = (); # ignore all lines before top (title page garbage)
+ next;
+ } elsif ($tag eq 'node') {
+ $in_top = 0;
+ warn "$ERROR Bad node line: $_" unless $_ =~ /^\@node\s$NODESRE$/o;
+ $_ = &protect_html($_); # if node contains '&' for instance
+ s/^\@node\s+//;
+ ($node) = split(/,/);
+ &normalise_node($node);
+ if ($split_node) {
+ &next_doc;
+ push(@lines, $SPLITTAG) if $split_num++;
+ push(@sections, $node);
+ }
+ next;
+ } elsif ($tag eq 'include') {
+ if (/^\@include\s+($FILERE)\s*$/o) {
+ $file = $1;
+ unless (-e $file) {
+ foreach $dir (@include_dirs) {
+ $file = "$dir/$1";
+ last if -e $file;
+ }
+ }
+ if (-e $file) {
+ &open($file);
+ print "# including $file\n" if $verbose;
+ } else {
+ warn "$ERROR Can't find $file, skipping";
+ }
+ } else {
+ warn "$ERROR Bad include line: $_";
+ }
+ next;
+ } elsif ($tag eq 'ifclear') {
+ if (/^\@ifclear\s+($VARRE)\s*$/o) {
+ next unless defined($value{$1});
+ &skip_until($tag);
+ } else {
+ warn "$ERROR Bad ifclear line: $_";
+ }
+ next;
+ } elsif ($tag eq 'ifset') {
+ if (/^\@ifset\s+($VARRE)\s*$/o) {
+ next if defined($value{$1});
+ &skip_until($tag);
+ } else {
+ warn "$ERROR Bad ifset line: $_";
+ }
+ next;
+ } elsif ($tag eq 'menu') {
+ unless ($show_menu) {
+ &skip_until($tag);
+ next;
+ }
+ &html_push_if($tag);
+ push(@lines, &html_debug("\n", __LINE__));
+ } elsif ($format_map{$tag}) {
+ $in_pre = 1 if $format_map{$tag} eq 'PRE';
+ &html_push_if($format_map{$tag});
+ push(@lines, &html_debug("\n", __LINE__));
+ $in_list++ if $format_map{$tag} eq 'UL' || $format_map{$tag} eq 'OL' ;
+ push(@lines, &debug("<$format_map{$tag}>\n", __LINE__));
+ next;
+ } elsif ($tag eq 'table') {
+ if (/^\@[fv]?table\s+\@(\w+)\s*$/) {
+ $in_table = $1;
+ unshift(@tables, join($;, $table_type, $in_table));
+ push(@lines, &debug("<DL COMPACT>\n", __LINE__));
+ &html_push_if('DL');
+ push(@lines, &html_debug("\n", __LINE__));
+ } else {
+ warn "$ERROR Bad table line: $_";
+ }
+ next;
+ } elsif ($tag eq 'synindex' || $tag eq 'syncodeindex') {
+ if (/^\@$tag\s+(\w)\w\s+(\w)\w\s*$/) {
+ eval("*${1}index = *${2}index");
+ } else {
+ warn "$ERROR Bad syn*index line: $_";
+ }
+ next;
+ } elsif ($tag eq 'sp') {
+ push(@lines, &debug("<P>\n", __LINE__));
+ next;
+ } elsif ($tag eq 'setref') {
+ &protect_html; # if setref contains '&' for instance
+ if (/^\@$tag\s*{($NODERE)}\s*$/) {
+ $setref = $1;
+ $setref =~ s/\s+/ /g; # normalize
+ $setref =~ s/ $//;
+ $node2sec{$setref} = $name;
+ $node2href{$setref} = "$docu_doc#$docid";
+ } else {
+ warn "$ERROR Bad setref line: $_";
+ }
+ next;
+ } elsif ($tag eq 'defindex' || $tag eq 'defcodeindex') {
+ if (/^\@$tag\s+(\w\w)\s*$/) {
+ $valid_index{$1} = 1;
+ } else {
+ warn "$ERROR Bad defindex line: $_";
+ }
+ next;
+ } elsif (defined($def_map{$tag})) {
+ if ($def_map{$tag}) {
+ s/^\@$tag\s+//;
+ $tag = $def_map{$tag};
+ $_ = "\@$tag $_";
+ $tag =~ s/\s.*//;
+ }
+ } elsif (defined($user_sub{$tag})) {
+ s/^\@$tag\s+//;
+ $sub = $user_sub{$tag};
+ print "# user $tag = $sub, arg: $_" if $debug & $DEBUG_USER;
+ if (defined(&$sub)) {
+ chop($_);
+ &$sub($_);
+ } else {
+ warn "$ERROR Bad user sub for $tag: $sub\n";
+ }
+ next;
+ }
+ if (defined($def_map{$tag})) {
+ s/^\@$tag\s+//;
+ if ($tag =~ /x$/) {
+ # extra definition line
+ $tag = $`;
+ $is_extra = 1;
+ } else {
+ $is_extra = 0;
+ }
+ while (/\{([^\{\}]*)\}/) {
+ # this is a {} construct
+ ($before, $contents, $after) = ($`, $1, $');
+ # protect spaces
+ $contents =~ s/\s+/$;9/g;
+ # restore $_ protecting {}
+ $_ = "$before$;7$contents$;8$after";
+ }
+ @args = split(/\s+/, &protect_html($_));
+ foreach (@args) {
+ s/$;9/ /g; # unprotect spaces
+ s/$;7/\{/g; # ... {
+ s/$;8/\}/g; # ... }
+ }
+ $type = shift(@args);
+ $type =~ s/^\{(.*)\}$/$1/;
+ print "# def ($tag): {$type} ", join(', ', @args), "\n"
+ if $debug & $DEBUG_DEF;
+ $type .= ':'; # it's nicer like this
+ $name = shift(@args);
+ $name =~ s/^\{(.*)\}$/$1/;
+ if ($is_extra) {
+ $_ = &debug("<DT>", __LINE__);
+ } else {
+ $_ = &debug("<DL>\n<DT>", __LINE__);
+ }
+ if ($tag eq 'deffn' || $tag eq 'defvr' || $tag eq 'deftp') {
+ $_ .= "<U>$type</U> <B>$name</B>";
+ $_ .= " <I>@args</I>" if @args;
+ } elsif ($tag eq 'deftypefn' || $tag eq 'deftypevr'
+ || $tag eq 'defcv' || $tag eq 'defop') {
+ $ftype = $name;
+ $name = shift(@args);
+ $name =~ s/^\{(.*)\}$/$1/;
+ $_ .= "<U>$type</U> $ftype <B>$name</B>";
+ $_ .= " <I>@args</I>" if @args;
+ } else {
+ warn "$ERROR Unknown definition type: $tag\n";
+ $_ .= "<U>$type</U> <B>$name</B>";
+ $_ .= " <I>@args</I>" if @args;
+ }
+ $_ .= &debug("\n<DD>", __LINE__);
+ $name = &unprotect_html($name);
+ if ($tag eq 'deffn' || $tag eq 'deftypefn') {
+ unshift(@input_spool, "\@findex $name\n");
+ } elsif ($tag eq 'defop') {
+ unshift(@input_spool, "\@findex $name on $ftype\n");
+ } elsif ($tag eq 'defvr' || $tag eq 'deftypevr' || $tag eq 'defcv') {
+ unshift(@input_spool, "\@vindex $name\n");
+ } else {
+ unshift(@input_spool, "\@tindex $name\n");
+ }
+ $dont_html = 1;
+ }
+ } elsif ($end_tag) {
+ if ($format_map{$end_tag}) {
+ $in_pre = 0 if $format_map{$end_tag} eq 'PRE';
+ $in_list-- if $format_map{$end_tag} eq 'UL' || $format_map{$end_tag} eq 'OL' ;
+ &html_pop_if('LI', 'P');
+ &html_pop_if();
+ push(@lines, &debug("</$format_map{$end_tag}>\n", __LINE__));
+ push(@lines, &html_debug("\n", __LINE__));
+ } elsif ($end_tag eq 'table' ||
+ $end_tag eq 'ftable' ||
+ $end_tag eq 'vtable') {
+ shift(@tables);
+ if (@tables) {
+ ($table_type, $in_table) = split($;, $tables[0]);
+ } else {
+ $in_table = 0;
+ }
+ push(@lines, "</DL>\n");
+ &html_pop_if('DD');
+ &html_pop_if();
+ } elsif (defined($def_map{$end_tag})) {
+ push(@lines, &debug("</DL>\n", __LINE__));
+ } elsif ($end_tag eq 'menu') {
+ &html_pop_if();
+ push(@lines, $_); # must keep it for pass 2
+ }
+ next;
+ }
+ #
+ # misc things
+ #
+ # protect texi and HTML things
+ &protect_texi;
+ $_ = &protect_html($_) unless $dont_html;
+ $dont_html = 0;
+ # substitution (unsupported things)
+ s/^\@center\s+//g;
+ s/^\@exdent\s+//g;
+ s/\@noindent\s+//g;
+ s/\@refill\s+//g;
+ # other substitutions
+ &simple_substitutions;
+ s/\@value{($VARRE)}/$value{$1}/eg;
+ s/\@footnote\{/\@footnote$docu_doc\{/g; # mark footnotes, cf. pass 4
+ #
+ # analyze the tag again
+ #
+ if ($tag) {
+ if (defined($sec2level{$tag}) && $sec2level{$tag} > 0) {
+ if (/^\@$tag\s+(.+)$/) {
+ $name = $1;
+ $name =~ s/\s+$//;
+ $level = $sec2level{$tag};
+ $name = &update_sec_num($tag, $level) . " $name"
+ if $number_sections && $tag !~ /^unnumbered/;
+ if ($tag =~ /heading$/) {
+ push(@lines, &html_debug("\n", __LINE__));
+ if ($html_element ne 'body') {
+ # We are in a nice pickle here. We are trying to get a H? heading
+ # even though we are not in the body level. So, we convert it to a
+ # nice, bold, line by itself.
+ $_ = &debug("\n\n<P><STRONG>$name</STRONG></P>\n\n", __LINE__);
+ } else {
+ $_ = &debug("<H$level>$name</H$level>\n", __LINE__);
+ &html_push_if('body');
+ }
+ print "# heading, section $name, level $level\n"
+ if $debug & $DEBUG_TOC;
+ } else {
+ if ($split_chapter) {
+ unless ($toplevel) {
+ # first time we see a "section"
+ unless ($level == 1) {
+ warn "$ERROR The first section found is not of level 1: $_";
+ warn "$ERROR I'll split on sections of level $level...\n";
+ }
+ $toplevel = $level;
+ }
+ if ($level == $toplevel) {
+ &next_doc;
+ push(@lines, $SPLITTAG) if $split_num++;
+ push(@sections, $name);
+ }
+ }
+ $sec_num++;
+ $docid = "SEC$sec_num";
+ $tocid = "TOC$sec_num";
+ # check biblio and glossary
+ $in_bibliography = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*bibliography$/i);
+ $in_glossary = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*glossary$/i);
+ # check node
+ if ($node) {
+ if ($node2sec{$node}) {
+ warn "$ERROR Duplicate node found: $node\n";
+ } else {
+ $node2sec{$node} = $name;
+ $node2href{$node} = "$docu_doc#$docid";
+ print "# node $node, section $name, level $level\n"
+ if $debug & $DEBUG_TOC;
+ }
+ $node = '';
+ } else {
+ print "# no node, section $name, level $level\n"
+ if $debug & $DEBUG_TOC;
+ }
+ # update TOC
+ while ($level > $curlevel) {
+ $curlevel++;
+ push(@toc_lines, "<UL>\n");
+ }
+ while ($level < $curlevel) {
+ $curlevel--;
+ push(@toc_lines, "</UL>\n");
+ }
+ $_ = "<LI>" . &anchor($tocid, "$docu_doc#$docid", $name, 1);
+ push(@toc_lines, &substitute_style($_));
+ # update DOC
+ push(@lines, &html_debug("\n", __LINE__));
+ &html_reset;
+ $_ = "<H$level>".&anchor($docid, "$docu_toc#$tocid", $name)."</H$level>\n";
+ $_ = &debug($_, __LINE__);
+ push(@lines, &html_debug("\n", __LINE__));
+ }
+ # update DOC
+ foreach $line (split(/\n+/, $_)) {
+ push(@lines, "$line\n");
+ }
+ next;
+ } else {
+ warn "$ERROR Bad section line: $_";
+ }
+ } else {
+ # track variables
+ $value{$1} = $2, next if /^\@set\s+($VARRE)\s+(.*)$/o;
+ delete $value{$1}, next if /^\@clear\s+($VARRE)\s*$/o;
+ # store things
+ $value{'_setfilename'} = $1, next if /^\@setfilename\s+(.*)$/;
+ $value{'_settitle'} = $1, next if /^\@settitle\s+(.*)$/;
+ $value{'_author'} .= "$1\n", next if /^\@author\s+(.*)$/;
+ $value{'_subtitle'} .= "$1\n", next if /^\@subtitle\s+(.*)$/;
+ $value{'_title'} .= "$1\n", next if /^\@title\s+(.*)$/;
+ # index
+ if (/^\@(..?)index\s+/) {
+ unless ($valid_index{$1}) {
+ warn "$ERROR Undefined index command: $_";
+ next;
+ }
+ $id = 'IDX' . ++$idx_num;
+ $index = $1 . 'index';
+ $what = &substitute_style($');
+ $what =~ s/\s+$//;
+ print "# found $index for '$what' id $id\n"
+ if $debug & $DEBUG_INDEX;
+ eval(<<EOC);
+ if (defined(\$$index\{\$what\})) {
+ \$$index\{\$what\} .= "$;$docu_doc#$id";
+ } else {
+ \$$index\{\$what\} = "$docu_doc#$id";
+ }
+EOC
+ #
+ # dirty hack to see if I can put an invisible anchor...
+ #
+ if ($html_element eq 'P' ||
+ $html_element eq 'LI' ||
+ $html_element eq 'DT' ||
+ $html_element eq 'DD' ||
+ $html_element eq 'ADDRESS' ||
+ $html_element eq 'B' ||
+ $html_element eq 'BLOCKQUOTE' ||
+ $html_element eq 'PRE' ||
+ $html_element eq 'SAMP') {
+ push(@lines, &anchor($id, '', $invisible_mark, !$in_pre));
+ } elsif ($html_element eq 'body') {
+ push(@lines, &debug("<P>\n", __LINE__));
+ push(@lines, &anchor($id, '', $invisible_mark, !$in_pre));
+ &html_push('P');
+ } elsif ($html_element eq 'DL' ||
+ $html_element eq 'UL' ||
+ $html_element eq 'OL' ) {
+ $deferred_ref .= &anchor($id, '', $invisible_mark, !$in_pre) . " ";
+ }
+ next;
+ }
+ # list item
+ if (/^\@itemx?\s+/) {
+ $what = $';
+ $what =~ s/\s+$//;
+ if ($in_bibliography && $use_bibliography) {
+ if ($what =~ /^$BIBRE$/o) {
+ $id = 'BIB' . ++$bib_num;
+ $bib2href{$what} = "$docu_doc#$id";
+ print "# found bibliography for '$what' id $id\n"
+ if $debug & $DEBUG_BIB;
+ $what = &anchor($id, '', $what);
+ }
+ } elsif ($in_glossary && $use_glossary) {
+ $id = 'GLOSS' . ++$gloss_num;
+ $entry = $what;
+ $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
+ $gloss2href{$entry} = "$docu_doc#$id";
+ print "# found glossary for '$entry' id $id\n"
+ if $debug & $DEBUG_GLOSS;
+ $what = &anchor($id, '', $what);
+ }
+ &html_pop_if('P');
+ if ($html_element eq 'DL' || $html_element eq 'DD') {
+ if ($things_map{$in_table} && !$what) {
+ # special case to allow @table @bullet for instance
+ push(@lines, &debug("<DT>$things_map{$in_table}\n", __LINE__));
+ } else {
+ push(@lines, &debug("<DT>\@$in_table\{$what\}\n", __LINE__));
+ }
+ push(@lines, "<DD>");
+ &html_push('DD') unless $html_element eq 'DD';
+ if ($table_type) { # add also an index
+ unshift(@input_spool, "\@${table_type}index $what\n");
+ }
+ } else {
+ push(@lines, &debug("<LI>$what\n", __LINE__));
+ &html_push('LI') unless $html_element eq 'LI';
+ }
+ push(@lines, &html_debug("\n", __LINE__));
+ if ($deferred_ref) {
+ push(@lines, &debug("$deferred_ref\n", __LINE__));
+ $deferred_ref = '';
+ }
+ next;
+ }
+ }
+ }
+ # paragraph separator
+ if ($_ eq "\n") {
+ next if $#lines >= 0 && $lines[$#lines] eq "\n";
+ if ($html_element eq 'P') {
+ push(@lines, "\n");
+ $_ = &debug("</P>\n", __LINE__);
+ &html_pop;
+ }
+ } elsif ($html_element eq 'body' || $html_element eq 'BLOCKQUOTE') {
+ push(@lines, "<P>\n");
+ &html_push('P');
+ $_ = &debug($_, __LINE__);
+ }
+ # otherwise
+ push(@lines, $_);
+}
+
+# finish TOC
+$level = 0;
+while ($level < $curlevel) {
+ $curlevel--;
+ push(@toc_lines, "</UL>\n");
+}
+
+print "# end of pass 1\n" if $verbose;
+
+#+++############################################################################
+# #
+# Pass 2/3: handle style, menu, index, cross-reference #
+# #
+#---############################################################################
+
+@lines2 = (); # whole document (2nd pass)
+@lines3 = (); # whole document (3rd pass)
+$in_menu = 0; # am I inside a menu
+
+while (@lines) {
+ $_ = shift(@lines);
+ #
+ # special case (protected sections)
+ #
+ if (/^$PROTECTTAG/o) {
+ push(@lines2, $_);
+ next;
+ }
+ #
+ # menu
+ #
+ $in_menu = 1, push(@lines2, &debug("<UL>\n", __LINE__)), next if /^\@menu\b/;
+ $in_menu = 0, push(@lines2, &debug("</UL>\n", __LINE__)), next if /^\@end\s+menu\b/;
+ if ($in_menu) {
+ if (/^\*\s+($NODERE)::/o) {
+ $descr = $';
+ chop($descr);
+ &menu_entry($1, $1, $descr);
+ } elsif (/^\*\s+(.+):\s+([^\t,\.\n]+)[\t,\.\n]/) {
+ $descr = $';
+ chop($descr);
+ &menu_entry($1, $2, $descr);
+ } elsif (/^\*/) {
+ warn "$ERROR Bad menu line: $_";
+ } else { # description continued?
+ push(@lines2, $_);
+ }
+ next;
+ }
+ #
+ # printindex
+ #
+ if (/^\@printindex\s+(\w\w)\b/) {
+ local($index, *ary, @keys, $key, $letter, $last_letter, @refs);
+ if ($predefined_index{$1}) {
+ $index = $predefined_index{$1} . 'index';
+ } else {
+ $index = $1 . 'index';
+ }
+ eval("*ary = *$index");
+ @keys = keys(%ary);
+ foreach $key (@keys) {
+ $_ = $key;
+ 1 while s/<(\w+)>\`(.*)\'<\/\1>/$2/; # remove HTML tags with quotes
+ 1 while s/<(\w+)>(.*)<\/\1>/$2/; # remove HTML tags
+ $_ = &unprotect_html($_);
+ &unprotect_texi;
+ tr/A-Z/a-z/; # lowercase
+ $key2alpha{$key} = $_;
+ print "# index $key sorted as $_\n"
+ if $key ne $_ && $debug & $DEBUG_INDEX;
+ }
+ $last_letter = undef;
+ foreach $key (sort byalpha @keys) {
+ $letter = substr($key2alpha{$key}, 0, 1);
+ $letter = substr($key2alpha{$key}, 0, 2) if $letter eq $;;
+ if (!defined($last_letter) || $letter ne $last_letter) {
+ push(@lines2, "</DIR>\n") if defined($last_letter);
+ push(@lines2, "<H2>" . &protect_html($letter) . "</H2>\n");
+ push(@lines2, "<DIR>\n");
+ $last_letter = $letter;
+ }
+ @refs = ();
+ foreach (split(/$;/, $ary{$key})) {
+ push(@refs, &anchor('', $_, $key, 0));
+ }
+ push(@lines2, "<LI>" . join(", ", @refs) . "\n");
+ }
+ push(@lines2, "</DIR>\n") if defined($last_letter);
+ next;
+ }
+ #
+ # simple style substitutions
+ #
+ $_ = &substitute_style($_);
+ #
+ # xref
+ #
+ while (/\@(x|px|info|)ref{($XREFRE)(}?)/o) {
+ # note: Texinfo may accept other characters
+ ($type, $nodes, $full) = ($1, $2, $3);
+ ($before, $after) = ($`, $');
+ if (! $full && $after) {
+ warn "$ERROR Bad xref (no ending } on line): $_";
+ $_ = "$before$;0${type}ref\{$nodes$after";
+ next; # while xref
+ }
+ if ($type eq 'x') {
+ $type = 'See ';
+ } elsif ($type eq 'px') {
+ $type = 'see ';
+ } elsif ($type eq 'info') {
+ $type = 'See Info';
+ } else {
+ $type = '';
+ }
+ unless ($full) {
+ $next = shift(@lines);
+ $next = &substitute_style($next);
+ chop($nodes); # remove final newline
+ if ($next =~ /\}/) { # split on 2 lines
+ $nodes .= " $`";
+ $after = $';
+ } else {
+ $nodes .= " $next";
+ $next = shift(@lines);
+ $next = &substitute_style($next);
+ chop($nodes);
+ if ($next =~ /\}/) { # split on 3 lines
+ $nodes .= " $`";
+ $after = $';
+ } else {
+ warn "$ERROR Bad xref (no ending }): $_";
+ $_ = "$before$;0xref\{$nodes$after";
+ unshift(@lines, $next);
+ next; # while xref
+ }
+ }
+ }
+ $nodes =~ s/\s+/ /g; # remove useless spaces
+ @args = split(/\s*,\s*/, $nodes);
+ $node = $args[0]; # the node is always the first arg
+ &normalise_node($node);
+ $sec = $node2sec{$node};
+ if (@args == 5) { # reference to another manual
+ $sec = $args[2] || $node;
+ $man = $args[4] || $args[3];
+ $_ = "${before}${type}section `$sec' in \@cite{$man}$after";
+ } elsif ($type =~ /Info/) { # inforef
+ warn "$ERROR Wrong number of arguments: $_" unless @args == 3;
+ ($nn, $_, $in) = @args;
+ $_ = "${before}${type} file `$in', node `$nn'$after";
+ } elsif ($sec) {
+ $href = $node2href{$node};
+ $_ = "${before}${type}section " . &anchor('', $href, $sec) . $after;
+ } else {
+ warn "$ERROR Undefined node ($node): $_";
+ $_ = "$before$;0xref{$nodes}$after";
+ }
+ }
+ #
+ # try to guess bibliography references or glossary terms
+ #
+ unless (/^<H\d><A NAME=\"SEC\d/) {
+ if ($use_bibliography) {
+ $done = '';
+ while (/$BIBRE/o) {
+ ($pre, $what, $post) = ($`, $&, $');
+ $href = $bib2href{$what};
+ if (defined($href) && $post !~ /^[^<]*<\/A>/) {
+ $done .= $pre . &anchor('', $href, $what);
+ } else {
+ $done .= "$pre$what";
+ }
+ $_ = $post;
+ }
+ $_ = $done . $_;
+ }
+ if ($use_glossary) {
+ $done = '';
+ while (/\b\w+\b/) {
+ ($pre, $what, $post) = ($`, $&, $');
+ $entry = $what;
+ $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
+ $href = $gloss2href{$entry};
+ if (defined($href) && $post !~ /^[^<]*<\/A>/) {
+ $done .= $pre . &anchor('', $href, $what);
+ } else {
+ $done .= "$pre$what";
+ }
+ $_ = $post;
+ }
+ $_ = $done . $_;
+ }
+ }
+ # otherwise
+ push(@lines2, $_);
+}
+print "# end of pass 2\n" if $verbose;
+
+#
+# split style substitutions
+#
+while (@lines2) {
+ $_ = shift(@lines2);
+ #
+ # special case (protected sections)
+ #
+ if (/^$PROTECTTAG/o) {
+ push(@lines3, $_);
+ next;
+ }
+ #
+ # split style substitutions
+ #
+ $old = '';
+ while ($old ne $_) {
+ $old = $_;
+ if (/\@(\w+)\{/) {
+ ($before, $style, $after) = ($`, $1, $');
+ if (defined($style_map{$style})) {
+ $_ = $after;
+ $text = '';
+ $after = '';
+ $failed = 1;
+ while (@lines2) {
+ if (/\}/) {
+ $text .= $`;
+ $after = $';
+ $failed = 0;
+ last;
+ } else {
+ $text .= $_;
+ $_ = shift(@lines2);
+ }
+ }
+ if ($failed) {
+ die "* Bad syntax (\@$style) after: $before\n";
+ } else {
+ $text = &apply_style($style, $text);
+ $_ = "$before$text$after";
+ }
+ }
+ }
+ }
+ # otherwise
+ push(@lines3, $_);
+}
+print "# end of pass 3\n" if $verbose;
+
+#+++############################################################################
+# #
+# Pass 4: foot notes, final cleanup #
+# #
+#---############################################################################
+
+@foot_lines = (); # footnotes
+@doc_lines = (); # final document
+$end_of_para = 0; # true if last line is <P>
+
+while (@lines3) {
+ $_ = shift(@lines3);
+ #
+ # special case (protected sections)
+ #
+ if (/^$PROTECTTAG/o) {
+ push(@doc_lines, $_);
+ $end_of_para = 0;
+ next;
+ }
+ #
+ # footnotes
+ #
+ while (/\@footnote([^\{\s]+)\{/) {
+ ($before, $d, $after) = ($`, $1, $');
+ $_ = $after;
+ $text = '';
+ $after = '';
+ $failed = 1;
+ while (@lines3) {
+ if (/\}/) {
+ $text .= $`;
+ $after = $';
+ $failed = 0;
+ last;
+ } else {
+ $text .= $_;
+ $_ = shift(@lines3);
+ }
+ }
+ if ($failed) {
+ die "* Bad syntax (\@footnote) after: $before\n";
+ } else {
+ $foot_num++;
+ $docid = "DOCF$foot_num";
+ $footid = "FOOT$foot_num";
+ $foot = "($foot_num)";
+ push(@foot_lines, "<H3>" . &anchor($footid, "$d#$docid", $foot) . "</H3>\n");
+ $text = "<P>$text" unless $text =~ /^\s*<P>/;
+ push(@foot_lines, "$text\n");
+ $_ = $before . &anchor($docid, "$docu_foot#$footid", $foot) . $after;
+ }
+ }
+ #
+ # remove unnecessary <P>
+ #
+ if (/^\s*<P>\s*$/) {
+ next if $end_of_para++;
+ } else {
+ $end_of_para = 0;
+ }
+ # otherwise
+ push(@doc_lines, $_);
+}
+print "# end of pass 4\n" if $verbose;
+
+#+++############################################################################
+# #
+# Pass 5: print things #
+# #
+#---############################################################################
+
+$header = <<EOT;
+<!-- This HTML file has been created by $THISPROG
+ from $docu on $TODAY -->
+EOT
+
+$full_title = $value{'_title'} || $value{'_settitle'} || "Untitled Document";
+$title = $value{'_settitle'} || $full_title;
+$_ = &substitute_style($full_title);
+&unprotect_texi;
+s/\n$//; # rmv last \n (if any)
+$full_title = "<H1>" . join("</H1>\n<H1>", split(/\n/, $_)) . "</H1>\n";
+
+#
+# print ToC
+#
+if (!$monolithic && @toc_lines) {
+ if (open(FILE, "> $docu_toc")) {
+ print "# creating $docu_toc...\n" if $verbose;
+ &print_toplevel_header("$title - Table of Contents");
+ &print_ruler;
+ &print(*toc_lines, FILE);
+ &print_toplevel_footer;
+ close(FILE);
+ } else {
+ warn "$ERROR Can't write to $docu_toc: $!\n";
+ }
+}
+
+#
+# print footnotes
+#
+if (!$monolithic && @foot_lines) {
+ if (open(FILE, "> $docu_foot")) {
+ print "# creating $docu_foot...\n" if $verbose;
+ &print_toplevel_header("$title - Footnotes");
+ &print_ruler;
+ &print(*foot_lines, FILE);
+ &print_toplevel_footer;
+ close(FILE);
+ } else {
+ warn "$ERROR Can't write to $docu_foot: $!\n";
+ }
+}
+
+#
+# print document
+#
+if ($split_chapter || $split_node) { # split
+ $doc_num = 0;
+ $last_num = scalar(@sections);
+ $first_doc = &doc_name(1);
+ $last_doc = &doc_name($last_num);
+ while (@sections) {
+ $section = shift(@sections);
+ &next_doc;
+ if (open(FILE, "> $docu_doc")) {
+ print "# creating $docu_doc...\n" if $verbose;
+ &print_header("$title - $section");
+ $prev_doc = ($doc_num == 1 ? undef : &doc_name($doc_num - 1));
+ $next_doc = ($doc_num == $last_num ? undef : &doc_name($doc_num + 1));
+ $navigation = "Go to the ";
+ $navigation .= ($prev_doc ? &anchor('', $first_doc, "first") : "first");
+ $navigation .= ", ";
+ $navigation .= ($prev_doc ? &anchor('', $prev_doc, "previous") : "previous");
+ $navigation .= ", ";
+ $navigation .= ($next_doc ? &anchor('', $next_doc, "next") : "next");
+ $navigation .= ", ";
+ $navigation .= ($next_doc ? &anchor('', $last_doc, "last") : "last");
+ $navigation .= " section, " . &anchor('', $docu_toc, "table of contents") . ".\n";
+ print FILE $navigation;
+ &print_ruler;
+ # find corresponding lines
+ @tmp_lines = ();
+ while (@doc_lines) {
+ $_ = shift(@doc_lines);
+ last if ($_ eq $SPLITTAG);
+ push(@tmp_lines, $_);
+ }
+ &print(*tmp_lines, FILE);
+ &print_ruler;
+ print FILE $navigation;
+ &print_footer;
+ close(FILE);
+ } else {
+ warn "$ERROR Can't write to $docu_doc: $!\n";
+ }
+ }
+} else { # not split
+ if (open(FILE, "> $docu_doc")) {
+ print "# creating $docu_doc...\n" if $verbose;
+ if ($monolithic || !@toc_lines) {
+ &print_toplevel_header($title);
+ } else {
+ &print_header($title);
+ print FILE $full_title;
+ }
+ if ($monolithic && @toc_lines) {
+ &print_ruler;
+ print FILE "<H1>Table of Contents</H1>\n";
+ &print(*toc_lines, FILE);
+ }
+ &print_ruler;
+ &print(*doc_lines, FILE);
+ if ($monolithic && @foot_lines) {
+ &print_ruler;
+ print FILE "<H1>Footnotes</H1>\n";
+ &print(*foot_lines, FILE);
+ }
+ if ($monolithic || !@toc_lines) {
+ &print_toplevel_footer;
+ } else {
+ &print_footer;
+ }
+ close(FILE);
+ } else {
+ warn "$ERROR Can't write to $docu_doc: $!\n";
+ }
+}
+
+print "# that's all folks\n" if $verbose;
+
+#+++############################################################################
+# #
+# Low level functions #
+# #
+#---############################################################################
+
+sub update_sec_num {
+ local($name, $level) = @_;
+
+ $level--; # here we start at 0
+ if ($name =~ /^appendix/) {
+ # appendix style
+ if (defined(@appendix_sec_num)) {
+ &incr_sec_num($level, @appendix_sec_num);
+ } else {
+ @appendix_sec_num = ('A', 0, 0, 0);
+ }
+ return(join('.', @appendix_sec_num[0..$level]));
+ } else {
+ # normal style
+ if (defined(@normal_sec_num)) {
+ &incr_sec_num($level, @normal_sec_num);
+ } else {
+ @normal_sec_num = (1, 0, 0, 0);
+ }
+ return(join('.', @normal_sec_num[0..$level]));
+ }
+}
+
+sub incr_sec_num {
+ local($level, $l);
+ $level = shift(@_);
+ $_[$level]++;
+ foreach $l ($level+1 .. 3) {
+ $_[$l] = 0;
+ }
+}
+
+sub check {
+ local($_, %seen, %context, $before, $match, $after);
+
+ while (<>) {
+ if (/\@(\*|\.|\:|\@|\{|\})/) {
+ $seen{$&}++;
+ $context{$&} .= "> $_" if $verbose;
+ $_ = "$`XX$'";
+ redo;
+ }
+ if (/\@(\w+)/) {
+ ($before, $match, $after) = ($`, $&, $');
+ if ($before =~ /\b[\w-]+$/ && $after =~ /^[\w-.]*\b/) { # e-mail address
+ $seen{'e-mail address'}++;
+ $context{'e-mail address'} .= "> $_" if $verbose;
+ } else {
+ $seen{$match}++;
+ $context{$match} .= "> $_" if $verbose;
+ }
+ $match =~ s/^\@/X/;
+ $_ = "$before$match$after";
+ redo;
+ }
+ }
+
+ foreach (sort(keys(%seen))) {
+ if ($verbose) {
+ print "$_\n";
+ print $context{$_};
+ } else {
+ print "$_ ($seen{$_})\n";
+ }
+ }
+}
+
+sub open {
+ local($name) = @_;
+
+ ++$fh_name;
+ if (open($fh_name, $name)) {
+ unshift(@fhs, $fh_name);
+ } else {
+ warn "$ERROR Can't read file $name: $!\n";
+ }
+}
+
+sub init_input {
+ @fhs = (); # hold the file handles to read
+ @input_spool = (); # spooled lines to read
+ $fh_name = 'FH000';
+ &open($docu);
+}
+
+sub next_line {
+ local($fh, $line);
+
+ if (@input_spool) {
+ $line = shift(@input_spool);
+ return($line);
+ }
+ while (@fhs) {
+ $fh = $fhs[0];
+ $line = <$fh>;
+ return($line) if $line;
+ close($fh);
+ shift(@fhs);
+ }
+ return(undef);
+}
+
+# used in pass 1, use &next_line
+sub skip_until {
+ local($tag) = @_;
+ local($_);
+
+ while ($_ = &next_line) {
+ return if /^\@end\s+$tag\s*$/;
+ }
+ die "* Failed to find '$tag' after: " . $lines[$#lines];
+}
+
+#
+# HTML stacking to have a better HTML output
+#
+
+sub html_reset {
+ @html_stack = ('html');
+ $html_element = 'body';
+}
+
+sub html_push {
+ local($what) = @_;
+ push(@html_stack, $html_element);
+ $html_element = $what;
+}
+
+sub html_push_if {
+ local($what) = @_;
+ push(@html_stack, $html_element)
+ if ($html_element && $html_element ne 'P');
+ $html_element = $what;
+}
+
+sub html_pop {
+ $html_element = pop(@html_stack);
+}
+
+sub html_pop_if {
+ local($elt);
+
+ if (@_) {
+ foreach $elt (@_) {
+ if ($elt eq $html_element) {
+ $html_element = pop(@html_stack) if @html_stack;
+ last;
+ }
+ }
+ } else {
+ $html_element = pop(@html_stack) if @html_stack;
+ }
+}
+
+sub html_debug {
+ local($what, $line) = @_;
+ return("<!-- $line @html_stack, $html_element -->$what")
+ if $debug & $DEBUG_HTML;
+ return($what);
+}
+
+# to debug the output...
+sub debug {
+ local($what, $line) = @_;
+ return("<!-- $line -->$what")
+ if $debug & $DEBUG_HTML;
+ return($what);
+}
+
+sub normalise_node {
+ $_[0] =~ s/\s+/ /g;
+ $_[0] =~ s/ $//;
+ $_[0] =~ s/^ //;
+}
+
+sub menu_entry {
+ local($entry, $node, $descr) = @_;
+ local($href);
+
+ &normalise_node($node);
+ $href = $node2href{$node};
+ if ($href) {
+ $descr =~ s/^\s+//;
+ $descr = ": $descr" if $descr;
+ push(@lines2, "<LI>" . &anchor('', $href, $entry) . "$descr\n");
+ } else {
+ warn "$ERROR Undefined node ($node): $_";
+ }
+}
+
+sub do_ctrl { "^$_[0]" }
+
+sub do_sc { "\U$_[0]\E" }
+
+sub apply_style {
+ local($texi_style, $text) = @_;
+ local($style);
+
+ $style = $style_map{$texi_style};
+ if (defined($style)) { # known style
+ if ($style =~ /^\"/) { # add quotes
+ $style = $';
+ $text = "\`$text\'";
+ }
+ if ($style =~ /^\&/) { # custom
+ $style = $';
+ $text = &$style($text);
+ } elsif ($style) { # good style
+ $text = "<$style>$text</$style>";
+ } else { # no style
+ }
+ } else { # unknown style
+ $text = undef;
+ }
+ return($text);
+}
+
+# remove Texinfo styles
+sub remove_style {
+ local($_) = @_;
+ s/\@\w+{([^\{\}]+)}/$1/g;
+ return($_);
+}
+
+sub substitute_style {
+ local($_) = @_;
+ local($changed, $done, $style, $text);
+
+ $changed = 1;
+ while ($changed) {
+ $changed = 0;
+ $done = '';
+ while (/\@(\w+){([^\{\}]+)}/) {
+ $text = &apply_style($1, $2);
+ if ($text) {
+ $_ = "$`$text$'";
+ $changed = 1;
+ } else {
+ $done .= "$`\@$1";
+ $_ = "{$2}$'";
+ }
+ }
+ $_ = $done . $_;
+ }
+ return($_);
+}
+
+sub anchor {
+ local($name, $href, $text, $newline) = @_;
+ local($result);
+
+ $result = "<A";
+ $result .= " NAME=\"$name\"" if $name;
+ $result .= " HREF=\"$href\"" if $href;
+ $result .= ">$text</A>";
+ $result .= "\n" if $newline;
+ return($result);
+}
+
+sub pretty_date {
+ local(@MoY, $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
+
+ @MoY = ('January', 'Febuary', 'March', 'April', 'May', 'June',
+ 'July', 'August', 'September', 'October', 'November', 'December');
+ ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
+ $year += ($year < 70) ? 2000 : 1900;
+ return("$mday $MoY[$mon] $year");
+}
+
+sub doc_name {
+ local($num) = @_;
+
+ return("${docu_name}_$num.html");
+}
+
+sub next_doc {
+ $docu_doc = &doc_name(++$doc_num);
+}
+
+sub print {
+ local(*lines, $fh) = @_;
+ local($_);
+
+ while (@lines) {
+ $_ = shift(@lines);
+ if (/^$PROTECTTAG/o) {
+ $_ = $tag2pro{$_};
+ } else {
+ &unprotect_texi;
+ }
+ print $fh $_;
+ }
+}
+
+sub print_ruler {
+ print FILE "<P><HR><P>\n";
+}
+
+sub print_header {
+ local($_);
+
+ # clean the title
+ $_ = &remove_style($_[0]);
+ &unprotect_texi;
+ # print the header
+ if ($doctype eq 'html2') {
+ print FILE $html2_doctype;
+ } elsif ($doctype) {
+ print FILE $doctype;
+ }
+ print FILE <<EOT;
+<HTML>
+<HEAD>
+$header
+<TITLE>$_</TITLE>
+</HEAD>
+<BODY>
+EOT
+}
+
+sub print_toplevel_header {
+ local($_);
+
+ &print_header; # pass given arg...
+ print FILE $full_title;
+ if ($value{'_subtitle'}) {
+ $value{'_subtitle'} =~ s/\n+$//;
+ foreach (split(/\n/, $value{'_subtitle'})) {
+ $_ = &substitute_style($_);
+ &unprotect_texi;
+ print FILE "<H2>$_</H2>\n";
+ }
+ }
+ if ($value{'_author'}) {
+ $value{'_author'} =~ s/\n+$//;
+ foreach (split(/\n/, $value{'_author'})) {
+ $_ = &substitute_style($_);
+ &unprotect_texi;
+ s/[\w.-]+\@[\w.-]+/<A HREF="mailto:$&">$&<\/A>/g;
+ print FILE "<ADDRESS>$_</ADDRESS>\n";
+ }
+ }
+ print FILE "<P>\n";
+}
+
+sub print_footer {
+ print FILE <<EOT;
+</BODY>
+</HTML>
+EOT
+}
+
+sub print_toplevel_footer {
+ &print_ruler;
+ print FILE <<EOT;
+This document was generated on $TODAY using the
+<A HREF=\"$HOMEPAGE\">texi2html</A>
+translator version 1.51.</P>
+EOT
+ &print_footer;
+}
+
+sub protect_texi {
+ # protect @ { } ` '
+ s/\@\@/$;0/go;
+ s/\@\{/$;1/go;
+ s/\@\}/$;2/go;
+ s/\@\`/$;3/go;
+ s/\@\'/$;4/go;
+}
+
+sub protect_html {
+ local($what) = @_;
+ # protect & < >
+ $what =~ s/\&/\&\#38;/g;
+ $what =~ s/\</\&\#60;/g;
+ $what =~ s/\>/\&\#62;/g;
+ # but recognize some HTML things
+ $what =~ s/\&\#60;\/A\&\#62;/<\/A>/g; # </A>
+ $what =~ s/\&\#60;A ([^\&]+)\&\#62;/<A $1>/g; # <A [^&]+>
+ $what =~ s/\&\#60;IMG ([^\&]+)\&\#62;/<IMG $1>/g; # <IMG [^&]+>
+ return($what);
+}
+
+sub unprotect_texi {
+ s/$;0/\@/go;
+ s/$;1/\{/go;
+ s/$;2/\}/go;
+ s/$;3/\`/go;
+ s/$;4/\'/go;
+}
+
+sub unprotect_html {
+ local($what) = @_;
+ $what =~ s/\&\#38;/\&/g;
+ $what =~ s/\&\#60;/\</g;
+ $what =~ s/\&\#62;/\>/g;
+ return($what);
+}
+
+sub byalpha {
+ $key2alpha{$a} cmp $key2alpha{$b};
+}
+
+##############################################################################
+
+ # These next few lines are legal in both Perl and nroff.
+
+.00 ; # finish .ig
+
+'di \" finish diversion--previous line must be blank
+.nr nl 0-1 \" fake up transition to first page again
+.nr % 0 \" start at page 1
+'; __END__ ############# From here on it's a standard manual page ############
+.TH TEXI2HTML 1 "09/10/96"
+.AT 3
+.SH NAME
+texi2html \- a Texinfo to HTML converter
+.SH SYNOPSIS
+.B texi2html [options] file
+.PP
+.B texi2html -check [-verbose] files
+.SH DESCRIPTION
+.I Texi2html
+converts the given Texinfo file to a set of HTML files. It tries to handle
+most of the Texinfo commands. It creates hypertext links for cross-references,
+footnotes...
+.PP
+It also tries to add links from a reference to its corresponding entry in the
+bibliography (if any). It may also handle a glossary (see the
+.B \-glossary
+option).
+.PP
+.I Texi2html
+creates several files depending on the contents of the Texinfo file and on
+the chosen options (see FILES).
+.PP
+The HTML files created by
+.I texi2html
+are closer to TeX than to Info, that's why
+.I texi2html
+converts @iftex sections and not @ifinfo ones by default. You can reverse
+this with the \-expandinfo option.
+.SH OPTIONS
+.TP 12
+.B \-check
+Check the given file and give the list of all things that may be Texinfo commands.
+This may be used to check the output of
+.I texi2html
+to find the Texinfo commands that have been left in the HTML file.
+.TP
+.B \-expandinfo
+Expand @ifinfo sections, not @iftex ones.
+.TP
+.B \-glossary
+Use the section named 'Glossary' to build a list of terms and put links in the HTML
+document from each term toward its definition.
+.TP
+.B \-invisible \fIname\fP
+Use \fIname\fP to create invisible destination anchors for index links. This is a workaround
+for a known bug of many WWW browsers, including xmosaic.
+.TP
+.B \-I \fIdir\fP
+Look also in \fIdir\fP to find included files.
+.TP
+.B \-menu
+Show the Texinfo menus; by default they are ignored.
+.TP
+.B \-monolithic
+Output only one file, including the table of contents and footnotes.
+.TP
+.B \-number
+Number the sections.
+.TP
+.B \-split_chapter
+Split the output into several HTML files (one per main section:
+chapter, appendix...).
+.TP
+.B \-split_node
+Split the output into several HTML files (one per node).
+.TP
+.B \-usage
+Print usage instructions, listing the current available command-line options.
+.TP
+.B \-verbose
+Give a verbose output. Can be used with the
+.B \-check
+option.
+.PP
+.SH FILES
+By default
+.I texi2html
+creates the following files (foo being the name of the Texinfo file):
+.TP 16
+.B foo_toc.html
+The table of contents.
+.TP
+.B foo.html
+The document's contents.
+.TP
+.B foo_foot.html
+The footnotes (if any).
+.PP
+When used with the
+.B \-split
+option, it creates several files (one per chapter or node), named
+.B foo_n.html
+(n being the indice of the chapter or node), instead of the single
+.B foo.html
+file.
+.PP
+When used with the
+.B \-monolithic
+option, it creates only one file:
+.B foo.html
+.SH VARIABLES
+.I texi2html
+predefines the following variables: \fBhtml\fP, \fBtexi2html\fP.
+.SH ADDITIONAL COMMANDS
+.I texi2html
+implements the following non-Texinfo commands:
+.TP 16
+.B @ifhtml
+This indicates the start of an HTML section, this section will passed through
+without any modofication.
+.TP
+.B @end ifhtml
+This indcates the end of an HTML section.
+.SH VERSION
+This is \fItexi2html\fP version 1.51, 09/10/96.
+.PP
+The latest version of \fItexi2html\fP can be found in WWW, cf. URL
+http://wwwcn.cern.ch/dci/texi2html/
+.SH AUTHOR
+The main author is Lionel Cons, CERN CN/DCI/UWS, Lionel.Cons@cern.ch.
+Many other people around the net contributed to this program.
+.SH COPYRIGHT
+This program is the intellectual property of the European
+Laboratory for Particle Physics (known as CERN). No guarantee whatsoever is
+provided by CERN. No liability whatsoever is accepted for any loss or damage
+of any kind resulting from any defect or inaccuracy in this information or
+code.
+.PP
+CERN, 1211 Geneva 23, Switzerland
+.SH "SEE ALSO"
+GNU Texinfo Documentation Format,
+HyperText Markup Language (HTML),
+World Wide Web (WWW).
+.SH BUGS
+This program does not understand all Texinfo commands (yet).
+.PP
+TeX specific commands (normally enclosed in @iftex) will be
+passed unmodified.
+.ex
diff --git a/doc/texinfo.tex b/doc/texinfo.tex
index ce8124e..fb7cfe5 100644
--- a/doc/texinfo.tex
+++ b/doc/texinfo.tex
@@ -1,6 +1,6 @@
%% TeX macros to handle texinfo files
-% Copyright (C) 1985, 86, 88, 90, 91, 92, 1993 Free Software Foundation, Inc.
+% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 1994 Free Software Foundation, Inc.
%This texinfo.tex file is free software; you can redistribute it and/or
%modify it under the terms of the GNU General Public License as
@@ -22,14 +22,30 @@
%You are forbidden to forbid anyone else to use, share and improve
%what you give them. Help stamp out software-hoarding!
-\def\texinfoversion{2.108}
+
+% Send bug reports to bug-texinfo@prep.ai.mit.edu.
+% Please include a *precise* test case in each bug report.
+
+
+% Make it possible to create a .fmt file just by loading this file:
+% if the underlying format is not loaded, start by loading it now.
+% Added by gildea November 1993.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+
+% This automatically updates the version number based on RCS.
+\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
+\deftexinfoversion$Revision: 2.145 $
\message{Loading texinfo package [Version \texinfoversion]:}
-% Print the version number if in a .fmt file.
-\everyjob{\message{[Texinfo version \texinfoversion]}\message{}}
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}\message{}
+ \catcode`+=\active \catcode`\_=\active}
% Save some parts of plain tex whose names we will redefine.
+\let\ptextilde=\~
\let\ptexlbrace=\{
\let\ptexrbrace=\}
\let\ptexdots=\dots
@@ -44,7 +60,15 @@
\let\ptexl=\l
\let\ptexL=\L
-\def\tie{\penalty 10000\ } % Save plain tex definition of ~.
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ \gdef\tie{\leavevmode\penalty\@M\ }
+}
+\let\~ = \tie % And make it available as @~.
\message{Basics,}
\chardef\other=12
@@ -53,6 +77,19 @@
% starts a new line in the output.
\newlinechar = `^^J
+% Set up fixed words for English.
+\ifx\putwordChapter\undefined{\gdef\putwordChapter{Chapter}}\fi%
+\def\putwordInfo{Info}%
+\ifx\putwordSee\undefined{\gdef\putwordSee{See}}\fi%
+\ifx\putwordsee\undefined{\gdef\putwordsee{see}}\fi%
+\ifx\putwordfile\undefined{\gdef\putwordfile{file}}\fi%
+\ifx\putwordpage\undefined{\gdef\putwordpage{page}}\fi%
+\ifx\putwordsection\undefined{\gdef\putwordsection{section}}\fi%
+\ifx\putwordSection\undefined{\gdef\putwordSection{Section}}\fi%
+\ifx\putwordTableofContents\undefined{\gdef\putwordTableofContents{Table of Contents}}\fi%
+\ifx\putwordShortContents\undefined{\gdef\putwordShortContents{Short Contents}}\fi%
+\ifx\putwordAppendix\undefined{\gdef\putwordAppendix{Appendix}}\fi%
+
% Ignore a token.
%
\def\gobble#1{}
@@ -144,9 +181,14 @@
% Do @cropmarks to get crop marks
\def\cropmarks{\let\onepageout=\croppageout }
+\newinsert\margin \dimen\margin=\maxdimen
+
\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
{\catcode`\@ =11
\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, juha@viisa.uucp (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+ \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
\dimen@=\dp#1 \unvbox#1
\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
@@ -297,13 +339,13 @@
% Single-spacing is done by various environments (specifically, in
% \nonfillstart and \quotations).
-\newskip\singlespaceskip \singlespaceskip = \baselineskip
+\newskip\singlespaceskip \singlespaceskip = 12.5pt
\def\singlespace{%
-% Why was this kern here? It messes up equalizing space above and below
-% environments. --karl, 6may93
-%{\advance \baselineskip by -\singlespaceskip
-%\kern \baselineskip}%
-\baselineskip=\singlespaceskip
+ % Why was this kern here? It messes up equalizing space above and below
+ % environments. --karl, 6may93
+ %{\advance \baselineskip by -\singlespaceskip
+ %\kern \baselineskip}%
+ \setleading \singlespaceskip
}
%% Simple single-character @ commands
@@ -335,6 +377,15 @@
% @. is an end-of-sentence period.
\def\.{.\spacefactor=3000 }
+% @enddots{} is an end-of-sentence ellipsis.
+\gdef\enddots{$\mathinner{\ldotp\ldotp\ldotp\ldotp}$\spacefactor=3000}
+
+% @! is an end-of-sentence bang.
+\gdef\!{!\spacefactor=3000 }
+
+% @? is an end-of-sentence query.
+\gdef\?{?\spacefactor=3000 }
+
% @w prevents a word break. Without the \leavevmode, @w at the
% beginning of a paragraph, when TeX is still in vertical mode, would
% produce a whole line of output instead of starting the paragraph.
@@ -389,8 +440,8 @@
\obeylines
\fi
%
- % We do @comment here in case we are called inside an environment,
- % such as @example, where each end-of-line in the input causes an
+ % Do @comment since we are called inside an environment such as
+ % @example, where each end-of-line in the input causes an
% end-of-line in the output. We don't want the end-of-line after
% the `@group' to put extra space in the output. Since @group
% should appear on a line by itself (according to the Texinfo
@@ -584,15 +635,19 @@ where each line of input produces a line of output.}
\let\up = \relax
\let\set = \relax
\let\clear = \relax
+ \let\item = \relax
+ \let\message = \relax
}
% Ignore @ignore ... @end ignore.
%
\def\ignore{\doignore{ignore}}
-% Also ignore @ifinfo, @menu, and @direntry text.
+% Also ignore @ifinfo, @ifhtml, @html, @menu, and @direntry text.
%
\def\ifinfo{\doignore{ifinfo}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\html{\doignore{html}}
\def\menu{\doignore{menu}}
\def\direntry{\doignore{direntry}}
@@ -679,6 +734,11 @@ where each line of input produces a line of output.}
\let\tenrm = \nullfont \let\tenit = \nullfont \let\tensl = \nullfont
\let\tenbf = \nullfont \let\tentt = \nullfont \let\smallcaps = \nullfont
\let\tensf = \nullfont
+ % Similarly for index fonts (mostly for their use in
+ % smallexample)
+ \let\indrm = \nullfont \let\indit = \nullfont \let\indsl = \nullfont
+ \let\indbf = \nullfont \let\indtt = \nullfont \let\indsc = \nullfont
+ \let\indsf = \nullfont
%
% Don't complain when characters are missing from the fonts.
\tracinglostchars = 0
@@ -712,7 +772,10 @@ where each line of input produces a line of output.}
\else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
\fi
}
-\def\setzzz#1#2 \endsetzzz{\expandafter\xdef\csname SET#1\endcsname{#2}}
+% Can't use \xdef to pre-expand #2 and save some time, since \temp or
+% \next or other control sequences that we've defined might get us into
+% an infinite loop. Consider `@set foo @cite{bar}'.
+\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
% @clear VAR clears (i.e., unsets) the variable VAR.
%
@@ -814,15 +877,15 @@ where each line of input produces a line of output.}
\def\donoderef{\ifx\lastnode\relax\else
\expandafter\expandafter\expandafter\setref{\lastnode}\fi
-\let\lastnode=\relax}
+\global\let\lastnode=\relax}
\def\unnumbnoderef{\ifx\lastnode\relax\else
\expandafter\expandafter\expandafter\unnumbsetref{\lastnode}\fi
-\let\lastnode=\relax}
+\global\let\lastnode=\relax}
\def\appendixnoderef{\ifx\lastnode\relax\else
\expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi
-\let\lastnode=\relax}
+\global\let\lastnode=\relax}
\let\refill=\relax
@@ -841,7 +904,7 @@ where each line of input produces a line of output.}
\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{See Info file \file{\ignorespaces #3{}},
+\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
node \samp{\ignorespaces#1{}}}
\message{fonts,}
@@ -857,28 +920,39 @@ where each line of input produces a line of output.}
%% Try out Computer Modern fonts at \magstephalf
\let\mainmagstep=\magstephalf
+% Set the font macro #1 to the font named #2, adding on the
+% specified font prefix (normally `cm').
+\def\setfont#1#2{\font#1=\fontprefix#2}
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\undefined
+\def\fontprefix{cm}
+\fi
+
\ifx\bigger\relax
\let\mainmagstep=\magstep1
-\font\textrm=cmr12
-\font\texttt=cmtt12
+\setfont\textrm{r12}
+\setfont\texttt{tt12}
\else
-\font\textrm=cmr10 scaled \mainmagstep
-\font\texttt=cmtt10 scaled \mainmagstep
+\setfont\textrm{r10 scaled \mainmagstep}
+\setfont\texttt{tt10 scaled \mainmagstep}
\fi
% Instead of cmb10, you many want to use cmbx10.
% cmbx10 is a prettier font on its own, but cmb10
% looks better when embedded in a line with cmr10.
-\font\textbf=cmb10 scaled \mainmagstep
-\font\textit=cmti10 scaled \mainmagstep
-\font\textsl=cmsl10 scaled \mainmagstep
-\font\textsf=cmss10 scaled \mainmagstep
-\font\textsc=cmcsc10 scaled \mainmagstep
+\setfont\textbf{b10 scaled \mainmagstep}
+\setfont\textit{ti10 scaled \mainmagstep}
+\setfont\textsl{sl10 scaled \mainmagstep}
+\setfont\textsf{ss10 scaled \mainmagstep}
+\setfont\textsc{csc10 scaled \mainmagstep}
\font\texti=cmmi10 scaled \mainmagstep
\font\textsy=cmsy10 scaled \mainmagstep
% A few fonts for @defun, etc.
-\font\defbf=cmbx10 scaled \magstep1 %was 1314
-\font\deftt=cmtt10 scaled \magstep1
+\setfont\defbf{bx10 scaled \magstep1} %was 1314
+\setfont\deftt{tt10 scaled \magstep1}
\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
% Fonts for indices and small examples.
@@ -886,66 +960,66 @@ where each line of input produces a line of output.}
% because texinfo normally uses the slanted fonts for that.
% Do not make many font distinctions in general in the index, since they
% aren't very useful.
-\font\ninett=cmtt9
-\font\indrm=cmr9
-\font\indit=cmsl9
+\setfont\ninett{tt9}
+\setfont\indrm{r9}
+\setfont\indit{sl9}
\let\indsl=\indit
\let\indtt=\ninett
\let\indsf=\indrm
\let\indbf=\indrm
-\let\indsc=\indrm
+\setfont\indsc{csc10 at 9pt}
\font\indi=cmmi9
\font\indsy=cmsy9
% Fonts for headings
-\font\chaprm=cmbx12 scaled \magstep2
-\font\chapit=cmti12 scaled \magstep2
-\font\chapsl=cmsl12 scaled \magstep2
-\font\chaptt=cmtt12 scaled \magstep2
-\font\chapsf=cmss12 scaled \magstep2
+\setfont\chaprm{bx12 scaled \magstep2}
+\setfont\chapit{ti12 scaled \magstep2}
+\setfont\chapsl{sl12 scaled \magstep2}
+\setfont\chaptt{tt12 scaled \magstep2}
+\setfont\chapsf{ss12 scaled \magstep2}
\let\chapbf=\chaprm
-\font\chapsc=cmcsc10 scaled\magstep3
+\setfont\chapsc{csc10 scaled\magstep3}
\font\chapi=cmmi12 scaled \magstep2
\font\chapsy=cmsy10 scaled \magstep3
-\font\secrm=cmbx12 scaled \magstep1
-\font\secit=cmti12 scaled \magstep1
-\font\secsl=cmsl12 scaled \magstep1
-\font\sectt=cmtt12 scaled \magstep1
-\font\secsf=cmss12 scaled \magstep1
-\font\secbf=cmbx12 scaled \magstep1
-\font\secsc=cmcsc10 scaled\magstep2
+\setfont\secrm{bx12 scaled \magstep1}
+\setfont\secit{ti12 scaled \magstep1}
+\setfont\secsl{sl12 scaled \magstep1}
+\setfont\sectt{tt12 scaled \magstep1}
+\setfont\secsf{ss12 scaled \magstep1}
+\setfont\secbf{bx12 scaled \magstep1}
+\setfont\secsc{csc10 scaled\magstep2}
\font\seci=cmmi12 scaled \magstep1
\font\secsy=cmsy10 scaled \magstep2
-% \font\ssecrm=cmbx10 scaled \magstep1 % This size an font looked bad.
-% \font\ssecit=cmti10 scaled \magstep1 % The letters were too crowded.
-% \font\ssecsl=cmsl10 scaled \magstep1
-% \font\ssectt=cmtt10 scaled \magstep1
-% \font\ssecsf=cmss10 scaled \magstep1
+% \setfont\ssecrm{bx10 scaled \magstep1} % This size an font looked bad.
+% \setfont\ssecit{cmti10 scaled \magstep1} % The letters were too crowded.
+% \setfont\ssecsl{sl10 scaled \magstep1}
+% \setfont\ssectt{tt10 scaled \magstep1}
+% \setfont\ssecsf{ss10 scaled \magstep1}
-%\font\ssecrm=cmb10 scaled 1315 % Note the use of cmb rather than cmbx.
-%\font\ssecit=cmti10 scaled 1315 % Also, the size is a little larger than
-%\font\ssecsl=cmsl10 scaled 1315 % being scaled magstep1.
-%\font\ssectt=cmtt10 scaled 1315
-%\font\ssecsf=cmss10 scaled 1315
+%\setfont\ssecrm{b10 scaled 1315} % Note the use of cmb rather than cmbx.
+%\setfont\ssecit{ti10 scaled 1315} % Also, the size is a little larger than
+%\setfont\ssecsl{sl10 scaled 1315} % being scaled magstep1.
+%\setfont\ssectt{tt10 scaled 1315}
+%\setfont\ssecsf{ss10 scaled 1315}
%\let\ssecbf=\ssecrm
-\font\ssecrm=cmbx12 scaled \magstephalf
-\font\ssecit=cmti12 scaled \magstephalf
-\font\ssecsl=cmsl12 scaled \magstephalf
-\font\ssectt=cmtt12 scaled \magstephalf
-\font\ssecsf=cmss12 scaled \magstephalf
-\font\ssecbf=cmbx12 scaled \magstephalf
-\font\ssecsc=cmcsc10 scaled \magstep1
+\setfont\ssecrm{bx12 scaled \magstephalf}
+\setfont\ssecit{ti12 scaled \magstephalf}
+\setfont\ssecsl{sl12 scaled \magstephalf}
+\setfont\ssectt{tt12 scaled \magstephalf}
+\setfont\ssecsf{ss12 scaled \magstephalf}
+\setfont\ssecbf{bx12 scaled \magstephalf}
+\setfont\ssecsc{csc10 scaled \magstep1}
\font\sseci=cmmi12 scaled \magstephalf
\font\ssecsy=cmsy10 scaled \magstep1
% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
% but that is not a standard magnification.
% Fonts for title page:
-\font\titlerm = cmbx12 scaled \magstep3
+\setfont\titlerm{bx12 scaled \magstep3}
\let\authorrm = \secrm
% In order for the font changes to affect most math symbols and letters,
@@ -1001,9 +1075,9 @@ where each line of input produces a line of output.}
\newcount\fontdepth \fontdepth=0
% Fonts for short table of contents.
-\font\shortcontrm=cmr12
-\font\shortcontbf=cmbx12
-\font\shortcontsl=cmsl12
+\setfont\shortcontrm{r12}
+\setfont\shortcontbf{bx12}
+\setfont\shortcontsl{sl12}
%% Add scribe-like font environments, plus @l for inline lisp (usually sans
%% serif) and @ii for TeX italic
@@ -1074,10 +1148,17 @@ where each line of input produces a line of output.}
% and arrange explicitly to hyphenate an a dash.
% -- rms.
{
-\catcode `\-=\active
-\catcode `\_=\active
-\global\def\code{\begingroup \catcode `\-=\active \let-\codedash \let_\codeunder \codex}
+\catcode`\-=\active
+\catcode`\_=\active
+\global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex}
+% The following is used by \doprintindex to insure that long function names
+% wrap around. It is necessary for - and _ to be active before the index is
+% read from the file, as \entry parses the arguments long before \code is
+% ever called. -- mycroft
+\global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder}
}
+\def\realdash{-}
+\def\realunder{_}
\def\codedash{-\discretionary{}{}{}}
\def\codeunder{\normalunderscore\discretionary{}{}{}}
\def\codex #1{\tclose{#1}\endgroup}
@@ -1140,7 +1221,7 @@ where each line of input produces a line of output.}
\def\titlezzz##1{\leftline{\titlefont{##1}}
% print a rule at the page bottom also.
\finishedtitlepagefalse
- \vskip4pt \hrule height 4pt \vskip4pt}%
+ \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
% No rule at page bottom unless we print one at the top with @title.
\finishedtitlepagetrue
%
@@ -1180,7 +1261,7 @@ where each line of input produces a line of output.}
}
\def\finishtitlepage{%
- \vskip4pt \hrule height 2pt
+ \vskip4pt \hrule height 2pt width \hsize
\vskip\titlepagebottomglue
\finishedtitlepagetrue
}
@@ -1354,14 +1435,18 @@ July\or August\or September\or October\or November\or December\fi
% They also define \itemindex
% to index the item name in whatever manner is desired (perhaps none).
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\vskip-\parskip\nobreak\fi}
+
\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\par \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
-\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \par \parsearg\xitemzzz}
+\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
-\def\internalBkitemx{\par \parsearg\kitemzzz}
+\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
\itemzzz {#1}}
@@ -1377,9 +1462,9 @@ July\or August\or September\or October\or November\or December\fi
\nobreak % This prevents a break before @itemx.
%
% Be sure we are not still in the middle of a paragraph.
- {\parskip = 0in
- \par
- }%
+ %{\parskip = 0in
+ %\par
+ %}%
%
% If the item text does not fit in the space we have, put it on a line
% by itself, and do not allow a page break either before or after that
@@ -1387,7 +1472,15 @@ July\or August\or September\or October\or November\or December\fi
% command is, e.g., @kindex, the whatsit would get put into the
% horizontal list on a line by itself, resulting in extra blank space.
\ifdim \wd0>\itemmax
- \setbox0=\hbox{\hskip \leftskip \hskip -\tableindent \unhbox0}\box0
+ %
+ % Make this a paragraph so we get the \parskip glue and wrapping,
+ % but leave it ragged-right.
+ \begingroup
+ \advance\leftskip by-\tableindent
+ \advance\hsize by\tableindent
+ \advance\rightskip by0pt plus1fil
+ \leavevmode\unhbox0\par
+ \endgroup
%
% We're going to be starting a paragraph, but we don't want the
% \parskip glue -- logically it's part of the @item we just started.
@@ -1397,15 +1490,18 @@ July\or August\or September\or October\or November\or December\fi
% we can't prevent a possible page break at the following
% \baselineskip glue.
\nobreak
+ \endgroup
+ \itemxneedsnegativevskipfalse
\else
% The item text fits into the space. Start a paragraph, so that the
% following text (if any) will end up on the same line. Since that
% text will be indented by \tableindent, we make the item text be in
% a zero-width box.
\noindent
- \rlap{\hskip -\tableindent\box0}%
+ \rlap{\hskip -\tableindent\box0}\ignorespaces%
+ \endgroup%
+ \itemxneedsnegativevskiptrue%
\fi
- \endgroup
}
\def\item{\errmessage{@item while not in a table}}
@@ -1611,6 +1707,159 @@ July\or August\or September\or October\or November\or December\fi
\vadjust{\penalty 1200}}%
\flushcr}
+% @multitable macros
+% Amy Hendrickson, 8/18/94
+%
+% @multitable ... @endmultitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble. Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+% @multitable @percentofhsize .2 .3 .5
+% @item ...
+%
+% Numbers following @percentofhsize are the percent of the total
+% current hsize to be used for each column. You may use as many
+% columns as desired.
+
+% Or use a template:
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item ...
+% using the widest term desired in each column.
+
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab@tab@tab will produce two empty columns.
+
+% @item, @tab, @multicolumn or @endmulticolumn do not need to be on their
+% own lines, but it will not hurt if they are.
+
+% Sample multitable:
+
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item first col stuff @tab second col stuff @tab third col
+% @item
+% first col stuff
+% @tab
+% second col stuff
+% @tab
+% third col
+% @item first col stuff @tab second col stuff
+% @tab Many paragraphs of text may be used in any column.
+%
+% They will wrap at the width determined by the template.
+% @item@tab@tab This will be in third column.
+% @endmultitable
+
+% Default dimensions may be reset by user.
+% @intableparskip will set vertical space between paragraphs in table.
+% @intableparindent will set paragraph indent in table.
+% @spacebetweencols will set horizontal space to be left between columns.
+% @spacebetweenlines will set vertical space to be left between lines.
+
+%%%%
+% Dimensions
+
+\newdimen\intableparskip
+\newdimen\intableparindent
+\newdimen\spacebetweencols
+\newdimen\spacebetweenlines
+\intableparskip=0pt
+\intableparindent=6pt
+\spacebetweencols=12pt
+\spacebetweenlines=12pt
+
+%%%%
+% Macros used to set up halign preamble:
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\percentofhsize\relax
+\def\xpercentofhsize{\percentofhsize}
+\newif\ifsetpercent
+
+\newcount\colcount
+\def\setuptable#1{\def\firstarg{#1}%
+\ifx\firstarg\xendsetuptable\let\go\relax%
+\else
+ \ifx\firstarg\xpercentofhsize\global\setpercenttrue%
+ \else
+ \ifsetpercent
+ \if#1.\else%
+ \global\advance\colcount by1 %
+ \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%
+ \fi
+ \else
+ \global\advance\colcount by1
+ \setbox0=\hbox{#1}%
+ \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+ \fi%
+ \fi%
+ \let\go\setuptable%
+\fi\go}
+%%%%
+% multitable syntax
+\def\tab{&}
+
+%%%%
+% @multitable ... @endmultitable definitions:
+
+\def\multitable#1\item{\bgroup
+\let\item\cr
+\tolerance=9500
+\hbadness=9500
+\parskip=\intableparskip
+\parindent=\intableparindent
+\overfullrule=0pt
+\global\colcount=0\relax%
+\def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}%
+ % To parse everything between @multitable and @item :
+\def\one{#1}\expandafter\setuptable\one\endsetuptable
+ % Need to reset this to 0 after \setuptable.
+\global\colcount=0\relax%
+ %
+ % This preamble sets up a generic column definition, which will
+ % be used as many times as user calls for columns.
+ % \vtop will set a single line and will also let text wrap and
+ % continue for many paragraphs if desired.
+\halign\bgroup&\global\advance\colcount by 1\relax%
+\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
+ % In order to keep entries from bumping into each other
+ % we will add a \leftskip of \spacebetweencols to all columns after
+ % the first one.
+ % If a template has been used, we will add \spacebetweencols
+ % to the width of each template entry.
+ % If user has set preamble in terms of percent of \hsize
+ % we will use that dimension as the width of the column, and
+ % the \leftskip will keep entries from bumping into each other.
+ % Table will start at left margin and final column will justify at
+ % right margin.
+\ifnum\colcount=1
+\else
+ \ifsetpercent
+ \else
+ % If user has <not> set preamble in terms of percent of \hsize
+ % we will advance \hsize by \spacebetweencols
+ \advance\hsize by \spacebetweencols
+ \fi
+ % In either case we will make \leftskip=\spacebetweencols:
+\leftskip=\spacebetweencols
+\fi
+\noindent##}\cr%
+ % \everycr will reset column counter, \colcount, at the end of
+ % each line. Every column entry will cause \colcount to advance by one.
+ % The table preamble
+ % looks at the current \colcount to find the correct column width.
+\global\everycr{\noalign{\nointerlineskip\vskip\spacebetweenlines
+\filbreak%% keeps underfull box messages off when table breaks over pages.
+\global\colcount=0\relax}}}
+
\message{indexing,}
% Index generation facilities
@@ -1685,6 +1934,32 @@ July\or August\or September\or October\or November\or December\fi
\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
\def\indexdummies{%
+% Take care of the plain tex accent commands.
+\def\"{\realbackslash "}%
+\def\`{\realbackslash `}%
+\def\'{\realbackslash '}%
+\def\^{\realbackslash ^}%
+\def\~{\realbackslash ~}%
+\def\={\realbackslash =}%
+\def\b{\realbackslash b}%
+\def\c{\realbackslash c}%
+\def\d{\realbackslash d}%
+\def\u{\realbackslash u}%
+\def\v{\realbackslash v}%
+\def\H{\realbackslash H}%
+% Take care of the plain tex special European modified letters.
+\def\oe{\realbackslash oe}%
+\def\ae{\realbackslash ae}%
+\def\aa{\realbackslash aa}%
+\def\OE{\realbackslash OE}%
+\def\AE{\realbackslash AE}%
+\def\AA{\realbackslash AA}%
+\def\o{\realbackslash o}%
+\def\O{\realbackslash O}%
+\def\l{\realbackslash l}%
+\def\L{\realbackslash L}%
+\def\ss{\realbackslash ss}%
+% Take care of texinfo commands likely to appear in an index entry.
\def\_{{\realbackslash _}}%
\def\w{\realbackslash w }%
\def\bf{\realbackslash bf }%
@@ -1722,6 +1997,31 @@ July\or August\or September\or October\or November\or December\fi
\def\indexdummydots{...}
\def\indexnofonts{%
+% Just ignore accents.
+\let\"=\indexdummyfont
+\let\`=\indexdummyfont
+\let\'=\indexdummyfont
+\let\^=\indexdummyfont
+\let\~=\indexdummyfont
+\let\==\indexdummyfont
+\let\b=\indexdummyfont
+\let\c=\indexdummyfont
+\let\d=\indexdummyfont
+\let\u=\indexdummyfont
+\let\v=\indexdummyfont
+\let\H=\indexdummyfont
+% Take care of the plain tex special European modified letters.
+\def\oe{oe}%
+\def\ae{ae}%
+\def\aa{aa}%
+\def\OE{OE}%
+\def\AE{AE}%
+\def\AA{AA}%
+\def\o{o}%
+\def\O{O}%
+\def\l{l}%
+\def\L{L}%
+\def\ss{ss}%
\let\w=\indexdummyfont
\let\t=\indexdummyfont
\let\r=\indexdummyfont
@@ -1754,7 +2054,14 @@ July\or August\or September\or October\or November\or December\fi
\let\indexbackslash=0 %overridden during \printindex.
+\let\SETmarginindex=\relax %initialize!
+% workhorse for all \fooindexes
+% #1 is name of index, #2 is stuff to put there
\def\doind #1#2{%
+% Put the index entry in the margin if desired.
+\ifx\SETmarginindex\relax\else%
+\insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
+\fi%
{\count10=\lastpenalty %
{\indexdummies % Must do this here, since \bf, etc expand at this stage
\escapechar=`\\%
@@ -1838,8 +2145,9 @@ July\or August\or September\or October\or November\or December\fi
\tex
\dobreak \chapheadingskip {10000}
\catcode`\%=\other\catcode`\&=\other\catcode`\#=\other
- \catcode`\$=\other\catcode`\_=\other
+ \catcode`\$=\other
\catcode`\~=\other
+ \indexbreaks
%
% The following don't help, since the chars were translated
% when the raw index was written, and their fonts were discarded
@@ -1932,23 +2240,32 @@ July\or August\or September\or October\or November\or December\fi
%
% Insert the text of the index entry. TeX will do line-breaking on it.
#1%
- %
- % If we must, put the page number on a line of its own, and fill out
- % this line with blank space. (The \hfil is overwhelmed with the
- % fill leaders glue in \indexdotfill if the page number does fit.)
- \hfil\penalty50
- \null\nobreak\indexdotfill % Have leaders before the page number.
- %
- % The `\ ' here is removed by the implicit \unskip that TeX does as
- % part of (the primitive) \par. Without it, a spurious underfull
- % \hbox ensues.
- \ #2% The page number ends the paragraph.
+ % The following is kluged to not output a line of dots in the index if
+ % there are no page numbers. The next person who breaks this will be
+ % cursed by a Unix daemon.
+ \def\tempa{{\rm }}%
+ \def\tempb{#2}%
+ \edef\tempc{\tempa}%
+ \edef\tempd{\tempb}%
+ \ifx\tempc\tempd\ \else%
+ %
+ % If we must, put the page number on a line of its own, and fill out
+ % this line with blank space. (The \hfil is overwhelmed with the
+ % fill leaders glue in \indexdotfill if the page number does fit.)
+ \hfil\penalty50
+ \null\nobreak\indexdotfill % Have leaders before the page number.
+ %
+ % The `\ ' here is removed by the implicit \unskip that TeX does as
+ % part of (the primitive) \par. Without it, a spurious underfull
+ % \hbox ensues.
+ \ #2% The page number ends the paragraph.
+ \fi%
\par
\endgroup}
% Like \dotfill except takes at least 1 em.
\def\indexdotfill{\cleaders
- \hbox{$\mathsurround=0pt \mkern1.5mu . \mkern1.5mu$}\hskip 1em plus 1fill}
+ \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
\def\primary #1{\line{#1\hfil}}
@@ -2180,13 +2497,13 @@ July\or August\or September\or October\or November\or December\fi
\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
\def\chapterzzz #1{\seccheck{chapter}%
\secno=0 \subsecno=0 \subsubsecno=0
-\global\advance \chapno by 1 \message{Chapter \the\chapno}%
+\global\advance \chapno by 1 \message{\putwordChapter \the\chapno}%
\chapmacro {#1}{\the\chapno}%
\gdef\thissection{#1}%
\gdef\thischaptername{#1}%
% We don't substitute the actual chapter name into \thischapter
% because we don't want its macros evaluated now.
-\xdef\thischapter{Chapter \the\chapno: \noexpand\thischaptername}%
+\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
{\chapternofonts%
\edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}%
\escapechar=`\\%
@@ -2202,13 +2519,13 @@ July\or August\or September\or October\or November\or December\fi
\def\appendixzzz #1{\seccheck{appendix}%
\secno=0 \subsecno=0 \subsubsecno=0
\global\advance \appendixno by 1 \message{Appendix \appendixletter}%
-\chapmacro {#1}{Appendix \appendixletter}%
+\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
\gdef\thissection{#1}%
\gdef\thischaptername{#1}%
-\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}%
+\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
{\chapternofonts%
\edef\temp{{\realbackslash chapentry
- {#1}{Appendix \appendixletter}{\noexpand\folio}}}%
+ {#1}{\putwordAppendix{} \appendixletter}{\noexpand\folio}}}%
\escapechar=`\\%
\write \contentsfile \temp %
\appendixnoderef %
@@ -2567,6 +2884,7 @@ July\or August\or September\or October\or November\or December\fi
\unnumbchapmacro{#1}\def\thischapter{}%
\begingroup % Set up to handle contents files properly.
\catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11
+ \catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
\raggedbottom % Worry more about breakpoints than the bottom.
\advance\hsize by -\contentsrightmargin % Don't use the full line length.
}
@@ -2574,7 +2892,7 @@ July\or August\or September\or October\or November\or December\fi
% Normal (long) toc.
\outer\def\contents{%
- \startcontents{Table of Contents}%
+ \startcontents{\putwordTableofContents}%
\input \jobname.toc
\endgroup
\vfill \eject
@@ -2582,7 +2900,7 @@ July\or August\or September\or October\or November\or December\fi
% And just the chapters.
\outer\def\summarycontents{%
- \startcontents{Short Contents}%
+ \startcontents{\putwordShortContents}%
%
\let\chapentry = \shortchapentry
\let\unnumbchapentry = \shortunnumberedentry
@@ -2621,7 +2939,7 @@ July\or August\or September\or October\or November\or December\fi
% We could simplify the code here by writing out an \appendixentry
% command in the toc file for appendices, instead of using \chapentry
% for both, but it doesn't seem worth it.
-\setbox0 = \hbox{\shortcontrm Appendix }
+\setbox0 = \hbox{\shortcontrm \putwordAppendix }
\newdimen\shortappendixwidth \shortappendixwidth = \wd0
\def\shortchaplabel#1{%
@@ -2775,6 +3093,7 @@ July\or August\or September\or October\or November\or December\fi
\catcode`\>=12
\escapechar=`\\
%
+\let\~=\ptextilde
\let\{=\ptexlbrace
\let\}=\ptexrbrace
\let\.=\ptexdot
@@ -2809,7 +3128,7 @@ July\or August\or September\or October\or November\or December\fi
% Define \obeyedspace to be our active space, whatever it is. This is
% for use in \parsearg.
-{\sepspaces %
+{\sepspaces%
\global\let\obeyedspace= }
% This space is always present above and below environments.
@@ -2949,9 +3268,9 @@ July\or August\or September\or October\or November\or December\fi
\let\Esmallexample = \nonfillfinish
%
% Smaller interline space and fonts for small examples.
- \baselineskip 10pt
+ \setleading{10pt}%
\indexfonts \tt
- \rawbackslash % output the \ character from the current font
+ \rawbackslash % make \ output the \ character from the current font (tt)
\gobble
}
@@ -2987,23 +3306,26 @@ July\or August\or September\or October\or November\or December\fi
\advance\leftskip by 0pt plus 1fill
\gobble}
-% @quotation does normal linebreaking and narrows the margins.
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins.
%
\def\quotation{%
-\begingroup\inENV %This group ends at the end of the @quotation body
-{\parskip=0pt % because we will skip by \parskip too, later
-\aboveenvbreak}%
-\singlespace
-\parindent=0pt
-\let\Equotation = \nonfillfinish
-% @cartouche defines \nonarrowing to inhibit narrowing
-% at next level down.
-\ifx\nonarrowing\relax
-\advance \leftskip by \lispnarrowing
-\advance \rightskip by \lispnarrowing
-\exdentamount=\lispnarrowing
-\let\nonarrowing=\relax
-\fi}
+ \begingroup\inENV %This group ends at the end of the @quotation body
+ {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+ \singlespace
+ \parindent=0pt
+ % We have retained a nonzero parskip for the environment, since we're
+ % doing normal filling. So to avoid extra space below the environment...
+ \def\Equotation{\parskip = 0pt \nonfillfinish}%
+ %
+ % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+ \ifx\nonarrowing\relax
+ \advance\leftskip by \lispnarrowing
+ \advance\rightskip by \lispnarrowing
+ \exdentamount = \lispnarrowing
+ \let\nonarrowing = \relax
+ \fi
+}
\message{defuns,}
% Define formatter for defuns
@@ -3035,6 +3357,9 @@ July\or August\or September\or October\or November\or December\fi
\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+% This is used to turn on special parens
+% but make & act ordinary (given that it's active).
+\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr}
% Definitions of (, ) and & used in args for functions.
% This is the definition of ( outside of all parentheses.
@@ -3104,7 +3429,7 @@ July\or August\or September\or October\or November\or December\fi
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
\exdentamount=\defbodyindent
\begingroup %
-\catcode 61=\active %
+\catcode 61=\active % 61 is `='
\obeylines\activeparens\spacesplit#3}
\def\defmethparsebody #1#2#3#4 {\begingroup\inENV %
@@ -3147,55 +3472,54 @@ July\or August\or September\or October\or November\or December\fi
\catcode 61=\active %
\obeylines\spacesplit#3}
-\def\defvrparsebody #1#2#3#4 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\spacesplit{#3{#4}}}
-
-% This seems to work right in all cases.
-\let\deftpparsebody=\defvrparsebody
-% This fails to work. When given `@deftp {Data Type} foo_t',
-% it thinks the type name is just `f'.
-%%% This is the same as all the others except for the last line. We need
-%%% to parse the arguments differently for @deftp, since the ``attributes''
-%%% there are optional.
-%%%
-%%\def\deftpparsebody #1#2#3#4 {\begingroup\inENV %
-%%\medbreak %
-%%% Define the end token that this defining construct specifies
-%%% so that it will exit this group.
-%%\def#1{\endgraf\endgroup\medbreak}%
-%%\def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
-%%\parindent=0in
-%%\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-%%\exdentamount=\defbodyindent
-%%\begingroup\obeylines\parsetpheaderline{#3{#4}}}
-
-%%{\obeylines %
-%% % Parse the type name and any attributes (field names, etc.).
-%% % #1 is the beginning of the macro call that will produce the output,
-%% % i.e., \deftpheader{CLASS}; this is passed from \deftpparsebody.
-%% % #2 is the type name, e.g., `struct termios'.
-%% % #3 is the (possibly empty) attribute list.
-%% %
-%% \gdef\parsetpheaderline#1#2#3^^M{%
-%% \endgroup % Started in \deftpparsebody.
-%% %
-%% % If the attribute list is in fact empty, there will be no space after
-%% % #2; so we can't put a space in our TeX parameter list. But if it
-%% % isn't empty, then #3 will begin with an unwanted space.
-%% \def\theargs{\ignorespaces #3}%
-%% %
-%% % Call the macro to produce the output.
-%% #1{#2}\theargs %
-%% }%
-%%}
+% This is used for \def{tp,vr}parsebody. It could probably be used for
+% some of the others, too, with some judicious conditionals.
+%
+\def\parsebodycommon#1#2#3{%
+ \begingroup\inENV %
+ \medbreak %
+ % Define the end token that this defining construct specifies
+ % so that it will exit this group.
+ \def#1{\endgraf\endgroup\medbreak}%
+ \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
+ \parindent=0in
+ \advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+ \exdentamount=\defbodyindent
+ \begingroup\obeylines
+}
+
+\def\defvrparsebody#1#2#3#4 {%
+ \parsebodycommon{#1}{#2}{#3}%
+ \spacesplit{#3{#4}}%
+}
+
+% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
+% type is just `struct', because we lose the braces in `{struct
+% termios}' when \spacesplit reads its undelimited argument. Sigh.
+% \let\deftpparsebody=\defvrparsebody
+%
+% So, to get around this, we put \empty in with the type name. That
+% way, TeX won't find exactly `{...}' as an undelimited argument, and
+% won't strip off the braces.
+%
+\def\deftpparsebody #1#2#3#4 {%
+ \parsebodycommon{#1}{#2}{#3}%
+ \spacesplit{\parsetpheaderline{#3{#4}}}\empty
+}
+
+% Fine, but then we have to eventually remove the \empty *and* the
+% braces (if any). That's what this does, putting the result in \tptemp.
+%
+\def\removeemptybraces\empty#1\relax{\def\tptemp{#1}}%
+
+% After \spacesplit has done its work, this is called -- #1 is the final
+% thing to call, #2 the type name (which starts with \empty), and #3
+% (which might be empty) the arguments.
+%
+\def\parsetpheaderline#1#2#3{%
+ \removeemptybraces#2\relax
+ #1{\tptemp}{#3}%
+}%
\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
\medbreak %
@@ -3244,8 +3568,9 @@ July\or August\or September\or October\or November\or December\fi
\def\deftypefunargs #1{%
% Expand, preventing hyphenation at `-' chars.
% Note that groups don't affect changes in \hyphenchar.
-\functionparens
-\code{#1}%
+% Use \boldbraxnoamp, not \functionparens, so that & is not special.
+\boldbraxnoamp
+\tclose{#1}% avoid \code because of side effects on active chars
\interlinepenalty=10000
\advance\rightskip by 0pt plus 1fil
\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
@@ -3281,7 +3606,7 @@ July\or August\or September\or October\or November\or December\fi
% #1 is the data type, #2 the name, #3 the args.
\def\deftypefunheaderx #1#2 #3\relax{%
\doind {fn}{\code{#2}}% Make entry in function index
-\begingroup\defname {\code{#1} #2}{Function}%
+\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}%
\deftypefunargs {#3}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody
}
@@ -3290,12 +3615,19 @@ July\or August\or September\or October\or November\or December\fi
\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
+% \defheaderxcond#1\relax$$$
+% puts #1 in @code, followed by a space, but does nothing if #1 is null.
+\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}
+
% #1 is the classification. #2 is the data type. #3 is the name and args.
\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
% #1 is the classification, #2 the data type, #3 the name, #4 the args.
\def\deftypefnheaderx #1#2#3 #4\relax{%
\doind {fn}{\code{#3}}% Make entry in function index
-\begingroup\defname {\code{#2} #3}{#1}%
+\begingroup
+\normalparens % notably, turn off `&' magic, which prevents
+% at least some C++ text from working
+\defname {\defheaderxcond#2\relax$$$#3}{#1}%
\deftypefunargs {#4}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody
}
@@ -3423,7 +3755,7 @@ July\or August\or September\or October\or November\or December\fi
% #1 is the data type. #2 is the name.
\def\deftypevarheader #1#2{%
\doind {vr}{\code{#2}}% Make entry in variables index
-\begingroup\defname {\code{#1} #2}{Variable}%
+\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}%
\interlinepenalty=10000
\endgraf\penalty 10000\vskip -\parskip\penalty 10000
\endgroup}
@@ -3433,7 +3765,7 @@ July\or August\or September\or October\or November\or December\fi
\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
\def\deftypevrheader #1#2#3{\doind {vr}{\code{#3}}%
-\begingroup\defname {\code{#2} #3}{#1}
+\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}
\interlinepenalty=10000
\endgraf\penalty 10000\vskip -\parskip\penalty 10000
\endgroup}
@@ -3474,17 +3806,17 @@ July\or August\or September\or October\or November\or December\fi
% \setref{foo} defines a cross-reference point named foo.
\def\setref#1{%
-%\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-title}{Ytitle}%
\dosetq{#1-pg}{Ypagenumber}%
\dosetq{#1-snt}{Ysectionnumberandtype}}
\def\unnumbsetref#1{%
-%\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-title}{Ytitle}%
\dosetq{#1-pg}{Ypagenumber}%
\dosetq{#1-snt}{Ynothing}}
\def\appendixsetref#1{%
-%\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-title}{Ytitle}%
\dosetq{#1-pg}{Ypagenumber}%
\dosetq{#1-snt}{Yappendixletterandtype}}
@@ -3494,43 +3826,63 @@ July\or August\or September\or October\or November\or December\fi
% file, #5 the name of the printed manual. All but the node name can be
% omitted.
%
-\def\pxref#1{see \xrefX[#1,,,,,,,]}
-\def\xref#1{See \xrefX[#1,,,,,,,]}
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
\def\ref#1{\xrefX[#1,,,,,,,]}
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup%
-\def\printedmanual{\ignorespaces #5}%
-\def\printednodename{\ignorespaces #3}%
-%
-\setbox1=\hbox{\printedmanual}%
-\setbox0=\hbox{\printednodename}%
-\ifdim \wd0=0pt%
-\def\printednodename{\ignorespaces #1}%
-%%% Uncommment the following line to make the actual chapter or section title
-%%% appear inside the square brackets.
-%\def\printednodename{#1-title}%
-\fi%
-%
-%
-% If we use \unhbox0 and \unhbox1 to print the node names, TeX does
-% not insert empty discretionaries after hyphens, which means that it
-% will not find a line break at a hyphen in a node names. Since some
-% manuals are best written with fairly long node names, containing
-% hyphens, this is a loss. Therefore, we simply give the text of
-% the node name again, so it is as if TeX is seeing it for the first
-% time.
-\ifdim \wd1>0pt
-section ``\printednodename'' in \cite{\printedmanual}%
-\else%
-\turnoffactive%
-\refx{#1-snt}{} [\printednodename], page\tie\refx{#1-pg}{}%
-\fi
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+ \def\printedmanual{\ignorespaces #5}%
+ \def\printednodename{\ignorespaces #3}%
+ \setbox1=\hbox{\printedmanual}%
+ \setbox0=\hbox{\printednodename}%
+ \ifdim \wd0 = 0pt
+ % No printed node name was explicitly given.
+ \ifx\SETxref-automatic-section-title\relax %
+ % Use the actual chapter/section title appear inside
+ % the square brackets. Use the real section title if we have it.
+ \ifdim \wd1>0pt%
+ % It is in another manual, so we don't have it.
+ \def\printednodename{\ignorespaces #1}%
+ \else
+ \ifhavexrefs
+ % We know the real title if we have the xref values.
+ \def\printednodename{\refx{#1-title}}%
+ \else
+ % Otherwise just copy the Info node name.
+ \def\printednodename{\ignorespaces #1}%
+ \fi%
+ \fi
+ \def\printednodename{#1-title}%
+ \else
+ % Use the node name inside the square brackets.
+ \def\printednodename{\ignorespaces #1}%
+ \fi
+ \fi
+ %
+ % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+ % insert empty discretionaries after hyphens, which means that it will
+ % not find a line break at a hyphen in a node names. Since some manuals
+ % are best written with fairly long node names, containing hyphens, this
+ % is a loss. Therefore, we give the text of the node name again, so it
+ % is as if TeX is seeing it for the first time.
+ \ifdim \wd1 > 0pt
+ \putwordsection{} ``\printednodename'' in \cite{\printedmanual}%
+ \else
+ % _ (for example) has to be the character _ for the purposes of the
+ % control sequence corresponding to the node, but it has to expand
+ % into the usual \leavevmode...\vrule stuff for purposes of
+ % printing. So we \turnoffactive for the \refx-snt, back on for the
+ % printing, back off for the \refx-pg.
+ {\turnoffactive \refx{#1-snt}{}}%
+ \space [\printednodename],\space
+ \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+ \fi
\endgroup}
% \dosetq is the interface for calls from other macros
% Use \turnoffactive so that punctuation chars such as underscore
% work in node names.
-\def\dosetq #1#2{{\let\folio=0 \turnoffactive%
+\def\dosetq #1#2{{\let\folio=0 \turnoffactive \auxhat%
\edef\next{\write\auxfile{\internalsetq {#1}{#2}}}%
\next}}
@@ -3544,26 +3896,26 @@ section ``\printednodename'' in \cite{\printedmanual}%
\def\Ypagenumber{\folio}
-\def\Ytitle{\thischapter}
+\def\Ytitle{\thissection}
\def\Ynothing{}
\def\Ysectionnumberandtype{%
-\ifnum\secno=0 Chapter\xreftie\the\chapno %
-\else \ifnum \subsecno=0 Section\xreftie\the\chapno.\the\secno %
+\ifnum\secno=0 \putwordChapter\xreftie\the\chapno %
+\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno %
\else \ifnum \subsubsecno=0 %
-Section\xreftie\the\chapno.\the\secno.\the\subsecno %
+\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno %
\else %
-Section\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
+\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
\fi \fi \fi }
\def\Yappendixletterandtype{%
-\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{}%
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %
+\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}%
+\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno %
\else \ifnum \subsubsecno=0 %
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
+\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
\else %
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
+\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
\fi \fi \fi }
\gdef\xreftie{'tie}
@@ -3651,6 +4003,15 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
\catcode `\&=\other
% `\+ does not work, so use 43.
\catcode 43=\other
+% Make the characters 128-255 be printing characters
+{%
+ \count 1=128
+ \def\loop{%
+ \catcode\count 1=\other
+ \advance\count 1 by 1
+ \ifnum \count 1<256 \loop \fi
+ }%
+}%
% the aux file uses ' as the escape.
% Turn off \ as an escape so we do not lose on
% entries which were dumped with control sequences in their names.
@@ -3660,6 +4021,7 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
\catcode `\{=1 \catcode `\}=2
\catcode `\%=\other
\catcode `\'=0
+\catcode`\^=7 % to make ^^e4 etc usable in xref tags
\catcode `\\=\other
\openin 1 \jobname.aux
\ifeof 1 \else \closein 1 \input \jobname.aux \global\havexrefstrue
@@ -3846,6 +4208,8 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
\global\tolerance=700
\global\hfuzz=1pt
\global\contentsrightmargin=0pt
+\global\deftypemargin=0pt
+\global\defbodyindent=.5cm
\global\pagewidth=\hsize
\global\pageheight=\vsize
@@ -3875,6 +4239,32 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
\global\pageheight=\vsize
}
+% Allow control of the text dimensions. Parameters in order: textheight;
+% textwidth; \voffset; \hoffset (!); binding offset. All require a dimension;
+% header is additional; added length extends the bottom of the page.
+
+\def\changepagesizes#1#2#3#4#5{
+ \global\vsize= #1
+ \advance\vsize by \topskip
+ \global\voffset= #3
+ \global\hsize= #2
+ \global\outerhsize=\hsize
+ \global\advance\outerhsize by 0.5in
+ \global\outervsize=\vsize
+ \global\advance\outervsize by 0.6in
+ \global\pagewidth=\hsize
+ \global\pageheight=\vsize
+ \global\normaloffset= #4
+ \global\bindingoffset= #5}
+
+% This layout is compatible with Latex on A4 paper.
+
+\def\afourlatex{\changepagesizes{22cm}{15cm}{7mm}{4.6mm}{5mm}}
+
+% Use @afourwide to print on European A4 paper in wide format.
+\def\afourwide{\afourpaper
+\changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}}
+
% Define macros to output various characters with catcode for normal text.
\catcode`\"=\other
\catcode`\~=\other
@@ -3916,6 +4306,7 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
\def~{{\tt \char '176}}
\chardef\hat=`\^
\catcode`\^=\active
+\def\auxhat{\def^{'hat}}
\def^{{\tt \hat}}
\catcode`\_=\active
@@ -3943,21 +4334,19 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
%\catcode 27=\active
%\def^^[{$\diamondsuit$}
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-\def\turnoffactive{\let"=\normaldoublequote
-\let~=\normaltilde
-\let^=\normalcaret
-\let_=\normalunderscore
-\let|=\normalverticalbar
-\let<=\normalless
-\let>=\normalgreater
-\let+=\normalplus}
-
% Set up an active definition for =, but don't enable it most of the time.
{\catcode`\==\active
\global\def={{\tt \char 61}}}
+\catcode`+=\active
+\catcode`\_=\active
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \everyjob (or @setfilename) turn them on.
+% \otherifyactive is called near the end of this file.
+\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+
\catcode`\@=0
% \rawbackslashxx output one backslash character in current font
@@ -3978,6 +4367,32 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
% \catcode 17=0 % Define control-q
\catcode`\\=\active
+% Used sometimes to turn off (effectively) the active characters
+% even after parsing them.
+@def@turnoffactive{@let"=@normaldoublequote
+@let\=@realbackslash
+@let~=@normaltilde
+@let^=@normalcaret
+@let_=@normalunderscore
+@let|=@normalverticalbar
+@let<=@normalless
+@let>=@normalgreater
+@let+=@normalplus}
+
+@def@normalturnoffactive{@let"=@normaldoublequote
+@let\=@normalbackslash
+@let~=@normaltilde
+@let^=@normalcaret
+@let_=@normalunderscore
+@let|=@normalverticalbar
+@let<=@normalless
+@let>=@normalgreater
+@let+=@normalplus}
+
+% Make _ and + \other characters, temporarily.
+% This is canceled by @fixbackslash.
+@otherifyactive
+
% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
% That is what \eatinput is for; after that, the `\' should revert to printing
% a backslash.
@@ -3988,8 +4403,11 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
% On the other hand, perhaps the file did not have a `\input texinfo'. Then
% the first `\{ in the file would cause an error. This macro tries to fix
% that, assuming it is called before the first `\' could plausibly occur.
+% Also back turn on active characters that might appear in the input
+% file name, in case not using a pre-dumped format.
%
-@gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi}
+@gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi
+ @catcode`+=@active @catcode`@_=@active}
%% These look ok in all fonts, so just make them not special. The @rm below
%% makes sure that the current font starts out as the newly loaded cmr10